summaryrefslogtreecommitdiffstats
path: root/src/extension/param
diff options
context:
space:
mode:
authorMarkus Engel <markus.engel@tum.de>2013-07-14 21:09:41 +0000
committerMarkus Engel <markus.engel@tum.de>2013-07-14 21:09:41 +0000
commitd32efb61f1c2c18d1018e510bbe9bafc04a03905 (patch)
treeb447bf9856baf1cf485e38c4ce55edb27285129e /src/extension/param
parentMerged from trunk (r12305) (diff)
parentMinor C++ish refactoring pass. (diff)
downloadinkscape-d32efb61f1c2c18d1018e510bbe9bafc04a03905.tar.gz
inkscape-d32efb61f1c2c18d1018e510bbe9bafc04a03905.zip
Merged from trunk (r12419).
(bzr r11608.1.107)
Diffstat (limited to 'src/extension/param')
-rw-r--r--src/extension/param/bool.cpp4
-rw-r--r--src/extension/param/color.cpp4
-rw-r--r--src/extension/param/description.cpp4
-rw-r--r--src/extension/param/enum.cpp22
-rw-r--r--src/extension/param/enum.h5
-rw-r--r--src/extension/param/float.cpp4
-rw-r--r--src/extension/param/int.cpp4
-rw-r--r--src/extension/param/notebook.cpp3
-rw-r--r--src/extension/param/parameter.cpp18
-rw-r--r--src/extension/param/parameter.h6
-rw-r--r--src/extension/param/radiobutton.cpp32
-rw-r--r--src/extension/param/radiobutton.h2
-rw-r--r--src/extension/param/string.cpp4
13 files changed, 108 insertions, 4 deletions
diff --git a/src/extension/param/bool.cpp b/src/extension/param/bool.cpp
index de9b1c586..548dec4fa 100644
--- a/src/extension/param/bool.cpp
+++ b/src/extension/param/bool.cpp
@@ -10,6 +10,10 @@
# include "config.h"
#endif
+#if GLIBMM_DISABLE_DEPRECATED && HAVE_GLIBMM_THREADS_H
+#include <glibmm/threads.h>
+#endif
+
#include <gtkmm/adjustment.h>
#include <gtkmm/box.h>
#include <gtkmm/spinbutton.h>
diff --git a/src/extension/param/color.cpp b/src/extension/param/color.cpp
index d8c78c97d..0a2598c56 100644
--- a/src/extension/param/color.cpp
+++ b/src/extension/param/color.cpp
@@ -14,6 +14,10 @@
#include <iostream>
#include <sstream>
+#if GLIBMM_DISABLE_DEPRECATED && HAVE_GLIBMM_THREADS_H
+#include <glibmm/threads.h>
+#endif
+
#include <gtkmm/adjustment.h>
#include <gtkmm/box.h>
#include <gtkmm/spinbutton.h>
diff --git a/src/extension/param/description.cpp b/src/extension/param/description.cpp
index ae2d88ab3..c9cea73d4 100644
--- a/src/extension/param/description.cpp
+++ b/src/extension/param/description.cpp
@@ -13,6 +13,10 @@
# include "config.h"
#endif
+#if GLIBMM_DISABLE_DEPRECATED && HAVE_GLIBMM_THREADS_H
+#include <glibmm/threads.h>
+#endif
+
#include <gtkmm/box.h>
#include <gtkmm/label.h>
#include <glibmm/i18n.h>
diff --git a/src/extension/param/enum.cpp b/src/extension/param/enum.cpp
index 18a73beb6..bb50c06e1 100644
--- a/src/extension/param/enum.cpp
+++ b/src/extension/param/enum.cpp
@@ -18,6 +18,10 @@
# include "config.h"
#endif
+#if GLIBMM_DISABLE_DEPRECATED && HAVE_GLIBMM_THREADS_H
+#include <glibmm/threads.h>
+#endif
+
#include <gtkmm/box.h>
#include <gtkmm/comboboxtext.h>
#include <glibmm/i18n.h>
@@ -173,6 +177,24 @@ const gchar *ParamComboBox::set(const gchar * in, SPDocument * /*doc*/, Inkscape
return _value;
}
+/**
+ * function to test if \c guitext is selectable
+ */
+bool ParamComboBox::contains(const gchar * guitext, SPDocument const * /*doc*/, Inkscape::XML::Node const * /*node*/) const
+{
+ if (guitext == NULL) {
+ return false; /* Can't have NULL string */
+ }
+
+ for (GSList * list = choices; list != NULL; list = g_slist_next(list)) {
+ enumentry * entr = reinterpret_cast<enumentry *>(list->data);
+ if ( !entr->guitext.compare(guitext) )
+ return true;
+ }
+ // if we did not find the guitext in this ParamComboBox:
+ return false;
+}
+
void
ParamComboBox::changed (void) {
diff --git a/src/extension/param/enum.h b/src/extension/param/enum.h
index ac7d72abd..52e018469 100644
--- a/src/extension/param/enum.h
+++ b/src/extension/param/enum.h
@@ -51,6 +51,11 @@ public:
const gchar * set (const gchar * in, SPDocument * doc, Inkscape::XML::Node * node);
+ /**
+ * @returns true if guitext is part of this enum
+ */
+ bool contains(const gchar * guitext, SPDocument const * /*doc*/, Inkscape::XML::Node const * /*node*/) const;
+
void changed (void);
}; /* class ParamComboBox */
diff --git a/src/extension/param/float.cpp b/src/extension/param/float.cpp
index 81508f6c0..464938f03 100644
--- a/src/extension/param/float.cpp
+++ b/src/extension/param/float.cpp
@@ -10,6 +10,10 @@
# include "config.h"
#endif
+#if GLIBMM_DISABLE_DEPRECATED && HAVE_GLIBMM_THREADS_H
+#include <glibmm/threads.h>
+#endif
+
#include <gtkmm/adjustment.h>
#include <gtkmm/box.h>
#include <gtkmm/scale.h>
diff --git a/src/extension/param/int.cpp b/src/extension/param/int.cpp
index c286018fd..819c75693 100644
--- a/src/extension/param/int.cpp
+++ b/src/extension/param/int.cpp
@@ -10,6 +10,10 @@
# include "config.h"
#endif
+#if GLIBMM_DISABLE_DEPRECATED && HAVE_GLIBMM_THREADS_H
+#include <glibmm/threads.h>
+#endif
+
#include <gtkmm/adjustment.h>
#include <gtkmm/box.h>
#include <gtkmm/scale.h>
diff --git a/src/extension/param/notebook.cpp b/src/extension/param/notebook.cpp
index 85cb5d04c..97002e33f 100644
--- a/src/extension/param/notebook.cpp
+++ b/src/extension/param/notebook.cpp
@@ -16,6 +16,9 @@
# include "config.h"
#endif
+#if GLIBMM_DISABLE_DEPRECATED && HAVE_GLIBMM_THREADS_H
+#include <glibmm/threads.h>
+#endif
#include <gtkmm/adjustment.h>
#include <gtkmm/box.h>
diff --git a/src/extension/param/parameter.cpp b/src/extension/param/parameter.cpp
index 97e4f9d8c..202b8110f 100644
--- a/src/extension/param/parameter.cpp
+++ b/src/extension/param/parameter.cpp
@@ -183,6 +183,15 @@ gchar const *Parameter::get_enum(SPDocument const *doc, Inkscape::XML::Node cons
return param->get(doc, node);
}
+bool Parameter::get_enum_contains(gchar const * value, SPDocument const *doc, Inkscape::XML::Node const *node) const
+{
+ ParamComboBox const *param = dynamic_cast<ParamComboBox const *>(this);
+ if (!param) {
+ throw Extension::param_not_enum_param();
+ }
+ return param->contains(value, doc, node);
+}
+
gchar const *Parameter::get_optiongroup(SPDocument const *doc, Inkscape::XML::Node const * node) const
{
ParamRadioButton const *param = dynamic_cast<ParamRadioButton const *>(this);
@@ -247,6 +256,15 @@ gchar const * Parameter::set_optiongroup( gchar const * in, SPDocument * doc, In
return param->set(in, doc, node);
}
+gchar const *Parameter::set_enum( gchar const * in, SPDocument * doc, Inkscape::XML::Node * node )
+{
+ ParamComboBox *param = dynamic_cast<ParamComboBox *>(this);
+ if (!param) {
+ throw Extension::param_not_enum_param();
+ }
+ return param->set(in, doc, node);
+}
+
/** Wrapper to cast to the object and use it's function. */
guint32
diff --git a/src/extension/param/parameter.h b/src/extension/param/parameter.h
index d08efc554..5e1e3897f 100644
--- a/src/extension/param/parameter.h
+++ b/src/extension/param/parameter.h
@@ -88,8 +88,10 @@ public:
gchar const *get_enum(SPDocument const *doc, Inkscape::XML::Node const *node) const;
/** Wrapper to cast to the object and use it's function. */
- gchar const *get_optiongroup(SPDocument const * doc, Inkscape::XML::Node const *node) const;
+ bool get_enum_contains(gchar const * value, SPDocument const *doc, Inkscape::XML::Node const *node) const;
+ /** Wrapper to cast to the object and use it's function. */
+ gchar const *get_optiongroup(SPDocument const * doc, Inkscape::XML::Node const *node) const;
/** Wrapper to cast to the object and use it's function. */
bool set_bool(bool in, SPDocument * doc, Inkscape::XML::Node * node);
@@ -101,6 +103,8 @@ public:
gchar const *set_optiongroup(gchar const *in, SPDocument * doc, Inkscape::XML::Node *node);
+ gchar const *set_enum(gchar const * in, SPDocument * doc, Inkscape::XML::Node *node);
+
gchar const *set_string(gchar const * in, SPDocument * doc, Inkscape::XML::Node * node);
guint32 set_color(guint32 in, SPDocument * doc, Inkscape::XML::Node * node);
diff --git a/src/extension/param/radiobutton.cpp b/src/extension/param/radiobutton.cpp
index 38ed1fe77..75d5a40e3 100644
--- a/src/extension/param/radiobutton.cpp
+++ b/src/extension/param/radiobutton.cpp
@@ -18,6 +18,10 @@
# include "config.h"
#endif
+#if GLIBMM_DISABLE_DEPRECATED && HAVE_GLIBMM_THREADS_H
+#include <glibmm/threads.h>
+#endif
+
#include <gtkmm/box.h>
#include <gtkmm/comboboxtext.h>
#include <gtkmm/radiobutton.h>
@@ -186,6 +190,8 @@ const gchar *ParamRadioButton::set(const gchar * in, SPDocument * /*doc*/, Inksc
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
prefs->setString(extension_pref_root + prefname, _value);
g_free(prefname);
+ } else {
+ g_warning("Couldn't set ParamRadioButton %s", in);
}
return _value;
@@ -233,8 +239,8 @@ public:
void ParamRadioButtonWdg::changed(void)
{
if (this->get_active()) {
- Glib::ustring data = this->get_label();
- _pref->set(data.c_str(), _doc, _node);
+ Glib::ustring value = _pref->value_from_label(this->get_label());
+ _pref->set(value.c_str(), _doc, _node);
}
if (_changeSignal != NULL) {
_changeSignal->emit();
@@ -260,12 +266,32 @@ protected:
virtual void on_changed() {
if ( base ) {
- base->set(get_active_text().c_str(), doc, node);
+ Glib::ustring value = base->value_from_label(get_active_text());
+ base->set(value.c_str(), doc, node);
}
}
};
/**
+ * Returns the value for the options label parameter
+ */
+Glib::ustring ParamRadioButton::value_from_label(const Glib::ustring label)
+{
+ Glib::ustring value = "";
+
+ for (GSList * list = choices; list != NULL; list = g_slist_next(list)) {
+ optionentry * entr = reinterpret_cast<optionentry *>(list->data);
+ if ( !entr->guitext->compare(label) ) {
+ value = *(entr->value);
+ break;
+ }
+ }
+
+ return value;
+
+}
+
+/**
* Creates a combobox widget for an enumeration parameter.
*/
Gtk::Widget * ParamRadioButton::get_widget(SPDocument * doc, Inkscape::XML::Node * node, sigc::signal<void> * changeSignal)
diff --git a/src/extension/param/radiobutton.h b/src/extension/param/radiobutton.h
index 645faecaf..0e0f643c9 100644
--- a/src/extension/param/radiobutton.h
+++ b/src/extension/param/radiobutton.h
@@ -51,6 +51,8 @@ public:
virtual void string(std::string &string) const;
+ Glib::ustring value_from_label(const Glib::ustring label);
+
const gchar *get(const SPDocument * /*doc*/, const Inkscape::XML::Node * /*node*/) const { return _value; }
const gchar *set(const gchar *in, SPDocument *doc, Inkscape::XML::Node *node);
diff --git a/src/extension/param/string.cpp b/src/extension/param/string.cpp
index 4e525ff73..d6e438db5 100644
--- a/src/extension/param/string.cpp
+++ b/src/extension/param/string.cpp
@@ -10,6 +10,10 @@
# include "config.h"
#endif
+#if GLIBMM_DISABLE_DEPRECATED && HAVE_GLIBMM_THREADS_H
+#include <glibmm/threads.h>
+#endif
+
#include <gtkmm/adjustment.h>
#include <gtkmm/box.h>
#include <gtkmm/spinbutton.h>