TEST_F(TestMenuitems, BuildScaleSmall) { GtkWidget * scale = ido_scale_menu_item_new("Label", IDO_RANGE_STYLE_SMALL, gtk_adjustment_new(0.5, 0.0, 1.0, 0.01, 0.1, 0.1)); EXPECT_TRUE(scale != NULL); EXPECT_TRUE(IDO_IS_SCALE_MENU_ITEM(scale)); EXPECT_TRUE(GTK_IS_MENU_ITEM(scale)); GtkWidget * menu = gtk_menu_new(); gtk_widget_show(menu); gtk_menu_shell_append(GTK_MENU_SHELL(menu), scale); gtk_widget_show(scale); gtk_widget_realize(scale); EXPECT_TRUE(gtk_widget_get_realized(scale)); g_object_ref_sink(menu); g_object_unref(menu); return; }
/** key_press_cb: **/ static gboolean key_press_cb(GtkWidget* widget, GdkEventKey* event, gpointer data) { gboolean digested = FALSE; ///g_return_val_if_fail(IS_INDICATOR_SOUND(data), FALSE); ///IndicatorSound *indicator = INDICATOR_SOUND (data); ///IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(indicator); AppletData *priv = myDataPtr; GtkWidget *menuitem; ///menuitem = get_current_item (GTK_CONTAINER (widget)); menuitem = gtk_menu_shell_get_selected_item (GTK_MENU_SHELL (widget)); if (IDO_IS_SCALE_MENU_ITEM(menuitem) == TRUE){ gdouble current_value = 0; gdouble new_value = 0; const gdouble five_percent = 5; gboolean is_voip_slider = FALSE; if (g_ascii_strcasecmp (ido_scale_menu_item_get_primary_label (IDO_SCALE_MENU_ITEM(menuitem)), "VOLUME") == 0) { g_debug ("vOLUME SLIDER KEY PRESS"); GtkWidget* slider_widget = volume_widget_get_ido_slider(VOLUME_WIDGET(priv->volume_widget)); GtkWidget* slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)slider_widget); GtkRange* range = (GtkRange*)slider; g_return_val_if_fail(GTK_IS_RANGE(range), FALSE); current_value = gtk_range_get_value(range); new_value = current_value; } else if (g_ascii_strcasecmp (ido_scale_menu_item_get_primary_label (IDO_SCALE_MENU_ITEM(menuitem)), "VOIP") == 0) { g_debug ("VOIP SLIDER KEY PRESS"); GtkWidget* slider_widget = voip_input_widget_get_ido_slider(VOIP_INPUT_WIDGET(priv->voip_widget)); GtkWidget* slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)slider_widget); GtkRange* range = (GtkRange*)slider; g_return_val_if_fail(GTK_IS_RANGE(range), FALSE); current_value = gtk_range_get_value(range); new_value = current_value; is_voip_slider = TRUE; } switch (event->keyval) { case GDK_KEY_Right: digested = TRUE; new_value = current_value + five_percent; break; case GDK_KEY_Left: digested = TRUE; new_value = current_value - five_percent; break; case GDK_KEY_plus: digested = TRUE; new_value = current_value + five_percent; break; case GDK_KEY_minus: digested = TRUE; new_value = current_value - five_percent; break; default: break; } new_value = CLAMP(new_value, 0, 100); if (new_value != current_value){ if (is_voip_slider == TRUE){ voip_input_widget_update (VOIP_INPUT_WIDGET(priv->voip_widget), new_value); } else{ volume_widget_update (VOLUME_WIDGET(priv->volume_widget), new_value, "keypress-update"); } } } else if (IS_TRANSPORT_WIDGET(menuitem) == TRUE) { TransportWidget* transport_widget = NULL; GList* elem; for ( elem = priv->transport_widgets_list; elem; elem = elem->next ) { transport_widget = TRANSPORT_WIDGET ( elem->data ); if ( transport_widget_is_selected( transport_widget ) ) break; } switch (event->keyval) { case GDK_KEY_Right: transport_widget_react_to_key_press_event ( transport_widget, TRANSPORT_ACTION_NEXT ); digested = TRUE; break; case GDK_KEY_Left: transport_widget_react_to_key_press_event ( transport_widget, TRANSPORT_ACTION_PREVIOUS ); digested = TRUE; break; case GDK_KEY_space: transport_widget_react_to_key_press_event ( transport_widget, TRANSPORT_ACTION_PLAY_PAUSE ); digested = TRUE; break; case GDK_KEY_Up: case GDK_KEY_Down: digested = FALSE; break; default: break; } } return digested; }