diff options
-rw-r--r-- | bindings/mono/examples/IndicatorExample.cs | 5 | ||||
-rw-r--r-- | configure.ac | 46 | ||||
-rw-r--r-- | docs/reference/Makefile.am | 2 | ||||
-rw-r--r-- | src/AppIndicator-0.1.metadata | 1 | ||||
-rw-r--r-- | src/Makefile.am | 74 | ||||
-rw-r--r-- | src/app-indicator.c | 20 | ||||
-rw-r--r-- | src/appindicator3-0.1.pc.in | 14 | ||||
-rw-r--r-- | src/indicator-application.c | 7 |
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> |