summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2015-12-03 20:51:29 +0000
committerjabiertxof <jabier.arraiza@marker.es>2015-12-03 20:51:29 +0000
commit1cab611c173b2903512268994343f58ef83883ec (patch)
tree5413ada6c47986cf86a22c8dc1d9d639b6b86c5d
parentAdded no highlight and cross icon on locked guides (diff)
downloadinkscape-1cab611c173b2903512268994343f58ef83883ec.tar.gz
inkscape-1cab611c173b2903512268994343f58ef83883ec.zip
Add global lock guides to the rulers
(bzr r14500.1.5)
-rw-r--r--src/desktop-events.cpp4
-rw-r--r--src/desktop.cpp7
-rw-r--r--src/desktop.h1
-rw-r--r--src/sp-guide.cpp4
-rw-r--r--src/ui/dialog/guides.cpp6
-rw-r--r--src/verbs.cpp5
-rw-r--r--src/verbs.h1
-rw-r--r--src/widgets/desktop-widget.cpp58
-rw-r--r--src/widgets/desktop-widget.h3
9 files changed, 80 insertions, 9 deletions
diff --git a/src/desktop-events.cpp b/src/desktop-events.cpp
index 42e7c2fb6..f86cb2991 100644
--- a/src/desktop-events.cpp
+++ b/src/desktop-events.cpp
@@ -531,7 +531,9 @@ gint sp_dt_guide_event(SPCanvasItem *item, GdkEvent *event, gpointer data)
} else {
GdkCursor *guide_cursor;
guide_cursor = gdk_cursor_new (GDK_HAND1);
- if(guide->getLocked()){
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ bool global_lock = prefs->getBool("/options/guides/guides_lock", false);
+ if(guide->getLocked() || global_lock){
guide_cursor = gdk_cursor_new (GDK_X_CURSOR);
}
gdk_window_set_cursor(gtk_widget_get_window (GTK_WIDGET(desktop->getCanvas())), guide_cursor);
diff --git a/src/desktop.cpp b/src/desktop.cpp
index 7b20bcb9f..0ddd77594 100644
--- a/src/desktop.cpp
+++ b/src/desktop.cpp
@@ -1467,6 +1467,13 @@ void SPDesktop::toggleColorProfAdjust()
_widget->toggleColorProfAdjust();
}
+void SPDesktop::toggleGuidesLock()
+{
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ bool guides_lock = prefs->getBool("/options/guides/guides_lock", false);
+ prefs->setBool("/options/guides/guides_lock", !guides_lock);
+}
+
bool SPDesktop::colorProfAdjustEnabled()
{
return _widget->colorProfAdjustEnabled();
diff --git a/src/desktop.h b/src/desktop.h
index 754e09766..6d3b96223 100644
--- a/src/desktop.h
+++ b/src/desktop.h
@@ -386,6 +386,7 @@ public:
void toggleColorProfAdjust();
bool colorProfAdjustEnabled();
+ void toggleGuidesLock();
void toggleGrids();
void toggleSnapGlobal();
bool gridsEnabled() const { return grids_visible; };
diff --git a/src/sp-guide.cpp b/src/sp-guide.cpp
index e37f0b470..00ded2a75 100644
--- a/src/sp-guide.cpp
+++ b/src/sp-guide.cpp
@@ -349,7 +349,9 @@ double SPGuide::getDistanceFrom(Geom::Point const &pt) const
*/
void SPGuide::moveto(Geom::Point const point_on_line, bool const commit)
{
- if(this->locked) {
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ bool global_lock = prefs->getBool("/options/guides/guides_lock", false);
+ if(this->locked || global_lock) {
return;
}
for (GSList *l = views; l != NULL; l = l->next) {
diff --git a/src/ui/dialog/guides.cpp b/src/ui/dialog/guides.cpp
index 4951cf39c..faba71615 100644
--- a/src/ui/dialog/guides.cpp
+++ b/src/ui/dialog/guides.cpp
@@ -300,7 +300,11 @@ void GuidelinePropertiesDialog::_setup() {
_relative_toggle.signal_toggled().connect(sigc::mem_fun(*this, &GuidelinePropertiesDialog::_modeChanged));
_relative_toggle.set_active(_relative_toggle_status);
- std::cout << _guide->getLocked() << "_guide->getLocked()\n";
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ bool global_guides_lock = prefs->getBool("/options/guides/guides_lock", false);
+ if(global_guides_lock){
+ _locked_toggle.set_sensitive(false);
+ }
_locked_toggle.set_active(_guide->getLocked());
// don't know what this exactly does, but it results in that the dialog closes when entering a value and pressing enter (see LP bug 484187)
diff --git a/src/verbs.cpp b/src/verbs.cpp
index 6b13eabb6..029deac3c 100644
--- a/src/verbs.cpp
+++ b/src/verbs.cpp
@@ -1989,6 +1989,9 @@ void ZoomVerb::perform(SPAction *action, void *data)
case SP_VERB_VIEW_CMS_TOGGLE:
dt->toggleColorProfAdjust();
break;
+ case SP_VERB_VIEW_GUIDES_LOCK_TOGGLE:
+ dt->toggleGuidesLock();
+ break;
case SP_VERB_VIEW_ICON_PREVIEW:
INKSCAPE.dialogs_unhide();
dt->_dlg_mgr->showDialog("IconPreviewPanel");
@@ -2877,6 +2880,8 @@ Verb *Verb::_base_verbs[] = {
new ZoomVerb(SP_VERB_VIEW_CMS_TOGGLE, "ViewCmsToggle", N_("Color-managed view"),
N_("Toggle color-managed display for this document window"), INKSCAPE_ICON("color-management")),
+ new ZoomVerb(SP_VERB_VIEW_GUIDES_LOCK_TOGGLE, "GuidesLockToggle", N_("Lock or unlock guides"),
+ N_("Lock or unlock guides"), INKSCAPE_ICON("object-locked")),
new ZoomVerb(SP_VERB_VIEW_ICON_PREVIEW, "ViewIconPreview", N_("Ico_n Preview..."),
N_("Open a window to preview objects at different icon resolutions"), INKSCAPE_ICON("dialog-icon-preview")),
diff --git a/src/verbs.h b/src/verbs.h
index 27aecae64..c50829525 100644
--- a/src/verbs.h
+++ b/src/verbs.h
@@ -277,6 +277,7 @@ enum {
// SP_VERB_VIEW_COLOR_MODE_PRINT_COLORS_PREVIEW,
SP_VERB_VIEW_COLOR_MODE_TOGGLE,
SP_VERB_VIEW_CMS_TOGGLE,
+ SP_VERB_VIEW_GUIDES_LOCK_TOGGLE,
SP_VERB_VIEW_ICON_PREVIEW,
SP_VERB_ZOOM_PAGE,
SP_VERB_ZOOM_PAGE_WIDTH,
diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp
index e19f56e48..ee8c3fb26 100644
--- a/src/widgets/desktop-widget.cpp
+++ b/src/widgets/desktop-widget.cpp
@@ -107,6 +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 );
#if defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
static void cms_adjust_toggled( GtkWidget *button, gpointer data );
#endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
@@ -390,6 +391,27 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
dtw->tool_toolbox = ToolboxFactory::createToolToolbox();
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_VIEW_GUIDES_LOCK_TOGGLE );
+ if ( verb ) {
+ SPAction *act = verb->get_action( Inkscape::ActionContext( dtw->viewwidget.view ) );
+ if ( act && act->tip ) {
+ tip = act->tip;
+ }
+ }
+ dtw->guides_lock = sp_button_new_from_data( Inkscape::ICON_SIZE_DECORATION,
+ SP_BUTTON_TYPE_TOGGLE,
+ NULL,
+ INKSCAPE_ICON("object-locked"),
+ tip );
+ {
+ bool locked = prefs->getBool("/options/guides/locked");
+ if ( locked ) {
+ sp_button_toggle_set_down( SP_BUTTON(dtw->guides_lock), TRUE );
+ }
+ }
+ g_signal_connect_after( G_OBJECT(dtw->guides_lock), "clicked", G_CALLBACK(update_guides_lock), dtw );
/* Horizontal ruler */
GtkWidget *eventbox = gtk_event_box_new ();
@@ -398,7 +420,11 @@ 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()));
- gtk_container_add (GTK_CONTAINER (eventbox), dtw->hruler);
+ /* 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);
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);
@@ -407,23 +433,25 @@ 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, 1, 0, 1, 1);
+ gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), eventbox, 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,
- 1, 2, 0, 1,
+ 0, 2, 0, 1,
GTK_FILL, GTK_FILL,
0, 0);
#endif
-
+
gtk_box_pack_start( GTK_BOX(dtw->hbox), tbl, TRUE, TRUE, 1 );
/* Vertical ruler */
eventbox = gtk_event_box_new ();
dtw->vruler = sp_ruler_new(GTK_ORIENTATION_VERTICAL);
+
+ /* Vertical ruler */
dtw->vruler_box = eventbox;
sp_ruler_set_unit (SP_RULER (dtw->vruler), pt);
gtk_widget_set_tooltip_text (dtw->vruler_box, gettext(pt->name_plural.c_str()));
@@ -446,6 +474,9 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
// Horizontal scrollbar
dtw->hadj = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, -4000.0, 4000.0, 10.0, 100.0, 4.0));
+
+
+
#if GTK_CHECK_VERSION(3,0,0)
dtw->hscrollbar = gtk_scrollbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_ADJUSTMENT (dtw->hadj));
gtk_grid_attach(GTK_GRID(dtw->canvas_tbl), dtw->hscrollbar, 1, 2, 1, 1);
@@ -487,8 +518,8 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
0, 0);
#endif
- gchar const* tip = "";
- Inkscape::Verb* verb = Inkscape::Verb::get( SP_VERB_VIEW_CMS_TOGGLE );
+ tip = "";
+ 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 ) {
@@ -1015,6 +1046,7 @@ sp_desktop_widget_event (GtkWidget *widget, GdkEvent *event, SPDesktopWidget *dt
return FALSE;
}
+
#if defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
void sp_dtw_color_profile_event(EgeColorProfTracker */*tracker*/, SPDesktopWidget *dtw)
{
@@ -1036,6 +1068,20 @@ void sp_dtw_color_profile_event(EgeColorProfTracker */*tracker*/, SPDesktopWidge
}
#endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
+void update_guides_lock( GtkWidget */*button*/, gpointer data )
+{
+ SPDesktopWidget *dtw = SP_DESKTOP_WIDGET(data);
+
+ bool down = SP_BUTTON_IS_DOWN(dtw->guides_lock);
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ prefs->setBool("/options/guides/guides_lock", down);
+ if (down) {
+ dtw->setMessage (Inkscape::NORMAL_MESSAGE, _("Guides are locked"));
+ } else {
+ dtw->setMessage (Inkscape::NORMAL_MESSAGE, _("Guides are unlocked"));
+ }
+}
+
#if defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
void cms_adjust_toggled( GtkWidget */*button*/, gpointer data )
{
diff --git a/src/widgets/desktop-widget.h b/src/widgets/desktop-widget.h
index 489217d9a..ef3bd9a38 100644
--- a/src/widgets/desktop-widget.h
+++ b/src/widgets/desktop-widget.h
@@ -77,6 +77,8 @@ struct SPDesktopWidget {
GtkWidget *hbox;
+ GtkWidget *hrulerbox;
+
GtkWidget *menubar, *statusbar;
Inkscape::UI::Dialogs::SwatchesPanel *panels;
@@ -87,6 +89,7 @@ struct SPDesktopWidget {
GtkWidget *hruler, *vruler;
GtkWidget *hruler_box, *vruler_box; // eventboxes for setting tooltips
+ GtkWidget *guides_lock;
GtkWidget *sticky_zoom;
GtkWidget *cms_adjust;
GtkWidget *coord_status;