diff options
| author | Marc Jeanmougin <marc@jeanmougin.fr> | 2018-05-09 13:07:03 +0000 |
|---|---|---|
| committer | Marc Jeanmougin <marc@jeanmougin.fr> | 2018-05-09 13:07:03 +0000 |
| commit | 9c6f702ebfbd401e7d4119b6d6b434783cf4c5b4 (patch) | |
| tree | 97ef62fc5823e6d784bc9259f889ad11c0e659f0 /src | |
| parent | Create stateless alignment selector and use it instead (diff) | |
| parent | Guides created after "lock all guides" selected should be locked (diff) | |
| download | inkscape-9c6f702ebfbd401e7d4119b6d6b434783cf4c5b4.tar.gz inkscape-9c6f702ebfbd401e7d4119b6d6b434783cf4c5b4.zip | |
Merge branch 'guidespanel' of gitlab.com:darktrojan/inkscape
Diffstat (limited to 'src')
| -rw-r--r-- | src/desktop.cpp | 2 | ||||
| -rw-r--r-- | src/file.cpp | 2 | ||||
| -rw-r--r-- | src/object/sp-guide.cpp | 3 | ||||
| -rw-r--r-- | src/object/sp-namedview.cpp | 7 | ||||
| -rw-r--r-- | src/object/sp-namedview.h | 1 | ||||
| -rw-r--r-- | src/ui/dialog/document-properties.cpp | 37 | ||||
| -rw-r--r-- | src/ui/dialog/document-properties.h | 6 | ||||
| -rw-r--r-- | src/ui/view/edit-widget-interface.h | 3 | ||||
| -rw-r--r-- | src/widgets/desktop-widget.cpp | 8 | ||||
| -rw-r--r-- | src/widgets/desktop-widget.h | 3 |
10 files changed, 55 insertions, 17 deletions
diff --git a/src/desktop.cpp b/src/desktop.cpp index 262f1339b..47c82b6d9 100644 --- a/src/desktop.cpp +++ b/src/desktop.cpp @@ -1525,7 +1525,7 @@ void SPDesktop::toggleColorProfAdjust() void SPDesktop::toggleGuidesLock() { - _widget->toggleGuidesLock(); + sp_namedview_guides_toggle_lock(this->getDocument(), namedview); } bool SPDesktop::colorProfAdjustEnabled() diff --git a/src/file.cpp b/src/file.cpp index 06db60765..30a218141 100644 --- a/src/file.cpp +++ b/src/file.cpp @@ -282,7 +282,7 @@ bool sp_file_open(const Glib::ustring &uri, SPNamedView *nv = desktop->namedview; if (nv->lockguides) { - desktop->toggleGuidesLock(); + nv->lockGuides(); } // Perform a fixup pass for hrefs. if ( Inkscape::ResourceManager::getManager().fixupBrokenLinks(doc) ) { diff --git a/src/object/sp-guide.cpp b/src/object/sp-guide.cpp index 25bcee92b..19aced5c0 100644 --- a/src/object/sp-guide.cpp +++ b/src/object/sp-guide.cpp @@ -222,6 +222,9 @@ SPGuide *SPGuide::createSPGuide(SPDocument *doc, Geom::Point const &pt1, Geom::P SPNamedView *namedview = sp_document_namedview(doc, NULL); if (namedview) { + if (namedview->lockguides) { + repr->setAttribute("inkscape:locked", "true"); + } namedview->appendChild(repr); } Inkscape::GC::release(repr); diff --git a/src/object/sp-namedview.cpp b/src/object/sp-namedview.cpp index 59c7129f6..7cea56119 100644 --- a/src/object/sp-namedview.cpp +++ b/src/object/sp-namedview.cpp @@ -590,6 +590,7 @@ void SPNamedView::set(unsigned int key, const gchar* value) { } case SP_ATTR_INKSCAPE_LOCKGUIDES: this->lockguides = value ? sp_str_to_bool(value) : FALSE; + this->lockGuides(); this->requestModified(SP_OBJECT_MODIFIED_FLAG); break; default: @@ -1098,6 +1099,12 @@ bool SPNamedView::getGuides() return v; } + +void SPNamedView::lockGuides() +{ + sp_namedview_lock_guides(this); +} + /** * Gets page fitting margin information from the namedview node in the XML. * \param nv_repr reference to this document's namedview diff --git a/src/object/sp-namedview.h b/src/object/sp-namedview.h index 20d762bc4..8a46d3fd5 100644 --- a/src/object/sp-namedview.h +++ b/src/object/sp-namedview.h @@ -98,6 +98,7 @@ public: void setSnapGlobal(bool v); void setGuides(bool v); bool getGuides(); + void lockGuides(); private: double getMarginLength(gchar const * const key,Inkscape::Util::Unit const * const margin_units,Inkscape::Util::Unit const * const return_units,double const width,double const height,bool const use_width); diff --git a/src/ui/dialog/document-properties.cpp b/src/ui/dialog/document-properties.cpp index 433638f30..8d794e4e7 100644 --- a/src/ui/dialog/document-properties.cpp +++ b/src/ui/dialog/document-properties.cpp @@ -26,6 +26,7 @@ #include "document-properties.h" #include "rdf.h" #include "verbs.h" +#include "helper/action.h" #include "io/sys.h" @@ -112,8 +113,11 @@ DocumentProperties::DocumentProperties() //--------------------------------------------------------------- //General snap options _rcb_sgui(_("Show _guides"), _("Show or hide guides"), "showguides", _wr), + _rcb_lgui(_("Lock all guides"), _("Toggle lock of all guides in the document"), "inkscape:lockguides", _wr), _rcp_gui(_("Guide co_lor:"), _("Guideline color"), _("Color of guidelines"), "guidecolor", "guideopacity", _wr), _rcp_hgui(_("_Highlight color:"), _("Highlighted guideline color"), _("Color of a guideline when it is under mouse"), "guidehicolor", "guidehiopacity", _wr), + _create_guides_btn(_("Create guides around the page")), + _delete_guides_btn(_("Delete all guides")), //--------------------------------------------------------------- _rsu_sno(_("Snap _distance"), _("Snap only when _closer than:"), _("Always snap"), _("Snapping distance, in screen pixels, for snapping to objects"), _("Always snap to objects, regardless of their distance"), @@ -359,11 +363,17 @@ void DocumentProperties::build_guides() { label_gui, 0, 0, &_rcb_sgui, + 0, &_rcb_lgui, 0, &_rcp_gui, - 0, &_rcp_hgui + 0, &_rcp_hgui, + 0, &_create_guides_btn, + 0, &_delete_guides_btn }; attach_all(_page_guides->table(), widget_array, G_N_ELEMENTS(widget_array)); + + _create_guides_btn.signal_clicked().connect(sigc::mem_fun(*this, &DocumentProperties::create_guides_around_page)); + _delete_guides_btn.signal_clicked().connect(sigc::mem_fun(*this, &DocumentProperties::delete_all_guides)); } void DocumentProperties::build_snap() @@ -462,6 +472,30 @@ static void sanitizeName( Glib::ustring& str ) } } +void DocumentProperties::create_guides_around_page() +{ + SPDesktop *dt = getDesktop(); + Verb *verb = Verb::get( SP_VERB_EDIT_GUIDES_AROUND_PAGE ); + if (verb) { + SPAction *action = verb->get_action(Inkscape::ActionContext(dt)); + if (action) { + sp_action_perform(action, NULL); + } + } +} + +void DocumentProperties::delete_all_guides() +{ + SPDesktop *dt = getDesktop(); + Verb *verb = Verb::get( SP_VERB_EDIT_DELETE_ALL_GUIDES ); + if (verb) { + SPAction *action = verb->get_action(Inkscape::ActionContext(dt)); + if (action) { + sp_action_perform(action, NULL); + } + } +} + /// Links the selected color profile in the combo box to the document void DocumentProperties::linkSelectedProfile() { @@ -1434,6 +1468,7 @@ void DocumentProperties::update() //-----------------------------------------------------------guide page _rcb_sgui.setActive (nv->showguides); + _rcb_lgui.setActive (nv->lockguides); _rcp_gui.setRgba32 (nv->guidecolor); _rcp_hgui.setRgba32 (nv->guidehicolor); diff --git a/src/ui/dialog/document-properties.h b/src/ui/dialog/document-properties.h index 3b211599b..e59a375d5 100644 --- a/src/ui/dialog/document-properties.h +++ b/src/ui/dialog/document-properties.h @@ -58,6 +58,9 @@ protected: void build_guides(); void build_snap(); void build_gridspage(); + + void create_guides_around_page(); + void delete_all_guides(); #if defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2) void build_cms(); #endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2) @@ -130,8 +133,11 @@ protected: 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; diff --git a/src/ui/view/edit-widget-interface.h b/src/ui/view/edit-widget-interface.h index c93b1f0ee..a8f68518f 100644 --- a/src/ui/view/edit-widget-interface.h +++ b/src/ui/view/edit-widget-interface.h @@ -116,9 +116,6 @@ struct EditWidgetInterface /// Toggle CMS on/off and set preference value accordingly virtual void toggleColorProfAdjust() = 0; - /// Toggle lock guides on/off and set namedview value accordingly - virtual void toggleGuidesLock() = 0; - /// Is CMS on/off virtual bool colorProfAdjustEnabled() = 0; diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index e95b0fd60..9b28e1424 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -2252,14 +2252,6 @@ void sp_desktop_widget_toggle_color_prof_adj( SPDesktopWidget *dtw ) } } -void sp_desktop_widget_toggle_guides_lock( SPDesktopWidget *dtw ) -{ - if ( SP_BUTTON_IS_DOWN(dtw->guides_lock) ) { - sp_button_toggle_set_down( SP_BUTTON(dtw->guides_lock), FALSE ); - } else { - sp_button_toggle_set_down( SP_BUTTON(dtw->guides_lock), TRUE ); - } -} /* Unused void sp_spw_toggle_menubar (SPDesktopWidget *dtw, bool is_fullscreen) diff --git a/src/widgets/desktop-widget.h b/src/widgets/desktop-widget.h index 0d5f40987..fe0d6597b 100644 --- a/src/widgets/desktop-widget.h +++ b/src/widgets/desktop-widget.h @@ -50,7 +50,6 @@ void sp_desktop_widget_toggle_rulers (SPDesktopWidget *dtw); void sp_desktop_widget_toggle_scrollbars (SPDesktopWidget *dtw); void sp_desktop_widget_update_scrollbars (SPDesktopWidget *dtw, double scale); void sp_desktop_widget_toggle_color_prof_adj( SPDesktopWidget *dtw ); -void sp_desktop_widget_toggle_guides_lock( SPDesktopWidget *dtw ); bool sp_desktop_widget_color_prof_adj_enabled( SPDesktopWidget *dtw ); void sp_dtw_desktop_activate (SPDesktopWidget *dtw); @@ -186,8 +185,6 @@ struct SPDesktopWidget { { sp_desktop_widget_toggle_scrollbars (_dtw); } virtual void toggleColorProfAdjust() { sp_desktop_widget_toggle_color_prof_adj(_dtw); } - virtual void toggleGuidesLock() - { sp_desktop_widget_toggle_guides_lock(_dtw); } virtual bool colorProfAdjustEnabled() { return sp_desktop_widget_color_prof_adj_enabled(_dtw); } virtual void updateZoom() |
