Author: kelnos Date: 2009-07-27 02:14:51 +0000 (Mon, 27 Jul 2009) New Revision: 30400
Added: xfce4-session/trunk/panel-plugin/ xfce4-session/trunk/panel-plugin/Makefile.am xfce4-session/trunk/panel-plugin/xfsm-logout-plugin-4.6.desktop.in.in xfce4-session/trunk/panel-plugin/xfsm-logout-plugin-ui.xml xfce4-session/trunk/panel-plugin/xfsm-logout-plugin.c xfce4-session/trunk/panel-plugin/xfsm-logout-plugin.desktop.in.in Modified: xfce4-session/trunk/Makefile.am xfce4-session/trunk/configure.in.in xfce4-session/trunk/po/POTFILES.in Log: add panel plugin that lists shutdown/logout actions Modified: xfce4-session/trunk/Makefile.am =================================================================== --- xfce4-session/trunk/Makefile.am 2009-07-27 02:14:40 UTC (rev 30399) +++ xfce4-session/trunk/Makefile.am 2009-07-27 02:14:51 UTC (rev 30400) @@ -10,8 +10,13 @@ xfce4-session \ xfce4-session-logout \ xfce4-tips \ - xfsm-shutdown-helper + xfsm-shutdown-helper \ + $(panel_plugin_dir) +if HAVE_LIBXFCE4PANEL +panel_plugin_dir = panel-plugin +endif + EXTRA_DIST = \ BUGS \ ChangeLog.pre-xfce-devel \ Modified: xfce4-session/trunk/configure.in.in =================================================================== --- xfce4-session/trunk/configure.in.in 2009-07-27 02:14:40 UTC (rev 30399) +++ xfce4-session/trunk/configure.in.in 2009-07-27 02:14:51 UTC (rev 30400) @@ -71,12 +71,24 @@ dnl Check for required packages XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.6.0]) XDT_CHECK_PACKAGE([LIBXFCEGUI4], [libxfcegui4-1.0], [4.6.0]) +XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.10.0]) XDT_CHECK_PACKAGE([LIBWNCK], [libwnck-1.0], [2.12]) XDT_CHECK_PACKAGE([DBUS], [dbus-1], [1.0.0]) XDT_CHECK_PACKAGE([DBUS_GLIB], [dbus-glib-1], [0.73]) XDT_CHECK_PACKAGE([XFCONF], [libxfconf-0], [4.6.0]) XDT_CHECK_PACKAGE([LIBGLADE], [libglade-2.0], [2.0.0]) +dnl we provide a panel plugin now +XDT_CHECK_OPTIONAL_PACKAGE([LIBXFCE4PANEL], [libxfce4panel-1.0], [4.6.0], + [panel-plugin], [Panel logout menu button], [yes]) +if test "x$LIBXFCE4PANEL_FOUND" = "xyes"; then + PANEL_MINOR=`echo $LIBXFCE4PANEL_VERSION | cut -d. -f2` + if test $PANEL_MINOR -lt 7; then + old_panel_plugin=yes + fi +fi +AM_CONDITIONAL([BUILD_OLD_PANEL_PLUGIN], [test "x$old_panel_plugin" = "xyes"]) + dnl Check for gnome support XDT_CHECK_OPTIONAL_PACKAGE([GNOME], [gconf-2.0], [2.4.0], [gnome], [Assistive technologies support], [no]) @@ -164,6 +176,7 @@ icons/scalable/Makefile libxfsm/Makefile libxfsm/xfce4-session-2.0.pc +panel-plugin/Makefile po/Makefile.in settings/Makefile xfce4-session/Makefile Added: xfce4-session/trunk/panel-plugin/Makefile.am =================================================================== --- xfce4-session/trunk/panel-plugin/Makefile.am (rev 0) +++ xfce4-session/trunk/panel-plugin/Makefile.am 2009-07-27 02:14:51 UTC (rev 30400) @@ -0,0 +1,89 @@ +plugindir = $(libdir)/xfce4/panel-plugins + +plugin_sources = \ + xfsm-logout-plugin.c \ + xfsm-logout-plugin-ui.h + +plugin_cflags = \ + $(LIBX11_CFLAGS) \ + $(LIBXFCE4PANEL_CFLAGS) \ + $(LIBXFCE4UTIL_CFLAGS) \ + $(LIBXFCEGUI4_CFLAGS) \ + $(GTK_CFLAGS) \ + $(DBUS_GLIB_CFLAGS) \ + -DLOCALEDIR=\"$(localedir)\" + +plugin_libs = \ + $(LIBX11_LIBS) \ + $(LIBXFCE4PANEL_LIBS) \ + $(LIBXFCE4UTIL_LIBS) \ + $(LIBXFCEGUI4_LIBS) \ + $(GTK_LIBS) \ + $(DBUS_GLIB_LIBS) + +if BUILD_OLD_PANEL_PLUGIN + +plugin_PROGRAMS = xfsm-logout-plugin + +xfsm_logout_plugin_SOURCES = $(plugin_sources) +xfsm_logout_plugin_CFLAGS = $(plugin_cflags) +xfsm_logout_plugin_LDADD = $(plugin_libs) + +else + +plugin_LTLIBRARIES = libxfsm-logout-plugin.la + +libxfsm_logout_plugin_la_SOURCES = $(plugin_sources) +libxfsm_logout_plugin_la_CFLAGS = $(plugin_cflags) +libxfsm_logout_plugin_la_LIBADD = $(plugin_libs) +libxfsm_logout_plugin_la_LDFLAGS = \ + -avoid-version \ + -export-dynamic \ + -module \ + -shared + +endif + +# .desktop file +# +# Some automake trickery here. Because we cannot use $(libexecdir) in the +# automake stage, we'll use sed to get the full path into the .desktop file. +# We also need to let intltool merge the translated fields, so we add an +# additional level of indirection: a <name>.desktop.in.in file. +# +if BUILD_OLD_PANEL_PLUGIN +dfile = xfsm-logout-plugin-4.6.desktop.in.in +else +dfile = xfsm-logout-plugin.desktop.in.in +endif + +desktop_in_in_files = $(dfile) +desktop_in_files = xfsm-logout-plugin.desktop.in + +desktopdir = $(datadir)/xfce4/panel-plugins +desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) +...@intltool_desktop_rule@ + +# get full path into .desktop file +xfsm-logout-plugin.desktop.in: $(srcdir)/$(dfile) + sed -e "s,\...@plugindir\@,$(plugindir)," $< > $@ + +if MAINTAINER_MODE + +xfsm-logout-plugin-ui.h: $(srcdir)/xfsm-logout-plugin-ui.xml Makefile + exo-csource --static --name=logout_plugin_ui $< > $@ + +BUILT_SOURCES = xfsm-logout-plugin-ui.h + +MAINTAINERCLEANFILES = $(BUILT_SOURCES) + +endif + +EXTRA_DIST = \ + xfsm-logout-plugin.desktop.in.in \ + xfsm-logout-plugin-4.6.desktop.in.in \ + xfsm-logout-plugin-ui.xml + +DISTCLEANFILES = \ + $(desktop_DATA) \ + $(desktop_in_files) Added: xfce4-session/trunk/panel-plugin/xfsm-logout-plugin-4.6.desktop.in.in =================================================================== --- xfce4-session/trunk/panel-plugin/xfsm-logout-plugin-4.6.desktop.in.in (rev 0) +++ xfce4-session/trunk/panel-plugin/xfsm-logout-plugin-4.6.desktop.in.in 2009-07-27 02:14:51 UTC (rev 30400) @@ -0,0 +1,7 @@ +[Xfce Panel] +Type=X-XFCE-PanelPlugin +Encoding=UTF-8 +_Name=Session Menu +_Comment=Shows a menu with options to lock the screen, suspend, shutdown, or log out +Icon=xfce4-session +x-xfce-ex...@plugindir@/xfsm-logout-plugin Added: xfce4-session/trunk/panel-plugin/xfsm-logout-plugin-ui.xml =================================================================== --- xfce4-session/trunk/panel-plugin/xfsm-logout-plugin-ui.xml (rev 0) +++ xfce4-session/trunk/panel-plugin/xfsm-logout-plugin-ui.xml 2009-07-27 02:14:51 UTC (rev 30400) @@ -0,0 +1,15 @@ +<ui> + <menubar name="main-menubar"> + <menu action="session-menu"> + <menuitem action="lock-screen"/> + <separator/> + <menuitem action="suspend"/> + <menuitem action="hibernate"/> + <separator/> + <menuitem action="reboot"/> + <menuitem action="shutdown"/> + <separator/> + <menuitem action="logout"/> + </menu> + </menubar> +</ui> Added: xfce4-session/trunk/panel-plugin/xfsm-logout-plugin.c =================================================================== --- xfce4-session/trunk/panel-plugin/xfsm-logout-plugin.c (rev 0) +++ xfce4-session/trunk/panel-plugin/xfsm-logout-plugin.c 2009-07-27 02:14:51 UTC (rev 30400) @@ -0,0 +1,406 @@ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <unistd.h> +#include <sys/types.h> +#include <pwd.h> + +#include <dbus/dbus-glib.h> + +#include <gtk/gtk.h> + +#include <libxfce4util/libxfce4util.h> +#include <libxfcegui4/libxfcegui4.h> +#include <libxfce4panel/libxfce4panel.h> + +#include "xfsm-logout-plugin-ui.h" + +#define BORDER 12 +#define DEFAULT_TIMEOUT 30 + +/* FIXME: don't copy this */ +typedef enum +{ + XFSM_SHUTDOWN_ASK = 0, + XFSM_SHUTDOWN_LOGOUT, + XFSM_SHUTDOWN_HALT, + XFSM_SHUTDOWN_REBOOT, + XFSM_SHUTDOWN_SUSPEND, + XFSM_SHUTDOWN_HIBERNATE, +} XfsmShutdownType; + + +typedef struct +{ + GtkActionGroup *action_group; + + GtkWidget *dialog; + GtkWidget *dialog_label; + gchar *dialog_text_fmt; + guint time_left; + guint time_left_id; + gboolean allow_save; +} XfsmLogoutPlugin; + + +static void xfsm_logout_plugin_lock_screen(GtkAction *action, + gpointer user_data); +static void xfsm_logout_plugin_do_something(GtkAction *action, + gpointer user_data); + +/* FIXME: replace with xdg spec icon names where appropriate */ +static const GtkActionEntry action_entries[] = +{ + { "session-menu", NULL, N_("Session"), NULL, NULL, NULL }, + { "lock-screen", "system-lock-screen", N_("Loc_k screen"), NULL, NULL, G_CALLBACK(xfsm_logout_plugin_lock_screen) }, + { "suspend", "xfsm-suspend", N_("_Suspend"), NULL, NULL, G_CALLBACK(xfsm_logout_plugin_do_something) }, + { "hibernate", "xfsm-hibernate", N_("_Hibernate"), NULL, NULL, G_CALLBACK(xfsm_logout_plugin_do_something) }, + { "reboot", "xfsm-reboot", N_("_Reboot"), NULL, NULL, G_CALLBACK(xfsm_logout_plugin_do_something) }, + { "shutdown", "system-shutdown", N_("Shut _down"), NULL, NULL, G_CALLBACK(xfsm_logout_plugin_do_something) }, + { "logout", "system-log-out", N_("_Log out"), NULL, NULL, G_CALLBACK(xfsm_logout_plugin_do_something) }, +}; + +static const struct +{ + const gchar *primary; + const gchar *secondary; + const gchar *button_text; + const gchar *button_icon_name; + const gchar *error_text; +} dialog_strings[] = { + { NULL, NULL, NULL, NULL }, /* XFSM_SHUTDOWN_ASK */ + { /* XFSM_SHUTDOWN_LOGOUT */ + N_("Are you sure you want to log out?"), + N_("You will be logged out in %u seconds."), + N_("_Log out"), + "system-log-out", + N_("Failed to log out.") + }, + { /* XFSM_SHUTDOWN_HALT */ + N_("Are you sure you want to shut down?"), + N_("Your system will shut down in %u seconds."), + N_("Shut _down"), + "system-shutdown", + N_("Failed to shut down.") + }, + { /* XFSM_SHUTDOWN_REBOOT */ + N_("Are you sure you want to reboot?"), + N_("Your system will reboot in %u seconds."), + N_("_Reboot"), + "xfsm-reboot", + N_("Failed to reboot.") + }, + { /* XFSM_SHUTDOWN_SUSPEND */ + NULL, + NULL, + N_("_Suspend"), + "xfsm-suspend", + N_("Failed to suspend") + }, + { /* XFSM_SHUTDOWN_HIBERNATE */ + NULL, + NULL, + N_("_Hibernate"), + "xfsm-hibernate", + N_("Failed to hibernate") + }, +}; + +static void +xfsm_logout_plugin_lock_screen(GtkAction *action, + gpointer user_data) +{ + xfce_exec("xflock4", FALSE, FALSE, NULL); +} + +static gboolean +xfsm_logout_plugin_do_dbus_call(XfsmLogoutPlugin *logout_plugin, + XfsmShutdownType type, + GError **error) +{ + DBusGConnection *conn; + DBusGProxy *proxy; + gboolean ret; + + g_return_val_if_fail(logout_plugin != NULL, FALSE); + g_return_val_if_fail(type >= XFSM_SHUTDOWN_LOGOUT && type <= XFSM_SHUTDOWN_HIBERNATE, FALSE); + g_return_val_if_fail(!error || !*error, FALSE); + + conn = dbus_g_bus_get(DBUS_BUS_SESSION, error); + if(!conn) + return FALSE; + + proxy = dbus_g_proxy_new_for_name(conn, "org.xfce.SessionManager", + "/org/xfce/SessionManager", + "org.xfce.Session.Manager"); + ret = dbus_g_proxy_call(proxy, "Shutdown", error, + G_TYPE_UINT, type, + G_TYPE_BOOLEAN, logout_plugin->allow_save, + G_TYPE_INVALID); + g_object_unref(G_OBJECT(proxy)); + + return ret; +} + +static gboolean +xfsm_logout_dialog_update_time_left(gpointer data) +{ + XfsmLogoutPlugin *logout_plugin = data; + gchar *text; + + if(--logout_plugin->time_left == 0) { + /* unattended shutdown, so don't allow apps to cancel shutdown */ + logout_plugin->allow_save = FALSE; + logout_plugin->time_left_id = 0; + gtk_dialog_response(GTK_DIALOG(logout_plugin->dialog), + GTK_RESPONSE_ACCEPT); + return FALSE; + } + + text = g_strdup_printf(logout_plugin->dialog_text_fmt, + logout_plugin->time_left); + gtk_label_set_markup(GTK_LABEL(logout_plugin->dialog_label), text); + g_free(text); + + return TRUE; +} + +static void +xfsm_logout_plugin_show_confirmation_dialog(XfsmLogoutPlugin *logout_plugin, + XfsmShutdownType type) +{ + gint resp = GTK_RESPONSE_ACCEPT; + + g_return_if_fail(logout_plugin != NULL); + g_return_if_fail(type >= XFSM_SHUTDOWN_LOGOUT && type <= XFSM_SHUTDOWN_HIBERNATE); + + logout_plugin->allow_save = TRUE; + + if(type != XFSM_SHUTDOWN_SUSPEND && type != XFSM_SHUTDOWN_HIBERNATE) { + GtkWidget *dialog, *topvbox, *hbox, *image, *label; + GtkWidget *button, *btn_hbox, *align; + gchar *text; + + dialog = gtk_dialog_new_with_buttons(_("Close Session"), NULL, + GTK_DIALOG_NO_SEPARATOR, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + NULL); + gtk_window_set_keep_above(GTK_WINDOW(dialog), TRUE); + gtk_window_stick(GTK_WINDOW(dialog)); + gtk_window_set_skip_taskbar_hint(GTK_WINDOW(dialog), TRUE); + gtk_container_set_border_width(GTK_CONTAINER(dialog), BORDER/6); + + button = gtk_button_new(); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button, + GTK_RESPONSE_ACCEPT); + + align = gtk_alignment_new(0.5, 0.5, 0.0, 0.0); + gtk_container_add(GTK_CONTAINER(button), align); + + btn_hbox = gtk_hbox_new(FALSE, BORDER/6); + gtk_container_add(GTK_CONTAINER(align), btn_hbox); + + image = gtk_image_new_from_icon_name(dialog_strings[type].button_icon_name, + GTK_ICON_SIZE_BUTTON); + gtk_box_pack_start(GTK_BOX(btn_hbox), image, FALSE, FALSE, 0); + + label = gtk_label_new_with_mnemonic(_(dialog_strings[type].button_text)); + gtk_label_set_mnemonic_widget(GTK_LABEL(label), button); + gtk_box_pack_end(GTK_BOX(btn_hbox), label, FALSE, FALSE, 0); + + gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT); + +#if GTK_CHECK_VERSION(2, 14, 0) + topvbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); +#else + topvbox = GTK_DIALOG(dialog)->vbox; +#endif + + hbox = gtk_hbox_new(FALSE, BORDER); + gtk_container_set_border_width(GTK_CONTAINER(hbox), BORDER/2); + gtk_box_pack_start(GTK_BOX(topvbox), hbox, FALSE, FALSE, 0); + + image = gtk_image_new_from_stock(GTK_STOCK_DIALOG_QUESTION, + GTK_ICON_SIZE_DIALOG); + gtk_misc_set_alignment(GTK_MISC(image), 0.0, 0.0); + gtk_box_pack_start(GTK_BOX(hbox), image, TRUE, FALSE, 0); + + logout_plugin->dialog_text_fmt = g_strdup_printf("<span weight='bold' size='larger'>%s</span>\n\n%s", + _(dialog_strings[type].primary), + _(dialog_strings[type].secondary)); + text = g_strdup_printf(logout_plugin->dialog_text_fmt, DEFAULT_TIMEOUT); + + label = gtk_label_new(NULL); + gtk_label_set_markup(GTK_LABEL(label), text); + gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); + gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); + + g_free(text); + + logout_plugin->dialog = dialog; + logout_plugin->dialog_label = label; + logout_plugin->time_left = DEFAULT_TIMEOUT; + logout_plugin->time_left_id = g_timeout_add_seconds(1, + xfsm_logout_dialog_update_time_left, + logout_plugin); + + gtk_widget_show_all(dialog); + resp = gtk_dialog_run(GTK_DIALOG(dialog)); + + if(logout_plugin->time_left_id) { + g_source_remove(logout_plugin->time_left_id); + logout_plugin->time_left_id = 0; + } + + g_free(logout_plugin->dialog_text_fmt); + logout_plugin->dialog_text_fmt = NULL; + + gtk_widget_destroy(dialog); + logout_plugin->dialog = NULL; + logout_plugin->dialog_label = NULL; + + /* get the dialog to go away */ + while(gtk_events_pending()) + gtk_main_iteration(); + } + + if(resp == GTK_RESPONSE_ACCEPT) { + GError *error = NULL; + + if(!xfsm_logout_plugin_do_dbus_call(logout_plugin, type, &error)) { + xfce_message_dialog(NULL, _("Session Error"), + GTK_STOCK_DIALOG_ERROR, + _(dialog_strings[type].error_text), + error->message, + GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT, + NULL); + g_error_free(error); + } + } +} + +static void +xfsm_logout_plugin_do_something(GtkAction *action, + gpointer user_data) +{ + XfsmLogoutPlugin *plugin = user_data; + const gchar *name; + XfsmShutdownType type = XFSM_SHUTDOWN_ASK; + + name = gtk_action_get_name(action); + if(!strcmp(name, "logout")) + type = XFSM_SHUTDOWN_LOGOUT; + else if(!strcmp(name, "reboot")) + type = XFSM_SHUTDOWN_REBOOT; + else if(!strcmp(name, "shutdown")) + type = XFSM_SHUTDOWN_HALT; + else if(!strcmp(name, "suspend")) + type = XFSM_SHUTDOWN_SUSPEND; + else if(!strcmp(name, "hibernate")) + type = XFSM_SHUTDOWN_HIBERNATE; + else { + g_critical(G_STRLOC ": Invalid action \"%s\"", name); + return; + } + + xfsm_logout_plugin_show_confirmation_dialog(plugin, type); +} + +static void +xfsm_logout_plugin_size_changed(XfcePanelPlugin *plugin, + gint size, + gpointer user_data) +{ + GtkWidget *menubar = user_data; + + if(xfce_panel_plugin_get_orientation(plugin) == GTK_ORIENTATION_HORIZONTAL) + gtk_widget_set_size_request(menubar, -1, size); + else + gtk_widget_set_size_request(menubar, size, -1); +} + +static void +xfsm_logout_plugin_free_data(XfcePanelPlugin *plugin, + gpointer user_data) +{ + XfsmLogoutPlugin *logout_plugin = user_data; + + if(logout_plugin->dialog) { + /* this will take care of cleaning up the timeout source as + * well as destroying the dialog */ + gtk_dialog_response(GTK_DIALOG(logout_plugin->dialog), + GTK_RESPONSE_CANCEL); + } + + g_object_unref(G_OBJECT(logout_plugin->action_group)); + + g_free(logout_plugin); +} + +static void +xfsm_logout_plugin_construct(XfcePanelPlugin *plugin) +{ + XfsmLogoutPlugin *logout_plugin; + GtkUIManager *uimgr; + GtkWidget *menubar, *mi, *label, *submenu; + struct passwd *pwent; + + xfce_textdomain(GETTEXT_PACKAGE, LOCALEDIR, "UTF-8"); + + gdk_set_sm_client_id("fake-client-id-xfsm-logout-plugin"); + gtk_window_set_default_icon_name("xfce4-session"); + /* obey Fitt's law */ + gtk_rc_parse_string("style \"menubar-style\" {\n" + " GtkMenuBar::shadow-type = GTK_SHADOW_NONE\n" + "}\n" + "class \"GtkMenuBar\" style \"menubar-style\""); + + logout_plugin = g_new0(XfsmLogoutPlugin, 1); + + logout_plugin->action_group = gtk_action_group_new("logout-plugin"); + gtk_action_group_set_translation_domain(logout_plugin->action_group, + GETTEXT_PACKAGE); + gtk_action_group_add_actions(logout_plugin->action_group, action_entries, + G_N_ELEMENTS(action_entries), + logout_plugin); + + uimgr = gtk_ui_manager_new(); + gtk_ui_manager_insert_action_group(uimgr, logout_plugin->action_group, 0); + gtk_ui_manager_add_ui_from_string(uimgr, logout_plugin_ui, + logout_plugin_ui_length, NULL); + + mi = gtk_ui_manager_get_widget(uimgr, "/main-menubar/session-menu"); + + pwent = getpwuid(geteuid()); + if(pwent) { + label = gtk_bin_get_child(GTK_BIN(mi)); + gtk_label_set_text(GTK_LABEL(label), pwent->pw_name); + } + + menubar = gtk_ui_manager_get_widget(uimgr, "/main-menubar"); + gtk_container_set_border_width(GTK_CONTAINER(menubar), 0); + gtk_container_add(GTK_CONTAINER(plugin), menubar); + xfce_panel_plugin_add_action_widget(plugin, menubar); + + submenu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(mi)); + xfce_panel_plugin_register_menu(plugin, GTK_MENU(submenu)); + + /* annoyingly, handling size-changed is required even if we don't + * do anything special. otherwise we get truncated. */ + g_signal_connect(plugin, "size-changed", + G_CALLBACK(xfsm_logout_plugin_size_changed), menubar); + g_signal_connect(plugin, "free-data", + G_CALLBACK(xfsm_logout_plugin_free_data), logout_plugin); + + gtk_widget_show_all(GTK_WIDGET(plugin)); + g_object_unref(G_OBJECT(uimgr)); +} + +#ifdef XFCE_PANEL_PLUGIN_REGISTER_EXTERNAL /* panel <= 4.6 */ +XFCE_PANEL_PLUGIN_REGISTER_EXTERNAL(xfsm_logout_plugin_construct) +#else /* panel >= 4.7 */ +XFCE_PANEL_PLUGIN_REGISTER(xfsm_logout_plugin_construct) +#endif Added: xfce4-session/trunk/panel-plugin/xfsm-logout-plugin.desktop.in.in =================================================================== --- xfce4-session/trunk/panel-plugin/xfsm-logout-plugin.desktop.in.in (rev 0) +++ xfce4-session/trunk/panel-plugin/xfsm-logout-plugin.desktop.in.in 2009-07-27 02:14:51 UTC (rev 30400) @@ -0,0 +1,9 @@ +[Xfce Panel] +Type=X-XFCE-PanelPlugin +Encoding=UTF-8 +_Name=Session Menu +_Comment=Shows a menu with options to lock the screen, suspend, shutdown, or log out +Icon=xfce4-session +X-XFCE-Module=xfsm-logout-plugin +x-xfce-module-pa...@plugindir@ +X-XFCE-Internal=FALSE Modified: xfce4-session/trunk/po/POTFILES.in =================================================================== --- xfce4-session/trunk/po/POTFILES.in 2009-07-27 02:14:40 UTC (rev 30399) +++ xfce4-session/trunk/po/POTFILES.in 2009-07-27 02:14:51 UTC (rev 30400) @@ -4,6 +4,7 @@ engines/balou/config.c engines/mice/mice.c engines/simple/simple.c +panel-plugin/xfsm-logout-plugin.c settings/main.c settings/session-editor.c settings/splash-settings.c @@ -26,6 +27,7 @@ # files added by intltool-prepare. +panel-plugin/xfsm-logout-plugin.desktop.in settings/xfce-session-settings.desktop.in settings/xfce4-session-settings.glade xfce4-tips/xfce4-tips-autostart.desktop.in _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits