summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPatrick Storz <eduard.braun2@gmx.de>2019-08-04 20:40:14 +0000
committerPatrick Storz <eduard.braun2@gmx.de>2019-08-31 14:50:38 +0000
commit9185b26e396867391d92e4ab6edf933eec77db3a (patch)
treeae557ad7fd6bc9a0ec1293a7d85fb0765b9707ba /src
parentRename Parameter -> InxParameter for consistency (diff)
downloadinkscape-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')
-rw-r--r--src/extension/CMakeLists.txt4
-rw-r--r--src/extension/prefdialog/parameter.cpp23
-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.cpp13
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;
}