aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am22
-rwxr-xr-xautogen.sh3
-rw-r--r--configure.ac19
-rw-r--r--docs/Makefile.am1
-rw-r--r--docs/reference/Makefile.am102
-rw-r--r--docs/reference/libappindicator-docs.sgml.in30
-rw-r--r--docs/reference/libappindicator-sections.txt31
-rw-r--r--docs/reference/libappindicator.types1
-rw-r--r--docs/reference/tmpl/libappindicator-unused.sgml0
-rw-r--r--docs/reference/version.xml.in1
-rw-r--r--gtk-doc.local.make194
-rw-r--r--src/Makefile.am5
-rw-r--r--src/libappindicator/app-indicator.c112
-rw-r--r--src/libappindicator/app-indicator.h72
-rw-r--r--src/libappindicator/appindicator-0.1.pc.in14
15 files changed, 583 insertions, 24 deletions
diff --git a/Makefile.am b/Makefile.am
index aee7109..a9b445c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,11 +1,19 @@
-SUBDIRS = \
- data \
- src \
- bindings \
- example \
- tests
+SUBDIRS = data \
+ src \
+ bindings \
+ example \
+ tests \
+ docs
-DISTCHECK_CONFIGURE_FLAGS = --enable-localinstall
+EXTRA_DIST = \
+ gtk-doc.make \
+ omf.make \
+ xmldocs.make \
+ autogen.sh \
+ COPYING.LGPL.2.1 \
+ COPYING.LGPL.3
+
+DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-localinstall
dist-hook:
@if test -d "$(top_srcdir)/.bzr"; \
diff --git a/autogen.sh b/autogen.sh
index 6480bd3..e8fc803 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -8,4 +8,5 @@ which gnome-autogen.sh || {
}
USE_GNOME2_MACROS=1 \
-. gnome-autogen.sh
+USE_COMMON_DOC_BUILD=yes \
+gnome-autogen.sh --enable-gtk-doc $@
diff --git a/configure.ac b/configure.ac
index 8044d24..456ca87 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,11 +1,11 @@
-AC_INIT(indicator-application, 0.0.2, ted@canonical.com)
+AC_INIT(indicator-application, 0.0.4, ted@canonical.com)
AC_COPYRIGHT([Copyright 2009 Canonical])
AC_PREREQ(2.53)
AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(indicator-application, 0.0.2)
+AM_INIT_AUTOMAKE(indicator-application, 0.0.4)
AM_MAINTAINER_MODE
@@ -26,11 +26,19 @@ AC_PATH_PROG([GLIB_GENMARSHAL], [glib-genmarshal])
PKG_PROG_PKG_CONFIG
###########################
+# GTK Doc
+###########################
+
+GTK_DOC_CHECK([1.9])
+AC_CONFIG_MACRO_DIR(m4)
+
+
+###########################
# Dependencies
###########################
GTK_REQUIRED_VERSION=2.12
-INDICATOR_REQUIRED_VERSION=0.2.0
+INDICATOR_REQUIRED_VERSION=0.3.0
DBUSMENUGTK_REQUIRED_VERSION=0.1.1
PKG_CHECK_MODULES(INDICATOR, gtk+-2.0 >= $GTK_REQUIRED_VERSION
@@ -128,6 +136,7 @@ AC_SUBST(DBUSSERVICEDIR)
AC_OUTPUT([
Makefile
src/Makefile
+src/libappindicator/appindicator-0.1.pc
bindings/Makefile
bindings/mono/Makefile
bindings/mono/appindicator-sharp.dll.config
@@ -135,6 +144,10 @@ bindings/mono/appindicator-sharp.pc
data/Makefile
tests/Makefile
example/Makefile
+docs/Makefile
+docs/reference/Makefile
+docs/reference/version.xml
+docs/reference/libappindicator-docs.sgml
])
###########################
diff --git a/docs/Makefile.am b/docs/Makefile.am
new file mode 100644
index 0000000..f3ddc22
--- /dev/null
+++ b/docs/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = reference
diff --git a/docs/reference/Makefile.am b/docs/reference/Makefile.am
new file mode 100644
index 0000000..1292f4d
--- /dev/null
+++ b/docs/reference/Makefile.am
@@ -0,0 +1,102 @@
+## Process this file with automake to produce Makefile.in
+
+# We require automake 1.6 at least.
+AUTOMAKE_OPTIONS = 1.6
+
+# This is a blank Makefile.am for using gtk-doc.
+# Copy this to your project's API docs directory and modify the variables to
+# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
+# of using the various options.
+
+# The name of the module, e.g. 'glib'.
+DOC_MODULE=libappindicator
+
+# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
+#DOC_MODULE_VERSION=2
+
+
+# The top-level SGML file. You can change this if you want to.
+DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
+
+# The directory containing the source code. Relative to $(srcdir).
+# gtk-doc will search all .c & .h files beneath here for inline comments
+# documenting the functions and macros.
+# e.g. DOC_SOURCE_DIR=../../../gtk
+DOC_SOURCE_DIR=../../src/libappindicator
+
+# Extra options to pass to gtkdoc-scangobj. Not normally needed.
+SCANGOBJ_OPTIONS=--nogtkinit --type-init-func="g_type_init()"
+
+# Extra options to supply to gtkdoc-scan.
+# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
+#SCAN_OPTIONS=--rebuild-types --rebuild-sections
+SCAN_OPTIONS=
+
+# Extra options to supply to gtkdoc-mkdb.
+# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
+MKDB_OPTIONS=--sgml-mode --output-format=xml
+
+# Extra options to supply to gtkdoc-mktmpl
+# e.g. MKTMPL_OPTIONS=--only-section-tmpl
+MKTMPL_OPTIONS=
+
+# Extra options to supply to gtkdoc-mkhtml
+MKHTML_OPTIONS=
+
+# Extra options to supply to gtkdoc-fixref. Not normally needed.
+# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
+FIXXREF_OPTIONS=
+
+# Used for dependencies. The docs will be rebuilt if any of these change.
+# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
+# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
+HFILE_GLOB=$(top_srcdir)/src/libappindicator/*.h
+CFILE_GLOB=$(top_srcdir)/src/libappindicator/*.c
+
+# Header files to ignore when scanning.
+# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
+IGNORE_HFILES=app-indicator-enum-types.h application-service-appstore.h application-service-client.h application-service-marshal.h application-service-server.h application-service-watcher.h dbus-properties-client.h dbus-properties-server.h dbus-shared.h notification-item-client.h notification-item-server.h notification-watcher-client.h notification-watcher-server.h
+
+# Images to copy into HTML directory.
+# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
+HTML_IMAGES=
+
+# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
+# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
+content_files=version.xml
+
+# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
+# These files must be listed here *and* in content_files
+# e.g. expand_content_files=running.sgml
+expand_content_files=
+
+# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
+# Only needed if you are using gtkdoc-scangobj to dynamically query widget
+# signals and properties.
+# 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/libappindicator $(INDICATOR_CFLAGS)
+GTKDOC_LIBS=$(top_builddir)/src/libappindicator.la $(top_builddir)/src/libapplication.la
+
+# This includes the standard gtk-doc make rules, copied by gtkdocize.
+include $(top_srcdir)/gtk-doc.local.make
+
+# Other files to distribute
+# e.g. EXTRA_DIST += version.xml.in
+EXTRA_DIST += version.xml.in libappindicator-docs.sgml.in
+
+# Files not to distribute
+# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
+# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
+#DISTCLEANFILES +=
+
+# Comment this out if you want your docs-status tested during 'make check'
+TESTS = gtkdoc-in-srcdir
+
+gtkdoc-in-srcdir: Makefile.am
+ @echo "#!/bin/sh" > $@
+ @echo "cd \"$(srcdir)\"" >> $@
+ @echo "$(GTKDOC_CHECK)" >> $@
+ @chmod +x $@
+DISTCLEANFILES = gtkdoc-in-srcdir
+
diff --git a/docs/reference/libappindicator-docs.sgml.in b/docs/reference/libappindicator-docs.sgml.in
new file mode 100644
index 0000000..3a8e5de
--- /dev/null
+++ b/docs/reference/libappindicator-docs.sgml.in
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+<book id="index">
+ <bookinfo>
+ <title>libappindicator Reference Manual</title>
+ <releaseinfo>
+ for libappindicator @VERSION@
+ </releaseinfo>
+ </bookinfo>
+
+ <chapter>
+ <title>Base Classes for Applications</title>
+ <xi:include href="xml/app-indicator.xml"/>
+
+ </chapter>
+ <chapter id="object-tree">
+ <title>Object Hierarchy</title>
+ <xi:include href="xml/tree_index.sgml"/>
+ </chapter>
+ <index id="api-index-full">
+ <title>API Index</title>
+ <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
+ </index>
+
+ <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
+</book>
diff --git a/docs/reference/libappindicator-sections.txt b/docs/reference/libappindicator-sections.txt
new file mode 100644
index 0000000..b994297
--- /dev/null
+++ b/docs/reference/libappindicator-sections.txt
@@ -0,0 +1,31 @@
+<SECTION>
+<FILE>app-indicator</FILE>
+APP_INDICATOR_TYPE
+APP_INDICATOR
+APP_INDICATOR_CLASS
+IS_APP_INDICATOR
+IS_APP_INDICATOR_CLASS
+APP_INDICATOR_GET_CLASS
+APP_INDICATOR_SIGNAL_NEW_ICON
+APP_INDICATOR_SIGNAL_NEW_ATTENTION_ICON
+APP_INDICATOR_SIGNAL_NEW_STATUS
+APP_INDICATOR_SIGNAL_CONNECTION_CHANGED
+AppIndicatorCategory
+AppIndicatorStatus
+AppIndicatorPrivate
+<TITLE>AppIndicator</TITLE>
+AppIndicator
+AppIndicatorClass
+app_indicator_get_type
+app_indicator_new
+app_indicator_set_status
+app_indicator_set_attention_icon
+app_indicator_set_menu
+app_indicator_set_icon
+app_indicator_get_id
+app_indicator_get_category
+app_indicator_get_status
+app_indicator_get_icon
+app_indicator_get_attention_icon
+</SECTION>
+
diff --git a/docs/reference/libappindicator.types b/docs/reference/libappindicator.types
new file mode 100644
index 0000000..5000a2d
--- /dev/null
+++ b/docs/reference/libappindicator.types
@@ -0,0 +1 @@
+app_indicator_get_type
diff --git a/docs/reference/tmpl/libappindicator-unused.sgml b/docs/reference/tmpl/libappindicator-unused.sgml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/docs/reference/tmpl/libappindicator-unused.sgml
diff --git a/docs/reference/version.xml.in b/docs/reference/version.xml.in
new file mode 100644
index 0000000..d78bda9
--- /dev/null
+++ b/docs/reference/version.xml.in
@@ -0,0 +1 @@
+@VERSION@
diff --git a/gtk-doc.local.make b/gtk-doc.local.make
new file mode 100644
index 0000000..3dcda60
--- /dev/null
+++ b/gtk-doc.local.make
@@ -0,0 +1,194 @@
+# -*- mode: makefile -*-
+
+####################################
+# Everything below here is generic #
+####################################
+
+if GTK_DOC_USE_LIBTOOL
+GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+GTKDOC_RUN = $(LIBTOOL) --mode=execute
+else
+GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+GTKDOC_RUN = sh -c
+endif
+
+# We set GPATH here; this gives us semantics for GNU make
+# which are more like other make's VPATH, when it comes to
+# whether a source that is a target of one rule is then
+# searched for in VPATH/GPATH.
+#
+GPATH = $(srcdir)
+
+TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
+
+EXTRA_DIST = \
+ $(content_files) \
+ $(HTML_IMAGES) \
+ $(DOC_MAIN_SGML_FILE)
+
+DOC_STAMPS=scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \
+ $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp
+
+SCANOBJ_FILES = \
+ $(DOC_MODULE).args \
+ $(DOC_MODULE).hierarchy \
+ $(DOC_MODULE).interfaces \
+ $(DOC_MODULE).prerequisites \
+ $(DOC_MODULE).signals
+
+REPORT_FILES = \
+ $(DOC_MODULE)-undocumented.txt \
+ $(DOC_MODULE)-undeclared.txt \
+ $(DOC_MODULE)-unused.txt
+
+CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS)
+
+if ENABLE_GTK_DOC
+all-local: html-build.stamp
+else
+all-local:
+endif
+
+docs: html-build.stamp
+
+$(REPORT_FILES): sgml-build.stamp
+
+#### scan ####
+
+scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
+ @echo 'gtk-doc: Scanning header files'
+ @-chmod -R u+w $(srcdir)
+ cd $(srcdir) && \
+ gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
+ if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \
+ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
+ else \
+ cd $(srcdir) ; \
+ for i in $(SCANOBJ_FILES) ; do \
+ test -f $$i || touch $$i ; \
+ done \
+ fi
+ touch scan-build.stamp
+
+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
+ @true
+
+#### templates ####
+
+tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
+ @echo 'gtk-doc: Rebuilding template files'
+ @-chmod -R u+w $(srcdir)
+ cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
+ touch tmpl-build.stamp
+
+tmpl.stamp: tmpl-build.stamp
+ @true
+
+tmpl/*.sgml:
+ @true
+
+
+#### xml ####
+
+sgml-build.stamp: tmpl.stamp $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files)
+ @echo 'gtk-doc: Building XML'
+ @-chmod -R u+w $(srcdir)
+ cd $(srcdir) && \
+ gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $(MKDB_OPTIONS)
+ touch sgml-build.stamp
+
+sgml.stamp: sgml-build.stamp
+ @true
+
+#### html ####
+
+html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ @echo 'gtk-doc: Building HTML'
+ @-chmod -R u+w $(srcdir)
+ rm -rf $(srcdir)/html
+ mkdir $(srcdir)/html
+ mkhtml_options=""; \
+ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \
+ if test "$(?)" = "0"; then \
+ mkhtml_options=--path="$(srcdir)"; \
+ fi
+ cd $(srcdir)/html && gtkdoc-mkhtml $(mkhtml_options) $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+ test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html )
+ @echo 'gtk-doc: Fixing cross-references'
+ cd $(srcdir) && gtkdoc-fixxref --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+ touch html-build.stamp
+
+##############
+
+clean-local:
+ rm -f *~ *.bak
+ rm -rf .libs
+
+distclean-local:
+ cd $(srcdir) && \
+ rm -rf xml $(REPORT_FILES) \
+ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+
+maintainer-clean-local: clean
+ cd $(srcdir) && rm -rf xml html
+
+install-data-local:
+ installfiles=`echo $(srcdir)/html/*`; \
+ if test "$$installfiles" = '$(srcdir)/html/*'; \
+ then echo '-- Nothing to install' ; \
+ else \
+ if test -n "$(DOC_MODULE_VERSION)"; then \
+ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+ else \
+ installdir="$(DESTDIR)$(TARGET_DIR)"; \
+ fi; \
+ $(mkinstalldirs) $${installdir} ; \
+ for i in $$installfiles; do \
+ echo '-- Installing '$$i ; \
+ $(INSTALL_DATA) $$i $${installdir}; \
+ done; \
+ if test -n "$(DOC_MODULE_VERSION)"; then \
+ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \
+ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \
+ mv -f $${installdir}/$(DOC_MODULE).devhelp \
+ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp; \
+ fi; \
+ ! which gtkdoc-rebase >/dev/null 2>&1 || \
+ gtkdoc-rebase --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir} ; \
+ fi
+
+uninstall-local:
+ if test -n "$(DOC_MODULE_VERSION)"; then \
+ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \
+ else \
+ installdir="$(DESTDIR)$(TARGET_DIR)"; \
+ fi; \
+ rm -rf $${installdir}
+
+#
+# Require gtk-doc when making dist
+#
+if ENABLE_GTK_DOC
+dist-check-gtkdoc:
+else
+dist-check-gtkdoc:
+ @echo "*** gtk-doc must be installed and enabled in order to make dist"
+ @false
+endif
+
+dist-hook: dist-check-gtkdoc dist-hook-local
+ mkdir $(distdir)/tmpl
+ mkdir $(distdir)/xml
+ mkdir $(distdir)/html
+ -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
+ -cp $(srcdir)/xml/*.xml $(distdir)/xml
+ -cp $(srcdir)/html/* $(distdir)/html
+ -cp $(srcdir)/$(DOC_MODULE).types $(distdir)/
+ -cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/
+ cd $(distdir) && rm -f $(DISTCLEANFILES)
+ ! which gtkdoc-rebase >/dev/null 2>&1 || \
+ gtkdoc-rebase --online --relative --html-dir=$(distdir)/html
+
+.PHONY : dist-hook-local docs
diff --git a/src/Makefile.am b/src/Makefile.am
index 1c19d91..ee4b7a7 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,7 +1,7 @@
CLEANFILES =
DISTCLEANFILES =
BUILT_SOURCES =
-EXTRA_DIST =
+EXTRA_DIST = libappindicator/appindicator-0.1.pc.in
include $(top_srcdir)/Makefile.am.enum
include $(top_srcdir)/Makefile.am.marshal
@@ -57,6 +57,9 @@ glib_marshal_prefix = _application_service_marshal
# Library
##################################
+pkgconfig_DATA = libappindicator/appindicator-0.1.pc
+pkgconfigdir = $(libdir)/pkgconfig
+
glib_enum_h = libappindicator/app-indicator-enum-types.h
glib_enum_c = libappindicator/app-indicator-enum-types.c
glib_enum_headers = $(libappindicator_headers)
diff --git a/src/libappindicator/app-indicator.c b/src/libappindicator/app-indicator.c
index bd72499..791f9ff 100644
--- a/src/libappindicator/app-indicator.c
+++ b/src/libappindicator/app-indicator.c
@@ -33,6 +33,7 @@ License version 3 and version 2.1 along with this program. If not, see
#include <dbus/dbus-glib.h>
#include <libdbusmenu-glib/server.h>
+#include <libdbusmenu-gtk/client.h>
#include "libappindicator/app-indicator.h"
#include "libappindicator/app-indicator-enum-types.h"
@@ -549,7 +550,12 @@ category_from_enum (AppIndicatorCategory category)
@icon_name: The icon name for this indicator
@category: The category of indicator.
- @returns: A pointer to a new #AppIndicator object.
+ Creates a new #AppIndicator setting the properties:
+ #AppIndicator::id with @id, #AppIndicator::category
+ with @category and #AppIndicator::icon-name with
+ @icon_name.
+
+ Return value: A pointer to a new #AppIndicator object.
*/
AppIndicator *
app_indicator_new (const gchar *id,
@@ -566,8 +572,16 @@ app_indicator_new (const gchar *id,
}
/**
+ app_indicator_get_type:
+
+ Generates or returns the unique #GType for #AppIndicator.
+
+ Return value: A unique #GType for #AppIndicator objects.
+*/
+
+/**
app_indicator_set_status:
- @ci: The #AppIndicator object to use
+ @self: The #AppIndicator object to use
@status: The status to set for this indicator
Wrapper function for property #AppIndicator::status.
@@ -588,7 +602,7 @@ app_indicator_set_status (AppIndicator *self, AppIndicatorStatus status)
/**
app_indicator_set_attention_icon:
- @ci: The #AppIndicator object to use
+ @self: The #AppIndicator object to use
@icon_name: The name of the attention icon to set for this indicator
Wrapper function for property #AppIndicator::attention-icon.
@@ -614,6 +628,10 @@ app_indicator_set_attention_icon (AppIndicator *self, const gchar *icon_name)
app_indicator_set_icon:
@self: The #AppIndicator object to use
@icon_name: The icon name to set.
+
+ Sets the default icon to use when the status is active but
+ not set to attention. In most cases, this should be the
+ application icon for the program.
**/
void
app_indicator_set_icon (AppIndicator *self, const gchar *icon_name)
@@ -641,17 +659,83 @@ activate_menuitem (DbusmenuMenuitem *mi, gpointer user_data)
}
static void
+menuitem_iterate (GtkWidget *widget,
+ gpointer data)
+{
+ if (GTK_IS_LABEL (widget))
+ {
+ DbusmenuMenuitem *child = (DbusmenuMenuitem *)data;
+
+ dbusmenu_menuitem_property_set (child,
+ DBUSMENU_MENUITEM_PROP_LABEL,
+ gtk_label_get_text (GTK_LABEL (widget)));
+ }
+}
+
+static void
container_iterate (GtkWidget *widget,
gpointer data)
{
DbusmenuMenuitem *root = (DbusmenuMenuitem *)data;
DbusmenuMenuitem *child;
+ const gchar *label = NULL;
+ gboolean label_set = FALSE;
child = dbusmenu_menuitem_new ();
- dbusmenu_menuitem_property_set (child,
- DBUSMENU_MENUITEM_PROP_LABEL,
- gtk_menu_item_get_label (GTK_MENU_ITEM (widget)));
- g_signal_connect (G_OBJECT(child),
+
+ if (GTK_IS_SEPARATOR_MENU_ITEM (widget))
+ {
+ dbusmenu_menuitem_property_set (child,
+ "type",
+ DBUSMENU_CLIENT_TYPES_SEPARATOR);
+ }
+ else
+ {
+ label = gtk_menu_item_get_label (GTK_MENU_ITEM (widget));
+
+ if (GTK_IS_IMAGE_MENU_ITEM (widget))
+ {
+ GtkWidget *image = gtk_image_menu_item_get_image (GTK_IMAGE_MENU_ITEM (widget));
+
+ if (gtk_image_get_storage_type (GTK_IMAGE (image)) == GTK_IMAGE_STOCK)
+ {
+ GtkStockItem stock;
+
+ gtk_stock_lookup (GTK_IMAGE (image)->data.stock.stock_id, &stock);
+
+ dbusmenu_menuitem_property_set (child,
+ DBUSMENU_MENUITEM_PROP_ICON,
+ GTK_IMAGE (image)->data.stock.stock_id);
+
+ if (stock.label != NULL)
+ {
+ dbusmenu_menuitem_property_set (child,
+ DBUSMENU_MENUITEM_PROP_LABEL,
+ stock.label);
+ label_set = TRUE;
+ }
+ }
+ }
+ }
+
+ if (!label_set)
+ {
+ if (label != NULL)
+ {
+ dbusmenu_menuitem_property_set (child,
+ DBUSMENU_MENUITEM_PROP_LABEL,
+ label);
+ }
+ else
+ {
+ /* find label child widget */
+ gtk_container_forall (GTK_CONTAINER (widget),
+ menuitem_iterate,
+ child);
+ }
+ }
+
+ g_signal_connect (G_OBJECT (child),
DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED,
G_CALLBACK (activate_menuitem), widget);
dbusmenu_menuitem_child_append (root, child);
@@ -678,6 +762,10 @@ setup_dbusmenu (AppIndicator *self)
app_indicator_set_menu:
@self: The #AppIndicator
@menu: A #GtkMenu to set
+
+ Sets the menu that should be shown when the Application Indicator
+ is clicked on in the panel. An application indicator will not
+ be rendered unless it has a menu.
**/
void
app_indicator_set_menu (AppIndicator *self, GtkMenu *menu)
@@ -704,7 +792,7 @@ app_indicator_set_menu (AppIndicator *self, GtkMenu *menu)
/**
app_indicator_get_id:
- @ci: The #AppIndicator object to use
+ @self: The #AppIndicator object to use
Wrapper function for property #AppIndicator::id.
@@ -720,7 +808,7 @@ app_indicator_get_id (AppIndicator *self)
/**
app_indicator_get_category:
- @ci: The #AppIndicator object to use
+ @self: The #AppIndicator object to use
Wrapper function for property #AppIndicator::category.
@@ -736,7 +824,7 @@ app_indicator_get_category (AppIndicator *self)
/**
app_indicator_get_status:
- @ci: The #AppIndicator object to use
+ @self: The #AppIndicator object to use
Wrapper function for property #AppIndicator::status.
@@ -752,7 +840,7 @@ app_indicator_get_status (AppIndicator *self)
/**
app_indicator_get_icon:
- @ci: The #AppIndicator object to use
+ @self: The #AppIndicator object to use
Wrapper function for property #AppIndicator::icon-name.
@@ -768,7 +856,7 @@ app_indicator_get_icon (AppIndicator *self)
/**
app_indicator_get_attention_icon:
- @ci: The #AppIndicator object to use
+ @self: The #AppIndicator object to use
Wrapper function for property #AppIndicator::attention-icon-name.
diff --git a/src/libappindicator/app-indicator.h b/src/libappindicator/app-indicator.h
index 6a961fe..e966a49 100644
--- a/src/libappindicator/app-indicator.h
+++ b/src/libappindicator/app-indicator.h
@@ -34,6 +34,41 @@ License version 3 and version 2.1 along with this program. If not, see
G_BEGIN_DECLS
+/**
+ APP_INDICATOR_TYPE:
+
+ Get the #GType for a #AppIndicator.
+*/
+/**
+ APP_INDICATOR:
+ @obj: The object to convert
+
+ Safely convert a #GObject into an #AppIndicator.
+*/
+/**
+ APP_INDICATOR_CLASS:
+ @klass: #GObjectClass based class to convert.
+
+ Safely convert a #GObjectClass into a #AppIndicatorClass.
+*/
+/**
+ IS_APP_INDICATOR:
+ @obj: An #GObject to check
+
+ Checks to see if @obj is in the object hierarchy of #AppIndicator.
+*/
+/**
+ IS_APP_INDICATOR_CLASS:
+ @klass: An #GObjectClass to check
+
+ Checks to see if @klass is in the object class hierarchy of #AppIndicatorClass.
+*/
+/**
+ APP_INDICATOR_GET_CLASS:
+ @obj: A #GObject in the class hierarchy of #AppIndicator.
+
+ Gets a pointer to the #AppIndicatorClass for the object @obj.
+*/
#define APP_INDICATOR_TYPE (app_indicator_get_type ())
#define APP_INDICATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), APP_INDICATOR_TYPE, AppIndicator))
#define APP_INDICATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), APP_INDICATOR_TYPE, AppIndicatorClass))
@@ -41,6 +76,26 @@ G_BEGIN_DECLS
#define IS_APP_INDICATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), APP_INDICATOR_TYPE))
#define APP_INDICATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), APP_INDICATOR_TYPE, AppIndicatorClass))
+/**
+ APP_INDICATOR_SIGNAL_NEW_ICON:
+
+ String identifier for the #AppIndicator::new-icon signal.
+*/
+/**
+ APP_INDICATOR_SIGNAL_NEW_ATTENTION_ICON:
+
+ String identifier for the #AppIndicator::new-attention-icon signal.
+*/
+/**
+ APP_INDICATOR_SIGNAL_NEW_STATUS:
+
+ String identifier for the #AppIndicator::new-status signal.
+*/
+/**
+ APP_INDICATOR_SIGNAL_CONNECTION_CHANGED:
+
+ String identifier for the #AppIndicator::connection-changed signal.
+*/
#define APP_INDICATOR_SIGNAL_NEW_ICON "new-icon"
#define APP_INDICATOR_SIGNAL_NEW_ATTENTION_ICON "new-attention-icon"
#define APP_INDICATOR_SIGNAL_NEW_STATUS "new-status"
@@ -167,4 +222,21 @@ const gchar * app_indicator_get_attention_icon (AppIndicator *
G_END_DECLS
+/**
+ SECTION:app-indicator
+ @short_description: An object to put application information
+ into the panel.
+ @stability: Unstable
+ @include: libappindicator/app-indicator.h
+
+ An application indicator is a way for an application to put
+ a menu into the panel on the user's screen. This allows the
+ user to interact with the application even though it might
+ not be visible to the user at the time. In most cases this
+ is not a good solution as there are other ways to inform the
+ user. It should only be use if persistence is a desired
+ feature for the user (not for your marketing purpose of
+ having your logo in the panel).
+*/
+
#endif
diff --git a/src/libappindicator/appindicator-0.1.pc.in b/src/libappindicator/appindicator-0.1.pc.in
new file mode 100644
index 0000000..b80fded
--- /dev/null
+++ b/src/libappindicator/appindicator-0.1.pc.in
@@ -0,0 +1,14 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+bindir=@bindir@
+includedir=@includedir@
+
+Cflags: -I${includedir}/libappindicator-0.1
+Requires: dbusmenu-glib gtk+-2.0
+Libs: -L${libdir} -lappindicator
+
+Name: appindicator-0.1
+Description: Application indicators
+Version: @VERSION@
+