static gboolean new_transport_widget (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client, gpointer user_data) { g_debug("indicator-sound: new_transport_bar() called "); GtkWidget* bar = NULL; ///IndicatorObject *io = NULL; g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE); g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE); bar = transport_widget_new(newitem); /**io = g_object_get_data (G_OBJECT (client), "indicator"); IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(INDICATOR_SOUND (io)); priv->transport_widgets_list = g_list_append ( priv->transport_widgets_list, bar );*/ myData.transport_widgets_list = g_list_append ( myData.transport_widgets_list, bar ); GtkMenuItem *menu_transport_bar = GTK_MENU_ITEM(bar); gtk_widget_show_all(bar); dbusmenu_gtkclient_newitem_base (DBUSMENU_GTKCLIENT(client), newitem, menu_transport_bar, parent); return TRUE; }
static gboolean new_metadata_widget (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client, gpointer user_data) { g_debug("indicator-sound: new_metadata_widget"); GtkWidget* metadata = NULL; g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE); g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE); metadata = metadata_widget_new (newitem); g_debug ("%s (\"%s\")", __func__, dbusmenu_menuitem_property_get(newitem, DBUSMENU_METADATA_MENUITEM_PLAYER_NAME)); GtkMenuItem *menu_metadata_widget = GTK_MENU_ITEM(metadata); gtk_widget_show_all(metadata); dbusmenu_gtkclient_newitem_base (DBUSMENU_GTKCLIENT(client), newitem, menu_metadata_widget, parent); return TRUE; }
static gboolean new_mute_widget(DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client, gpointer user_data) { ///IndicatorObject *io = NULL; g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE); g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE); /**io = g_object_get_data (G_OBJECT (client), "indicator"); IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(INDICATOR_SOUND (io));*/ AppletData *priv = myDataPtr; if (priv->mute_widget != NULL){ g_object_unref (priv->mute_widget); priv->mute_widget = NULL; } priv->mute_widget = mute_widget_new(newitem); GtkMenuItem *item = mute_widget_get_menu_item (priv->mute_widget); dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), newitem, item, parent); return TRUE; }
/* Handler for all of the menu items on a root change to ensure that the menus are hidden before we start going and deleting things. */ static void popdown_all (DbusmenuMenuitem * mi, gpointer user_data) { GtkMenu * menu = dbusmenu_gtkclient_menuitem_get_submenu(DBUSMENU_GTKCLIENT(user_data), mi); if (menu != NULL) { gtk_menu_popdown(menu); } return; }
static gboolean new_volume_slider_widget(DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client, gpointer user_data) { g_debug("indicator-sound: new_volume_slider_widget"); GtkWidget* volume_widget = NULL; ///IndicatorObject *io = NULL; g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE); g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE); /**io = g_object_get_data (G_OBJECT (client), "indicator"); IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(INDICATOR_SOUND (io));*/ AppletData *priv = myDataPtr; if (priv->volume_widget != NULL){ ///volume_widget_tidy_up (priv->volume_widget); gtk_widget_destroy (priv->volume_widget); priv->volume_widget = NULL; } volume_widget = volume_widget_new (newitem/**, io*/); priv->volume_widget = volume_widget; // Don't forget to set the accessible desc. /// TODO: check that it's not needed... update_accessible_desc (-1/**io*/); GtkWidget* ido_slider_widget = volume_widget_get_ido_slider(VOLUME_WIDGET(priv->volume_widget)); gtk_widget_show_all(ido_slider_widget); // register the style callback on this widget with state manager's style change // handler (needs to remake the blocking animation for each style). /**g_signal_connect (ido_slider_widget, "style-set", G_CALLBACK(sound_state_manager_style_changed_cb), priv->state_manager);*/ GtkMenuItem *menu_volume_item = GTK_MENU_ITEM(ido_slider_widget); dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), newitem, menu_volume_item, parent); return TRUE; }
/** * new_voip_slider_widget * Create the voip menu item widget, must of the time this widget will be hidden. * @param newitem * @param parent * @param client * @param user_data * @return */ static gboolean new_voip_slider_widget (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client, gpointer user_data) { g_debug("indicator-sound: new_voip_slider_widget"); GtkWidget* voip_widget = NULL; ///IndicatorObject *io = NULL; g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE); g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE); /**io = g_object_get_data (G_OBJECT (client), "indicator"); IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(INDICATOR_SOUND (io));*/ AppletData *priv = myDataPtr; if (priv->voip_widget != NULL){ ///voip_input_widget_tidy_up (priv->voip_widget); gtk_widget_destroy (priv->voip_widget); priv->voip_widget = NULL; } voip_widget = voip_input_widget_new (newitem); priv->voip_widget = voip_widget; GtkWidget* ido_slider_widget = voip_input_widget_get_ido_slider(VOIP_INPUT_WIDGET(voip_widget)); gtk_widget_show_all(ido_slider_widget); GtkMenuItem *menu_volume_item = GTK_MENU_ITEM(ido_slider_widget); dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), newitem, menu_volume_item, parent); return TRUE; }
/* Builds a menu item representing a running application in the messaging menu */ static gboolean new_application_item (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client) { gchar *cName = g_strdup (dbusmenu_menuitem_property_get(newitem, APPLICATION_MENUITEM_PROP_NAME)); const gchar *sIconName = dbusmenu_menuitem_property_get (newitem, APPLICATION_MENUITEM_PROP_ICON); cd_debug ("%s (\"%s\")", __func__, cName); #ifdef FORCE_REMOVE_DOUBLE_ENTRIES #if (INDICATOR_OLD_NAMES == 0) if (newitem == NULL || !dbusmenu_menuitem_property_get_bool(newitem, DBUSMENU_MENUITEM_PROP_VISIBLE) #if INDICATOR_MESSAGES_HAS_LOZENGE == 1 && sIconName != NULL && *sIconName != '\0' // these menu #endif ) { dbusmenu_menuitem_child_delete (parent, newitem); cd_debug ("Not visible: %s", cName); g_free (cName); return TRUE; } #endif #endif GtkMenuItem * gmi = GTK_MENU_ITEM(gtk_image_menu_item_new()); gint padding = 4; gtk_widget_style_get(GTK_WIDGET(gmi), "toggle-spacing", &padding, NULL); GtkWidget * hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, padding); // Added for Cairo-Dock #if INDICATOR_MESSAGES_HAS_LOZENGE == 1 // we add a left margin if (! dbusmenu_menuitem_property_get_bool(newitem, DBUSMENU_MENUITEM_PROP_VISIBLE) && (sIconName == NULL || *sIconName == '\0')) { gint width, height; gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &width, &height); gtk_widget_set_size_request(GTK_WIDGET (gmi), -1, height + 4); gtk_widget_set_margin_left (hbox, width + padding); } #endif // end GtkWidget * icon = gtk_image_new_from_icon_name(sIconName, GTK_ICON_SIZE_MENU); gtk_misc_set_alignment(GTK_MISC(icon), 1.0 /* right aligned */, 0.5); gtk_box_pack_start (GTK_BOX (hbox), icon, FALSE, FALSE, 0); /* Application name in a label */ GtkWidget * label = gtk_label_new(cName); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); gtk_container_add(GTK_CONTAINER(gmi), hbox); gtk_widget_show_all (GTK_WIDGET (gmi)); /* Attach some of the standard GTK stuff */ dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), newitem, gmi, parent); /* Make sure we can handle the label changing */ g_signal_connect(G_OBJECT(newitem), DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED, G_CALLBACK(application_prop_change_cb), label); g_signal_connect(G_OBJECT(newitem), DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED, G_CALLBACK(application_icon_change_cb), icon); g_signal_connect_after(G_OBJECT (gmi), "draw", G_CALLBACK (application_triangle_draw_cb), newitem); g_free (cName); return TRUE; }