summaryrefslogtreecommitdiffstats
path: root/src/extension/param/string.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/extension/param/string.cpp')
-rw-r--r--src/extension/param/string.cpp124
1 files changed, 68 insertions, 56 deletions
diff --git a/src/extension/param/string.cpp b/src/extension/param/string.cpp
index e32224332..13b8e326a 100644
--- a/src/extension/param/string.cpp
+++ b/src/extension/param/string.cpp
@@ -2,6 +2,7 @@
* Copyright (C) 2005-2007 Authors:
* Ted Gould <ted@gould.cx>
* Johan Engelen <johan@shouraizou.nl> *
+ * Jon A. Cruz <jon@joncruz.org>
* Released under GNU GPL, read the file 'COPYING' for more information
*/
@@ -22,32 +23,38 @@ namespace Inkscape {
namespace Extension {
-/** \brief Free the allocated data. */
+/** Free the allocated data. */
ParamString::~ParamString(void)
{
g_free(_value);
+ _value = 0;
}
-/** \brief A function to set the \c _value
- \param in The value to set to
- \param doc A document that should be used to set the value.
- \param node The node where the value may be placed
-
- This function sets the internal value, but it also sets the value
- in the preferences structure. To put it in the right place, \c PREF_DIR
- and \c pref_name() are used.
-
- To copy the data into _value the old memory must be free'd first.
- It is important to note that \c g_free handles \c NULL just fine. Then
- the passed in value is duplicated using \c g_strdup().
-*/
-const gchar *
-ParamString::set (const gchar * in, SPDocument * /*doc*/, Inkscape::XML::Node * /*node*/)
+/**
+ * A function to set the \c _value.
+ *
+ * This function sets the internal value, but it also sets the value
+ * in the preferences structure. To put it in the right place, \c PREF_DIR
+ * and \c pref_name() are used.
+ *
+ * To copy the data into _value the old memory must be free'd first.
+ * It is important to note that \c g_free handles \c NULL just fine. Then
+ * the passed in value is duplicated using \c g_strdup().
+ *
+ * @param in The value to set to.
+ * @param doc A document that should be used to set the value.
+ * @param node The node where the value may be placed.
+ */
+const gchar * ParamString::set(const gchar * in, SPDocument * /*doc*/, Inkscape::XML::Node * /*node*/)
{
- if (in == NULL) return NULL; /* Can't have NULL string */
+ if (in == NULL) {
+ return NULL; /* Can't have NULL string */
+ }
- if (_value != NULL)
+ if (_value != NULL) {
g_free(_value);
+ }
+
_value = g_strdup(in);
gchar * prefname = this->pref_name();
@@ -58,41 +65,44 @@ ParamString::set (const gchar * in, SPDocument * /*doc*/, Inkscape::XML::Node *
return _value;
}
-/** \brief Return the value as a string */
-void
-ParamString::string (std::string &string)
+void ParamString::string(std::string &string) const
{
- if (_value == NULL)
- return;
-
- string += _value;
- return;
+ if (_value) {
+ string += _value;
+ }
}
-/** \brief Initialize the object, to do that, copy the data. */
+/** Initialize the object, to do that, copy the data. */
ParamString::ParamString (const gchar * name, const gchar * guitext, const gchar * desc, const Parameter::_scope_t scope, bool gui_hidden, const gchar * gui_tip, Inkscape::Extension::Extension * ext, Inkscape::XML::Node * xml) :
- Parameter(name, guitext, desc, scope, gui_hidden, gui_tip, ext), _value(NULL)
+ Parameter(name, guitext, desc, scope, gui_hidden, gui_tip, ext),
+ _value(NULL), _indent(0)
{
const char * defaultval = NULL;
- if (sp_repr_children(xml) != NULL)
+ if (sp_repr_children(xml) != NULL) {
defaultval = sp_repr_children(xml)->content();
+ }
+
+ const char * indent = xml->attribute("indent");
+ if (indent != NULL) {
+ _indent = atoi(indent) * 12;
+ }
gchar * pref_name = this->pref_name();
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
Glib::ustring paramval = prefs->getString(extension_pref_root + pref_name);
g_free(pref_name);
- if (!paramval.empty())
+ if (!paramval.empty()) {
defaultval = paramval.data();
- if (defaultval != NULL)
+ }
+ if (defaultval != NULL) {
_value = g_strdup(defaultval);
-
- _max_length = 0;
+ }
- return;
+ _max_length = 0;
}
-/** \brief A special type of Gtk::Entry to handle string parameteres */
+/** A special type of Gtk::Entry to handle string parameteres. */
class ParamStringEntry : public Gtk::Entry {
private:
ParamString * _pref;
@@ -100,14 +110,16 @@ private:
Inkscape::XML::Node * _node;
sigc::signal<void> * _changeSignal;
public:
- /** \brief Build a string preference for the given parameter
- \param pref Where to get the string from, and where to put it
- when it changes.
- */
+ /**
+ * Build a string preference for the given parameter.
+ * @param pref Where to get the string from, and where to put it
+ * when it changes.
+ */
ParamStringEntry (ParamString * pref, SPDocument * doc, Inkscape::XML::Node * node, sigc::signal<void> * changeSignal) :
Gtk::Entry(), _pref(pref), _doc(doc), _node(node), _changeSignal(changeSignal) {
- if (_pref->get(NULL, NULL) != NULL)
+ if (_pref->get(NULL, NULL) != NULL) {
this->set_text(Glib::ustring(_pref->get(NULL, NULL)));
+ }
this->set_max_length(_pref->getMaxLength()); //Set the max lenght - default zero means no maximum
this->signal_changed().connect(sigc::mem_fun(this, &ParamStringEntry::changed_text));
};
@@ -115,37 +127,37 @@ public:
};
-/** \brief Respond to the text box changing
-
- This function responds to the box changing by grabbing the value
- from the text box and putting it in the parameter.
-*/
-void
-ParamStringEntry::changed_text (void)
+/**
+ * Respond to the text box changing.
+ *
+ * This function responds to the box changing by grabbing the value
+ * from the text box and putting it in the parameter.
+ */
+void ParamStringEntry::changed_text(void)
{
Glib::ustring data = this->get_text();
_pref->set(data.c_str(), _doc, _node);
if (_changeSignal != NULL) {
_changeSignal->emit();
}
- return;
}
/**
- \brief Creates a text box for the string parameter
-
- Builds a hbox with a label and a text box in it.
-*/
-Gtk::Widget *
-ParamString::get_widget (SPDocument * doc, Inkscape::XML::Node * node, sigc::signal<void> * changeSignal)
+ * Creates a text box for the string parameter.
+ *
+ * Builds a hbox with a label and a text box in it.
+ */
+Gtk::Widget * ParamString::get_widget(SPDocument * doc, Inkscape::XML::Node * node, sigc::signal<void> * changeSignal)
{
- if (_gui_hidden) return NULL;
+ if (_gui_hidden) {
+ return NULL;
+ }
Gtk::HBox * hbox = Gtk::manage(new Gtk::HBox(false, 4));
Gtk::Label * label = Gtk::manage(new Gtk::Label(_(_text), Gtk::ALIGN_LEFT));
label->show();
- hbox->pack_start(*label, false, false);
+ hbox->pack_start(*label, false, false, _indent);
ParamStringEntry * textbox = new ParamStringEntry(this, doc, node, changeSignal);
textbox->show();