Code

Adding climb and digits properties, key processing and focus handling
[inkscape.git] / src / widgets / layer-selector.cpp
index 34433e9b77005b69ad7c9ce8c4750f105fd552f5..66f4aebf4e77fd822908a38f6e0e8e3dd37ec5dd 100644 (file)
@@ -28,7 +28,9 @@
 #include "desktop.h"
 #include "document.h"
 #include "dialogs/layer-properties.h"
+#include "layer-manager.h"
 #include "xml/node-event-vector.h"
+#include "verbs.h"
 
 namespace Inkscape {
 namespace Widgets {
@@ -37,7 +39,7 @@ namespace {
 
 class AlternateIcons : public Gtk::HBox {
 public:
-    AlternateIcons(GtkIconSize size, gchar const *a, gchar const *b)
+    AlternateIcons(Inkscape::IconSize size, gchar const *a, gchar const *b)
     : _a(NULL), _b(NULL)
     {
         if (a) {
@@ -46,7 +48,7 @@ public:
             add(*_a);
         }
         if (b) {
-            _b = Gtk::manage(sp_icon_get_icon(b,size));
+            _b = Gtk::manage(sp_icon_get_icon(b, size));
             _b->set_no_show_all(true);
             add(*_b);
         }
@@ -91,7 +93,7 @@ LayerSelector::LayerSelector(SPDesktop *desktop)
 {
     AlternateIcons *label;
 
-    label = Gtk::manage(new AlternateIcons(GTK_ICON_SIZE_MENU, "visible", "hidden"));
+    label = Gtk::manage(new AlternateIcons(Inkscape::ICON_SIZE_DECORATION, "visible", "hidden"));
     _visibility_toggle.add(*label);
     _visibility_toggle.signal_toggled().connect(
         sigc::compose(
@@ -111,7 +113,7 @@ LayerSelector::LayerSelector(SPDesktop *desktop)
     _tooltips.set_tip(_visibility_toggle, _("Toggle current layer visibility"));
     pack_start(_visibility_toggle, Gtk::PACK_EXPAND_PADDING);
 
-    label = Gtk::manage(new AlternateIcons(GTK_ICON_SIZE_MENU, "lock_unlocked", "width_height_lock"));
+    label = Gtk::manage(new AlternateIcons(Inkscape::ICON_SIZE_DECORATION, "lock_unlocked", "width_height_lock"));
     _lock_toggle.add(*label);
     _lock_toggle.signal_toggled().connect(
         sigc::compose(
@@ -290,9 +292,11 @@ void LayerSelector::_setDesktopLayer() {
     SPObject *layer=_selector.get_active()->get_value(_model_columns.object);
     if ( _desktop && layer ) {
         _layer_changed_connection.block();
-        _desktop->setCurrentLayer(layer);
+
+        _desktop->layer_manager->setCurrentLayer(layer);
+
         _layer_changed_connection.unblock();
-        SP_DT_SELECTION(_desktop)->clear();
+
         _selectLayer(_desktop->currentLayer());
     }
 }
@@ -418,6 +422,18 @@ void LayerSelector::_protectUpdate(sigc::slot<void> slot) {
     _visibility_toggled_connection.block(true);
     _lock_toggled_connection.block(true);
     slot();
+
+    SPObject *layer = _desktop ? _desktop->currentLayer() : 0;
+    if ( layer ) {
+        bool wantedValue = ( SP_IS_ITEM(layer) ? SP_ITEM(layer)->isLocked() : false );
+        if ( _lock_toggle.get_active() != wantedValue ) {
+            _lock_toggle.set_active( wantedValue );
+        }
+        wantedValue = ( SP_IS_ITEM(layer) ? SP_ITEM(layer)->isHidden() : false );
+        if ( _visibility_toggle.get_active() != wantedValue ) {
+            _visibility_toggle.set_active( wantedValue );
+        }
+    }
     _visibility_toggled_connection.block(visibility_blocked);
     _lock_toggled_connection.block(lock_blocked);
 }
@@ -562,14 +578,16 @@ void LayerSelector::_prepareLabelRenderer(
 void LayerSelector::_lockLayer(bool lock) {
     if ( _layer && SP_IS_ITEM(_layer) ) {
         SP_ITEM(_layer)->setLocked(lock);
-        sp_document_maybe_done(SP_DT_DOCUMENT(_desktop), "LayerSelector:lock");
+        sp_document_done(sp_desktop_document(_desktop), SP_VERB_NONE, 
+                         lock? _("Lock layer") : _("Unlock layer"));
     }
 }
 
 void LayerSelector::_hideLayer(bool hide) {
     if ( _layer && SP_IS_ITEM(_layer) ) {
         SP_ITEM(_layer)->setHidden(hide);
-        sp_document_maybe_done(SP_DT_DOCUMENT(_desktop), "LayerSelector:hide");
+        sp_document_done(sp_desktop_document(_desktop), SP_VERB_NONE, 
+                         hide? _("Hide layer") : _("Unhide layer"));
     }
 }