/** \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. Read the file 'COPYING' for more information. */ #ifndef INKSCAPE_UI_DIALOG_DOCUMENT_PREFERENCES_H #define INKSCAPE_UI_DIALOG_DOCUMENT_PREFERENCES_H #include #include #include #include #include "ui/widget/notebook-page.h" #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 "xml/node-observer.h" using namespace Inkscape::UI::Widget; namespace Inkscape { namespace XML { class Node; } namespace UI { namespace Dialog { 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_snap_dtls(); void build_gridspage(); #if ENABLE_LCMS void build_cms(); #endif // ENABLE_LCMS void init(); virtual void on_response (int); #if ENABLE_LCMS void populate_available_profiles(); void populate_embedded_profiles_box(); void onEmbedProfile(); void remove_profile(); void embedded_profiles_list_button_release(GdkEventButton* event); void create_popup_menu(Gtk::Widget& parent, sigc::slot rem); #endif // ENABLE_LCMS void _handleDocumentReplaced(SPDesktop* desktop, SPDocument *document); void _handleActivateDesktop(Inkscape::Application *application, SPDesktop *desktop); void _handleDeactivateDesktop(Inkscape::Application *application, SPDesktop *desktop); // Very simple observer that just emits a signal if anything happens to a node class SignalObserver : public XML::NodeObserver { public: SignalObserver(); // Add this observer to the SPObject and remove it from any previous object void set(SPObject* o); void notifyChildAdded(XML::Node&, XML::Node&, XML::Node*); void notifyChildRemoved(XML::Node&, XML::Node&, XML::Node*); void notifyChildOrderChanged(XML::Node&, XML::Node&, XML::Node*, XML::Node*); void notifyContentChanged(XML::Node&, Util::ptr_shared, Util::ptr_shared); void notifyAttributeChanged(XML::Node&, GQuark, Util::ptr_shared, Util::ptr_shared); sigc::signal& signal_changed(); private: sigc::signal _signal_changed; SPObject* _oldsel; }; SignalObserver _emb_profiles_observer; Gtk::Tooltips _tt; Gtk::Notebook _notebook; NotebookPage _page_page, _page_guides; NotebookPage _page_snap, _page_snap_dtls, _page_cms; Gtk::VBox _grids_vbox; Registry _wr; //--------------------------------------------------------------- RegisteredCheckButton _rcb_canb, _rcb_bord, _rcb_shad; RegisteredColorPicker _rcp_bg, _rcp_bord; RegisteredUnitMenu _rum_deflt; PageSizer _page_sizer; //--------------------------------------------------------------- RegisteredCheckButton _rcb_sgui, _rcbsng; RegisteredColorPicker _rcp_gui, _rcp_hgui; //--------------------------------------------------------------- RegisteredCheckButton _rcbs, _rcbsnbb, _rcbsnn, _rcbsnop; RegisteredCheckButton _rcbsnon, _rcbsnbbp, _rcbsnbbn, _rcbsnpb; ToleranceSlider _rsu_sno, _rsu_sn, _rsu_gusn; //--------------------------------------------------------------- RegisteredCheckButton _rcbic, _rcbsm; RegisteredCheckButton _rcbsigg, _rcbsils; //--------------------------------------------------------------- Gtk::Menu _menu; Gtk::OptionMenu _combo_avail; Gtk::Button _embed_btn; class EmbeddedProfilesColumns : public Gtk::TreeModel::ColumnRecord { public: EmbeddedProfilesColumns() { add(nameColumn); add(previewColumn); } Gtk::TreeModelColumn nameColumn; Gtk::TreeModelColumn previewColumn; }; EmbeddedProfilesColumns _EmbeddedProfilesListColumns; Glib::RefPtr _EmbeddedProfilesListStore; Gtk::TreeView _EmbeddedProfilesList; Gtk::ScrolledWindow _EmbeddedProfilesListScroller; Gtk::Menu _EmbProfContextMenu; //--------------------------------------------------------------- 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; //--------------------------------------------------------------- Gtk::HBox& _createPageTabLabel(const Glib::ustring& label, const char *label_image); private: DocumentProperties(); virtual ~DocumentProperties(); // callback methods for buttons on grids page. void onNewGrid(); void onRemoveGrid(); }; } // 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:encoding=utf-8:textwidth=99 :