[network-manager-netbook] Update copy+pasted nbtk-gtk-light-switch.c



commit 72b22ea3800fe2fa387c35010ceb5bf80fb0ee09
Author: Tambet Ingo <tambet gmail com>
Date:   Tue Jul 28 16:58:48 2009 +0300

    Update copy+pasted nbtk-gtk-light-switch.c

 src/nbtk-gtk-light-switch.c |   96 +++++++++++++++++++++++++++----------------
 1 files changed, 60 insertions(+), 36 deletions(-)
---
diff --git a/src/nbtk-gtk-light-switch.c b/src/nbtk-gtk-light-switch.c
index 0d45418..60edee4 100644
--- a/src/nbtk-gtk-light-switch.c
+++ b/src/nbtk-gtk-light-switch.c
@@ -121,9 +121,11 @@ draw (GtkWidget *lightswitch,
   GtkStyle     *style;
   PangoLayout  *layout;
   PangoContext *context;
+  GtkStateType state_type;
 
   priv = NBTK_GTK_LIGHT_SWITCH_GET_PRIVATE (lightswitch);
   style = lightswitch->style;
+  state_type = GTK_WIDGET_STATE (lightswitch);
 
   on_label_x = (priv->trough_width / 5) * 0.75;
   off_label_x = (priv->trough_width / 8) * 5;
@@ -131,54 +133,76 @@ draw (GtkWidget *lightswitch,
   /* draw the trough */
   gtk_paint_box (style,
                  lightswitch->window,
-                 GTK_STATE_SELECTED,
+                 (priv->active) ? GTK_STATE_SELECTED : state_type,
                  GTK_SHADOW_IN,
                  NULL,
                  NULL,
-                 NULL,
-                 0,
+                 "light-switch-trough",
                  0,
-                 (priv->trough_width / 2),
-                 priv->switch_height);
-  gtk_paint_box (style,
-                 lightswitch->window,
-                 GTK_STATE_NORMAL,
-                 GTK_SHADOW_IN,
-                 NULL,
-                 NULL,
-                 NULL,
-                 (priv->trough_width / 2),
                  0,
-                 (priv->trough_width / 2),
+                 (priv->trough_width),
                  priv->switch_height);
 
+  if (state_type == GTK_STATE_INSENSITIVE)
+    {
+      context = gdk_pango_context_get ();
+      layout = pango_layout_new (context);
+      g_object_unref (context);
+
+      pango_layout_set_font_description (layout, style->font_desc);
+      pango_layout_set_text (layout, _("Unavailable"), -1);
+      pango_layout_get_size (layout, &label_width, &label_height);
+      gtk_paint_layout (style, lightswitch->window, state_type, FALSE,
+                        NULL, lightswitch, "lighswitch-label",
+                        (priv->trough_width - (label_width / PANGO_SCALE)) / 2,
+                        (priv->switch_height - (label_height / PANGO_SCALE)) / 2,
+                        layout);
+      g_object_unref (layout);
+      return;
+    }
+
   /* Draw the first label; "On" */
   context = gdk_pango_context_get ();
   layout = pango_layout_new (context);
   g_object_unref (context);
   pango_layout_set_font_description (layout,
                                      style->font_desc);
-  pango_layout_set_text (layout, _ ("On"), -1);
+  /* TRANSLATORS: If this string takes more than four or five characters in
+   * your language, please use the MEDIUM VERTICAL BAR unicode character
+   * instead */
+  pango_layout_set_text (layout, _("On"), -1);
   pango_layout_get_size (layout,
                          &label_width,
                          &label_height);
-  gdk_draw_layout (lightswitch->window,
-                   style->fg_gc[GTK_STATE_SELECTED],
-                   on_label_x,
-                   (priv->switch_height
-                    - (label_height / PANGO_SCALE)) / 2,
-                   layout);
+  gtk_paint_layout (style,
+                    lightswitch->window,
+                    (priv->active) ? GTK_STATE_SELECTED : GTK_STATE_NORMAL,
+                    FALSE,
+                    NULL,
+                    (GtkWidget*) lightswitch,
+                    "lightswitch-label",
+                    on_label_x,
+                    (priv->switch_height
+                     - (label_height / PANGO_SCALE)) / 2,
+                    layout);
   /* Draw the second label; "Off" */
-  pango_layout_set_text (layout, _ ("Off"), -1);
+  /* TRANSLATORS: If this string takes more than four or five characters in
+   * your language, please use the ROUND CIRCLE unicode character instead */
+  pango_layout_set_text (layout, _("Off"), -1);
   pango_layout_get_size (layout,
                          &label_width,
                          &label_height);
-  gdk_draw_layout (lightswitch->window,
-                   style->fg_gc[GTK_STATE_NORMAL],
-                   off_label_x,
-                   (priv->switch_height
-                    - (label_height / PANGO_SCALE)) / 2,
-                   layout);
+  gtk_paint_layout (style,
+                    lightswitch->window,
+                    (priv->active) ? GTK_STATE_SELECTED : GTK_STATE_NORMAL,
+                    FALSE,
+                    NULL,
+                    (GtkWidget*) lightswitch,
+                    "lightswitch-label",
+                    off_label_x,
+                    (priv->switch_height
+                     - (label_height / PANGO_SCALE)) / 2,
+                    layout);
 
   /* draw the switch itself */
   gtk_paint_box (style,
@@ -187,11 +211,11 @@ draw (GtkWidget *lightswitch,
                  GTK_SHADOW_OUT,
                  NULL,
                  NULL,
-                 NULL,
-                 priv->x,
-                 0,
-                 priv->switch_width,
-                 priv->switch_height);
+                 "light-switch-handle",
+                 priv->x + style->xthickness,
+                 style->ythickness,
+                 priv->switch_width - style->xthickness * 2,
+                 priv->switch_height - style->ythickness * 2);
 
   g_object_unref (layout);
 }
@@ -217,16 +241,16 @@ nbtk_gtk_light_switch_style_set (GtkWidget *lightswitch,
   gint on_width, on_height;
 
   layout = gtk_widget_create_pango_layout (GTK_WIDGET (lightswitch), NULL);
-  pango_layout_set_text (layout, _ ("Off"), -1);
+  pango_layout_set_text (layout, _("Off"), -1);
   pango_layout_get_pixel_size (layout, &off_width, &off_height);
-  pango_layout_set_text (layout, _ ("On"), -1);
+  pango_layout_set_text (layout, _("On"), -1);
   pango_layout_get_pixel_size (layout, &on_width, &on_height);
   g_object_unref (layout);
 
   label_width = MAX (off_width, on_width);
   label_height = MAX (off_height, on_height);
 
-  priv->trough_width = label_width * 5;
+  priv->trough_width = MAX (label_width * 5, 80);
   priv->switch_width = (priv->trough_width / 2) * 1.1;
   priv->switch_height = (label_height * 2) * 1.1;
 }



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