aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac65
-rw-r--r--src/Makefile.am61
-rw-r--r--src/app-indicator.c20
-rw-r--r--src/appindicator3-0.1.pc.in14
4 files changed, 110 insertions, 50 deletions
diff --git a/configure.ac b/configure.ac
index fbccf0a..30e2f68 100644
--- a/configure.ac
+++ b/configure.ac
@@ -37,17 +37,35 @@ AC_CONFIG_MACRO_DIR(m4)
# Dependencies
###########################
-GTK_REQUIRED_VERSION=2.12
+GTK_REQUIRED_VERSION=2.18
+GTK3_REQUIRED_VERSION=2.91
INDICATOR_REQUIRED_VERSION=0.3.5
DBUSMENUGTK_REQUIRED_VERSION=0.2.2
DBUS_GLIB_REQUIRED_VERSION=0.82
-PKG_CHECK_MODULES(LIBRARY, gtk+-2.0 >= $GTK_REQUIRED_VERSION
- dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
- dbusmenu-gtk >= $DBUSMENUGTK_REQUIRED_VERSION)
-
-AC_SUBST(LIBRARY_CFLAGS)
-AC_SUBST(LIBRARY_LIBS)
+AC_ARG_WITH([gtk],
+ [AS_HELP_STRING([--with-gtk],
+ [Which version of gtk to use @<:@default=2@:>@])],
+ [],
+ [with_gtk=2])
+AS_IF([test "x$with_gtk" = x3],
+ [PKG_CHECK_MODULES(LIBRARAY, gtk+-3.0 >= $GTK3_REQUIRED_VERSION
+ dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
+ dbusmenu-gtk3 >= $DBUSMENUGTK_REQUIRED_VERSION)
+ AC_SUBST(LIBRARY_CFLAGS)
+ AC_SUBST(LIBRARY_LIBS)
+ AC_DEFINE(HAVE_GTK3, 1, [whether gtk3 is available])
+ ],
+ [test "x$with_gtk" = x2],
+ [PKG_CHECK_MODULES(LIBRARY, gtk+-2.0 >= $GTK_REQUIRED_VERSION
+ dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
+ dbusmenu-gtk >= $DBUSMENUGTK_REQUIRED_VERSION)
+ AC_SUBST(LIBRARY_CFLAGS)
+ AC_SUBST(LIBRARY_LIBS)
+ ],
+ [AC_MSG_FAILURE([Value for --with-gtk was neither 2 nor 3])]
+)
+AM_CONDITIONAL(USE_GTK3, [test "x$with_gtk" = x3])
###########################
# GObject Introspection
@@ -55,6 +73,12 @@ AC_SUBST(LIBRARY_LIBS)
GOBJECT_INTROSPECTION_CHECK([0.6.7])
+PKG_CHECK_EXISTS([gobject-introspection-1.0 >= 0.10],
+ introspection_ten=yes,
+ introspection_ten=no)
+
+AM_CONDITIONAL(INTROSPECTION_TEN, [test "x$introspection_ten" = "xyes"])
+
###########################
# Vala API Generation
###########################
@@ -127,31 +151,6 @@ with_localinstall="no"
AC_ARG_ENABLE(localinstall, AS_HELP_STRING([--enable-localinstall], [install all of the files localy instead of system directories (for distcheck)]), with_localinstall=$enableval, with_localinstall=no)
###########################
-# Indicator Info
-###########################
-
-if test "x$with_localinstall" = "xyes"; then
- INDICATORDIR="${libdir}/indicators/2/"
- INDICATORICONSDIR="${datadir}/libindicate/icons/"
-else
- INDICATORDIR=`$PKG_CONFIG --variable=indicatordir indicator`
- INDICATORICONSDIR=`$PKG_CONFIG --variable=iconsdir indicator`
-fi
-AC_SUBST(INDICATORDIR)
-AC_SUBST(INDICATORICONSDIR)
-
-###########################
-# DBus Service Info
-###########################
-
-if test "x$with_localinstall" = "xyes"; then
- DBUSSERVICEDIR="${datadir}/dbus-1/services/"
-else
- DBUSSERVICEDIR=`$PKG_CONFIG --variable=session_bus_services_dir dbus-1`
-fi
-AC_SUBST(DBUSSERVICEDIR)
-
-###########################
# Python
###########################
@@ -188,6 +187,7 @@ AC_OUTPUT([
Makefile
src/Makefile
src/appindicator-0.1.pc
+src/appindicator3-0.1.pc
bindings/Makefile
bindings/mono/Makefile
bindings/mono/appindicator-sharp.dll.config
@@ -213,4 +213,5 @@ Libappindicator Configuration:
Prefix: $prefix
Indicator Dir: $INDICATORDIR
+ GTK+ Version: $with_gtk
])
diff --git a/src/Makefile.am b/src/Makefile.am
index 6f2990e..073fc41 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,8 +1,21 @@
+if USE_GTK3
+VER=3
+lib_LTLIBRARIES = libappindicator3.la
+GTKGIR = Gtk-3.0
+GTKVAPI = gtk+-3.0
+else
+VER=
+lib_LTLIBRARIES = libappindicator.la
+GTKGIR = Gtk-2.0
+GTKVAPI = gtk+-2.0
+endif
+
CLEANFILES =
DISTCLEANFILES =
BUILT_SOURCES =
EXTRA_DIST = \
appindicator-0.1.pc.in \
+ appindicator3-0.1.pc.in \
AppIndicator-0.1.metadata
include $(top_srcdir)/Makefile.am.enum
@@ -23,7 +36,7 @@ glib_marshal_prefix = _application_service_marshal
# Library
##################################
-pkgconfig_DATA = appindicator-0.1.pc
+pkgconfig_DATA = appindicator$(VER)-0.1.pc
pkgconfigdir = $(libdir)/pkgconfig
glib_enum_h = app-indicator-enum-types.h
@@ -32,10 +45,7 @@ glib_enum_headers = $(addprefix $(srcdir)/, $(libappindicator_headers))
DISTCLEANFILES += app-indicator-enum-types.c
-lib_LTLIBRARIES = \
- libappindicator.la
-
-libappindicatorincludedir=$(includedir)/libappindicator-0.1/libappindicator
+libappindicatorincludedir=$(includedir)/libappindicator$(VER)-0.1/libappindicator
libappindicator_headers = \
app-indicator.h
@@ -70,6 +80,17 @@ libappindicator_la_CFLAGS = \
libappindicator_la_LIBADD = \
$(LIBRARY_LIBS)
+# We duplicate these here because Automake won't let us use $(VER) on the left hand side.
+# Since we carefully use $(VER) in the right hand side above, we can assign the same values.
+# Only one version of the library is every compiled at the same time, so it is safe to reuse
+# the right hand sides like this.
+libappindicator3includedir = $(libappindicatorincludedir)
+libappindicator3include_HEADERS = $(libappindicatorinclude_HEADERS)
+libappindicator3_la_SOURCES = $(libappindicator_la_SOURCES)
+libappindicator3_la_LDFLAGS = $(libappindicator_la_LDFLAGS)
+libappindicator3_la_CFLAGS = $(libappindicator_la_CFLAGS)
+libappindicator3_la_LIBADD = $(libappindicator_la_LIBADD)
+
##################################
# DBus Specs
##################################
@@ -106,11 +127,19 @@ EXTRA_DIST += $(DBUS_SPECS)
-include $(INTROSPECTION_MAKEFILE)
INTROSPECTION_GIRS =
+
+if INTROSPECTION_TEN
INTROSPECTION_SCANNER_ARGS = \
--add-include-path=$(srcdir) \
$(addprefix --c-include=src/, $(introspection_sources)) \
--symbol-prefix=app \
--identifier-prefix=App
+else
+INTROSPECTION_SCANNER_ARGS = \
+ --add-include-path=$(srcdir) \
+ $(addprefix --c-include=src/, $(introspection_sources))
+endif
+
INTROSPECTION_COMPILER_ARGS = --includedir=$(builddir)
if HAVE_INTROSPECTION
@@ -118,15 +147,21 @@ if HAVE_INTROSPECTION
introspection_sources = \
$(addprefix $(srcdir)/,$(libappindicator_headers))
-AppIndicator-0.1.gir: libappindicator.la
+AppIndicator$(VER)-0.1.gir: libappindicator$(VER).la
+
AppIndicator_0_1_gir_INCLUDES = \
GObject-2.0 \
- Gtk-2.0
+ $(GTKGIR)
AppIndicator_0_1_gir_CFLAGS = $(LIBRARY_CFLAGS) -I$(srcdir) -I$(top_builddir)/src
-AppIndicator_0_1_gir_LIBS = libappindicator.la
+AppIndicator_0_1_gir_LIBS = libappindicator$(VER).la
AppIndicator_0_1_gir_FILES = $(introspection_sources)
-INTROSPECTION_GIRS += AppIndicator-0.1.gir
+AppIndicator3_0_1_gir_INCLUDES = $(AppIndicator_0_1_gir_INCLUDES)
+AppIndicator3_0_1_gir_CFLAGS = $(AppIndicator_0_1_gir_CFLAGS)
+AppIndicator3_0_1_gir_LIBS = $(AppIndicator_0_1_gir_LIBS)
+AppIndicator3_0_1_gir_FILES = $(AppIndicator_0_1_gir_FILES)
+
+INTROSPECTION_GIRS += AppIndicator$(VER)-0.1.gir
girdir = $(datadir)/gir-1.0
gir_DATA = $(INTROSPECTION_GIRS)
@@ -145,11 +180,11 @@ endif
if HAVE_INTROSPECTION
vapidir = $(datadir)/vala/vapi
-vapi_DATA = AppIndicator-0.1.vapi
+vapi_DATA = AppIndicator$(VER)-0.1.vapi
-AppIndicator-0.1.vapi: AppIndicator-0.1.gir Makefile.am
- $(VALA_API_GEN) --library=AppIndicator-0.1 \
- --pkg gtk+-2.0 \
+AppIndicator$(VER)-0.1.vapi: AppIndicator$(VER)-0.1.gir Makefile.am
+ $(VALA_API_GEN) --library=AppIndicator$(VER)-0.1 \
+ --pkg $(GTKVAPI) \
--vapidir=$(top_builddir)/src \
$<
diff --git a/src/app-indicator.c b/src/app-indicator.c
index 4f7daa8..98663c1 100644
--- a/src/app-indicator.c
+++ b/src/app-indicator.c
@@ -35,7 +35,11 @@ License version 3 and version 2.1 along with this program. If not, see
#include <dbus/dbus-glib-bindings.h>
#include <libdbusmenu-glib/server.h>
+#ifdef HAVE_GTK3
+#include <libdbusmenu-gtk3/client.h>
+#else
#include <libdbusmenu-gtk/client.h>
+#endif
#include "app-indicator.h"
#include "app-indicator-enum-types.h"
@@ -1549,13 +1553,17 @@ static void
update_icon_name (DbusmenuMenuitem *menuitem,
GtkImage *image)
{
+ const gchar *icon_name = NULL;
+
if (gtk_image_get_storage_type (image) != GTK_IMAGE_ICON_NAME)
return;
+ gtk_image_get_icon_name (image, &icon_name, NULL);
+
if (should_show_image (image))
dbusmenu_menuitem_property_set (menuitem,
DBUSMENU_MENUITEM_PROP_ICON_NAME,
- image->data.name.icon_name);
+ icon_name);
else
dbusmenu_menuitem_property_remove (menuitem,
DBUSMENU_MENUITEM_PROP_ICON_NAME);
@@ -1567,16 +1575,18 @@ update_stock_item (DbusmenuMenuitem *menuitem,
GtkImage *image)
{
GtkStockItem stock;
+ gchar *stock_id = NULL;
if (gtk_image_get_storage_type (image) != GTK_IMAGE_STOCK)
return FALSE;
- gtk_stock_lookup (image->data.stock.stock_id, &stock);
+ gtk_image_get_stock (image, &stock_id, NULL);
+ gtk_stock_lookup (stock_id, &stock);
if (should_show_image (image))
dbusmenu_menuitem_property_set (menuitem,
DBUSMENU_MENUITEM_PROP_ICON_NAME,
- image->data.stock.stock_id);
+ stock_id);
else
dbusmenu_menuitem_property_remove (menuitem,
DBUSMENU_MENUITEM_PROP_ICON_NAME);
@@ -1625,7 +1635,7 @@ widget_notify_cb (GtkWidget *widget,
{
dbusmenu_menuitem_property_set_bool (child,
DBUSMENU_MENUITEM_PROP_ENABLED,
- GTK_WIDGET_IS_SENSITIVE (widget));
+ gtk_widget_is_sensitive (widget));
}
else if (pspec->name == g_intern_static_string ("label"))
{
@@ -1777,7 +1787,7 @@ container_iterate (GtkWidget *widget,
dbusmenu_menuitem_property_set_bool (child,
DBUSMENU_MENUITEM_PROP_ENABLED,
- GTK_WIDGET_IS_SENSITIVE (widget));
+ gtk_widget_is_sensitive (widget));
dbusmenu_menuitem_property_set_bool (child,
DBUSMENU_MENUITEM_PROP_VISIBLE,
gtk_widget_get_visible (widget));
diff --git a/src/appindicator3-0.1.pc.in b/src/appindicator3-0.1.pc.in
new file mode 100644
index 0000000..a485910
--- /dev/null
+++ b/src/appindicator3-0.1.pc.in
@@ -0,0 +1,14 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+bindir=@bindir@
+includedir=@includedir@
+
+Cflags: -I${includedir}/libappindicator3-0.1
+Requires: dbusmenu-glib gtk+-3.0
+Libs: -L${libdir} -lappindicator3
+
+Name: appindicator3-0.1
+Description: Application indicators
+Version: @VERSION@
+