diff options
| author | Felipe Corr??a da Silva Sanches <juca@members.fsf.org> | 2008-02-19 20:57:06 +0000 |
|---|---|---|
| committer | jucablues <jucablues@users.sourceforge.net> | 2008-02-19 20:57:06 +0000 |
| commit | 3a44b1daa97af92fa1be4f7199641ae003065532 (patch) | |
| tree | 15518ba471a241da224fbe45189626630c0ec5e9 /src/ui/widget | |
| parent | r18035@shi: ted | 2008-02-19 12:54:20 -0800 (diff) | |
| download | inkscape-3a44b1daa97af92fa1be4f7199641ae003065532.tar.gz inkscape-3a44b1daa97af92fa1be4f7199641ae003065532.zip | |
* use enums to deal with displacementmap channel selectors
* set default values explicitly for all combobox filter settings at the filters dialog.
(bzr r4781)
Diffstat (limited to 'src/ui/widget')
| -rw-r--r-- | src/ui/widget/attr-widget.h | 19 | ||||
| -rw-r--r-- | src/ui/widget/combo-enums.h | 23 |
2 files changed, 39 insertions, 3 deletions
diff --git a/src/ui/widget/attr-widget.h b/src/ui/widget/attr-widget.h index c87e860d5..34aae7db9 100644 --- a/src/ui/widget/attr-widget.h +++ b/src/ui/widget/attr-widget.h @@ -26,7 +26,8 @@ enum DefaultValueType T_NONE, T_DOUBLE, T_VECT_DOUBLE, - T_BOOL + T_BOOL, + T_UINT }; class DefaultValueHolder @@ -36,6 +37,7 @@ class DefaultValueHolder double d_val; std::vector<double>* vt_val; bool b_val; + unsigned int uint_val; } value; //FIXME remove copy ctor and assignment operator as private to avoid double free of the vector @@ -59,11 +61,21 @@ public: value.b_val = d; } + DefaultValueHolder (unsigned int ui) { + type = T_UINT; + value.uint_val = ui; + } + ~DefaultValueHolder() { if (type == T_VECT_DOUBLE) delete value.vt_val; } + unsigned int as_uint() { + g_assert (type == T_UINT); + return value.uint_val; + } + bool as_bool() { g_assert (type == T_BOOL); return value.b_val; @@ -83,6 +95,11 @@ public: class AttrWidget { public: + AttrWidget(const SPAttributeEnum a, unsigned int value) + : _attr(a), + _default(value) + {} + AttrWidget(const SPAttributeEnum a, double value) : _attr(a), _default(value) diff --git a/src/ui/widget/combo-enums.h b/src/ui/widget/combo-enums.h index c77c2f5a8..75760ab12 100644 --- a/src/ui/widget/combo-enums.h +++ b/src/ui/widget/combo-enums.h @@ -26,6 +26,26 @@ namespace Widget { template<typename E> class ComboBoxEnum : public Gtk::ComboBox, public AttrWidget { public: + ComboBoxEnum(E default_value, const Util::EnumDataConverter<E>& c, const SPAttributeEnum a = SP_ATTR_INVALID) + : AttrWidget(a, (unsigned int)default_value), setProgrammatically(false), _converter(c) + { + signal_changed().connect(signal_attr_changed().make_slot()); + + _model = Gtk::ListStore::create(_columns); + set_model(_model); + + pack_start(_columns.label); + + // Initialize list + for(int i = 0; i < _converter.end; ++i) { + Gtk::TreeModel::Row row = *_model->append(); + const Util::EnumData<E>* data = &_converter.data(i); + row[_columns.data] = data; + row[_columns.label] = _( _converter.get_label(data->id).c_str() ); + } + set_active_by_id(default_value); + } + ComboBoxEnum(const Util::EnumDataConverter<E>& c, const SPAttributeEnum a = SP_ATTR_INVALID) : AttrWidget(a), setProgrammatically(false), _converter(c) { @@ -43,7 +63,6 @@ public: row[_columns.data] = data; row[_columns.label] = _( _converter.get_label(data->id).c_str() ); } - set_active(0); } @@ -59,7 +78,7 @@ public: if(val) set_active(_converter.get_id_from_key(val)); else - set_active(0); + set_active(get_default()->as_uint()); } const Util::EnumData<E>* get_active_data() const |
