index 75cdddf1b9c2c42bc771da40e3504ad3e4bc8a29..22aa55dab3615d4a066a7a9f02a352b555db51ab 100644 (file)
#include <gtkmm/liststore.h>
#include "attr-widget.h"
#include "util/enums.h"
+#include "ui/widget/labelled.h"
namespace Inkscape {
namespace UI {
ComboBoxEnum(const Util::EnumDataConverter<E>& c, const SPAttributeEnum a = SP_ATTR_INVALID)
: AttrWidget(a), _converter(c)
{
+ signal_changed().connect(signal_attr_changed().make_slot());
+
_model = Gtk::ListStore::create(_columns);
set_model(_model);
row[_columns.data] = 0;
row[_columns.label] = s;
}
+
+ void set_active_by_id(E id) {
+ for(Gtk::TreeModel::iterator i = _model->children().begin();
+ i != _model->children().end(); ++i)
+ {
+ const Util::EnumData<E>* data = (*i)[_columns.data];
+ if(data->id == id) {
+ set_active(i);
+ break;
+ }
+ }
+ };
+
+ void set_active_by_key(const Glib::ustring& key) {
+ set_active_by_id( _converter.get_id_from_key(key) );
+ };
+
private:
class Columns : public Gtk::TreeModel::ColumnRecord
{
const Util::EnumDataConverter<E>& _converter;
};
+
+template<typename E> class LabelledComboBoxEnum : public Labelled
+{
+public:
+ LabelledComboBoxEnum( Glib::ustring const &label,
+ Glib::ustring const &tooltip,
+ const Util::EnumDataConverter<E>& c,
+ Glib::ustring const &suffix = "",
+ Glib::ustring const &icon = "",
+ bool mnemonic = true)
+ : Labelled(label, tooltip, new ComboBoxEnum<E>(c), suffix, icon, mnemonic)
+ { }
+
+ ComboBoxEnum<E>* getCombobox() {
+ return static_cast< ComboBoxEnum<E>* > (_widget);
+ }
+};
+
}
}
}