summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2015-12-05 22:55:57 +0000
committerjabiertxof <jabier.arraiza@marker.es>2015-12-05 22:55:57 +0000
commite649a1d9cd29f39b2d1cf343cec97ccebce9cf08 (patch)
treeecd97a46bd8a11da9941374d93eb1c32240394a6 /src
parentupdate to trunk (diff)
downloadinkscape-e649a1d9cd29f39b2d1cf343cec97ccebce9cf08.tar.gz
inkscape-e649a1d9cd29f39b2d1cf343cec97ccebce9cf08.zip
Changed from Desktop to namedview to handle multiples documents
(bzr r14500.1.8)
Diffstat (limited to 'src')
-rw-r--r--src/attributes-test.h1
-rw-r--r--src/attributes.cpp1
-rw-r--r--src/attributes.h1
-rw-r--r--src/desktop-events.cpp13
-rw-r--r--src/desktop.cpp7
-rw-r--r--src/desktop.h1
-rw-r--r--src/display/guideline.cpp1
-rw-r--r--src/pixmaps/cursor-select.xpm38
-rw-r--r--src/sp-guide.cpp5
-rw-r--r--src/sp-namedview.cpp42
-rw-r--r--src/sp-namedview.h2
-rw-r--r--src/ui/dialog/guides.cpp3
-rw-r--r--src/verbs.cpp9
-rw-r--r--src/verbs.h2
-rw-r--r--src/widgets/desktop-widget.cpp29
15 files changed, 115 insertions, 40 deletions
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)