← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~ted/cape-girardeau/libinterface into lp:~ted/cape-girardeau/trunk

 

Ted Gould has proposed merging lp:~ted/cape-girardeau/libinterface into lp:~ted/cape-girardeau/trunk.

    Requested reviews:
    Cape Girardeau Team (cape-girardeau-team)


Building up the library and it's interface.  A little trick due to enums :-/
-- 
https://code.launchpad.net/~ted/cape-girardeau/libinterface/+merge/13501
Your team ayatana-commits is subscribed to branch lp:~ted/cape-girardeau/trunk.
=== modified file '.bzrignore'
--- .bzrignore	2009-10-13 20:37:08 +0000
+++ .bzrignore	2009-10-16 20:11:35 +0000
@@ -5,3 +5,13 @@
 src/indicator-custom-service
 src/libcustom.la
 src/libcustom_la-indicator-custom.lo
+src/notification-item-client.h
+src/notification-item-server.h
+src/notification-watcher-client.h
+src/notification-watcher-server.h
+src/libcustomindicator.la
+src/libcustomindicator_la-custom-indicator.lo
+src/libcustomindicator/custom-indicator-enum-types.h
+src/libcustomindicator/custom-indicator-enum-types.c
+src/stamp-enum-types
+src/libcustomindicator_la-custom-indicator-enum-types.lo

=== modified file 'Makefile.am'
--- Makefile.am	2009-10-13 19:39:46 +0000
+++ Makefile.am	2009-10-16 20:11:35 +0000
@@ -2,3 +2,17 @@
           src
 
 DISTCHECK_CONFIGURE_FLAGS = --enable-localinstall
+
+dist-hook:
+	@if test -d "$(top_srcdir)/.bzr"; \
+		then \
+			echo Creating ChangeLog && \
+				( cd "$(top_srcdir)" && \
+				echo '# Generated by Makefile. Do not edit.'; echo; \
+				$(top_srcdir)/missing --run bzr log --gnu-changelog ) > ChangeLog.tmp \
+				&& mv -f ChangeLog.tmp $(top_distdir)/ChangeLog \
+				|| (rm -f ChangeLog.tmp; \
+					echo Failed to generate ChangeLog >&2 ); \
+        else \
+			echo Failed to generate ChangeLog: not a branch >&2; \
+	fi

=== added file 'Makefile.am.enum'
--- Makefile.am.enum	1970-01-01 00:00:00 +0000
+++ Makefile.am.enum	2009-10-16 20:11:35 +0000
@@ -0,0 +1,45 @@
+# Rules for generating enumeration types using glib-mkenums
+#
+# Define:
+# 	glib_enum_h = header template file
+# 	glib_enum_c = source template file
+# 	glib_enum_headers = list of headers to parse
+#
+# before including Makefile.am.enums. You will also need to have
+# the following targets already defined:
+#
+# 	CLEANFILES
+#	DISTCLEANFILES
+#	BUILT_SOURCES
+#	EXTRA_DIST
+#
+# Author: Emmanuele Bassi <ebassi@xxxxxxxxxxxxxxx>
+
+enum_tmpl_h=$(glib_enum_h:.h=.h.in)
+enum_tmpl_c=$(glib_enum_c:.c=.c.in)
+
+CLEANFILES += stamp-enum-types
+DISTCLEANFILES += $(glib_enum_h) $(glib_enum_c)
+BUILT_SOURCES += $(glib_enum_h) $(glib_enum_c)
+EXTRA_DIST += $(enum_tmpl_h) $(enum_tmpl_c)
+
+stamp-enum-types: $(glib_enum_headers)
+	$(QUIET_GEN)mkdir -p `dirname $(builddir)/$(glib_enum_h)`
+	$(QUIET_GEN)$(GLIB_MKENUMS) \
+		--template $(srcdir)/$(enum_tmpl_h) \
+	$(glib_enum_headers) > xgen-eh \
+	&& (cmp -s xgen-eh $(builddir)/$(glib_enum_h) || cp -f xgen-eh $(builddir)/$(glib_enum_h)) \
+	&& rm -f xgen-eh \
+	&& echo timestamp > $(@F)
+
+$(glib_enum_h): stamp-enum-types
+	@true
+
+$(glib_enum_c): $(glib_enum_h)
+	$(QUIET_GEN)mkdir -p `dirname $(builddir)/$(glib_enum_c)`
+	$(QUIET_GEN)$(GLIB_MKENUMS) \
+		--template $(srcdir)/$(enum_tmpl_c) \
+	$(glib_enum_headers) > xgen-ec \
+	&& cp -f xgen-ec $(builddir)/$(glib_enum_c) \
+	&& rm -f xgen-ec
+

