diff options
| author | Patrick Storz <eduard.braun2@gmx.de> | 2019-08-04 20:40:14 +0000 |
|---|---|---|
| committer | Patrick Storz <eduard.braun2@gmx.de> | 2019-08-31 14:50:38 +0000 |
| commit | 9185b26e396867391d92e4ab6edf933eec77db3a (patch) | |
| tree | ae557ad7fd6bc9a0ec1293a7d85fb0765b9707ba /src/extension | |
| parent | Rename Parameter -> InxParameter for consistency (diff) | |
| download | inkscape-9185b26e396867391d92e4ab6edf933eec77db3a.tar.gz inkscape-9185b26e396867391d92e4ab6edf933eec77db3a.zip | |
Add WidgetLabel replacing the former ParamDescription
This improves consistency, as "description" parameter were not
actually parameters with a value that could be modified or saved.
The old syntax is deprecated but still supported for now.
Diffstat (limited to 'src/extension')
| -rw-r--r-- | src/extension/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | src/extension/prefdialog/parameter.cpp | 23 | ||||
| -rw-r--r-- | src/extension/prefdialog/widget-label.cpp (renamed from src/extension/prefdialog/parameter-description.cpp) | 22 | ||||
| -rw-r--r-- | src/extension/prefdialog/widget-label.h (renamed from src/extension/prefdialog/parameter-description.h) | 24 | ||||
| -rw-r--r-- | src/extension/prefdialog/widget.cpp | 13 |
5 files changed, 64 insertions, 22 deletions
diff --git a/src/extension/CMakeLists.txt b/src/extension/CMakeLists.txt index a747f6d45..c8d3f5fc9 100644 --- a/src/extension/CMakeLists.txt +++ b/src/extension/CMakeLists.txt @@ -56,13 +56,13 @@ set(extension_SRC prefdialog/parameter.cpp prefdialog/parameter-bool.cpp prefdialog/parameter-color.cpp - prefdialog/parameter-description.cpp prefdialog/parameter-float.cpp prefdialog/parameter-int.cpp prefdialog/parameter-notebook.cpp prefdialog/parameter-optiongroup.cpp prefdialog/parameter-string.cpp prefdialog/widget.cpp + prefdialog/widget-label.cpp # ------ # Header @@ -131,13 +131,13 @@ set(extension_SRC prefdialog/parameter.h prefdialog/parameter-bool.h prefdialog/parameter-color.h - prefdialog/parameter-description.h prefdialog/parameter-float.h prefdialog/parameter-int.h prefdialog/parameter-notebook.h prefdialog/parameter-optiongroup.h prefdialog/parameter-string.h prefdialog/widget.h + prefdialog/widget-label.h ) if(WIN32) diff --git a/src/extension/prefdialog/parameter.cpp b/src/extension/prefdialog/parameter.cpp index 6a9c744b3..9bb87f7a2 100644 --- a/src/extension/prefdialog/parameter.cpp +++ b/src/extension/prefdialog/parameter.cpp @@ -21,13 +21,13 @@ #include "parameter.h" #include "parameter-bool.h" #include "parameter-color.h" -#include "parameter-description.h" #include "parameter-float.h" #include "parameter-int.h" #include "parameter-notebook.h" #include "parameter-optiongroup.h" #include "parameter-string.h" #include "widget.h" +#include "widget-label.h" #include "extension/extension.h" @@ -41,6 +41,24 @@ namespace Inkscape { namespace Extension { + +// Re-implement ParamDescription for backwards-compatibility, deriving from both, WidgetLabel and InxParameter. +// TODO: Should go away eventually... +class ParamDescription : public virtual WidgetLabel, public virtual InxParameter { +public: + ParamDescription(Inkscape::XML::Node *xml, Inkscape::Extension::Extension *ext) + : WidgetLabel(xml, ext) + , InxParameter(xml, ext) + {} + + Gtk::Widget *get_widget(SPDocument *doc, Inkscape::XML::Node *node, sigc::signal<void> *changeSignal) override + { + return this->WidgetLabel::get_widget(doc, node, changeSignal); + } +}; + + + InxParameter *InxParameter::make(Inkscape::XML::Node *in_repr, Inkscape::Extension::Extension *in_ext) { InxParameter *param = nullptr; @@ -58,12 +76,13 @@ InxParameter *InxParameter::make(Inkscape::XML::Node *in_repr, Inkscape::Extensi } else if (!strcmp(type, "string")) { param = new ParamString(in_repr, in_ext); } else if (!strcmp(type, "description")) { + // support deprecated "description" for backwards-compatibility param = new ParamDescription(in_repr, in_ext); } else if (!strcmp(type, "notebook")) { param = new ParamNotebook(in_repr, in_ext); } else if (!strcmp(type, "optiongroup")) { param = new ParamOptionGroup(in_repr, in_ext); - } else if (!strcmp(type, "enum")) { // support deprecated "enum" for backwards-compatibilty + } else if (!strcmp(type, "enum")) { // support deprecated "enum" for backwards-compatibility in_repr->setAttribute("appearance", "combo"); param = new ParamOptionGroup(in_repr, in_ext); } else if (!strcmp(type, "color")) { diff --git a/src/extension/prefdialog/parameter-description.cpp b/src/extension/prefdialog/widget-label.cpp index ca8825615..64de11463 100644 --- a/src/extension/prefdialog/parameter-description.cpp +++ b/src/extension/prefdialog/widget-label.cpp @@ -1,12 +1,18 @@ // SPDX-License-Identifier: GPL-2.0-or-later -/* - * Copyright (C) 2005-2007 Authors: +/** @file + * Description widget for extensions + *//* + * Authors: * Ted Gould <ted@gould.cx> * Johan Engelen <johan@shouraizou.nl> * + * Patrick Storz <eduard.braun2@gmx.de> + * + * Copyright (C) 2005-2019 Authors + * * Released under GNU GPL v2+, read the file 'COPYING' for more information. */ -#include "parameter-description.h" +#include "widget-label.h" #include <gtkmm/box.h> #include <gtkmm/label.h> @@ -20,8 +26,8 @@ namespace Inkscape { namespace Extension { -ParamDescription::ParamDescription(Inkscape::XML::Node *xml, Inkscape::Extension::Extension *ext) - : InxParameter(xml, ext) +WidgetLabel::WidgetLabel(Inkscape::XML::Node *xml, Inkscape::Extension::Extension *ext) + : InxWidget(xml, ext) { // construct the text content by concatenating all (non-empty) text nodes, // removing all other nodes (e.g. comment nodes) and replacing <extension:br> elements with "<br/>" @@ -62,14 +68,14 @@ ParamDescription::ParamDescription(Inkscape::XML::Node *xml, Inkscape::Extension } else if (!strcmp(_appearance, "url")) { _mode = URL; } else { - g_warning("Invalid value ('%s') for appearance of parameter '%s' in extension '%s'", - _appearance, _name, _extension->get_id()); + g_warning("Invalid value ('%s') for appearance of label widget in extension '%s'", + _appearance, _extension->get_id()); } } } /** \brief Create a label for the description */ -Gtk::Widget *ParamDescription::get_widget (SPDocument * /*doc*/, Inkscape::XML::Node * /*node*/, sigc::signal<void> * /*changeSignal*/) +Gtk::Widget *WidgetLabel::get_widget (SPDocument * /*doc*/, Inkscape::XML::Node * /*node*/, sigc::signal<void> * /*changeSignal*/) { if (_hidden) { return nullptr; diff --git a/src/extension/prefdialog/parameter-description.h b/src/extension/prefdialog/widget-label.h index 5ffec4de7..57ffc5cb1 100644 --- a/src/extension/prefdialog/parameter-description.h +++ b/src/extension/prefdialog/widget-label.h @@ -1,15 +1,21 @@ // SPDX-License-Identifier: GPL-2.0-or-later -#ifndef __INK_EXTENSION_PARAMDESCRIPTION_H__ -#define __INK_EXTENSION_PARAMDESCRIPTION_H__ - -/* - * Copyright (C) 2005-2007 Authors: +/** @file + * Description widget for extensions + *//* + * Authors: * Ted Gould <ted@gould.cx> * Johan Engelen <johan@shouraizou.nl> * + * Patrick Storz <eduard.braun2@gmx.de> + * + * Copyright (C) 2005-2019 Authors + * * Released under GNU GPL v2+, read the file 'COPYING' for more information. */ -#include "parameter.h" +#ifndef SEEN_INK_EXTENSION_WIDGET_LABEL_H +#define SEEN_INK_EXTENSION_WIDGET_LABEL_H + +#include "widget.h" class SPDocument; @@ -25,13 +31,13 @@ namespace Xml { namespace Extension { /** \brief A description parameter */ -class ParamDescription : public InxParameter { +class WidgetLabel : public InxWidget { public: enum AppearanceMode { DEFAULT, HEADER, URL }; - ParamDescription(Inkscape::XML::Node *xml, Inkscape::Extension::Extension *ext); + WidgetLabel(Inkscape::XML::Node *xml, Inkscape::Extension::Extension *ext); Gtk::Widget *get_widget(SPDocument *doc, Inkscape::XML::Node *node, sigc::signal<void> *changeSignal) override; private: @@ -45,7 +51,7 @@ private: } /* namespace Extension */ } /* namespace Inkscape */ -#endif /* __INK_EXTENSION_PARAMDESCRIPTION_H__ */ +#endif /* SEEN_INK_EXTENSION_WIDGET_LABEL_H */ /* Local Variables: diff --git a/src/extension/prefdialog/widget.cpp b/src/extension/prefdialog/widget.cpp index ea02970ca..1297edb1c 100644 --- a/src/extension/prefdialog/widget.cpp +++ b/src/extension/prefdialog/widget.cpp @@ -11,6 +11,7 @@ */ #include "widget.h" +#include "widget-label.h" #include <sigc++/sigc++.h> @@ -26,7 +27,17 @@ InxWidget *InxWidget::make(Inkscape::XML::Node *in_repr, Inkscape::Extension::Ex { InxWidget *widget = nullptr; - // Note: param could equal nullptr + const char *name = in_repr->name(); + if (!name) { + // we can't create a widget without name + g_warning("InxWidget without name in extension '%s'.", in_ext->get_id()); + } else if (!strcmp(name, "description")) { + widget = new WidgetLabel(in_repr, in_ext); + } else { + g_warning("Unknown widget name ('%s') in extension '%s'", name, in_ext->get_id()); + } + + // Note: widget could equal nullptr return widget; } |
