[Xfce4-commits] <xfce4-xkb-plugin:master> Add panel menu item for launching xfce4-keyboard-settings.
Igor Slepchin
noreply at xfce.org
Wed Aug 22 23:24:11 CEST 2012
Updating branch refs/heads/master
to 7def538702e33dac1477692721d337ca1d6629e8 (commit)
from d7490a02ab8cd69a6e161e160f76adc2a600105e (commit)
commit 7def538702e33dac1477692721d337ca1d6629e8
Author: Igor Slepchin <igor.slepchin at gmail.com>
Date: Mon Jul 23 20:09:11 2012 -0400
Add panel menu item for launching xfce4-keyboard-settings.
Is there a better way to launch a .desktop entry?
panel-plugin/xfce4-xkb-plugin.c | 43 +++++++++++++++++++++++++++++++++++++++
po/POTFILES.in | 1 +
2 files changed, 44 insertions(+), 0 deletions(-)
diff --git a/panel-plugin/xfce4-xkb-plugin.c b/panel-plugin/xfce4-xkb-plugin.c
index 74e07ed..c8fba66 100644
--- a/panel-plugin/xfce4-xkb-plugin.c
+++ b/panel-plugin/xfce4-xkb-plugin.c
@@ -77,6 +77,9 @@ static void xkb_load_default (t_xkb *xkb);
static void xkb_initialize_popup_menu (t_xkb *xkb);
+static void xfce_xkb_configure_layout (GtkWidget *widget,
+ gpointer user_data);
+
/* ================================================================== *
* Implementation *
@@ -87,7 +90,13 @@ XFCE_PANEL_PLUGIN_REGISTER_EXTERNAL (xfce_xkb_construct);
static void
xfce_xkb_construct (XfcePanelPlugin *plugin)
{
+ GtkWidget *configure_layouts;
+ GtkIconTheme *theme;
+ GtkWidget *image;
+ GdkPixbuf *pixbuf;
+
t_xkb *xkb = xkb_new (plugin);
+
xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8");
g_signal_connect (plugin, "orientation-changed",
@@ -110,6 +119,27 @@ xfce_xkb_construct (XfcePanelPlugin *plugin)
g_signal_connect (plugin, "about",
G_CALLBACK (xfce_xkb_about), xkb);
+ configure_layouts =
+ gtk_image_menu_item_new_with_label (_("Keyboard settings"));
+
+ theme = gtk_icon_theme_get_for_screen (gdk_screen_get_default());
+ pixbuf = gtk_icon_theme_load_icon (theme, "preferences-desktop-keyboard",
+ GTK_ICON_SIZE_MENU, 0, NULL);
+ if (pixbuf != NULL)
+ {
+ image = gtk_image_new ();
+ gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (configure_layouts),
+ image);
+ g_object_unref (pixbuf);
+ }
+
+ gtk_widget_show (configure_layouts);
+ xfce_panel_plugin_menu_insert_item (plugin,
+ GTK_MENU_ITEM (configure_layouts));
+
+ g_signal_connect (G_OBJECT (configure_layouts), "activate",
+ G_CALLBACK (xfce_xkb_configure_layout), NULL);
}
static void
@@ -382,3 +412,16 @@ xkb_refresh_gui (t_xkb *xkb)
xkb->button_hsize, xkb->button_vsize);
}
+static void
+xfce_xkb_configure_layout (GtkWidget *widget,
+ gpointer user_data)
+{
+ gchar *desktop_file = xfce_resource_lookup (XFCE_RESOURCE_DATA,
+ "applications/xfce-keyboard-settings.desktop");
+ gchar command[1024];
+ snprintf (command, sizeof (command), "exo-open %s", desktop_file);
+ command[sizeof (command) - 1] = '\0';
+ xfce_spawn_command_line_on_screen (gdk_screen_get_default (),
+ command, False, True, NULL);
+ g_free (desktop_file);
+}
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 7b48744..da1b0ae 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,6 +1,7 @@
# List of source files containing translatable strings.
panel-plugin/xkb-settings-dialog.c
+panel-plugin/xfce4-xkb-plugin.c
# files added by intltool-prepare.
panel-plugin/xkb-plugin.desktop.in.in
More information about the Xfce4-commits
mailing list