summaryrefslogtreecommitdiffstats
path: root/src/ui/widget
diff options
context:
space:
mode:
authorFelipe Corr??a da Silva Sanches <juca@members.fsf.org>2008-02-19 20:57:06 +0000
committerjucablues <jucablues@users.sourceforge.net>2008-02-19 20:57:06 +0000
commit3a44b1daa97af92fa1be4f7199641ae003065532 (patch)
tree15518ba471a241da224fbe45189626630c0ec5e9 /src/ui/widget
parentr18035@shi: ted | 2008-02-19 12:54:20 -0800 (diff)
downloadinkscape-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.h19
-rw-r--r--src/ui/widget/combo-enums.h23
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