From 067752b1cf216b8aa55c9e52926496553673cdb7 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Wed, 2 Dec 2015 18:24:10 +0100 Subject: Add lock to guides (bzr r14500.1.1) --- src/attributes.cpp | 1 + src/attributes.h | 1 + src/display/guideline.cpp | 8 ++++++++ src/display/guideline.h | 2 ++ src/sp-guide.cpp | 28 ++++++++++++++++++++++++++++ src/sp-guide.h | 4 ++++ src/ui/dialog/guides.cpp | 22 ++++++++++++++++++++++ src/ui/dialog/guides.h | 1 + 8 files changed, 67 insertions(+) (limited to 'src') diff --git a/src/attributes.cpp b/src/attributes.cpp index a237f8861..5da75e348 100644 --- a/src/attributes.cpp +++ b/src/attributes.cpp @@ -116,6 +116,7 @@ static SPStyleProp const props[] = { {SP_ATTR_INKSCAPE_SNAP_PAGE_BORDER, "inkscape:snap-page"}, {SP_ATTR_INKSCAPE_CURRENT_LAYER, "inkscape:current-layer"}, {SP_ATTR_INKSCAPE_DOCUMENT_UNITS, "inkscape:document-units"}, // This setting sets the Display units, *not* the units used in SVG + {SP_ATTR_INKSCAPE_LOCKED, "inkscape:locked"}, {SP_ATTR_UNITS, "units"}, {SP_ATTR_INKSCAPE_CONNECTOR_SPACING, "inkscape:connector-spacing"}, /* SPColorProfile */ diff --git a/src/attributes.h b/src/attributes.h index 42ec99d8f..d5bb20ca3 100644 --- a/src/attributes.h +++ b/src/attributes.h @@ -118,6 +118,7 @@ enum SPAttributeEnum { SP_ATTR_INKSCAPE_SNAP_PAGE_BORDER, SP_ATTR_INKSCAPE_CURRENT_LAYER, SP_ATTR_INKSCAPE_DOCUMENT_UNITS, + SP_ATTR_INKSCAPE_LOCKED, SP_ATTR_UNITS, SP_ATTR_INKSCAPE_CONNECTOR_SPACING, /* SPColorProfile */ diff --git a/src/display/guideline.cpp b/src/display/guideline.cpp index 44bbd14bd..0a564f550 100644 --- a/src/display/guideline.cpp +++ b/src/display/guideline.cpp @@ -53,6 +53,7 @@ static void sp_guideline_init(SPGuideLine *gl) { gl->rgba = 0x0000ff7f; + gl->locked = false; gl->normal_to_line = Geom::Point(0,1); gl->angle = 3.14159265358979323846/2; gl->point_on_line = Geom::Point(0,0); @@ -219,6 +220,7 @@ SPCanvasItem *sp_guideline_new(SPCanvasGroup *parent, char* label, Geom::Point p normal.normalize(); gl->label = label; + gl->locked = false; gl->normal_to_line = normal; gl->angle = tan( -gl->normal_to_line[Geom::X] / gl->normal_to_line[Geom::Y]); sp_guideline_set_position(gl, point_on_line); @@ -238,6 +240,12 @@ void sp_guideline_set_label(SPGuideLine *gl, const char* label) sp_canvas_item_request_update(SP_CANVAS_ITEM (gl)); } +void sp_guideline_set_locked(SPGuideLine *gl, const bool locked) +{ + gl->locked = locked; + sp_canvas_item_request_update(SP_CANVAS_ITEM (gl)); +} + void sp_guideline_set_position(SPGuideLine *gl, Geom::Point point_on_line) { gl->point_on_line = point_on_line; diff --git a/src/display/guideline.h b/src/display/guideline.h index 2d9a87d9b..778517f1d 100644 --- a/src/display/guideline.h +++ b/src/display/guideline.h @@ -32,6 +32,7 @@ struct SPGuideLine { guint32 rgba; char* label; + bool locked; Geom::Point normal_to_line; Geom::Point point_on_line; double angle; @@ -51,6 +52,7 @@ GType sp_guideline_get_type(); SPCanvasItem *sp_guideline_new(SPCanvasGroup *parent, char* label, Geom::Point point_on_line, Geom::Point normal); void sp_guideline_set_label(SPGuideLine *gl, const char* label); +void sp_guideline_set_locked(SPGuideLine *gl, const bool locked); void sp_guideline_set_position(SPGuideLine *gl, Geom::Point point_on_line); void sp_guideline_set_normal(SPGuideLine *gl, Geom::Point normal_to_line); void sp_guideline_set_color(SPGuideLine *gl, unsigned int rgba); diff --git a/src/sp-guide.cpp b/src/sp-guide.cpp index bbdf5f260..fd07f76ef 100644 --- a/src/sp-guide.cpp +++ b/src/sp-guide.cpp @@ -43,6 +43,7 @@ #include <2geom/angle.h> #include "document.h" #include "document-undo.h" +#include "helper-fns.h" #include "verbs.h" using Inkscape::DocumentUndo; @@ -51,6 +52,7 @@ using std::vector; SPGuide::SPGuide() : SPObject() , label(NULL) + , locked(0) , views(NULL) , normal_to_line(Geom::Point(0.,1.)) , point_on_line(Geom::Point(0.,0.)) @@ -73,6 +75,7 @@ void SPGuide::build(SPDocument *document, Inkscape::XML::Node *repr) this->readAttr( "inkscape:color" ); this->readAttr( "inkscape:label" ); + this->readAttr( "inkscape:locked" ); this->readAttr( "orientation" ); this->readAttr( "position" ); @@ -113,6 +116,12 @@ void SPGuide::set(unsigned int key, const gchar *value) { this->set_label(this->label, false); break; + case SP_ATTR_INKSCAPE_LOCKED: + this->locked = helperfns_read_bool(value, false); + if (value) { + this->set_locked(this->locked, false); + } + break; case SP_ATTR_ORIENTATION: { if (value && !strcmp(value, "horizontal")) { @@ -339,6 +348,9 @@ double SPGuide::getDistanceFrom(Geom::Point const &pt) const */ void SPGuide::moveto(Geom::Point const point_on_line, bool const commit) { + if(this->locked) { + return; + } for (GSList *l = views; l != NULL; l = l->next) { sp_guideline_set_position(SP_GUIDELINE(l->data), point_on_line); } @@ -385,6 +397,9 @@ void SPGuide::moveto(Geom::Point const point_on_line, bool const commit) */ void SPGuide::set_normal(Geom::Point const normal_to_line, bool const commit) { + if(this->locked) { + return; + } for (GSList *l = this->views; l != NULL; l = l->next) { sp_guideline_set_normal(SP_GUIDELINE(l->data), normal_to_line); } @@ -423,6 +438,18 @@ void SPGuide::set_color(const unsigned r, const unsigned g, const unsigned b, bo } } +void SPGuide::set_locked(const bool locked, bool const commit) +{ + this->locked = locked; + if (views) { + sp_guideline_set_locked(SP_GUIDELINE(views->data), locked); + } + + if (commit) { + getRepr()->setAttribute("inkscape:locked", g_strdup(locked ? "true" : "false")); + } +} + void SPGuide::set_label(const char* label, bool const commit) { if (views) { @@ -482,6 +509,7 @@ char* SPGuide::description(bool const verbose) const descr = g_strconcat(oldDescr, shortcuts, NULL); g_free(oldDescr); } + g_free(shortcuts); } diff --git a/src/sp-guide.h b/src/sp-guide.h index 382ea56f0..1ad415e85 100644 --- a/src/sp-guide.h +++ b/src/sp-guide.h @@ -53,6 +53,9 @@ public: void set_label(const char* label, bool const commit); char const* getLabel() const { return label; } + void set_locked(const bool locked, bool const commit); + bool getLocked() const { return locked; } + static SPGuide *createSPGuide(SPDocument *doc, Geom::Point const &pt1, Geom::Point const &pt2); void showSPGuide(SPCanvasGroup *group, GCallback handler); @@ -77,6 +80,7 @@ protected: virtual void set(unsigned int key, const char* value); char* label; + bool locked; GSList *views; // contains an object of type SPGuideline (see display/guideline.cpp for definition) Geom::Point normal_to_line; Geom::Point point_on_line; diff --git a/src/ui/dialog/guides.cpp b/src/ui/dialog/guides.cpp index af8e2cc31..4951cf39c 100644 --- a/src/ui/dialog/guides.cpp +++ b/src/ui/dialog/guides.cpp @@ -44,6 +44,7 @@ namespace Dialogs { GuidelinePropertiesDialog::GuidelinePropertiesDialog(SPGuide *guide, SPDesktop *desktop) : _desktop(desktop), _guide(guide), + _locked_toggle(_("Lo_cked"), _("Lock the movement of guides")), _relative_toggle(_("Rela_tive change"), _("Move and/or rotate the guide relative to current settings")), _spin_button_x(C_("Guides", "_X:"), "", UNIT_TYPE_LINEAR, "", "", &_unit_menu), _spin_button_y(C_("Guides", "_Y:"), "", UNIT_TYPE_LINEAR, "", "", &_unit_menu), @@ -100,6 +101,9 @@ void GuidelinePropertiesDialog::_onOK() double rad_angle = Geom::deg_to_rad( deg_angle ); normal = Geom::rot90(Geom::Point::polar(rad_angle, 1.0)); } + //To allow reposition from dialog + _guide->set_locked(false, true); + _guide->set_normal(normal, true); double const points_x = _spin_button_x.getValue("px"); @@ -113,6 +117,11 @@ void GuidelinePropertiesDialog::_onOK() const gchar* name = g_strdup( _label_entry.getEntry()->get_text().c_str() ); _guide->set_label(name, true); + + const bool locked = _locked_toggle.get_active(); + + _guide->set_locked(locked, true); + g_free((gpointer) name); #if WITH_GTKMM_3_0 @@ -269,6 +278,12 @@ void GuidelinePropertiesDialog::_setup() { _relative_toggle.set_valign(Gtk::ALIGN_FILL); _relative_toggle.set_hexpand(); _layout_table.attach(_relative_toggle, 1, 7, 2, 1); + + // locked radio button + _locked_toggle.set_halign(Gtk::ALIGN_FILL); + _locked_toggle.set_valign(Gtk::ALIGN_FILL); + _locked_toggle.set_hexpand(); + _layout_table.attach(_locked_toggle, 1, 8, 2, 1); #else _layout_table.attach(_spin_angle, 1, 3, 6, 7, Gtk::EXPAND | Gtk::FILL, Gtk::FILL); @@ -276,11 +291,18 @@ void GuidelinePropertiesDialog::_setup() { // mode radio button _layout_table.attach(_relative_toggle, 1, 3, 7, 8, Gtk::EXPAND | Gtk::FILL, Gtk::FILL); + + // locked radio button + _layout_table.attach(_locked_toggle, + 1, 3, 8, 9, Gtk::EXPAND | Gtk::FILL, Gtk::FILL); #endif _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"; + _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) g_signal_connect_swapped(G_OBJECT(_spin_button_x.getWidget()->gobj()), "activate", G_CALLBACK(gtk_window_activate_default), gobj()); diff --git a/src/ui/dialog/guides.h b/src/ui/dialog/guides.h index 4ff7b4fde..5dce0d6ed 100644 --- a/src/ui/dialog/guides.h +++ b/src/ui/dialog/guides.h @@ -79,6 +79,7 @@ private: Gtk::Label _label_name; Gtk::Label _label_descr; + Inkscape::UI::Widget::CheckButton _locked_toggle; Inkscape::UI::Widget::CheckButton _relative_toggle; static bool _relative_toggle_status; // remember the status of the _relative_toggle_status button across instances Inkscape::UI::Widget::UnitMenu _unit_menu; -- cgit v1.2.3 From dc6693bd22141b4bcecdc023bebf826f08baa0de Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Wed, 2 Dec 2015 18:39:59 +0100 Subject: Reorder attribute lock to better position (bzr r14500.1.2) --- src/attributes.cpp | 2 +- src/attributes.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/attributes.cpp b/src/attributes.cpp index 5da75e348..853e22345 100644 --- a/src/attributes.cpp +++ b/src/attributes.cpp @@ -116,7 +116,6 @@ static SPStyleProp const props[] = { {SP_ATTR_INKSCAPE_SNAP_PAGE_BORDER, "inkscape:snap-page"}, {SP_ATTR_INKSCAPE_CURRENT_LAYER, "inkscape:current-layer"}, {SP_ATTR_INKSCAPE_DOCUMENT_UNITS, "inkscape:document-units"}, // This setting sets the Display units, *not* the units used in SVG - {SP_ATTR_INKSCAPE_LOCKED, "inkscape:locked"}, {SP_ATTR_UNITS, "units"}, {SP_ATTR_INKSCAPE_CONNECTOR_SPACING, "inkscape:connector-spacing"}, /* SPColorProfile */ @@ -127,6 +126,7 @@ static SPStyleProp const props[] = { {SP_ATTR_ORIENTATION, "orientation"}, {SP_ATTR_POSITION, "position"}, {SP_ATTR_INKSCAPE_COLOR, "inkscape:color"}, + {SP_ATTR_INKSCAPE_LOCKED, "inkscape:locked"}, /* SPImage */ {SP_ATTR_X, "x"}, {SP_ATTR_Y, "y"}, diff --git a/src/attributes.h b/src/attributes.h index d5bb20ca3..bb15590a1 100644 --- a/src/attributes.h +++ b/src/attributes.h @@ -118,7 +118,6 @@ enum SPAttributeEnum { SP_ATTR_INKSCAPE_SNAP_PAGE_BORDER, SP_ATTR_INKSCAPE_CURRENT_LAYER, SP_ATTR_INKSCAPE_DOCUMENT_UNITS, - SP_ATTR_INKSCAPE_LOCKED, SP_ATTR_UNITS, SP_ATTR_INKSCAPE_CONNECTOR_SPACING, /* SPColorProfile */ @@ -129,6 +128,7 @@ enum SPAttributeEnum { SP_ATTR_ORIENTATION, SP_ATTR_POSITION, SP_ATTR_INKSCAPE_COLOR, + SP_ATTR_INKSCAPE_LOCKED, /* SPImage */ SP_ATTR_X, SP_ATTR_Y, -- cgit v1.2.3 From af5c1ec831e2f225364717c7dc03d88579850b85 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Thu, 3 Dec 2015 18:55:52 +0100 Subject: Added no highlight and cross icon on locked guides (bzr r14500.1.4) --- src/desktop-events.cpp | 3 +++ src/display/guideline.cpp | 3 ++- src/sp-guide.cpp | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/desktop-events.cpp b/src/desktop-events.cpp index b685dacbf..42e7c2fb6 100644 --- a/src/desktop-events.cpp +++ b/src/desktop-events.cpp @@ -531,6 +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()){ + guide_cursor = gdk_cursor_new (GDK_X_CURSOR); + } 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/display/guideline.cpp b/src/display/guideline.cpp index 0a564f550..24353c681 100644 --- a/src/display/guideline.cpp +++ b/src/display/guideline.cpp @@ -18,6 +18,7 @@ #include <2geom/transforms.h> #include "sp-canvas-util.h" #include "sp-ctrlpoint.h" +#include "sp-ctrlquadr.h" #include "guideline.h" #include "display/cairo-utils.h" @@ -180,7 +181,7 @@ static void sp_guideline_update(SPCanvasItem *item, Geom::Affine const &affine, sp_ctrlpoint_set_coords(gl->origin, gl->point_on_line); sp_canvas_item_request_update(SP_CANVAS_ITEM (gl->origin)); - + Geom::Point pol_transformed = gl->point_on_line*affine; if (gl->is_horizontal()) { sp_canvas_update_bbox (item, -1000000, round(pol_transformed[Geom::Y] - 16), 1000000, round(pol_transformed[Geom::Y] + 1)); diff --git a/src/sp-guide.cpp b/src/sp-guide.cpp index fd07f76ef..e37f0b470 100644 --- a/src/sp-guide.cpp +++ b/src/sp-guide.cpp @@ -118,6 +118,7 @@ void SPGuide::set(unsigned int key, const gchar *value) { break; case SP_ATTR_INKSCAPE_LOCKED: this->locked = helperfns_read_bool(value, false); + this->hicolor = this->color; if (value) { this->set_locked(this->locked, false); } -- cgit v1.2.3 From 1cab611c173b2903512268994343f58ef83883ec Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Thu, 3 Dec 2015 21:51:29 +0100 Subject: Add global lock guides to the rulers (bzr r14500.1.5) --- src/desktop-events.cpp | 4 ++- src/desktop.cpp | 7 +++++ src/desktop.h | 1 + src/sp-guide.cpp | 4 ++- src/ui/dialog/guides.cpp | 6 ++++- src/verbs.cpp | 5 ++++ src/verbs.h | 1 + src/widgets/desktop-widget.cpp | 58 +++++++++++++++++++++++++++++++++++++----- src/widgets/desktop-widget.h | 3 +++ 9 files changed, 80 insertions(+), 9 deletions(-) (limited to 'src') 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; -- cgit v1.2.3 From dad44686e614958c26cfa2056891ebe9ea6db0dc Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Thu, 3 Dec 2015 22:15:42 +0100 Subject: String desc fix (bzr r14500.1.6) --- src/verbs.cpp | 4 ++-- src/widgets/desktop-widget.cpp | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/verbs.cpp b/src/verbs.cpp index 029deac3c..6eace6048 100644 --- a/src/verbs.cpp +++ b/src/verbs.cpp @@ -2880,8 +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_GUIDES_LOCK_TOGGLE, "GuidesLockToggle", N_("Lock all guides"), + N_("Lock all 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/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index ee8c3fb26..c2e69e469 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -1077,8 +1077,6 @@ void update_guides_lock( GtkWidget */*button*/, gpointer data ) 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")); } } -- cgit v1.2.3 From e649a1d9cd29f39b2d1cf343cec97ccebce9cf08 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Sat, 5 Dec 2015 23:55:57 +0100 Subject: Changed from Desktop to namedview to handle multiples documents (bzr r14500.1.8) --- src/attributes-test.h | 1 + src/attributes.cpp | 1 + src/attributes.h | 1 + src/desktop-events.cpp | 13 +++++++------ src/desktop.cpp | 7 ------- src/desktop.h | 1 - src/display/guideline.cpp | 1 - src/pixmaps/cursor-select.xpm | 38 ++++++++++++++++++++++++++++++++++++++ src/sp-guide.cpp | 5 +---- src/sp-namedview.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ src/sp-namedview.h | 2 ++ src/ui/dialog/guides.cpp | 3 +-- src/verbs.cpp | 9 ++++----- src/verbs.h | 2 +- src/widgets/desktop-widget.cpp | 29 ++++++++++++++++------------- 15 files changed, 115 insertions(+), 40 deletions(-) create mode 100644 src/pixmaps/cursor-select.xpm (limited to 'src') diff --git a/src/attributes-test.h b/src/attributes-test.h index e197deedf..1fc3972c0 100644 --- a/src/attributes-test.h +++ b/src/attributes-test.h @@ -490,6 +490,7 @@ struct {char const *attr; bool supported;} const all_attrs[] = { {"showgrid", true}, // {"gridtype", true}, {"showguides", true}, +// {"inkscape:lockguides", false}, //not sure about uncomment {"gridtolerance", true}, {"guidetolerance", true}, {"objecttolerance", true}, diff --git a/src/attributes.cpp b/src/attributes.cpp index 9a779836b..ad6a51c88 100644 --- a/src/attributes.cpp +++ b/src/attributes.cpp @@ -117,6 +117,7 @@ static SPStyleProp const props[] = { {SP_ATTR_INKSCAPE_SNAP_PAGE_BORDER, "inkscape:snap-page"}, {SP_ATTR_INKSCAPE_CURRENT_LAYER, "inkscape:current-layer"}, {SP_ATTR_INKSCAPE_DOCUMENT_UNITS, "inkscape:document-units"}, // This setting sets the Display units, *not* the units used in SVG + {SP_ATTR_INKSCAPE_LOCKGUIDES, "inkscape:lockguides"}, {SP_ATTR_UNITS, "units"}, {SP_ATTR_INKSCAPE_CONNECTOR_SPACING, "inkscape:connector-spacing"}, /* SPColorProfile */ diff --git a/src/attributes.h b/src/attributes.h index f0d3d1228..03df0cb94 100644 --- a/src/attributes.h +++ b/src/attributes.h @@ -119,6 +119,7 @@ enum SPAttributeEnum { SP_ATTR_INKSCAPE_SNAP_PAGE_BORDER, SP_ATTR_INKSCAPE_CURRENT_LAYER, SP_ATTR_INKSCAPE_DOCUMENT_UNITS, + SP_ATTR_INKSCAPE_LOCKGUIDES, SP_ATTR_UNITS, SP_ATTR_INKSCAPE_CONNECTOR_SPACING, /* SPColorProfile */ diff --git a/src/desktop-events.cpp b/src/desktop-events.cpp index f86cb2991..6968a19f8 100644 --- a/src/desktop-events.cpp +++ b/src/desktop-events.cpp @@ -50,6 +50,8 @@ #include "ui/tools-switch.h" #include "verbs.h" #include "widgets/desktop-widget.h" +#include "sp-cursor.h" +#include "pixmaps/cursor-select.xpm" #include "xml/repr.h" using Inkscape::DocumentUndo; @@ -514,8 +516,9 @@ gint sp_dt_guide_event(SPCanvasItem *item, GdkEvent *event, gpointer data) break; case GDK_ENTER_NOTIFY: { - sp_guideline_set_color(SP_GUIDELINE(item), guide->getHiColor()); - + if (!guide->getLocked()) { + sp_guideline_set_color(SP_GUIDELINE(item), guide->getHiColor()); + } // set move or rotate cursor Geom::Point const event_w(event->crossing.x, event->crossing.y); @@ -531,10 +534,8 @@ gint sp_dt_guide_event(SPCanvasItem *item, GdkEvent *event, gpointer data) } else { GdkCursor *guide_cursor; guide_cursor = gdk_cursor_new (GDK_HAND1); - 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); + 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) diff --git a/src/desktop.cpp b/src/desktop.cpp index 0ddd77594..7b20bcb9f 100644 --- a/src/desktop.cpp +++ b/src/desktop.cpp @@ -1467,13 +1467,6 @@ 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 6d3b96223..754e09766 100644 --- a/src/desktop.h +++ b/src/desktop.h @@ -386,7 +386,6 @@ public: void toggleColorProfAdjust(); bool colorProfAdjustEnabled(); - void toggleGuidesLock(); void toggleGrids(); void toggleSnapGlobal(); bool gridsEnabled() const { return grids_visible; }; diff --git a/src/display/guideline.cpp b/src/display/guideline.cpp index 24353c681..2df0b3f26 100644 --- a/src/display/guideline.cpp +++ b/src/display/guideline.cpp @@ -18,7 +18,6 @@ #include <2geom/transforms.h> #include "sp-canvas-util.h" #include "sp-ctrlpoint.h" -#include "sp-ctrlquadr.h" #include "guideline.h" #include "display/cairo-utils.h" diff --git a/src/pixmaps/cursor-select.xpm b/src/pixmaps/cursor-select.xpm new file mode 100644 index 000000000..569573618 --- /dev/null +++ b/src/pixmaps/cursor-select.xpm @@ -0,0 +1,38 @@ +/* XPM */ +static char const *cursor_select_xpm[] = { +"32 32 3 1", +" c None", +". c #000000", +"+ c #FFFFFF", +". ", +".. ", +".+. ", +".++. ", +".+++. ", +".++++. ", +".+++++. ", +".++++++. ", +".+++++++. ", +".++++++++. ", +".+++++++++. ", +".++++++..... ", +".++++++. ", +".++..++. ", +".+. .+++. ", +".. .++. ", +". .+++. ", +" .+. ", +" .. ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/src/sp-guide.cpp b/src/sp-guide.cpp index 00ded2a75..fd07f76ef 100644 --- a/src/sp-guide.cpp +++ b/src/sp-guide.cpp @@ -118,7 +118,6 @@ void SPGuide::set(unsigned int key, const gchar *value) { break; case SP_ATTR_INKSCAPE_LOCKED: this->locked = helperfns_read_bool(value, false); - this->hicolor = this->color; if (value) { this->set_locked(this->locked, false); } @@ -349,9 +348,7 @@ double SPGuide::getDistanceFrom(Geom::Point const &pt) const */ void SPGuide::moveto(Geom::Point const point_on_line, bool const commit) { - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - bool global_lock = prefs->getBool("/options/guides/guides_lock", false); - if(this->locked || global_lock) { + if(this->locked) { return; } for (GSList *l = views; l != NULL; l = l->next) { diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp index b8554f352..9b34a3760 100644 --- a/src/sp-namedview.cpp +++ b/src/sp-namedview.cpp @@ -51,7 +51,9 @@ using Inkscape::Util::unit_table; #define DEFAULTPAGECOLOR 0xffffff00 static void sp_namedview_setup_guides(SPNamedView * nv); +static void sp_namedview_lock_guides(SPNamedView * nv); static void sp_namedview_show_single_guide(SPGuide* guide, bool show); +static void sp_namedview_lock_single_guide(SPGuide* guide, bool show); static gboolean sp_str_to_bool(const gchar *str); static gboolean sp_nv_read_opacity(const gchar *str, guint32 *color); @@ -79,6 +81,7 @@ SPNamedView::SPNamedView() : SPObjectGroup(), snap_manager(this) { this->editable = TRUE; this->showguides = TRUE; + this->lockguides = false; this->grids_visible = false; this->showborder = TRUE; this->showpageshadow = TRUE; @@ -240,6 +243,7 @@ void SPNamedView::build(SPDocument *document, Inkscape::XML::Node *repr) { this->readAttr( "inkscape:snap-page" ); this->readAttr( "inkscape:current-layer" ); this->readAttr( "inkscape:connector-spacing" ); + this->readAttr( "inkscape:lockguides" ); /* Construct guideline list */ for (SPObject *o = this->firstChild() ; o; o = o->getNext() ) { @@ -600,6 +604,11 @@ void SPNamedView::set(unsigned int key, const gchar* value) { this->requestModified(SP_OBJECT_MODIFIED_FLAG); break; } + case SP_ATTR_INKSCAPE_LOCKGUIDES: + this->lockguides = value ? sp_str_to_bool(value) : FALSE; + sp_namedview_lock_guides(this); + this->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; default: SPObjectGroup::set(key, value); break; @@ -676,6 +685,7 @@ void SPNamedView::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node *r } sp_namedview_show_single_guide(SP_GUIDE(g), this->showguides); + sp_namedview_lock_single_guide(SP_GUIDE(g), this->lockguides); } } } @@ -733,6 +743,7 @@ void SPNamedView::show(SPDesktop *desktop) SP_GUIDE(l->data)->sensitize(desktop->getCanvas(), TRUE); } sp_namedview_show_single_guide(SP_GUIDE(l->data), showguides); + sp_namedview_lock_single_guide(SP_GUIDE(l->data), lockguides); } views = g_slist_prepend(views, desktop); @@ -952,6 +963,13 @@ static void sp_namedview_setup_guides(SPNamedView *nv) } } +static void sp_namedview_lock_guides(SPNamedView *nv) +{ + for (GSList *l = nv->guides; l != NULL; l = l->next) { + sp_namedview_lock_single_guide(SP_GUIDE(l->data), nv->lockguides); + } +} + static void sp_namedview_show_single_guide(SPGuide* guide, bool show) { if (show) { @@ -961,6 +979,11 @@ static void sp_namedview_show_single_guide(SPGuide* guide, bool show) } } +static void sp_namedview_lock_single_guide(SPGuide* guide, bool locked) +{ + guide->set_locked(locked, true); +} + void sp_namedview_toggle_guides(SPDocument *doc, Inkscape::XML::Node *repr) { unsigned int v; @@ -979,6 +1002,24 @@ 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) +{ + unsigned int v; + unsigned int set = sp_repr_get_boolean(repr, "inkscape:lockguides", &v); + if (!set) { // hide guides if not specified, for backwards compatibility + v = true; + } else { + v = !v; + } + + bool saved = DocumentUndo::getUndoSensitive(doc); + DocumentUndo::setUndoSensitive(doc, false); + sp_repr_set_boolean(repr, "inkscape:lockguides", v); + DocumentUndo::setUndoSensitive(doc, saved); + + doc->setModifiedSinceSave(); +} + void sp_namedview_show_grids(SPNamedView * namedview, bool show, bool dirty_document) { namedview->grids_visible = show; @@ -1077,6 +1118,7 @@ void SPNamedView::setGuides(bool v) g_assert(this->getRepr() != NULL); sp_repr_set_boolean(this->getRepr(), "showguides", v); sp_repr_set_boolean(this->getRepr(), "inkscape:guide-bbox", v); + sp_repr_set_boolean(this->getRepr(), "inkscape:locked", false); } bool SPNamedView::getGuides() diff --git a/src/sp-namedview.h b/src/sp-namedview.h index f1ecc12d3..a586ea71c 100644 --- a/src/sp-namedview.h +++ b/src/sp-namedview.h @@ -44,6 +44,7 @@ public: unsigned int editable : 1; unsigned int showguides : 1; + unsigned int lockguides : 1; unsigned int showborder : 1; unsigned int showpageshadow : 1; unsigned int borderlayer : 2; @@ -122,6 +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_show_grids(SPNamedView *namedview, bool show, bool dirty_document); Inkscape::CanvasGrid * sp_namedview_get_first_enabled_grid(SPNamedView *namedview); diff --git a/src/ui/dialog/guides.cpp b/src/ui/dialog/guides.cpp index faba71615..e0efcde36 100644 --- a/src/ui/dialog/guides.cpp +++ b/src/ui/dialog/guides.cpp @@ -300,8 +300,7 @@ void GuidelinePropertiesDialog::_setup() { _relative_toggle.signal_toggled().connect(sigc::mem_fun(*this, &GuidelinePropertiesDialog::_modeChanged)); _relative_toggle.set_active(_relative_toggle_status); - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - bool global_guides_lock = prefs->getBool("/options/guides/guides_lock", false); + bool global_guides_lock = _desktop->namedview->lockguides; if(global_guides_lock){ _locked_toggle.set_sensitive(false); } diff --git a/src/verbs.cpp b/src/verbs.cpp index 6eace6048..afcc37bc4 100644 --- a/src/verbs.cpp +++ b/src/verbs.cpp @@ -1938,6 +1938,9 @@ 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; @@ -1989,9 +1992,6 @@ 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"); @@ -2831,6 +2831,7 @@ 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), @@ -2880,8 +2881,6 @@ 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 all guides"), - N_("Lock all 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 c50829525..e1249684b 100644 --- a/src/verbs.h +++ b/src/verbs.h @@ -249,6 +249,7 @@ 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, @@ -277,7 +278,6 @@ 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 c2e69e469..901b4d328 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -393,7 +393,7 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw ) 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 ); + 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 ) { @@ -405,12 +405,6 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw ) 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 */ @@ -1006,7 +1000,15 @@ 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() ); } @@ -1073,11 +1075,12 @@ 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")); - } + + 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 defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2) -- cgit v1.2.3 From 266cd1e5c43e6a46cd37f7db5138270b80d0944e Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Sun, 6 Dec 2015 22:39:31 +0100 Subject: Fixes UX pointed in suv review (bzr r14500.1.9) --- src/desktop-events.cpp | 3 ++ src/desktop.cpp | 5 +++ src/desktop.h | 2 + src/menus-skeleton.h | 1 + src/sp-namedview.cpp | 3 +- src/sp-namedview.h | 2 +- src/ui/interface.cpp | 3 ++ src/ui/view/edit-widget-interface.h | 3 ++ src/verbs.cpp | 13 +++--- src/verbs.h | 2 +- src/widgets/desktop-widget.cpp | 81 ++++++++++++++++++++----------------- src/widgets/desktop-widget.h | 6 ++- 12 files changed, 75 insertions(+), 49 deletions(-) (limited to 'src') 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[] = " \n" " \n" " \n" +" \n" " \n" " \n" " \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(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() -- cgit v1.2.3 From 21c7070f90ef59fb5b6782e7adabd3d0f79e174d Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Mon, 7 Dec 2015 19:58:44 +0100 Subject: Add Martin Owens radious patch (bzr r14500.1.11) --- src/display/guideline.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/display/guideline.cpp b/src/display/guideline.cpp index 2df0b3f26..e1a115353 100644 --- a/src/display/guideline.cpp +++ b/src/display/guideline.cpp @@ -178,6 +178,11 @@ static void sp_guideline_update(SPCanvasItem *item, Geom::Affine const &affine, gl->affine = affine; + if (gl->locked) { + gl->origin->radius = 1; + } else { + gl->origin->radius = 3; + } sp_ctrlpoint_set_coords(gl->origin, gl->point_on_line); sp_canvas_item_request_update(SP_CANVAS_ITEM (gl->origin)); @@ -190,6 +195,7 @@ static void sp_guideline_update(SPCanvasItem *item, Geom::Affine const &affine, //TODO: labels in angled guidelines are not showing up for some reason. sp_canvas_update_bbox (item, -1000000, -1000000, 1000000, 1000000); } + } // Returns 0.0 if point is on the guideline -- cgit v1.2.3 From 351afb17c6a579d3d1bb03500433b92b00123c03 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Cenoz Date: Mon, 7 Dec 2015 20:59:06 +0100 Subject: Add rect to SP Control point on locked guides (bzr r14500.1.13) --- src/display/guideline.cpp | 6 ++++-- src/display/sp-ctrlpoint.cpp | 28 +++++++++++++++++++--------- src/display/sp-ctrlpoint.h | 6 ++++-- src/ui/control-manager.cpp | 2 +- 4 files changed, 28 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/display/guideline.cpp b/src/display/guideline.cpp index e1a115353..4b7ea59ab 100644 --- a/src/display/guideline.cpp +++ b/src/display/guideline.cpp @@ -179,9 +179,11 @@ static void sp_guideline_update(SPCanvasItem *item, Geom::Affine const &affine, gl->affine = affine; if (gl->locked) { - gl->origin->radius = 1; + sp_ctrlpoint_set_circle(gl->origin, false); + sp_ctrlpoint_set_lenght(gl->origin, 6); } else { - gl->origin->radius = 3; + sp_ctrlpoint_set_circle(gl->origin, true); + sp_ctrlpoint_set_lenght(gl->origin, 4); } sp_ctrlpoint_set_coords(gl->origin, gl->point_on_line); sp_canvas_item_request_update(SP_CANVAS_ITEM (gl->origin)); diff --git a/src/display/sp-ctrlpoint.cpp b/src/display/sp-ctrlpoint.cpp index 1082cb1b3..19dbbc130 100644 --- a/src/display/sp-ctrlpoint.cpp +++ b/src/display/sp-ctrlpoint.cpp @@ -42,7 +42,8 @@ sp_ctrlpoint_init (SPCtrlPoint *ctrlpoint) ctrlpoint->rgba = 0x0000ff7f; ctrlpoint->pt[Geom::X] = ctrlpoint->pt[Geom::Y] = 0.0; ctrlpoint->item=NULL; - ctrlpoint->radius = 2; + ctrlpoint->lenght = 4; + ctrlpoint->is_circle = true; } static void sp_ctrlpoint_destroy(SPCanvasItem *object) @@ -75,8 +76,11 @@ sp_ctrlpoint_render (SPCanvasItem *item, SPCanvasBuf *buf) cairo_new_path(buf->ct); Geom::Point pt = cp->pt * cp->affine; - - cairo_arc(buf->ct, pt[Geom::X] - buf->rect.left(), pt[Geom::Y] - buf->rect.top(), cp->radius, 0.0, 2 * M_PI); + if( cp->is_circle ) { + cairo_arc(buf->ct, pt[Geom::X] - buf->rect.left(), pt[Geom::Y] - buf->rect.top(), cp->lenght/2.0, 0.0, 2 * M_PI); + } else { + cairo_rectangle(buf->ct, pt[Geom::X] - buf->rect.left() - cp->lenght/2.0, pt[Geom::Y] - buf->rect.top() - cp->lenght/2.0 , cp->lenght, cp->lenght); + } cairo_stroke(buf->ct); } @@ -96,10 +100,10 @@ static void sp_ctrlpoint_update(SPCanvasItem *item, Geom::Affine const &affine, Geom::Point pt = cp->pt * affine; - item->x1 = pt[Geom::X] - cp->radius; - item->y1 = pt[Geom::Y] - cp->radius; - item->x2 = pt[Geom::X] + cp->radius; - item->y2 = pt[Geom::Y] + cp->radius; + item->x1 = pt[Geom::X] - cp->lenght; + item->y1 = pt[Geom::Y] - cp->lenght; + item->x2 = pt[Geom::X] + cp->lenght; + item->y2 = pt[Geom::Y] + cp->lenght; item->canvas->requestRedraw((int)item->x1 - 15, (int)item->y1 - 15, (int)item->x1 + 15, (int)item->y1 + 15); @@ -142,9 +146,15 @@ sp_ctrlpoint_set_coords (SPCtrlPoint *cp, const Geom::Point pt) } void -sp_ctrlpoint_set_radius (SPCtrlPoint *cp, const double r) +sp_ctrlpoint_set_lenght (SPCtrlPoint *cp, const double r) +{ + cp->lenght = r; +} + +void +sp_ctrlpoint_set_circle (SPCtrlPoint *cp, const bool circle) { - cp->radius = r; + cp->is_circle = circle; } /* diff --git a/src/display/sp-ctrlpoint.h b/src/display/sp-ctrlpoint.h index a7a5475b7..02e61caf0 100644 --- a/src/display/sp-ctrlpoint.h +++ b/src/display/sp-ctrlpoint.h @@ -25,7 +25,8 @@ struct SPCtrlPoint : public SPCanvasItem { guint32 rgba; Geom::Point pt; Geom::Affine affine; - double radius; + double lenght; + bool is_circle; }; struct SPCtrlPointClass : public SPCanvasItemClass{}; @@ -34,7 +35,8 @@ GType sp_ctrlpoint_get_type (void); void sp_ctrlpoint_set_color (SPCtrlPoint *cp, guint32 rgba); void sp_ctrlpoint_set_coords (SPCtrlPoint *cp, const gdouble x, const gdouble y); void sp_ctrlpoint_set_coords (SPCtrlPoint *cp, const Geom::Point pt); -void sp_ctrlpoint_set_radius (SPCtrlPoint *cp, const double r); +void sp_ctrlpoint_set_lenght (SPCtrlPoint *cp, const double r); +void sp_ctrlpoint_set_circle (SPCtrlPoint *cp, const bool circle); diff --git a/src/ui/control-manager.cpp b/src/ui/control-manager.cpp index 5a3c5a496..10190a6a7 100644 --- a/src/ui/control-manager.cpp +++ b/src/ui/control-manager.cpp @@ -298,7 +298,7 @@ void ControlManagerImpl::updateItem(SPCanvasItem *item) double target = _sizeTable[item->ctrlType][_size - 1]; if ((item->ctrlType == CTRL_TYPE_ORIGIN) && SP_IS_CTRLPOINT(item)) { - sp_ctrlpoint_set_radius(SP_CTRLPOINT(item), target / 2.0); + sp_ctrlpoint_set_lenght(SP_CTRLPOINT(item), target ); } else { if (_sizeChangers.count(item->ctrlType) && _manager.isSelected(item)) { target += 2; -- cgit v1.2.3