diff options
| author | Patrick Storz <eduard.braun2@gmx.de> | 2019-08-06 21:04:34 +0000 |
|---|---|---|
| committer | Patrick Storz <eduard.braun2@gmx.de> | 2019-08-31 14:50:39 +0000 |
| commit | 2ce7a755e48fb64c9956618bea0e9aabc79d149e (patch) | |
| tree | 91f4749cf35270748a1189c47b01aa253ef7b468 /src | |
| parent | Make parameter string generation a job of Inkscape::Extension (diff) | |
| download | inkscape-2ce7a755e48fb64c9956618bea0e9aabc79d149e.tar.gz inkscape-2ce7a755e48fb64c9956618bea0e9aabc79d149e.zip | |
Complete conversion of ParamNotebook to use _children
Diffstat (limited to 'src')
| -rw-r--r-- | src/extension/prefdialog/parameter-notebook.cpp | 34 | ||||
| -rw-r--r-- | src/extension/prefdialog/parameter-notebook.h | 6 |
2 files changed, 26 insertions, 14 deletions
diff --git a/src/extension/prefdialog/parameter-notebook.cpp b/src/extension/prefdialog/parameter-notebook.cpp index 8566a6dfd..36ec5dff2 100644 --- a/src/extension/prefdialog/parameter-notebook.cpp +++ b/src/extension/prefdialog/parameter-notebook.cpp @@ -135,17 +135,20 @@ ParamNotebook::ParamNotebook(Inkscape::XML::Node *xml, Inkscape::Extension::Exte page = new ParamNotebookPage(child_repr, ext); if (page) { - _pages.push_back(page); + _children.push_back(page); } + } else if (child_repr->type() == XML::ELEMENT_NODE) { + g_warning("Invalid child element ('%s') for parameter '%s' in extension '%s'. Expected 'page'.", + chname, _name, _extension->get_id()); + } else if (child_repr->type() != XML::COMMENT_NODE){ + g_warning("Invalid child element found in parameter '%s' in extension '%s'. Expected 'page'.", + _name, _extension->get_id()); } child_repr = child_repr->next(); } } - if (_pages.empty()) { + if (_children.empty()) { g_warning("No (valid) pages for parameter '%s' in extension '%s'", _name, _extension->get_id()); - } else { - // TODO: We should fully replace _pages with _children eventually; only difference is pointer type. - _children.insert(_children.end(), _pages.begin(), _pages.end()); } // get value (initialize with value of first page if pref is empty) @@ -155,8 +158,9 @@ ParamNotebook::ParamNotebook(Inkscape::XML::Node *xml, Inkscape::Extension::Exte g_free(pref_name); if (_value.empty()) { - if (!_pages.empty()) { - _value = _pages[0]->_name; + if (!_children.empty()) { + ParamNotebookPage *first_page = dynamic_cast<ParamNotebookPage *>(_children[0]); + _value = first_page->_name; } } } @@ -164,8 +168,8 @@ ParamNotebook::ParamNotebook(Inkscape::XML::Node *xml, Inkscape::Extension::Exte ParamNotebook::~ParamNotebook () { //destroy pages - for (auto page : _pages) { - delete page; + for (auto child : _children) { + delete child; } } @@ -183,8 +187,8 @@ ParamNotebook::~ParamNotebook () */ const Glib::ustring& ParamNotebook::set(const int in, SPDocument * /*doc*/, Inkscape::XML::Node * /*node*/) { - int i = in < _pages.size() ? in : _pages.size()-1; - ParamNotebookPage *page = _pages[i]; + int i = in < _children.size() ? in : _children.size()-1; + ParamNotebookPage *page = dynamic_cast<ParamNotebookPage *>(_children[i]); if (page) { _value = page->_name; @@ -251,7 +255,8 @@ InxParameter *ParamNotebook::get_param(const char *name) if (name == nullptr) { throw Extension::param_not_exist(); } - for (auto page : _pages) { + for (auto child : _children) { + ParamNotebookPage *page = dynamic_cast<ParamNotebookPage *>(child); InxParameter *subparam = page->get_param(name); if (subparam) { return subparam; @@ -278,7 +283,10 @@ Gtk::Widget *ParamNotebook::get_widget(SPDocument *doc, Inkscape::XML::Node *nod // add pages (if any) and switch to previously selected page int current_page = -1; int selected_page = -1; - for (auto page : _pages) { + for (auto child : _children) { + ParamNotebookPage *page = dynamic_cast<ParamNotebookPage *>(child); + g_assert(child); // A ParamNotebook has only children of type ParamNotebookPage. + // If we receive a non-page child here something is very wrong! current_page++; Gtk::Widget *page_widget = page->get_widget(doc, node, changeSignal); diff --git a/src/extension/prefdialog/parameter-notebook.h b/src/extension/prefdialog/parameter-notebook.h index 4f23940e5..5ee326704 100644 --- a/src/extension/prefdialog/parameter-notebook.h +++ b/src/extension/prefdialog/parameter-notebook.h @@ -50,8 +50,12 @@ private: ~ParamNotebookPage() override; Gtk::Widget *get_widget(SPDocument *doc, Inkscape::XML::Node *node, sigc::signal<void> *changeSignal) override; - char *get_text() { return _text; }; InxParameter *get_param(const char *name) override; + + // ParamNotebookPage is not a real parameter (it has no value), so make sure it does not return one + std::string value_to_string() const override { return ""; }; + + const char *get_text() { return _text; }; }; /* class ParamNotebookPage */ /** A table to store the pages with parameters for this notebook. |
