aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bindings/mono/examples/IndicatorExample.cs5
-rw-r--r--configure.ac46
-rw-r--r--docs/reference/Makefile.am2
-rw-r--r--src/AppIndicator-0.1.metadata1
-rw-r--r--src/Makefile.am74
-rw-r--r--src/app-indicator.c20
-rw-r--r--src/appindicator3-0.1.pc.in14
-rw-r--r--src/indicator-application.c7
8 files changed, 134 insertions, 35 deletions
diff --git a/bindings/mono/examples/IndicatorExample.cs b/bindings/mono/examples/IndicatorExample.cs
index c34e020..c18a665 100644
--- a/bindings/mono/examples/IndicatorExample.cs
+++ b/bindings/mono/examples/IndicatorExample.cs
@@ -34,8 +34,8 @@ public class IndicatorExample
win.Add (label);
- ApplicationIndicator indicator = new ApplicationIndicator ("my-id",
- "my-name",
+ ApplicationIndicator indicator = new ApplicationIndicator ("Example",
+ "applications-microblogging-panel",
Category.ApplicationStatus);
indicator.Status = Status.Attention;
@@ -45,6 +45,7 @@ public class IndicatorExample
menu.Append (new MenuItem ("Bar"));
indicator.Menu = menu;
+ indicator.Menu.ShowAll ();
win.ShowAll ();
diff --git a/configure.ac b/configure.ac
index cabaedd..9c3f61f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -37,20 +37,40 @@ 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
JSON_GLIB_REQUIRED_VERSION=0.7.6
DBUS_GLIB_REQUIRED_VERSION=0.82
-PKG_CHECK_MODULES(INDICATOR, gtk+-2.0 >= $GTK_REQUIRED_VERSION
- indicator >= $INDICATOR_REQUIRED_VERSION
- json-glib-1.0 >= $JSON_GLIB_REQUIRED_VERSION
- dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
- dbusmenu-gtk >= $DBUSMENUGTK_REQUIRED_VERSION)
-
-AC_SUBST(INDICATOR_CFLAGS)
-AC_SUBST(INDICATOR_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(INDICATOR, gtk+-3.0 >= $GTK3_REQUIRED_VERSION
+ indicator3 >= $INDICATOR_REQUIRED_VERSION
+ json-glib-1.0 >= $JSON_GLIB_REQUIRED_VERSION
+ dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
+ dbusmenu-gtk3 >= $DBUSMENUGTK_REQUIRED_VERSION)
+ AC_SUBST(INDICATOR_CFLAGS)
+ AC_SUBST(INDICATOR_LIBS)
+ AC_DEFINE(HAVE_GTK3, 1, [whether gtk3 is available])
+ ],
+ [test "x$with_gtk" = x2],
+ [PKG_CHECK_MODULES(INDICATOR, gtk+-2.0 >= $GTK_REQUIRED_VERSION
+ indicator >= $INDICATOR_REQUIRED_VERSION
+ json-glib-1.0 >= $JSON_GLIB_REQUIRED_VERSION
+ dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
+ dbusmenu-gtk >= $DBUSMENUGTK_REQUIRED_VERSION)
+ AC_SUBST(INDICATOR_CFLAGS)
+ AC_SUBST(INDICATOR_LIBS)
+ ],
+ [AC_MSG_FAILURE([Value for --with-gtk was neither 2 nor 3])]
+)
+AM_CONDITIONAL(USE_GTK3, [test "x$with_gtk" = x3])
PKG_CHECK_MODULES(LIBRARY, gtk+-2.0 >= $GTK_REQUIRED_VERSION
indicator >= $INDICATOR_REQUIRED_VERSION
@@ -66,6 +86,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
###########################
@@ -199,6 +225,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
@@ -225,4 +252,5 @@ Application Indicator Configuration:
Prefix: $prefix
Indicator Dir: $INDICATORDIR
+ GTK+ Version: $with_gtk
])
diff --git a/docs/reference/Makefile.am b/docs/reference/Makefile.am
index d2ef3bb..63606f9 100644
--- a/docs/reference/Makefile.am
+++ b/docs/reference/Makefile.am
@@ -91,7 +91,7 @@ expand_content_files=
# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_srcdir)/src -I$(top_srcdir)/src $(INDICATOR_CFLAGS)
-GTKDOC_LIBS=$(top_builddir)/src/libappindicator.la $(top_builddir)/src/libapplication.la
+GTKDOC_LIBS=$(top_builddir)/src/libappindicator.la $(top_builddir)/src/libapplication.la $(INDICATOR_LIBS)
# This includes the standard gtk-doc make rules, copied by gtkdocize.
include $(top_srcdir)/gtk-doc.local.make
diff --git a/src/AppIndicator-0.1.metadata b/src/AppIndicator-0.1.metadata
new file mode 100644
index 0000000..e4d068e
--- /dev/null
+++ b/src/AppIndicator-0.1.metadata
@@ -0,0 +1 @@
+AppIndicator name="AppIndicator"
diff --git a/src/Makefile.am b/src/Makefile.am
index 091f0f2..e89aa84 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,7 +1,22 @@
+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
+EXTRA_DIST = \
+ appindicator-0.1.pc.in \
+ appindicator3-0.1.pc.in \
+ AppIndicator-0.1.metadata
include $(top_srcdir)/Makefile.am.enum
include $(top_srcdir)/Makefile.am.marshal
@@ -60,7 +75,7 @@ indicator_application_service_CFLAGS = \
indicator_application_service_LDADD = \
$(INDICATOR_LIBS) \
- libappindicator.la
+ libappindicator$(VER).la
glib_marshal_list = application-service-marshal.list
glib_marshal_prefix = _application_service_marshal
@@ -69,7 +84,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
@@ -78,10 +93,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
@@ -115,6 +127,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
##################################
@@ -154,26 +177,41 @@ EXTRA_DIST += $(DBUS_SPECS)
-include $(INTROSPECTION_MAKEFILE)
INTROSPECTION_GIRS =
+
+if INTROSPECTION_TEN
INTROSPECTION_SCANNER_ARGS = \
--add-include-path=$(srcdir) \
- $(addprefix --c-include=libappindicator/, $(introspection_sources))
+ $(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
introspection_sources = \
- $(addprefix $(srcdir)/,$(libappindicator_headers)) \
- $(addprefix $(top_builddir)/src/, $(glib_enum_h))
+ $(addprefix $(srcdir)/,$(libappindicator_headers))
+
+AppIndicator$(VER)-0.1.gir: libappindicator$(VER).la
-AppIndicator-0.1.gir: libappindicator.la $(glib_enum_h)
AppIndicator_0_1_gir_INCLUDES = \
GObject-2.0 \
- Gtk-2.0
+ $(GTKGIR)
AppIndicator_0_1_gir_CFLAGS = $(INDICATOR_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)
@@ -192,11 +230,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 146bee2..4886605 100644
--- a/src/app-indicator.c
+++ b/src/app-indicator.c
@@ -36,7 +36,11 @@ License version 3 and version 2.1 along with this program. If not, see
#include <libdbusmenu-glib/menuitem.h>
#include <libdbusmenu-glib/server.h>
+#ifdef HAVE_GTK3
+#include <libdbusmenu-gtk3/client.h>
+#else
#include <libdbusmenu-gtk/client.h>
+#endif
#include <libindicator/indicator-desktop-shortcuts.h>
@@ -1589,13 +1593,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);
@@ -1607,16 +1615,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);
@@ -1665,7 +1675,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"))
{
@@ -1817,7 +1827,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@
+
diff --git a/src/indicator-application.c b/src/indicator-application.c
index 36e1446..ecf19e8 100644
--- a/src/indicator-application.c
+++ b/src/indicator-application.c
@@ -21,6 +21,9 @@ You should have received a copy of the GNU General Public License along
with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
/* G Stuff */
#include <glib.h>
@@ -29,7 +32,11 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
/* DBus Stuff */
#include <dbus/dbus-glib.h>
+#ifdef HAVE_GTK3
+#include <libdbusmenu-gtk3/menu.h>
+#else
#include <libdbusmenu-gtk/menu.h>
+#endif
/* Indicator Stuff */
#include <libindicator/indicator.h>