static void gtk_level_bar_get_property (GObject *obj, guint property_id, GValue *value, GParamSpec *pspec) { GtkLevelBar *self = GTK_LEVEL_BAR (obj); switch (property_id) { case PROP_VALUE: g_value_set_double (value, gtk_level_bar_get_value (self)); break; case PROP_MIN_VALUE: g_value_set_double (value, gtk_level_bar_get_min_value (self)); break; case PROP_MAX_VALUE: g_value_set_double (value, gtk_level_bar_get_max_value (self)); break; case PROP_MODE: g_value_set_enum (value, gtk_level_bar_get_mode (self)); break; case PROP_INVERTED: g_value_set_boolean (value, gtk_level_bar_get_inverted (self)); break; case PROP_ORIENTATION: g_value_set_enum (value, self->priv->orientation); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, property_id, pspec); break; } }
static gboolean increase_level (gpointer data) { GtkLevelBar *bar = data; gdouble value; value = gtk_level_bar_get_value (bar); value += 0.1; if (value >= gtk_level_bar_get_max_value (bar)) value = gtk_level_bar_get_min_value (bar); gtk_level_bar_set_value (bar, value); return G_SOURCE_CONTINUE; }
static void gtk_level_bar_update_level_style_classes (GtkLevelBar *self) { GtkStyleContext *context = gtk_widget_get_style_context (GTK_WIDGET (self)); gdouble value = gtk_level_bar_get_value (self); gchar *offset_style_class, *value_class = NULL; GtkLevelBarOffset *offset, *prev_offset; GList *l; for (l = self->priv->offsets; l != NULL; l = l->next) { offset = l->data; offset_style_class = g_strconcat ("level-", offset->name, NULL); gtk_style_context_remove_class (context, offset_style_class); /* find the right offset for our style class */ if (((l->prev == NULL) && (value <= offset->value)) || ((l->next == NULL) && (value >= offset->value))) { value_class = offset_style_class; } else if ((l->next != NULL) && (l->prev != NULL)) { prev_offset = l->prev->data; if ((prev_offset->value <= value) && (value < offset->value)) value_class = offset_style_class; } else { g_free (offset_style_class); } } g_clear_pointer (&self->priv->cur_value_class, g_free); if (value_class != NULL) { gtk_style_context_add_class (context, value_class); self->priv->cur_value_class = value_class; } }