From cac9ec783a2fd4a15635ebf015eb5a775711ed78 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 17 Feb 2010 21:33:57 -0600 Subject: Switch to having a launcher be a standard item with an icon. --- src/launcher-menu-item.c | 21 ++++++++++++++++++--- src/launcher-menu-item.h | 1 + 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/launcher-menu-item.c b/src/launcher-menu-item.c index 50e8ce6..1573367 100644 --- a/src/launcher-menu-item.c +++ b/src/launcher-menu-item.c @@ -131,9 +131,10 @@ launcher_menu_item_new (const gchar * desktop_file) priv->desktop = g_strdup(desktop_file); g_debug("\tName: %s", launcher_menu_item_get_name(self)); - dbusmenu_menuitem_property_set(DBUSMENU_MENUITEM(self), DBUSMENU_MENUITEM_PROP_TYPE, LAUNCHER_MENUITEM_TYPE); - dbusmenu_menuitem_property_set(DBUSMENU_MENUITEM(self), LAUNCHER_MENUITEM_PROP_APP_NAME, launcher_menu_item_get_name(self)); - dbusmenu_menuitem_property_set(DBUSMENU_MENUITEM(self), LAUNCHER_MENUITEM_PROP_APP_DESC, launcher_menu_item_get_description(self)); + dbusmenu_menuitem_property_set(DBUSMENU_MENUITEM(self), DBUSMENU_MENUITEM_PROP_LABEL, launcher_menu_item_get_name(self)); + gchar * iconstr = launcher_menu_item_get_icon(self); + dbusmenu_menuitem_property_set(DBUSMENU_MENUITEM(self), DBUSMENU_MENUITEM_PROP_ICON_NAME, iconstr); + g_free(iconstr); g_signal_connect(G_OBJECT(self), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(activate_cb), NULL); @@ -156,6 +157,20 @@ launcher_menu_item_get_name (LauncherMenuItem * appitem) } } +gchar * +launcher_menu_item_get_icon (LauncherMenuItem * appitem) +{ + LauncherMenuItemPrivate * priv = LAUNCHER_MENU_ITEM_GET_PRIVATE(appitem); + + if (priv->appinfo == NULL) { + return NULL; + } else { + GIcon * icon = g_app_info_get_icon(priv->appinfo); + gchar * iconstr = g_icon_to_string(icon); + return iconstr; + } +} + /* When the menu item is clicked on it tries to launch the application that is represented by the desktop file */ static void diff --git a/src/launcher-menu-item.h b/src/launcher-menu-item.h index 3e031d5..7403bc7 100644 --- a/src/launcher-menu-item.h +++ b/src/launcher-menu-item.h @@ -57,6 +57,7 @@ LauncherMenuItem * launcher_menu_item_new (const gchar * desktop_file); const gchar * launcher_menu_item_get_name (LauncherMenuItem * appitem); const gchar * launcher_menu_item_get_desktop (LauncherMenuItem * launchitem); const gchar * launcher_menu_item_get_description (LauncherMenuItem * li); +gchar * launcher_menu_item_get_icon (LauncherMenuItem * appitem); void launcher_menu_item_set_eclipsed (LauncherMenuItem * li, gboolean eclipsed); gboolean launcher_menu_item_get_eclipsed (LauncherMenuItem * li); -- cgit v1.2.3 From 4149cfe250b6434170cc863f49d92eefb4e57138 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 17 Feb 2010 21:36:33 -0600 Subject: Removing the launcher custom menu type --- src/dbus-data.h | 4 ---- src/indicator-messages.c | 35 ----------------------------------- 2 files changed, 39 deletions(-) diff --git a/src/dbus-data.h b/src/dbus-data.h index 9f53f94..e3d9fd5 100644 --- a/src/dbus-data.h +++ b/src/dbus-data.h @@ -8,10 +8,6 @@ #define INDICATOR_MESSAGES_DBUS_SERVICE_OBJECT "/org/ayatana/indicator/messages/service" #define INDICATOR_MESSAGES_DBUS_SERVICE_INTERFACE "org.ayatana.indicator.messages.service" -#define LAUNCHER_MENUITEM_TYPE "launcher-item" -#define LAUNCHER_MENUITEM_PROP_APP_NAME "application-name" -#define LAUNCHER_MENUITEM_PROP_APP_DESC "application-description" - #define APPLICATION_MENUITEM_TYPE "application-item" #define APPLICATION_MENUITEM_PROP_NAME "app-name" #define APPLICATION_MENUITEM_PROP_COUNT "app-count" diff --git a/src/indicator-messages.c b/src/indicator-messages.c index acb2e68..3f533a5 100644 --- a/src/indicator-messages.c +++ b/src/indicator-messages.c @@ -337,40 +337,6 @@ new_indicator_item (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, Dbusm return TRUE; } -static gboolean -new_launcher_item (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client) -{ - g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE); - g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE); - /* Note: not checking parent, it's reasonable for it to be NULL */ - - GtkMenuItem * gmi = GTK_MENU_ITEM(gtk_menu_item_new()); - - GtkWidget * vbox = gtk_vbox_new(TRUE, 2); - - GtkWidget * app_label = gtk_label_new(dbusmenu_menuitem_property_get(newitem, LAUNCHER_MENUITEM_PROP_APP_NAME)); - gtk_misc_set_alignment(GTK_MISC(app_label), 0.0, 0.5); - GtkWidget * dsc_label = gtk_label_new(""); - gtk_misc_set_alignment(GTK_MISC(dsc_label), 0.0, 0.5); - gtk_label_set_ellipsize(GTK_LABEL(dsc_label), PANGO_ELLIPSIZE_END); - gtk_widget_set_size_request(dsc_label, 200, -1); - gchar * markup = g_markup_printf_escaped("%s", dbusmenu_menuitem_property_get(newitem, LAUNCHER_MENUITEM_PROP_APP_DESC)); - gtk_label_set_markup(GTK_LABEL(dsc_label), markup); - g_free(markup); - - gtk_box_pack_start(GTK_BOX(vbox), app_label, FALSE, FALSE, 0); - gtk_widget_show(app_label); - gtk_box_pack_start(GTK_BOX(vbox), dsc_label, FALSE, FALSE, 0); - gtk_widget_show(dsc_label); - - gtk_container_add(GTK_CONTAINER(gmi), GTK_WIDGET(vbox)); - gtk_widget_show(GTK_WIDGET(vbox)); - - dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), newitem, gmi, parent); - - return TRUE; -} - static GtkImage * get_icon (IndicatorObject * io) { @@ -409,7 +375,6 @@ get_menu (IndicatorObject * io) DbusmenuGtkMenu * menu = dbusmenu_gtkmenu_new(INDICATOR_MESSAGES_DBUS_NAME, INDICATOR_MESSAGES_DBUS_OBJECT); DbusmenuGtkClient * client = dbusmenu_gtkmenu_get_client(menu); - dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), LAUNCHER_MENUITEM_TYPE, new_launcher_item); dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), INDICATOR_MENUITEM_TYPE, new_indicator_item); return GTK_MENU(menu); -- cgit v1.2.3 From 256417a46e8798eb32d025081aa205efce8cbebe Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 17 Feb 2010 21:45:29 -0600 Subject: Put the icons into the active items. --- src/app-menu-item.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/app-menu-item.c b/src/app-menu-item.c index 5fc2a9c..b302eee 100644 --- a/src/app-menu-item.c +++ b/src/app-menu-item.c @@ -257,6 +257,12 @@ desktop_cb (IndicateListener * listener, IndicateListenerServer * server, gchar priv->desktop = g_strdup(value); update_label(self); + + GIcon * icon = g_app_info_get_icon(priv->appinfo); + gchar * iconstr = g_icon_to_string(icon); + dbusmenu_menuitem_property_set(DBUSMENU_MENUITEM(self), DBUSMENU_MENUITEM_PROP_ICON_NAME, iconstr); + g_free(iconstr); + g_signal_emit(G_OBJECT(self), signals[NAME_CHANGED], 0, app_menu_item_get_name(self), TRUE); return; -- cgit v1.2.3