X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fui%2Fdialog%2Ffilter-effects-dialog.h;h=743ce02395784cb6ebbed8950366a7e6c6fdd18a;hb=da15593ce819c0c0fa2c2adaddebde9de7e0f62c;hp=2dacd4860e7234ce9d163efc0c6f441480ac1804;hpb=75d2a56fc2c5b0d39e545d42909d64c3847cd68d;p=inkscape.git diff --git a/src/ui/dialog/filter-effects-dialog.h b/src/ui/dialog/filter-effects-dialog.h index 2dacd4860..743ce0239 100644 --- a/src/ui/dialog/filter-effects-dialog.h +++ b/src/ui/dialog/filter-effects-dialog.h @@ -27,8 +27,7 @@ #include "attributes.h" #include "dialog.h" #include "sp-filter.h" -#include "sp-feconvolvematrix.h" -#include "ui/widget/filter-effect-chooser.h" +#include "ui/widget/combo-enums.h" #include "ui/widget/spin-slider.h" using namespace Inkscape::UI::Widget; @@ -41,26 +40,55 @@ class DualSpinButton; class MultiSpinButton; class FilterEffectsDialog : public Dialog { public: + + FilterEffectsDialog(Behavior::BehaviorFactory behavior_factory); ~FilterEffectsDialog(); - void set_attrs_locked(const bool); + static FilterEffectsDialog *create(Behavior::BehaviorFactory behavior_factory) + { return new FilterEffectsDialog(behavior_factory); } - static FilterEffectsDialog *create() { return new FilterEffectsDialog(); } + void set_attrs_locked(const bool); private: - class FilterModifier : public Gtk::VBox, public FilterEffectChooser + class SignalObserver; + + class FilterModifier : public Gtk::VBox { public: FilterModifier(FilterEffectsDialog&); + ~FilterModifier(); + + SPFilter* get_selected_filter(); + void select_filter(const SPFilter*); - virtual SPFilter* get_selected_filter(); - virtual void select_filter(const SPFilter*); - virtual Glib::SignalProxy0 signal_selection_changed(); + sigc::signal& signal_filter_changed() + { + return _signal_filter_changed; + } private: + class Columns : public Gtk::TreeModel::ColumnRecord + { + public: + Columns() + { + add(filter); + add(label); + add(sel); + } + + Gtk::TreeModelColumn filter; + Gtk::TreeModelColumn label; + Gtk::TreeModelColumn sel; + }; + class CellRendererSel : public Gtk::CellRenderer { public: CellRendererSel(); - Glib::PropertyProxy property_sel(); + + Glib::PropertyProxy property_sel() + { + return _sel.get_proxy(); + } protected: virtual void get_size_vfunc(Gtk::Widget&, const Gdk::Rectangle*, int*, int*, int*, int*) const; @@ -71,10 +99,19 @@ private: const int _size; Glib::Property _sel; }; - + + static void on_activate_desktop(Application*, SPDesktop*, FilterModifier*); + void on_document_replaced(SPDesktop*, SPDocument*) + { + update_filters(); + } + static void on_inkscape_change_selection(Application *, Selection *, FilterModifier*); + void update_selection(Selection *); + void on_filter_selection_changed(); + void update_filters(); void filter_list_button_press(GdkEventButton*); void filter_list_button_release(GdkEventButton*); void add_filter(); @@ -82,11 +119,18 @@ private: void duplicate_filter(); void rename_filter(); + sigc::connection _doc_replaced; + sigc::connection _resource_changed; + FilterEffectsDialog& _dialog; Gtk::TreeView _list; + Glib::RefPtr _model; + Columns _columns; CellRendererSel _cell_sel; Gtk::Button _add; Glib::RefPtr _menu; + sigc::signal _signal_filter_changed; + std::auto_ptr _observer; }; class PrimitiveColumns : public Gtk::TreeModel::ColumnRecord @@ -130,7 +174,7 @@ private: public: PrimitiveList(FilterEffectsDialog&); - Glib::SignalProxy0 signal_selection_changed(); + sigc::signal& signal_primitive_changed(); void update(); void set_menu(Glib::RefPtr); @@ -155,6 +199,8 @@ private: void draw_connection(const Gtk::TreeIter&, const int attr, const int text_start_x, const int x1, const int y1, const int row_count); void sanitize_connections(const Gtk::TreeIter& prim_iter); + void on_primitive_selection_changed(); + bool on_scroll_timeout(); FilterEffectsDialog& _dialog; Glib::RefPtr _model; @@ -164,6 +210,10 @@ private: Glib::RefPtr _vertical_layout; int _in_drag; SPFilterPrimitive* _drag_prim; + sigc::signal _signal_primitive_changed; + sigc::connection _scroll_connection; + int _autoscroll; + std::auto_ptr _observer; }; FilterEffectsDialog(); @@ -180,6 +230,7 @@ private: void set_attr(SPObject*, const SPAttributeEnum, const gchar* val); void update_settings_view(); void update_settings_sensitivity(); + void update_color_matrix(); // Filter effect selection FilterModifier _filter_modifier; @@ -195,21 +246,27 @@ private: Gtk::Label _empty_settings; class Settings; - class ConvolveMatrix; + class MatrixAttr; + class ColorMatrixValues; class LightSourceControl; Settings* _settings; Glib::RefPtr _sizegroup; + // Color Matrix + ColorMatrixValues* _color_matrix_values; + // Convolve Matrix - ConvolveMatrix* _convolve_matrix; + MatrixAttr* _convolve_matrix; DualSpinButton* _convolve_order; MultiSpinButton* _convolve_target; // For controlling setting sensitivity Gtk::Widget* _k1, *_k2, *_k3, *_k4; + Gtk::Widget* _ct_table, *_ct_slope, *_ct_intercept, *_ct_amplitude, *_ct_exponent, *_ct_offset; // To prevent unwanted signals bool _locked; + bool _attr_lock; FilterEffectsDialog(FilterEffectsDialog const &d); FilterEffectsDialog& operator=(FilterEffectsDialog const &d);