diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/desktop-events.cpp | 3 | ||||
| -rw-r--r-- | src/desktop.cpp | 5 | ||||
| -rw-r--r-- | src/desktop.h | 2 | ||||
| -rw-r--r-- | src/menus-skeleton.h | 1 | ||||
| -rw-r--r-- | src/sp-namedview.cpp | 3 | ||||
| -rw-r--r-- | src/sp-namedview.h | 2 | ||||
| -rw-r--r-- | src/ui/interface.cpp | 3 | ||||
| -rw-r--r-- | src/ui/view/edit-widget-interface.h | 3 | ||||
| -rw-r--r-- | src/verbs.cpp | 13 | ||||
| -rw-r--r-- | src/verbs.h | 2 | ||||
| -rw-r--r-- | src/widgets/desktop-widget.cpp | 81 | ||||
| -rw-r--r-- | src/widgets/desktop-widget.h | 6 |
12 files changed, 75 insertions, 49 deletions
diff --git a/src/desktop-events.cpp b/src/desktop-events.cpp index 6968a19f8..99bc4f7ae 100644 --- a/src/desktop-events.cpp +++ b/src/desktop-events.cpp @@ -525,6 +525,9 @@ gint sp_dt_guide_event(SPCanvasItem *item, GdkEvent *event, gpointer data) if ((event->crossing.state & GDK_SHIFT_MASK) && (drag_type != SP_DRAG_MOVE_ORIGIN)) { GdkCursor *guide_cursor; guide_cursor = gdk_cursor_new (GDK_EXCHANGE); + if(guide->getLocked()){ + guide_cursor = sp_cursor_new_from_xpm(cursor_select_xpm , 1, 1); + } gdk_window_set_cursor(gtk_widget_get_window (GTK_WIDGET(desktop->getCanvas())), guide_cursor); #if GTK_CHECK_VERSION(3,0,0) g_object_unref(guide_cursor); diff --git a/src/desktop.cpp b/src/desktop.cpp index 7b20bcb9f..ae92c058a 100644 --- a/src/desktop.cpp +++ b/src/desktop.cpp @@ -1467,6 +1467,11 @@ void SPDesktop::toggleColorProfAdjust() _widget->toggleColorProfAdjust(); } +void SPDesktop::toggleGuidesLock() +{ + _widget->toggleGuidesLock(); +} + bool SPDesktop::colorProfAdjustEnabled() { return _widget->colorProfAdjustEnabled(); diff --git a/src/desktop.h b/src/desktop.h index 754e09766..f1444ba7b 100644 --- a/src/desktop.h +++ b/src/desktop.h @@ -383,6 +383,8 @@ public: void clearWaitingCursor(); bool isWaitingCursor() const { return waiting_cursor; }; + void toggleGuidesLock(); + void toggleColorProfAdjust(); bool colorProfAdjustEnabled(); diff --git a/src/menus-skeleton.h b/src/menus-skeleton.h index da78f99f1..11070d390 100644 --- a/src/menus-skeleton.h +++ b/src/menus-skeleton.h @@ -86,6 +86,7 @@ static char const menus_skeleton[] = " <verb verb-id=\"EditInvert\" />\n" " <verb verb-id=\"EditDeselect\" />\n" " <separator/>\n" +" <verb verb-id=\"EditGuidesToggleLock\" check=\"yes\" />\n" " <verb verb-id=\"EditGuidesAroundPage\" />\n" " <verb verb-id=\"EditRemoveAllGuides\" />\n" " <separator/>\n" diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp index 9b34a3760..22effd93c 100644 --- a/src/sp-namedview.cpp +++ b/src/sp-namedview.cpp @@ -1002,7 +1002,7 @@ void sp_namedview_toggle_guides(SPDocument *doc, Inkscape::XML::Node *repr) doc->setModifiedSinceSave(); } -void sp_namedview_toggle_guides_lock(SPDocument *doc, Inkscape::XML::Node *repr) +void sp_namedview_guides_toggle_lock(SPDocument *doc, Inkscape::XML::Node *repr) { unsigned int v; unsigned int set = sp_repr_get_boolean(repr, "inkscape:lockguides", &v); @@ -1016,7 +1016,6 @@ void sp_namedview_toggle_guides_lock(SPDocument *doc, Inkscape::XML::Node *repr) DocumentUndo::setUndoSensitive(doc, false); sp_repr_set_boolean(repr, "inkscape:lockguides", v); DocumentUndo::setUndoSensitive(doc, saved); - doc->setModifiedSinceSave(); } diff --git a/src/sp-namedview.h b/src/sp-namedview.h index a586ea71c..d95da1254 100644 --- a/src/sp-namedview.h +++ b/src/sp-namedview.h @@ -123,7 +123,7 @@ void sp_namedview_document_from_window(SPDesktop *desktop); void sp_namedview_update_layers_from_document (SPDesktop *desktop); void sp_namedview_toggle_guides(SPDocument *doc, Inkscape::XML::Node *repr); -void sp_namedview_toggle_guides_lock(SPDocument *doc, Inkscape::XML::Node *repr); +void sp_namedview_guides_toggle_lock(SPDocument *doc, Inkscape::XML::Node *repr); void sp_namedview_show_grids(SPNamedView *namedview, bool show, bool dirty_document); Inkscape::CanvasGrid * sp_namedview_get_first_enabled_grid(SPNamedView *namedview); diff --git a/src/ui/interface.cpp b/src/ui/interface.cpp index 0f719b40f..dc49283d5 100644 --- a/src/ui/interface.cpp +++ b/src/ui/interface.cpp @@ -577,6 +577,9 @@ static gboolean checkitem_update(GtkWidget *widget, GdkEventExpose * /*event*/, if (!strcmp(action->id, "ToggleGrid")) { ison = dt->gridsEnabled(); } + else if (!strcmp(action->id, "EditGuidesToggleLock")) { + ison = dt->namedview->lockguides; + } else if (!strcmp(action->id, "ToggleGuides")) { ison = dt->namedview->getGuides(); } diff --git a/src/ui/view/edit-widget-interface.h b/src/ui/view/edit-widget-interface.h index 55683871d..fcba0c6da 100644 --- a/src/ui/view/edit-widget-interface.h +++ b/src/ui/view/edit-widget-interface.h @@ -116,6 +116,9 @@ 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/verbs.cpp b/src/verbs.cpp index afcc37bc4..ed4b1ceb0 100644 --- a/src/verbs.cpp +++ b/src/verbs.cpp @@ -952,6 +952,10 @@ void EditVerb::perform(SPAction *action, void *data) g_return_if_fail(ensure_desktop_valid(action)); SPDesktop *dt = sp_action_get_desktop(action); + SPDocument *doc = dt->getDocument(); + + Inkscape::XML::Node *repr = dt->namedview->getRepr(); + switch (reinterpret_cast<std::size_t>(data)) { case SP_VERB_EDIT_UNDO: sp_undo(dt, dt->getDocument()); @@ -1079,10 +1083,12 @@ void EditVerb::perform(SPAction *action, void *data) case SP_VERB_EDIT_DELETE_ALL_GUIDES: sp_guide_delete_all_guides(dt); break; + case SP_VERB_EDIT_GUIDES_TOGGLE_LOCK: + dt->toggleGuidesLock(); + break; case SP_VERB_EDIT_GUIDES_AROUND_PAGE: sp_guide_create_guides_around_page(dt); break; - case SP_VERB_EDIT_NEXT_PATHEFFECT_PARAMETER: sp_selection_next_patheffect_param(dt); break; @@ -1938,9 +1944,6 @@ void ZoomVerb::perform(SPAction *action, void *data) case SP_VERB_TOGGLE_GUIDES: sp_namedview_toggle_guides(doc, repr); break; - case SP_VERB_TOGGLE_GUIDES_LOCK: - sp_namedview_toggle_guides_lock(doc, repr); - break; case SP_VERB_TOGGLE_SNAPPING: dt->toggleSnapGlobal(); break; @@ -2543,6 +2546,7 @@ Verb *Verb::_base_verbs[] = { N_("Deselect any selected objects or nodes"), INKSCAPE_ICON("edit-select-none")), new EditVerb(SP_VERB_EDIT_DELETE_ALL_GUIDES, "EditRemoveAllGuides", N_("Delete All Guides"), N_("Delete all the guides in the document"), NULL), + new EditVerb(SP_VERB_EDIT_GUIDES_TOGGLE_LOCK, "EditGuidesToggleLock", N_("Lock All Guides"), N_("Toggle lock of all guides in the document"), NULL), new EditVerb(SP_VERB_EDIT_GUIDES_AROUND_PAGE, "EditGuidesAroundPage", N_("Create _Guides Around the Page"), N_("Create four guides aligned with the page borders"), NULL), new EditVerb(SP_VERB_EDIT_NEXT_PATHEFFECT_PARAMETER, "EditNextPathEffectParameter", N_("Next path effect parameter"), @@ -2831,7 +2835,6 @@ Verb *Verb::_base_verbs[] = { new ZoomVerb(SP_VERB_TOGGLE_SCROLLBARS, "ToggleScrollbars", N_("Scroll_bars"), N_("Show or hide the canvas scrollbars"), NULL), new ZoomVerb(SP_VERB_TOGGLE_GRID, "ToggleGrid", N_("Page _Grid"), N_("Show or hide the page grid"), INKSCAPE_ICON("show-grid")), new ZoomVerb(SP_VERB_TOGGLE_GUIDES, "ToggleGuides", N_("G_uides"), N_("Show or hide guides (drag from a ruler to create a guide)"), INKSCAPE_ICON("show-guides")), - new ZoomVerb(SP_VERB_TOGGLE_GUIDES_LOCK, "ToggleGuidesLook", N_("Gui_des Lock"), N_("Lock or unlock all guides"), INKSCAPE_ICON("object-locked")), new ZoomVerb(SP_VERB_TOGGLE_SNAPPING, "ToggleSnapGlobal", N_("Snap"), N_("Enable snapping"), INKSCAPE_ICON("snap")), new ZoomVerb(SP_VERB_TOGGLE_COMMANDS_TOOLBAR, "ToggleCommandsToolbar", N_("_Commands Bar"), N_("Show or hide the Commands bar (under the menu)"), NULL), new ZoomVerb(SP_VERB_TOGGLE_SNAP_TOOLBAR, "ToggleSnapToolbar", N_("Sn_ap Controls Bar"), N_("Show or hide the snapping controls"), NULL), diff --git a/src/verbs.h b/src/verbs.h index e1249684b..e16acb2d1 100644 --- a/src/verbs.h +++ b/src/verbs.h @@ -107,6 +107,7 @@ enum { SP_VERB_EDIT_SELECT_PREV, SP_VERB_EDIT_DESELECT, SP_VERB_EDIT_DELETE_ALL_GUIDES, + SP_VERB_EDIT_GUIDES_TOGGLE_LOCK, SP_VERB_EDIT_GUIDES_AROUND_PAGE, SP_VERB_EDIT_NEXT_PATHEFFECT_PARAMETER, /* Selection */ @@ -249,7 +250,6 @@ enum { SP_VERB_TOGGLE_SCROLLBARS, SP_VERB_TOGGLE_GRID, SP_VERB_TOGGLE_GUIDES, - SP_VERB_TOGGLE_GUIDES_LOCK, SP_VERB_TOGGLE_SNAPPING, SP_VERB_TOGGLE_COMMANDS_TOOLBAR, SP_VERB_TOGGLE_SNAP_TOOLBAR, diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 901b4d328..fd2847506 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -107,7 +107,7 @@ static void sp_desktop_widget_realize (GtkWidget *widget); static gint sp_desktop_widget_event (GtkWidget *widget, GdkEvent *event, SPDesktopWidget *dtw); static void sp_dtw_color_profile_event(EgeColorProfTracker *widget, SPDesktopWidget *dtw); -static void update_guides_lock( GtkWidget *button, gpointer data ); +static void sp_update_guides_lock( GtkWidget *button, gpointer data ); #if defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2) static void cms_adjust_toggled( GtkWidget *button, gpointer data ); #endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2) @@ -392,20 +392,20 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw ) ToolboxFactory::setOrientation( dtw->tool_toolbox, GTK_ORIENTATION_VERTICAL ); gtk_box_pack_start( GTK_BOX(dtw->hbox), dtw->tool_toolbox, FALSE, TRUE, 0 ); /* Lock all guides */ - gchar const* tip = ""; - Inkscape::Verb* verb = Inkscape::Verb::get( SP_VERB_TOGGLE_GUIDES_LOCK ); - if ( verb ) { - SPAction *act = verb->get_action( Inkscape::ActionContext( dtw->viewwidget.view ) ); - if ( act && act->tip ) { - tip = act->tip; - } - } +#if GTK_CHECK_VERSION(3,0,0) + dtw->lock_and_hruler = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); +#else + dtw->lock_and_hruler = gtk_hbox_new (FALSE, 0); +#endif + // Lock guides button dtw->guides_lock = sp_button_new_from_data( Inkscape::ICON_SIZE_DECORATION, SP_BUTTON_TYPE_TOGGLE, NULL, INKSCAPE_ICON("object-locked"), - tip ); - g_signal_connect_after( G_OBJECT(dtw->guides_lock), "clicked", G_CALLBACK(update_guides_lock), dtw ); + _("Toggle lock of all guides in the document")); + + gtk_box_pack_start (GTK_BOX (dtw->lock_and_hruler), dtw->guides_lock, FALSE, FALSE, 0); + g_signal_connect (G_OBJECT (dtw->guides_lock), "toggled", G_CALLBACK (sp_update_guides_lock), dtw); /* Horizontal ruler */ GtkWidget *eventbox = gtk_event_box_new (); @@ -414,11 +414,8 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw ) Inkscape::Util::Unit const *pt = unit_table.getUnit("pt"); sp_ruler_set_unit(SP_RULER(dtw->hruler), pt); gtk_widget_set_tooltip_text (dtw->hruler_box, gettext(pt->name_plural.c_str())); - /* Lock all guides */ - dtw->hruler_box = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start( GTK_BOX(dtw->hruler_box), dtw->guides_lock, FALSE, FALSE, 0 ); - gtk_box_pack_start( GTK_BOX(dtw->hruler_box), dtw->hruler, true, true, 1 ); - gtk_container_add (GTK_CONTAINER (eventbox), dtw->hruler_box); + gtk_container_add (GTK_CONTAINER (eventbox), dtw->hruler); + gtk_container_add (GTK_CONTAINER (dtw->lock_and_hruler), eventbox); g_signal_connect (G_OBJECT (eventbox), "button_press_event", G_CALLBACK (sp_dt_hruler_event), dtw); g_signal_connect (G_OBJECT (eventbox), "button_release_event", G_CALLBACK (sp_dt_hruler_event), dtw); g_signal_connect (G_OBJECT (eventbox), "motion_notify_event", G_CALLBACK (sp_dt_hruler_event), dtw); @@ -427,13 +424,13 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw ) GtkWidget *tbl = gtk_grid_new(); dtw->canvas_tbl = gtk_grid_new(); - gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), eventbox, 0, 0, 1, 1); + gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), dtw->lock_and_hruler, 0, 0, 1, 1); #else GtkWidget *tbl = gtk_table_new(2, 3, FALSE); dtw->canvas_tbl = gtk_table_new(3, 3, FALSE); gtk_table_attach(GTK_TABLE(dtw->canvas_tbl), - eventbox, + dtw->lock_and_hruler, 0, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0); @@ -512,8 +509,8 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw ) 0, 0); #endif - tip = ""; - verb = Inkscape::Verb::get( SP_VERB_VIEW_CMS_TOGGLE ); + gchar const* tip = ""; + Inkscape::Verb* verb = Inkscape::Verb::get( SP_VERB_VIEW_CMS_TOGGLE ); if ( verb ) { SPAction *act = verb->get_action( Inkscape::ActionContext( dtw->viewwidget.view ) ); if ( act && act->tip ) { @@ -1000,15 +997,7 @@ void SPDesktopWidget::updateNamedview() modified_connection = desktop->namedview->connectModified(sigc::mem_fun(*this, &SPDesktopWidget::namedviewModified)); namedviewModified(desktop->namedview, SP_OBJECT_MODIFIED_FLAG); - SPDocument *doc = desktop->getDocument(); - SPNamedView *nv = desktop->getNamedView(); - Inkscape::XML::Node *repr = nv->getRepr(); - bool locked = desktop->namedview->lockguides; - if ( locked ) { - sp_button_toggle_set_down( SP_BUTTON(guides_lock), TRUE ); - //to reverse the callback - sp_namedview_toggle_guides_lock(doc, repr); - } + updateTitle( desktop->doc()->getName() ); } @@ -1070,7 +1059,7 @@ void sp_dtw_color_profile_event(EgeColorProfTracker */*tracker*/, SPDesktopWidge } #endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2) -void update_guides_lock( GtkWidget */*button*/, gpointer data ) +void sp_update_guides_lock( GtkWidget */*button*/, gpointer data ) { SPDesktopWidget *dtw = SP_DESKTOP_WIDGET(data); @@ -1079,8 +1068,16 @@ void update_guides_lock( GtkWidget */*button*/, gpointer data ) SPDocument *doc = dtw->desktop->getDocument(); SPNamedView *nv = dtw->desktop->getNamedView(); Inkscape::XML::Node *repr = nv->getRepr(); - nv->lockguides = down; - sp_namedview_toggle_guides_lock(doc, repr); + + if ( down != nv->lockguides ) { + nv->lockguides = down; + sp_namedview_guides_toggle_lock(doc, repr); + if (down) { + dtw->setMessage (Inkscape::NORMAL_MESSAGE, _("Locked all guides")); + } else { + dtw->setMessage (Inkscape::NORMAL_MESSAGE, _("Unlocked all guides")); + } + } } #if defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2) @@ -1596,10 +1593,10 @@ void SPDesktopWidget::layoutWidgets() } if (!prefs->getBool(pref_root + "rulers/state", true)) { - gtk_widget_hide (dtw->hruler); + gtk_widget_hide (dtw->lock_and_hruler); gtk_widget_hide (dtw->vruler); } else { - gtk_widget_show_all (dtw->hruler); + gtk_widget_show_all (dtw->lock_and_hruler); gtk_widget_show_all (dtw->vruler); } } @@ -1731,6 +1728,7 @@ SPDesktopWidget* SPDesktopWidget::createInstance(SPNamedView *namedview) /* Once desktop is set, we can update rulers */ sp_desktop_widget_update_rulers (dtw); + sp_button_toggle_set_down( SP_BUTTON(dtw->guides_lock), namedview->lockguides ); sp_view_widget_set_view (SP_VIEW_WIDGET (dtw), dtw->desktop); @@ -2086,12 +2084,12 @@ void sp_desktop_widget_toggle_rulers (SPDesktopWidget *dtw) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - if (gtk_widget_get_visible (dtw->hruler)) { - gtk_widget_hide (dtw->hruler); + if (gtk_widget_get_visible (dtw->lock_and_hruler)) { + gtk_widget_hide (dtw->lock_and_hruler); gtk_widget_hide (dtw->vruler); prefs->setBool(dtw->desktop->is_fullscreen() ? "/fullscreen/rulers/state" : "/window/rulers/state", false); } else { - gtk_widget_show_all (dtw->hruler); + gtk_widget_show_all (dtw->lock_and_hruler); gtk_widget_show_all (dtw->vruler); prefs->setBool(dtw->desktop->is_fullscreen() ? "/fullscreen/rulers/state" : "/window/rulers/state", true); } @@ -2122,7 +2120,6 @@ bool sp_desktop_widget_color_prof_adj_enabled( SPDesktopWidget *dtw ) void sp_desktop_widget_toggle_color_prof_adj( SPDesktopWidget *dtw ) { - if ( gtk_widget_get_sensitive( dtw->cms_adjust ) ) { if ( SP_BUTTON_IS_DOWN(dtw->cms_adjust) ) { sp_button_toggle_set_down( SP_BUTTON(dtw->cms_adjust), FALSE ); @@ -2132,6 +2129,14 @@ 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 ef3bd9a38..bb5834165 100644 --- a/src/widgets/desktop-widget.h +++ b/src/widgets/desktop-widget.h @@ -49,6 +49,7 @@ 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); @@ -77,8 +78,6 @@ struct SPDesktopWidget { GtkWidget *hbox; - GtkWidget *hrulerbox; - GtkWidget *menubar, *statusbar; Inkscape::UI::Dialogs::SwatchesPanel *panels; @@ -90,6 +89,7 @@ struct SPDesktopWidget { GtkWidget *hruler_box, *vruler_box; // eventboxes for setting tooltips GtkWidget *guides_lock; + GtkWidget *lock_and_hruler; GtkWidget *sticky_zoom; GtkWidget *cms_adjust; GtkWidget *coord_status; @@ -184,6 +184,8 @@ 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() |
