Code

change API: separate functions creating a blur filter, one for a given item, another...
[inkscape.git] / src / dialogs / layer-properties.cpp
index 5be24993a9929cc273183c86eed0184c1cca0ec5..bd95fbc719b9c6c9ff2857c69f11a24000f6acdf 100644 (file)
@@ -22,6 +22,7 @@
 #include "inkscape.h"
 #include "desktop.h"
 #include "document.h"
+#include "layer-manager.h"
 #include "message-stack.h"
 #include "desktop-handles.h"
 #include "sp-object.h"
@@ -34,11 +35,8 @@ namespace UI {
 namespace Dialogs {
 
 LayerPropertiesDialog::LayerPropertiesDialog()
-: _strategy(NULL), _desktop(NULL), _layer(NULL)
+: _strategy(NULL), _desktop(NULL), _layer(NULL), _position_visible(false)
 {
-    GtkWidget *dlg = GTK_WIDGET(gobj());
-    g_assert(dlg);
-
     Gtk::VBox *mainVBox = get_vbox();
 
     _layout_table.set_spacings(4);
@@ -113,7 +111,8 @@ LayerPropertiesDialog::_apply()
     g_assert(_strategy != NULL);
 
     _strategy->perform(*this);
-    sp_document_done(sp_desktop_document(SP_ACTIVE_DESKTOP));
+    sp_document_done(sp_desktop_document(SP_ACTIVE_DESKTOP), SP_VERB_NONE,
+                     _("Add layer"));
 
     _close();
 }
@@ -137,8 +136,9 @@ LayerPropertiesDialog::_setup_position_controls() {
     if ( NULL == _layer || _desktop->currentRoot() == _layer ) {
         // no layers yet, so option above/below/sublayer is useless
         return;
-        }
-        
+    }
+
+    _position_visible = true;
     _dropdown_list = Gtk::ListStore::create(_dropdown_columns);
     _layer_position_combo.set_model(_dropdown_list);
     _layer_position_combo.pack_start(_label_renderer);
@@ -188,10 +188,11 @@ void LayerPropertiesDialog::Rename::setup(LayerPropertiesDialog &dialog) {
 void LayerPropertiesDialog::Rename::perform(LayerPropertiesDialog &dialog) {
     SPDesktop *desktop=dialog._desktop;
     Glib::ustring name(dialog._layer_name_entry.get_text());
-    desktop->currentLayer()->setLabel(
-        ( name.empty() ? NULL : (gchar *)name.c_str() )
+    desktop->layer_manager->renameLayer( desktop->currentLayer(),
+                                         ( name.empty() ? NULL : (gchar *)name.c_str() )
     );
-    sp_document_done(sp_desktop_document(desktop));
+    sp_document_done(sp_desktop_document(desktop), SP_VERB_NONE, 
+                     _("Rename layer"));
     // TRANSLATORS: This means "The layer has been renamed"
     desktop->messageStack()->flash(Inkscape::NORMAL_MESSAGE, _("Renamed layer"));
 }
@@ -206,14 +207,18 @@ void LayerPropertiesDialog::Create::setup(LayerPropertiesDialog &dialog) {
 void LayerPropertiesDialog::Create::perform(LayerPropertiesDialog &dialog) {
     SPDesktop *desktop=dialog._desktop;
 
-    Gtk::ListStore::iterator activeRow(dialog._layer_position_combo.get_active());
-    LayerRelativePosition position = activeRow->get_value(dialog._dropdown_columns.position);
+    LayerRelativePosition position = LPOS_ABOVE;
+    
+    if (dialog._position_visible) {
+        Gtk::ListStore::iterator activeRow(dialog._layer_position_combo.get_active());
+        position = activeRow->get_value(dialog._dropdown_columns.position);
+    }
 
     SPObject *new_layer=Inkscape::create_layer(desktop->currentRoot(), dialog._layer, position);
     
     Glib::ustring name(dialog._layer_name_entry.get_text());
     if (!name.empty()) {
-        new_layer->setLabel((gchar *)name.c_str());
+        desktop->layer_manager->renameLayer( new_layer, (gchar *)name.c_str() );
     }
     sp_desktop_selection(desktop)->clear();
     desktop->setCurrentLayer(new_layer);