summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--share/ui/dialog-livepatheffect-add.ui97
-rw-r--r--share/ui/style.css11
-rw-r--r--src/ui/dialog/livepatheffect-add.cpp142
-rw-r--r--src/ui/dialog/livepatheffect-add.h9
4 files changed, 217 insertions, 42 deletions
diff --git a/share/ui/dialog-livepatheffect-add.ui b/share/ui/dialog-livepatheffect-add.ui
index 97f63886e..2bc147b65 100644
--- a/share/ui/dialog-livepatheffect-add.ui
+++ b/share/ui/dialog-livepatheffect-add.ui
@@ -130,22 +130,24 @@
</packing>
</child>
<child>
- <object class="GtkEventBox" id="LPESelectorEffectEventFavShow">
- <property name="name">LPESelectorEffectEventFavShow</property>
+ <object class="GtkRadioButton" id="LPESelectorEffectRadioPackLess">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="no_show_all">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
<property name="halign">center</property>
<property name="valign">center</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">False</property>
+ <property name="group">LPESelectorEffectRadioList</property>
<child>
- <object class="GtkImage" id="LPESelectorEffectFavShowImage">
+ <object class="GtkImage" id="LPESelectorEffectPackLessImage">
<property name="name">LPESelectorEffectFavShowImage</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property>
<property name="valign">center</property>
- <property name="pixel_size">27</property>
- <property name="icon_name">draw-star-outline</property>
+ <property name="pixel_size">22</property>
+ <property name="icon_name">pack-less</property>
<property name="icon_size">2</property>
<style>
<class name="fab"/>
@@ -156,10 +158,74 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
+ <property name="padding">1</property>
<property name="position">5</property>
</packing>
</child>
<child>
+ <object class="GtkRadioButton" id="LPESelectorEffectRadioPackMore">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="draw_indicator">False</property>
+ <property name="group">LPESelectorEffectRadioList</property>
+ <child>
+ <object class="GtkImage" id="LPESelectorEffectPackMoreImage">
+ <property name="name">LPESelectorEffectFavShowImage</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="pixel_size">22</property>
+ <property name="icon_name">pack-more</property>
+ <property name="icon_size">2</property>
+ <style>
+ <class name="fab"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">1</property>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="LPESelectorEffectRadioList">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="draw_indicator">False</property>
+ <child>
+ <object class="GtkImage" id="LPESelectorEffectListImage">
+ <property name="name">LPESelectorEffectFavShowImage</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="pixel_size">27</property>
+ <property name="icon_name">hamburger-menu</property>
+ <property name="icon_size">2</property>
+ <style>
+ <class name="fab"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">1</property>
+ <property name="position">7</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -168,11 +234,11 @@
<property name="expand">False</property>
<property name="fill">True</property>
<property name="padding">4</property>
- <property name="position">6</property>
+ <property name="position">8</property>
</packing>
</child>
<child>
- <object class="GtkEventBox" id="LPESelectorEffectEventHamburgerTooggle">
+ <object class="GtkEventBox" id="LPESelectorEffectEventFavShow">
<property name="name">LPESelectorEffectEventFavShow</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -180,14 +246,14 @@
<property name="halign">center</property>
<property name="valign">center</property>
<child>
- <object class="GtkImage" id="LPESelectorEffectEventHamburgerToggleImage">
+ <object class="GtkImage" id="LPESelectorEffectFavShowImage">
<property name="name">LPESelectorEffectFavShowImage</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property>
<property name="valign">center</property>
- <property name="pixel_size">27</property>
- <property name="icon_name">hamburger-menu</property>
+ <property name="pixel_size">22</property>
+ <property name="icon_name">draw-star-outline</property>
<property name="icon_size">2</property>
<style>
<class name="fab"/>
@@ -198,7 +264,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">7</property>
+ <property name="position">9</property>
</packing>
</child>
</object>
@@ -472,8 +538,9 @@
<property name="no_show_all">True</property>
<property name="label" translatable="yes">Description</property>
<property name="use_markup">True</property>
- <property name="justify">center</property>
- <property name="wrap">True</property>
+ <property name="ellipsize">end</property>
+ <property name="single_line_mode">True</property>
+ <property name="lines">1</property>
</object>
<packing>
<property name="expand">False</property>
diff --git a/share/ui/style.css b/share/ui/style.css
index 5c599e293..1ce6fe819 100644
--- a/share/ui/style.css
+++ b/share/ui/style.css
@@ -265,6 +265,17 @@ spinbutton undershoot {
color: @theme_fg_color;
}
+#LPEDialogSelector.LPEPackLess flowboxchild {
+margin:1px;
+padding:1px;
+}
+#LPEDialogSelector.LPEPackLess flowboxchild label {
+font-size:14px;
+}
+#LPEDialogSelector.LPEPackLess #LPESelectorEffectInfoPop label{
+font-size:13px;
+}
+
#SelectorsAndStyleDialog button {
padding: 4px;
min-height: 16px;
diff --git a/src/ui/dialog/livepatheffect-add.cpp b/src/ui/dialog/livepatheffect-add.cpp
index 06cde1e12..4ea581989 100644
--- a/src/ui/dialog/livepatheffect-add.cpp
+++ b/src/ui/dialog/livepatheffect-add.cpp
@@ -96,10 +96,13 @@ LivePathEffectAdd::LivePathEffectAdd()
_builder->get_widget("LPEExperimental", _LPEExperimental);
_builder->get_widget("LPEScrolled", _LPEScrolled);
_builder->get_widget("LPESelectorEffectEventFavShow", _LPESelectorEffectEventFavShow);
- _builder->get_widget("LPESelectorEffectEventHamburgerTooggle", _LPESelectorEffectEventHamburgerTooggle);
_builder->get_widget("LPESelectorEffectInfoEventBox", _LPESelectorEffectInfoEventBox);
+ _builder->get_widget("LPESelectorEffectRadioList", _LPESelectorEffectRadioList);
+ _builder->get_widget("LPESelectorEffectRadioPackLess", _LPESelectorEffectRadioPackLess);
+ _builder->get_widget("LPESelectorEffectRadioPackMore", _LPESelectorEffectRadioPackMore);
- _LPEFilter->signal_search_changed().connect(sigc::mem_fun(*this, &LivePathEffectAdd::on_search));
+
+ _LPEFilter->signal_search_changed().connect(sigc::bind(sigc::mem_fun(*this, &LivePathEffectAdd::on_search), false));
_LPEDialogSelector->add_events(Gdk::POINTER_MOTION_MASK | Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK |
Gdk::ENTER_NOTIFY_MASK | Gdk::LEAVE_NOTIFY_MASK | Gdk::KEY_PRESS_MASK);
_LPESelectorFlowBox->signal_set_focus_child().connect(sigc::mem_fun(*this, &LivePathEffectAdd::on_focus));
@@ -190,8 +193,12 @@ LivePathEffectAdd::LivePathEffectAdd()
_LPESelectorFlowBox->set_activate_on_single_click(false);
_visiblelpe = _LPESelectorFlowBox->get_children().size();
_LPEInfo->set_visible(false);
- _LPESelectorEffectEventHamburgerTooggle->signal_button_press_event().connect(
- sigc::mem_fun(*this, &LivePathEffectAdd::togglelist));
+ _LPESelectorEffectRadioList->signal_clicked().connect(sigc::bind(sigc::mem_fun(*this,
+ &LivePathEffectAdd::viewChanged), 2) );
+ _LPESelectorEffectRadioPackLess->signal_clicked().connect(sigc::bind(sigc::mem_fun(*this,
+ &LivePathEffectAdd::viewChanged), 1) );
+ _LPESelectorEffectRadioPackMore->signal_clicked().connect(sigc::bind(sigc::mem_fun(*this,
+ &LivePathEffectAdd::viewChanged), 0) );
_LPESelectorEffectEventFavShow->signal_enter_notify_event().connect(sigc::bind<GtkWidget *>(
sigc::mem_fun(*this, &LivePathEffectAdd::mouseover), GTK_WIDGET(_LPESelectorEffectEventFavShow->gobj())));
_LPESelectorEffectEventFavShow->signal_leave_notify_event().connect(sigc::bind<GtkWidget *>(
@@ -215,22 +222,64 @@ LivePathEffectAdd::LivePathEffectAdd()
_LPESelectorFlowBox->set_focus_vadjustment(_LPEScrolled->get_vadjustment());
_LPEDialogSelector->show_all_children();
_lasteffect = nullptr;
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ gint mode = prefs->getInt("/dialogs/livepatheffect/dialogmode", 0);
+ switch (mode) {
+ case 0:
+ _LPESelectorEffectRadioPackLess->set_active();
+ break;
+ case 1:
+ _LPESelectorEffectRadioPackMore->set_active();
+ break;
+ default:
+ _LPESelectorEffectRadioList->set_active();
+
+ }
}
const LivePathEffect::EnumEffectData<LivePathEffect::EffectType> *LivePathEffectAdd::getActiveData()
{
return instance()._to_add;
}
-bool LivePathEffectAdd::togglelist(GdkEventButton *evt)
+void LivePathEffectAdd::viewChanged(gint mode)
{
- if (_LPEDialogSelector->get_style_context()->has_class("LPElist")) {
- _LPEDialogSelector->get_style_context()->remove_class("LPElist");
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ if (mode == 2 &&
+ !_LPEDialogSelector->get_style_context()->has_class("LPEList"))
+ {
+ _LPEDialogSelector->get_style_context()->add_class("LPEList");
+ _LPEDialogSelector->get_style_context()->remove_class("LPEPackLess");
+ _LPEDialogSelector->get_style_context()->remove_class("LPEPackMore");
+ _LPESelectorEffectRadioList->get_style_context()->add_class("active");
+ _LPESelectorEffectRadioPackLess->get_style_context()->remove_class("active");
+ _LPESelectorEffectRadioPackMore->get_style_context()->remove_class("active");
_LPESelectorFlowBox->set_max_children_per_line(1);
- } else {
- _LPEDialogSelector->get_style_context()->add_class("LPElist");
+ prefs->setInt("/dialogs/livepatheffect/dialogmode", 2);
+ on_search(true);
+ } else if (mode == 1 &&
+ !_LPEDialogSelector->get_style_context()->has_class("LPEPackMore"))
+ {
+ _LPESelectorEffectRadioList->get_style_context()->remove_class("active");
+ _LPESelectorEffectRadioPackLess->get_style_context()->remove_class("active");
+ _LPESelectorEffectRadioPackMore->get_style_context()->add_class("active");
+ _LPEDialogSelector->get_style_context()->remove_class("LPEList");
+ _LPEDialogSelector->get_style_context()->remove_class("LPEPackLess");
+ _LPEDialogSelector->get_style_context()->add_class("LPEPackMore");
+ _LPESelectorFlowBox->set_max_children_per_line(30);
+ prefs->setInt("/dialogs/livepatheffect/dialogmode", 1);
+ on_search(true);
+ } else if (!_LPEDialogSelector->get_style_context()->has_class("LPEPackLess"))
+ {
+ _LPESelectorEffectRadioList->get_style_context()->remove_class("active");
+ _LPESelectorEffectRadioPackLess->get_style_context()->add_class("active");
+ _LPESelectorEffectRadioPackMore->get_style_context()->remove_class("active");
+ _LPEDialogSelector->get_style_context()->remove_class("LPEList");
+ _LPEDialogSelector->get_style_context()->add_class("LPEPackLess");
+ _LPEDialogSelector->get_style_context()->remove_class("LPEPackMore");
_LPESelectorFlowBox->set_max_children_per_line(30);
+ prefs->setInt("/dialogs/livepatheffect/dialogmode", 0);
+ on_search(true);
}
- return true;
}
void LivePathEffectAdd::on_focus(Gtk::Widget *widget)
@@ -436,11 +485,35 @@ bool LivePathEffectAdd::on_filter(Gtk::FlowBoxChild *child)
}
child->set_valign(Gtk::ALIGN_START);
Gtk::EventBox *eventbox = dynamic_cast<Gtk::EventBox *>(child->get_child());
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ gint mode = prefs->getInt("/dialogs/livepatheffect/dialogmode", 0);
+ if (mode == 2) {
+ eventbox->set_halign(Gtk::ALIGN_START);
+ } else {
+ eventbox->set_halign(Gtk::ALIGN_CENTER);
+ }
if (eventbox) {
Gtk::Box *box = dynamic_cast<Gtk::Box *>(eventbox->get_child());
+ if (mode == 2) {
+ box->set_orientation(Gtk::ORIENTATION_HORIZONTAL);
+ } else {
+ box->set_orientation(Gtk::ORIENTATION_VERTICAL);
+ }
if (box) {
std::vector<Gtk::Widget *> contents = box->get_children();
+ Gtk::Overlay *overlay = dynamic_cast<Gtk::Overlay *>(contents[0]);
+ std::vector<Gtk::Widget *> content_overlay = overlay->get_children();
+
Gtk::Label *lpename = dynamic_cast<Gtk::Label *>(contents[1]);
+ if (lpename) {
+ if (mode == 2) {
+ lpename->set_justify(Gtk::JUSTIFY_LEFT);
+ lpename->set_halign(Gtk::ALIGN_START);
+ } else {
+ lpename->set_justify(Gtk::JUSTIFY_CENTER);
+ lpename->set_halign(Gtk::ALIGN_CENTER);
+ }
+ }
if (!sp_has_fav(lpename->get_text()) && _showfavs) {
return false;
}
@@ -450,25 +523,48 @@ bool LivePathEffectAdd::on_filter(Gtk::FlowBoxChild *child)
return false;
}
}
- if (_LPEFilter->get_text().length() < 1) {
- _visiblelpe++;
- return true;
+ Gtk::Image *icon = dynamic_cast<Gtk::Image *>(content_overlay[0]);
+ if (icon) {
+ if (mode == 2) {
+ icon->set_pixel_size(40);
+ } else {
+ icon->set_pixel_size(60);
+ }
}
- if (lpename) {
- size_t s = lpename->get_text().uppercase().find(_LPEFilter->get_text().uppercase(), 0);
- if (s != -1) {
- _visiblelpe++;
- return true;
+ Gtk::EventBox *lpemore = dynamic_cast<Gtk::EventBox *>(contents[4]);
+ if (lpemore) {
+ if (mode == 2) {
+ lpemore->hide();
+ } else {
+ lpemore->show();
}
}
Gtk::Label *lpedesc = dynamic_cast<Gtk::Label *>(contents[2]);
if (lpedesc) {
+ if (mode == 2) {
+ lpedesc->show();
+ lpedesc->set_ellipsize(Pango::ELLIPSIZE_END);
+ } else {
+ lpedesc->hide();
+ lpedesc->set_ellipsize(Pango::ELLIPSIZE_NONE);
+ }
size_t s = lpedesc->get_text().uppercase().find(_LPEFilter->get_text().uppercase(), 0);
if (s != -1) {
_visiblelpe++;
return true;
}
}
+ if (_LPEFilter->get_text().length() < 1) {
+ _visiblelpe++;
+ return true;
+ }
+ if (lpename) {
+ size_t s = lpename->get_text().uppercase().find(_LPEFilter->get_text().uppercase(), 0);
+ if (s != -1) {
+ _visiblelpe++;
+ return true;
+ }
+ }
}
}
return false;
@@ -500,7 +596,7 @@ void LivePathEffectAdd::reload_effect_list()
}
}
-void LivePathEffectAdd::on_search()
+void LivePathEffectAdd::on_search(bool nowarn)
{
_visiblelpe = 0;
_LPESelectorFlowBox->invalidate_filter();
@@ -510,11 +606,6 @@ void LivePathEffectAdd::on_search()
_LPEInfo->set_visible(true);
_LPEInfo->get_style_context()->add_class("lpeinfowarn");
} else {
- if (_LPEFilter->get_text().empty()) {
- _LPEInfo->set_text(_("This is your favorite effects"));
- } else {
- _LPEInfo->set_text(_("This is your favorite effects search result"));
- }
_LPEInfo->set_visible(true);
_LPEInfo->get_style_context()->add_class("lpeinfowarn");
}
@@ -528,6 +619,9 @@ void LivePathEffectAdd::on_search()
_LPEInfo->get_style_context()->remove_class("lpeinfowarn");
}
}
+ if (nowarn) {
+ _LPEInfo->set_visible(false);
+ }
}
int LivePathEffectAdd::on_sort(Gtk::FlowBoxChild *child1, Gtk::FlowBoxChild *child2)
diff --git a/src/ui/dialog/livepatheffect-add.h b/src/ui/dialog/livepatheffect-add.h
index 89f834dbe..db362ff5e 100644
--- a/src/ui/dialog/livepatheffect-add.h
+++ b/src/ui/dialog/livepatheffect-add.h
@@ -24,6 +24,7 @@
#include <gtkmm/label.h>
#include <gtkmm/overlay.h>
#include <gtkmm/popover.h>
+#include <gtkmm/radiobutton.h>
#include <gtkmm/scrolledwindow.h>
#include <gtkmm/searchentry.h>
#include <gtkmm/stylecontext.h>
@@ -64,7 +65,7 @@ class LivePathEffectAdd {
void onClose();
bool on_filter(Gtk::FlowBoxChild *child);
int on_sort(Gtk::FlowBoxChild *child1, Gtk::FlowBoxChild *child2);
- void on_search();
+ void on_search(bool nowarn);
void on_focus(Gtk::Widget *widg);
bool pop_description(GdkEventCrossing *evt, Glib::RefPtr<Gtk::Builder> builder_effect);
bool hide_pop_description(GdkEventCrossing *evt);
@@ -75,7 +76,7 @@ class LivePathEffectAdd {
const LivePathEffect::EnumEffectData<LivePathEffect::EffectType> *to_add);
bool expand(GdkEventButton *evt, Glib::RefPtr<Gtk::Builder> builder_effect);
bool show_fav_toggler(GdkEventButton *evt);
- bool togglelist(GdkEventButton *evt);
+ void viewChanged(gint mode);
bool mouseover(GdkEventCrossing *evt, GtkWidget *wdg);
bool mouseout(GdkEventCrossing *evt, GtkWidget *wdg);
void reload_effect_list();
@@ -101,7 +102,9 @@ private:
Gtk::Popover *_LPESelectorEffectInfoPop;
Gtk::EventBox *_LPESelectorEffectEventFavShow;
Gtk::EventBox *_LPESelectorEffectInfoEventBox;
- Gtk::EventBox *_LPESelectorEffectEventHamburgerTooggle;
+ Gtk::RadioButton *_LPESelectorEffectRadioList;
+ Gtk::RadioButton *_LPESelectorEffectRadioPackLess;
+ Gtk::RadioButton *_LPESelectorEffectRadioPackMore;
Gtk::Switch *_LPEExperimental;
Gtk::SearchEntry *_LPEFilter;
Gtk::ScrolledWindow *_LPEScrolled;