[Xfce4-commits] [panel-plugins/xfce4-pulseaudio-plugin] 16/21: Tidy up ScaleMenuItem
noreply at xfce.org
noreply at xfce.org
Sat Sep 23 21:27:42 CEST 2017
This is an automated email from the git hooks/post-receive script.
b l u e s a b r e p u s h e d a c o m m i t t o b r a n c h m a s t e r
in repository panel-plugins/xfce4-pulseaudio-plugin.
commit c1d87fa041b73fe665213dabaa710b70f36939e2
Author: Sean Davis <smd.seandavis at gmail.com>
Date: Tue Sep 12 22:01:37 2017 -0400
Tidy up ScaleMenuItem
---
panel-plugin/scalemenuitem.c | 419 +++++++++++++++++++++++--------------------
panel-plugin/scalemenuitem.h | 4 +-
2 files changed, 227 insertions(+), 196 deletions(-)
diff --git a/panel-plugin/scalemenuitem.c b/panel-plugin/scalemenuitem.c
index 5f27bcd..5b014cf 100644
--- a/panel-plugin/scalemenuitem.c
+++ b/panel-plugin/scalemenuitem.c
@@ -38,18 +38,6 @@
-static gboolean scale_menu_item_button_press_event (GtkWidget *menuitem,
- GdkEventButton *event);
-static gboolean scale_menu_item_button_release_event (GtkWidget *menuitem,
- GdkEventButton *event);
-static gboolean scale_menu_item_motion_notify_event (GtkWidget *menuitem,
- GdkEventMotion *event);
-static void scale_menu_item_parent_set (GtkWidget *item,
- GtkWidget *previous_parent);
-
-
-
-
struct _ScaleMenuItemPrivate {
GtkWidget *scale;
GtkWidget *hbox;
@@ -63,10 +51,6 @@ struct _ScaleMenuItemPrivate {
-static void scale_menu_item_finalize (GObject *object);
-
-
-
enum {
SLIDER_GRABBED,
SLIDER_RELEASED,
@@ -77,7 +61,6 @@ enum {
-
static guint signals[LAST_SIGNAL] = { 0 };
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
@@ -88,49 +71,161 @@ G_GNUC_END_IGNORE_DEPRECATIONS
-static void
-scale_menu_item_update_icon (ScaleMenuItem *self)
+/* Static Declarations */
+static void scale_menu_item_finalize (GObject *object);
+static void scale_menu_item_update_icon (ScaleMenuItem *self);
+static void scale_menu_item_scale_value_changed (GtkRange *range,
+ gpointer user_data);
+static gboolean scale_menu_item_button_press_event (GtkWidget *item,
+ GdkEventButton *event);
+static gboolean scale_menu_item_button_release_event (GtkWidget *item,
+ GdkEventButton *event);
+static gboolean scale_menu_item_motion_notify_event (GtkWidget *item,
+ GdkEventMotion *event);
+static void menu_hidden (GtkWidget *menu,
+ ScaleMenuItem *scale);
+static void scale_menu_item_parent_set (GtkWidget *item,
+ GtkWidget *previous_parent);
+
+
+
+/* Public API */
+GtkWidget*
+scale_menu_item_new_with_range (gdouble min,
+ gdouble max,
+ gdouble step)
{
- ScaleMenuItemPrivate *priv = GET_PRIVATE (self);
- gchar *icon_name = NULL;
- gdouble value = gtk_range_get_value (GTK_RANGE (priv->scale));
+ ScaleMenuItem *scale_item;
+ ScaleMenuItemPrivate *priv;
- /* Update the menuitem icon */
- if (scale_menu_item_get_muted (self) || value <= 0.0)
- {
- icon_name = g_strconcat(priv->icon_name, "-muted-symbolic", NULL);
- }
- else if (value < 30.0)
- {
- icon_name = g_strconcat(priv->icon_name, "-low-symbolic", NULL);
- }
- else if (value < 70.0)
- {
- icon_name = g_strconcat(priv->icon_name, "-medium-symbolic", NULL);
- }
- else
- {
- icon_name = g_strconcat(priv->icon_name, "-high-symbolic", NULL);
- }
+ TRACE("entering");
- gtk_image_set_from_icon_name (GTK_IMAGE (priv->image), icon_name, GTK_ICON_SIZE_MENU);
- g_free (icon_name);
+ scale_item = SCALE_MENU_ITEM (g_object_new (TYPE_SCALE_MENU_ITEM, NULL));
+
+ priv = GET_PRIVATE (scale_item);
+
+ /* Configure the menu item image */
+ priv->image = gtk_image_new ();
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (scale_item), priv->image);
+G_GNUC_END_IGNORE_DEPRECATIONS
+
+ /* Configure the menu item scale */
+ priv->scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, min, max, step);
+ gtk_widget_set_size_request (priv->scale, 100, -1);
+ gtk_range_set_inverted (GTK_RANGE(priv->scale), FALSE);
+ gtk_scale_set_draw_value (GTK_SCALE(priv->scale), FALSE);
+
+ if (max > 100.0)
+ gtk_scale_add_mark (GTK_SCALE (priv->scale), 100.0, GTK_POS_BOTTOM, NULL);
+
+ /* Configure the mute toggle */
+ priv->mute_toggle = gtk_switch_new ();
+
+ /* Pack the scale widget */
+ priv->hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+ priv->vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ gtk_box_pack_start (GTK_BOX (priv->hbox), priv->scale, TRUE, TRUE, 0);
+ gtk_box_set_center_widget (GTK_BOX (priv->vbox), priv->mute_toggle);
+ gtk_box_pack_start (GTK_BOX (priv->hbox), priv->vbox, FALSE, FALSE, 0);
+ gtk_container_add (GTK_CONTAINER (scale_item), priv->hbox);
+ gtk_widget_show_all (priv->hbox);
+
+ /* Connect events */
+ g_signal_connect (priv->scale, "value-changed", G_CALLBACK (scale_menu_item_scale_value_changed), scale_item);
+ gtk_widget_add_events (GTK_WIDGET(scale_item), GDK_SCROLL_MASK|GDK_POINTER_MOTION_MASK|GDK_BUTTON_MOTION_MASK);
+
+ /* Keep references to the widgets */
+ g_object_ref (priv->image);
+ g_object_ref (priv->scale);
+ g_object_ref (priv->mute_toggle);
+ g_object_ref (priv->hbox);
+ g_object_ref (priv->vbox);
+
+ return GTK_WIDGET(scale_item);
}
-static void
-scale_menu_item_scale_value_changed (GtkRange *range,
- gpointer user_data)
+gdouble
+scale_menu_item_get_value (ScaleMenuItem *item)
{
- ScaleMenuItem *self = SCALE_MENU_ITEM (user_data);
- gdouble value = gtk_range_get_value (range);
+ ScaleMenuItemPrivate *priv;
- g_signal_emit (self, signals[VALUE_CHANGED], 0, value);
+ g_return_val_if_fail (IS_SCALE_MENU_ITEM (item), 0.0);
- scale_menu_item_update_icon (self);
+ priv = GET_PRIVATE (item);
+
+ return gtk_range_get_value (GTK_RANGE (priv->scale));
+}
+
+
+
+void
+scale_menu_item_set_value (ScaleMenuItem *item,
+ gdouble value)
+{
+ ScaleMenuItemPrivate *priv;
+
+ g_return_if_fail (IS_SCALE_MENU_ITEM (item));
+
+ priv = GET_PRIVATE (item);
+
+ gtk_range_set_value (GTK_RANGE (priv->scale), value);
+}
+
+
+
+gboolean
+scale_menu_item_get_muted (ScaleMenuItem *item)
+{
+ ScaleMenuItemPrivate *priv;
+
+ g_return_val_if_fail (IS_SCALE_MENU_ITEM (item), TRUE);
+
+ priv = GET_PRIVATE (item);
+
+ return !gtk_switch_get_active (GTK_SWITCH (priv->mute_toggle));
+}
+
+
+
+void
+scale_menu_item_set_muted (ScaleMenuItem *item,
+ gboolean muted)
+{
+ ScaleMenuItemPrivate *priv;
+
+ g_return_if_fail (IS_SCALE_MENU_ITEM (item));
+
+ priv = GET_PRIVATE (item);
+
+ gtk_switch_set_active (GTK_SWITCH (priv->mute_toggle), !muted);
+
+ scale_menu_item_update_icon (item);
}
+
+
+void
+scale_menu_item_set_base_icon_name (ScaleMenuItem *item,
+ const gchar *base_icon_name)
+{
+ ScaleMenuItemPrivate *priv;
+
+ g_return_if_fail (IS_SCALE_MENU_ITEM (item));
+
+ priv = GET_PRIVATE (item);
+
+ if (priv->icon_name)
+ g_free (priv->icon_name);
+
+ priv->icon_name = g_strdup (base_icon_name);
+}
+
+
+
+/* Private API */
static void
scale_menu_item_class_init (ScaleMenuItemClass *item_class)
{
@@ -192,21 +287,22 @@ scale_menu_item_class_init (ScaleMenuItemClass *item_class)
/**
* ScaleMenuItem::toggled:
* @menuitem: the #ScaleMenuItem emitting the signal.
- * @value: the new value
*
* Emitted whenever the mute switch is toggled.
*/
signals[TOGGLED] = g_signal_new ("toggled",
- G_OBJECT_CLASS_TYPE (gobject_class),
- G_SIGNAL_RUN_FIRST,
- 0,
- NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
+ G_OBJECT_CLASS_TYPE (gobject_class),
+ G_SIGNAL_RUN_FIRST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
g_type_class_add_private (item_class, sizeof (ScaleMenuItemPrivate));
}
+
+
static void
scale_menu_item_init (ScaleMenuItem *self)
{
@@ -222,6 +318,8 @@ scale_menu_item_init (ScaleMenuItem *self)
priv->icon_name = NULL;
}
+
+
static void
scale_menu_item_finalize (GObject *object)
{
@@ -243,8 +341,55 @@ scale_menu_item_finalize (GObject *object)
(*G_OBJECT_CLASS (scale_menu_item_parent_class)->finalize) (object);
}
+
+
+static void
+scale_menu_item_update_icon (ScaleMenuItem *self)
+{
+ ScaleMenuItemPrivate *priv = GET_PRIVATE (self);
+ gchar *icon_name = NULL;
+ gdouble value = gtk_range_get_value (GTK_RANGE (priv->scale));
+
+ /* Update the menuitem icon */
+ if (scale_menu_item_get_muted (self) || value <= 0.0)
+ {
+ icon_name = g_strconcat(priv->icon_name, "-muted-symbolic", NULL);
+ }
+ else if (value < 30.0)
+ {
+ icon_name = g_strconcat(priv->icon_name, "-low-symbolic", NULL);
+ }
+ else if (value < 70.0)
+ {
+ icon_name = g_strconcat(priv->icon_name, "-medium-symbolic", NULL);
+ }
+ else
+ {
+ icon_name = g_strconcat(priv->icon_name, "-high-symbolic", NULL);
+ }
+
+ gtk_image_set_from_icon_name (GTK_IMAGE (priv->image), icon_name, GTK_ICON_SIZE_MENU);
+ g_free (icon_name);
+}
+
+
+
+static void
+scale_menu_item_scale_value_changed (GtkRange *range,
+ gpointer user_data)
+{
+ ScaleMenuItem *self = SCALE_MENU_ITEM (user_data);
+ gdouble value = gtk_range_get_value (range);
+
+ g_signal_emit (self, signals[VALUE_CHANGED], 0, value);
+
+ scale_menu_item_update_icon (self);
+}
+
+
+
static gboolean
-scale_menu_item_button_press_event (GtkWidget *menuitem,
+scale_menu_item_button_press_event (GtkWidget *item,
GdkEventButton *event)
{
ScaleMenuItemPrivate *priv;
@@ -253,19 +398,19 @@ scale_menu_item_button_press_event (GtkWidget *menuitem,
TRACE("entering");
- g_return_val_if_fail (IS_SCALE_MENU_ITEM (menuitem), FALSE);
+ g_return_val_if_fail (IS_SCALE_MENU_ITEM (item), FALSE);
- priv = GET_PRIVATE (menuitem);
+ priv = GET_PRIVATE (item);
gtk_widget_get_allocation (priv->mute_toggle, &alloc);
- gtk_widget_translate_coordinates (GTK_WIDGET (menuitem), priv->mute_toggle, event->x, event->y, &x, &y);
+ gtk_widget_translate_coordinates (GTK_WIDGET (item), priv->mute_toggle, event->x, event->y, &x, &y);
if (x > 0 && x < alloc.width && y > 0 && y < alloc.height)
{
return TRUE;
}
gtk_widget_get_allocation (priv->scale, &alloc);
- gtk_widget_translate_coordinates (menuitem, priv->scale, event->x, event->y, &x, &y);
+ gtk_widget_translate_coordinates (item, priv->scale, event->x, event->y, &x, &y);
if (x > 0 && x < alloc.width && y > 0 && y < alloc.height)
{
gtk_widget_event (priv->scale, (GdkEvent*) event);
@@ -274,14 +419,16 @@ scale_menu_item_button_press_event (GtkWidget *menuitem,
if (!priv->grabbed)
{
priv->grabbed = TRUE;
- g_signal_emit (menuitem, signals[SLIDER_GRABBED], 0);
+ g_signal_emit (item, signals[SLIDER_GRABBED], 0);
}
return TRUE;
}
+
+
static gboolean
-scale_menu_item_button_release_event (GtkWidget *menuitem,
+scale_menu_item_button_release_event (GtkWidget *item,
GdkEventButton *event)
{
ScaleMenuItemPrivate *priv;
@@ -290,21 +437,21 @@ scale_menu_item_button_release_event (GtkWidget *menuitem,
TRACE("entering");
- g_return_val_if_fail (IS_SCALE_MENU_ITEM (menuitem), FALSE);
+ g_return_val_if_fail (IS_SCALE_MENU_ITEM (item), FALSE);
- priv = GET_PRIVATE (menuitem);
+ priv = GET_PRIVATE (item);
gtk_widget_get_allocation (priv->mute_toggle, &alloc);
- gtk_widget_translate_coordinates (GTK_WIDGET (menuitem), priv->mute_toggle, event->x, event->y, &x, &y);
+ gtk_widget_translate_coordinates (GTK_WIDGET (item), priv->mute_toggle, event->x, event->y, &x, &y);
if (x > 0 && x < alloc.width && y > 0 && y < alloc.height)
{
gtk_switch_set_active (GTK_SWITCH (priv->mute_toggle), !gtk_switch_get_active (GTK_SWITCH (priv->mute_toggle)));
- g_signal_emit (menuitem, signals[TOGGLED], 0);
+ g_signal_emit (item, signals[TOGGLED], 0);
return TRUE;
}
gtk_widget_get_allocation (priv->scale, &alloc);
- gtk_widget_translate_coordinates (menuitem, priv->scale, event->x, event->y, &x, &y);
+ gtk_widget_translate_coordinates (item, priv->scale, event->x, event->y, &x, &y);
if (x > 0 && x < alloc.width && y > 0 && y < alloc.height)
{
gtk_widget_event (priv->scale, (GdkEvent*) event);
@@ -313,14 +460,16 @@ scale_menu_item_button_release_event (GtkWidget *menuitem,
if (priv->grabbed)
{
priv->grabbed = FALSE;
- g_signal_emit (menuitem, signals[SLIDER_RELEASED], 0);
+ g_signal_emit (item, signals[SLIDER_RELEASED], 0);
}
return TRUE;
}
+
+
static gboolean
-scale_menu_item_motion_notify_event (GtkWidget *menuitem,
+scale_menu_item_motion_notify_event (GtkWidget *item,
GdkEventMotion *event)
{
ScaleMenuItemPrivate *priv;
@@ -328,13 +477,13 @@ scale_menu_item_motion_notify_event (GtkWidget *menuitem,
GtkAllocation alloc;
gint x, y;
- g_return_val_if_fail (IS_SCALE_MENU_ITEM (menuitem), FALSE);
+ g_return_val_if_fail (IS_SCALE_MENU_ITEM (item), FALSE);
- priv = GET_PRIVATE (menuitem);
+ priv = GET_PRIVATE (item);
scale = priv->scale;
gtk_widget_get_allocation (priv->scale, &alloc);
- gtk_widget_translate_coordinates (menuitem, priv->scale, event->x, event->y, &x, &y);
+ gtk_widget_translate_coordinates (item, priv->scale, event->x, event->y, &x, &y);
if (x > 0 && x < alloc.width && y > 0 && y < alloc.height)
{
@@ -344,6 +493,8 @@ scale_menu_item_motion_notify_event (GtkWidget *menuitem,
return TRUE;
}
+
+
static void
menu_hidden (GtkWidget *menu,
ScaleMenuItem *scale)
@@ -362,6 +513,8 @@ menu_hidden (GtkWidget *menu,
}
}
+
+
static void
scale_menu_item_parent_set (GtkWidget *item,
GtkWidget *previous_parent)
@@ -383,125 +536,3 @@ scale_menu_item_parent_set (GtkWidget *item,
g_signal_connect (parent, "hide", G_CALLBACK (menu_hidden), item);
}
}
-
-
-
-GtkWidget*
-scale_menu_item_new_with_range (gdouble min,
- gdouble max,
- gdouble step)
-{
- ScaleMenuItem *scale_item;
- ScaleMenuItemPrivate *priv;
-
- TRACE("entering");
-
- scale_item = SCALE_MENU_ITEM (g_object_new (TYPE_SCALE_MENU_ITEM, NULL));
-
- priv = GET_PRIVATE (scale_item);
-
- /* Configure the menu item image */
- priv->image = gtk_image_new ();
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (scale_item), priv->image);
-G_GNUC_END_IGNORE_DEPRECATIONS
-
- /* Configure the menu item scale */
- priv->scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, min, max, step);
- gtk_widget_set_size_request (priv->scale, 100, -1);
- gtk_range_set_inverted (GTK_RANGE(priv->scale), FALSE);
- gtk_scale_set_draw_value (GTK_SCALE(priv->scale), FALSE);
-
- if (max > 100.0)
- gtk_scale_add_mark (GTK_SCALE (priv->scale), 100.0, GTK_POS_BOTTOM, NULL);
-
- /* Configure the mute toggle */
- priv->mute_toggle = gtk_switch_new ();
-
- /* Pack the scale widget */
- priv->hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
- priv->vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- gtk_box_pack_start (GTK_BOX (priv->hbox), priv->scale, TRUE, TRUE, 0);
- gtk_box_set_center_widget (GTK_BOX (priv->vbox), priv->mute_toggle);
- gtk_box_pack_start (GTK_BOX (priv->hbox), priv->vbox, FALSE, FALSE, 0);
- gtk_container_add (GTK_CONTAINER (scale_item), priv->hbox);
- gtk_widget_show_all (priv->hbox);
-
- /* Connect events */
- g_signal_connect (priv->scale, "value-changed", G_CALLBACK (scale_menu_item_scale_value_changed), scale_item);
- gtk_widget_add_events (GTK_WIDGET(scale_item), GDK_SCROLL_MASK|GDK_POINTER_MOTION_MASK|GDK_BUTTON_MOTION_MASK);
-
- /* Keep references to the widgets */
- g_object_ref (priv->image);
- g_object_ref (priv->scale);
- g_object_ref (priv->mute_toggle);
- g_object_ref (priv->hbox);
- g_object_ref (priv->vbox);
-
- return GTK_WIDGET(scale_item);
-}
-
-void
-scale_menu_item_set_base_icon_name (ScaleMenuItem *item,
- const gchar *base_icon_name)
-{
- ScaleMenuItemPrivate *priv;
-
- g_return_if_fail (IS_SCALE_MENU_ITEM (item));
-
- priv = GET_PRIVATE (item);
-
- priv->icon_name = g_strdup (base_icon_name);
-}
-
-gdouble
-scale_menu_item_get_value (ScaleMenuItem *item)
-{
- ScaleMenuItemPrivate *priv;
-
- g_return_val_if_fail (IS_SCALE_MENU_ITEM (item), 0.0);
-
- priv = GET_PRIVATE (item);
-
- return gtk_range_get_value (GTK_RANGE (priv->scale));
-}
-
-void
-scale_menu_item_set_value (ScaleMenuItem *item,
- gdouble value)
-{
- ScaleMenuItemPrivate *priv;
-
- g_return_if_fail (IS_SCALE_MENU_ITEM (item));
-
- priv = GET_PRIVATE (item);
-
- gtk_range_set_value (GTK_RANGE (priv->scale), value);
-}
-
-gboolean
-scale_menu_item_get_muted (ScaleMenuItem *menuitem)
-{
- ScaleMenuItemPrivate *priv;
-
- g_return_val_if_fail (IS_SCALE_MENU_ITEM (menuitem), TRUE);
-
- priv = GET_PRIVATE (menuitem);
-
- return !gtk_switch_get_active (GTK_SWITCH (priv->mute_toggle));
-}
-
-void
-scale_menu_item_set_muted (ScaleMenuItem *menuitem,
- gboolean muted)
-{
- ScaleMenuItemPrivate *priv;
-
- g_return_if_fail (IS_SCALE_MENU_ITEM (menuitem));
-
- priv = GET_PRIVATE (menuitem);
-
- gtk_switch_set_active (GTK_SWITCH (priv->mute_toggle), !muted);
-
- scale_menu_item_update_icon (menuitem);
-}
diff --git a/panel-plugin/scalemenuitem.h b/panel-plugin/scalemenuitem.h
index c9d40b3..0c320e3 100644
--- a/panel-plugin/scalemenuitem.h
+++ b/panel-plugin/scalemenuitem.h
@@ -67,8 +67,8 @@ gdouble scale_menu_item_get_value (ScaleMenuItem *item);
void scale_menu_item_set_value (ScaleMenuItem *item,
gdouble value);
-gboolean scale_menu_item_get_muted (ScaleMenuItem *menuitem);
-void scale_menu_item_set_muted (ScaleMenuItem *menuitem,
+gboolean scale_menu_item_get_muted (ScaleMenuItem *item);
+void scale_menu_item_set_muted (ScaleMenuItem *item,
gboolean muted);
void scale_menu_item_set_base_icon_name (ScaleMenuItem *item,
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list