diff options
author | seb128 <seb128@seb128-desktop> | 2009-03-16 23:22:15 +0100 |
---|---|---|
committer | seb128 <seb128@seb128-desktop> | 2009-03-16 23:22:15 +0100 |
commit | deccbbbcacf975b79d2a6586767dddd8d1962b14 (patch) | |
tree | e6f35e7c909b9f8d5c2b5f1c144deea9224398f3 | |
parent | 3bc5b8e8105d698e7782c8090148dbe8f135161f (diff) | |
parent | dab5af7f6bbfdb69e62b8378b6c8770ffe542c06 (diff) | |
download | libayatana-indicator-deccbbbcacf975b79d2a6586767dddd8d1962b14.tar.gz libayatana-indicator-deccbbbcacf975b79d2a6586767dddd8d1962b14.tar.bz2 libayatana-indicator-deccbbbcacf975b79d2a6586767dddd8d1962b14.zip |
indicator-applet (0.1.2-0ubuntu1) jaunty; urgency=low
* New upstream version
* Removes duplicate prototypes (LP: #338885)
* Fixes background color to match them on dark themes when
the panel color is not set (LP: #334490)
* Removing the handle and replacing it with the ability to
right click on the applet to get a panel menu (LP: #339818)
* Various build fixes
-- Ted Gould <ted@ubuntu.com>Sun, 15 Mar 2009 08:58:20 -0500
-rw-r--r-- | Makefile.am | 6 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | debian/changelog | 12 | ||||
-rw-r--r-- | debian/compat | 1 | ||||
-rw-r--r-- | debian/control | 3 | ||||
-rw-r--r-- | debian/libindicate-dev.install | 1 | ||||
-rw-r--r-- | debian/libindicate0.install | 1 | ||||
-rw-r--r-- | libindicate/Makefile.am | 71 | ||||
-rw-r--r-- | libindicate/indicate-listener.xml | 41 | ||||
-rw-r--r-- | libindicate/indicator.h | 3 | ||||
-rw-r--r-- | libindicate/listener.c | 25 | ||||
-rw-r--r-- | libindicate/listener.h | 1 | ||||
-rw-r--r-- | src/applet-main.c | 83 | ||||
-rw-r--r-- | tests/Makefile.am | 11 |
14 files changed, 222 insertions, 39 deletions
diff --git a/Makefile.am b/Makefile.am index 45a2bdb..d4f7ca2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -14,5 +14,9 @@ EXTRA_DIST = \ omf.make \ xmldocs.make +DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --disable-scrollkeeper + DISTCLEANFILES = \ - indicator-applet-*.tar.gz + indicator-applet-*.tar.gz \ + gtk-doc.make + diff --git a/configure.ac b/configure.ac index 3ae3656..e32da5f 100644 --- a/configure.ac +++ b/configure.ac @@ -4,7 +4,7 @@ AC_INIT(src/applet-main.c) AC_PREREQ(2.53) AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(indicator-applet, 0.1.1) +AM_INIT_AUTOMAKE(indicator-applet, 0.1.2) AM_MAINTAINER_MODE diff --git a/debian/changelog b/debian/changelog index a9fce89..c1493ee 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,15 @@ +indicator-applet (0.1.2-0ubuntu1) jaunty; urgency=low + + * New upstream version + * Removes duplicate prototypes (LP: #338885) + * Fixes background color to match them on dark themes when + the panel color is not set (LP: #334490) + * Removing the handle and replacing it with the ability to + right click on the applet to get a panel menu (LP: #339818) + * Various build fixes + + -- Ted Gould <ted@ubuntu.com> Sun, 15 Mar 2009 08:58:20 -0500 + indicator-applet (0.1.1-0ubuntu2) UNRELEASED; urgency=low * src/applet-main.c, applet_fill_cb(): Do not show anything if we diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +5 diff --git a/debian/control b/debian/control index 933e50b..5e678b6 100644 --- a/debian/control +++ b/debian/control @@ -12,7 +12,8 @@ Build-Depends: debhelper (>= 5.0), intltool, gobject-introspection (>= 0.6), gobject-introspection-glib-2.0 (>= 0.6), - libgirepository-dev (>= 0.6) + libgirepository-dev (>= 0.6), + gobject-introspection-repository Standards-Version: 3.8.0 Homepage: https://launchpad.net/indicator-applet Vcs-Bzr: http://bazaar.launchpad.net/~ubuntu-core-dev/indicator-applet/ubuntu diff --git a/debian/libindicate-dev.install b/debian/libindicate-dev.install index 4623919..f65d387 100644 --- a/debian/libindicate-dev.install +++ b/debian/libindicate-dev.install @@ -2,3 +2,4 @@ debian/tmp/usr/include/ debian/tmp/usr/lib/pkgconfig debian/tmp/usr/lib/libindicate.a debian/tmp/usr/lib/libindicate.so +debian/tmp/usr/share/gir/ diff --git a/debian/libindicate0.install b/debian/libindicate0.install index 0618a58..9369053 100644 --- a/debian/libindicate0.install +++ b/debian/libindicate0.install @@ -1 +1,2 @@ debian/tmp/usr/lib/libindicate.so.* +debian/tmp/usr/lib/girepository/ diff --git a/libindicate/Makefile.am b/libindicate/Makefile.am index 707d297..b851919 100644 --- a/libindicate/Makefile.am +++ b/libindicate/Makefile.am @@ -4,12 +4,15 @@ INCLUDES= \ EXTRA_DIST = \ indicate-interface.xml \ + indicate-listener.xml \ listener-marshal.list \ indicate.pc.in BUILT_SOURCES = \ dbus-indicate-server.h \ dbus-indicate-client.h \ + dbus-listener-server.h \ + dbus-listener-client.h \ listener-marshal.c \ listener-marshal.h @@ -31,6 +34,8 @@ libindicate_la_SOURCES = \ $(indicate_headers) \ dbus-indicate-server.h \ dbus-indicate-client.h \ + dbus-listener-server.h \ + dbus-listener-client.h \ server.c \ listener.c \ listener-marshal.c \ @@ -63,6 +68,20 @@ dbus-indicate-client.h: indicate-interface.xml --output=dbus-indicate-client.h \ $(srcdir)/indicate-interface.xml +dbus-listener-server.h: indicate-listener.xml + dbus-binding-tool \ + --prefix=indicate_listener \ + --mode=glib-server \ + --output=dbus-listener-server.h \ + $(srcdir)/indicate-listener.xml + +dbus-listener-client.h: indicate-listener.xml + dbus-binding-tool \ + --prefix=indicate_listener \ + --mode=glib-client \ + --output=dbus-listener-client.h \ + $(srcdir)/indicate-listener.xml + listener-marshal.h: $(srcdir)/listener-marshal.list glib-genmarshal --header \ --prefix=indicate_listener_marshal $(srcdir)/listener-marshal.list \ @@ -76,28 +95,32 @@ listener-marshal.c: $(srcdir)/listener-marshal.list pkgconfig_DATA = indicate.pc pkgconfigdir = $(libdir)/pkgconfig -#gobjectintrospection_gir_DATA = \ -# Indicate-0.1.gir -#gobjectintrospection_girdir = $(datadir)/gir -# -#gobjectintrospection_type_DATA = \ -# Indicate-0.1.typelib -#gobjectintrospection_typedir = $(libdir)/girepository -# -#irscanner_headers = $(patsubst %,$(srcdir)/%,$(indicate_headers)) -#Indicate-0.1.gir: $(irscanner_headers) -# $(G_IR_SCANNER) \ -# -v --namespace Indicate \ -# --nsversion=0.1 \ -# --add-include-path=$(srcdir) \ -# --include=GObject-2.0 \ -# --include=GLib-2.0 \ -# --include=GdkPixbuf-2.0 \ -# --library=indicate --pkg indicate \ -# --output Indicate-0.1.gir $(irscanner_headers) -# -#Indicate-0.1.typelib: Indicate-0.1.gir -# $(G_IR_COMPILER) \ -# --includedir=$(srcdir) Indicate-0.1.gir \ -# -o Indicate-0.1.typelib +gobjectintrospection_gir_DATA = \ + Indicate-0.1.gir +gobjectintrospection_girdir = $(datadir)/gir + +gobjectintrospection_type_DATA = \ + Indicate-0.1.typelib +gobjectintrospection_typedir = $(libdir)/girepository + +irscanner_headers = $(patsubst %,$(srcdir)/%,$(indicate_headers)) +Indicate-0.1.gir: $(irscanner_headers) + $(G_IR_SCANNER) \ + -v --namespace Indicate \ + --nsversion=0.1 \ + --add-include-path=$(srcdir) \ + --include=GObject-2.0 \ + --include=GLib-2.0 \ + --include=GdkPixbuf-2.0 \ + --library=indicate --pkg indicate \ + --output Indicate-0.1.gir $(irscanner_headers) + +Indicate-0.1.typelib: Indicate-0.1.gir + $(G_IR_COMPILER) \ + --includedir=$(srcdir) Indicate-0.1.gir \ + -o Indicate-0.1.typelib + +DISTCLEANFILES = \ + Indicate-0.1.gir \ + Indicate-0.1.typelib diff --git a/libindicate/indicate-listener.xml b/libindicate/indicate-listener.xml new file mode 100644 index 0000000..c834489 --- /dev/null +++ b/libindicate/indicate-listener.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +A library to allow applictions to provide simple indications of +information to be displayed to users of the application through the +interface shell. + +Copyright 2009 Canonical Ltd. + +Authors: + Ted Gould <ted@canonical.com> + +This program is free software: you can redistribute it and/or modify it +under the terms of either or both of the following licenses: + +1) the GNU Lesser General Public License version 3, as published by the +Free Software Foundation; and/or +2) the GNU Lesser General Public License version 2.1, as published by +the Free Software Foundation. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranties of +MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR +PURPOSE. See the applicable version of the GNU Lesser General Public +License for more details. + +You should have received a copy of both the GNU Lesser General Public +License version 3 and version 2.1 along with this program. If not, see +<http://www.gnu.org/licenses/> +--> +<node name="/"> + <interface name="org.freedesktop.indicator.listener"> + +<!-- Functions --> + <method name="GetIndicatorServers"> + <arg type="as" name="server_ids" direction="out" /> + </method> + +<!-- End of interesting stuff --> + + </interface> +</node> diff --git a/libindicate/indicator.h b/libindicate/indicator.h index 5faea3c..8af5568 100644 --- a/libindicate/indicator.h +++ b/libindicate/indicator.h @@ -78,9 +78,6 @@ GType indicate_indicator_get_type(void) G_GNUC_CONST; IndicateIndicator * indicate_indicator_new (void); -/* Should these just be GObject properties? */ -void indicate_indicator_set_property (IndicateIndicator * indicator, const gchar * property_name, const gchar * property_value); - /* Show and hide this indicator */ void indicate_indicator_show (IndicateIndicator * indicator); void indicate_indicator_hide (IndicateIndicator * indicator); diff --git a/libindicate/listener.c b/libindicate/listener.c index d8926f1..b786552 100644 --- a/libindicate/listener.c +++ b/libindicate/listener.c @@ -31,6 +31,8 @@ License version 3 and version 2.1 along with this program. If not, see #include "listener-marshal.h" #include <dbus/dbus-glib-bindings.h> #include "dbus-indicate-client.h" +#include "dbus-listener-client.h" +#include "dbus-listener-server.h" /* Errors */ enum { @@ -81,6 +83,7 @@ typedef struct { typedef struct { DBusGConnection * bus; gchar * name; + gboolean startup; } proxy_todo_t; G_DEFINE_TYPE (IndicateListener, indicate_listener, G_TYPE_OBJECT); @@ -90,7 +93,7 @@ static void indicate_listener_finalize (GObject * obj); static void dbus_owner_change (DBusGProxy * proxy, const gchar * name, const gchar * prev, const gchar * new, IndicateListener * listener); static void proxy_struct_destroy (gpointer data); static void build_todo_list_cb (DBusGProxy * proxy, char ** names, GError * error, void * data); -static void todo_list_add (const gchar * name, DBusGProxy * proxy, IndicateListener * listener); +static void todo_list_add (const gchar * name, DBusGProxy * proxy, IndicateListener * listener, gboolean startup); static gboolean todo_idle (gpointer data); void get_type_cb (IndicateListener * listener, IndicateListenerServer * server, gchar * type, gpointer data); static void proxy_server_added (DBusGProxy * proxy, const gchar * type, proxy_t * proxyt); @@ -286,7 +289,7 @@ dbus_owner_change (DBusGProxy * proxy, const gchar * name, const gchar * prev, c /* g_debug("Name change on %s bus: '%s' from '%s' to '%s'", bus_name, name, prev, new); */ if (prev != NULL && prev[0] == '\0') { - todo_list_add(name, proxy, listener); + todo_list_add(name, proxy, listener, FALSE); } if (new != NULL && new[0] == '\0') { proxy_t * proxyt; @@ -369,14 +372,14 @@ build_todo_list_cb (DBusGProxy * proxy, char ** names, GError * error, void * da guint i = 0; for (i = 0; names[i] != NULL; i++) { - todo_list_add(names[i], proxy, listener); + todo_list_add(names[i], proxy, listener, TRUE); } return; } static void -todo_list_add (const gchar * name, DBusGProxy * proxy, IndicateListener * listener) +todo_list_add (const gchar * name, DBusGProxy * proxy, IndicateListener * listener, gboolean startup) { if (name == NULL || name[0] != ':') { return; @@ -398,6 +401,7 @@ todo_list_add (const gchar * name, DBusGProxy * proxy, IndicateListener * listen proxy_todo_t todo; todo.name = g_strdup(name); todo.bus = bus; + todo.startup = startup; g_array_append_val(priv->proxy_todo, todo); @@ -455,6 +459,12 @@ todo_idle (gpointer data) g_hash_table_insert(priv->proxies_possible, proxyt->name, proxyt); + /* I think that we need to have this as there is a race + * condition here. If someone comes on the bus and we get + * that message, but before we set up the handler for the ServerShow + * signal it gets sent, we wouldn't get it. So then we would + * miss an indicator server coming on the bus. I'd like to not + * generate a warning in every app with DBus though. */ indicate_listener_server_get_type(listener, (IndicateListenerServer *)proxyt->name, get_type_cb, proxyt); return TRUE; @@ -783,6 +793,13 @@ indicate_listener_get_property_icon (IndicateListener * listener, IndicateListen return get_property_helper(listener, server, indicator, property, G_CALLBACK(callback), data, PROPERTY_TYPE_ICON); } +gboolean +indicate_listener_get_indicator_servers (IndicateListener * listener, GList * servers) +{ + + +} + static void listener_display_cb (DBusGProxy *proxy, GError *error, gpointer userdata) { diff --git a/libindicate/listener.h b/libindicate/listener.h index ed40630..f931b04 100644 --- a/libindicate/listener.h +++ b/libindicate/listener.h @@ -109,6 +109,7 @@ void indicate_listener_get_property_icon (IndicateListener * l void indicate_listener_display (IndicateListener * listener, IndicateListenerServer * server, IndicateListenerIndicator * indicator); +gboolean indicate_listener_get_indicator_servers (IndicateListener * listener, GList * servers); void indicate_listener_server_get_type (IndicateListener * listener, IndicateListenerServer * server, indicate_listener_get_server_property_cb callback, diff --git a/src/applet-main.c b/src/applet-main.c index 6efd33f..cd07548 100644 --- a/src/applet-main.c +++ b/src/applet-main.c @@ -83,6 +83,18 @@ load_module (const gchar * name, GtkWidget * menu) } static gboolean +menubar_press (GtkWidget * widget, + GdkEventButton *event, + gpointer data) +{ + if (event->button != 1) { + g_signal_stop_emission_by_name(widget, "button-press-event"); + } + + return FALSE; +} + +static gboolean menubar_on_expose (GtkWidget * widget, GdkEventExpose *event, GtkWidget * menubar) @@ -94,9 +106,69 @@ menubar_on_expose (GtkWidget * widget, return FALSE; } +static void +about_cb (BonoboUIComponent *ui_container, + gpointer data, + const gchar *cname) +{ + static const gchar *authors[] = { + "Ted Gould <ted@canonical.com>", + NULL + }; + + static gchar *license[] = { + N_("The Indicator Applet is free software; you can redistribute it and/or modify " + "it under the terms of the GNU General Public License as published by " + "the Free Software Foundation; either version 3 of the License."), + N_("This program is distributed in the hope that it will be useful, " + "but WITHOUT ANY WARRANTY; without even the implied warranties of " + "MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR " + "PURPOSE. See the GNU General Public License for more details."), + N_("You should have received a copy of the GNU General Public License " + "along with this program; if not, write to the Free Software " + "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA "), + NULL + }; + gchar *license_i18n; + + license_i18n = g_strjoinv ("\n\n", license); + + gtk_show_about_dialog(NULL, + "version", "0.1", + "copyright", "Copyright \xc2\xa9 2009 Canonical, Ltd.", + "comments", _("An applet to hold all of the system indicators."), + "authors", authors, + "license", license_i18n, + "wrap-license", TRUE, + "translator-credits", _("translator-credits"), + "logo-icon-name", "indicator-applet", + "website", "http://launchpad.net/indicator-applet", + "website-label", _("Indicator Applet Website"), + NULL + ); + + g_free (license_i18n); + + return; +} + +#ifdef N_ +#undef N_ +#endif +#define N_(x) x + static gboolean applet_fill_cb (PanelApplet * applet, const gchar * iid, gpointer data) { + static const BonoboUIVerb menu_verbs[] = { + BONOBO_UI_VERB ("IndicatorAppletAbout", about_cb), + BONOBO_UI_VERB_END + }; + static const gchar * menu_xml = + "<popup name=\"button3\">" + "<menuitem name=\"About Item\" verb=\"IndicatorAppletAbout\" _label=\"" N_("_About") "\" pixtype=\"stock\" pixname=\"gtk-about\"/>" + "</popup>"; + GtkWidget *menubar; gint i; gint indicators_loaded = 0; @@ -109,12 +181,13 @@ applet_fill_cb (PanelApplet * applet, const gchar * iid, gpointer data) /* Set panel options */ gtk_container_set_border_width(GTK_CONTAINER (applet), 0); - panel_applet_set_flags(applet, PANEL_APPLET_EXPAND_MINOR | PANEL_APPLET_HAS_HANDLE); + panel_applet_set_flags(applet, PANEL_APPLET_EXPAND_MINOR); + panel_applet_setup_menu(applet, menu_xml, menu_verbs, NULL); /* Init some theme/icon stuff */ gtk_icon_theme_append_search_path(gtk_icon_theme_get_default(), ICONS_DIR); - g_debug("Icons directory: %s", ICONS_DIR); + /* g_debug("Icons directory: %s", ICONS_DIR); */ gtk_rc_parse_string ( "style \"indicator-applet-style\"\n" "{\n" @@ -123,12 +196,14 @@ applet_fill_cb (PanelApplet * applet, const gchar * iid, gpointer data) " GtkWidget::focus-line-width = 0\n" " GtkWidget::focus-padding = 0\n" "}\n" - "widget \"*.indicator-applet-menubar\" style \"indicator-applet-style\""); - gtk_widget_set_name(GTK_WIDGET (applet), "indicator-applet-menubar"); + "widget \"*.fast-user-switch-applet\" style \"indicator-applet-style\""); + //gtk_widget_set_name(GTK_WIDGET (applet), "indicator-applet-menubar"); + gtk_widget_set_name(GTK_WIDGET (applet), "fast-user-switch-applet"); /* Build menubar */ menubar = gtk_menu_bar_new(); GTK_WIDGET_SET_FLAGS (menubar, GTK_WIDGET_FLAGS(menubar) | GTK_CAN_FOCUS); + g_signal_connect(menubar, "button-press-event", G_CALLBACK(menubar_press), NULL); g_signal_connect_after(menubar, "expose-event", G_CALLBACK(menubar_on_expose), menubar); gtk_container_set_border_width(GTK_CONTAINER(menubar), 0); diff --git a/tests/Makefile.am b/tests/Makefile.am index 0017bca..4a8f962 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,5 +1,5 @@ -noinst_PROGRAMS = \ +libexec_PROGRAMS = \ indicate-and-crash \ indicate-alot \ listen-and-print \ @@ -49,3 +49,12 @@ im_client_LDADD = \ ../libindicate/libindicate.la \ $(LIBINDICATE_LIBS) +examplesdir = $(docdir)/examples/ + +examples_DATA = \ + $(indicate_and_crash_SOURCES) \ + $(indicate_alot_SOURCES) \ + $(listen_and_print_SOURCES) \ + $(im_client_SOURCES) + +EXTRA_DIST = $(examples_DATA) |