]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkruler.c
Without setting "detail-width-chars" and "detail-height-rows"
[~andy/gtk] / gtk / gtkruler.c
index f4e00ed2440f847c911f774b51c3ea69a13ecb02..d308ea3e1ba034f67bf4c3cd4ae37fe0969794d4 100644 (file)
@@ -39,8 +39,6 @@ enum {
   PROP_METRIC
 };
 
-static void gtk_ruler_class_init    (GtkRulerClass  *klass);
-static void gtk_ruler_init          (GtkRuler       *ruler);
 static void gtk_ruler_realize       (GtkWidget      *widget);
 static void gtk_ruler_unrealize     (GtkWidget      *widget);
 static void gtk_ruler_size_allocate (GtkWidget      *widget,
@@ -57,42 +55,14 @@ static void gtk_ruler_get_property  (GObject        *object,
                                     GValue         *value,
                                     GParamSpec     *pspec);
 
-static GtkWidgetClass *parent_class;
-
 static const GtkRulerMetric ruler_metrics[] =
 {
-  {"Pixels", "Pi", 1.0, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
-  {"Inches", "In", 72.0, { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 }, { 1, 2, 4, 8, 16 }},
-  {"Centimeters", "Cn", 28.35, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
+  { "Pixel", "Pi", 1.0, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
+  { "Inches", "In", 72.0, { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 }, { 1, 2, 4, 8, 16 }},
+  { "Centimeters", "Cn", 28.35, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
 };
 
-
-GType
-gtk_ruler_get_type (void)
-{
-  static GType ruler_type = 0;
-
-  if (!ruler_type)
-    {
-      static const GTypeInfo ruler_info =
-      {
-       sizeof (GtkRulerClass),
-       NULL,           /* base_init */
-       NULL,           /* base_finalize */
-       (GClassInitFunc) gtk_ruler_class_init,
-       NULL,           /* class_finalize */
-       NULL,           /* class_data */
-       sizeof (GtkRuler),
-       0,              /* n_preallocs */
-       (GInstanceInitFunc) gtk_ruler_init,
-      };
-
-      ruler_type = g_type_register_static (GTK_TYPE_WIDGET, "GtkRuler",
-                                          &ruler_info, 0);
-    }
-
-  return ruler_type;
-}
+G_DEFINE_TYPE (GtkRuler, gtk_ruler, GTK_TYPE_WIDGET)
 
 static void
 gtk_ruler_class_init (GtkRulerClass *class)
@@ -103,8 +73,6 @@ gtk_ruler_class_init (GtkRulerClass *class)
   gobject_class = G_OBJECT_CLASS (class);
   widget_class = (GtkWidgetClass*) class;
 
-  parent_class = g_type_class_peek_parent (class);
-  
   gobject_class->set_property = gtk_ruler_set_property;
   gobject_class->get_property = gtk_ruler_get_property;
 
@@ -155,6 +123,13 @@ gtk_ruler_class_init (GtkRulerClass *class)
                                                        G_MAXDOUBLE,
                                                        0.0,
                                                        GTK_PARAM_READWRITE));  
+  /**
+   * GtkRuler:metric:
+   *
+   * The metric used for the ruler.
+   *
+   * Since: 2.8
+   */
   g_object_class_install_property (gobject_class,
                                    PROP_METRIC,
                                    g_param_spec_enum ("metric",
@@ -284,6 +259,17 @@ gtk_ruler_get_metric (GtkRuler *ruler)
   return 0;
 }
 
+/**
+ * gtk_ruler_set_range:
+ * @ruler: the gtkruler
+ * @lower: the lower limit of the ruler
+ * @upper: the upper limit of the ruler
+ * @position: the mark on the ruler
+ * @max_size: the maximum size of the ruler used when calculating the space to
+ * leave for the text
+ *
+ * This sets the range of the ruler. 
+ */
 void
 gtk_ruler_set_range (GtkRuler *ruler,
                     gdouble   lower,
@@ -410,13 +396,19 @@ gtk_ruler_unrealize (GtkWidget *widget)
   GtkRuler *ruler = GTK_RULER (widget);
 
   if (ruler->backing_store)
-    g_object_unref (ruler->backing_store);
+    {
+      g_object_unref (ruler->backing_store);
+      ruler->backing_store = NULL;
+    }
 
-  ruler->backing_store = NULL;
-  ruler->non_gr_exp_gc = NULL;
+  if (ruler->non_gr_exp_gc)
+    {
+      g_object_unref (ruler->non_gr_exp_gc);
+      ruler->non_gr_exp_gc = NULL;
+    }
 
-  if (GTK_WIDGET_CLASS (parent_class)->unrealize)
-    (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget);
+  if (GTK_WIDGET_CLASS (gtk_ruler_parent_class)->unrealize)
+    (* GTK_WIDGET_CLASS (gtk_ruler_parent_class)->unrealize) (widget);
 }
 
 static void