summaryrefslogtreecommitdiffstats
path: root/src/extension/prefdialog
diff options
context:
space:
mode:
authorPatrick Storz <eduard.braun2@gmx.de>2019-08-05 22:11:54 +0000
committerPatrick Storz <eduard.braun2@gmx.de>2019-08-31 14:50:39 +0000
commit26d8a32b7395d7bf1d1da7c32b9f2cdf5770510a (patch)
tree904840fe91cd40cc5791e35ff9435d8e403478df /src/extension/prefdialog
parentInxParameter::string(): remove useless overrides (diff)
downloadinkscape-26d8a32b7395d7bf1d1da7c32b9f2cdf5770510a.tar.gz
inkscape-26d8a32b7395d7bf1d1da7c32b9f2cdf5770510a.zip
Optimize parameter string generation
Also rename overloaded string() functions, so it's clear what they actually do, as it's not the same thing at all...
Diffstat (limited to 'src/extension/prefdialog')
-rw-r--r--src/extension/prefdialog/parameter-bool.cpp9
-rw-r--r--src/extension/prefdialog/parameter-bool.h2
-rw-r--r--src/extension/prefdialog/parameter-color.cpp8
-rw-r--r--src/extension/prefdialog/parameter-color.h2
-rw-r--r--src/extension/prefdialog/parameter-float.cpp9
-rw-r--r--src/extension/prefdialog/parameter-float.h2
-rw-r--r--src/extension/prefdialog/parameter-int.cpp8
-rw-r--r--src/extension/prefdialog/parameter-int.h2
-rw-r--r--src/extension/prefdialog/parameter-notebook.cpp33
-rw-r--r--src/extension/prefdialog/parameter-notebook.h8
-rw-r--r--src/extension/prefdialog/parameter-optiongroup.cpp9
-rw-r--r--src/extension/prefdialog/parameter-optiongroup.h2
-rw-r--r--src/extension/prefdialog/parameter-string.cpp4
-rw-r--r--src/extension/prefdialog/parameter-string.h2
-rw-r--r--src/extension/prefdialog/parameter.cpp28
-rw-r--r--src/extension/prefdialog/parameter.h12
16 files changed, 65 insertions, 75 deletions
diff --git a/src/extension/prefdialog/parameter-bool.cpp b/src/extension/prefdialog/parameter-bool.cpp
index f3436374b..a21c38fb4 100644
--- a/src/extension/prefdialog/parameter-bool.cpp
+++ b/src/extension/prefdialog/parameter-bool.cpp
@@ -104,15 +104,12 @@ void ParamBoolCheckButton::on_toggle()
return;
}
-void ParamBool::string(std::string &string) const
+std::string ParamBool::value_to_string() const
{
if (_value) {
- string += "true";
- } else {
- string += "false";
+ return "true";
}
-
- return;
+ return "false";
}
Gtk::Widget *ParamBool::get_widget(SPDocument *doc, Inkscape::XML::Node *node, sigc::signal<void> *changeSignal)
diff --git a/src/extension/prefdialog/parameter-bool.h b/src/extension/prefdialog/parameter-bool.h
index c5ffe2fd9..5b1b54e86 100644
--- a/src/extension/prefdialog/parameter-bool.h
+++ b/src/extension/prefdialog/parameter-bool.h
@@ -58,7 +58,7 @@ public:
* Appends 'true' or 'false'.
* @todo investigate. Returning a value that can then be appended would probably work better/safer.
*/
- void string(std::string &string) const override;
+ std::string value_to_string() const override;
private:
/** Internal value. */
diff --git a/src/extension/prefdialog/parameter-color.cpp b/src/extension/prefdialog/parameter-color.cpp
index f99a2b54b..b55fcff5d 100644
--- a/src/extension/prefdialog/parameter-color.cpp
+++ b/src/extension/prefdialog/parameter-color.cpp
@@ -95,11 +95,11 @@ void ParamColor::_onColorChanged()
_changeSignal->emit();
}
-void ParamColor::string(std::string &string) const
+std::string ParamColor::value_to_string() const
{
- char str[16];
- snprintf(str, 16, "%u", _color.value());
- string += str;
+ char value_string[16];
+ snprintf(value_string, 16, "%u", _color.value());
+ return value_string;
}
}; /* namespace Extension */
diff --git a/src/extension/prefdialog/parameter-color.h b/src/extension/prefdialog/parameter-color.h
index 511320520..67175838f 100644
--- a/src/extension/prefdialog/parameter-color.h
+++ b/src/extension/prefdialog/parameter-color.h
@@ -44,7 +44,7 @@ public:
Gtk::Widget *get_widget(SPDocument *doc, Inkscape::XML::Node *node, sigc::signal<void> *changeSignal) override;
- void string(std::string &string) const override;
+ std::string value_to_string() const override;
sigc::signal<void> *_changeSignal;
diff --git a/src/extension/prefdialog/parameter-float.cpp b/src/extension/prefdialog/parameter-float.cpp
index f376de560..0f60f8665 100644
--- a/src/extension/prefdialog/parameter-float.cpp
+++ b/src/extension/prefdialog/parameter-float.cpp
@@ -107,12 +107,11 @@ float ParamFloat::set(float in, SPDocument * /*doc*/, Inkscape::XML::Node * /*no
return _value;
}
-void ParamFloat::string(std::string &string) const
+std::string ParamFloat::value_to_string() const
{
- char startstring[G_ASCII_DTOSTR_BUF_SIZE];
- g_ascii_dtostr(startstring, G_ASCII_DTOSTR_BUF_SIZE, _value);
- string += startstring;
- return;
+ char value_string[G_ASCII_DTOSTR_BUF_SIZE];
+ g_ascii_dtostr(value_string, G_ASCII_DTOSTR_BUF_SIZE, _value);
+ return value_string;
}
/** A class to make an adjustment that uses Extension params. */
diff --git a/src/extension/prefdialog/parameter-float.h b/src/extension/prefdialog/parameter-float.h
index 93c38fb24..0b67233f1 100644
--- a/src/extension/prefdialog/parameter-float.h
+++ b/src/extension/prefdialog/parameter-float.h
@@ -46,7 +46,7 @@ public:
Gtk::Widget *get_widget(SPDocument *doc, Inkscape::XML::Node *node, sigc::signal<void> *changeSignal) override;
- void string(std::string &string) const override;
+ std::string value_to_string() const override;
private:
/** Internal value. */
diff --git a/src/extension/prefdialog/parameter-int.cpp b/src/extension/prefdialog/parameter-int.cpp
index 53e858bdb..014872f12 100644
--- a/src/extension/prefdialog/parameter-int.cpp
+++ b/src/extension/prefdialog/parameter-int.cpp
@@ -176,11 +176,11 @@ ParamInt::get_widget (SPDocument *doc, Inkscape::XML::Node *node, sigc::signal<v
return dynamic_cast<Gtk::Widget *>(hbox);
}
-void ParamInt::string(std::string &string) const
+std::string ParamInt::value_to_string() const
{
- char startstring[32];
- sprintf(startstring, "%d", _value);
- string += startstring;
+ char value_string[32];
+ snprintf(value_string, 32, "%d", _value);
+ return value_string;
}
} // namespace Extension
diff --git a/src/extension/prefdialog/parameter-int.h b/src/extension/prefdialog/parameter-int.h
index 093bd3f03..13ca3ce82 100644
--- a/src/extension/prefdialog/parameter-int.h
+++ b/src/extension/prefdialog/parameter-int.h
@@ -44,7 +44,7 @@ public:
Gtk::Widget *get_widget(SPDocument *doc, Inkscape::XML::Node *node, sigc::signal<void> *changeSignal) override;
- void string(std::string &string) const override;
+ std::string value_to_string() const override;
private:
/** Internal value. */
diff --git a/src/extension/prefdialog/parameter-notebook.cpp b/src/extension/prefdialog/parameter-notebook.cpp
index e84150aa2..50c21b3eb 100644
--- a/src/extension/prefdialog/parameter-notebook.cpp
+++ b/src/extension/prefdialog/parameter-notebook.cpp
@@ -24,13 +24,6 @@
#include "xml/node.h"
-
-/**
- * The root directory in the preferences database for extension
- * related parameters.
- */
-#define PREF_DIR "extensions"
-
namespace Inkscape {
namespace Extension {
@@ -70,10 +63,10 @@ ParamNotebook::ParamNotebookPage::~ParamNotebookPage ()
}
}
-void ParamNotebook::ParamNotebookPage::string(std::list <std::string> &list) const
+void ParamNotebook::ParamNotebookPage::build_param_string_list(std::list <std::string> &list) const
{
for (auto parameter : parameters) {
- parameter->string(list);
+ parameter->build_param_string_list(list);
}
}
@@ -209,23 +202,23 @@ const Glib::ustring& ParamNotebook::set(const int in, SPDocument * /*doc*/, Inks
return _value;
}
-void ParamNotebook::string(std::list <std::string> &list) const
+void ParamNotebook::build_param_string_list(std::list <std::string> &list) const
{
- std::string param_string;
- param_string += "--";
- param_string += _name;
- param_string += "=";
-
- param_string += "\"";
- param_string += _value; // the name of the current page
- param_string += "\"";
- list.insert(list.end(), param_string);
+ // call base-class method to add the parameter string for the notebook itself
+ InxParameter::build_param_string_list(list);
+ // iterate over notebook pages
for (auto page : pages) {
- page->string(list);
+ page->build_param_string_list(list);
}
}
+std::string ParamNotebook::value_to_string() const
+{
+ return _value;
+}
+
+
/** A special category of Gtk::Notebook to handle notebook parameters. */
class NotebookWidget : public Gtk::Notebook {
private:
diff --git a/src/extension/prefdialog/parameter-notebook.h b/src/extension/prefdialog/parameter-notebook.h
index ea51162fe..90d032af3 100644
--- a/src/extension/prefdialog/parameter-notebook.h
+++ b/src/extension/prefdialog/parameter-notebook.h
@@ -54,7 +54,7 @@ private:
~ParamNotebookPage() override;
Gtk::Widget *get_widget(SPDocument *doc, Inkscape::XML::Node *node, sigc::signal<void> *changeSignal) override;
- void string(std::list <std::string> &list) const override;
+ void build_param_string_list(std::list <std::string> &list) const override;
char *get_text() { return _text; };
InxParameter *get_param(const char *name) override;
}; /* class ParamNotebookPage */
@@ -73,11 +73,9 @@ public:
* A function to get the currentpage and the parameters in a string form.
* @return A string with the 'value' and all the parameters on all pages as command line arguments.
*/
- void string(std::list <std::string> &list) const override;
-
- // Explicitly call superclass version to avoid method being hidden.
- void string(std::string &string) const override {return InxParameter::string(string);}
+ void build_param_string_list(std::list <std::string> &list) const override;
+ std::string value_to_string() const override;
InxParameter *get_param (const char *name) override;
diff --git a/src/extension/prefdialog/parameter-optiongroup.cpp b/src/extension/prefdialog/parameter-optiongroup.cpp
index 99775d8fc..78146568a 100644
--- a/src/extension/prefdialog/parameter-optiongroup.cpp
+++ b/src/extension/prefdialog/parameter-optiongroup.cpp
@@ -25,11 +25,6 @@
#include "extension/extension.h"
#include "preferences.h"
-/**
- * The root directory in the preferences database for extension
- * related parameters.
- */
-#define PREF_DIR "extensions"
namespace Inkscape {
namespace Extension {
@@ -139,9 +134,9 @@ bool ParamOptionGroup::contains(const Glib::ustring text, SPDocument const * /*d
return false;
}
-void ParamOptionGroup::string(std::string &string) const
+std::string ParamOptionGroup::value_to_string() const
{
- string += _value;
+ return _value;
}
/**
diff --git a/src/extension/prefdialog/parameter-optiongroup.h b/src/extension/prefdialog/parameter-optiongroup.h
index 17cd075e9..16607f2fb 100644
--- a/src/extension/prefdialog/parameter-optiongroup.h
+++ b/src/extension/prefdialog/parameter-optiongroup.h
@@ -47,7 +47,7 @@ public:
Gtk::Widget *get_widget(SPDocument *doc, Inkscape::XML::Node *node, sigc::signal<void> *changeSignal) override;
- void string(std::string &string) const override;
+ std::string value_to_string() const override;
Glib::ustring value_from_label(const Glib::ustring label);
diff --git a/src/extension/prefdialog/parameter-string.cpp b/src/extension/prefdialog/parameter-string.cpp
index 2836f1c99..05a8bca51 100644
--- a/src/extension/prefdialog/parameter-string.cpp
+++ b/src/extension/prefdialog/parameter-string.cpp
@@ -81,9 +81,9 @@ const Glib::ustring& ParamString::set(const Glib::ustring in, SPDocument * /*doc
return _value;
}
-void ParamString::string(std::string &string) const
+std::string ParamString::value_to_string() const
{
- string += _value;
+ return _value;
}
diff --git a/src/extension/prefdialog/parameter-string.h b/src/extension/prefdialog/parameter-string.h
index e1abaa4e8..a8467f10f 100644
--- a/src/extension/prefdialog/parameter-string.h
+++ b/src/extension/prefdialog/parameter-string.h
@@ -28,7 +28,7 @@ public:
Gtk::Widget *get_widget(SPDocument *doc, Inkscape::XML::Node *node, sigc::signal<void> *changeSignal) override;
- void string(std::string &string) const override;
+ std::string value_to_string() const override;
void setMaxLength(int maxLength) { _max_length = maxLength; }
int getMaxLength() { return _max_length; }
diff --git a/src/extension/prefdialog/parameter.cpp b/src/extension/prefdialog/parameter.cpp
index 61cf8c662..3f8f30c60 100644
--- a/src/extension/prefdialog/parameter.cpp
+++ b/src/extension/prefdialog/parameter.cpp
@@ -57,7 +57,7 @@ public:
}
// Well, no, I don't have a value! That's why I should not be an InxParameter!
- void string(std::string &/*string*/) const override {}
+ std::string value_to_string() const override { return ""; }
};
@@ -264,25 +264,25 @@ char *InxParameter::pref_name() const
return g_strdup_printf("%s.%s", _extension->get_id(), _name);
}
-void InxParameter::string(std::string &/*string*/) const
+std::string InxParameter::value_to_string() const
{
// if we end up here we're missing a definition of ::string() in one of the subclasses
- g_critical("InxParameter::string called from parameter '%s' in extension '%s'", _name, _extension->get_id());
+ g_critical("InxParameter::value_to_string called from parameter '%s' in extension '%s'", _name, _extension->get_id());
g_assert_not_reached();
+ return "";
}
-void InxParameter::string(std::list <std::string> &list) const
+void InxParameter::build_param_string_list(std::list <std::string> &list) const
{
- std::string value;
- string(value);
- if (!value.empty()) {
- std::string final;
- final += "--";
- final += name();
- final += "=";
- final += value;
-
- list.insert(list.end(), final);
+ std::string value_string = value_to_string();
+ if (!value_string.empty()) {
+ std::string parameter_string; // --param=value
+ parameter_string += "--";
+ parameter_string += name();
+ parameter_string += "=";
+ parameter_string += value_string;
+
+ list.insert(list.end(), parameter_string);
}
}
diff --git a/src/extension/prefdialog/parameter.h b/src/extension/prefdialog/parameter.h
index b5f662ebc..a5e8c0f71 100644
--- a/src/extension/prefdialog/parameter.h
+++ b/src/extension/prefdialog/parameter.h
@@ -107,7 +107,15 @@ public:
const char *get_tooltip() const override { return _description; }
- virtual void string(std::list <std::string> &list) const;
+ /**
+ * Build a list of parameter strings for the current parameter and it's children (if it has any)
+ *
+ * The individual parameter strings have the form "--param=value", so they can be passed to
+ * script extensions as-is
+ *
+ * @param list Reference to a list of strings that will be appended with the new parameter strings
+ */
+ virtual void build_param_string_list(std::list <std::string> &list) const;
/**
* Gets the current value of the parameter in a string form.
@@ -118,7 +126,7 @@ public:
* Unfortunately it seems we can't make this a pure virtual function,
* as InxParameter is not supposed to be abstract.
*/
- virtual void string(std::string &string) const;
+ virtual std::string value_to_string() const;
/** All the code in Notebook::get_param to get the notebook content. */
virtual InxParameter *get_param(char const *name);