=== added file 'Makefile.am.marshal'
--- Makefile.am.marshal	1970-01-01 00:00:00 +0000
+++ Makefile.am.marshal	2009-10-16 20:11:35 +0000
@@ -0,0 +1,45 @@
+# Rules for generating marshal files using glib-genmarshal
+#
+# Define:
+# 	glib_marshal_list = marshal list file
+# 	glib_marshal_prefix = prefix for marshal functions
+#
+# before including Makefile.am.marshal. You will also need to have
+# the following targets already defined:
+#
+# 	CLEANFILES
+#	DISTCLEANFILES
+#	BUILT_SOURCES
+#	EXTRA_DIST
+#
+# Author: Emmanuele Bassi <ebassi@xxxxxxxxxxxxxxx>
+
+marshal_h = $(glib_marshal_list:.list=.h)
+marshal_c = $(glib_marshal_list:.list=.c)
+
+CLEANFILES += stamp-marshal
+DISTCLEANFILES += $(marshal_h) $(marshal_c)
+BUILT_SOURCES += $(marshal_h) $(marshal_c)
+EXTRA_DIST += $(glib_marshal_list)
+
+stamp-marshal: $(glib_marshal_list)
+	$(QUIET_GEN)$(GLIB_GENMARSHAL) \
+		--prefix=$(glib_marshal_prefix) \
+		--header \
+	$(glib_marshal_list) > xgen-mh \
+	&& (cmp -s xgen-mh $(marshal_h) || cp -f xgen-mh $(marshal_h)) \
+	&& rm -f xgen-mh \
+	&& echo timestamp > $(@F)
+
+$(marshal_h): stamp-marshal
+	@true
+
+$(marshal_c): $(marshal_h)
+	$(QUIET_GEN)(echo "#include \"$(marshal_h)\"" ; \
+	$(GLIB_GENMARSHAL) \
+		--prefix=$(glib_marshal_prefix) \
+		--body \
+	$(glib_marshal_list)) > xgen-mc \
+	&& cp xgen-mc $(marshal_c) \
+	&& rm -f xgen-mc
+

=== modified file 'configure.ac'
--- configure.ac	2009-10-13 19:39:35 +0000
+++ configure.ac	2009-10-16 20:11:35 +0000
@@ -20,6 +20,11 @@
 
 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
 
+AC_PATH_PROG([GLIB_MKENUMS], [glib-mkenums])
+AC_PATH_PROG([GLIB_GENMARSHAL], [glib-genmarshal])
+
+PKG_PROG_PKG_CONFIG
+
 ###########################
 # Dependencies 
 ###########################

=== modified file 'src/Makefile.am'
--- src/Makefile.am	2009-10-13 20:37:08 +0000
+++ src/Makefile.am	2009-10-16 20:11:35 +0000
@@ -1,5 +1,9 @@
+CLEANFILES = 
+DISTCLEANFILES = 
+BUILT_SOURCES = 
+EXTRA_DIST = 
 
-libexec_PROGRAMS = indicator-custom-service
+include $(top_srcdir)/Makefile.am.enum
 
 ##################################
 # Indicator
@@ -22,10 +26,83 @@
 # Service
 ##################################
 
+libexec_PROGRAMS = indicator-custom-service
+
 indicator_custom_service_SOURCES = \
-	custom-service.c
+	custom-service.c \
+	notification-item-client.h \
+	notification-watcher-server.h
 indicator_custom_service_CFLAGS = \
 	$(INDICATOR_CFLAGS) \
 	-Wall -Werror
 indicator_custom_service_LDADD = \
 	$(INDICATOR_LIBS)
+
+##################################
+# Library
+##################################
+
+glib_enum_h = libcustomindicator/custom-indicator-enum-types.h
+glib_enum_c = libcustomindicator/custom-indicator-enum-types.c
+glib_enum_headers = $(libcustomindicator_headers)
+
+lib_LTLIBRARIES = \
+	libcustomindicator.la
+
+libcustomindicatorincludedir=$(includedir)/libcustomindicator-0.1/libcustomindicator
+
+libcustomindicator_headers = \
+	$(srcdir)/libcustomindicator/custom-indicator.h
+
+libcustomindicatorinclude_HEADERS = \
+	$(libcustomindicator_headers) \
+	$(glib_enum_h)
+
+libcustomindicator_la_SOURCES = \
+	$(libcustomindicator_headers) \
+	$(glib_enum_c) \
+	notification-watcher-client.h \
+	notification-item-server.h \
+	libcustomindicator/custom-indicator.c
+
+libcustomindicator_la_LDFLAGS = \
+	-version-info 0:0:0 \
+	-no-undefined \
+	-export-symbols-regex "^[^_d].*"
+
+libcustomindicator_la_CFLAGS = \
+	$(INDICATOR_CFLAGS) \
+	-Wall -Werror
+
+libcustomindicator_la_LIBADD = \
+	$(INDICATOR_LIBS)
+
+##################################
+# DBus Specs
+##################################
+
+DBUS_SPECS = \
+	notification-item.xml \
+	notification-watcher.xml
+
+%-client.h: %.xml
+	dbus-binding-tool \
+		--prefix=_$(subst -,_,$(<:.xml=))_client \
+		--mode=glib-client \
+		--output=$@ \
+		$<
+
+%-server.h: %.xml
+	dbus-binding-tool \
+		--prefix=_$(subst -,_,$(<:.xml=))_server \
+		--mode=glib-server \
+		--output=$@ \
+		$<
+
+BUILT_SOURCES += \
+	$(DBUS_SPECS:.xml=-client.h) \
+	$(DBUS_SPECS:.xml=-server.h)
+
+CLEANFILES += $(BUILT_SOURCES)
+
+EXTRA_DIST += $(DBUS_SPECS)

=== modified file 'src/custom-service.c'
--- src/custom-service.c	2009-10-13 20:37:08 +0000
+++ src/custom-service.c	2009-10-16 20:11:35 +0000
@@ -1,4 +1,13 @@
-
+#include "notification-item-client.h"
+
+void _notification_watcher_server_register_service (void) { };
+void _notification_watcher_server_registered_services (void) { };
+void _notification_watcher_server_protocol_version (void) { };
+void _notification_watcher_server_register_notification_host (void) { };
+void _notification_watcher_server_is_notification_host_registered (void) { };
+
+#include "notification-watcher-server.h"
+ 
 int
 main (int argc, char ** argv)
 {

=== added directory 'src/libcustomindicator'
=== added file 'src/libcustomindicator/custom-indicator-enum-types.c.in'
--- src/libcustomindicator/custom-indicator-enum-types.c.in	1970-01-01 00:00:00 +0000
+++ src/libcustomindicator/custom-indicator-enum-types.c.in	2009-10-16 20:11:35 +0000
@@ -0,0 +1,33 @@
+/*** BEGIN file-header ***/
+#include "libcustomindicator/custom-indicator-enum-types.h"
+
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+#include "@filename@"
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType
+@EnumName@_get_type (void)
+{
+	static GType etype = 0;
+	if (G_UNLIKELY(etype == 0)) {
+		static const G@Type@Value values[] = {
+/*** END value-header ***/
+
+/*** BEGIN value-production ***/
+			{ @VALUENAME@,  "@VALUENAME@", "@valuenick@" },
+/*** END value-production ***/
+
+/*** BEGIN value-tail ***/
+			{ 0, NULL, NULL}
+		};
+		
+		etype = g_@type@_register_static (g_intern_static_string("@EnumName@"), values);
+	}
+
+	return etype;
+}
+
+/*** END value-tail ***/

=== added file 'src/libcustomindicator/custom-indicator-enum-types.h.in'
--- src/libcustomindicator/custom-indicator-enum-types.h.in	1970-01-01 00:00:00 +0000
+++ src/libcustomindicator/custom-indicator-enum-types.h.in	2009-10-16 20:11:35 +0000
@@ -0,0 +1,33 @@
+/*** BEGIN file-header ***/
+#ifndef __CUSTOM_INDICATOR_ENUM_TYPES_H__
+#define __CUSTOM_INDICATOR_ENUM_TYPES_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/*** END file-header ***/
+
+/*** BEGIN file-tail ***/
+
+G_END_DECLS
+
+#endif /* __CUSTOM_INDICATOR_ENUM_TYPES_H__ */
+/*** END file-tail ***/
+
+/*** BEGIN file-production ***/
+/* Enumerations from file: "@filename@" */
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+/**
+	@EnumName@_get_type:
+
+	Builds a glib type for the @EnumName@ enumeration.
+
+	Return value: A registered type for the enum
+*/
+GType @EnumName@_get_type (void) G_GNUC_CONST;
+#define CLUTTER_TYPE_@ENUMSHORT@ (@EnumName@_get_type())
+
+/*** END value-header ***/

=== added file 'src/libcustomindicator/custom-indicator.c'
--- src/libcustomindicator/custom-indicator.c	1970-01-01 00:00:00 +0000
+++ src/libcustomindicator/custom-indicator.c	2009-10-16 20:11:35 +0000
@@ -0,0 +1,57 @@
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "custom-indicator.h"
+
+typedef struct _CustomIndicatorPrivate CustomIndicatorPrivate;
+struct _CustomIndicatorPrivate {
+	int placeholder;
+};
+
+#define CUSTOM_INDICATOR_GET_PRIVATE(o) \
+(G_TYPE_INSTANCE_GET_PRIVATE ((o), CUSTOM_INDICATOR_TYPE, CustomIndicatorPrivate))
+
+static void custom_indicator_class_init (CustomIndicatorClass *klass);
+static void custom_indicator_init       (CustomIndicator *self);
+static void custom_indicator_dispose    (GObject *object);
+static void custom_indicator_finalize   (GObject *object);
+
+G_DEFINE_TYPE (CustomIndicator, custom_indicator, G_TYPE_OBJECT);
+
+static void
+custom_indicator_class_init (CustomIndicatorClass *klass)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+	g_type_class_add_private (klass, sizeof (CustomIndicatorPrivate));
+
+	object_class->dispose = custom_indicator_dispose;
+	object_class->finalize = custom_indicator_finalize;
+
+	return;
+}
+
+static void
+custom_indicator_init (CustomIndicator *self)
+{
+
+	return;
+}
+
+static void
+custom_indicator_dispose (GObject *object)
+{
+
+	G_OBJECT_CLASS (custom_indicator_parent_class)->dispose (object);
+	return;
+}
+
+static void
+custom_indicator_finalize (GObject *object)
+{
+
+	G_OBJECT_CLASS (custom_indicator_parent_class)->finalize (object);
+	return;
+}
+

=== added file 'src/libcustomindicator/custom-indicator.h'
--- src/libcustomindicator/custom-indicator.h	1970-01-01 00:00:00 +0000
+++ src/libcustomindicator/custom-indicator.h	2009-10-16 20:11:35 +0000
@@ -0,0 +1,90 @@
+#ifndef __CUSTOM_INDICATOR_H__
+#define __CUSTOM_INDICATOR_H__
+
+#include <glib.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define CUSTOM_INDICATOR_TYPE            (custom_indicator_get_type ())
+#define CUSTOM_INDICATOR(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), CUSTOM_INDICATOR_TYPE, CustomIndicator))
+#define CUSTOM_INDICATOR_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), CUSTOM_INDICATOR_TYPE, CustomIndicatorClass))
+#define IS_CUSTOM_INDICATOR(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CUSTOM_INDICATOR_TYPE))
+#define IS_CUSTOM_INDICATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CUSTOM_INDICATOR_TYPE))
+#define CUSTOM_INDICATOR_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), CUSTOM_INDICATOR_TYPE, CustomIndicatorClass))
+
+/**
+	custom_indicator_category_t:
+	@CUSTOM_INDICATOR_CATEGORY_APPLICATION_STATUS: The indicator is used to display the status of the application.
+	@CUSTOM_INDICATOR_CATEGORY_COMMUNICATIONS: The application is used for communication with other people.
+	@CUSTOM_INDICATOR_CATEGORY_SYSTEM_SERVICES: A system indicator relating to something in the user's system.
+	@CUSTOM_INDICATOR_CATEGORY_HARDWARE: An indicator relating to the user's hardware.
+	@CUSTOM_INDICATOR_CATEGORY_OTHER: Something not defined in this enum, please don't use unless you really need it.
+
+	The category provides grouping for the indicators so that
+	users can find indicators that are similar together.
+*/
+typedef enum { /*< prefix=CUSTOM_INDICATOR_CATEGORY >*/
+	CUSTOM_INDICATOR_CATEGORY_APPLICATION_STATUS,
+	CUSTOM_INDICATOR_CATEGORY_COMMUNICATIONS,
+	CUSTOM_INDICATOR_CATEGORY_SYSTEM_SERVICES,
+	CUSTOM_INDICATOR_CATEGORY_HARDWARE,
+	CUSTOM_INDICATOR_CATEGORY_OTHER
+} custom_indicator_category_t;
+
+/**
+	custom_indicator_status_t:
+	@CUSTOM_INDICATOR_STATUS_OFF: The indicator should not be shown to the user.
+	@CUSTOM_INDICATOR_STATUS_ON: The indicator should be shown in it's default state.
+	@CUSTOM_INDICATOR_STATUS_ATTENTION: The indicator should show it's attention icon.
+
+	These are the states that the indicator can be on in
+	the user's panel.  The indicator by default starts
+	in the state @CUSTOM_INDICATOR_STATUS_OFF and can be
+	shown by setting it to @CUSTOM_INDICATOR_STATUS_ON.
+*/
+typedef enum { /*< prefix=CUSTOM_INDICATOR_STATUS >*/
+	CUSTOM_INDICATOR_STATUS_OFF,
+	CUSTOM_INDICATOR_STATUS_ON,
+	CUSTOM_INDICATOR_STATUS_ATTENTION
+} custom_indicator_status_t;
+
+typedef struct _CustomIndicator      CustomIndicator;
+typedef struct _CustomIndicatorClass CustomIndicatorClass;
+
+struct _CustomIndicatorClass {
+	GObjectClass parent_class;
+};
+
+struct _CustomIndicator {
+	GObject parent;
+};
+
+/* GObject Stuff */
+GType                           custom_indicator_get_type           (void);
+
+/* Set properties */
+void                            custom_indicator_set_id             (CustomIndicator * ci,
+                                                                     const gchar * id);
+void                            custom_indicator_set_category       (CustomIndicator * ci,
+                                                                     custom_indicator_category_t category);
+void                            custom_indicator_set_status         (CustomIndicator * ci,
+                                                                     custom_indicator_status_t status);
+void                            custom_indicator_set_icon           (CustomIndicator * ci,
+                                                                     const gchar * icon_name);
+void                            custom_indicator_set_attention_icon (CustomIndicator * ci,
+                                                                     const gchar * icon_name);
+void                            custom_indicator_set_menu           (CustomIndicator * ci,
+                                                                     void * menu);
+
+/* Get properties */
+const gchar *                   custom_indicator_get_id             (CustomIndicator * ci);
+custom_indicator_category_t     custom_indicator_get_category       (CustomIndicator * ci);
+custom_indicator_status_t       custom_indicator_get_status         (CustomIndicator * ci);
+const gchar *                   custom_indicator_get_icon           (CustomIndicator * ci);
+const gchar *                   custom_indicator_get_attention_icon (CustomIndicator * ci);
+void *                          custom_indicator_get_menu           (CustomIndicator * ci);
+
+G_END_DECLS
+
+#endif

