diff options
author | Ted Gould <ted@gould.cx> | 2011-11-29 16:19:34 -0600 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2011-11-29 16:19:34 -0600 |
commit | 77699eb5a22ed5da6b008368486121e9ef7fc4e0 (patch) | |
tree | 775c03375ff3bb04e7482b123459c1acf899d9a4 | |
parent | dba878e3338b85c6c3e121b738448f687941e03e (diff) | |
parent | b3d54d8b5d90cdaaa7169a25e9c9a8823d6ef61c (diff) | |
download | ayatana-indicator-session-77699eb5a22ed5da6b008368486121e9ef7fc4e0.tar.gz ayatana-indicator-session-77699eb5a22ed5da6b008368486121e9ef7fc4e0.tar.bz2 ayatana-indicator-session-77699eb5a22ed5da6b008368486121e9ef7fc4e0.zip |
Making the gtk logout helper and apt optional build time choices
-rw-r--r-- | configure.ac | 54 | ||||
-rw-r--r-- | data/Makefile.am | 20 | ||||
-rw-r--r-- | src/Makefile.am | 21 | ||||
-rw-r--r-- | src/device-menu-mgr.c | 27 |
4 files changed, 100 insertions, 22 deletions
diff --git a/configure.ac b/configure.ac index 0e20a91..d47d754 100644 --- a/configure.ac +++ b/configure.ac @@ -77,21 +77,55 @@ AS_IF([test "x$with_gtk" = x3], AC_SUBST(SESSIONERVICE_CFLAGS) AC_SUBST(SESSIONERVICE_LIBS) -AS_IF([test "x$with_gtk" = x3], - [PKG_CHECK_MODULES(GTKLOGOUTHELPER, gtk+-3.0 >= $GTK3_REQUIRED_VERSION - polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION) - ], - [test "x$with_gtk" = x2], - [PKG_CHECK_MODULES(GTKLOGOUTHELPER, gtk+-2.0 >= $GTK_REQUIRED_VERSION - polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION) - ] -) +########################### +# GTK Logout Helper +########################### +AC_ARG_ENABLE([gtklogouthelper], + AS_HELP_STRING([--enable-gtklogouthelper], [enable GTK Logout Helper]),, + enable_gtklogouthelper=auto) + +if test x"$enable_gtklogouthelper" != x"no" ; then + AS_IF([test "x$with_gtk" = x3], + [PKG_CHECK_MODULES(GTKLOGOUTHELPER, gtk+-3.0 >= $GTK3_REQUIRED_VERSION + polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION, + [have_gtklogouthelper=yes], + [have_gtklogouthelper=no]) + ], + [test "x$with_gtk" = x2], + [PKG_CHECK_MODULES(GTKLOGOUTHELPER, gtk+-2.0 >= $GTK_REQUIRED_VERSION + polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION, + [have_gtklogouthelper=yes], + [have_gtklogouthelper=no]) + ] + ) + if test x${have_gtklogouthelper} = xyes; then + AC_DEFINE(HAVE_GTKLOGOUTHELPER, 1, [Define to 1 to enable GTK Logout Helper]) + fi + if test x${enable_gtklogouthelper} = xyes && test x${have_gtklogouthelper} = xno; then + AC_MSG_ERROR([GTK Logout Helper configured but polkit-gobject not found]) + fi +else + have_gtklogouthelper=no +fi +AM_CONDITIONAL(BUILD_GTKLOGOUTHELPER, test x${have_gtklogouthelper} = xyes) AC_SUBST(GTKLOGOUTHELPER_CFLAGS) AC_SUBST(GTKLOGOUTHELPER_LIBS) ########################### +# APT support +########################### +AC_ARG_ENABLE([apt], + AC_HELP_STRING([--disable-apt], [disable APT support]),, + [enable_apt=yes]) +AM_CONDITIONAL([BUILD_APT], [test "x$enable_apt" != "xno"]) + +if test "x$enable_apt" != "xno"; then + AC_DEFINE(HAVE_APT, 1, [Define to 1 to enable APT support]) +fi + +########################### # Check to see if we're local ########################### @@ -192,4 +226,6 @@ SUS Indicator Configuration: Prefix: $prefix Indicator Dir: $INDICATORDIR Indicator GTK: $with_gtk + Logout Helper: $have_gtklogouthelper + APT support: $enable_apt ]) diff --git a/data/Makefile.am b/data/Makefile.am index 7e851a7..3b8de1f 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -18,6 +18,15 @@ gsettings_SCHEMAS = com.canonical.indicator.session.gschema.xml convertdir = $(datadir)/GConf/gsettings dist_convert_DATA = indicator-session.convert +EXTRA_DIST = \ + $(service_in_files) \ + $(gsettings_SCHEMAS:.xml=.xml.in) + +CLEANFILES = \ + $(dbus_services_DATA) \ + $(gsettings_SCHEMAS) + +if BUILD_GTKLOGOUTHELPER @INTLTOOL_DESKTOP_RULE@ %.desktop.in: %.desktop.in.in @@ -37,14 +46,9 @@ logout_helper_desktop_files = \ $(logout_helper_desktop_in_in_files:.desktop.in.in=.desktop) logout_helper_DATA = $(logout_helper_desktop_files) -EXTRA_DIST = \ - $(service_in_files) \ - $(gsettings_SCHEMAS:.xml=.xml.in) \ +EXTRA_DIST += \ $(logout_helper_desktop_in_in_files) - -CLEANFILES = \ - $(dbus_services_DATA) \ - $(gsettings_SCHEMAS) \ +CLEANFILES += \ $(logout_helper_desktop_files) - +endif diff --git a/src/Makefile.am b/src/Makefile.am index dba0a9e..afee66c 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,7 +1,11 @@ libexec_PROGRAMS = \ - indicator-session-service \ + indicator-session-service + +if BUILD_GTKLOGOUTHELPER +libexec_PROGRAMS += \ gtk-logout-helper +endif ################### # Indicator Stuff @@ -103,13 +107,18 @@ indicator_session_service_SOURCES = \ user-menu-mgr.c \ device-menu-mgr.h \ device-menu-mgr.c \ - apt-watcher.h \ - apt-watcher.c \ - apt-transaction.h \ - apt-transaction.c \ udev-mgr.h \ udev-mgr.c \ sane-rules.h + +if BUILD_APT +indicator_session_service_SOURCES += \ + apt-watcher.h \ + apt-watcher.c \ + apt-transaction.h \ + apt-transaction.c +endif + indicator_session_service_CFLAGS = \ $(SESSIONSERVICE_CFLAGS) \ $(GCONF_CFLAGS) \ @@ -124,6 +133,7 @@ indicator_session_service_LDADD = \ # GTK Logout Stuff ################# +if BUILD_GTKLOGOUTHELPER gtk_logout_helper_SOURCES = \ gtk-logout-helper.c \ settings-helper.c \ @@ -142,6 +152,7 @@ gtk_logout_helper_LDADD = \ $(SESSIONSERVICE_LIBS) \ $(GTKLOGOUTHELPER_LIBS) \ $(GCONF_LIBS) +endif ############### diff --git a/src/device-menu-mgr.c b/src/device-menu-mgr.c index 5a63be3..3858564 100644 --- a/src/device-menu-mgr.c +++ b/src/device-menu-mgr.c @@ -17,6 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include <config.h> #include <libdbusmenu-glib/client.h> #include <libdbusmenu-gtk3/menuitem.h> @@ -26,7 +27,11 @@ with this program. If not, see <http://www.gnu.org/licenses/>. #include "dbusmenu-shared.h" #include "lock-helper.h" #include "upower-client.h" + +#ifdef HAVE_APT #include "apt-watcher.h" +#endif /* HAVE_APT */ + #include "udev-mgr.h" #define UP_ADDRESS "org.freedesktop.UPower" @@ -40,7 +45,9 @@ struct _DeviceMenuMgr GObject parent_instance; DbusmenuMenuitem* root_item; SessionDbus* session_dbus_interface; +#ifdef HAVE_APT AptWatcher* apt_watcher; +#endif /* HAVE_APT */ UdevMgr* udev_mgr; }; @@ -50,7 +57,9 @@ static DbusmenuMenuitem *lock_menuitem = NULL; static DbusmenuMenuitem *system_settings_menuitem = NULL; static DbusmenuMenuitem *display_settings_menuitem = NULL; static DbusmenuMenuitem *login_settings_menuitem = NULL; +#ifdef HAVE_APT static DbusmenuMenuitem *software_updates_menuitem = NULL; +#endif /* HAVE_APT */ static DbusmenuMenuitem *printers_menuitem = NULL; static DbusmenuMenuitem *scanners_menuitem = NULL; static DbusmenuMenuitem *webcam_menuitem = NULL; @@ -102,7 +111,9 @@ G_DEFINE_TYPE (DeviceMenuMgr, device_menu_mgr, G_TYPE_OBJECT); static void device_menu_mgr_init (DeviceMenuMgr *self) { +#ifdef HAVE_APT self->apt_watcher = NULL; +#endif /* HAVE_APT */ self->root_item = dbusmenu_menuitem_new (); setup_up(self); g_idle_add(lock_screen_setup, NULL); @@ -410,7 +421,11 @@ static void show_dialog (DbusmenuMenuitem * mi, guint timestamp, gchar * type) { +#ifdef HAVE_GTKLOGOUTHELPER gchar * helper = g_build_filename(LIBEXECDIR, "gtk-logout-helper", NULL); +#else + gchar * helper = g_build_filename("gnome-session-quit", NULL); +#endif /* HAVE_GTKLOGOUTHELPER */ gchar * dialog_line = g_strdup_printf("%s --%s", helper, type); g_free(helper); @@ -480,12 +495,14 @@ static void device_menu_mgr_show_simple_scan (DbusmenuMenuitem * mi, { g_warning("Unable to launch simple-scan: %s", error->message); g_error_free(error); +#ifdef HAVE_APT if (!g_spawn_command_line_async("software-center simple-scan", &error)) { g_warning ("Unable to launch software-centre simple-scan: %s", error->message); g_error_free(error); } +#endif /* HAVE_APT */ } } @@ -498,12 +515,14 @@ static void device_menu_mgr_show_cheese (DbusmenuMenuitem * mi, { g_warning("Unable to launch cheese: %s", error->message); g_error_free(error); +#ifdef HAVE_APT if (!g_spawn_command_line_async("software-center cheese", &error)) { g_warning ("Unable to launch software-centre cheese: %s", error->message); g_error_free(error); } +#endif /* HAVE_APT */ } } @@ -542,6 +561,7 @@ device_menu_mgr_build_settings_items (DeviceMenuMgr* self) dbusmenu_menuitem_child_add_position(self->root_item, login_settings_menuitem, 2); +#ifdef HAVE_APT software_updates_menuitem = dbusmenu_menuitem_new(); dbusmenu_menuitem_property_set (software_updates_menuitem, DBUSMENU_MENUITEM_PROP_LABEL, @@ -549,6 +569,7 @@ device_menu_mgr_build_settings_items (DeviceMenuMgr* self) dbusmenu_menuitem_child_add_position(self->root_item, software_updates_menuitem, 3); +#endif /* HAVE_APT */ DbusmenuMenuitem * separator1 = dbusmenu_menuitem_new(); dbusmenu_menuitem_property_set (separator1, @@ -726,7 +747,11 @@ device_menu_mgr_build_static_items (DeviceMenuMgr* self, gboolean greeter_mode) dbusmenu_menuitem_child_append (self->root_item, shutdown_mi); g_signal_connect (G_OBJECT(shutdown_mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, +#ifdef HAVE_GTKLOGOUTHELPER G_CALLBACK(show_dialog), "shutdown"); +#else + G_CALLBACK(show_dialog), "power-off"); +#endif /* HAVE_GTKLOGOUTHELPER */ RestartShutdownLogoutMenuItems * restart_shutdown_logout_mi = g_new0 (RestartShutdownLogoutMenuItems, 1); restart_shutdown_logout_mi->logout_mi = logout_mi; @@ -778,9 +803,11 @@ DeviceMenuMgr* device_menu_mgr_new (SessionDbus* session_dbus, gboolean greeter_ DeviceMenuMgr* device_mgr = g_object_new (DEVICE_TYPE_MENU_MGR, NULL); device_mgr->session_dbus_interface = session_dbus; device_menu_mgr_build_static_items (device_mgr, greeter_mode); +#ifdef HAVE_APT if (software_updates_menuitem != NULL) { device_mgr->apt_watcher = apt_watcher_new (session_dbus, software_updates_menuitem); } +#endif /* HAVE_APT */ return device_mgr; } |