diff --git a/configure.ac b/configure.ac index ed07dce..bf98669 100644 --- a/configure.ac +++ b/configure.ac @@ -45,7 +45,7 @@ GTK_REQUIRED_VERSION=2.20.0 PANGO_REQUIRED_VERSION=1.3.0 SCROLLKEEPER_REQUIRED_VERSION=0.1.4 GCONF_REQUIRED_VERSION=2.31.3 -GNOME_PANEL_REQUIRED_VERSION=2.0.0 +GNOME_PANEL_REQUIRED_VERSION=2.31.90 LIBXKLAVIER_REQUIRED_VERSION=4.0 LIBCANBERRA_GTK_REQUIRED_VERSION=0.4 #FONTCONFIG_REQUIRED_VERSION=2.6.0 @@ -152,7 +152,7 @@ AC_SUBST(SIMPLE_CHOOSER_LIBS) PKG_CHECK_MODULES(APPLET, dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION gtk+-2.0 >= $GTK_REQUIRED_VERSION - libpanelapplet-2.0 >= $GNOME_PANEL_REQUIRED_VERSION) + libpanelapplet-3.0 >= $GNOME_PANEL_REQUIRED_VERSION) AC_SUBST(APPLET_CFLAGS) AC_SUBST(APPLET_LIBS) diff --git a/gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in b/gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in deleted file mode 100644 index a9b775f..0000000 --- a/gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml b/gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml deleted file mode 100644 index e1845c8..0000000 --- a/gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/gui/user-switch-applet/Makefile.am b/gui/user-switch-applet/Makefile.am index 2d2cdc0..cebe890 100644 --- a/gui/user-switch-applet/Makefile.am +++ b/gui/user-switch-applet/Makefile.am @@ -13,6 +13,7 @@ AM_CPPFLAGS = \ -DLIBEXECDIR=\""$(libexecdir)"\" \ -DSBINDIR=\""$(sbindir)"\" \ -DGDMCONFDIR=\"$(gdmconfdir)\" \ + -DGDM_USER_SWITCH_MENU_UI_DIR="\"$(uidir)\"" \ $(GTK_CFLAGS) \ $(APPLET_CFLAGS) \ $(NULL) @@ -34,34 +35,31 @@ gdm_user_switch_applet_LDADD = \ $(APPLET_LIBS) \ $(NULL) -# Bonobo UI -uidir = $(datadir)/gnome-2.0/ui -ui_DATA = \ - GNOME_FastUserSwitchApplet.xml \ - $(NULL) +uidir = $(datadir)/gnome-2.0/ui +ui_DATA = gdm-user-switch-applet-menu.xml -# Bonobo .server -serverdir = $(libdir)/bonobo/servers -server_in_files = \ - GNOME_FastUserSwitchApplet.server.in \ - $(NULL) -server_DATA = $(server_in_files:.server.in=.server) +appletdir = $(datadir)/gnome-panel/applets +applet_in_files = org.gnome.gdm.UserSwitch.panel-applet.in +applet_DATA = $(applet_in_files:.panel-applet.in=.panel-applet) -$(server_in_files): $(server_in_files:.server.in=.server.in.in) - sed -e "s|\@LIBEXECDIR\@|$(libexecdir)|" -e "s|\@VERSION\@|$(VERSION)|" $< > $@ +$(applet_in_files): $(applet_in_files).in Makefile + $(AM_V_GEN)$(SED) -e "s|\@LIBEXECDIR\@|$(libexecdir)|" -e "s|\@VERSION\@|$(VERSION)|" $< > $@ -@INTLTOOL_SERVER_RULE@ +%.panel-applet: %.panel-applet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*po) ; $(INTLTOOL_MERGE) $(top_srcdir)/po $< $@ -d -u -c $(top_builddir)/po/.intltool-merge-cache -EXTRA_DIST = \ - $(ui_DATA) \ - GNOME_FastUserSwitchApplet.server.in.in \ - $(NULL) +servicedir = $(datadir)/dbus-1/services +service_in_files = org.gnome.panel.applet.GdmUserSwitchAppletFactory.service.in +service_DATA = $(service_in_files:.service.in=.service) + +org.gnome.panel.applet.GdmUserSwitchAppletFactory.service: $(service_in_files) + $(AM_V_GEN)$(SED) -e "s|\@LIBEXECDIR\@|$(libexecdir)|" $< > $@ + +EXTRA_DIST = org.gnome.gdm.UserSwitch.panel-applet.in.in \ + $(service_in_files) \ + $(ui_DATA) \ + $(NULL) + +CLEANFILES = $(applet_DATA) $(applet_DATA).in $(service_DATA) -DISTCLEANFILES = \ - $(server_in_files) \ - $(server_DATA) \ - $(NULL) +MAINTAINERCLEANFILES = *~ Makefile.in -MAINTAINERCLEANFILES = \ - *~ \ - Makefile.in diff --git a/gui/user-switch-applet/applet.c b/gui/user-switch-applet/applet.c index b4f944c..74f7882 100644 --- a/gui/user-switch-applet/applet.c +++ b/gui/user-switch-applet/applet.c @@ -34,9 +34,6 @@ #include -#include -#include - #include #include @@ -102,16 +99,15 @@ static gboolean applet_factory (PanelApplet *applet, const char *iid, gpointer data); -PANEL_APPLET_BONOBO_FACTORY ("OAFIID:GNOME_FastUserSwitchApplet_Factory", - PANEL_TYPE_APPLET, - "gdm-user-switch-applet", "0", - (PanelAppletFactoryCallback)applet_factory, - NULL) +PANEL_APPLET_OUT_PROCESS_FACTORY ("GdmUserSwitchAppletFactory", + PANEL_TYPE_APPLET, + "gdm-user-switch-applet", + applet_factory, + NULL) static void -about_me_cb (BonoboUIComponent *ui_container, - gpointer data, - const char *cname) +about_me_cb (GtkAction *action, + gpointer data) { GError *err; @@ -120,10 +116,7 @@ about_me_cb (BonoboUIComponent *ui_container, g_critical ("Could not run `gnome-about-me': %s", err->message); g_error_free (err); - bonobo_ui_component_set_prop (ui_container, - "/commands/GdmAboutMe", - "hidden", "1", - NULL); + gtk_action_set_visible (action, FALSE); } } @@ -149,9 +142,8 @@ menubar_button_press_event_cb (GtkWidget *menubar, } static void -about_cb (BonoboUIComponent *ui_container, - gpointer data, - const char *cname) +about_cb (GtkAction *action, + gpointer data) { static const char *authors[] = { "James M. Cape ", @@ -195,9 +187,8 @@ about_cb (BonoboUIComponent *ui_container, static void -admin_cb (BonoboUIComponent *ui_container, - gpointer data, - const char *cname) +admin_cb (GtkAction *action, + gpointer data) { #ifdef USERS_ADMIN char **args; @@ -231,82 +222,6 @@ admin_cb (BonoboUIComponent *ui_container, } static void -set_menuitem_icon (BonoboUIComponent *component, - const char *item_path, - GtkIconTheme *theme, - const char *icon_name, - gint icon_size) -{ - GdkPixbuf *pixbuf; - int width; - int height; - - pixbuf = gtk_icon_theme_load_icon (theme, icon_name, icon_size, 0, NULL); - if (pixbuf == NULL) { - return; - } - - width = gdk_pixbuf_get_width (pixbuf); - height = gdk_pixbuf_get_height (pixbuf); - if (width > icon_size + 4 || height > icon_size + 4) { - GdkPixbuf *tmp; - if (height > width) { - width *= (gdouble) icon_size / (gdouble) height; - height = icon_size; - } else { - height *= (gdouble) icon_size / (gdouble) width; - width = icon_size; - } - tmp = gdk_pixbuf_scale_simple (pixbuf, width, height, GDK_INTERP_BILINEAR); - g_object_unref (pixbuf); - pixbuf = tmp; - } - - bonobo_ui_util_set_pixbuf (component, item_path, pixbuf, NULL); - g_object_unref (pixbuf); -} - -static void -applet_style_set_cb (GtkWidget *widget, - GtkStyle *old_style, - gpointer data) -{ - BonoboUIComponent *component; - GdkScreen *screen; - GtkIconTheme *theme; - int width; - int height; - int icon_size; - - if (gtk_widget_has_screen (widget)) { - screen = gtk_widget_get_screen (widget); - } else { - screen = gdk_screen_get_default (); - } - - if (gtk_icon_size_lookup_for_settings (gtk_settings_get_for_screen (screen), - GTK_ICON_SIZE_MENU, &width, &height)) { - icon_size = MAX (width, height); - } else { - icon_size = 16; - } - - theme = gtk_icon_theme_get_for_screen (screen); - component = panel_applet_get_popup_component (PANEL_APPLET (widget)); - - set_menuitem_icon (component, - "/commands/GdmAboutMe", - theme, - "user-info", - icon_size); - set_menuitem_icon (component, - "/commands/GdmUsersGroupsAdmin", - theme, - "stock_people", - icon_size); -} - -static void applet_change_background_cb (PanelApplet *applet, PanelAppletBackgroundType type, GdkColor *color, @@ -1389,18 +1304,23 @@ on_presence_status_text_changed (DBusGProxy *presence_proxy, static gboolean fill_applet (PanelApplet *applet) { - static const BonoboUIVerb menu_verbs[] = { - BONOBO_UI_VERB ("GdmAboutMe", about_me_cb), - BONOBO_UI_VERB ("GdmUsersGroupsAdmin", admin_cb), - BONOBO_UI_VERB ("GdmAbout", about_cb), - BONOBO_UI_VERB_END + static const GtkActionEntry gdm_user_switch_applet_actions[] = { + { "GdmAboutMe", "user-info", N_("Edit Personal _Information"), + NULL, NULL, + G_CALLBACK (about_me_cb) }, + { "GdmUsersGroupsAdmin", "stock-people", N_("_Edit Users and Groups"), + NULL, NULL, + G_CALLBACK (admin_cb) }, + { "GdmAbout", GTK_STOCK_ABOUT, N_("_About"), + NULL, NULL, + G_CALLBACK (about_cb) }, }; static gboolean first_time = FALSE; char *tmp; - BonoboUIComponent *popup_component; GdmAppletData *adata; GError *error; DBusGConnection *bus; + GtkActionGroup *action_group; if (!first_time) { first_time = TRUE; @@ -1438,52 +1358,51 @@ fill_applet (PanelApplet *applet) gtk_container_set_border_width (GTK_CONTAINER (applet), 0); gtk_widget_set_name (GTK_WIDGET (applet), "gdm-user-switch-applet"); panel_applet_set_flags (applet, PANEL_APPLET_EXPAND_MINOR); - panel_applet_setup_menu_from_file (applet, NULL, - DATADIR "/gnome-2.0/ui/GNOME_FastUserSwitchApplet.xml", - NULL, menu_verbs, adata); - popup_component = panel_applet_get_popup_component (applet); + action_group = gtk_action_group_new ("GDM User Switch Applet Actions"); + gtk_action_group_set_translation_domain (action_group, GETTEXT_PACKAGE); + gtk_action_group_add_actions (action_group, + gdm_user_switch_applet_actions, + G_N_ELEMENTS (gdm_user_switch_applet_actions), + adata); + + panel_applet_setup_menu_from_file (applet, + GDM_USER_SWITCH_MENU_UI_DIR G_DIR_SEPARATOR_S "gdm-user-switch-applet-menu.xml", + action_group); /* Hide the admin context menu items if locked down or no cmd-line */ if (gconf_client_get_bool (adata->client, LOCKDOWN_COMMAND_LINE_KEY, NULL) || panel_applet_get_locked_down (applet)) { - bonobo_ui_component_set_prop (popup_component, - "/popups/button3/GdmSeparator", - "hidden", "1", NULL); - bonobo_ui_component_set_prop (popup_component, - "/commands/GdmUsersGroupsAdmin", - "hidden", "1", NULL); + GtkAction *action; + + action = gtk_action_group_get_action (action_group, "GdmUsersGroupsAdmin"); + gtk_action_set_visible (action, FALSE); } else { + GtkAction *action; + #ifndef USERS_ADMIN # ifdef GDM_SETUP - bonobo_ui_component_set_prop (popup_component, - "/popups/button3/GdmSeparator", - "hidden", "1", - NULL); # endif /* !GDM_SETUP */ - bonobo_ui_component_set_prop (popup_component, - "/commands/GdmUsersGroupsAdmin", - "hidden", "1", - NULL); + action = gtk_action_group_get_action (action_group, "GdmUsersGroupsAdmin"); + gtk_action_set_visible (action, FALSE); #endif /* !USERS_ADMIN */ } /* Hide the gdmphotosetup item if it can't be found in the path. */ tmp = g_find_program_in_path ("gnome-about-me"); if (!tmp) { - bonobo_ui_component_set_prop (popup_component, - "/commands/GdmAboutMe", - "hidden", "1", - NULL); + GtkAction *action; + + action = gtk_action_group_get_action (action_group, "GdmAboutMe"); + gtk_action_set_visible (action, FALSE); } else { g_free (tmp); } - g_signal_connect (adata->applet, - "style-set", - G_CALLBACK (applet_style_set_cb), adata); + g_object_unref (action_group); + g_signal_connect (applet, "change-background", G_CALLBACK (applet_change_background_cb), adata); @@ -1655,7 +1574,7 @@ applet_factory (PanelApplet *applet, { gboolean ret; ret = FALSE; - if (strcmp (iid, "OAFIID:GNOME_FastUserSwitchApplet") == 0) { + if (strcmp (iid, "GdmUserSwitchApplet") == 0) { ret = fill_applet (applet); } return ret; diff --git a/gui/user-switch-applet/gdm-user-switch-applet-menu.xml b/gui/user-switch-applet/gdm-user-switch-applet-menu.xml new file mode 100644 index 0000000..78301b3 --- /dev/null +++ b/gui/user-switch-applet/gdm-user-switch-applet-menu.xml @@ -0,0 +1,4 @@ + + + + diff --git a/gui/user-switch-applet/org.gnome.gdm.UserSwitch.panel-applet.in.in b/gui/user-switch-applet/org.gnome.gdm.UserSwitch.panel-applet.in.in new file mode 100644 index 0000000..3c77dfb --- /dev/null +++ b/gui/user-switch-applet/org.gnome.gdm.UserSwitch.panel-applet.in.in @@ -0,0 +1,16 @@ +[Applet Factory] +Id=GdmUserSwitchAppletFactory +Location=@LIBEXECDIR@/gdm-user-switch-applet +_Name=User Switcher Applet Factory +_Description=User Switcher Applet Factory + +[GdmUserSwitchApplet] +_Name=User Switcher +_Description=A menu to quickly switch between users +BonoboId=OAFIID:GNOME_FastUserSwitchApplet +X-GNOME-Bugzilla-Bugzilla=GNOME +X-GNOME-Bugzilla-Product=gdm +X-GNOME-Bugzilla-Component=general +X-GNOME-Bugzilla-Version=@VERSION@ +X-GNOME-Bugzilla-OtherBinaries=gdm-user-switch-applet + diff --git a/gui/user-switch-applet/org.gnome.panel.applet.GdmUserSwitchAppletFactory.service.in b/gui/user-switch-applet/org.gnome.panel.applet.GdmUserSwitchAppletFactory.service.in new file mode 100644 index 0000000..7bf900f --- /dev/null +++ b/gui/user-switch-applet/org.gnome.panel.applet.GdmUserSwitchAppletFactory.service.in @@ -0,0 +1,4 @@ +[D-BUS Service] +Name=org.gnome.panel.applet.GdmUserSwitchAppletFactory +Exec=@LIBEXECDIR@/gdm-user-switch-applet + diff --git a/po/POTFILES.in b/po/POTFILES.in index 1fccb90..5340391 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -86,8 +86,7 @@ gui/simple-greeter/gdm-user-chooser-widget.c gui/simple-greeter/greeter-main.c gui/user-switch-applet/applet.c gui/user-switch-applet/gdm-entry-menu-item.c -gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in -gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml +gui/user-switch-applet/org.gnome.gdm.UserSwitch.panel-applet.in.in utils/gdmflexiserver.c utils/gdm-screenshot.c diff --git a/po/POTFILES.skip b/po/POTFILES.skip index 0269a0f..9032c03 100644 --- a/po/POTFILES.skip +++ b/po/POTFILES.skip @@ -7,7 +7,7 @@ # remove these unless you fix "make distcheck" a different way. # data/gdm.schemas.in -gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in +gui/user-switch-applet/org.gnome.gdm.UserSwitch.panel-applet.in data/greeter-autostart/at-spi-registryd-wrapper.desktop.in data/greeter-autostart/gdm-simple-greeter.desktop.in data/greeter-autostart/gnome-power-manager.desktop.in -- 1.7.2.3