// SPDX-License-Identifier: GPL-2.0-or-later /** @file * @brief New From Template abstract tab class */ /* Authors: * Jan Darowski , supervised by Krzysztof KosiƄski * * Copyright (C) 2013 Authors * Released under GNU GPL v2+, read the file 'COPYING' for more information. */ #ifndef INKSCAPE_SEEN_UI_DIALOG_TEMPLATE_LOAD_TAB_H #define INKSCAPE_SEEN_UI_DIALOG_TEMPLATE_LOAD_TAB_H #include #include #include #include #include #include #include #include #include "xml/node.h" #include "io/resource.h" #include "extension/effect.h" namespace Inkscape { namespace Extension { class Extension; } namespace UI { class TemplateWidget; class NewFromTemplate; class TemplateLoadTab : public Gtk::Box { public: struct TemplateData { bool is_procedural; std::string path; Glib::ustring display_name; Glib::ustring author; Glib::ustring short_description; Glib::ustring long_description; // unused Glib::ustring preview_name; Glib::ustring creation_date; std::set keywords; Inkscape::Extension::Effect *tpl_effect; }; TemplateLoadTab(NewFromTemplate* parent); ~TemplateLoadTab() override; virtual void createTemplate(); protected: class StringModelColumns : public Gtk::TreeModelColumnRecord { public: StringModelColumns() { add(textValue); } Gtk::TreeModelColumn textValue; }; Glib::ustring _current_keyword; Glib::ustring _current_template; std::map _tdata; std::set _keywords; virtual void _displayTemplateInfo(); virtual void _initKeywordsList(); virtual void _refreshTemplatesList(); void _loadTemplates(); void _initLists(); Gtk::Box _tlist_box; Gtk::Box _search_box; TemplateWidget *_info_widget; Gtk::ComboBoxText _keywords_combo; Gtk::TreeView _tlist_view; Glib::RefPtr _tlist_store; StringModelColumns _columns; private: enum SearchType { LIST_KEYWORD, USER_SPECIFIED, ALL }; SearchType _current_search_type; NewFromTemplate* _parent_widget; void _getDataFromNode(Inkscape::XML::Node *, TemplateData &, Extension::Extension *extension=nullptr); void _getProceduralTemplates(); void _getTemplatesFromDomain(Inkscape::IO::Resource::Domain domain); void _keywordSelected(); TemplateData _processTemplateFile(const std::string &); void _onRowActivated(const Gtk::TreeModel::Path &, Gtk::TreeViewColumn*); }; } } #endif