]> git.draconx.ca Git - aspectbin.git/commitdiff
Add aspect ratio property.
authorNick Bowler <nbowler@draconx.ca>
Sun, 22 Mar 2009 22:30:05 +0000 (18:30 -0400)
committerNick Bowler <nbowler@draconx.ca>
Sun, 22 Mar 2009 22:30:05 +0000 (18:30 -0400)
aspectbin.c

index ba3bbda562e6fb690803e1ac789d1be8763aca23..bc74a67d3c4558f08f26623926841854915d28d0 100644 (file)
@@ -22,6 +22,7 @@
 
 enum {
        PROP_0,
+       PROP_RATIO,
        PROP_CONSTRAIN,
        PROP_FILL,
 };
@@ -81,6 +82,13 @@ static void aspect_bin_class_init(AspectBinClass *class)
        object_class->set_property = aspect_bin_set_property;
        object_class->get_property = aspect_bin_get_property;
 
+       g_object_class_install_property(object_class,
+               PROP_RATIO,
+               g_param_spec_float("ratio",
+                       "Aspect Ratio",
+                       "Width:height ratio of the body.",
+                       0.2, 5.0, 1.0,
+                       G_PARAM_READWRITE));
        g_object_class_install_property(object_class,
                PROP_FILL,
                g_param_spec_boolean("fill",
@@ -115,8 +123,15 @@ static void aspect_bin_set_property(GObject      *object,
                                     GParamSpec   *pspec)
 {
        AspectBin *abin = ASPECT_BIN(object);
+       gfloat tmp;
 
        switch (prop_id) {
+       case PROP_RATIO:
+               tmp = abin->ratio;
+               abin->ratio = g_value_get_float(value);
+               if (tmp != abin->ratio)
+                       gtk_widget_queue_resize(GTK_WIDGET(abin));
+               break;
        case PROP_CONSTRAIN:
                abin->constrain = g_value_get_boolean(value);
                gtk_widget_queue_resize(GTK_WIDGET(abin));
@@ -138,6 +153,9 @@ static void aspect_bin_get_property(GObject    *object,
        AspectBin *abin = ASPECT_BIN(object);
 
        switch (prop_id) {
+       case PROP_RATIO:
+               g_value_set_float(value, abin->ratio);
+               break;
        case PROP_CONSTRAIN:
                g_value_set_boolean(value, abin->constrain);
                break;