Code

peeled back the gboolean code as it hit on some complexity theory principles...
[inkscape.git] / src / dialogs / text-edit.cpp
index 8de2dedac5b01f4b784c50428c730258856e7213..8ea0a72368c288ea529ba546c35829e168faff0a 100644 (file)
@@ -51,7 +51,6 @@ extern "C" {
 #include "widgets/icon.h"
 #include <xml/repr.h>
 
-
 #define VB_MARGIN 4
 
 static void sp_text_edit_dialog_selection_modified (Inkscape::Application *inkscape, Inkscape::Selection *sel, guint flags, GtkWidget *dlg);
@@ -100,6 +99,9 @@ sp_text_edit_dialog_delete (GtkObject *object, GdkEvent *event, gpointer data)
     gtk_window_get_position ((GtkWindow *) dlg, &x, &y);
     gtk_window_get_size ((GtkWindow *) dlg, &w, &h);
 
+    if (x<0) x=0;
+    if (y<0) y=0;
+
     prefs_set_int_attribute (prefs_path, "x", x);
     prefs_set_int_attribute (prefs_path, "y", y);
     prefs_set_int_attribute (prefs_path, "w", w);
@@ -134,7 +136,6 @@ text_view_focus_out (GtkWidget *w, GdkEventKey *event, gpointer data)
 void
 sp_text_edit_dialog (void)
 {
-
     if (!dlg) {
 
         gchar title[500];
@@ -151,6 +152,9 @@ sp_text_edit_dialog (void)
             h = prefs_get_int_attribute (prefs_path, "h", 0);
         }
 
+        if (x<0) x=0;
+        if (y<0) y=0;
+
         if (x != 0 || y != 0) {
             gtk_window_move ((GtkWindow *) dlg, x, y);
         } else {
@@ -203,6 +207,12 @@ sp_text_edit_dialog (void)
             // font and style selector
             GtkWidget *fontsel = sp_font_selector_new ();
             g_signal_connect ( G_OBJECT (fontsel), "font_set", G_CALLBACK (sp_text_edit_dialog_font_changed), dlg );
+
+            g_signal_connect_swapped ( G_OBJECT (g_object_get_data (G_OBJECT(fontsel), "family-treeview")),
+                                      "row-activated",
+                                      G_CALLBACK (gtk_window_activate_default),
+                                      dlg);
+
             gtk_box_pack_start (GTK_BOX (hb), fontsel, TRUE, TRUE, 0);
             g_object_set_data (G_OBJECT (dlg), "fontsel", fontsel);
 
@@ -219,6 +229,7 @@ sp_text_edit_dialog (void)
 
                     // align left
                     {
+                        // TODO - replace with Inkscape-specific call
                         GtkWidget *px = gtk_image_new_from_stock ( GTK_STOCK_JUSTIFY_LEFT, GTK_ICON_SIZE_LARGE_TOOLBAR );
                         GtkWidget *b = group = gtk_radio_button_new (NULL);
                         gtk_tooltips_set_tip (tt, b, _("Align lines left"), NULL);
@@ -232,6 +243,7 @@ sp_text_edit_dialog (void)
 
                     // align center
                     {
+                        // TODO - replace with Inkscape-specific call
                         GtkWidget *px = gtk_image_new_from_stock ( GTK_STOCK_JUSTIFY_CENTER, GTK_ICON_SIZE_LARGE_TOOLBAR );
                         GtkWidget *b = gtk_radio_button_new (gtk_radio_button_group (GTK_RADIO_BUTTON (group)));
                         /* TRANSLATORS: `Center' here is a verb. */
@@ -246,6 +258,7 @@ sp_text_edit_dialog (void)
 
                     // align right
                     {
+                        // TODO - replace with Inkscape-specific call
                         GtkWidget *px = gtk_image_new_from_stock ( GTK_STOCK_JUSTIFY_RIGHT, GTK_ICON_SIZE_LARGE_TOOLBAR );
                         GtkWidget *b = gtk_radio_button_new (gtk_radio_button_group (GTK_RADIO_BUTTON (group)));
                         gtk_tooltips_set_tip (tt, b, _("Align lines right"), NULL);
@@ -267,7 +280,7 @@ sp_text_edit_dialog (void)
 
                     // horizontal
                     {
-                        GtkWidget *px = sp_icon_new( GTK_ICON_SIZE_LARGE_TOOLBAR,
+                        GtkWidget *px = sp_icon_new( Inkscape::ICON_SIZE_LARGE_TOOLBAR,
                                                       INKSCAPE_STOCK_WRITING_MODE_LR );
                         GtkWidget *b = group = gtk_radio_button_new (NULL);
                         gtk_tooltips_set_tip (tt, b, _("Horizontal text"), NULL);
@@ -281,7 +294,7 @@ sp_text_edit_dialog (void)
 
                     // vertical
                     {
-                        GtkWidget *px = sp_icon_new( GTK_ICON_SIZE_LARGE_TOOLBAR,
+                        GtkWidget *px = sp_icon_new( Inkscape::ICON_SIZE_LARGE_TOOLBAR,
                                                       INKSCAPE_STOCK_WRITING_MODE_TB );
                         GtkWidget *b = gtk_radio_button_new (gtk_radio_button_group (GTK_RADIO_BUTTON (group)));
                         gtk_tooltips_set_tip (tt, b, _("Vertical text"), NULL);
@@ -409,6 +422,7 @@ sp_text_edit_dialog (void)
 
         {
             GtkWidget *b = gtk_button_new_from_stock (GTK_STOCK_APPLY);
+            GTK_WIDGET_SET_FLAGS (b, GTK_CAN_DEFAULT | GTK_HAS_DEFAULT);
             g_signal_connect ( G_OBJECT (b), "clicked", 
                                G_CALLBACK (sp_text_edit_dialog_apply), dlg );
             gtk_box_pack_end ( GTK_BOX (hb), b, FALSE, FALSE, 0 );
@@ -585,10 +599,8 @@ sp_text_edit_dialog_apply (GtkButton *button, GtkWidget *dlg)
     SPDesktop *desktop = SP_ACTIVE_DESKTOP;
 
     unsigned items = 0;
-    const GSList *item_list = SP_DT_SELECTION(desktop)->itemList();
-
+    const GSList *item_list = sp_desktop_selection(desktop)->itemList();
     SPCSSAttr *css = sp_get_text_dialog_style ();
-
     sp_desktop_set_style(desktop, css, true);
 
     for (; item_list != NULL; item_list = item_list->next) {
@@ -611,24 +623,20 @@ sp_text_edit_dialog_apply (GtkButton *button, GtkWidget *dlg)
         gtk_widget_set_sensitive (def, FALSE);
     } else if (items == 1) {
         /* exactly one text object; now set its text, too */
-        SPItem *item = SP_DT_SELECTION(SP_ACTIVE_DESKTOP)->singleItem();
+        SPItem *item = sp_desktop_selection(SP_ACTIVE_DESKTOP)->singleItem();
         if (SP_IS_TEXT (item) || SP_IS_FLOWTEXT(item)) {
             sp_text_edit_dialog_update_object_text (item);
         }
     }
 
     // complete the transaction
-    sp_document_done (SP_DT_DOCUMENT (SP_ACTIVE_DESKTOP));
-
+    sp_document_done (sp_desktop_document (SP_ACTIVE_DESKTOP), SP_VERB_CONTEXT_TEXT, 
+                      /* TODO: annotate */ "text-edit.cpp:634");
     gtk_widget_set_sensitive (apply, FALSE);
-
     sp_repr_css_attr_unref (css);
-
     g_object_set_data (G_OBJECT (dlg), "blocked", GINT_TO_POINTER (FALSE));
 }
 
-
-
 static void
 sp_text_edit_dialog_close (GtkButton *button, GtkWidget *dlg)
 {
@@ -794,7 +802,14 @@ sp_text_edit_dialog_text_changed (GtkTextBuffer *tb, GtkWidget *dlg)
 
 } // end of sp_text_edit_dialog_text_changed()
 
-
+void
+sp_text_edit_dialog_default_set_insensitive ()
+{
+    if (!dlg) return;
+    gpointer data = g_object_get_data (G_OBJECT (dlg), "default");
+    if (!data) return;
+    gtk_widget_set_sensitive (GTK_WIDGET (data), FALSE);
+}
 
 static void
 sp_text_edit_dialog_font_changed ( SPFontSelector *fsel,
@@ -814,7 +829,8 @@ sp_text_edit_dialog_font_changed ( SPFontSelector *fsel,
 
     sp_font_preview_set_font (SP_FONT_PREVIEW (preview), font, SP_FONT_SELECTOR(fsel));
 
-    if (text) {
+    if (text)
+    {
         gtk_widget_set_sensitive (apply, TRUE);
     }
     gtk_widget_set_sensitive (def, TRUE);
@@ -871,7 +887,7 @@ sp_ted_get_selected_text_item (void)
     if (!SP_ACTIVE_DESKTOP)
         return NULL;
 
-    for (const GSList *item = SP_DT_SELECTION(SP_ACTIVE_DESKTOP)->itemList();
+    for (const GSList *item = sp_desktop_selection(SP_ACTIVE_DESKTOP)->itemList();
          item != NULL;
          item = item->next)
     {
@@ -892,7 +908,7 @@ sp_ted_get_selected_text_count (void)
 
     unsigned int items = 0;
 
-    for (const GSList *item = SP_DT_SELECTION(SP_ACTIVE_DESKTOP)->itemList();
+    for (const GSList *item = sp_desktop_selection(SP_ACTIVE_DESKTOP)->itemList();
          item != NULL;
          item = item->next)
     {