[gnome-panel] menu: add applications menu item
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-panel] menu: add applications menu item
- Date: Mon, 22 Jan 2018 17:54:00 +0000 (UTC)
commit 98b1f92aeb1e9018460d9c1cf78058c6f6bc28d2
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Mon Jan 22 17:49:33 2018 +0200
menu: add applications menu item
gnome-panel/gp-module-manager.c | 3 ++
modules/menu/gp-menu-bar-applet.c | 60 +++++++++++++++++++++++++++++++++++++
po/POTFILES.in | 1 +
3 files changed, 64 insertions(+), 0 deletions(-)
---
diff --git a/gnome-panel/gp-module-manager.c b/gnome-panel/gp-module-manager.c
index e5a81d5..8179aea 100644
--- a/gnome-panel/gp-module-manager.c
+++ b/gnome-panel/gp-module-manager.c
@@ -17,6 +17,7 @@
#include "config.h"
+#include <libgnome-panel/gp-image-menu-item.h>
#include <libgnome-panel/gp-module-private.h>
#include "gp-module-manager.h"
@@ -93,6 +94,8 @@ gp_module_manager_class_init (GpModuleManagerClass *manager_class)
object_class = G_OBJECT_CLASS (manager_class);
object_class->finalize = gp_module_manager_finalize;
+
+ g_type_ensure (GP_TYPE_IMAGE_MENU_ITEM);
}
static void
diff --git a/modules/menu/gp-menu-bar-applet.c b/modules/menu/gp-menu-bar-applet.c
index 774e6cd..105b799 100644
--- a/modules/menu/gp-menu-bar-applet.c
+++ b/modules/menu/gp-menu-bar-applet.c
@@ -16,18 +16,76 @@
*/
#include "config.h"
+
+#include <glib/gi18n-lib.h>
+#include <libgnome-panel/gp-image-menu-item.h>
+
#include "gp-menu-bar-applet.h"
#include "gp-menu-bar.h"
+#include "gp-menu.h"
struct _GpMenuBarApplet
{
GpApplet parent;
GtkWidget *menu_bar;
+
+ GtkWidget *applications_item;
+ GtkWidget *applications_menu;
};
G_DEFINE_TYPE (GpMenuBarApplet, gp_menu_bar_applet, GP_TYPE_APPLET)
+static gboolean
+button_press_event_cb (GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data)
+{
+ return TRUE;
+}
+
+static gchar *
+get_applications_menu (void)
+{
+ const gchar *xdg_menu_prefx;
+
+ xdg_menu_prefx = g_getenv ("XDG_MENU_PREFIX");
+ if (!xdg_menu_prefx || *xdg_menu_prefx == '\0')
+ return g_strdup ("gnome-applications.menu");
+
+ return g_strdup_printf ("%sapplications.menu", xdg_menu_prefx);
+}
+
+static void
+append_applications_item (GpMenuBarApplet *applet)
+{
+ GtkWidget *icon;
+ const gchar *tooltip;
+ gchar *menu;
+
+ icon = gtk_image_new_from_icon_name ("start-here", GTK_ICON_SIZE_MENU);
+ gtk_image_set_pixel_size (GTK_IMAGE (icon), 16);
+
+ applet->applications_item = gp_image_menu_item_new_with_label (_("Applications"));
+ gtk_menu_shell_append (GTK_MENU_SHELL (applet->menu_bar), applet->applications_item);
+ gp_image_menu_item_set_image (GP_IMAGE_MENU_ITEM (applet->applications_item), icon);
+ gtk_widget_show (applet->applications_item);
+
+ tooltip = _("Browse and run installed applications");
+ gtk_widget_set_tooltip_text (applet->applications_item, tooltip);
+
+ menu = get_applications_menu ();
+
+ applet->applications_menu = gp_menu_new_from_name (menu);
+ g_free (menu);
+
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (applet->applications_item),
+ applet->applications_menu);
+
+ g_signal_connect (applet->applications_menu, "button-press-event",
+ G_CALLBACK (button_press_event_cb), NULL);
+}
+
static void
gp_menu_bar_applet_setup (GpMenuBarApplet *menu_bar)
{
@@ -42,6 +100,8 @@ gp_menu_bar_applet_setup (GpMenuBarApplet *menu_bar)
g_object_bind_property (menu_bar, "position",
menu_bar->menu_bar, "position",
G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
+
+ append_applications_item (menu_bar);
}
static void
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 0210fde..f5f063c 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -59,6 +59,7 @@ modules/fish/fish-applet.c
modules/fish/fish-module.c
modules/fish/fish-menu.ui
modules/fish/fish.ui
+modules/menu/gp-menu-bar-applet.c
modules/menu/gp-menu-module.c
modules/menu/gp-menu.c
modules/notification-area/na-applet.c
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]