// SPDX-License-Identifier: GPL-2.0-or-later /** \file * \brief Document Properties dialog */ /* Authors: * Ralf Stephan * Bryce W. Harrington * * Copyright (C) 2006-2008 Johan Engelen * Copyright (C) 2004, 2005 Authors * * Released under GNU GPL v2+, read the file 'COPYING' for more information. */ #ifndef INKSCAPE_UI_DIALOG_DOCUMENT_PREFERENCES_H #define INKSCAPE_UI_DIALOG_DOCUMENT_PREFERENCES_H #ifdef HAVE_CONFIG_H # include "config.h" // only include where actually required! #endif #include #include #include #include #include #include #include #include "ui/widget/page-sizer.h" #include "ui/widget/registered-widget.h" #include "ui/widget/registry.h" #include "ui/widget/tolerance-slider.h" #include "ui/widget/panel.h" #include "ui/widget/licensor.h" #include "xml/helper-observer.h" namespace Inkscape { namespace XML { class Node; } namespace UI { namespace Widget { class EntityEntry; class NotebookPage; } namespace Dialog { typedef std::list RDElist; class DocumentProperties : public UI::Widget::Panel { public: void update(); static DocumentProperties &getInstance(); static void destroy(); void update_gridspage(); protected: void build_page(); void build_grid(); void build_guides(); void build_snap(); void build_gridspage(); void create_guides_around_page(); void delete_all_guides(); #if defined(HAVE_LIBLCMS2) void build_cms(); #endif // defined(HAVE_LIBLCMS2) void build_scripting(); void build_metadata(); void init(); virtual void on_response (int); #if defined(HAVE_LIBLCMS2) void populate_available_profiles(); void populate_linked_profiles_box(); void linkSelectedProfile(); void removeSelectedProfile(); void onColorProfileSelectRow(); void linked_profiles_list_button_release(GdkEventButton* event); void cms_create_popup_menu(Gtk::Widget& parent, sigc::slot rem); #endif // defined(HAVE_LIBLCMS2) void external_scripts_list_button_release(GdkEventButton* event); void embedded_scripts_list_button_release(GdkEventButton* event); void populate_script_lists(); void addExternalScript(); void browseExternalScript(); void addEmbeddedScript(); void removeExternalScript(); void removeEmbeddedScript(); void changeEmbeddedScript(); void onExternalScriptSelectRow(); void onEmbeddedScriptSelectRow(); void editEmbeddedScript(); void external_create_popup_menu(Gtk::Widget& parent, sigc::slot rem); void embedded_create_popup_menu(Gtk::Widget& parent, sigc::slot rem); void load_default_metadata(); void save_default_metadata(); void _handleDocumentReplaced(SPDesktop* desktop, SPDocument *document); void _handleActivateDesktop(SPDesktop *desktop); void _handleDeactivateDesktop(SPDesktop *desktop); Inkscape::XML::SignalObserver _emb_profiles_observer, _scripts_observer; Gtk::Notebook _notebook; UI::Widget::NotebookPage *_page_page; UI::Widget::NotebookPage *_page_guides; UI::Widget::NotebookPage *_page_snap; UI::Widget::NotebookPage *_page_cms; UI::Widget::NotebookPage *_page_scripting; Gtk::Notebook _scripting_notebook; UI::Widget::NotebookPage *_page_external_scripts; UI::Widget::NotebookPage *_page_embedded_scripts; UI::Widget::NotebookPage *_page_metadata1; UI::Widget::NotebookPage *_page_metadata2; Gtk::VBox _grids_vbox; UI::Widget::Registry _wr; //--------------------------------------------------------------- Gtk::Grid _rcb_doc_props_left; Gtk::Grid _rcb_doc_props_right; UI::Widget::RegisteredCheckButton _rcb_antialias; UI::Widget::RegisteredCheckButton _rcb_checkerboard; UI::Widget::RegisteredCheckButton _rcb_canb; UI::Widget::RegisteredCheckButton _rcb_bord; UI::Widget::RegisteredCheckButton _rcb_shad; UI::Widget::RegisteredColorPicker _rcp_bg; UI::Widget::RegisteredColorPicker _rcp_bord; UI::Widget::RegisteredUnitMenu _rum_deflt; UI::Widget::PageSizer _page_sizer; //--------------------------------------------------------------- UI::Widget::RegisteredCheckButton _rcb_sgui; UI::Widget::RegisteredCheckButton _rcb_lgui; UI::Widget::RegisteredColorPicker _rcp_gui; UI::Widget::RegisteredColorPicker _rcp_hgui; Gtk::Button _create_guides_btn; Gtk::Button _delete_guides_btn; //--------------------------------------------------------------- UI::Widget::ToleranceSlider _rsu_sno; UI::Widget::ToleranceSlider _rsu_sn; UI::Widget::ToleranceSlider _rsu_gusn; UI::Widget::RegisteredCheckButton _rcb_snclp; UI::Widget::RegisteredCheckButton _rcb_snmsk; UI::Widget::RegisteredCheckButton _rcb_perp; UI::Widget::RegisteredCheckButton _rcb_tang; //--------------------------------------------------------------- Gtk::Button _link_btn; Gtk::Button _unlink_btn; class AvailableProfilesColumns : public Gtk::TreeModel::ColumnRecord { public: AvailableProfilesColumns() { add(fileColumn); add(nameColumn); add(separatorColumn); } Gtk::TreeModelColumn fileColumn; Gtk::TreeModelColumn nameColumn; Gtk::TreeModelColumn separatorColumn; }; AvailableProfilesColumns _AvailableProfilesListColumns; Glib::RefPtr _AvailableProfilesListStore; Gtk::ComboBox _AvailableProfilesList; bool _AvailableProfilesList_separator(const Glib::RefPtr& model, const Gtk::TreeModel::iterator& iter); class LinkedProfilesColumns : public Gtk::TreeModel::ColumnRecord { public: LinkedProfilesColumns() { add(nameColumn); add(previewColumn); } Gtk::TreeModelColumn nameColumn; Gtk::TreeModelColumn previewColumn; }; LinkedProfilesColumns _LinkedProfilesListColumns; Glib::RefPtr _LinkedProfilesListStore; Gtk::TreeView _LinkedProfilesList; Gtk::ScrolledWindow _LinkedProfilesListScroller; Gtk::Menu _EmbProfContextMenu; //--------------------------------------------------------------- Gtk::Button _external_add_btn; Gtk::Button _external_remove_btn; Gtk::Button _embed_new_btn; Gtk::Button _embed_remove_btn; Gtk::ButtonBox _embed_button_box; class ExternalScriptsColumns : public Gtk::TreeModel::ColumnRecord { public: ExternalScriptsColumns() { add(filenameColumn); } Gtk::TreeModelColumn filenameColumn; }; ExternalScriptsColumns _ExternalScriptsListColumns; class EmbeddedScriptsColumns : public Gtk::TreeModel::ColumnRecord { public: EmbeddedScriptsColumns() { add(idColumn); } Gtk::TreeModelColumn idColumn; }; EmbeddedScriptsColumns _EmbeddedScriptsListColumns; Glib::RefPtr _ExternalScriptsListStore; Glib::RefPtr _EmbeddedScriptsListStore; Gtk::TreeView _ExternalScriptsList; Gtk::TreeView _EmbeddedScriptsList; Gtk::ScrolledWindow _ExternalScriptsListScroller; Gtk::ScrolledWindow _EmbeddedScriptsListScroller; Gtk::Menu _ExternalScriptsContextMenu; Gtk::Menu _EmbeddedScriptsContextMenu; Gtk::Entry _script_entry; Gtk::TextView _EmbeddedContent; Gtk::ScrolledWindow _EmbeddedContentScroller; //--------------------------------------------------------------- Gtk::Notebook _grids_notebook; Gtk::HBox _grids_hbox_crea; Gtk::Label _grids_label_crea; Gtk::Button _grids_button_new; Gtk::Button _grids_button_remove; Gtk::ComboBoxText _grids_combo_gridtype; Gtk::Label _grids_label_def; Gtk::HBox _grids_space; //--------------------------------------------------------------- RDElist _rdflist; UI::Widget::Licensor _licensor; Gtk::HBox& _createPageTabLabel(const Glib::ustring& label, const char *label_image); private: DocumentProperties(); ~DocumentProperties() override; // callback methods for buttons on grids page. void onNewGrid(); void onRemoveGrid(); // callback for document unit change void onDocUnitChange(); }; } // namespace Dialog } // namespace UI } // namespace Inkscape #endif // INKSCAPE_UI_DIALOG_DOCUMENT_PREFERENCES_H /* Local Variables: mode:c++ c-file-style:"stroustrup" c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) indent-tabs-mode:nil fill-column:99 End: */ // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :