From e1f36a8445d1851f15a396ba5488119c298e593d Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Sat, 19 Jun 2010 01:44:59 -0400 Subject: first pass at gtk3 version of libappindicator --- src/Makefile.am | 49 +++++++++++++++++++++++++++++++++++++++++----- src/app-indicator.c | 4 ++-- src/appindicator-3.1.pc.in | 14 +++++++++++++ 3 files changed, 60 insertions(+), 7 deletions(-) create mode 100644 src/appindicator-3.1.pc.in (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index 787ba2f..e3abf9f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,7 +1,7 @@ CLEANFILES = DISTCLEANFILES = BUILT_SOURCES = -EXTRA_DIST = appindicator-0.1.pc.in +EXTRA_DIST = appindicator-0.1.pc.in appindicator-3.1.pc.in include $(top_srcdir)/Makefile.am.enum include $(top_srcdir)/Makefile.am.marshal @@ -26,6 +26,19 @@ libapplication_la_CFLAGS = $(INDICATOR_CFLAGS) \ libapplication_la_LIBADD = $(INDICATOR_LIBS) libapplication_la_LDFLAGS = -module -avoid-version +applicationlib1dir = $(INDICATORDIR) +applicationlib1_LTLIBRARIES = libapplication3.la +libapplication3_la_SOURCES = $(libapplication_la_SOURCES) +libapplication3_la_CFLAGS = $(INDICATOR3_CFLAGS) \ + -Wall \ + -Wl,-Bsymbolic-functions \ + -Wl,-z,defs \ + -Wl,--as-needed \ + -Werror \ + -DG_LOG_DOMAIN=\"Indicator-Application\" +libapplication3_la_LIBADD = $(INDICATOR3_LIBS) +libapplication3_la_LDFLAGS = $(libapplication_la_LDFLAGS) + ################################## # Service ################################## @@ -66,7 +79,7 @@ glib_marshal_prefix = _application_service_marshal # Library ################################## -pkgconfig_DATA = appindicator-0.1.pc +pkgconfig_DATA = appindicator-0.1.pc appindicator-3.1.pc pkgconfigdir = $(libdir)/pkgconfig glib_enum_h = app-indicator-enum-types.h @@ -76,9 +89,11 @@ glib_enum_headers = $(addprefix $(srcdir)/, $(libappindicator_headers)) DISTCLEANFILES += app-indicator-enum-types.c lib_LTLIBRARIES = \ - libappindicator.la + libappindicator.la \ + libappindicator3.la libappindicatorincludedir=$(includedir)/libappindicator-0.1/libappindicator +libappindicator3includedir=$(includedir)/libappindicator-3.1/libappindicator libappindicator_headers = \ app-indicator.h @@ -87,6 +102,8 @@ libappindicatorinclude_HEADERS = \ $(libappindicator_headers) \ $(glib_enum_h) +libappindicator3include_HEADERS = $(libappindicatorinclude_HEADERS) + BUILT_SOURCES += \ notification-watcher-client.h \ notification-item-server.h @@ -95,19 +112,27 @@ libappindicator_la_SOURCES = \ $(libappindicator_headers) \ app-indicator-enum-types.c \ app-indicator.c +libappindicator3_la_SOURCES = $(libappindicator_la_SOURCES) libappindicator_la_LDFLAGS = \ -version-info 0:0:0 \ -no-undefined \ -export-symbols-regex "^[^_d].*" +libappindicator3_la_LDFLAGS = $(libappindicator_la_LDFLAGS) libappindicator_la_CFLAGS = \ $(INDICATOR_CFLAGS) \ -Wall -Werror \ -DG_LOG_DOMAIN=\"libappindicator\" +libappindicator3_la_CFLAGS = \ + $(INDICATOR3_CFLAGS) \ + -Wall -Werror \ + -DG_LOG_DOMAIN=\"libappindicator\" libappindicator_la_LIBADD = \ $(INDICATOR_LIBS) +libappindicator3_la_LIBADD = \ + $(INDICATOR3_LIBS) ################################## # DBus Specs @@ -166,7 +191,15 @@ AppIndicator_0_1_gir_CFLAGS = $(INDICATOR_CFLAGS) -I$(srcdir) -I$(top_builddir)/ AppIndicator_0_1_gir_LIBS = libappindicator.la AppIndicator_0_1_gir_FILES = $(introspection_sources) -INTROSPECTION_GIRS += AppIndicator-0.1.gir +AppIndicator-3.1.gir: libappindicator.la $(glib_enum_h) +AppIndicator_3_1_gir_INCLUDES = \ + GObject-2.0 \ + Gtk-3.0 +AppIndicator_3_1_gir_CFLAGS = $(INDICATOR3_CFLAGS) -I$(srcdir) -I$(top_builddir)/src +AppIndicator_3_1_gir_LIBS = libappindicator3.la +AppIndicator_3_1_gir_FILES = $(introspection_sources) + +INTROSPECTION_GIRS += AppIndicator-0.1.gir AppIndicator-3.1.gir girdir = $(datadir)/gir-1.0 gir_DATA = $(INTROSPECTION_GIRS) @@ -185,7 +218,7 @@ endif if HAVE_INTROSPECTION vapidir = $(datadir)/vala/vapi -vapi_DATA = AppIndicator-0.1.vapi +vapi_DATA = AppIndicator-0.1.vapi AppIndicator-3.1.vapi AppIndicator-0.1.vapi: AppIndicator-0.1.gir Makefile.am $(VALA_API_GEN) --library=AppIndicator-0.1 \ @@ -193,6 +226,12 @@ AppIndicator-0.1.vapi: AppIndicator-0.1.gir Makefile.am --vapidir=$(top_builddir)/src \ $< +AppIndicator-3.1.vapi: AppIndicator-3.1.gir Makefile.am + $(VALA_API_GEN) --library=AppIndicator-3.1 \ + --pkg gtk+-3.0 \ + --vapidir=$(top_builddir)/src \ + $< + CLEANFILES += $(vapi_DATA) endif diff --git a/src/app-indicator.c b/src/app-indicator.c index bc43e58..939ca9a 100644 --- a/src/app-indicator.c +++ b/src/app-indicator.c @@ -1270,7 +1270,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")) { @@ -1422,7 +1422,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/appindicator-3.1.pc.in b/src/appindicator-3.1.pc.in new file mode 100644 index 0000000..37ed687 --- /dev/null +++ b/src/appindicator-3.1.pc.in @@ -0,0 +1,14 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +bindir=@bindir@ +includedir=@includedir@ + +Cflags: -I${includedir}/libappindicator-3.1 +Requires: dbusmenu-glib gtk+-3.0 +Libs: -L${libdir} -lappindicator3 + +Name: appindicator-3.1 +Description: Application indicators +Version: @VERSION@ + -- cgit v1.2.3 From 60abdc2090b0a77e98011b4952bfad396db57626 Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Sat, 19 Jun 2010 09:34:12 -0400 Subject: use gtk3 versions of dbusmenu and indicator; use appindicator3 0.1 rather than appindicator 3.1 --- src/Makefile.am | 24 ++++++++++++------------ src/appindicator-3.1.pc.in | 14 -------------- src/appindicator3-0.1.pc.in | 14 ++++++++++++++ src/dbus-properties-client.h | 2 +- 4 files changed, 27 insertions(+), 27 deletions(-) delete mode 100644 src/appindicator-3.1.pc.in create mode 100644 src/appindicator3-0.1.pc.in (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index e3abf9f..2f0a061 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,7 +1,7 @@ CLEANFILES = DISTCLEANFILES = BUILT_SOURCES = -EXTRA_DIST = appindicator-0.1.pc.in appindicator-3.1.pc.in +EXTRA_DIST = appindicator-0.1.pc.in appindicator3-0.1.pc.in include $(top_srcdir)/Makefile.am.enum include $(top_srcdir)/Makefile.am.marshal @@ -79,7 +79,7 @@ glib_marshal_prefix = _application_service_marshal # Library ################################## -pkgconfig_DATA = appindicator-0.1.pc appindicator-3.1.pc +pkgconfig_DATA = appindicator-0.1.pc appindicator3-0.1.pc pkgconfigdir = $(libdir)/pkgconfig glib_enum_h = app-indicator-enum-types.h @@ -93,7 +93,7 @@ lib_LTLIBRARIES = \ libappindicator3.la libappindicatorincludedir=$(includedir)/libappindicator-0.1/libappindicator -libappindicator3includedir=$(includedir)/libappindicator-3.1/libappindicator +libappindicator3includedir=$(includedir)/libappindicator3-0.1/libappindicator libappindicator_headers = \ app-indicator.h @@ -191,15 +191,15 @@ AppIndicator_0_1_gir_CFLAGS = $(INDICATOR_CFLAGS) -I$(srcdir) -I$(top_builddir)/ AppIndicator_0_1_gir_LIBS = libappindicator.la AppIndicator_0_1_gir_FILES = $(introspection_sources) -AppIndicator-3.1.gir: libappindicator.la $(glib_enum_h) -AppIndicator_3_1_gir_INCLUDES = \ +AppIndicator3-0.1.gir: libappindicator3.la $(glib_enum_h) +AppIndicator3_0_1_gir_INCLUDES = \ GObject-2.0 \ Gtk-3.0 -AppIndicator_3_1_gir_CFLAGS = $(INDICATOR3_CFLAGS) -I$(srcdir) -I$(top_builddir)/src -AppIndicator_3_1_gir_LIBS = libappindicator3.la -AppIndicator_3_1_gir_FILES = $(introspection_sources) +AppIndicator3_0_1_gir_CFLAGS = $(INDICATOR3_CFLAGS) -I$(srcdir) -I$(top_builddir)/src +AppIndicator3_0_1_gir_LIBS = libappindicator3.la +AppIndicator3_0_1_gir_FILES = $(introspection_sources) -INTROSPECTION_GIRS += AppIndicator-0.1.gir AppIndicator-3.1.gir +INTROSPECTION_GIRS += AppIndicator-0.1.gir AppIndicator3-0.1.gir girdir = $(datadir)/gir-1.0 gir_DATA = $(INTROSPECTION_GIRS) @@ -218,7 +218,7 @@ endif if HAVE_INTROSPECTION vapidir = $(datadir)/vala/vapi -vapi_DATA = AppIndicator-0.1.vapi AppIndicator-3.1.vapi +vapi_DATA = AppIndicator-0.1.vapi AppIndicator3-0.1.vapi AppIndicator-0.1.vapi: AppIndicator-0.1.gir Makefile.am $(VALA_API_GEN) --library=AppIndicator-0.1 \ @@ -226,8 +226,8 @@ AppIndicator-0.1.vapi: AppIndicator-0.1.gir Makefile.am --vapidir=$(top_builddir)/src \ $< -AppIndicator-3.1.vapi: AppIndicator-3.1.gir Makefile.am - $(VALA_API_GEN) --library=AppIndicator-3.1 \ +AppIndicator3-0.1.vapi: AppIndicator3-0.1.gir Makefile.am + $(VALA_API_GEN) --library=AppIndicator3-0.1 \ --pkg gtk+-3.0 \ --vapidir=$(top_builddir)/src \ $< diff --git a/src/appindicator-3.1.pc.in b/src/appindicator-3.1.pc.in deleted file mode 100644 index 37ed687..0000000 --- a/src/appindicator-3.1.pc.in +++ /dev/null @@ -1,14 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -bindir=@bindir@ -includedir=@includedir@ - -Cflags: -I${includedir}/libappindicator-3.1 -Requires: dbusmenu-glib gtk+-3.0 -Libs: -L${libdir} -lappindicator3 - -Name: appindicator-3.1 -Description: Application indicators -Version: @VERSION@ - 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/dbus-properties-client.h b/src/dbus-properties-client.h index dc9f299..6f08e78 100644 --- a/src/dbus-properties-client.h +++ b/src/dbus-properties-client.h @@ -39,7 +39,7 @@ org_freedesktop_DBus_Properties_get_async_callback (DBusGProxy *proxy, DBusGProx { DBusGAsyncData *data = (DBusGAsyncData*) user_data; GError *error = NULL; - GValue OUT_Value = {0}; + GValue OUT_Value = { 0, }; dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_VALUE, &OUT_Value, G_TYPE_INVALID); (*(org_freedesktop_DBus_Properties_get_reply)data->cb) (proxy, OUT_Value, error, data->userdata); return; -- cgit v1.2.3 From 3551eb170dd87fbe11148136813e1bb580b90604 Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Wed, 6 Oct 2010 12:08:49 -0400 Subject: instead of always building gtk2 and gtk3, add a --with-gtk= flag to configure to specify which to build with --- src/Makefile.am | 92 +++++++++++++++++++-------------------------- src/app-indicator.c | 16 ++++++-- src/indicator-application.c | 7 ++++ 3 files changed, 59 insertions(+), 56 deletions(-) (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index 2f0a061..55942d3 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,7 +1,19 @@ +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 +EXTRA_DIST = appindicator$(VER)-0.1.pc.in include $(top_srcdir)/Makefile.am.enum include $(top_srcdir)/Makefile.am.marshal @@ -26,19 +38,6 @@ libapplication_la_CFLAGS = $(INDICATOR_CFLAGS) \ libapplication_la_LIBADD = $(INDICATOR_LIBS) libapplication_la_LDFLAGS = -module -avoid-version -applicationlib1dir = $(INDICATORDIR) -applicationlib1_LTLIBRARIES = libapplication3.la -libapplication3_la_SOURCES = $(libapplication_la_SOURCES) -libapplication3_la_CFLAGS = $(INDICATOR3_CFLAGS) \ - -Wall \ - -Wl,-Bsymbolic-functions \ - -Wl,-z,defs \ - -Wl,--as-needed \ - -Werror \ - -DG_LOG_DOMAIN=\"Indicator-Application\" -libapplication3_la_LIBADD = $(INDICATOR3_LIBS) -libapplication3_la_LDFLAGS = $(libapplication_la_LDFLAGS) - ################################## # Service ################################## @@ -70,7 +69,7 @@ indicator_application_service_CFLAGS = \ -DG_LOG_DOMAIN=\"indicator-application-service\" indicator_application_service_LDADD = \ $(INDICATOR_LIBS) \ - libappindicator.la + libappindicator$(VER).la glib_marshal_list = application-service-marshal.list glib_marshal_prefix = _application_service_marshal @@ -79,7 +78,7 @@ glib_marshal_prefix = _application_service_marshal # Library ################################## -pkgconfig_DATA = appindicator-0.1.pc appindicator3-0.1.pc +pkgconfig_DATA = appindicator$(VER)-0.1.pc pkgconfigdir = $(libdir)/pkgconfig glib_enum_h = app-indicator-enum-types.h @@ -88,12 +87,7 @@ glib_enum_headers = $(addprefix $(srcdir)/, $(libappindicator_headers)) DISTCLEANFILES += app-indicator-enum-types.c -lib_LTLIBRARIES = \ - libappindicator.la \ - libappindicator3.la - -libappindicatorincludedir=$(includedir)/libappindicator-0.1/libappindicator -libappindicator3includedir=$(includedir)/libappindicator3-0.1/libappindicator +libappindicatorincludedir=$(includedir)/libappindicator$(VER)-0.1/libappindicator libappindicator_headers = \ app-indicator.h @@ -102,8 +96,6 @@ libappindicatorinclude_HEADERS = \ $(libappindicator_headers) \ $(glib_enum_h) -libappindicator3include_HEADERS = $(libappindicatorinclude_HEADERS) - BUILT_SOURCES += \ notification-watcher-client.h \ notification-item-server.h @@ -112,27 +104,30 @@ libappindicator_la_SOURCES = \ $(libappindicator_headers) \ app-indicator-enum-types.c \ app-indicator.c -libappindicator3_la_SOURCES = $(libappindicator_la_SOURCES) libappindicator_la_LDFLAGS = \ -version-info 0:0:0 \ -no-undefined \ -export-symbols-regex "^[^_d].*" -libappindicator3_la_LDFLAGS = $(libappindicator_la_LDFLAGS) libappindicator_la_CFLAGS = \ $(INDICATOR_CFLAGS) \ -Wall -Werror \ -DG_LOG_DOMAIN=\"libappindicator\" -libappindicator3_la_CFLAGS = \ - $(INDICATOR3_CFLAGS) \ - -Wall -Werror \ - -DG_LOG_DOMAIN=\"libappindicator\" libappindicator_la_LIBADD = \ $(INDICATOR_LIBS) -libappindicator3_la_LIBADD = \ - $(INDICATOR3_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 @@ -183,23 +178,20 @@ introspection_sources = \ $(addprefix $(srcdir)/,$(libappindicator_headers)) \ $(addprefix $(top_builddir)/src/, $(glib_enum_h)) -AppIndicator-0.1.gir: libappindicator.la $(glib_enum_h) +AppIndicator$(VER)-0.1.gir: libappindicator$(VER).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) -AppIndicator3-0.1.gir: libappindicator3.la $(glib_enum_h) -AppIndicator3_0_1_gir_INCLUDES = \ - GObject-2.0 \ - Gtk-3.0 -AppIndicator3_0_1_gir_CFLAGS = $(INDICATOR3_CFLAGS) -I$(srcdir) -I$(top_builddir)/src -AppIndicator3_0_1_gir_LIBS = libappindicator3.la -AppIndicator3_0_1_gir_FILES = $(introspection_sources) +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-0.1.gir AppIndicator3-0.1.gir +INTROSPECTION_GIRS += AppIndicator$(VER)-0.1.gir girdir = $(datadir)/gir-1.0 gir_DATA = $(INTROSPECTION_GIRS) @@ -218,17 +210,11 @@ endif if HAVE_INTROSPECTION vapidir = $(datadir)/vala/vapi -vapi_DATA = AppIndicator-0.1.vapi AppIndicator3-0.1.vapi - -AppIndicator-0.1.vapi: AppIndicator-0.1.gir Makefile.am - $(VALA_API_GEN) --library=AppIndicator-0.1 \ - --pkg gtk+-2.0 \ - --vapidir=$(top_builddir)/src \ - $< +vapi_DATA = AppIndicator$(VER)-0.1.vapi -AppIndicator3-0.1.vapi: AppIndicator3-0.1.gir Makefile.am - $(VALA_API_GEN) --library=AppIndicator3-0.1 \ - --pkg gtk+-3.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 939ca9a..a52a063 100644 --- a/src/app-indicator.c +++ b/src/app-indicator.c @@ -33,7 +33,11 @@ License version 3 and version 2.1 along with this program. If not, see #include #include +#ifdef HAVE_GTK3 +#include +#else #include +#endif #include "app-indicator.h" #include "app-indicator-enum-types.h" @@ -1194,13 +1198,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); @@ -1212,16 +1220,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); diff --git a/src/indicator-application.c b/src/indicator-application.c index 16c3a9f..7735539 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 . */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif /* G Stuff */ #include @@ -29,7 +32,11 @@ with this program. If not, see . /* DBus Stuff */ #include +#ifdef HAVE_GTK3 +#include +#else #include +#endif /* Indicator Stuff */ #include -- cgit v1.2.3 From 6f032f50c8bec41cd56e36ec09af118a9684af5b Mon Sep 17 00:00:00 2001 From: Aurelien Gateau Date: Fri, 8 Oct 2010 17:02:24 +0200 Subject: Fix implementation of org.kde.StatusNotifierWatcher interface ProtocolVersion, IsStatusNotifierHostRegistered and RegisteredStatusNotifierItems are properties, not methods. --- src/application-service-appstore.c | 18 ++++++++ src/application-service-appstore.h | 1 + src/application-service-watcher.c | 93 ++++++++++++++++++++++++++++---------- src/notification-watcher.xml | 13 ++---- 4 files changed, 91 insertions(+), 34 deletions(-) (limited to 'src') diff --git a/src/application-service-appstore.c b/src/application-service-appstore.c index 46118bb..e3befff 100644 --- a/src/application-service-appstore.c +++ b/src/application-service-appstore.c @@ -1022,6 +1022,24 @@ application_service_appstore_application_remove (ApplicationServiceAppstore * ap return; } +gchar** +application_service_appstore_application_get_list (ApplicationServiceAppstore * appstore) +{ + ApplicationServiceAppstorePrivate * priv = appstore->priv; + gchar ** out; + gchar ** outpntr; + GList * listpntr; + + out = g_new(gchar*, g_list_length(priv->applications) + 1); + + for (listpntr = priv->applications, outpntr = out; listpntr != NULL; listpntr = g_list_next(listpntr), ++outpntr) { + Application * app = (Application *)listpntr->data; + *outpntr = g_strdup_printf("%s%s", app->dbus_name, app->dbus_object); + } + *outpntr = 0; + return out; +} + /* Creates a basic appstore object and attaches the LRU file object to it. */ ApplicationServiceAppstore * diff --git a/src/application-service-appstore.h b/src/application-service-appstore.h index 73f6a9d..aa2824b 100644 --- a/src/application-service-appstore.h +++ b/src/application-service-appstore.h @@ -66,6 +66,7 @@ void application_service_appstore_application_remove (ApplicationServiceApp void application_service_appstore_approver_add (ApplicationServiceAppstore * appstore, const gchar * dbus_name, const gchar * dbus_object); +gchar** application_service_appstore_application_get_list (ApplicationServiceAppstore * appstore); G_END_DECLS diff --git a/src/application-service-watcher.c b/src/application-service-watcher.c index 5b77620..946b2a9 100644 --- a/src/application-service-watcher.c +++ b/src/application-service-watcher.c @@ -30,12 +30,25 @@ with this program. If not, see . #include "application-service-watcher.h" #include "dbus-shared.h" +/* Enum for the properties so that they can be quickly + found and looked up. */ +enum { + PROP_0, + PROP_PROTOCOL_VERSION, + PROP_IS_STATUS_NOTIFIER_HOST_REGISTERED, + PROP_REGISTERED_STATUS_NOTIFIER_ITEMS +}; + +/* The strings so that they can be slowly looked up. */ +#define PROP_PROTOCOL_VERSION_S "protocol-version" +#define PROP_IS_STATUS_NOTIFIER_HOST_REGISTERED_S "is-status-notifier-host-registered" +#define PROP_REGISTERED_STATUS_NOTIFIER_ITEMS_S "registered-status-notifier-items" + +#define CURRENT_PROTOCOL_VERSION 0 + static gboolean _notification_watcher_server_register_status_notifier_item (ApplicationServiceWatcher * appwatcher, const gchar * service, DBusGMethodInvocation * method); -static gboolean _notification_watcher_server_registered_status_notifier_items (ApplicationServiceWatcher * appwatcher, GArray ** apps); -static gboolean _notification_watcher_server_protocol_version (ApplicationServiceWatcher * appwatcher, char ** version); static gboolean _notification_watcher_server_register_notification_host (ApplicationServiceWatcher * appwatcher, const gchar * host); static gboolean _notification_watcher_server_x_ayatana_register_notification_approver (ApplicationServiceWatcher * appwatcher, const gchar * path, const GArray * categories, DBusGMethodInvocation * method); -static gboolean _notification_watcher_server_is_notification_host_registered (ApplicationServiceWatcher * appwatcher, gboolean * haveHost); static void get_name_cb (DBusGProxy * proxy, guint status, GError * error, gpointer data); #include "notification-watcher-server.h" @@ -66,6 +79,8 @@ static void application_service_watcher_class_init (ApplicationServiceWatcherCla static void application_service_watcher_init (ApplicationServiceWatcher *self); static void application_service_watcher_dispose (GObject *object); static void application_service_watcher_finalize (GObject *object); +static void application_service_watcher_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); +static void application_service_watcher_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); G_DEFINE_TYPE (ApplicationServiceWatcher, application_service_watcher, G_TYPE_OBJECT); @@ -79,6 +94,34 @@ application_service_watcher_class_init (ApplicationServiceWatcherClass *klass) object_class->dispose = application_service_watcher_dispose; object_class->finalize = application_service_watcher_finalize; + /* Property funcs */ + object_class->set_property = application_service_watcher_set_property; + object_class->get_property = application_service_watcher_get_property; + + /* Properties */ + g_object_class_install_property (object_class, + PROP_PROTOCOL_VERSION, + g_param_spec_int(PROP_PROTOCOL_VERSION_S, + "Protocol Version", + "Which version of the StatusNotifierProtocol this watcher implements", + 0, G_MAXINT, + CURRENT_PROTOCOL_VERSION, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (object_class, + PROP_IS_STATUS_NOTIFIER_HOST_REGISTERED, + g_param_spec_boolean(PROP_IS_STATUS_NOTIFIER_HOST_REGISTERED_S, + "Is StatusNotifierHost Registered", + "True if there is at least one StatusNotifierHost registered", + FALSE, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (object_class, + PROP_REGISTERED_STATUS_NOTIFIER_ITEMS, + g_param_spec_boxed(PROP_REGISTERED_STATUS_NOTIFIER_ITEMS_S, + "Registered StatusNotifierItems", + "The list of StatusNotifierItems registered to this watcher", + G_TYPE_STRV, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + /* Signals */ signals[SERVICE_REGISTERED] = g_signal_new ("service-registered", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, @@ -175,6 +218,29 @@ application_service_watcher_finalize (GObject *object) return; } +static void +application_service_watcher_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) +{ + /* There are no writable properties for now */ +} + +static void +application_service_watcher_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) +{ + ApplicationServiceWatcherPrivate * priv = APPLICATION_SERVICE_WATCHER_GET_PRIVATE(object); + switch (prop_id) { + case PROP_PROTOCOL_VERSION: + g_value_set_int (value, CURRENT_PROTOCOL_VERSION); + break; + case PROP_IS_STATUS_NOTIFIER_HOST_REGISTERED: + g_value_set_boolean (value, TRUE); + break; + case PROP_REGISTERED_STATUS_NOTIFIER_ITEMS: + g_value_set_boxed (value, application_service_appstore_application_get_list(priv->appstore)); + break; + } +} + ApplicationServiceWatcher * application_service_watcher_new (ApplicationServiceAppstore * appstore) { @@ -204,20 +270,6 @@ _notification_watcher_server_register_status_notifier_item (ApplicationServiceWa return TRUE; } -static gboolean -_notification_watcher_server_registered_status_notifier_items (ApplicationServiceWatcher * appwatcher, GArray ** apps) -{ - - return FALSE; -} - -static gboolean -_notification_watcher_server_protocol_version (ApplicationServiceWatcher * appwatcher, char ** version) -{ - *version = g_strdup("Ayatana Version 1"); - return TRUE; -} - static gboolean _notification_watcher_server_register_notification_host (ApplicationServiceWatcher * appwatcher, const gchar * host) { @@ -225,13 +277,6 @@ _notification_watcher_server_register_notification_host (ApplicationServiceWatch return FALSE; } -static gboolean -_notification_watcher_server_is_notification_host_registered (ApplicationServiceWatcher * appwatcher, gboolean * haveHost) -{ - *haveHost = TRUE; - return TRUE; -} - /* Function to handle the return of the get name. There isn't a whole lot that can be done, but we're atleast going to tell people. */ static void diff --git a/src/notification-watcher.xml b/src/notification-watcher.xml index 5f19dd2..1a99af3 100644 --- a/src/notification-watcher.xml +++ b/src/notification-watcher.xml @@ -3,25 +3,18 @@ - + + + - - - - - - - - - -- cgit v1.2.3 From ea206ef1316942b005fd538dc8a251bd239291cd Mon Sep 17 00:00:00 2001 From: Aurelien Gateau Date: Fri, 8 Oct 2010 18:04:27 +0200 Subject: NotificationHost => StatusNotifierHost, Service => StatusNotifierItem --- src/application-service-watcher.c | 30 +++++++++++------------------- src/application-service-watcher.h | 7 +++---- src/notification-watcher.xml | 10 ++++------ 3 files changed, 18 insertions(+), 29 deletions(-) (limited to 'src') diff --git a/src/application-service-watcher.c b/src/application-service-watcher.c index 946b2a9..50b0be9 100644 --- a/src/application-service-watcher.c +++ b/src/application-service-watcher.c @@ -47,7 +47,7 @@ enum { #define CURRENT_PROTOCOL_VERSION 0 static gboolean _notification_watcher_server_register_status_notifier_item (ApplicationServiceWatcher * appwatcher, const gchar * service, DBusGMethodInvocation * method); -static gboolean _notification_watcher_server_register_notification_host (ApplicationServiceWatcher * appwatcher, const gchar * host); +static gboolean _notification_watcher_server_register_status_notifier_host (ApplicationServiceWatcher * appwatcher, const gchar * host); static gboolean _notification_watcher_server_x_ayatana_register_notification_approver (ApplicationServiceWatcher * appwatcher, const gchar * path, const GArray * categories, DBusGMethodInvocation * method); static void get_name_cb (DBusGProxy * proxy, guint status, GError * error, gpointer data); @@ -65,10 +65,9 @@ struct _ApplicationServiceWatcherPrivate { /* Signals Stuff */ enum { - SERVICE_REGISTERED, - SERVICE_UNREGISTERED, - NOTIFICATION_HOST_REGISTERED, - NOTIFICATION_HOST_UNREGISTERED, + STATUS_NOTIFIER_ITEM_REGISTERED, + STATUS_NOTIFIER_ITEM_UNREGISTERED, + STATUS_NOTIFIER_HOST_REGISTERED, LAST_SIGNAL }; @@ -122,31 +121,24 @@ application_service_watcher_class_init (ApplicationServiceWatcherClass *klass) G_TYPE_STRV, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); /* Signals */ - signals[SERVICE_REGISTERED] = g_signal_new ("service-registered", + signals[STATUS_NOTIFIER_ITEM_REGISTERED] = g_signal_new ("status-notifier-item-registered", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (ApplicationServiceWatcherClass, service_registered), + G_STRUCT_OFFSET (ApplicationServiceWatcherClass, status_notifier_item_registered), NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING, G_TYPE_NONE); - signals[SERVICE_UNREGISTERED] = g_signal_new ("service-unregistered", + signals[STATUS_NOTIFIER_ITEM_UNREGISTERED] = g_signal_new ("status-notifier-item-unregistered", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (ApplicationServiceWatcherClass, service_unregistered), + G_STRUCT_OFFSET (ApplicationServiceWatcherClass, status_notifier_item_unregistered), NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING, G_TYPE_NONE); - signals[NOTIFICATION_HOST_REGISTERED] = g_signal_new ("notification-host-registered", + signals[STATUS_NOTIFIER_HOST_REGISTERED] = g_signal_new ("status-notifier-host-registered", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (ApplicationServiceWatcherClass, notification_host_registered), - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0, G_TYPE_NONE); - signals[NOTIFICATION_HOST_UNREGISTERED] = g_signal_new ("notification-host-unregistered", - G_TYPE_FROM_CLASS(klass), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (ApplicationServiceWatcherClass, notification_host_unregistered), + G_STRUCT_OFFSET (ApplicationServiceWatcherClass, status_notifier_host_registered), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0, G_TYPE_NONE); @@ -271,7 +263,7 @@ _notification_watcher_server_register_status_notifier_item (ApplicationServiceWa } static gboolean -_notification_watcher_server_register_notification_host (ApplicationServiceWatcher * appwatcher, const gchar * host) +_notification_watcher_server_register_status_notifier_host (ApplicationServiceWatcher * appwatcher, const gchar * host) { return FALSE; diff --git a/src/application-service-watcher.h b/src/application-service-watcher.h index ee6a723..6c430db 100644 --- a/src/application-service-watcher.h +++ b/src/application-service-watcher.h @@ -44,10 +44,9 @@ struct _ApplicationServiceWatcherClass { GObjectClass parent_class; /* Signals */ - void (*service_registered) (ApplicationServiceWatcher * watcher, gchar * object, gpointer data); - void (*service_unregistered) (ApplicationServiceWatcher * watcher, gchar * object, gpointer data); - void (*notification_host_registered) (ApplicationServiceWatcher * watcher, gpointer data); - void (*notification_host_unregistered) (ApplicationServiceWatcher * watcher, gpointer data); + void (*status_notifier_item_registered) (ApplicationServiceWatcher * watcher, gchar * object, gpointer data); + void (*status_notifier_item_unregistered) (ApplicationServiceWatcher * watcher, gchar * object, gpointer data); + void (*status_notifier_host_registered) (ApplicationServiceWatcher * watcher, gpointer data); }; struct _ApplicationServiceWatcher { diff --git a/src/notification-watcher.xml b/src/notification-watcher.xml index 1a99af3..b03c5e3 100644 --- a/src/notification-watcher.xml +++ b/src/notification-watcher.xml @@ -12,7 +12,7 @@ - + @@ -24,15 +24,13 @@ - + - + - - - + -- cgit v1.2.3 From e8289f98cdb39d8343b211be1ad2932ebad11876 Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Wed, 13 Oct 2010 08:38:31 -0400 Subject: ship both pc files in EXTRA_DIST --- src/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index 55942d3..7704caf 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -13,7 +13,7 @@ endif CLEANFILES = DISTCLEANFILES = BUILT_SOURCES = -EXTRA_DIST = appindicator$(VER)-0.1.pc.in +EXTRA_DIST = appindicator-0.1.pc.in appindicator3-0.1.pc.in include $(top_srcdir)/Makefile.am.enum include $(top_srcdir)/Makefile.am.marshal -- cgit v1.2.3 From 3758df51a8e1f7e5b7585a0a62ad07400d1f55fd Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 19 Oct 2010 18:47:22 -0500 Subject: Adding a check for the name to ensure we didn't miss it --- src/app-indicator.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src') diff --git a/src/app-indicator.c b/src/app-indicator.c index 6511589..44b1050 100644 --- a/src/app-indicator.c +++ b/src/app-indicator.c @@ -32,6 +32,8 @@ License version 3 and version 2.1 along with this program. If not, see #endif #include +#include + #include #include @@ -1052,6 +1054,17 @@ dbus_owner_change (DBusGProxy * proxy, const gchar * name, const gchar * prev, c return; } +/* Checking to see if someone already has the name we're looking for */ +static void +check_owner_cb (DBusGProxy *proxy, gboolean exists, GError *error, gpointer userdata) +{ + if (exists) { + dbus_owner_change(proxy, NOTIFICATION_WATCHER_DBUS_ADDR, NULL, "Non NULL", userdata); + } + + return; +} + /* This is an idle function to create the proxy. This is mostly because start_fallback_timer can get called in the distruction of a proxy and thus the proxy manager gets confused when creating @@ -1074,6 +1087,11 @@ setup_name_owner_proxy (gpointer data) G_TYPE_INVALID); dbus_g_proxy_connect_signal(priv->dbus_proxy, "NameOwnerChanged", G_CALLBACK(dbus_owner_change), data, NULL); + + /* Check to see if anyone has the name we're looking for + just incase we missed it changing. */ + + org_freedesktop_DBus_name_has_owner_async(priv->dbus_proxy, NOTIFICATION_WATCHER_DBUS_ADDR, check_owner_cb, data); } return FALSE; -- cgit v1.2.3 From ccea5af6d5cce8bcb3a6f14fa8a4325708e0e71c Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 19 Oct 2010 18:48:39 -0500 Subject: Add a nice little warning in --- src/app-indicator.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') diff --git a/src/app-indicator.c b/src/app-indicator.c index 44b1050..5a9e531 100644 --- a/src/app-indicator.c +++ b/src/app-indicator.c @@ -1058,6 +1058,11 @@ dbus_owner_change (DBusGProxy * proxy, const gchar * name, const gchar * prev, c static void check_owner_cb (DBusGProxy *proxy, gboolean exists, GError *error, gpointer userdata) { + if (error != NULL) { + g_warning("Unable to check for '" NOTIFICATION_WATCHER_DBUS_ADDR "' on DBus. No worries, but concerning."); + return; + } + if (exists) { dbus_owner_change(proxy, NOTIFICATION_WATCHER_DBUS_ADDR, NULL, "Non NULL", userdata); } -- cgit v1.2.3 From b176944e2d256abca0ced734f31e09d621a19998 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 20 Oct 2010 15:22:46 -0400 Subject: Uhg, we need a message to know if we've fixed the bug. --- src/app-indicator.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/app-indicator.c b/src/app-indicator.c index 5a9e531..4f7daa8 100644 --- a/src/app-indicator.c +++ b/src/app-indicator.c @@ -1064,6 +1064,7 @@ check_owner_cb (DBusGProxy *proxy, gboolean exists, GError *error, gpointer user } if (exists) { + g_debug("Woah, we actually has a race condition with dbus"); dbus_owner_change(proxy, NOTIFICATION_WATCHER_DBUS_ADDR, NULL, "Non NULL", userdata); } -- cgit v1.2.3 From 0a09bca306de781117fb92b1084dfafc6c267679 Mon Sep 17 00:00:00 2001 From: Ken VanDine Date: Fri, 3 Dec 2010 17:15:12 -0500 Subject: Build fixes with the latest g-ir-scanner and vapigen --- src/AppIndicator-0.1.metadata | 1 + src/Makefile.am | 13 ++++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 src/AppIndicator-0.1.metadata (limited to 'src') 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 1c4e7ae..95051dc 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,7 +1,9 @@ CLEANFILES = DISTCLEANFILES = BUILT_SOURCES = -EXTRA_DIST = appindicator-0.1.pc.in +EXTRA_DIST = \ + appindicator-0.1.pc.in \ + AppIndicator-0.1.metadata include $(top_srcdir)/Makefile.am.enum include $(top_srcdir)/Makefile.am.marshal @@ -156,16 +158,17 @@ EXTRA_DIST += $(DBUS_SPECS) INTROSPECTION_GIRS = 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 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-0.1.gir: libappindicator.la $(glib_enum_h) +AppIndicator-0.1.gir: libappindicator.la AppIndicator_0_1_gir_INCLUDES = \ GObject-2.0 \ Gtk-2.0 -- cgit v1.2.3