=== added file 'src/notification-item.xml'
--- src/notification-item.xml	1970-01-01 00:00:00 +0000
+++ src/notification-item.xml	2009-10-16 20:11:35 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/">
+	<interface name="org.ayatana.indicator.custom.NotificationItem">
+
+<!-- Properties -->
+		<property name="Id" type="s" access="read" />
+		<property name="Category" type="s" access="read" />
+		<property name="Status" type="s" access="read" />
+		<property name="IconName" type="s" access="read" />
+		<property name="AttentionIconName" type="s" access="read" />
+		<property name="Menu" type="o" access="read" />
+
+<!-- Methods -->
+		<!-- None currently -->
+
+<!-- Signals -->
+		<signal name="NewIcon">
+		</signal>
+		<signal name="NewAttentionIcon">
+		</signal>
+		<signal name="NewStatus">
+			<arg type="s" name="status" direction="out" />
+		</signal>
+
+	</interface>
+</node>

=== added file 'src/notification-watcher.xml'
--- src/notification-watcher.xml	1970-01-01 00:00:00 +0000
+++ src/notification-watcher.xml	2009-10-16 20:11:35 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/">
+	<interface name="org.ayatana.indicator.custom.NotificationWatcher">
+
+<!-- Properties -->
+		<!-- None currently -->
+
+<!-- Methods -->
+		<method name="RegisterService">
+			<arg type="s" name="service" direction="in" />
+		</method>
+		<method name="RegisteredServices">
+			<arg type="as" name="services" direction="out" />
+		</method>
+		<method name="ProtocolVersion">
+			<arg type="s" name="version" direction="out" />
+		</method>
+		<method name="RegisterNotificationHost">
+			<arg type="s" name="service" direction="in" />
+		</method>
+		<method name="IsNotificationHostRegistered">
+			<arg type="b" name="hasHost" direction="out" />
+		</method>
+
+<!-- Signals -->
+		<signal name="ServiceRegistered">
+			<arg type="s" name="service" direction="out" />
+		</signal>
+		<signal name="ServiceUnregistered">
+			<arg type="s" name="service" direction="out" />
+		</signal>
+		<signal name="NotificationHostRegistered">
+		</signal>
+		<signal name="NotificationHostUnegistered">
+		</signal>
+
+	</interface>
+</node>