diff options
| author | John Smith <john.smith7545@yahoo.com> | 2012-08-09 07:23:35 +0000 |
|---|---|---|
| committer | John Smith <john.smith7545@yahoo.com> | 2012-08-09 07:23:35 +0000 |
| commit | 0d1d59a3dfe51740e7601dba044c9ed979e4c9f7 (patch) | |
| tree | 7b97271b606850781571acd163c8b957aae1e379 /src | |
| parent | copyright message rewritten object properties dialog (diff) | |
| download | inkscape-0d1d59a3dfe51740e7601dba044c9ed979e4c9f7.tar.gz inkscape-0d1d59a3dfe51740e7601dba044c9ed979e4c9f7.zip | |
Fix for 819671 : No visual indication for grid and snap being on/off
(bzr r11600)
Diffstat (limited to 'src')
| -rw-r--r-- | src/desktop.cpp | 6 | ||||
| -rw-r--r-- | src/desktop.h | 1 | ||||
| -rw-r--r-- | src/interface.cpp | 71 | ||||
| -rw-r--r-- | src/menus-skeleton.h | 8 | ||||
| -rw-r--r-- | src/sp-namedview.cpp | 11 | ||||
| -rw-r--r-- | src/sp-namedview.h | 1 | ||||
| -rw-r--r-- | src/ui/view/edit-widget-interface.h | 3 | ||||
| -rw-r--r-- | src/widgets/desktop-widget.cpp | 6 | ||||
| -rw-r--r-- | src/widgets/desktop-widget.h | 3 |
9 files changed, 97 insertions, 13 deletions
diff --git a/src/desktop.cpp b/src/desktop.cpp index ce1f4cda4..ca981a458 100644 --- a/src/desktop.cpp +++ b/src/desktop.cpp @@ -1430,6 +1430,11 @@ void SPDesktop::toggleColorProfAdjust() _widget->toggleColorProfAdjust(); } +bool SPDesktop::colorProfAdjustEnabled() +{ + return _widget->colorProfAdjustEnabled(); +} + void SPDesktop::toggleGrids() { if (namedview->grids) { @@ -1460,6 +1465,7 @@ void SPDesktop::toggleSnapGlobal() namedview->setSnapGlobal(!v); } + //---------------------------------------------------------------------- // Callback implementations. The virtual ones are connected by the view. diff --git a/src/desktop.h b/src/desktop.h index 7bc4ba463..919cd905e 100644 --- a/src/desktop.h +++ b/src/desktop.h @@ -358,6 +358,7 @@ public: bool isWaitingCursor() const { return waiting_cursor; }; void toggleColorProfAdjust(); + bool colorProfAdjustEnabled(); void toggleGrids(); void toggleSnapGlobal(); diff --git a/src/interface.cpp b/src/interface.cpp index 1d09f2b72..ac624f0e1 100644 --- a/src/interface.cpp +++ b/src/interface.cpp @@ -534,16 +534,34 @@ checkitem_toggled(GtkCheckMenuItem *menuitem, gpointer user_data) { gchar const *pref = (gchar const *) user_data; Inkscape::UI::View::View *view = (Inkscape::UI::View::View *) g_object_get_data(G_OBJECT(menuitem), "view"); + SPAction *action = (SPAction *) g_object_get_data(G_OBJECT(menuitem), "action"); + if (action) { + + sp_ui_menu_activate(menuitem, action); + + } else if (pref) { + // The Show/Hide menu items without actions + Glib::ustring pref_path = getLayoutPrefPath( view ); + pref_path += pref; + pref_path += "/state"; + + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + gboolean checked = gtk_check_menu_item_get_active(menuitem); + prefs->setBool(pref_path, checked); + + reinterpret_cast<SPDesktop*>(view)->layoutWidget(); + } +} + +static bool getViewStateFromPref(Inkscape::UI::View::View *view, gchar const *pref) +{ Glib::ustring pref_path = getLayoutPrefPath( view ); pref_path += pref; pref_path += "/state"; Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - gboolean checked = gtk_check_menu_item_get_active(menuitem); - prefs->setBool(pref_path, checked); - - reinterpret_cast<SPDesktop*>(view)->layoutWidget(); + return prefs->getBool(pref_path, true); } #if GTK_CHECK_VERSION(3,0,0) @@ -556,13 +574,34 @@ static gboolean checkitem_update(GtkWidget *widget, GdkEventExpose * /*event*/, gchar const *pref = (gchar const *) user_data; Inkscape::UI::View::View *view = (Inkscape::UI::View::View *) g_object_get_data(G_OBJECT(menuitem), "view"); + SPAction *action = (SPAction *) g_object_get_data(G_OBJECT(menuitem), "action"); + SPDesktop *dt = static_cast<SPDesktop*>(view); - Glib::ustring pref_path = getLayoutPrefPath( view ); - pref_path += pref; - pref_path += "/state"; + bool ison = false; + if (action) { - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - bool ison = prefs->getBool(pref_path, true); + if (!strcmp(action->id, "ToggleGrid")) { + ison = dt->gridsEnabled(); + } + if (!strcmp(action->id, "ToggleGuides")) { + ison = dt->namedview->getGuides(); + } + if (!strcmp(action->id, "ToggleSnapGlobal")) { + ison = dt->namedview->getSnapGlobal(); + } + if (!strcmp(action->id, "ViewCmsToggle")) { + ison = dt->colorProfAdjustEnabled(); + } + if (!strcmp(action->id, "ToggleRulers")) { + ison = getViewStateFromPref(view, pref); + } + if (!strcmp(action->id, "ToggleScrollbars")) { + ison = getViewStateFromPref(view, pref); + } + } else if (pref) { + // The Show/Hide menu items without actions + ison = getViewStateFromPref(view, pref); + } g_signal_handlers_block_by_func(G_OBJECT(menuitem), (gpointer)(GCallback)checkitem_toggled, user_data); gtk_check_menu_item_set_active(menuitem, ison); @@ -571,6 +610,7 @@ static gboolean checkitem_update(GtkWidget *widget, GdkEventExpose * /*event*/, return FALSE; } + static void taskToggled(GtkCheckMenuItem *menuitem, gpointer userData) { if ( gtk_check_menu_item_get_active(menuitem) ) { @@ -647,6 +687,7 @@ sp_ui_menu_append_check_item_from_verb(GtkMenu *menu, Inkscape::UI::View::View * SPAction *action = (verb) ? verb->get_action(view) : 0; GtkWidget *item = gtk_check_menu_item_new(); + if (verb && shortcut!=GDK_KEY_VoidSymbol) { gchar* c = sp_shortcut_get_label(shortcut); @@ -688,6 +729,7 @@ sp_ui_menu_append_check_item_from_verb(GtkMenu *menu, Inkscape::UI::View::View * gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); g_object_set_data(G_OBJECT(item), "view", (gpointer) view); + g_object_set_data(G_OBJECT(item), "action", (gpointer) action); g_signal_connect( G_OBJECT(item), "toggled", (GCallback) callback_toggle, (void *) pref); @@ -697,8 +739,11 @@ sp_ui_menu_append_check_item_from_verb(GtkMenu *menu, Inkscape::UI::View::View * g_signal_connect( G_OBJECT(item), "expose_event", (GCallback) callback_update, (void *) pref); #endif + (*callback_update)(item, NULL, (void *)pref); + g_signal_connect( G_OBJECT(item), "select", G_CALLBACK(sp_ui_menu_select), (gpointer) (action ? action->tip : tip)); g_signal_connect( G_OBJECT(item), "deselect", G_CALLBACK(sp_ui_menu_deselect), NULL); + } static void @@ -912,6 +957,14 @@ void sp_ui_build_dyn_menus(Inkscape::XML::Node *menus, GtkWidget *menu, Inkscape g_signal_connect( G_OBJECT(item), "expose_event", (GCallback) update_view_menu, (void *) action); #endif } + } else if (menu_pntr->attribute("check") != NULL) { + SPAction *action = NULL; + if (verb->get_code() != SP_VERB_NONE) { + action = verb->get_action(view); + } + sp_ui_menu_append_check_item_from_verb(GTK_MENU(menu), view, action->name, action->tip, NULL, + checkitem_toggled, checkitem_update, verb); + } else { sp_ui_menu_append_item_from_verb(GTK_MENU(menu), verb, view); group = NULL; diff --git a/src/menus-skeleton.h b/src/menus-skeleton.h index 21e25c6dc..7ea720419 100644 --- a/src/menus-skeleton.h +++ b/src/menus-skeleton.h @@ -129,10 +129,10 @@ static char const menus_skeleton[] = //" <verb verb-id=\"DialogPrintColorsPreview\" />\n" " </submenu>\n" " <separator/>\n" -" <verb verb-id=\"ToggleGrid\" />\n" -" <verb verb-id=\"ToggleGuides\" />\n" -" <verb verb-id=\"ToggleSnapGlobal\" />\n" -" <verb verb-id=\"ViewCmsToggle\" />\n" +" <verb verb-id=\"ToggleGrid\" check=\"yes\" />\n" +" <verb verb-id=\"ToggleGuides\" check=\"yes\" />\n" +" <verb verb-id=\"ToggleSnapGlobal\" check=\"yes\" />\n" +" <verb verb-id=\"ViewCmsToggle\" check=\"yes\" />\n" " <separator/>\n" " <submenu name=\"" N_("Sh_ow/Hide") "\">\n" " <objects-checkboxes/>\n" diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp index d9c68f7fb..75c2f8343 100644 --- a/src/sp-namedview.cpp +++ b/src/sp-namedview.cpp @@ -1073,6 +1073,17 @@ void SPNamedView::setGuides(bool v) sp_repr_set_boolean(this->getRepr(), "inkscape:guide-bbox", v); } +bool SPNamedView::getGuides() +{ + g_assert(this->getRepr() != NULL); + unsigned int v; + unsigned int set = sp_repr_get_boolean(this->getRepr(), "showguides", &v); + if (!set) { // hide guides if not specified, for backwards compatibility + v = FALSE; + } + + return v; +} /** * 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/sp-namedview.h b/src/sp-namedview.h index 69cc9c2b5..e83ead69e 100644 --- a/src/sp-namedview.h +++ b/src/sp-namedview.h @@ -89,6 +89,7 @@ struct SPNamedView : public SPObjectGroup { bool getSnapGlobal() const; void setSnapGlobal(bool v); void setGuides(bool v); + bool getGuides(); private: double getMarginLength(gchar const * const key,SPUnit const * const margin_units,SPUnit const * const return_units,double const width,double const height,bool const use_width); diff --git a/src/ui/view/edit-widget-interface.h b/src/ui/view/edit-widget-interface.h index 2426fa5b1..412c7ff8c 100644 --- a/src/ui/view/edit-widget-interface.h +++ b/src/ui/view/edit-widget-interface.h @@ -119,6 +119,9 @@ struct EditWidgetInterface /// Toggle CMS on/off and set preference value accordingly virtual void toggleColorProfAdjust() = 0; + /// Is CMS on/off + virtual bool colorProfAdjustEnabled() = 0; + /// Temporarily block signals and update zoom display virtual void updateZoom() = 0; diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 50c87a9a8..81361f0f9 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -1924,6 +1924,12 @@ sp_desktop_widget_toggle_scrollbars (SPDesktopWidget *dtw) } } +bool sp_desktop_widget_color_prof_adj_enabled( SPDesktopWidget *dtw ) +{ + return gtk_widget_get_sensitive( dtw->cms_adjust ) && + SP_BUTTON_IS_DOWN(dtw->cms_adjust) ; +} + void sp_desktop_widget_toggle_color_prof_adj( SPDesktopWidget *dtw ) { diff --git a/src/widgets/desktop-widget.h b/src/widgets/desktop-widget.h index 4fd26d11d..73194304f 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 ); +bool sp_desktop_widget_color_prof_adj_enabled( SPDesktopWidget *dtw ); void sp_dtw_desktop_activate (SPDesktopWidget *dtw); void sp_dtw_desktop_deactivate (SPDesktopWidget *dtw); @@ -179,6 +180,8 @@ struct SPDesktopWidget { { sp_desktop_widget_toggle_scrollbars (_dtw); } virtual void toggleColorProfAdjust() { sp_desktop_widget_toggle_color_prof_adj(_dtw); } + virtual bool colorProfAdjustEnabled() + { return sp_desktop_widget_color_prof_adj_enabled(_dtw); } virtual void updateZoom() { sp_desktop_widget_update_zoom (_dtw); } virtual void letZoomGrabFocus() |
