gtk+ r21289 - in trunk: . gtk



Author: matthiasc
Date: Thu Sep  4 14:14:11 2008
New Revision: 21289
URL: http://svn.gnome.org/viewvc/gtk+?rev=21289&view=rev

Log:
2008-09-04  Matthias Clasen  <mclasen redhat com>

        * gtk/gtkenums.h: Add nicks for the GtkNumberUpLayout values.

        * gtk/gtkprintunixdialog.c:
        * gtk/gtkprintsettings.c: Simplify the handling of GtkNumberUpLayout
        values. Followup on #535158, proposed by Christian Persch.

2008-09-04  Matthias Clasen  <mclasen redhat com>

        * INSTALL.in: Update required versions



Modified:
   trunk/ChangeLog
   trunk/gtk/gtkenums.h
   trunk/gtk/gtkprintsettings.c
   trunk/gtk/gtkprintunixdialog.c

Modified: trunk/gtk/gtkenums.h
==============================================================================
--- trunk/gtk/gtkenums.h	(original)
+++ trunk/gtk/gtkenums.h	Thu Sep  4 14:14:11 2008
@@ -489,14 +489,14 @@
 
 typedef enum
 {
-  GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM,
-  GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP,
-  GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM,
-  GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP,
-  GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT,
-  GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT,
-  GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT,
-  GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT
+  GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM, /*< nick=lrtb >*/
+  GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP, /*< nick=lrbt >*/
+  GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM, /*< nick=rltb >*/
+  GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP, /*< nick=rlbt >*/
+  GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT, /*< nick=tblr >*/
+  GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT, /*< nick=tbrl >*/
+  GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT, /*< nick=btlr >*/
+  GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT  /*< nick=btrl >*/
 } GtkNumberUpLayout;
 
 typedef enum

Modified: trunk/gtk/gtkprintsettings.c
==============================================================================
--- trunk/gtk/gtkprintsettings.c	(original)
+++ trunk/gtk/gtkprintsettings.c	Thu Sep  4 14:14:11 2008
@@ -1054,8 +1054,12 @@
 {
   GtkNumberUpLayout layout;
   GtkTextDirection  text_direction;
+  GEnumClass       *enum_class;
+  GEnumValue       *enum_value;
   const gchar      *val;
 
+  g_return_val_if_fail (GTK_IS_PRINT_SETTINGS (settings), GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM);
+
   val = gtk_print_settings_get (settings, GTK_PRINT_SETTINGS_NUMBER_UP_LAYOUT);
   text_direction = gtk_widget_get_default_direction ();
 
@@ -1067,29 +1071,11 @@
   if (val == NULL)
     return layout;
 
-  if (strcmp (val, "lrtb") == 0)
-    return GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM;
-
-  if (strcmp (val, "lrbt") == 0)
-    return GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP;
-
-  if (strcmp (val, "rltb") == 0)
-    return GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM;
-
-  if (strcmp (val, "rlbt") == 0)
-    return GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP;
-
-  if (strcmp (val, "tblr") == 0)
-    return GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT;
-
-  if (strcmp (val, "tbrl") == 0)
-    return GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT;
-
-  if (strcmp (val, "btlr") == 0)
-    return GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT;
-
-  if (strcmp (val, "btrl") == 0)
-    return GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT;
+  enum_class = g_type_class_ref (GTK_TYPE_NUMBER_UP_LAYOUT);
+  enum_value = g_enum_get_value_by_nick (enum_class, val);
+  if (enum_value)
+    layout = enum_value->value;
+  g_type_class_unref (enum_class);
 
   return layout;
 }
