X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkruler.c;h=d308ea3e1ba034f67bf4c3cd4ae37fe0969794d4;hb=f35439bfacf90900e2c24f7ae3da173183c79d34;hp=f4e00ed2440f847c911f774b51c3ea69a13ecb02;hpb=74335e88252ff2586a8d4f988138699bf2faf86f;p=~andy%2Fgtk diff --git a/gtk/gtkruler.c b/gtk/gtkruler.c index f4e00ed24..d308ea3e1 100644 --- a/gtk/gtkruler.c +++ b/gtk/gtkruler.c @@ -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