Code

Add a zoom correction option to preferences (used when zooming to 1:1 etc. to display...
[inkscape.git] / src / ui / dialog / livepatheffect-editor.h
index dc96fc313761230f75efc9eba01d5eb9b2d4ed6b..a924ed6e9507d9fe01d5aedc306d7bd1acdebc09 100644 (file)
 #include <gtkmm/tooltips.h>
 #include "ui/widget/combo-enums.h"
 #include "live_effects/effect.h"
+#include "live_effects/lpeobject-reference.h"
+#include <gtkmm/liststore.h>
+#include <gtkmm/treeview.h>
+#include <gtkmm/scrolledwindow.h>
+#include <gtkmm/buttonbox.h>
+#include <gtkmm/toolbar.h>
+
 
 class SPDesktop;
 
@@ -37,32 +44,80 @@ public:
     static LivePathEffectEditor &getInstance() { return *new LivePathEffectEditor(); }
 
     void onSelectionChanged(Inkscape::Selection *sel);
+    virtual void on_effect_selection_changed();
     void setDesktop(SPDesktop *desktop);
 
 private:
     sigc::connection selection_changed_connection;
+    sigc::connection selection_modified_connection;
 
     void set_sensitize_all(bool sensitive);
 
     void showParams(LivePathEffect::Effect* effect);
     void showText(Glib::ustring const &str);
+    void selectInList(LivePathEffect::Effect* effect);
+
+   // void add_entry(const char* name );
+    void effect_list_reload(SPLPEItem *lpeitem);
 
     // callback methods for buttons on grids page.
     void onApply();
     void onRemove();
 
+    void onUp();
+    void onDown();
+
+    class ModelColumns : public Gtk::TreeModel::ColumnRecord
+    {
+      public:
+        ModelColumns()
+        {
+            add(col_name);
+            add(lperef);
+            add(col_visible);
+        }
+        virtual ~ModelColumns() {}
+
+        Gtk::TreeModelColumn<Glib::ustring> col_name;
+        Gtk::TreeModelColumn<LivePathEffect::LPEObjectReference *> lperef;
+        Gtk::TreeModelColumn<bool> col_visible;
+    };
+
+    bool lpe_list_locked;
+
     Inkscape::UI::Widget::ComboBoxEnum<LivePathEffect::EffectType> combo_effecttype;
-    Inkscape::UI::Widget::Button button_apply;
-    Inkscape::UI::Widget::Button button_remove;
+    
     Gtk::Widget * effectwidget;
     Gtk::Label explain_label;
     Gtk::Frame effectapplication_frame;
     Gtk::Frame effectcontrol_frame;
+    Gtk::Frame effectlist_frame;
     Gtk::HBox effectapplication_hbox;
     Gtk::VBox effectcontrol_vbox;
+    Gtk::VBox effectlist_vbox;
     Gtk::Tooltips tooltips;
+    ModelColumns columns;
+    Gtk::ScrolledWindow scrolled_window;
+    Gtk::TreeView effectlist_view;
+    Glib::RefPtr<Gtk::ListStore> effectlist_store;
+    Glib::RefPtr<Gtk::TreeSelection> effectlist_selection;
+
+    void on_visibility_toggled( Glib::ustring const& str );
+
+    Gtk::Toolbar toolbar;
+    Gtk::ToolButton button_up;
+    Gtk::ToolButton button_down;
+    Gtk::Button button_apply;
+    Gtk::ToolButton button_remove;
+    /*Gtk::HButtonBox button_hbox;
+    Gtk::Button        button_up;
+    Gtk::Button        button_down;
+    Gtk::Button button_apply;
+    Gtk::Button button_remove;*/
 
     SPDesktop * current_desktop;
+    
+    SPLPEItem * current_lpeitem;
 
     LivePathEffectEditor(LivePathEffectEditor const &d);
     LivePathEffectEditor& operator=(LivePathEffectEditor const &d);