Exemple #1
0
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;
    }
}
Exemple #2
0
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;
}
Exemple #3
0
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;
    }
}