Code

init matrix variable, removes compiler warnings
[inkscape.git] / src / widgets / select-toolbar.cpp
index 4230c7adb55307ed46803851e6c1f8d9867cfd2b..6bcb24d2d34459934725b73d8dd41630a6266c4a 100644 (file)
@@ -20,6 +20,8 @@
 #include "widgets/spw-utilities.h"
 #include "widgets/widget-sizes.h"
 #include "widgets/spinbutton-events.h"
+#include "widgets/icon.h"
+#include "widgets/sp-widget.h"
 
 #include "prefs-utils.h"
 #include "selection-chemistry.h"
 #include "sp-namedview.h"
 #include "toolbox.h"
 #include <glibmm/i18n.h>
-#include "widgets/sp-widget.h"
 #include "helper/unit-menu.h"
 #include "helper/units.h"
-#include "widgets/sp-widget.h"
 #include "inkscape.h"
 #include "verbs.h"
 #include "prefs-utils.h"
@@ -100,7 +100,7 @@ static void
 sp_selection_layout_widget_modify_selection(SPWidget *spw, Inkscape::Selection *selection, guint flags, gpointer data)
 {
     SPDesktop *desktop = (SPDesktop *) data;
-    if ((SP_DT_SELECTION(desktop) == selection) // only respond to changes in our desktop
+    if ((sp_desktop_selection(desktop) == selection) // only respond to changes in our desktop
         && (flags & (SP_OBJECT_MODIFIED_FLAG        |
                      SP_OBJECT_PARENT_MODIFIED_FLAG |
                      SP_OBJECT_CHILD_MODIFIED_FLAG   )))
@@ -113,7 +113,7 @@ static void
 sp_selection_layout_widget_change_selection(SPWidget *spw, Inkscape::Selection *selection, gpointer data)
 {
     SPDesktop *desktop = (SPDesktop *) data;
-    if (SP_DT_SELECTION(desktop) == selection) // only respond to changes in our desktop
+    if (sp_desktop_selection(desktop) == selection) // only respond to changes in our desktop
         sp_selection_layout_widget_update(spw, selection);
 }
 
@@ -136,8 +136,8 @@ sp_object_layout_any_value_changed(GtkAdjustment *adj, SPWidget *spw)
     gtk_object_set_data(GTK_OBJECT(spw), "update", GINT_TO_POINTER(TRUE));
 
     SPDesktop *desktop = SP_ACTIVE_DESKTOP;
-    Inkscape::Selection *selection = SP_DT_SELECTION(desktop);
-    SPDocument *document = SP_DT_DOCUMENT(desktop);
+    Inkscape::Selection *selection = sp_desktop_selection(desktop);
+    SPDocument *document = sp_desktop_document(desktop);
 
     sp_document_ensure_up_to_date (document);
     NR::Rect bbox = selection->bounds();
@@ -272,7 +272,7 @@ static gboolean aux_set_unit(SPUnitSelector *,
         return FALSE;
     }
 
-    Inkscape::Selection *selection = SP_DT_SELECTION(desktop);
+    Inkscape::Selection *selection = sp_desktop_selection(desktop);
 
     if (selection->isEmpty())
         return FALSE;
@@ -370,6 +370,22 @@ static void toggle_pattern (GtkWidget *button, gpointer data) {
     }
 }
 
+static void toggle_lock (GtkWidget *button, gpointer data) {
+
+    GtkWidget *old_child = gtk_bin_get_child(GTK_BIN(button));
+    gtk_container_remove (GTK_CONTAINER(button), old_child);
+
+    if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button))) {
+        GtkWidget *child = sp_icon_new (Inkscape::ICON_SIZE_DECORATION, "width_height_lock");
+        gtk_widget_show (child);
+        gtk_container_add (GTK_CONTAINER (button), child);
+    } else {
+        GtkWidget *child = sp_icon_new (Inkscape::ICON_SIZE_DECORATION, "lock_unlocked");
+        gtk_widget_show (child);
+        gtk_container_add (GTK_CONTAINER (button), child);
+    }
+}
+
 GtkWidget *
 sp_select_toolbox_new(SPDesktop *desktop)
 {
@@ -378,23 +394,23 @@ sp_select_toolbox_new(SPDesktop *desktop)
     GtkTooltips *tt = gtk_tooltips_new();
     GtkWidget *tb = gtk_hbox_new(FALSE, 0);
 
-    sp_toolbox_button_normal_new_from_verb(tb, GTK_ICON_SIZE_SMALL_TOOLBAR, Inkscape::Verb::get(SP_VERB_OBJECT_ROTATE_90_CCW), view, tt);
-    sp_toolbox_button_normal_new_from_verb(tb, GTK_ICON_SIZE_SMALL_TOOLBAR, Inkscape::Verb::get(SP_VERB_OBJECT_ROTATE_90_CW), view, tt);
-    sp_toolbox_button_normal_new_from_verb(tb, GTK_ICON_SIZE_SMALL_TOOLBAR, Inkscape::Verb::get(SP_VERB_OBJECT_FLIP_HORIZONTAL), view, tt);
-    sp_toolbox_button_normal_new_from_verb(tb, GTK_ICON_SIZE_SMALL_TOOLBAR, Inkscape::Verb::get(SP_VERB_OBJECT_FLIP_VERTICAL), view, tt);
+    sp_toolbox_button_normal_new_from_verb(tb, Inkscape::ICON_SIZE_SMALL_TOOLBAR, Inkscape::Verb::get(SP_VERB_OBJECT_ROTATE_90_CCW), view, tt);
+    sp_toolbox_button_normal_new_from_verb(tb, Inkscape::ICON_SIZE_SMALL_TOOLBAR, Inkscape::Verb::get(SP_VERB_OBJECT_ROTATE_90_CW), view, tt);
+    sp_toolbox_button_normal_new_from_verb(tb, Inkscape::ICON_SIZE_SMALL_TOOLBAR, Inkscape::Verb::get(SP_VERB_OBJECT_FLIP_HORIZONTAL), view, tt);
+    sp_toolbox_button_normal_new_from_verb(tb, Inkscape::ICON_SIZE_SMALL_TOOLBAR, Inkscape::Verb::get(SP_VERB_OBJECT_FLIP_VERTICAL), view, tt);
 
     aux_toolbox_space(tb, AUX_BETWEEN_BUTTON_GROUPS);
 
-    sp_toolbox_button_normal_new_from_verb(tb, GTK_ICON_SIZE_SMALL_TOOLBAR, Inkscape::Verb::get(SP_VERB_SELECTION_TO_BACK), view, tt);
-    sp_toolbox_button_normal_new_from_verb(tb, GTK_ICON_SIZE_SMALL_TOOLBAR, Inkscape::Verb::get(SP_VERB_SELECTION_LOWER), view, tt);
-    sp_toolbox_button_normal_new_from_verb(tb, GTK_ICON_SIZE_SMALL_TOOLBAR, Inkscape::Verb::get(SP_VERB_SELECTION_RAISE), view, tt);
-    sp_toolbox_button_normal_new_from_verb(tb, GTK_ICON_SIZE_SMALL_TOOLBAR, Inkscape::Verb::get(SP_VERB_SELECTION_TO_FRONT), view, tt);
+    sp_toolbox_button_normal_new_from_verb(tb, Inkscape::ICON_SIZE_SMALL_TOOLBAR, Inkscape::Verb::get(SP_VERB_SELECTION_TO_BACK), view, tt);
+    sp_toolbox_button_normal_new_from_verb(tb, Inkscape::ICON_SIZE_SMALL_TOOLBAR, Inkscape::Verb::get(SP_VERB_SELECTION_LOWER), view, tt);
+    sp_toolbox_button_normal_new_from_verb(tb, Inkscape::ICON_SIZE_SMALL_TOOLBAR, Inkscape::Verb::get(SP_VERB_SELECTION_RAISE), view, tt);
+    sp_toolbox_button_normal_new_from_verb(tb, Inkscape::ICON_SIZE_SMALL_TOOLBAR, Inkscape::Verb::get(SP_VERB_SELECTION_TO_FRONT), view, tt);
 
     // Create the parent widget for x y w h tracker.
     GtkWidget *spw = sp_widget_new_global(INKSCAPE);
 
     // Remember the desktop's canvas widget, to be used for defocusing.
-    gtk_object_set_data(GTK_OBJECT(spw), "dtw", SP_DT_CANVAS(desktop));
+    gtk_object_set_data(GTK_OBJECT(spw), "dtw", sp_desktop_canvas(desktop));
 
     // The vb frame holds all other widgets and is used to set sensitivity depending on selection state.
     GtkWidget *vb = gtk_hbox_new(FALSE, 0);
@@ -406,7 +422,7 @@ sp_select_toolbox_new(SPDesktop *desktop)
     GtkWidget *us = sp_unit_selector_new(SP_UNIT_ABSOLUTE | SP_UNIT_DEVICE);
     sp_unit_selector_setsize(us, AUX_OPTION_MENU_WIDTH, AUX_OPTION_MENU_HEIGHT);
     sp_unit_selector_add_unit(SP_UNIT_SELECTOR(us), &sp_unit_get_by_id(SP_UNIT_PERCENT), 0);
-    sp_unit_selector_set_unit (SP_UNIT_SELECTOR(us), SP_DT_NAMEDVIEW(desktop)->doc_units);
+    sp_unit_selector_set_unit (SP_UNIT_SELECTOR(us), sp_desktop_namedview(desktop)->doc_units);
     g_signal_connect(G_OBJECT(us), "set_unit", G_CALLBACK(aux_set_unit), spw);
 
     // four spinbuttons
@@ -429,15 +445,16 @@ sp_select_toolbox_new(SPDesktop *desktop)
 
     // lock toggle
     GtkWidget *lockbox = gtk_vbox_new(TRUE, 0);
-    GtkWidget *lock = sp_button_new_from_data( GTK_ICON_SIZE_MENU,
+    GtkWidget *lock = sp_button_new_from_data( Inkscape::ICON_SIZE_DECORATION,
                                               SP_BUTTON_TYPE_TOGGLE,
                                               NULL,
-                                              "width_height_lock",
-                                              _("Change both width and height by the same proportion"),
+                                              "lock_unlocked",
+                                              _("When locked, change both width and height by the same proportion"),
                                               tt);
     gtk_box_pack_start(GTK_BOX(lockbox), lock, TRUE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(vb), lockbox, FALSE, FALSE, 0);
     gtk_object_set_data(GTK_OBJECT(spw), "lock", lock);
+    g_signal_connect_after (G_OBJECT (lock), "clicked", G_CALLBACK (toggle_lock), desktop);
 
     gtk_container_add(GTK_CONTAINER(vb),
                       //TRANSLATORS: only translate "string" in "context|string". 
@@ -459,7 +476,7 @@ sp_select_toolbox_new(SPDesktop *desktop)
     gtk_signal_connect(GTK_OBJECT(spw), "change_selection", GTK_SIGNAL_FUNC(sp_selection_layout_widget_change_selection), desktop);
 
     // Update now.
-    sp_selection_layout_widget_update(SP_WIDGET(spw), SP_ACTIVE_DESKTOP ? SP_DT_SELECTION(SP_ACTIVE_DESKTOP) : NULL);
+    sp_selection_layout_widget_update(SP_WIDGET(spw), SP_ACTIVE_DESKTOP ? sp_desktop_selection(SP_ACTIVE_DESKTOP) : NULL);
 
     // Insert spw into the toolbar.
     gtk_box_pack_start(GTK_BOX(tb), spw, FALSE, FALSE, AUX_BETWEEN_BUTTON_GROUPS);
@@ -472,7 +489,7 @@ sp_select_toolbox_new(SPDesktop *desktop)
     GtkWidget *cbox = gtk_hbox_new (FALSE, 0);
 
     {
-    GtkWidget *button = sp_button_new_from_data( GTK_ICON_SIZE_SMALL_TOOLBAR,
+    GtkWidget *button = sp_button_new_from_data( Inkscape::ICON_SIZE_DECORATION,
                                               SP_BUTTON_TYPE_TOGGLE,
                                               NULL,
                                               "transform_stroke",
@@ -484,7 +501,7 @@ sp_select_toolbox_new(SPDesktop *desktop)
     }
 
     {
-    GtkWidget *button = sp_button_new_from_data( GTK_ICON_SIZE_SMALL_TOOLBAR,
+    GtkWidget *button = sp_button_new_from_data( Inkscape::ICON_SIZE_DECORATION,
                                               SP_BUTTON_TYPE_TOGGLE,
                                               NULL,
                                               "transform_corners",
@@ -496,7 +513,7 @@ sp_select_toolbox_new(SPDesktop *desktop)
     }
 
     {
-    GtkWidget *button = sp_button_new_from_data( GTK_ICON_SIZE_SMALL_TOOLBAR,
+    GtkWidget *button = sp_button_new_from_data( Inkscape::ICON_SIZE_DECORATION,
                                               SP_BUTTON_TYPE_TOGGLE,
                                               NULL,
                                               "transform_gradient",
@@ -508,7 +525,7 @@ sp_select_toolbox_new(SPDesktop *desktop)
     }
 
     {
-    GtkWidget *button = sp_button_new_from_data( GTK_ICON_SIZE_SMALL_TOOLBAR,
+    GtkWidget *button = sp_button_new_from_data( Inkscape::ICON_SIZE_DECORATION,
                                               SP_BUTTON_TYPE_TOGGLE,
                                               NULL,
                                               "transform_pattern",