aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2011-11-29 16:19:34 -0600
committerTed Gould <ted@gould.cx>2011-11-29 16:19:34 -0600
commit77699eb5a22ed5da6b008368486121e9ef7fc4e0 (patch)
tree775c03375ff3bb04e7482b123459c1acf899d9a4
parentdba878e3338b85c6c3e121b738448f687941e03e (diff)
parentb3d54d8b5d90cdaaa7169a25e9c9a8823d6ef61c (diff)
downloadayatana-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.ac54
-rw-r--r--data/Makefile.am20
-rw-r--r--src/Makefile.am21
-rw-r--r--src/device-menu-mgr.c27
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;
}