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 <[email protected]> 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. _______________________________________________ Xfce4-commits mailing list [email protected] https://mail.xfce.org/mailman/listinfo/xfce4-commits