@@ -1107,38 +1093,17 @@
 gtk_print_settings_set_number_up_layout (GtkPrintSettings  *settings,
 					 GtkNumberUpLayout  number_up_layout)
 {
-  const gchar *str;
+  GEnumClass *enum_class;
+  GEnumValue *enum_value;
 
-  switch (number_up_layout)
-    {
-    default:
-    case GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM:
-      str = "lrtb";
-      break;
-    case GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP:
-      str = "lrbt";
-      break;
-    case GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM:
-      str = "rltb";
-      break;
-    case GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP:
-      str = "rlbt";
-      break;
-    case GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT:
-      str = "tblr";
-      break;
-    case GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT:
-      str = "tbrl";
-      break;
-    case GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT:
-      str = "btlr";
-      break;
-    case GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT:
-      str = "btrl";
-      break;
-    }
-  
-  gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_NUMBER_UP_LAYOUT, str);
+  g_return_if_fail (GTK_IS_PRINT_SETTINGS (settings));
+
+  enum_class = g_type_class_ref (GTK_TYPE_NUMBER_UP_LAYOUT);
+  enum_value = g_enum_get_value (enum_class, number_up_layout);
+  g_return_if_fail (enum_value != NULL);
+
+  gtk_print_settings_set (settings, GTK_PRINT_SETTINGS_NUMBER_UP_LAYOUT, enum_value->value_nick);
+  g_type_class_unref (enum_class);
 }
 
 /**

Modified: trunk/gtk/gtkprintunixdialog.c
==============================================================================
--- trunk/gtk/gtkprintunixdialog.c	(original)
+++ trunk/gtk/gtkprintunixdialog.c	Thu Sep  4 14:14:11 2008
@@ -2128,50 +2128,30 @@
   GtkPrintUnixDialogPrivate *priv = dialog->priv;
   GtkPrintCapabilities       caps;
   GtkNumberUpLayout          layout;
-  GtkTextDirection           text_direction;
   const gchar               *val;
+  GEnumClass                *enum_class;
+  GEnumValue                *enum_value;
 
   val = gtk_printer_option_widget_get_value (priv->number_up_layout);
-  text_direction = gtk_widget_get_default_direction ();
 
   caps = priv->manual_capabilities | priv->printer_capabilities;
 
-  if (caps & GTK_PRINT_CAPABILITY_NUMBER_UP_LAYOUT)
-    {
-      if (text_direction == GTK_TEXT_DIR_LTR)
-        layout = GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM;
-      else
-        layout = GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM;
-    }
-  else
+  if ((caps & GTK_PRINT_CAPABILITY_NUMBER_UP_LAYOUT) == 0)
+    return GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM;
+
+  if (gtk_widget_get_direction (GTK_WIDGET (dialog)) == GTK_TEXT_DIR_LTR)
     layout = GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM;
+  else
+    layout = GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM;
 
   if (val == NULL)
     return layout;
 
-  if (strcmp (val, "lrtb") == 0)
-    return GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM;
-
-  if (strcmp (val, "lrbt") == 0)
-    return GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP;
-
-  if (strcmp (val, "rltb") == 0)
-    return GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM;
-
-  if (strcmp (val, "rlbt") == 0)
-    return GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP;
-
-  if (strcmp (val, "tblr") == 0)
-    return GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT;
-
-  if (strcmp (val, "tbrl") == 0)
-    return GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT;
-
-  if (strcmp (val, "btlr") == 0)
-    return GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT;
-
-  if (strcmp (val, "btrl") == 0)
-    return GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT;
+  enum_class = g_type_class_ref (GTK_TYPE_NUMBER_UP_LAYOUT);
+  enum_value = g_enum_get_value_by_nick (enum_class, val);
+  if (enum_value)
+    layout = enum_value->value;
+  g_type_class_unref (enum_class);
 
   return layout;
 }
@@ -2204,7 +2184,7 @@
     (orientation == GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE);
 
   number_up_layout = dialog_get_number_up_layout (dialog);
-  
+
   cr = gdk_cairo_create (widget->window);
   
   cairo_translate (cr, widget->allocation.x, widget->allocation.y);
@@ -2451,6 +2431,10 @@
 
       if (dialog_get_pages_per_sheet (dialog) != 1)
         {
+          GEnumClass *enum_class;
+          GEnumValue *enum_value;
+          enum_class = g_type_class_ref (GTK_TYPE_NUMBER_UP_LAYOUT);
+
           if (dialog_get_pages_per_sheet (dialog) == 2)
             {
               option = priv->number_up_layout_2_option;
@@ -2459,43 +2443,21 @@
                   layout == GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP ||
                   layout == GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT ||
                   layout == GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT)
-                gtk_printer_option_set (option, "lrtb");
+                enum_value = g_enum_get_value (enum_class, GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM);
               else
-                gtk_printer_option_set (option, "rltb");
+                enum_value = g_enum_get_value (enum_class, GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM);
             }
           else
             {
               option = priv->number_up_layout_n_option;
 
-              switch (layout)
-                {
-                  case GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM:
-                    gtk_printer_option_set (option, "lrtb");
-                    break;
-                  case GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP:
-                    gtk_printer_option_set (option, "lrbt");
-                    break;
-                  case GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM:
-                    gtk_printer_option_set (option, "rltb");
-                    break;
-                  case GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP:
-                    gtk_printer_option_set (option, "rlbt");
-                    break;
-                  case GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT:
-                    gtk_printer_option_set (option, "tblr");
-                    break;
-                  case GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT:
-                    gtk_printer_option_set (option, "tbrl");
-                    break;
-                  case GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT:
-                    gtk_printer_option_set (option, "btlr");
-                    break;
-                  case GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT:
-                    gtk_printer_option_set (option, "btrl");
-                    break;
-               }
+              enum_value = g_enum_get_value (enum_class, layout);
             }
 
+          g_assert (enum_value != NULL);
+          gtk_printer_option_set (option, enum_value->value_nick);
+          g_type_class_unref (enum_class);
+
           gtk_printer_option_set_add (set, option);
         }
     }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]