libayatana-indicator-0.6.3/AUTHORS 0000644 0000000 0000000 00000001125 13565237013 013541 0 ustar Allan LeSage
Aurelien Gateau
Automatic PS uploader
Charles Kerr
CI bot
Cody Russell
Colin Watson
Daniel d'Andrada
Didier Roche
Eitan Isaacson
Evgeni Golov
György Balló
Hernando Torque
Iain Lane
Javier Jardón
Jonathan Riddell
Karl
Ken VanDine
Lars Uebernickel
Łukasz 'sil2100' Zemczak
Luke Yelavich
Marco Trevisan (Treviño)
Martin Pitt
Mathieu Trudel-Lapierre
Michael Terry
Mike Gabriel
Mikkel Kamstrup Erlandsen
Neil Jagdish Patel
Robert Ancell
Robert Carr
Robert Collins
seb128
Sebastien Bacher
Steve Langasek
Ted Gould
Timo Jyrinki
unknown
William Hua
libayatana-indicator-0.6.3/autogen.sh 0000755 0000000 0000000 00000000252 13565237013 014472 0 ustar #!/bin/sh
PKG_NAME="libayatana-indicator"
which mate-autogen || {
echo "You need mate-common from https://git.mate-desktop.org/mate-common."
exit 1
}
. mate-autogen
libayatana-indicator-0.6.3/ChangeLog 0000644 0000000 0000000 00000646750 13565237013 014266 0 ustar 2019-11-20 14:20:38 +0100 Mike Gabriel
* release 0.6.3 (HEAD -> master, tag: 0.6.3)
2019-11-20 12:16:43 +0000 Mike Gabriel (a5bc467)
* debian/rules: Switch from dh_install --fail-missing to dh_missing
--fail-missing.
2019-11-20 12:10:51 +0000 Mike Gabriel (dd16c4c)
* **/Makefile.am: Set -DGTK_DISABLE_DEPRECATED for gtk2 builds. Fixes
FTBFS against Glib2.0 >= 2.62.
2019-08-29 20:14:30 +0200 Mike Gabriel (b4a069f)
* libayatana-indicator/indicator-object.c: Typo fix in comment.
2018-11-05 10:05:10 +0000 Mike Gabriel (a734066)
* GObject private API/ABI: Get rid of g_type_class_add_private() and
use DEFINE_TYPE_WITH_PRIVATE().
2018-11-05 10:39:49 +0100 Mike Gabriel (e8073fd)
* debian/control: Switch B-D from libayatana-ido3-0.4-dev ->
libayatana-ido3-dev.
2018-03-20 10:40:49 +0100 Mike Gabriel (3927e0f)
* release 0.6.2 (tag: 0.6.2)
2018-03-20 08:54:48 +0000 Mike Gabriel (34b4321)
* libayatana-indicator/indicator-ng.c: Type cast assignments from
g_object_ref_sink().
2018-03-20 09:12:03 +0100 Mike Gabriel (3b3c265)
* debian/control: Drop unneeded D (libayatana-indicator3-dev):
libayatana-indicator-dev.
2017-10-26 19:16:22 +0200 Mike Gabriel (8de3f59)
* Makefile.am: Drop distcheck features.
2017-10-22 21:12:38 +0200 Mike Gabriel (cffab72)
* debian/changelog: Fix source project name in most recent changelog
stanza.
2017-09-27 16:01:44 +0200 Mike Gabriel (fb3d8fe)
* debian/changelog: post-release fix in date strings (2)
2017-09-27 11:12:43 +0200 Mike Gabriel (7a2f684)
* debian/changelog: post-release fix in date strings (for 0.6.0 and
0.6.1)
2017-09-23 01:14:17 +0200 Mike Gabriel (4f355a3)
* post-release fix-up of debian/changelog
2017-09-22 11:14:40 +0200 Mike Gabriel (6233943)
* debian/rules: Drop dh_install call for bin:pkg
-plibayatana-indicator-tools. We don't ship that anymore.
2017-09-22 10:16:08 +0200 Mike Gabriel (7222339)
* debian/ayatana-indicator-common.install: Set x-bit on file
permissions.
2017-09-22 10:11:39 +0200 Mike Gabriel (20640dd)
* release 0.6.1 (tag: 0.6.1)
2017-09-22 10:01:32 +0200 Mike Gabriel (df6c2e9)
* debian/control: Add B-D systemd [linux-any].
2017-09-22 10:01:13 +0200 Mike Gabriel (7bd1d1d)
* debian/{control,ayatana-indicators-common}: Leave
ayatana-indicators-commin bin:package empty on non-systemd
systems.
2017-09-22 09:58:06 +0200 Mike Gabriel (afba9ad)
* configure.ac: Support pkg-config (<< 0.27).
2017-09-22 09:57:35 +0200 Mike Gabriel (2b5c1b0)
* autotools: Make systemd dependency optional. This makes
libayatana-indicator available on Debian GNU/kFreeBSD and
Debian GNU/Hurd.
2017-05-22 15:29:02 +0200 Mike Gabriel (5ff7174)
* debian/*: Adopt packaging improvements from official Debian
package.
2017-05-22 13:48:53 +0200 Mike Gabriel (4fd7ae8)
* release 0.6.0 (tag: 0.6.0)
2017-05-22 14:03:19 +0200 Mike Gabriel (c49b409)
* Add empty NEWS file to prevent FTBFS.
2017-05-22 13:47:34 +0200 Mike Gabriel (9029a50)
* Update AUTHORS file.
2017-05-22 13:46:17 +0200 Mike Gabriel (0409f01)
* Move NEWS -> NEWS.Canonical.
2017-05-22 13:46:00 +0200 Mike Gabriel (820f332)
* autogen.sh: Add 'ayatana-' to the PKG_NAME value.
2017-05-22 13:45:40 +0200 Mike Gabriel (6523f70)
* README: Update, don't mention Unity. We are non-Ubuntu centric.
Also adapt path where indicator service files have to be
placed.
2017-05-16 11:09:43 +0200 Mike Gabriel (8c2a254)
* Fix up for previous commit.
2017-05-15 16:46:44 +0200 Mike Gabriel (ac3c960)
* One step back... Mimick Canonical's API. Use their namespace for
item attributes.
2017-05-15 16:45:55 +0200 Mike Gabriel (9c42187)
* tools/80indicator-debugging: Adapt comment header to our fork.
2017-05-15 11:03:55 +0200 Ted Gould (0f68605)
* ayatana-indicator-common: Add a package to hold shared systemd
targets for systemd user session.
2017-05-15 10:49:03 +0200 Mike Gabriel (4ab9812)
* drop buildcruft file
2017-05-15 10:18:27 +0200 Mike Gabriel (c4a411d)
* build system: Switch from gnome-common to mate-common.
2016-02-19 10:56:53 +0100 Iain Lane (0871d14)
* Add -lm via LDADD to resolve FTBFS in Ubuntu 16.04 and Debian
stretch/unstable.
2015-11-16 16:05:54 +0100 Mike Gabriel (c9b08c1)
* Use x-ayatanaindicator-* instead of x-canonical-*.
2015-11-16 15:16:58 +0100 Mike Gabriel (1748add)
* Makefile.am: Replace dist-hook for Bazaar based VCS repo against
dist-hook for a Git based VCS repo.
2015-11-11 14:35:44 +0100 Mike Gabriel (35fbed9)
* debian/libayatana-indicator*.symbols: Add .symbols files for shared
libraries.
2015-11-11 14:35:14 +0100 Mike Gabriel (9469b6e)
* debian/rules: Remove builddir/ and build-aux/ directories when
auto-cleaning up package.
2015-11-11 05:52:38 +0100 Mike Gabriel (ed550aa)
* Drop .bzrignore file.
2015-11-10 22:52:23 +0100 Mike Gabriel (3682a7c)
* debian/changelog: Use a Debianinc revision in the package version
(0.6.0 -> 0.6.0-0).
2015-11-10 17:52:01 +0100 Mike Gabriel (9c0552f)
* debian/control: Fix build-dep issue for libayatana-ido3-0.4-dev.
2015-11-07 06:02:30 +0000 Mike Gabriel (fc142ac)
* Various fixes for making the library name change complete.
2015-11-06 14:46:09 +0000 Mike Gabriel (9d1b39f)
* Fork libayatana-indicator from Ubuntu's libindicator shared
library.
2014-09-22 13:41:36 +0000 CI bot (b1f280a)
* Releasing 12.10.2+14.10.20140922-0ubuntu1
2014-09-22 13:41:26 +0000 Marco Trevisan (Treviño) (5ae6789)
* IndicatorNG: Reverse the scroll delta on left scroll events
2014-07-16 15:41:25 +0200 Marco Trevisan (Treviño) (19b7298)
* IndicatorNG: Reverse the scroll delta on left scroll events
2014-07-16 15:40:42 +0200 Marco Trevisan (Treviño) (1a211d6)
* IndicatorLoader: convert gtk scroll events to indicator object
events
2014-07-16 15:00:51 +0200 Marco Trevisan (Treviño) (515f717)
* IndicatorLoader: add scroll-entry support
2014-04-02 14:50:54 +0000 CI bot (14a8261)
* Releasing 12.10.2+14.04.20140402-0ubuntu1
2014-04-02 14:50:38 +0000 William Hua (e662c87)
* Don't load using the icon info structure if it's a GBytesIcon.
Fixes: 1293548
2014-03-29 22:12:56 +1300 William Hua (68a5ec6)
* Don't load using the icon info structure if it's a bytes icon.
2014-03-04 10:58:35 +0000 CI bot (1dc288c)
* Releasing 12.10.2+14.04.20140304-0ubuntu1
2014-03-04 10:58:28 +0000 Marco Trevisan (Treviño) (a0a0b28)
* IndicatorImageHelper: always try to use a GIcon or the filename as
source of the GdkImage
2014-03-03 11:25:29 +0100 Marco Trevisan (Treviño) (844e1b5)
* IndicatorImageHelper: let's use the actual icon file if its height
is less than ICON_SIZE
2014-03-03 10:44:10 +0100 Marco Trevisan (Treviño) (8a1bdd7)
* IndicatorLoader: Make sure that we load the icon at its original
size, if not higher than IMAGE_SIZE
2014-02-28 07:17:20 +0100 Marco Trevisan (Treviño) (acf1752)
* ImageHelper: set image from icon name if we have the filename
2014-02-28 06:52:57 +0100 Marco Trevisan (Treviño) (12db08f)
* IndicatorImageHelper: always try to use a GIcon or the file-name as
source of the Gdk image
2014-02-18 15:45:39 +0000 CI bot (517d1b4)
* Releasing 12.10.2+14.04.20140218-0ubuntu1
2014-02-18 15:45:31 +0000 Marco Trevisan (Treviño) (31d0819)
* IndicatorObject: add parent_window parameter to IndicatorEntry
2014-02-13 17:18:53 +0100 Marco Trevisan (Treviño) (9affd1f)
* IndicatorObject: add parent_window parameter to IndicatorEntry
2014-01-29 16:47:10 +0000 CI bot (a7660e5)
* Releasing 12.10.2+14.04.20140129-0ubuntu1
2014-01-29 16:47:01 +0000 Lars Uebernickel (ced7687)
* indicator-ng: support "submenu-action" on root menu items Fixes:
793450
2014-01-29 14:16:59 +0100 Lars Uebernickel (239817c)
* indicator-ng: support "submenu-action" on root menu items
2014-01-17 18:40:36 +0100 Łukasz 'sil2100' Zemczak (759fdd8)
* Sync trunk with what's in the archive
2013-12-20 20:31:02 +0000 Colin Watson (b7f9938)
* Use named icons rather than (deprecated) stock items. Fixes:
https://bugs.launchpad.net/bugs/1262626.
2013-12-20 11:30:44 +0000 Colin Watson (a1e5383)
* Use named icons rather than (deprecated) stock items.
2013-12-19 15:35:18 +0000 Lars Uebernickel (f6b60f1)
* Don't treat deprecation warnings as errors and fix indicator-ng
test for gtk 3.10. Fixes:
https://bugs.launchpad.net/bugs/1262626.
2013-12-19 15:51:13 +0100 Lars Uebernickel (b2d4deb)
* test-indicator-ng: adapt to new gtkmodelmenuitem widget structure
2013-12-19 15:50:54 +0100 Lars Uebernickel (ef145fc)
* Don't treat deprecation warnings as errors
2013-11-25 15:38:48 +0000 Automatic PS uploader (a1318f0)
* Releasing 12.10.2+14.04.20131125-0ubuntu1 (revision 517 from
lp:libindicator).
2013-11-25 03:55:11 +0000 Automatic PS uploader (cef38fd)
* Releasing 12.10.2+14.04.20131125-0ubuntu1, based on r517
2013-10-31 10:00:21 -0700 Timo Jyrinki (69132b0)
* Sync changelog from what's in archive.
2013-10-29 00:18:26 +0000 Lars Uebernickel (cf5ac5e)
* Allow setting different positions for each profile in indicator
files
2013-10-24 03:44:21 +0000 Charles Kerr (773d09b)
* When we can't get a handle to the bus, exit gracefully instead of
crashing. Fixes: https://bugs.launchpad.net/bugs/1218222.
2013-10-23 21:08:35 -0500 Charles Kerr (2d8ee13)
* minor cleanup in the dispose() and finalize() functions
2013-10-23 21:04:19 -0500 Charles Kerr (40b4288)
* When we can't get a handle to the system bus, exit gracefully
instead of crashing.
2013-10-17 20:04:16 +0000 Lars Uebernickel (de95588)
* indicator-ng: always create entry.label and entry.image
2013-10-17 14:57:08 -0400 Lars Uebernickel (244d618)
* indicator-ng: always create entry.label and entry.image
2013-10-17 02:04:17 +0000 Lars Uebernickel (ccf83ad)
* Warn when an indicator doesn't get respawned anymore.
2013-10-16 19:16:08 -0400 Lars Uebernickel (0a9a95f)
* Warn when an indicator doesn't get respawned anymore
2013-10-10 16:50:29 +0200 Lars Uebernickel (478ea09)
* Allow setting per-profile positions in indicator files
2013-09-13 19:42:14 +0000 Automatic PS uploader (a52033e)
* Releasing 12.10.2+13.10.20130913-0ubuntu1 (revision 511 from
lp:libindicator).
2013-09-13 15:15:38 +0000 Automatic PS uploader (f5e4716)
* Releasing 12.10.2+13.10.20130913-0ubuntu1, based on r511
2013-09-09 14:00:06 +0000 Lars Uebernickel (5878e6b)
* Expose scrolling and middle clicking to fix bug #1221242 and
#1204036 (make scrolling and middle clicking work on the
sound indicator). Fixes:
https://bugs.launchpad.net/bugs/1204036,
https://bugs.launchpad.net/bugs/1221242.
2013-09-09 15:32:49 +0200 Lars Uebernickel (9e857c3)
* Remove debug message
2013-09-09 14:09:57 +0200 Lars Uebernickel (bb39362)
* Support x-canonical-secondary action
2013-09-09 13:40:49 +0200 Lars Uebernickel (f4fa566)
* Support "x-canonical-scroll-action"
2013-08-23 02:49:55 +0000 Automatic PS uploader (86f3d9e)
* Releasing 12.10.2+13.10.20130823-0ubuntu1 (revision 509 from
lp:libindicator).
2013-08-23 02:08:00 +0000 Automatic PS uploader (415565b)
* Releasing 12.10.2+13.10.20130823-0ubuntu1, based on r509
2013-08-22 22:33:16 +0000 Marco Trevisan (Treviño) (b47e0f1)
* IndicatorDesktopShortcuts: add support to Path key for shortcut
items. Fixes: https://bugs.launchpad.net/bugs/1113883.
2013-08-22 18:57:50 +0200 Marco Trevisan (Treviño) (59a242d)
* IndicatorDesktopShortcut: fix indentation
2013-08-22 18:55:46 +0200 Marco Trevisan (Treviño) (427b5d5)
* IndicatorDesktopShortcuts: restore previous working dir if we
changed it
2013-08-09 12:54:25 +0200 Marco Trevisan (Treviño) (6d93aba)
* IndicatorDesktopShortcuts: use g_key_file_get_string for path
2013-08-08 12:18:47 +0200 Marco Trevisan (Treviño) (c0bb294)
* IndicatorDesktopShortcuts: add support to Path key for shortcut
items
2013-07-31 08:50:32 +0000 Automatic PS uploader (f695712)
* Releasing 12.10.2+13.10.20130731-0ubuntu1 (revision 507 from
lp:libindicator).
2013-07-31 02:02:40 +0000 Automatic PS uploader (a8df6b3)
* Releasing 12.10.2+13.10.20130731-0ubuntu1, based on r507
2013-07-30 19:35:58 +0000 Charles Kerr (ae7687c)
* in indicator-loader3, if we're looking at an ng-style indicator,
show all of its profiles instead of just one.
2013-07-26 12:32:08 -0500 Charles Kerr (e430061)
* explicitly set UBUNTU_MENUPROXY to 0
2013-07-26 01:58:55 -0500 Charles Kerr (f842a80)
* more copyediting. why am I awake?
2013-07-26 01:28:09 -0500 Charles Kerr (5acc284)
* copyediting: fix linewraps
2013-07-25 23:56:05 -0500 Charles Kerr (7f61992)
* plug a keyfile leak
2013-07-25 23:46:11 -0500 Charles Kerr (083af7d)
* in indicator-loader, show =all= the profiles
2013-07-19 02:49:52 +0000 Automatic PS uploader (ce7a42f)
* Releasing 12.10.2+13.10.20130719-0ubuntu1 (revision 505 from
lp:libindicator).
2013-07-19 02:03:05 +0000 Automatic PS uploader (ed00a13)
* Releasing 12.10.2+13.10.20130719-0ubuntu1, based on r505
2013-07-18 07:27:06 +0000 Marco Trevisan (Treviño) (0c4921a)
* IndicatorDesktopShortcuts: fix memory leak, free groupheader.
2013-07-17 21:47:48 +0200 Marco Trevisan (Treviño) (598c4b7)
* IndicatorDesktopShortcuts: free groupheader
2013-07-02 09:35:19 +0000 Automatic PS uploader (507e694)
* Releasing 12.10.2+13.10.20130702-0ubuntu1 to ubuntu.
2013-07-02 02:02:40 +0000 Automatic PS uploader (4cacb64)
* Releasing 12.10.2+13.10.20130702-0ubuntu1, based on r503
2013-06-28 17:50:12 -0400 Lars Uebernickel (4ec8c2f)
* Add support for indicators to tell the panel where they'd like to
appear
2013-06-28 16:03:16 -0400 Lars Uebernickel (e7e2b63)
* indicator-object: g_return_if_fail -> g_return_val_if_fail
2013-06-28 14:36:28 -0400 Lars Uebernickel (9090409)
* README: include information about the new Position key in indicator
files
2013-06-28 14:30:33 -0400 Lars Uebernickel (e744e38)
* Allow indicators to tell the panel where they want to appear
2013-06-28 15:20:50 +0000 Automatic PS uploader (3470db7)
* Releasing 12.10.2+13.10.20130628-0ubuntu1 to ubuntu.
2013-06-28 02:02:40 +0000 Automatic PS uploader (55e85a1)
* Releasing 12.10.2+13.10.20130628-0ubuntu1, based on r501
2013-06-27 19:35:40 +0000 Charles Kerr (b4ea3e7)
* Fixes a crasher bug in ng's parsing of the response to
org.freedesktop.DBus.StartServiceByName: The result's
variant format is "(u)", not "u".
2013-06-27 12:30:16 -0500 Charles Kerr (104bcd6)
* in indicator_ng_service_started(), the result's variant type should
be parsed as '(u)' rather than 'u'
2013-06-19 13:05:51 +0000 Automatic PS uploader (7bd4548)
* Releasing 12.10.2daily13.06.19.1-0ubuntu1 to ubuntu.
2013-06-19 10:45:14 +0000 Automatic PS uploader (0bb928f)
* Releasing 12.10.2daily13.06.19.1-0ubuntu1, based on r499
2013-06-19 12:42:52 +0200 Didier Roche (1b0f90a)
* Add missing conflicts/replaces
2013-06-17 21:22:07 +0000 Charles Kerr (20c7b65)
* in indicator_ng_update_entry, unconditionally call set_label,
set_icon, set_accessible. Previously these were only
called if the respective fields weren't NULL, which made
it impossible to, for example, turn off a label or icon
once it had been set.
2013-06-16 23:45:30 -0500 Charles Kerr (d5d01f6)
* in indicator_ng_update_entry, unconditionally call set_label,
set_icon, set_accessible. Previously these were only
called if the respective fields weren't NULL, which made
it impossible to, for example, turn off a label or icon
once it had been set.
2013-06-07 21:21:17 +0000 Lars Uebernickel (d5fd946)
* indicator-ng: properly fail when keyfile doesn't exist.
2013-06-07 20:49:24 +0000 Ted Gould (b094931)
* Remove the GTK2 version of the tools.
2013-06-07 14:45:27 -0500 Ted Gould (1c70a2e)
* Gone.
2013-06-07 14:45:17 -0500 Ted Gould (277ba85)
* Move the debugging environment variables into the other tools
package
2013-06-07 14:38:00 -0500 Ted Gould (3c96b99)
* Don't build the GTK2 tools
2013-06-07 14:43:51 -0400 Lars Uebernickel (2014454)
* indicator-ng: properly fail when keyfile doesn't exist
2013-06-07 11:34:25 -0400 Lars Uebernickel (1d4bcdd)
* Merge lp:~larsu/call-ido-init
2013-06-07 11:33:03 -0400 Lars Uebernickel (12cc75f)
* Merge lp:~larsu/new-indicator-file-format
2013-06-07 09:50:12 +0000 Automatic PS uploader (060711f)
* Releasing 12.10.2daily13.06.07-0ubuntu1 to ubuntu.
2013-06-07 02:02:38 +0000 Automatic PS uploader (2edf591)
* Releasing 12.10.2daily13.06.07-0ubuntu1, based on r492
2013-06-04 13:11:17 -0400 Lars Uebernickel (4adb2af)
* Revert r490
2013-05-29 14:54:35 -0400 Lars Uebernickel (0d3ebcb)
* indicator-ng: fix crash
2013-05-29 17:33:54 +0000 Marco Trevisan (Treviño) (8b78ada)
* tests: fix compilation and make check.
2013-05-29 17:16:46 +0000 Marco Trevisan (Treviño) (ab3b6ee)
* IndicatorDesktopShortcuts: Use the proper way to create an AppInfo
from command-line
2013-05-29 16:35:29 +0000 Ted Gould (d652787)
* Migrating away from deprecated gtk_icon_info_free().
2013-05-29 10:25:00 -0500 Ted Gould (b46f29a)
* Handling the deprecation of gtk_icon_info_free()
2013-05-27 12:08:30 -0400 Lars Uebernickel (f9c0971)
* debian/control: add ido dependency
2013-05-24 18:17:45 -0400 Lars Uebernickel (9627530)
* IndicatorNg: update indicator file format
2013-05-24 17:10:40 -0400 Lars Uebernickel (2712010)
* refactor indicator_ng_initable_init
2013-05-23 09:04:13 -0400 Lars Uebernickel (a591305)
* Depend on ido and call ido_init() in indicator-loader
2013-05-23 09:02:44 -0400 Lars Uebernickel (f77f41e)
* indicator-image-helper: stop using deprecated gtk_icon_info_free()
2013-05-22 18:08:11 +0000 William Hua (ae198af)
* Use GIcon's serialization/deserialization interface for indicator
icons so that we can load icons as PNG data transmitted
over the bus.
2013-05-19 12:47:01 -0400 William Hua (176ea14)
* Code clean-up.
2013-05-03 16:21:37 +0000 Automatic PS uploader (5cac96c)
* Releasing 12.10.2daily13.05.02-0ubuntu1 to ubuntu.
2013-05-02 22:59:06 +0000 Automatic PS uploader (0496a1f)
* Releasing 12.10.2daily13.05.02-0ubuntu1, based on r487
2013-05-02 19:33:53 +0000 Mathieu Trudel-Lapierre (3022eec)
* Merge changelog changes from /13.04 branch for saucy.
2013-05-02 12:12:42 -0700 Mathieu Trudel-Lapierre (4d59f6f)
* Merge changelog changes from /13.04 branch for saucy.
2013-04-26 10:49:12 -0400 William Hua (bab64c4)
* Clean up error checking.
2013-04-26 09:39:14 -0400 William Hua (83fef72)
* Don't free label and accessible_desc.
2013-04-26 09:38:59 -0400 William Hua (5d6adee)
* Remove changelog entry.
2013-04-22 11:50:51 -0400 William Hua (19ec649)
* [ William Hua ] * debian/control: - Bump GLib to 2.37. *
configure.ac: - Bump GLib to 2.37. *
libindicator/indicator-image-helper.c: - Support display
of GBytesIcons. * libindicator/indicator-ng.c: - Change
action state icon type to GVariant.
2013-04-19 13:49:32 +0200 Marco Trevisan (Treviño) (f88266a)
* IndicatorDesktopShortcuts: some code cleanup
2013-04-12 13:56:52 +0200 Marco Trevisan (Treviño) (5c5f778)
* tests: fix compilation and make check.
2013-04-12 13:50:05 +0200 Marco Trevisan (Treviño) (7f0c703)
* IndicatorDesktopShortcuts: initialize flags using the default
define
2013-04-12 13:40:18 +0200 Marco Trevisan (Treviño) (0312ffa)
* IndicatorDesktopShortcuts: Use the proper way to create an AppInfo
from command-line
2013-04-09 16:45:03 +0000 Marco Trevisan (Treviño) (4d64b71)
* IndicatorDestkopShortcuts: add StartupNotify parameter in our
internal fake .desktop file
2013-04-09 04:53:09 +0200 Marco Trevisan (Treviño) (bd9abfc)
* IndicatorDestkopShortcuts: add StartupNotify parameter in our
internal fake .desktop file
2013-04-05 12:02:24 +0000 Marco Trevisan (Treviño) (2d418a6)
* IndicatorDestkopShortcuts: add
indicator_desktop_shortcuts_nick_exec_with_context
2013-04-05 13:22:34 +0200 Marco Trevisan (Treviño) (07652a3)
* IndicatorDestkopShortcuts: fix indentation
2013-04-05 13:19:54 +0200 Marco Trevisan (Treviño) (c539c37)
* IndicatorDestkopShortcuts: add missing include and deprecate old
function
2013-04-05 13:09:02 +0200 Marco Trevisan (Treviño) (2fba148)
* IndicatorDestkopShortcuts: add
indicator_desktop_shortcuts_nick_exec_with_context
2013-03-25 21:49:50 -0400 Lars Uebernickel (ffbb3c1)
* indicator-ng: allow a dictionary as the root action's state
2013-03-25 21:42:28 -0400 Charles Kerr (b046c93)
* indicator-loader: add command line option to specify profile
2013-03-22 14:57:55 -0500 Charles Kerr (f25cc33)
* init the GError pointer to NULL
2013-03-22 11:18:53 -0500 Charles Kerr (98cae79)
* introduce tab damage for consistency with the rest of
indicator-loader.c
2013-03-22 11:15:11 -0500 Charles Kerr (22d673c)
* add the option to specify the profile from the command line
2013-03-21 14:06:22 -0400 Lars Uebernickel (8232ab0)
* indicator-ng: allow a dictionary as the root action's state
2013-03-18 22:49:09 +0000 Mathieu Trudel-Lapierre (61d0f80)
* Revert "indicator-ng: allow a dictionary as the root action's
state".
2013-03-18 17:28:01 -0400 Mathieu Trudel-Lapierre (c5f002f)
* Revert: indicator-ng: allow a dictionary as the root action's state
2013-03-13 22:24:42 +0000 Lars Uebernickel (daf0dc9)
* indicator-ng: allow a dictionary as the root action's state
2013-03-13 16:32:22 +0000 Lars Uebernickel (610b2cc)
* indicator-ng: allow a dictionary as the root action's state
2013-02-25 18:54:10 +0000 Automatic PS uploader (208d1ba)
* Releasing 12.10.2daily13.02.25-0ubuntu1 to ubuntu.
2013-02-25 02:03:14 +0000 Automatic PS uploader (5074c9d)
* Releasing 12.10.2daily13.02.25-0ubuntu1, based on r479
2013-02-22 15:07:42 +0000 Iain Lane (3a73f29)
* Install the gtk2 library into the multiarch directory. Fixes:
https://bugs.launchpad.net/bugs/1131708.
2013-02-22 11:59:11 +0000 Iain Lane (319a606)
* Use $(COMMON_CONFIGURE_FLAGS) instead of hardcoding
2013-02-22 11:36:55 +0000 Iain Lane (286882c)
* Install shared library into correct (multiarch) directory
2013-02-22 10:34:24 +0000 Iain Lane (31368ce)
* Disable silent rules for more useful build logs
2013-02-19 12:20:52 +0000 Automatic PS uploader (150610d)
* Releasing 12.10.2daily13.02.19-0ubuntu1 to ubuntu.
2013-02-19 02:02:27 +0000 Automatic PS uploader (da40ae8)
* Releasing 12.10.2daily13.02.19-0ubuntu1, based on r477
2013-02-15 17:20:14 +0000 Michael Terry (d24848f)
* Multiarch for most of libindicator is fine. But the indicators
themselves should continue to be installed in the same
(non-multiarch) directory, for historical reasons. Fixes:
https://bugs.launchpad.net/bugs/1126360.
2013-02-15 11:03:03 -0500 Michael Terry (6aea07d)
* hard-code indicatordir to not use multiarch locations
2013-02-15 11:08:57 +0000 Automatic PS uploader (85c8d1c)
* Releasing 12.10.2daily13.02.15-0ubuntu1 to ubuntu.
2013-02-15 07:46:53 +0000 Automatic PS uploader (cdfa9f5)
* Releasing 12.10.2daily13.02.15-0ubuntu1, based on r475
2013-02-14 22:25:39 +0000 Lars Uebernickel (d05835e)
* Add IndicatorNg.
2013-02-14 16:16:48 -0500 Lars Uebernickel (40d7c42)
* indicator-ng: add license header
2013-02-06 16:03:33 -0500 Lars Uebernickel (88aa74b)
* indicator-ng: don't hide the indicator if the service is already
running
2013-02-06 15:37:38 -0500 Lars Uebernickel (f9f86fb)
* indicator-ng: try to restart the service when it crashes
2013-01-30 17:49:32 +0100 Lars Uebernickel (8ff25e5)
* indicator-ng: simplify flow in initable_init
2013-01-25 11:55:02 +0100 Lars Uebernickel (dce947b)
* trim-lcov.py: add license header
2013-01-25 11:14:13 +0100 Lars Uebernickel (c02297d)
* indicator-ng: use strlen instead of hard coding the length
2013-01-25 11:11:59 +0100 Lars Uebernickel (9c857a3)
* indicator-ng: use indicator_image_helper
2013-01-25 10:46:58 +0100 Lars Uebernickel (7048092)
* indicator-ng: lazily allocate entry.label and entry.image
2013-01-25 10:29:57 +0100 Lars Uebernickel (82ecfaa)
* indicator-ng: require header item to have x-canonical-type set
2013-01-24 11:39:12 +0100 Lars Uebernickel (f02ca5a)
* indicator-ng: check return value of g_menu_model_get_item_attribute
2013-01-24 11:29:24 +0100 Lars Uebernickel (db1caf2)
* indicator-ng: document error conditions in menu_changed
2013-01-24 11:25:11 +0100 Lars Uebernickel (088b36b)
* indicator-ng: save unnecessary allocations by using "&" in
g_variant_get
2013-01-24 11:22:39 +0100 Lars Uebernickel (05535f5)
* indicator-ng: show broken image when g_icon_for_string returns NULL
2013-01-24 10:23:35 +0100 Lars Uebernickel (f3f4e1f)
* indicator-ng: use an IndicatorObjectEntry internally
2013-01-23 20:05:45 +0100 Lars Uebernickel (e096111)
* Add trim-lcov.py
2013-01-23 19:34:43 +0100 Lars Uebernickel (af0137c)
* indicator-ng: test indicator_ng_get_property
2013-01-23 18:00:49 +0100 Lars Uebernickel (0996bce)
* indicator-ng: more elaborate testing
2013-01-23 17:55:08 +0100 Lars Uebernickel (e07deff)
* indicator-ng: set name hint to the value of the service file's
"Name" field
2013-01-23 17:30:05 +0100 Lars Uebernickel (739daae)
* indicator-ng: use base->get_entries to get the invisible ones, too
2013-01-23 17:29:05 +0100 Lars Uebernickel (ac0c809)
* indicator-ng: auto start service if it's not running
2013-01-22 18:36:10 +0100 Lars Uebernickel (67323d4)
* indicator-ng: properly unset action group when the service
disappears
2013-01-21 17:34:44 +0100 Lars Uebernickel (d84d6f7)
* Add basic tests for indicator-ng
2013-01-21 17:30:05 +0100 Lars Uebernickel (36e0fea)
* Make sure indicator-ng.h is installed
2013-01-21 17:09:55 +0100 Lars Uebernickel (1585adb)
* indicator-ng: add getters
2013-01-21 17:04:02 +0100 Lars Uebernickel (4b301ff)
* indicator-ng: add indicator_ng_new_for_profile
2013-01-21 16:39:55 +0100 Lars Uebernickel (869d977)
* indicator-ng: fix crash (tried to free a string with
g_object_unref)
2013-01-21 16:38:11 +0100 Lars Uebernickel (af3ac65)
* indicator-ng: always set an accessible description to avoid
imminent warning
2013-01-21 10:58:26 +0100 Lars Uebernickel (ca52243)
* indicator-ng.h: use local include
2013-01-18 22:18:27 +0100 Lars Uebernickel (3822cf9)
* Bump gtk3 dependency for gtk_widget_insert_action_group
2013-01-18 22:17:54 +0100 Lars Uebernickel (aaae4aa)
* Only build and use IndicatorNg in the gtk3 build
2013-01-18 19:48:04 +0100 Lars Uebernickel (3a33240)
* Add IndicatorNg
2012-11-26 11:55:58 +0000 Didier Roche (e796648)
* Add bootstrap message.
2012-11-26 10:33:02 +0100 Didier Roche (7b8e551)
* add bootstrap message
2012-11-26 07:32:16 +0000 Ted Gould (810eada)
* Import debian/ from lp:~ubuntu-desktop/libindicator/ubuntu.
2012-11-22 14:32:41 -0500 Mathieu Trudel-Lapierre (f77d6dd)
* Add and export DPKG_GENSYMBOLS_CHECK_LEVEL.
2012-11-22 12:19:57 -0500 Mathieu Trudel-Lapierre (93e0bd1)
* Add the proper Pre-Depends: multiarch to libindicator3-7.
2012-11-22 12:13:37 -0500 Mathieu Trudel-Lapierre (5576bf0)
* - Use calls to dh_install per-package to use the right source
directories. * debian/*.install: drop the debian/tmp/gtk*
path elements and update for multiarch.
2012-11-22 02:31:06 -0500 Mathieu Trudel-Lapierre (094593a)
* debian/compat: bump compat level to 9.
2012-11-22 02:30:41 -0500 Mathieu Trudel-Lapierre (1d6bc1d)
* Update Vcs-Bzr, Vcs-Browser and add a notice to uploaders.
2012-11-21 15:00:45 -0500 Mathieu Trudel-Lapierre (e16a126)
* Add a Build-Depends on gnome-common.
2012-11-21 14:59:47 -0500 Mathieu Trudel-Lapierre (5680639)
* Override dh_autoreconf to run autogen.sh and not call configure.
2012-11-21 14:59:05 -0500 Mathieu Trudel-Lapierre (d1e3acb)
* Drop Build-Depends on cdbs.
2012-11-21 14:58:08 -0500 Mathieu Trudel-Lapierre (3d69e24)
* * debian/rules: - Convert to using the dh9 sequencer.
2012-11-21 14:25:36 -0500 Mathieu Trudel-Lapierre (9ec2a25)
* Bump debhelper Build-Depends to (>= 9).
2012-11-21 14:25:01 -0500 Mathieu Trudel-Lapierre (30aa94e)
* * debian/control: - Reorganize Build-Depends for clarity. -
Update style to be consistent with other indicator stack
packages.
2012-11-21 14:21:42 -0500 Mathieu Trudel-Lapierre (7a3c457)
* Specify to bzr-builddeb to build the package in split mode.
2012-11-21 14:21:10 -0500 Mathieu Trudel-Lapierre (ac60524)
* Import debian/ from lp:~ubuntu-desktop/libindicator/ubuntu
2012-09-19 16:00:57 -0400 Ken VanDine (85dbd2d)
* releasing version 12.10.1-0ubuntu1
2012-09-19 15:21:55 -0400 Ken VanDine (96f010d)
* Import upstream version 12.10.1
2012-09-19 10:40:00 -0500 Charles Kerr (341548e)
* 12.10.1
2012-09-17 11:13:51 +0200 Didier Roche (2f35a94)
* releasing version 12.10.0-0ubuntu2
2012-09-17 11:11:33 +0200 Didier Roche (0dc2913)
* Backport a fix so that libroffice doesn't hang on on startup (LP:
#1045372)
2012-09-12 06:58:57 +0000 Charles Kerr (667fbaf)
* In libindicator, remove the cloak/decloak code in IndicatorObject
to address Bug #1045372.
2012-09-11 23:25:56 -0500 Charles Kerr (00d0556)
* In tests/test-loader and tests/dummy-indicator-visible.c, support
hiding & re-showing IndicatorObjectEntries by caching
their parent widgetry instead of using
gtk_widget_destroy()
2012-09-11 21:25:02 -0500 Charles Kerr (ee19af5)
* No newline at end of file
2012-09-11 18:56:09 -0500 Charles Kerr (bf9cf29)
* remove the cloak/decloak widget logic
2012-07-12 17:44:58 +0200 Sebastien Bacher (bdeeb47)
* releasing version 12.10.0-0ubuntu1
2012-07-12 17:44:39 +0200 Sebastien Bacher (d739399)
* New upstream release.
2012-07-12 17:36:00 +0200 Sebastien Bacher (edcdb07)
* Import upstream version 12.10.0
2012-07-11 13:07:44 -0500 Charles Kerr (b1beb2c)
* bump version to 12.10.0
2012-06-19 10:31:49 +0200 Lars Uebernickel (d2f8fce)
* merge lp:~charlesk/libindicator/fix-test-sources
2012-06-18 14:33:30 -0500 Charles Kerr (20cafa4)
* merge lp:~evgeni/libindicator/multiarch-same-devheaders so that we
don't include build-time filenames in comments of the enum
header files.
2012-06-18 13:42:53 -0500 Charles Kerr (26dcee4)
* fix copy-and-paste error in specifying the tests' source files
2012-06-10 11:16:21 +0200 Evgeni Golov (5d3f97c)
* don't include build-time filenames in comments of the enum header
files
2012-04-23 13:15:39 -0500 Charles Kerr (1271439)
* merge lp:~charlesk/libindicator/cxx to constify the constructors
for indicator_service_manager
2012-04-22 14:24:13 -0500 Charles Kerr (670e6e0)
* indiator_service_manager_new*()'s name arguments were gchar*, make
them const gchar*
2012-04-11 14:13:19 -0400 Ken VanDine (f26bd55)
* releasing version 0.5.0-0ubuntu1
2012-04-11 13:09:40 -0400 Ken VanDine (c606a9a)
* * New upstream release. * Validate images in
image_helper_update() (LP: #946408)
2012-04-11 10:54:57 -0500 Charles Kerr (752101a)
* releasing version 0.5.0-0ubuntu1~ppa1
2012-04-11 10:53:08 -0500 Charles Kerr (499bd67)
* * New upstream release. * Validate images in
image_helper_update() (LP: #946408)
2012-04-11 10:51:10 -0500 Charles Kerr (21ef9a5)
* Import upstream version 0.5.0
2012-04-11 10:50:29 -0500 Charles Kerr (0bd650d)
* Sync from Ubuntu Desktop
2012-04-11 10:25:31 -0500 Charles Kerr (1cbe933)
* 0.5.0 (tag: 0.5.0)
2012-04-11 07:49:56 -0500 Charles Kerr (c721d3e)
* merge lp:~charlesk/libindicator/lp-946408 to safeguard against
invalid images being passed to
indicator_image_helper_update()
2012-04-11 01:01:51 -0500 Charles Kerr (bb571a4)
* in indicator_image_helper_update(), test the image argument with
GTK_IS_IMAGE before using it.
2012-04-05 12:44:30 +0200 Sebastien Bacher (d538aa4)
* releasing version 0.4.95-0ubuntu1
2012-04-04 14:53:27 -0500 Ted Gould (696375c)
* Fixing a merge artifact
2012-04-04 14:52:14 -0500 Ted Gould (5a163f4)
* Merging Ubuntu Desktop
2012-04-04 14:39:18 -0500 Ted Gould (f9220e1)
* releasing version 0.4.95-0ubuntu1~ppa1
2012-04-04 14:35:30 -0500 Ted Gould (d431c78)
* * New upstream release. * Fix a free that shouldn't be (LP:
#969360) * Spelling mistake in error message (LP:
#948391) * Add coverage build targets * Fix building
AUTHORS and Changelog at dist time
2012-04-04 14:34:11 -0500 Ted Gould (c136bda)
* Import upstream version 0.4.95
2012-04-04 14:26:17 -0500 Ted Gould (f75080c)
* 0.4.95 (tag: 0.4.95)
2012-04-03 21:39:27 -0500 Charles Kerr (fae66e8)
* merge lp:~allanlesage/libindicator/TDD to remove a dependency on
gcovr, move gcov targets to their own makefile, and clean
up .gcno files.
2012-04-03 07:50:22 -0500 Charles Kerr (2f67706)
* merge lp:~charlesk/libindicator/lp-948391 to fix spelling/grammar
errors in an error message.
2012-04-02 18:42:07 -0500 Charles Kerr (f7eab1e)
* Fix spelling/grammar errors in an error message.
2012-04-02 08:56:49 -0500 Charles Kerr (96c35f0)
* When using g_variant_get("&s...", &string), the string must not be
free'd.
2012-04-02 11:09:19 +0200 Sebastien Bacher (4a44539)
* releasing version 0.4.94-0ubuntu2
2012-04-02 11:07:25 +0200 Sebastien Bacher (486523c)
* Revert r457 it's creating invalid free errors
2012-04-01 21:03:19 +0200 Marco Trevisan (Treviño) (a9c0407)
* Setting again the variables as const
2012-04-01 20:54:37 +0200 Marco Trevisan (Treviño) (c4b2952)
* Indicator Service Manager: we don't have to free values if got with
&s from variant
2012-03-30 09:57:26 -0400 Ken VanDine (5ce6cdf)
* releasing version 0.4.94-0ubuntu1
2012-03-30 09:36:28 -0400 Ken VanDine (63d1c95)
* * New upstream release. * Fix a leaked GError (LP: #965459) *
Fix memory leak when the proxy's name changes.
2012-03-29 13:57:09 -0700 Charles Kerr (28d27ed)
* releasing version 0.4.94-0ubuntu1~ppa1
2012-03-29 13:52:21 -0700 Charles Kerr (50933a9)
* * New upstream release. * Fix a leaked GError (LP: #965459) *
Fix memory leak when the proxy's name changes.
2012-03-29 13:50:56 -0700 Charles Kerr (4ecaca4)
* Import upstream version 0.4.94
2012-03-29 13:49:34 -0700 Charles Kerr (452f2ab)
* Sync from Ubuntu Desktop
2012-03-29 13:32:32 -0700 Charles Kerr (5a839c4)
* merge lp:~charlesk/libindicator/fix-disthook to fix auto-generation
of AUTHORS and Changelog by looking for 'missing' in the
directory where we told AC_CONFIG_AUX_DIR to put it. (tag:
0.4.94)
2012-03-29 13:16:19 -0700 Charles Kerr (2eb70f4)
* look for 'missing' in ac_aux_dir rather than top_srcdir.
2012-03-28 14:17:33 -0700 Charles Kerr (922d781)
* 0.4.94
2012-03-27 16:33:31 -0500 Allan LeSage (76fc7f0)
* Removed gcovr dependency, moved coverage targets to own makefile,
cleaning up *.gcno.
2012-03-26 09:24:33 -0700 Charles Kerr (603ad6c)
* merge lp:~htorque/libindicator/fix-small-leak to fix a GError
memory leak reported in lp bug #965459
2012-03-26 15:35:57 +0200 Hernando Torque (3440ebe)
* Free GError.
2012-03-16 15:39:11 -0500 Charles Kerr (742fa8c)
* fix minor memory leak when the proxy name changes
2012-03-08 21:57:54 +0100 Sebastien Bacher (9a23466)
* releasing version 0.4.93-0ubuntu1
2012-03-07 14:14:09 -0600 Ted Gould (bbbe42a)
* releasing version 0.4.93-0ubuntu1~ppa1
2012-03-07 14:11:47 -0600 Ted Gould (e34b660)
* * New upstream release. * Fix branching past initialization of
variables (LP: #939061) * Support new FD.o Desktop
Actions (LP: #942042) * Fix valgrind error on unload
(LP: #719457)
2012-03-07 14:08:40 -0600 Ted Gould (67872e2)
* Import upstream version 0.4.93
2012-03-07 14:08:16 -0600 Ted Gould (c83d72a)
* Merging in U. Desktop
2012-03-07 14:01:26 -0600 Ted Gould (18d670b)
* 0.4.93 (tag: 0.4.93)
2012-03-05 13:13:33 -0600 Charles Kerr (9dcb929)
* merge lp:~ted/libindicator/lp719457 for Bug #719457
2012-03-02 10:55:05 -0600 Ted Gould (039c7d8)
* Attaching bug
2012-03-02 10:54:50 -0600 Ted Gould (c3bd07e)
* Copying the name before using it to remove as it seems that the
unwatch can cause the name to be free'd in some cases.
Odd, but valgrind can find it
2012-03-02 10:01:59 -0600 Ted Gould (dbaf540)
* Support new FD.o Desktop Actions
2012-03-02 13:18:44 +0100 Sebastien Bacher (94c7bd6)
* releasing version 0.4.92-0ubuntu2
2012-03-02 12:08:04 +0100 Sebastien Bacher (0c90dd3)
* Backport support for the fdo desktop action spec, that's required
to get unity lists to work with the new syntax (lp:
#942042)
2012-02-29 17:50:40 -0600 Charles Kerr (54a3d1d)
* lp:~charlesk/libindicator/fix-939061
2012-02-29 14:58:03 -0600 Charles Kerr (9e2278a)
* silence Coverity warning "PW.BRANCH_PAST_INITIALIZATION - CID
10615" reported in Bug #939061
2012-02-29 14:55:23 -0600 Charles Kerr (b645480)
* tweak: use g_clear_object() instead of if-not-null-g_object_unref()
2012-02-27 15:08:19 -0600 Ted Gould (a69f559)
* Get the right group in exec too!
2012-02-27 15:05:40 -0600 Ted Gould (f6d6509)
* Handling the different group names when getting the name as well
2012-02-27 15:03:43 -0600 Ted Gould (8c71262)
* Update test desktop file
2012-02-27 14:40:08 -0600 Ted Gould (19c48bd)
* Creating a warning for the legacy support
2012-02-27 14:38:21 -0600 Ted Gould (7d3e660)
* Adding a value for whether it should use the TargetEnvironment, I'm
removing the warning because we don't care to fix old
stuff anymore
2012-02-27 14:34:52 -0600 Ted Gould (52c42ef)
* Use the appropriate list of nicks and groups to find our data now
2012-02-27 14:25:21 -0600 Ted Gould (4baf9b7)
* Figure out what kind of actions we have
2012-02-27 13:39:44 -0600 Ted Gould (f7e5502)
* Adding a state variable to track what kind of actions we have
2012-02-27 13:32:43 -0600 Ted Gould (a02d4de)
* Attaching bug
2012-02-27 13:32:25 -0600 Ted Gould (55b0614)
* Changing our defines around to make sure to mark things the way
that we think about them.
2012-02-23 12:28:01 +0100 Sebastien Bacher (f6f9209)
* releasing version 0.4.92-0ubuntu1
2012-02-23 12:26:18 +0100 Sebastien Bacher (efe75e4)
* Merging shared upstream rev into target branch.
2012-02-23 12:26:17 +0100 Sebastien Bacher (cfa1adf)
* Prepared upstream tree for merging into target branch.
2012-02-23 12:25:39 +0100 Sebastien Bacher (164055c)
* Merging shared upstream rev into target branch.
2012-02-23 12:25:38 +0100 Sebastien Bacher (e305ff2)
* Prepared upstream tree for merging into target branch.
2012-02-23 00:27:41 -0600 Ted Gould (c28e242)
* releasing version 0.4.92-0ubuntu1~ppa1
2012-02-23 00:25:48 -0600 Ted Gould (27b2576)
* * New upstream release. * Removing unenforcable consts (LP:
#937387) * Explicitly add in gmodule as a required
library
2012-02-23 00:23:40 -0600 Ted Gould (169093d)
* Import upstream version 0.4.92
2012-02-23 00:23:06 -0600 Ted Gould (87c4364)
* Merge with U. Desktop
2012-02-23 00:22:12 -0600 Ted Gould (1474099)
* Merging shared upstream rev into target branch.
2012-02-23 00:22:12 -0600 Ted Gould (c88ba65)
* Prepared upstream tree for merging into target branch.
2012-02-23 00:21:27 -0600 Ted Gould (4de00dd)
* Merging shared upstream rev into target branch.
2012-02-23 00:21:27 -0600 Ted Gould (54b8584)
* Prepared upstream tree for merging into target branch.
2012-02-23 00:18:35 -0600 Ted Gould (69f15f7)
* 0.4.92 (tag: 0.4.92)
2012-02-22 22:54:56 -0600 Ted Gould (f29a183)
* Remove unenforcable consts
2012-02-22 12:19:26 -0600 Ted Gould (fef88fa)
* Attaching bug
2012-02-22 12:18:01 -0600 Ted Gould (975ee36)
* Removing unenforcable consts
2012-02-15 13:13:03 +0100 Sebastien Bacher (55ae526)
* releasing version 0.4.91-0ubuntu3
2012-02-15 13:09:01 +0100 Sebastien Bacher (a6436f6)
* Restore revision dropped by error, not sure what happened with the
vcs
2012-02-15 12:46:44 +0100 Sebastien Bacher (461dbdc)
* releasing version 0.4.91-0ubuntu2
2012-02-15 12:45:46 +0100 Sebastien Bacher (2ac2e54)
* Merging shared upstream rev into target branch.
2012-02-15 12:45:45 +0100 Sebastien Bacher (93e5e7e)
* Prepared upstream tree for merging into target branch.
2012-02-14 21:11:44 -0600 Ted Gould (457b502)
* releasing version 0.4.91-0ubuntu1~ppa3
2012-02-14 21:10:11 -0600 Ted Gould (4621a45)
* Adjusting timeout so it'll build on the buildds too
2012-02-14 20:51:23 -0600 Ted Gould (0cad2e2)
* Increasing the test timeout to ensure that's not our issue
2012-02-14 16:48:13 -0600 Ted Gould (e5053ae)
* releasing version 0.4.91-0ubuntu1~ppa2
2012-02-14 16:45:43 -0600 Ted Gould (17133c0)
* debian/rules: Adding messages
2012-02-14 22:35:40 +0100 Sebastien Bacher (5a2f66b)
* releasing version 0.4.91-0ubuntu1
2012-02-14 22:29:50 +0100 Sebastien Bacher (f8e24ae)
* Import upstream version 0.4.91
2012-02-14 15:19:23 -0600 Ted Gould (ee6a7f0)
* Explicitly listing gmodule as a library we're using
2012-02-14 14:29:53 -0600 Ted Gould (05f46d7)
* releasing version 0.4.91-0ubuntu1~ppa1
2012-02-14 14:27:38 -0600 Ted Gould (7f1272a)
* * debian/control, debian/rules: * Adding in autoreconf support
* Adding a check rule and requiring new build deps
2012-02-14 14:23:06 -0600 Ted Gould (36b39c9)
* debian/control, debian/rules: Adding in autoreconf support
2012-02-14 14:21:36 -0600 Ted Gould (eb803e8)
* * Upstream Merge * Explicitly add in gmodule as a required
library
2012-02-14 14:20:54 -0600 Ted Gould (45aebde)
* Explicity add gmodule in the list of required libraries
2012-02-14 11:52:00 -0600 Ted Gould (b2a5f94)
* Dropping debian/patches
2012-02-14 11:50:12 -0600 Ted Gould (40274af)
* * New upstream release. * Visibility fixes for indicators using
that functionality * Ensure that parent_object is more
aggressively set * Fix memory leak on groups of items in
desktop files
2012-02-14 11:48:37 -0600 Ted Gould (a820ba7)
* Import upstream version 0.4.91
2012-02-14 11:48:17 -0600 Ted Gould (ca8b363)
* Merge with Ubuntu Desktop
2012-02-14 11:35:11 -0600 Ted Gould (f099181)
* 0.4.91 (tag: 0.4.91)
2012-02-13 20:07:33 +0100 Lars Uebernickel (2a6c388)
* indicator_object_set_visible: only emit entry-{added,removed} when
visibility actually changed
2012-02-13 19:38:10 +0100 Lars Uebernickel (b2ca0db)
* indicator_object_dispose: remove unneeded list of entries
2012-02-13 19:15:03 +0100 Lars Uebernickel (73c0659)
* indicator_object_dispose: use _set_visible instead of
reimplementing it
2012-02-13 19:08:27 +0100 Lars Uebernickel (e7780ac)
* indicator_object_set_visible: no need to check for ENTRY_INIT
2012-02-12 13:40:21 +0100 Lars Uebernickel (5f599a8)
* indicator_object_set_visible: only emit entry-{added,removed} when
visibility actually changed
2012-02-10 11:06:22 -0600 Ted Gould (233fdd7)
* Free groupname after usage
2012-02-09 11:05:55 -0200 Daniel d'Andrada (2375490)
* Plug memory leak in parse_keyfile function.
2012-02-03 09:48:05 -0600 Ted Gould (238865c)
* Be more agressive in ensureing the parent_object value is available
everywhere.
2012-02-03 15:34:07 +0100 Marco Trevisan (Treviño) (7ae413b)
* tests, DummyIndicatorSignaler: free the allocated memory.
2012-01-26 00:37:14 -0500 Ken VanDine (b339871)
* releasing version 0.4.90-0ubuntu4 (tag: 0.4.90-0ubuntu4)
2012-01-25 18:15:08 -0500 Ken VanDine (a98a0b6)
* releasing version 0.4.90-0ubuntu3 (tag: 0.4.90-0ubuntu3)
2012-01-25 18:11:43 +0100 Marco Trevisan (Treviño) (c87aff7)
* Test loader: check also for parent changes
2012-01-25 18:11:07 +0100 Marco Trevisan (Treviño) (39cf870)
* Tests: update dummy signaler to work with real IndicatorObjectEntry
2012-01-25 18:10:29 +0100 Marco Trevisan (Treviño) (1baaf28)
* IndicatorObject: update object parent in any case.
2012-01-25 08:32:22 -0600 Ted Gould (8df8585)
* Merging with U. Desktop
2012-01-25 12:22:12 +0100 Marco Trevisan (Treviño) (c26badd)
* Added better parent_object tests.
2012-01-25 12:21:51 +0100 Marco Trevisan (Treviño) (c9df18b)
* Indicator-Object: update the parent_object value only if the entry
is valid.
2012-01-25 11:55:37 +0100 Marco Trevisan (Treviño) (0373d6f)
* IndicatorObject: correctly initialize the parent object.
2012-01-24 21:50:55 -0500 Ken VanDine (118a95a)
* releasing version 0.4.90-0ubuntu2 (tag: 0.4.90-0ubuntu2)
2012-01-24 19:30:08 -0500 Ken VanDine (6659abf)
* releasing version 0.4.90-0ubuntu1 (tag: 0.4.90-0ubuntu1)
2012-01-24 12:19:38 -0500 Ken VanDine (2d9e6ff)
* * New upstream release. * Support hiding and showing indicators
* Track the parent object in the entry * Adding activate
function to include Window ID * debian/control: Bumping
ABI version of lib
2012-01-24 10:23:26 -0600 Ted Gould (c2596f7)
* Silent bump
2012-01-24 10:17:02 -0600 Ted Gould (f64689a)
* releasing version 0.4.90-0ubuntu1~ppa1
2012-01-24 10:15:31 -0600 Ted Gould (f131f1f)
* debian/control: Bumping ABI version of lib
2012-01-24 10:10:15 -0600 Ted Gould (b00b35a)
* * New upstream release. * Support hiding and showing indicators
* Track the parent object in the entry * Adding activate
function to include Window ID
2012-01-24 10:07:33 -0600 Ted Gould (e81d0ec)
* Import upstream version 0.4.90
2012-01-24 09:54:13 -0600 Ted Gould (fe22121)
* Merging from U. Desktop
2012-01-24 09:47:32 -0600 Ted Gould (dbccdd5)
* 0.4.90 (tag: 0.4.90)
2012-01-23 22:42:02 -0600 Ted Gould (6f3976c)
* Bumping the ABI version
2012-01-23 17:00:29 -0600 Ted Gould (23e9995)
* Add visibility concept to the default indicator object
2012-01-23 16:52:52 -0600 Ted Gould (7935501)
* Put the parent pointer in the entry struct to make it easier for
the implementers of the panel side
2012-01-23 08:55:12 -0600 Charles Kerr (95daf10)
* "bzr merge lp:indicator" + conflict resolution in tests suite
2012-01-23 05:39:50 -0600 Charles Kerr (4f4190f)
* another iteration of the indicator-object visibility support patch,
incorporating ideas from discussion with ted
2012-01-20 14:02:16 -0600 Charles Kerr (8cb8b9f)
* fix bugs in IndicatorObject's visibility support.
2012-01-19 11:55:47 -0600 Ted Gould (a1ed503)
* Checking to ensure the parent_object pointer gets set
2012-01-19 11:48:32 -0600 Ted Gould (e14c087)
* Adding a warning for entries that do not set their parent_object
2012-01-19 11:46:28 -0600 Ted Gould (f2f9c5b)
* Set the parent_object on the default entry
2012-01-19 11:44:37 -0600 Ted Gould (8a739e1)
* Adding a parent object pointer to the entry
2012-01-19 10:41:20 -0600 Ted Gould (1cf6a97)
* Adding a window ID function to pass the window ID
2012-01-16 03:59:29 +0100 Ted Gould (6a0f41a)
* Moving the function into the tester to making linking simpler
2012-01-16 03:45:00 +0100 Ted Gould (f898563)
* Adding a test to look to make sure the fallback works
2012-01-14 10:51:55 +0100 Ted Gould (2dfe3ff)
* Add a function to swap out the window entry handler
2012-01-14 10:33:29 +0100 Ted Gould (da798a2)
* Getting the header in dist
2012-01-14 10:30:22 +0100 Ted Gould (7586398)
* Adding a test functioin for the entry func demmy indicator
2012-01-14 10:07:43 +0100 Ted Gould (b7c8a63)
* Mark the entry functions as called
2012-01-13 17:00:47 +0100 Ted Gould (efcb3e6)
* Setting up entry functions
2012-01-13 16:52:42 +0100 Ted Gould (530b211)
* Adding some public values to know if functions were called
2012-01-13 16:48:52 +0100 Ted Gould (347ab41)
* Moving things into a shared header
2012-01-13 16:38:58 +0100 Ted Gould (68c1666)
* Build a new dummy indicator
2012-01-13 16:09:40 +0100 Ted Gould (e3ce551)
* Adding test coverage checking
2012-01-13 15:34:48 +0100 Ted Gould (0419bac)
* Clearing the entry function pointers
2012-01-13 15:25:42 +0100 Ted Gould (a88097a)
* Handling the activate_window function and going up the stack
2012-01-13 15:07:18 +0100 Ted Gould (a6ed65a)
* Documenting what this stuff does
2012-01-13 15:01:01 +0100 Ted Gould (2bb19db)
* Adding an activate window function, that can also be virtual!
2012-01-13 13:04:25 +0100 Ted Gould (976209f)
* Ignoring all the stuff we build
2012-01-13 13:00:34 +0100 Ted Gould (b58d9bf)
* Putting the GTK3 headers in a different directory
2012-01-13 12:56:50 +0100 Ted Gould (c3c1ebb)
* Adding ability to disable tests
2012-01-13 05:54:17 +0100 Charles Kerr (c52fbaa)
* Better implementation.
2012-01-12 14:51:30 +0100 Charles Kerr (d3392a9)
* initial revision for GSettings/GtkMenu visibility support
2011-12-06 15:21:45 -0600 Allan LeSage (b1aebe5)
* Added coverage reporting via gcov config and targets.
2011-11-22 14:39:48 -0500 Ken VanDine (30ab1ed)
* * debian/control - set ubuntu-desktop VCS and maintainer
2011-11-22 14:37:23 -0500 Ken VanDine (f1c0aaf)
* releasing version 0.4.1-1 (tag: 0.4.1-1)
2011-11-20 02:19:45 +0100 György Balló (d126352)
* Use different directory for headers of gtk3 library
2011-11-20 02:17:19 +0100 György Balló (c0ac60b)
* Make building tests optional
2011-09-28 12:14:30 -0400 Ken VanDine (5834d28)
* releasing version 0.4.1-0ubuntu1 (tag: 0.4.1-0ubuntu1)
2011-09-28 12:11:57 -0400 Ken VanDine (1a1fa5b)
* * New upstream release. * Ensure loader doesn't use menu proxy
2011-09-28 10:51:11 -0500 Ted Gould (80e619f)
* releasing version 0.4.1-0ubuntu1~ppa1
2011-09-28 10:48:44 -0500 Ted Gould (86103c5)
* * New upstream release. * Ensure loader doesn't use menu proxy
2011-09-28 10:48:20 -0500 Ted Gould (e36cd22)
* Import upstream version 0.4.1
2011-09-28 10:47:59 -0500 Ted Gould (e33473c)
* Merge U. Desktop
2011-09-28 10:45:04 -0500 Ted Gould (a5c7874)
* 0.4.1 (tag: 0.4.1)
2011-09-20 09:37:24 -0700 Ken VanDine (4993a3c)
* releasing version 0.4.0-0ubuntu1 (tag: 0.4.0-0ubuntu1)
2011-09-20 08:55:00 -0700 Ken VanDine (ceba790)
* * New upstream release. * Add libm to linking to fix FTBFS (LP:
#840514)
2011-09-20 10:12:21 -0500 Ted Gould (6c215ec)
* Make sure our menus don't get proxied
2011-09-19 21:54:34 -0500 Ted Gould (2867575)
* releasing version 0.4.0-0ubuntu1~ppa1
2011-09-19 21:44:03 -0500 Ted Gould (0ab41b7)
* * New upstream release. * Add libm to linking to fix FTBFS (LP:
#840514)
2011-09-19 21:43:09 -0500 Ted Gould (0b4f5b3)
* Import upstream version 0.4.0
2011-09-19 21:42:40 -0500 Ted Gould (8ec147c)
* Merging in U. Desktop
2011-09-19 21:33:28 -0500 Ted Gould (f8f310d)
* 0.4.0 (tag: 0.4.0)
2011-09-16 16:50:46 -0500 Ted Gould (fff5af0)
* Add in libm
2011-09-03 19:48:30 +0200 Evgeni Golov (240eaf6)
* find and link libm
2011-09-01 14:22:14 -0700 Steve Langasek (130ebff)
* releasing version 0.3.93-0ubuntu2 (tag: 0.3.93-0ubuntu2)
2011-09-01 14:22:10 -0700 Steve Langasek (604acbf)
* Drop the Breaks: against old versions of libindicator and
libindicator3; there are no file conflicts between the
libraries, so this doesn't accurately reflect the package
relationships but does make it harder to calculate
upgrades from natty. LP: #839098.
2011-08-11 21:27:40 +0200 Sebastien Bacher (4db9d2e)
* releasing version 0.3.93-0ubuntu1 (tag: 0.3.93-0ubuntu1)
2011-08-11 21:20:42 +0200 Sebastien Bacher (871b89e)
* * New upstream release.
2011-08-11 09:44:48 -0500 Ted Gould (5600252)
* releasing version 0.3.93-0ubuntu1~ppa1
2011-08-11 09:43:07 -0500 Ted Gould (0aaf53b)
* * New upstream release. * Rescan icon theme if icon can't be
loaded
2011-08-11 09:42:37 -0500 Ted Gould (7b63153)
* Import upstream version 0.3.93
2011-08-11 09:17:29 -0500 Ted Gould (e2b7e82)
* 0.3.93 (tag: 0.3.93)
2011-08-10 21:11:23 -0500 Ted Gould (0a66155)
* Check a reload of the icon theme if needed
2011-08-02 15:37:50 +0200 Aurelien Gateau (1790510)
* Ask GTK to rescan the icon theme if the wanted icon cannot be
found.
2011-07-29 09:13:48 -0500 Ted Gould (a51845f)
* Don't make a new include directory based on GTK version
2011-07-21 13:14:27 -0400 Ken VanDine (8ee4d7d)
* releasing version 0.3.92-0ubuntu1 (tag: 0.3.92-0ubuntu1)
2011-07-21 13:06:29 -0400 Ken VanDine (24063df)
* setting to UNRELEASED
2011-07-21 12:30:30 -0400 Ken VanDine (7c76a87)
* * New upstream release. * Adding support for a secondary activate
signal
2011-07-21 10:39:12 -0500 Ted Gould (23239f8)
* releasing version 0.3.92-0ubuntu1~ppa1
2011-07-21 10:37:35 -0500 Ted Gould (6c59bf9)
* Merge with U. Desktop
2011-07-21 10:19:28 -0500 Ted Gould (056b8a5)
* * New upstream release. * Adding support for a secondary activate
signal
2011-07-21 10:19:02 -0500 Ted Gould (5d457c5)
* Import upstream version 0.3.92
2011-07-21 10:04:21 -0500 Ted Gould (e27e7f6)
* Making sure the lib builds before the tests or tools
2011-07-21 10:00:54 -0500 Ted Gould (0cee12c)
* 0.3.92 (tag: 0.3.92)
2011-07-21 09:18:42 -0500 Ted Gould (d3de40a)
* Adding in secondary activate support
2011-07-21 09:17:41 -0500 Ted Gould (4234bd3)
* Dropping the x and y paramaters from the secondary activate signal
2011-07-15 09:43:58 -0400 Ken VanDine (69b8236)
* releasing version 0.3.91-0ubuntu1 (tag: 0.3.91-0ubuntu1)
2011-07-15 09:00:15 -0400 Ken VanDine (2801a02)
* * New upstream release. * Fix signals with NULL entries in the
loader * Adding a comment for setting up debugging
options * Adding annotations for GIR files * Fixing
watchers hashtable to detect when we have none * Fix
testing so no tests are XFAIL anymore * Adding a replace
mode for testing indicator services * Watching new
services when the name switches
2011-07-14 13:37:44 -0500 Ted Gould (8641c27)
* releasing version 0.3.91-0ubuntu1~ppa1
2011-07-14 13:34:38 -0500 Ted Gould (d2d9780)
* * New upstream release. * Watching new services when the name
switches
2011-07-14 13:33:11 -0500 Ted Gould (6032a84)
* Import upstream version 0.3.91
2011-07-14 13:09:21 -0500 Ted Gould (c6d763c)
* 0.3.91 (tag: 0.3.91)
2011-07-14 13:08:31 -0500 Ted Gould (a6ea476)
* Fixing the libindicator test suite
2011-07-12 15:23:50 -0500 Ted Gould (445e65a)
* Adding an env variable to put a service in replace mode
2011-07-12 14:36:45 -0500 Ted Gould (7989399)
* releasing version 0.3.90-0ubuntu2~ppa2
2011-07-12 14:35:40 -0500 Ted Gould (45d7404)
* * Upstream Merge * Watching new services when the name switches
2011-07-12 14:34:50 -0500 Ted Gould (2e66ca5)
* Watching when we do name switches
2011-07-12 10:59:17 -0500 Ted Gould (aad5364)
* releasing version 0.3.90-0ubuntu2~ppa1
2011-07-12 10:56:46 -0500 Ted Gould (37c5aa9)
* Adding a replace mode for testing indicator services
2011-07-12 10:55:10 -0500 Ted Gould (522f3c0)
* * Fixing watchers hashtable to detect when we have none * Fix
testing so no tests are XFAIL anymore
2011-07-12 10:54:18 -0500 Ted Gould (3d6738f)
* * Upstream Merge * Fix signals with NULL entries in the loader
* Adding a comment for setting up debugging options *
Adding annotations for GIR files
2011-07-12 10:50:11 -0500 Ted Gould (8b9fa18)
* Merging in U. Desktop
2011-07-12 10:46:35 -0500 Ted Gould (1838bfc)
* Adding in the shutdown function
2011-07-12 10:43:45 -0500 Ted Gould (5de36e3)
* In replace mode we need to ask the other guy to shutdown and still
wait for the name a bit.
2011-07-12 10:14:12 -0500 Ted Gould (b412bfe)
* Adding in a property for being in replace mode
2011-07-11 17:01:12 -0500 Ted Gould (64c3e2e)
* Cleaning up removal of watchers as the string was getting free'd
before it could get used to remove the entry from the
hashtable. Now using a destroy function as that is
possible with GDBus but wasn't with dbus-glib
2011-07-11 16:34:48 -0500 Ted Gould (269f1a1)
* Define the bus well known type in the session.conf file
2011-07-11 16:06:10 -0500 Ted Gould (0c3a685)
* Add the PC file instead of replace it
2011-07-11 16:00:12 -0500 Ted Gould (ee27186)
* Handle NULL entries without crashing
2011-07-09 03:39:10 +0200 Marco Trevisan (Treviño) (6f1c8e0)
* Added support for secondary activate signal: i.e. middle-click
2011-07-07 23:38:34 -0500 Ted Gould (ca29a76)
* Installing the debugging env entries in shared directory instead of
the executable one.
2011-07-07 23:36:22 -0500 Ted Gould (2016fdf)
* Fixing doc string
2011-07-07 23:34:49 -0500 Ted Gould (d7f14c3)
* Anotating the get entires function properly.
2011-07-08 03:03:00 +0200 Marco Trevisan (Treviño) (5f78a77)
* Merging with trunk
2011-07-08 10:39:59 +1000 Robert Ancell (801419b)
* Annotate the return value of indicator_object_get_entries so that
the type in the list is known, also fix typo in docstring
2011-07-07 11:12:59 -0400 Ken VanDine (b414e0f)
* releasing version 0.3.90-0ubuntu1 (tag: 0.3.90-0ubuntu1)
2011-07-07 10:55:25 -0400 Ken VanDine (c292980)
* * debian/rules - Simplify the dual builds with cdbs - Fixed
package names to match soname * debian/*.install fixed
paths to work with the dual builds change *
tools/Makefile.in - Fixed path for xsessiondir *
debian/control - Fixed package names to match soname
2011-07-07 10:38:35 -0400 Ken VanDine (d23b4e8)
* Make xsessiondir = $(pkgdatadir)
2011-07-07 10:11:32 -0400 Ken VanDine (95d709f)
* * New upstream release. * Build Fixes * Adding license to test
files (LP: #684886) * Bump API/ABI versions
appropriately and make easier to edit them in the
future * Adding a name-hint to the indicator entries *
Merging scroll functions into a single good one (LP:
#804618) * debian/*install, control: Changing ABI version
number bump in package names * debian/rules: Making GTK2
the special case as GTK3 is default now * debian/*install:
Fixing pkgconfig file names
2011-07-07 10:09:23 -0400 Ken VanDine (dedf43d)
* Changed to help message for --with-gtk to reflect the new default
2011-07-07 08:30:15 -0500 Ted Gould (352c01a)
* Making the box function conditional on GTK version
2011-07-07 08:29:41 -0500 Ted Gould (8677620)
* releasing version 0.3.90-0ubuntu1~ppa1
2011-07-07 08:25:26 -0500 Ted Gould (1e09013)
* Fixing the box usage
2011-07-07 08:25:11 -0500 Ted Gould (14cdff4)
* Handling the right box for the right version of GTK
2011-07-07 00:40:51 -0500 Ted Gould (24123eb)
* debian/*install: Fixing pkgconfig file names
2011-07-07 00:38:18 -0500 Ted Gould (f44a6bc)
* * debian/*install, control: Changing ABI version number bump in
package names * debian/rules: Making GTK2 the special case
as GTK3 is default now
2011-07-07 00:32:12 -0500 Ted Gould (709208d)
* * New upstream release. * Build Fixes * Adding license to test
files (LP: #684886) * Bump API/ABI versions
appropriately and make easier to edit them in the
future * Adding a name-hint to the indicator entries *
Merging scroll functions into a single good one (LP:
#804618)
2011-07-07 00:28:26 -0500 Ted Gould (c103417)
* Import upstream version 0.3.90
2011-07-06 16:35:52 -0500 Ted Gould (9cca8d7)
* 0.3.90 (tag: 0.3.90)
2011-07-06 16:35:49 -0500 Ted Gould (cce6c17)
* Cleaning up the built pc file
2011-07-06 16:33:09 -0500 Ted Gould (6f2f147)
* Switch to using gtk_box_new()
2011-07-06 16:30:16 -0500 Ted Gould (fb0fab8)
* Making some test XFAIL and attaching to bugs
2011-07-06 16:14:20 -0500 Ted Gould (b0f700d)
* Adding headers to tests
2011-07-06 16:11:29 -0500 Ted Gould (2d3893c)
* Adding license info to [ch] files
2011-07-06 15:50:48 -0500 Ted Gould (9a18c1c)
* Sync to U. Desktop
2011-07-06 15:34:38 -0500 Ted Gould (02fb5cb)
* Changing the API and ABI versioning slightly
2011-07-06 15:34:19 -0500 Ted Gould (e2a324a)
* Adding in the name hint for the indicators
2011-07-05 22:29:32 -0500 Ted Gould (173c8a7)
* Setting default GTK version to 3
2011-07-05 22:27:48 -0500 Ted Gould (f5575b5)
* Changing the pkgconfig file version to include the API version
2011-07-05 16:18:56 -0500 Ted Gould (f837b4b)
* Clearing our local name_hint and ensuring we fill it if a function
is provided.
2011-07-05 16:15:14 -0500 Ted Gould (26c580f)
* Adding a get name hint function as well.
2011-07-05 16:13:05 -0500 Ted Gould (7797504)
* Adding the naming hint to the entry structure
2011-07-05 15:05:49 -0500 Ted Gould (746cf4e)
* Making the API and ABI versions variables
2011-07-05 14:58:15 -0500 Ted Gould (f3dc285)
* Adding another level of .in for the pc files.
2011-07-05 14:29:50 -0500 Ted Gould (5a535d1)
* Switching to single scrolling event.
2011-07-02 04:13:05 +0200 Marco Trevisan (Treviño) (8881229)
* Merging "scroll" and "scroll-entry" into the "entry-scrolled"
signal
2011-06-29 11:06:26 +0100 Ken VanDine (36fb97c)
* releasing version 0.3.22-0ubuntu2 (tag: 0.3.22-0ubuntu2)
2011-06-16 13:38:12 -0500 Ted Gould (5fdfbbe)
* Updating autotools
2011-06-15 16:18:37 +0100 Javier Jardón (9adf0b1)
* configure.ac: Generate xz tarballs with pax format by default
2011-06-15 16:17:57 +0100 Javier Jardón (c8c7cf8)
* Update autotools configuration
2011-03-23 16:33:53 -0400 Ken VanDine (052a740)
* releasing version 0.3.22-0ubuntu1 (tag: 0.3.22-0ubuntu1)
2011-03-23 13:21:52 -0500 Ted Gould (97e2fed)
* releasing version 0.3.22-0ubuntu1~ppa1
2011-03-23 13:19:36 -0500 Ted Gould (47a97e2)
* New upstream release. object is in. (LP: #703555)
2011-03-23 13:17:30 -0500 Ted Gould (50607d3)
* Import upstream version 0.3.22
2011-03-23 13:13:28 -0500 Ted Gould (f9f5cee)
* 0.3.22 (tag: 0.3.22)
2011-03-23 10:44:01 -0500 Ted Gould (6f1e50b)
* Adding API to know what the environment the indicator is in
2011-03-22 15:03:30 -0500 Ted Gould (a774a41)
* releasing version 0.3.21-0ubuntu2~ppa1
2011-03-22 14:59:41 -0500 Ted Gould (118b8f0)
* * Upstream Merge * Adding the ability to know the environment the
indicator object is in.
2011-03-22 14:59:00 -0500 Ted Gould (a075227)
* Sync U. Desktop
2011-03-22 10:57:30 -0500 Ted Gould (a995a11)
* Adding a nice little checking function
2011-03-22 10:51:19 -0500 Ted Gould (5712d44)
* Adding an environments variable and make a lifecycle for it.
2011-03-22 10:46:53 -0500 Ted Gould (8673e8f)
* Getting some stub functions in
2011-03-22 10:42:30 -0500 Ted Gould (baf04be)
* Making the environments a list of strings
2011-03-16 15:52:46 -0400 Ken VanDine (1b0f902)
* releasing version 0.3.21-0ubuntu1 (tag: 0.3.21-0ubuntu1)
2011-03-16 13:29:24 -0500 Ted Gould (b36a867)
* releasing version 0.3.21-0ubuntu1~ppa1
2011-03-16 13:23:15 -0500 Ted Gould (c393bc6)
* New upstream release. ∘ Don't check for TargetEnvironment on the
desktop group
2011-03-16 13:22:24 -0500 Ted Gould (e2b7096)
* Import upstream version 0.3.21
2011-03-16 13:21:56 -0500 Ted Gould (54ae143)
* Merge with U. Desktop
2011-03-16 13:17:22 -0500 Ted Gould (c245779)
* 0.3.21 (tag: 0.3.21)
2011-03-16 11:14:43 -0500 Ted Gould (bbae0db)
* Fix checking for target environment on the desktop group
2011-03-16 11:08:28 -0500 Ted Gould (690ffa9)
* Make sure not to use TargetEnvironment on the desktop group
2011-03-03 17:21:07 -0500 Ken VanDine (5b51dc5)
* releasing version 0.3.20-0ubuntu1 (tag: 0.3.20-0ubuntu1)
2011-03-03 14:02:16 -0600 Ted Gould (879dc15)
* releasing version 0.3.20-0ubuntu1~ppa1
2011-03-03 13:59:38 -0600 Ted Gould (53895da)
* * New upstream release. * Use the "TargetEnvironment" key in
shortcuts
2011-03-03 13:59:07 -0600 Ted Gould (48d8752)
* Import upstream version 0.3.20
2011-03-03 13:52:38 -0600 Ted Gould (12047a5)
* 0.3.20 (tag: 0.3.20)
2011-03-03 12:46:55 -0600 Ted Gould (dd2660b)
* Use the TargetEnvironment key
2011-03-03 12:43:50 -0600 Ted Gould (440c893)
* Merging in Robert's branch
2011-03-03 12:40:32 -0600 Ted Gould (f0e21d0)
* Merge from U. Desktop
2011-03-02 13:57:04 -0600 Ted Gould (61e9b95)
* Removing warning that there are no shortcuts, that's a valid thing
to have.
2011-03-02 13:55:16 -0600 Ted Gould (9b34e7c)
* Adding a target environment key and checking for that over others.
2011-02-23 12:09:25 -0500 Ken VanDine (f417427)
* releasing version 0.3.19-0ubuntu3 (tag: 0.3.19-0ubuntu3)
2011-02-23 08:50:33 -0500 Ken VanDine (58dbd1d)
* releasing version 0.3.19-0ubuntu2 (tag: 0.3.19-0ubuntu2)
2011-02-23 10:47:05 +1100 unknown (38d7280)
* * debian/control: - Use new GTK3 package naming
2011-02-17 15:30:58 -0500 Ken VanDine (04397e7)
* releasing version 0.3.19-0ubuntu1 (tag: 0.3.19-0ubuntu1)
2011-02-17 10:27:18 -0600 Ted Gould (6ca27e8)
* releasing version 0.3.19-0ubuntu1~ppa1
2011-02-17 10:25:54 -0600 Ted Gould (4447040)
* debian/control: Adding Breaks for the previous library rev so that
users don't end up with systems that use both.
2011-02-17 10:23:46 -0600 Ted Gould (2dae441)
* debian/*: Changing the library major version from 2 to 3
2011-02-17 10:21:37 -0600 Ted Gould (20ef744)
* New upstream release. ∘ Adding in a11y description support ∘ Fixing
distcheck (LP: #587811)
2011-02-17 10:19:45 -0600 Ted Gould (7840128)
* Import upstream version 0.3.19
2011-02-17 10:19:15 -0600 Ted Gould (6c89ab0)
* Merging in U.Desktop
2011-02-17 09:58:30 -0600 Ted Gould (27d0798)
* 0.3.19 (tag: 0.3.19)
2011-02-16 15:44:07 -0600 Ted Gould (0cfa5a8)
* Returning reserveds as we're breaking ABI anyway
2011-02-16 15:40:14 -0600 Ted Gould (518f847)
* Bumping the major version of the lib and the indicator directory
2011-02-16 15:10:23 -0600 Ted Gould (01fe1bc)
* Merging support for having an accessible description
2011-02-16 14:46:36 -0600 Ted Gould (2b78c2f)
* Fixing makefile to include all the necissary files in dist
2011-02-15 14:32:46 -0600 Ted Gould (e137b60)
* Adding the service.in files as well
2011-02-15 09:30:34 -0600 Sebastien Bacher (27cdc75)
* Add session.conf.in to dist
2011-02-08 14:28:50 +1100 Luke Yelavich (a512745)
* accessible_name -> accessible_desc in tests as well
2011-02-08 14:25:10 +1100 Luke Yelavich (f593012)
* * accessible_name -> accessible_desc to better reflect the use of
the content. * Add accessible-desc-update signal so that
indicators can tell indicator-applet/unity that the
accessible description has changed
2011-02-01 17:49:23 +1100 Luke Yelavich (855d354)
* use const gchar for variable and prototype
2011-02-01 17:37:15 +1100 Luke Yelavich (d50d1bb)
* Merge from trunk
2011-01-27 16:43:49 -0500 Ken VanDine (326b5bf)
* releasing version 0.3.18-0ubuntu1 (tag: 0.3.18-0ubuntu1)
2011-01-27 15:31:07 -0600 Ted Gould (1246174)
* releasing version 0.3.18-0ubuntu1~ppa1
2011-01-27 15:29:13 -0600 Ted Gould (4a4ca1e)
* debian/rules: Updating shlibs
2011-01-27 15:28:42 -0600 Ted Gould (517ff3c)
* * New upstream release. * Adding a signal for scrolling that
includes the entry
2011-01-27 15:27:43 -0600 Ted Gould (b22f471)
* Import upstream version 0.3.18
2011-01-27 15:14:17 -0600 Ted Gould (9ac5519)
* 0.3.18 (tag: 0.3.18)
2011-01-27 15:13:47 -0600 Ted Gould (ded377c)
* Adding a signal for scrolling that includes the entry
2011-01-27 12:24:00 +0100 Marco Trevisan (Treviño) (d903523)
* Removed typo in code.
2011-01-27 00:12:42 +0100 Marco Trevisan (Treviño) (5873fe7)
* Added support for "signal-entry" signal
2011-01-18 16:50:37 +1100 Luke Yelavich (9215e19)
* Add accessible_name variable in indicator entry structure
2011-01-14 11:09:38 -0600 Ted Gould (7f4196b)
* releasing version 0.3.17-0ubuntu1~ppa1
2011-01-14 11:06:08 -0600 Ted Gould (5400cb9)
* Sync to Ubuntu Desktop
2011-01-14 11:05:06 -0600 Ted Gould (b5161b9)
* * New upstream release. * Fixing catching services dropping off
2011-01-14 11:03:09 -0600 Ted Gould (fde4196)
* Import upstream version 0.3.17
2011-01-14 10:55:39 -0600 Ted Gould (ab0f0ab)
* 0.3.17 (tag: 0.3.17)
2011-01-13 23:03:24 -0600 Ted Gould (afe5430)
* Use dbus name watches instead of g-owner-change signal for watching
for restarts.
2011-01-13 16:05:26 -0600 Michael Terry (084d3e8)
* use actual DBus NameOwnerChanged interface rather than GDBus's
higher level signal because that one only works for
well-known names
2011-01-13 16:04:53 -0600 Michael Terry (4098f74)
* fix basename issue when make is given full path
2011-01-13 15:00:23 -0600 Sebastien Bacher (3814e3d)
* releasing version 0.3.16-0ubuntu1 (tag: 0.3.16-0ubuntu1)
2011-01-13 12:49:29 -0600 Ted Gould (b988044)
* releasing version 0.3.16-0ubuntu1~ppa1
2011-01-13 12:47:47 -0600 Ted Gould (3f20962)
* Syncing to upstream
2011-01-13 12:46:07 -0600 Ted Gould (917061a)
* New upstream release.
2011-01-13 12:43:15 -0600 Ted Gould (22a9ca4)
* Import upstream version 0.3.16
2011-01-13 12:41:49 -0600 Ted Gould (ee32949)
* 0.3.16 (tag: 0.3.16)
2011-01-10 12:00:43 -0600 Ted Gould (cf88225)
* releasing version 0.3.15-0ubuntu3~ppa2
2011-01-10 11:55:10 -0600 Ted Gould (bd88281)
* Final GDBus port
2011-01-10 11:54:57 -0600 Ted Gould (990356c)
* debian/control: Dropping dbus-glib as a build-dep
2011-01-10 11:52:43 -0600 Ted Gould (6a01298)
* * Upstream Merge: * GDBus Port * autogen.sh * debian/control:
Migrating library versions from 1 to 2
2011-01-10 10:21:35 -0600 Ted Gould (38af4e8)
* Adding a signal for the menu being closed.
2011-01-10 10:19:52 -0600 Ted Gould (2b6655f)
* Fixing doc strings
2011-01-10 10:17:04 -0600 Ted Gould (48db67a)
* Porting to GDBus
2011-01-09 17:08:21 -0600 Ted Gould (2bf1edb)
* Making the test suite compile again
2011-01-09 17:06:45 -0600 Ted Gould (4a3d68b)
* Using the GCancellable to detect if we're already creating a proxy
so that we don't do it twice.
2011-01-09 16:58:41 -0600 Ted Gould (664e39b)
* Using variant_unref instead of object_unref as it's a variant
2011-01-09 15:44:19 -0600 Ted Gould (a17110e)
* Adding a virtual function for closing the menu and a wrapper for
it.
2011-01-09 15:03:14 -0600 Ted Gould (f8bea0d)
* releasing version 0.3.15-0ubuntu3~ppa2~gdbus1
2011-01-09 15:01:36 -0600 Ted Gould (48fb94f)
* Reverting this change made by distro
2011-01-09 14:31:00 -0600 Ted Gould (bea872d)
* Marshaller fixes
2011-01-09 14:29:54 -0600 Ted Gould (13a284f)
* Might need these
2011-01-09 14:21:19 -0600 Ted Gould (7404425)
* debian/control: Migrating library versions from 1 to 2
2011-01-09 14:18:24 -0600 Ted Gould (c6cd9bb)
* autogen.sh
2011-01-09 14:14:58 -0600 Ted Gould (6b2531c)
* * Upstream Merge: * GDBus Port
2011-01-09 13:56:02 -0600 Ted Gould (8d3f43f)
* Making getting the proxy and watching cancellable so that we don't
get weird crashes.
2011-01-09 13:34:51 -0600 Ted Gould (2fb32b9)
* Adding in the ability to cancel the connection on short lived
objects.
2011-01-07 23:40:07 -0600 Ted Gould (9911397)
* Removing a test that is broken at a lower level
2011-01-07 23:39:35 -0600 Ted Gould (64ef206)
* Disabling the launch test temporarily as it seems broken in GLib
2011-01-07 23:32:20 -0600 Ted Gould (ac7444c)
* Getting test suite build fixes
2011-01-07 23:32:06 -0600 Ted Gould (dc5880f)
* Syncing up to trunk
2011-01-07 23:27:36 -0600 Ted Gould (2bbbabc)
* Switching to the session bus
2011-01-07 23:26:05 -0600 Ted Gould (32515c5)
* Out of order parameters.
2011-01-07 23:17:19 -0600 Ted Gould (e837ae5)
* Fixing the linking of the tests to the right libs
2011-01-07 22:43:36 -0600 Ted Gould (20f3cbb)
* Adding in creating the interface info from the XML files
2011-01-07 22:42:16 -0600 Ted Gould (70bfa89)
* Replacing the service proxy with a brand new GDBus one
2011-01-07 20:01:37 -0600 Ted Gould (a6e9bff)
* Ignoring the new files
2011-01-07 16:44:03 -0600 Ted Gould (037ed98)
* Removing the bus and dbus_proxy variables as we won't need them
anymore.
2011-01-07 16:37:42 -0600 Ted Gould (9552d2d)
* Switching around headers to the new world order
2011-01-07 16:12:43 -0600 Ted Gould (33afd01)
* Instead of setting up a proxy to watch the watcher we're setting up
a bus name watch on each one.
2011-01-07 15:35:34 -0600 Ted Gould (991b87f)
* Little clean-ups the compiler found now that it's more happy.
2011-01-07 14:58:52 -0600 Ted Gould (2696619)
* Switch over to getting the GDBus bus instead of the dbus-glib one
2011-01-07 14:22:17 -0600 Ted Gould (d75fce1)
* Removing unused prototypes
2011-01-07 14:21:44 -0600 Ted Gould (4607834)
* Fleshing out the bus_method_call functions and tying them into the
traditional start points from dbus.
2011-01-07 13:52:27 -0600 Ted Gould (30703e3)
* Switching the way that we get a name on dbus and removing the
dbus_proxy which was used for this previously.
2011-01-07 12:59:25 -0600 Ted Gould (844bccb)
* Setting up the VTable
2011-01-07 12:43:29 -0600 Ted Gould (6ff24e1)
* Switching the registration of the object over.
2011-01-07 10:55:06 -0600 Ted Gould (0627083)
* Parsing the XML file for the interface description on class init
2011-01-07 10:23:39 -0600 Ted Gould (55ae3fd)
* Removing the dbus-glib headers
2011-01-07 10:18:42 -0600 Ted Gould (977ed23)
* Changing the way the dbus xml is handled.
2011-01-06 16:41:08 -0600 Ted Gould (f7b8662)
* Fixing the GTK3 include path.
2011-01-06 17:22:48 -0500 Ken VanDine (c30de62)
* fixed the includedir
2011-01-06 16:09:32 -0600 Ted Gould (8877308)
* Fixing build source path and build a GTK3 loader
2011-01-06 15:51:07 -0600 Ted Gould (7a02225)
* Adding an important field to relate to when to show the indicator.
2011-01-06 15:08:46 -0600 Ted Gould (71e8858)
* Removing dbus-glib from the build
2011-01-04 16:00:14 -0600 Ted Gould (5de24f6)
* Adding a function to check whether we should show the indicator
with priority.
2011-01-04 15:56:53 -0600 Ted Gould (9497666)
* Making it a real signal now
2011-01-04 10:13:15 -0600 Ted Gould (18a5e64)
* Adding a show now state to indicate priority.
2010-12-08 14:48:03 -0600 Ted Gould (356af1c)
* releasing version 0.3.15-0ubuntu3~ppa1
2010-12-08 14:46:28 -0600 Ted Gould (d85d476)
* debian/libindicator3-dev: Adding in the include files for this
version of the library.
2010-12-08 14:45:12 -0600 Ted Gould (8dd8160)
* debian/libindicator-tools: Removing indicator-loader3
2010-12-08 14:07:18 -0600 Ted Gould (809366b)
* Merging in dual build from Ubuntu Desktop
2010-12-06 10:34:22 -0500 Ken VanDine (c5c78aa)
* releasing version 0.3.15-0ubuntu2 (tag: 0.3.15-0ubuntu2)
2010-12-03 13:14:42 -0500 Ken VanDine (1bce6ba)
* releasing version 0.3.15-0ubuntu1 (tag: 0.3.15-0ubuntu1)
2010-11-24 18:40:11 -0500 Ken VanDine (5247eb9)
* removed empty dir
2010-11-24 18:39:14 -0500 Ken VanDine (8915dd5)
* * debian/rules - Added build targets to build with gtk3 enabled
in additional to default build with gtk2 *
debian/control - Updated build depends to support
building with gtk+-3.0 - Added dh-autoreconf build
depends - Added libindicator3-1, libindicator3-dev,
libindicator3-tools binaries binaries *
libindicator/Makefile.am and tools/Makefile.am - Fixes
needed for building with-gtk=3
2010-11-24 18:00:33 -0500 Ken VanDine (fbef9e6)
* Use abs_srcdir to find template files
2010-11-24 18:00:06 -0500 Ken VanDine (b0c8eb1)
* Build indicator-loader3
2010-11-24 14:56:35 -0500 Ken VanDine (1a4eadc)
* * New upstream release. * Adding a small file to set debugging
environment variables * Allowing to build for GTK 2/3
and build parallel libraries * debian/control: Adding
package libindicator-debugenv
2010-11-11 14:44:56 -0600 Ted Gould (e87aa8f)
* releasing version 0.3.15-0ubuntu1~ppa1
2010-11-11 14:41:24 -0600 Ted Gould (3f4743e)
* * New upstream release. * Allowing to build for GTK 2/3 and build
parallel libraries
2010-11-11 14:40:03 -0600 Ted Gould (df21e79)
* Import upstream version 0.3.15
2010-11-11 14:39:02 -0600 Ted Gould (7d8375c)
* 0.3.15 (tag: 0.3.15)
2010-11-11 10:20:24 -0600 Ted Gould (db16c1f)
* Fixing the ignore file tarball matching
2010-11-11 09:59:36 -0600 Ted Gould (e6a847b)
* Merging in the GTK3 basis for the build
2010-11-11 09:38:56 -0600 Ted Gould (10d7e22)
* Making sure to get both pc files in the tarball
2010-11-11 09:38:43 -0600 Ted Gould (75672d5)
* Checking for deprecations and making sure we check on distcheck
2010-11-11 09:33:27 -0600 Ted Gould (5c848a1)
* Putting the GTK3 indicators in a different directory.
2010-11-11 09:26:24 -0600 Ted Gould (40d11e1)
* Updating ignore for the GTK3 stuff
2010-11-11 09:25:43 -0600 Ted Gould (69960b2)
* Merging in trunk to solve conflicts
2010-10-15 14:56:17 -0500 Ted Gould (273cfca)
* releasing version 0.3.14-0ubuntu2~ppa1
2010-10-15 14:54:32 -0500 Ted Gould (d6160f5)
* debian/control: Adding package libindicator-debugenv
2010-10-15 14:52:02 -0500 Ted Gould (32b0c1c)
* Autogen
2010-10-15 14:48:53 -0500 Ted Gould (917a1ae)
* * Upstream Merge * Adding a small file to set debugging
environment variables
2010-10-15 14:48:14 -0500 Ted Gould (879ce43)
* Merging in Ubuntu desktop
2010-10-15 14:46:03 -0500 Ted Gould (022e4bf)
* Adding a file to have the debugging environment variables
2010-10-15 12:41:16 -0500 Ted Gould (b877951)
* Add mean comment
2010-10-15 12:39:13 -0500 Ted Gould (0f99ed2)
* Adding a number in the name
2010-10-15 12:37:08 -0500 Ted Gould (2e3ea76)
* Installing the environment file in the session dir
2010-10-15 12:24:12 -0500 Ted Gould (fc94eab)
* All the environment flags we should set for debugging
2010-10-06 10:58:49 -0400 Michael Terry (ecc6acd)
* instead of always building gtk2 and gtk3, add a --with-gtk= flag to
configure to specify which to build with
2010-09-22 18:09:47 +0200 Didier Roche (948cb8e)
* releasing version 0.3.14-0ubuntu1 (tag: 0.3.14-0ubuntu1)
2010-09-22 10:05:24 +0200 Didier Roche (98f804c)
* redo removed adjustements
2010-09-21 15:56:00 -0500 Ted Gould (ac662a1)
* releasing version 0.3.14-0ubuntu1~ppa1
2010-09-21 15:55:12 -0500 Ted Gould (3acdbe7)
* * New upstream release. * Adding a function to signal a menu is
shown * Changing indicator directory to '4'
2010-09-21 15:53:41 -0500 Ted Gould (b91aaa9)
* Import upstream version 0.3.14
2010-09-21 15:48:56 -0500 Ted Gould (558a37d)
* 0.3.14 (tag: 0.3.14)
2010-09-21 11:27:07 -0500 Ted Gould (53e57ef)
* Changing AUTHORS to mention it's built
2010-09-21 11:17:50 -0500 Ted Gould (25d85a1)
* Adding dist hooks for AUTHORS and ChangeLog
2010-09-21 11:13:19 -0500 Ted Gould (137e0f1)
* Merging in Debian branch
2010-09-21 09:25:07 -0500 Ted Gould (32bad82)
* releasing version 0.3.13-0ubuntu2~ppa2
2010-09-21 09:24:18 -0500 Ted Gould (bd75a2c)
* Updating with Desktop version and undoing some changes.
2010-09-21 09:22:02 -0500 Ted Gould (027d9ed)
* Setting right VCS directories
2010-09-21 09:17:40 -0500 Ted Gould (6b3ded7)
* Drop duplicate changelog entry
2010-09-21 09:14:51 -0500 Ted Gould (c5216ef)
* Merge from Ubuntu Desktop
2010-09-21 12:46:31 +0200 Didier Roche (4b5bf4f)
* ppa version
2010-09-21 12:45:54 +0200 Didier Roche (f7bd202)
* - rename to soname bump * debian/libindicator1.install: rename to
soname bump * debian/rules: update MAKESHLIBS_ARGS
2010-09-21 12:36:23 +0200 Didier Roche (5ca6086)
* * debian/control: - put the Vcs-Bzr to point the right official
branch
2010-09-21 12:35:43 +0200 Didier Roche (c667aaf)
* * debian/source: - don't use quilt format, it's making the daily
build not working
2010-09-19 14:47:49 -0500 Ted Gould (2af3961)
* releasing version 0.3.13-0ubuntu1~ppa3
2010-09-19 14:42:21 -0500 Ted Gould (a006528)
* * debian/rules: * Dropping the simple patch system * Changing
the shlibs to libindicator1
2010-09-19 13:29:16 -0500 Ted Gould (3e7cedb)
* releasing version 0.3.13-0ubuntu1~ppa2
2010-09-19 13:28:14 -0500 Ted Gould (49b7043)
* * Upstream Merge * Adding a function to signal a menu is shown
* Changing indicator directory to '4' * debian/control:
Switching from libindicator0 to libindicator1 as we've
broken ABI. Conflicting with libindicator0 to make
upgrade simpler as it doesn't make sense to have both
installed. * Autogen update
2010-09-19 13:26:12 -0500 Ted Gould (bf38aa8)
* Sync to trunk
2010-09-19 13:26:01 -0500 Ted Gould (982c91c)
* Adding in the about-to-show signal
2010-09-17 16:41:30 -0500 Ted Gould (daaf146)
* debian/control: Replaces really needs to be conflicts. You don't
want both of these.
2010-09-17 09:52:32 -0500 Ted Gould (8d7fd13)
* releasing version 0.3.13-0ubuntu1~ppa2~ats3
2010-09-17 09:51:48 -0500 Ted Gould (e51d89f)
* Autogen update
2010-09-17 09:30:36 -0500 Ted Gould (aafdfdf)
* releasing version 0.3.13-0ubuntu1~ppa2~ats2
2010-09-17 09:17:23 -0500 Ted Gould (fb8a5c2)
* * Upstream Merge * Making the library different
2010-09-17 09:16:17 -0500 Ted Gould (03641dc)
* Adding some version information so we don't need a conflicts
2010-09-16 16:40:10 -0500 Ted Gould (5be1cb6)
* releasing version 0.3.13-0ubuntu1~ppa2~ats1
2010-09-16 16:37:55 -0500 Ted Gould (7cabb61)
* Changing indicator directory to '4'
2010-09-16 16:37:08 -0500 Ted Gould (99dc263)
* Changing indicator directory to '4'
2010-09-16 16:36:21 -0500 Ted Gould (afe60bd)
* debian/control: Switching from libindicator0 to libindicator1 as
we've broken ABI.
2010-09-16 16:34:21 -0500 Ted Gould (ebe26f6)
* * Upstream Merge * Adding a function to signal a menu is shown
2010-09-16 16:15:31 -0500 Ted Gould (6269aec)
* Creating a callback on the loader to signal the event press down to
the entry.
2010-09-16 16:09:26 -0500 Ted Gould (daffbe6)
* Fleshing out the entry activate function
2010-09-16 16:06:41 -0500 Ted Gould (64db4d0)
* Breaking the ABI and adding a subclassable function.
2010-09-16 15:56:50 -0500 Ted Gould (90b4c19)
* Adding a function to push activate back down.
2010-09-15 14:02:22 -0400 Ken VanDine (617263e)
* releasing version 0.3.13-0ubuntu1 (tag: 0.3.13-0ubuntu1)
2010-09-15 11:46:43 -0500 Ted Gould (0bcacdc)
* releasing version 0.3.13-0ubuntu1~ppa1
2010-09-15 11:45:14 -0500 Ted Gould (a2df60e)
* New upstream release.
2010-09-15 11:44:34 -0500 Ted Gould (b675da7)
* Import upstream version 0.3.13
2010-09-15 11:42:57 -0500 Ted Gould (bc8ba95)
* 0.3.13 (tag: 0.3.13)
2010-09-15 11:37:00 -0500 Ted Gould (c587ca3)
* Printout on menu showing in the loader
2010-09-15 08:58:07 -0500 Ted Gould (b933e7c)
* Putting a printout in for showing menus.
2010-09-14 10:57:35 -0500 Ted Gould (74b347a)
* releasing version 0.3.12-0ubuntu2~ppa1
2010-09-14 10:56:53 -0500 Ted Gould (ed40c3c)
* Flipping PPA version around
2010-09-14 10:56:07 -0500 Ted Gould (06c1df5)
* Merge with Ubuntu Desktop
2010-09-14 10:54:25 -0500 Ted Gould (f09d026)
* releasing version 0.3.12-0ubuntu1~ppa2
2010-09-14 10:53:40 -0500 Ted Gould (4e26272)
* * Upstream Merge * Adding a menu_show signal
2010-09-14 10:52:18 -0500 Ted Gould (f0cd004)
* Adding a menu_show signal
2010-09-14 09:55:16 -0500 Ted Gould (69221d8)
* Adding in the signal for the menu showing
2010-09-14 09:51:06 -0500 Ted Gould (06b5084)
* Forgot the signal name
2010-09-14 09:50:09 -0500 Ted Gould (98ec2f3)
* Adding slot for the menu show signal
2010-08-18 12:48:09 -0400 Ken VanDine (ab54852)
* releasing version 0.3.12-0ubuntu1 (tag: 0.3.12-0ubuntu1)
2010-08-18 11:05:54 -0500 Ted Gould (8839b12)
* releasing version 0.3.12-0ubuntu1~ppa1
2010-08-18 11:04:26 -0500 Ted Gould (6152054)
* Merging in Ubuntu Desktop branch
2010-08-18 11:02:28 -0500 Ted Gould (d097561)
* * New upstream release. * Removing a g_error that was breaking
Unity on failed icons
2010-08-18 11:01:43 -0500 Ted Gould (5c85a79)
* Import upstream version 0.3.12
2010-08-18 10:59:48 -0500 Ted Gould (7df0fe9)
* 0.3.12 (tag: 0.3.12)
2010-08-18 10:57:05 -0500 Ted Gould (3a8fac7)
* Fixing a g_error so we don't kill unity
2010-08-16 09:14:49 -0500 Ted Gould (6878f17)
* Changing the message to a warning and clearing the GtkImage.
2010-08-13 12:02:59 -0500 Ted Gould (6a055d8)
* Adding debug flag
2010-08-13 11:57:45 +0200 Sebastien Bacher (79f7355)
* releasing version 0.3.11-0ubuntu2 (tag: 0.3.11-0ubuntu2)
2010-08-13 10:17:33 +0200 Mikkel Kamstrup Erlandsen (89924de)
* Add an --enable-debug flag to configure script that forces a -g to
gcc
2010-08-12 16:45:05 -0400 Ken VanDine (25e77dc)
* releasing version 0.3.11-0ubuntu1 (tag: 0.3.11-0ubuntu1)
2010-08-12 14:42:49 -0500 Ted Gould (1c80632)
* releasing version 0.3.11-0ubuntu1~ppa1
2010-08-12 14:42:07 -0500 Ted Gould (ccf75ca)
* * New upstream release. * Allowing absolute paths in the image
name (LP: #564034)
2010-08-12 14:41:09 -0500 Ted Gould (94a9465)
* Import upstream version 0.3.11
2010-08-12 14:40:42 -0500 Ted Gould (53265a3)
* 0.3.11 (tag: 0.3.11)
2010-08-12 14:37:24 -0500 Ted Gould (e9c09c5)
* Allowing for absolute file names for icons.
2010-08-09 10:41:11 +0100 Karl (bec9f56)
* Added absolute filename fixes
2010-07-25 12:09:27 +0200 Evgeni Golov (ff06597)
* * Merging new upstream release from Ubuntu. * New upstream release.
* Fixing unwatching crash (LP: #603489) * Adding
configurable timeout for slow test systems (tag: 0.3.10-1)
2010-07-25 12:08:03 +0200 Evgeni Golov (21ba038)
* Merge lp:~ubuntu-desktop/libindicator/ubuntu * New upstream
release. * Fixing unwatching crash (LP: #603489) *
Adding configurable timeout for slow test systems
2010-07-15 12:17:31 -0500 Ted Gould (13ebc6d)
* Merge from Debian
2010-07-15 12:15:40 -0500 Ted Gould (e5080c7)
* Updating to Ubuntu Desktop
2010-07-15 11:55:34 -0400 Ken VanDine (8c56a89)
* releasing version 0.3.10-0ubuntu1 (tag: 0.3.10-0ubuntu1)
2010-07-15 10:02:59 -0500 Ted Gould (c6b0ab3)
* releasing version 0.3.10-0ubuntu1~ppa1
2010-07-15 10:02:16 -0500 Ted Gould (ae07d57)
* * New upstream release. * Fixing unwatching crash (LP: #603489)
* Adding configurable timeout for slow test systems *
Merged in fix for (LP: #603489)
2010-07-15 09:58:36 -0500 Ted Gould (081637a)
* Import upstream version 0.3.10
2010-07-15 09:58:13 -0500 Ted Gould (6c7db76)
* Sync with ubuntu desktop
2010-07-15 09:49:53 -0500 Ted Gould (362a2d7)
* 0.3.10 (tag: 0.3.10)
2010-07-14 10:07:48 +0200 Evgeni Golov (8b7fa3f)
* Standards-Version: 3.9.0 (tag: 0.3.9-1)
2010-07-14 10:04:40 +0200 Evgeni Golov (55e4c2c)
* Add "Don't drop debian/source/*" to the changelog
2010-07-14 10:03:46 +0200 Evgeni Golov (b4d1461)
* Merging new upstream release and some changes from Ubuntu.
2010-07-14 10:00:17 +0200 Evgeni Golov (d14f25a)
* Merging lp:~ubuntu-desktop/libindicator/ubuntu
2010-07-13 10:47:42 -0500 Ted Gould (d71fe46)
* Adding a configurable timeout by environment variable.
2010-07-12 11:17:21 -0500 Ted Gould (bf315eb)
* Adding a new variable to adjust the time of the kill switch.
2010-07-09 16:47:26 -0400 Ken VanDine (b52f070)
* releasing version 0.3.9-0ubuntu2 (tag: 0.3.9-0ubuntu2)
2010-07-09 13:43:53 -0500 Ted Gould (e102f84)
* releasing version 0.3.9-0ubuntu2~ppa1
2010-07-09 13:42:33 -0500 Ted Gould (d8bd40d)
* * Upstream merge * Fixing unwatching crash (LP: #603489)
2010-07-09 13:35:55 -0500 Ted Gould (17a29ea)
* Fixing unwatching lookups.
2010-07-09 13:13:21 -0500 Ted Gould (c7eee08)
* We want the key not the value.
2010-07-09 13:08:22 -0500 Ted Gould (ed191e6)
* Taking it to the next level with impoliteness.
2010-07-09 13:07:57 -0500 Ted Gould (5750308)
* Lots of impoliteness to make sure.
2010-07-09 13:06:58 -0500 Ted Gould (b0360dd)
* Adding an impolite manager.
2010-07-09 11:02:48 -0500 Ted Gould (baa324f)
* Bug
2010-07-09 11:00:38 -0500 Ted Gould (b0a56e9)
* Adding in the unwatching test
2010-07-09 10:58:17 -0500 Ted Gould (b43f81d)
* A couple debug messages to make the test easier to read the output
from.
2010-07-09 10:55:59 -0500 Ted Gould (dceee48)
* Up to 5 watchers.
2010-07-09 10:53:48 -0500 Ted Gould (990a881)
* Longer timeout
2010-07-09 10:52:28 -0500 Ted Gould (7c7b497)
* Okay, we need our own service too. Bah.
2010-07-09 10:50:25 -0500 Ted Gould (56dd41e)
* Delaying the watchers to ensure that we don't dbus activate, and
removing the session.conf to even allow for that.
2010-07-09 10:45:18 -0500 Ted Gould (5731c1e)
* Starting the service ourselves.
2010-07-09 10:42:46 -0500 Ted Gould (054704d)
* Ignoring the new builds.
2010-07-09 10:42:20 -0500 Ted Gould (6786532)
* Making a new manager
2010-07-09 10:39:44 -0500 Ted Gould (01130c5)
* Start a multi watch test
2010-07-09 09:58:56 -0500 Ted Gould (b973537)
* Uhg, wrong branch
2010-07-09 09:53:20 -0500 Ted Gould (74a24d7)
* Stop asking for the name, instead let's find it on our own.
2010-07-09 09:30:25 -0500 Ted Gould (dac4891)
* A could of protections for the core.
2010-07-09 09:25:18 -0500 Ted Gould (fe4e5b7)
* Sync to Ubuntu Desktop
2010-07-09 09:22:20 -0500 Ted Gould (613ad62)
* Freeing the service.
2010-07-08 23:14:14 +0200 Sebastien Bacher (dc60b53)
* releasing version 0.3.9-0ubuntu1 (tag: 0.3.9-0ubuntu1)
2010-07-08 15:19:11 -0500 Ted Gould (3fc3179)
* releasing version 0.3.9-0ubuntu1~ppa1
2010-07-08 15:18:26 -0500 Ted Gould (7957aca)
* New upstream release.
2010-07-08 15:15:46 -0500 Ted Gould (3b191f9)
* Import upstream version 0.3.9
2010-07-08 15:12:12 -0500 Ted Gould (bc5e925)
* 0.3.9 (tag: 0.3.9)
2010-07-08 14:06:12 -0500 Ted Gould (3899f93)
* Fixing signals so that our tests pass
2010-07-08 12:36:50 -0500 Ted Gould (7412490)
* Documenting the choices of not having a nice callback func.
2010-07-08 12:34:24 -0500 Ted Gould (647f8ea)
* Use the same function so we know everything is all right.
2010-07-08 12:31:56 -0500 Ted Gould (974328f)
* Unreffing the objects in dispose and ensuring we disconnect the
signals first.
2010-07-08 12:23:14 -0500 Ted Gould (46c8b3f)
* Disconnecting signal before removing from hashtable so we don't try
twice.
2010-07-08 09:25:29 -0500 Ted Gould (2b3087f)
* releasing version 0.3.8-2ubuntu1~ppa3
2010-07-08 09:22:33 -0500 Ted Gould (fc10497)
* Make it so that a watcher dying is the same as unregistering.
2010-07-08 09:21:21 -0500 Ted Gould (70f8170)
* * Merge Upstream * Removing checking for style properties that
aren't used.
2010-07-08 09:20:02 -0500 Ted Gould (5c28cb2)
* Sync to trunk
2010-07-08 09:19:38 -0500 Ted Gould (5691966)
* Shutdown services when watchers leave the bus.
2010-07-06 11:07:22 -0500 Ted Gould (359c670)
* releasing version 0.3.8-2ubuntu1~ppa2
2010-07-06 11:06:36 -0500 Ted Gould (8314197)
* * Upstream Merge * Make it so that a watcher dying is the same as
unregistering.
2010-07-06 11:04:41 -0500 Ted Gould (dd7106e)
* Creating a callback for the destory signal, but then moving the
unwatch into a core function so that we can call it.
2010-07-06 10:47:58 -0500 Ted Gould (d23ca44)
* Actually creating a proxy to see if we can detect the watcher going
away.
2010-07-06 10:39:12 -0500 Ted Gould (632c3f9)
* Making ths bus tracked in the private structure
2010-07-06 10:36:27 -0500 Ted Gould (8a12556)
* Switching the watchers data structure over to a hashtable.
2010-07-06 10:29:45 -0500 Ted Gould (96faa1e)
* Removing unused style check
2010-07-06 09:47:12 -0500 Ted Gould (149de10)
* Removing the style lookup that wasn't used.
2010-06-19 09:32:03 -0400 Michael Terry (923a1d5)
* don't use 3.3 version, rather use indicator3
2010-06-19 08:47:50 -0400 Michael Terry (322884d)
* first pass at providing a gtk3 version
2010-06-16 13:29:19 -0500 Ted Gould (589e659)
* releasing version 0.3.8-2ubuntu1~ppa1
2010-06-16 13:28:30 -0500 Ted Gould (c055d0f)
* * Merge debian changes * Drop debian/source/* *
debian/control: Switch VCS for this branch to be the
indicator applet developers branch. * Revert cdbs drop,
as requested by the Ubuntu maintainers. * Update
Maintainer and Vcs-* fields for pkg-ayatana. * Merge
Ubuntu package into Debian. Closes: #549999 *
debian/copyright: + Update to machine readable format. *
debian/control: + Drop cdbs Build-Dep, bump debhelper to
>=7. + Standards-Version 3.8.4. + Update Vcs-* fields.
+ Drop GNOME from Description, the package is not GNOME
specific. + Slightly update Description, thanks lintian.
* debian/rules: + Use minimal debhelper 7 rules without
cdbs. + Disable tests for now, they fail (launchpad
587811) * debian/source/format: + Add file, make package
3.0 (quilt).
2010-06-16 13:20:03 -0500 Ted Gould (b4feaef)
* Sync to Ubuntu Desktop
2010-06-16 09:55:10 +0200 Evgeni Golov (34b4a4d)
* Update Maintainer and Vcs-* fields for pkg-ayatana.
2010-06-16 09:52:28 +0200 Evgeni Golov (e3df283)
* Revert cdbs drop, as requested by the Ubuntu maintainers.
2010-06-16 09:50:48 +0200 Evgeni Golov (30f1ae4)
* Apply 0.3.8-1 changes (tag: 0.3.8-1)
2010-05-06 11:39:55 +0200 Ted Gould (c77d719)
* Dummy commit
2010-04-09 20:53:31 +0200 Sebastien Bacher (ec36577)
* releasing version 0.3.8-0ubuntu1 (tag: 0.3.8-0ubuntu1)
2010-04-09 12:56:24 -0500 Ted Gould (478b7f7)
* releasing version 0.3.8-0ubuntu1~ppa1
2010-04-09 12:54:42 -0500 Ted Gould (a662e1a)
* * New upstream release. * Adding template files to tarball
2010-04-09 12:54:16 -0500 Ted Gould (105fa99)
* Import upstream version 0.3.8
2010-04-09 12:53:42 -0500 Ted Gould (3e9180a)
* releasing version 0.3.7-0ubuntu1~ppa1
2010-04-09 12:53:27 -0500 Ted Gould (9530995)
* 0.3.8 (tag: 0.3.8)
2010-04-09 12:51:25 -0500 Ted Gould (882ef71)
* Disting the templates.
2010-04-09 11:58:23 -0500 Ted Gould (6c48a23)
* New upstream release.
2010-04-09 11:57:53 -0500 Ted Gould (97035da)
* Import upstream version 0.3.7
2010-04-09 11:57:05 -0500 Ted Gould (e9392e9)
* No merging
2010-04-09 11:53:43 -0500 Ted Gould (ee0f45f)
* 0.3.7 (tag: 0.3.7)
2010-04-09 11:53:36 -0500 Ted Gould (588efad)
* Fixing the desktop test to make it more reliable.
2010-04-06 16:21:22 -0500 Ted Gould (6262d6f)
* releasing version 0.3.6-0ubuntu2~ppa1
2010-04-06 16:03:52 -0500 Ted Gould (a57b84e)
* Merge from Ubuntu desktop
2010-04-06 16:00:49 -0500 Ted Gould (2eb97c2)
* * Upstream merge * Use the domain in desktop files for shortcuts
(LP: #549322)
2010-04-06 15:57:17 -0500 Ted Gould (8e19cd3)
* Translating the shortcuts of the actions based on the desktop file
translation domains.
2010-04-06 15:55:45 -0500 Ted Gould (22de798)
* Typo
2010-04-05 15:37:15 -0500 Ted Gould (e0f5fb7)
* releasing version 0.3.6-0ubuntu1~ppa2~shortcutdomain2
2010-04-05 15:21:26 -0500 Ted Gould (4213bc2)
* * Upstream merge * Chnages requested by pitt
2010-04-05 15:20:46 -0500 Ted Gould (1200f51)
* Switching to only use the g_dgettext version if the locale_string
function doesn't change the string from the normal lookup
(and we have a domain to look in).
2010-04-05 12:46:10 -0500 Ted Gould (e900b4c)
* Make it so that we check the GNOME-Gettext-Domain as well
2010-04-02 10:52:01 -0500 Ted Gould (49c5444)
* releasing version 0.3.6-0ubuntu1~ppa2~shortcutdomain1
2010-04-02 10:50:59 -0500 Ted Gould (4d6575b)
* * Upstream merge * Use the domain in desktop files for shortcuts
2010-04-02 10:49:33 -0500 Ted Gould (20e03af)
* If we don't have a domain just use the locale function, otherwise
we need to use that domain to get the translation.
2010-04-02 10:44:57 -0500 Ted Gould (5d02c0c)
* Adding a private variable for the translation domain and grabbing
it from the keyfile.
2010-03-18 23:34:24 +0100 Sebastien Bacher (0cf6e60)
* releasing version 0.3.6-0ubuntu1 (tag: 0.3.6-0ubuntu1)
2010-03-18 15:05:20 -0400 Ken VanDine (947d4cf)
* * Upstream release 0.3.6 * Adding in scroll signals for the
indicators * debian/rules: Updating shlibs
2010-03-18 11:10:23 -0500 Ted Gould (f07a2df)
* releasing version 0.3.6-0ubuntu1~ppa1
2010-03-18 10:59:10 -0500 Ted Gould (218c6a8)
* debian/rules: Updating shlibs
2010-03-18 10:53:40 -0500 Ted Gould (738df2f)
* * Upstream release 0.3.6 * Adding in scroll signals for the
indicators
2010-03-18 10:52:54 -0500 Ted Gould (60ab69b)
* Update to Ubuntu Desktop
2010-03-18 10:49:26 -0500 Ted Gould (999f148)
* 0.3.6 (tag: 0.3.6)
2010-03-17 09:28:22 -0500 Ted Gould (5abaca2)
* Adding the signal for scrolling in the indicator-object
2010-03-17 01:21:58 -0500 Cody Russell (e0c1a3c)
* name
2010-03-17 01:14:13 -0500 Cody Russell (b782a8a)
* Documentation fix.
2010-03-16 15:31:15 -0500 Cody Russell (11c78ed)
* Use IndicatorScrollDirection instead of gboolean in
IndicatorObjectClass->scroll function pointer.
2010-03-16 11:40:14 -0500 Cody Russell (02d3dde)
* Define IndicatorScrollDirection enum for scroll signal parameter.
2010-03-15 14:12:20 -0500 Cody Russell (4adb9ab)
* Add 'scroll' signal.
2010-03-11 22:52:27 +0100 Sebastien Bacher (a68b0e8)
* releasing version 0.3.5-0ubuntu1 (tag: 0.3.5-0ubuntu1)
2010-03-11 16:34:22 -0500 Ken VanDine (c74b245)
* * Upstream release 0.3.5 * Adding in a image loader helper for
indicators.
2010-03-11 14:27:17 -0600 Ted Gould (a815f84)
* releasing version 0.3.5-0ubuntu1~ppa2
2010-03-11 14:26:58 -0600 Ted Gould (259bcc9)
* debian/rules: Updating shlibs number
2010-03-11 14:26:15 -0600 Ted Gould (0de990f)
* releasing version 0.3.5-0ubuntu1~ppa1
2010-03-11 14:22:51 -0600 Ted Gould (8caf60a)
* Upstream release 0.3.5
2010-03-11 14:21:59 -0600 Ted Gould (5ca699b)
* Syncing with ubuntu desktop
2010-03-11 14:20:02 -0600 Ted Gould (bb8b703)
* 0.3.5 (tag: 0.3.5)
2010-03-11 14:10:42 -0600 Ted Gould (8e82b02)
* Creating a function to update the icon to a new name.
2010-03-11 10:51:17 -0600 Ted Gould (a6ecf4a)
* Watching for style changes on the image.
2010-03-11 10:35:14 -0600 Ted Gould (e31a7de)
* Check to see if we've seen the image previously before adding
signals in.
2010-03-11 10:22:17 -0600 Ted Gould (b4ca4f6)
* Splitting things out into an update function and a buid function.
2010-03-10 22:12:35 -0600 Ted Gould (d424692)
* releasing version 0.3.4-0ubuntu1~ppa2
2010-03-10 22:10:05 -0600 Ted Gould (fdba994)
* * Upstream merge * Adding in a image loader helper for
indicators.
2010-03-10 22:09:33 -0600 Ted Gould (fc9f460)
* Update to trunk
2010-03-10 22:06:56 -0600 Ted Gould (fc87fda)
* Add a small helper for loading images.
2010-03-10 16:58:15 -0600 Ted Gould (9bc7677)
* releasing version 0.3.4-0ubuntu1~ppa2~imagehelper1
2010-03-10 16:55:44 -0600 Ted Gould (680631e)
* * Upstream merge * Adding in a image loader helper for
indicators.
2010-03-10 16:40:19 -0600 Ted Gould (5867fa7)
* Adding in a copyright header.
2010-03-10 16:30:19 -0600 Ted Gould (0660884)
* A little loader to test to see if we load an icon and what size it
is.
2010-03-10 16:14:46 -0600 Ted Gould (12ab8f4)
* If we get an icon that is too big, we have to scale it.
2010-03-10 15:30:37 -0600 Ted Gould (37f0f34)
* Doing dynamic size calculation based on the font if we have a prop
set telling us to do so.
2010-03-10 14:26:20 -0600 Ted Gould (ba4a73a)
* Disconnect from theme update when the image goes away.
2010-03-10 13:25:26 -0600 Ted Gould (64df2c6)
* Setting up the callback for themes changing.
2010-03-10 13:10:36 -0600 Ted Gould (805edb8)
* Pulled out a bunch of the code into a refresh function for signals.
2010-03-10 12:29:30 -0600 Ted Gould (48e8a34)
* Fleshing out the image loading function.
2010-03-10 11:45:53 -0600 Ted Gould (636b9f9)
* Adding in an image helper library.
2010-02-25 22:23:29 +0100 Sebastien Bacher (e9aea6f)
* releasing version 0.3.4-0ubuntu1 (tag: 0.3.4-0ubuntu1)
2010-02-25 11:27:26 -0600 Ted Gould (436e5f1)
* releasing version 0.3.4-0ubuntu1~ppa1
2010-02-25 11:25:01 -0600 Ted Gould (577ae5b)
* * Upstream Release 0.3.4 * Reducing gio-unix dependency to 2.22
2010-02-25 11:21:02 -0600 Ted Gould (8e12685)
* 0.3.4 (tag: 0.3.4)
2010-02-24 21:05:05 -0600 Ted Gould (802da09)
* releasing version 0.3.3-0ubuntu2 (tag: 0.3.3-0ubuntu2)
2010-02-24 21:04:56 -0600 Ted Gould (d4404ea)
* debian/control: Reducing libglib dependency down to 2.22 for Karmic
builds
2010-02-19 16:24:25 -0600 Ted Gould (9200b55)
* No reason we need newer APIs than this.
2010-02-18 10:59:08 -0600 Ted Gould (25b2503)
* Updating to ubuntu desktop
2010-02-18 17:33:16 +0100 Sebastien Bacher (2de6574)
* releasing version 0.3.3-0ubuntu1 (tag: 0.3.3-0ubuntu1)
2010-02-18 10:11:24 -0600 Ted Gould (6528ac0)
* releasing version 0.3.3-0ubuntu1~ppa1
2010-02-18 10:08:32 -0600 Ted Gould (019fb77)
* Upstream release 0.3.3
2010-02-18 10:07:56 -0600 Ted Gould (bf7525a)
* releasing version 0.3.2-0ubuntu1~ppa2
2010-02-18 10:06:47 -0600 Ted Gould (fa27dc5)
* * Upstream merge * Adding new object for parsing desktop files
for Shortcuts
2010-02-18 10:05:29 -0600 Ted Gould (0fc8747)
* Sync to trunk
2010-02-18 10:03:57 -0600 Ted Gould (49cdb8c)
* 0.3.3 (tag: 0.3.3)
2010-02-18 10:01:57 -0600 Ted Gould (f325f3e)
* Adding in an object to get shortcuts out of desktop files.
2010-02-16 22:54:20 -0600 Ted Gould (8eee891)
* Updating to Ubuntu Desktop branch
2010-02-16 22:52:10 -0600 Ted Gould (fdc2872)
* releasing version 0.3.2-0ubuntu1~ppa2~shortcuts1
2010-02-16 22:51:13 -0600 Ted Gould (a9e097f)
* * Upstream merge * Adding new object for parsing desktop files
for Shortcuts
2010-02-16 22:47:04 -0600 Ted Gould (6665fd0)
* Ignoring the touch file for the testing
2010-02-16 22:45:54 -0600 Ted Gould (1b58c66)
* Being more specific about where we should find the touch file for
distcheck
2010-02-16 22:44:22 -0600 Ted Gould (3e69079)
* Disabling debug messages
2010-02-16 22:43:55 -0600 Ted Gould (5a75fb5)
* Debug messages.
2010-02-16 22:43:45 -0600 Ted Gould (a3e1058)
* We should look at the other nicks even if this one doesn't work.
2010-02-16 22:43:11 -0600 Ted Gould (ef9c19e)
* Shipping our test desktop file
2010-02-16 22:39:45 -0600 Ted Gould (7e69f61)
* Clean up touch file
2010-02-16 22:35:03 -0600 Ted Gould (0aa8119)
* Checking to ensure the right nick is in the list
2010-02-16 22:21:29 -0600 Ted Gould (b10dd19)
* Using the nick directly to make this work better.
2010-02-16 22:07:38 -0600 Ted Gould (b0e8d1c)
* Wrong identity
2010-02-16 22:05:08 -0600 Ted Gould (452c195)
* Forgot to set the type of the desktop file, need to be an
Application.
2010-02-16 21:40:50 -0600 Ted Gould (af36cb8)
* Add a test to launch an nick
2010-02-16 21:34:30 -0600 Ted Gould (e0bc191)
* Adding a check to ensure we're getting the right names from the
nicks.
2010-02-16 21:31:33 -0600 Ted Gould (c636c3e)
* Making the function not recurse forever.
2010-02-16 21:23:59 -0600 Ted Gould (b6b2a65)
* Adding in local filter test functions.
2010-02-16 21:16:02 -0600 Ted Gould (edaa80e)
* Check to ensure a global no show works.
2010-02-16 15:28:29 -0600 Ted Gould (0a90515)
* Fix group detection to put a space in the name of the group
2010-02-16 15:27:18 -0600 Ted Gould (755e697)
* Better name
2010-02-16 15:26:30 -0600 Ted Gould (17cdd8c)
* Ignoring the new stuff
2010-02-16 15:26:03 -0600 Ted Gould (0a4d668)
* A backslash off
2010-02-16 15:24:51 -0600 Ted Gould (53c9f60)
* Adding in a basic test desktop file test
2010-02-16 15:13:29 -0600 Ted Gould (1a85eb2)
* Create a testing desktop file
2010-02-16 11:02:53 -0600 Ted Gould (8fb1d36)
* Refactoring the list checks into their own functions so we can
check the desktop group as well.
2010-02-16 10:53:08 -0600 Ted Gould (a39d426)
* Adding in checking to see if we should be showing this entry.
2010-02-16 10:41:58 -0600 Ted Gould (4ee953a)
* Basic parsing of the files.
2010-02-16 09:39:59 -0600 Ted Gould (21c3a88)
* Checking for our shortcuts key, we don't really want a desktop file
without it.
2010-02-16 08:46:22 -0600 Ted Gould (5514554)
* Start loading the keyfile.
2010-02-16 08:25:10 -0600 Ted Gould (62876d9)
* Removing the reading of the desktop file.
2010-02-16 08:22:57 -0600 Ted Gould (37a107b)
* Identity management with the properties.
2010-02-16 08:20:01 -0600 Ted Gould (8b8c3f4)
* Some error handling.
2010-02-15 17:14:12 -0600 Ted Gould (ae0b7bc)
* A basic property system.
2010-02-15 16:46:58 -0600 Ted Gould (5d7fbff)
* Fleshing out the exec function which require GIO Unix
2010-02-15 15:44:00 -0600 Ted Gould (f2196d1)
* Fleshing out getting the Name of a shortcut
2010-02-15 15:20:09 -0600 Ted Gould (5d2ace5)
* Fleshing out _new and _get_nicks Both are lovely functions.
2010-02-15 15:12:29 -0600 Ted Gould (a32a078)
* Getting some new private variables, and making sure they have a
full lifecycle.
2010-02-15 14:57:23 -0600 Ted Gould (3a95d84)
* Instanciating the prototypes and making some comments.
2010-02-15 14:22:01 -0600 Ted Gould (d970c85)
* Letz get ur prototypes
2010-02-15 14:13:51 -0600 Ted Gould (95f07c4)
* Copyright headers
2010-02-15 14:00:56 -0600 Ted Gould (a271753)
* Adding in the new object we're building for evaluating desktop
shortcuts.
2010-02-04 19:00:38 -0800 Sebastien Bacher (050ef48)
* releasing version 0.3.2-0ubuntu1 (tag: 0.3.2-0ubuntu1)
2010-02-04 17:40:09 -0800 Ted Gould (72ef75f)
* releasing version 0.3.2-0ubuntu1~ppa1
2010-02-04 17:37:47 -0800 Ted Gould (65bc742)
* * Upstream release 0.3.2 * Various fixes to timeout handling in
services and the * Fix test suite when run headless
2010-02-04 17:34:50 -0800 Ted Gould (0d5ea56)
* 0.3.2 (tag: 0.3.2)
2010-02-02 13:16:42 -0800 Ted Gould (6afee91)
* Fixes to the test suite.
2010-02-02 12:20:44 -0800 Ted Gould (527674d)
* Adjusting to new timeout value
2010-02-02 12:10:23 -0800 Ted Gould (9719ffe)
* Switching to 'bash'
2010-02-02 12:09:00 -0800 Ted Gould (0526f26)
* Adding an printout for saying which display we created.
2010-02-02 12:01:22 -0800 Ted Gould (953e656)
* Adding in run-xvfb.sh
2010-02-01 23:59:26 -0800 Ted Gould (e0dbaa3)
* releasing version 0.3.1-0ubuntu1~ppa2
2010-02-01 23:58:22 -0800 Ted Gould (106a07d)
* * Upstream merge * Various fixes to timeout handling in servcies
and the service manager.
2010-02-01 23:57:35 -0800 Ted Gould (71e4712)
* Sync to trunk
2010-02-01 23:56:58 -0800 Ted Gould (103f8b0)
* Better handling of some timeout conditions and more logging.
2010-01-28 21:43:02 -0800 Ted Gould (7e7507e)
* releasing version 0.3.1-0ubuntu1~ppa2~better1
2010-01-28 21:41:58 -0800 Ted Gould (32c331c)
* * Upstream merge * Various fixes to timeout handling in servcies
and the service manager.
2010-01-28 21:39:29 -0800 Ted Gould (7c58185)
* Adding a debug message for restarting the service.
2010-01-28 21:31:45 -0800 Ted Gould (1abf840)
* Error handling when building our proxies.
2010-01-28 21:23:18 -0800 Ted Gould (52e1a43)
* Changing timeout to be approximatedly 1 second.
2010-01-28 21:07:54 -0800 Ted Gould (21eca67)
* checking the error field for name callback and printing an error
when it fails.
2010-01-28 21:03:42 -0800 Ted Gould (138321d)
* In the timeout function mention that we're shutting down, and have
an environment variable to stop that.
2010-01-21 15:53:46 -0500 Ken VanDine (717a085)
* releasing version 0.3.1-0ubuntu1 (tag: 0.3.1-0ubuntu1)
2010-01-21 13:15:10 -0600 Ted Gould (8f6a206)
* releasing version 0.3.1-0ubuntu1~ppa1
2010-01-21 13:04:15 -0600 Ted Gould (2645491)
* Upstream release 0.3.1
2010-01-21 13:02:56 -0600 Ted Gould (923106e)
* Sync to ubuntu-desktop
2010-01-21 13:01:01 -0600 Ted Gould (f5232a3)
* 0.3.1 (tag: 0.3.1)
2010-01-21 12:50:41 -0600 Ted Gould (16e0cd5)
* When a watch fails we're moving to having that try and restart the
startup/connection process again.
2010-01-21 10:30:52 -0600 Ted Gould (0219e0e)
* Adding in tracking of the restart idle function and making sure we
don't do it twice.
2010-01-21 10:25:27 -0600 Ted Gould (4a7af56)
* In case we're restarting because of the 'Watch' returning failure
we'd have a valid 'service_proxy' object to kill
2010-01-21 09:49:02 -0600 Ted Gould (c72ff4f)
* Setting up the watch_cb function so that in errors it'll try to
restart. As most errors will be fixed by trying again.
2010-01-19 09:00:53 -0600 Ted Gould (38d6422)
* releasing version 0.3.0-0ubuntu2~ppa2
2010-01-19 08:59:05 -0600 Ted Gould (45e16a5)
* * Upstream Merge * Adding in entry ordering.
2010-01-19 08:58:24 -0600 Ted Gould (f48680f)
* Sync to trunk
2010-01-19 08:46:48 -0600 Ted Gould (eaf87fa)
* Support for entries having a location and moving that location.
2010-01-18 14:07:03 -0600 Ted Gould (292d5b0)
* releasing version 0.3.0-0ubuntu2~ppa2~ordering1
2010-01-18 14:05:59 -0600 Ted Gould (f419f42)
* * Upstream Merge * Adding in entry ordering.
2010-01-18 14:04:38 -0600 Ted Gould (a1032ca)
* Update from trunk.
2010-01-18 12:57:38 -0600 Ted Gould (2265c84)
* releasing version 0.3.0-0ubuntu2~ppa1
2010-01-18 12:56:14 -0600 Ted Gould (90990c6)
* * Upstream Merge * Adding in the code to restart services
2010-01-18 12:54:22 -0600 Ted Gould (bcf1d4e)
* Sync to trunk
2010-01-18 12:53:34 -0600 Ted Gould (e36616b)
* Adding the code for having the services automatically restart if
they crash.
2010-01-15 22:28:13 -0600 Ted Gould (079c2b5)
* It's a fundamental mistake to believe that we can protect people
using this interface from the disconnection. We have no
information to say that the new service starting will come
up in the same state as the one before it. We need the
individual implementers to verify that. Now we need to
fix that. This commit does so.
2010-01-15 22:19:16 -0600 Ted Gould (faa40d7)
* releasing version 0.3.0-0ubuntu2~ppa1~restart2
2010-01-15 22:17:57 -0600 Ted Gould (08192cc)
* * Upstream Merge * Emitting the connection changed signal better.
2010-01-15 22:16:45 -0600 Ted Gould (62d8c1c)
* Handling the connected signal as well, making sure we emit it.
2010-01-15 21:45:58 -0600 Ted Gould (f8d47e9)
* releasing version 0.3.0-0ubuntu2~ppa1~restart1
2010-01-15 21:44:49 -0600 Ted Gould (26f2421)
* * Upstream Merge * Adding in the code to restart services
2010-01-15 21:40:03 -0600 Ted Gould (deabfe6)
* Switching what our enviroment variable is for, let's just stop the
whole thing instead of playing with it.
2010-01-15 21:25:48 -0600 Ted Gould (9bccc14)
* Setting up the signal for when the proxies falls down, we restart.
2010-01-15 21:15:30 -0600 Ted Gould (2ce95b0)
* Filling out the function to start it again, and adding in the
function to respond to the timeout.
2010-01-15 20:38:04 -0600 Ted Gould (b9344c3)
* Reset the restart_count when we start, and start to bring in
'start_service_again' to begin to throttle the restarts.
2010-01-15 19:54:42 -0600 Ted Gould (41559b3)
* Getting a multiplier, and providing a way to override it using an
environment variable.
2010-01-15 16:11:42 -0600 Ted Gould (d7635fc)
* Having the signaller test check the 'moved' signal as well as the
others.
2010-01-15 16:08:35 -0600 Ted Gould (c25db99)
* No error on not having a get_location function. We'll just return
zero.
2010-01-15 15:58:56 -0600 Ted Gould (cb5f34b)
* Basic location checking test.
2010-01-15 15:35:55 -0600 Ted Gould (308e4db)
* Fleshing out the get_location function as much as they're
implemented here.
2010-01-15 15:28:31 -0600 Ted Gould (d334db5)
* Fixing the signal comments.
2010-01-15 15:16:30 -0600 Ted Gould (14b5823)
* Setting up the move signal, which required custom marshallers.
2010-01-15 15:04:20 -0600 Ted Gould (529ce66)
* API changes required to have locations for the entries.
2009-12-10 20:42:51 -0600 Ted Gould (58c6877)
* Ken loves us.
2009-12-10 12:18:01 -0500 Ken VanDine (b6fb26b)
* set release for lucid
2009-12-10 12:15:54 -0500 Ken VanDine (c45b838)
* * debian/control: - Added description for libindicator-tools
2009-12-10 12:02:39 -0500 Ken VanDine (697b324)
* set version number
2009-12-10 11:00:11 -0600 Ted Gould (5f5763c)
* releasing version 0.3.0-0ubuntu1~ppa1
2009-12-10 10:59:39 -0600 Ted Gould (b4fb802)
* releasing version 0.3.0~dev-0ubuntu1~ppa11
2009-12-10 10:58:39 -0600 Ted Gould (91d1528)
* * Upstream 0.3.0 Release * Adds a new tool to load indicators
from the command line. * Adds an object for loading
indicators. * Changes the indicator interface to be
object based. * debian/control, debian/libindicator0:
Adding in a new packages for the binary library.
2009-12-10 10:50:31 -0600 Ted Gould (cee358b)
* 0.3.0 (tag: 0.3.0)
2009-12-10 10:41:43 -0600 Ted Gould (5fb4592)
* Adding in license headers.
2009-12-10 10:32:31 -0600 Ted Gould (29cb00e)
* Adding in license headers.
2009-12-07 14:24:36 -0600 Ted Gould (97c515e)
* releasing version 0.3.0~dev-0ubuntu1~ppa10
2009-12-07 14:23:24 -0600 Ted Gould (93ef960)
* * Licensing and doc updates. * Minor code cleanups
2009-12-07 14:22:35 -0600 Ted Gould (2a521b2)
* Documentation, licenses, and some slight updates.
2009-12-07 13:11:39 -0600 Ted Gould (578ffd2)
* releasing version 0.3.0~dev-0ubuntu1~ppa9
2009-12-07 13:10:34 -0600 Ted Gould (53bd4b5)
* Adding in a service API version number.
2009-12-07 13:09:12 -0600 Ted Gould (483992f)
* Add in support for sevice API versions.
2009-12-07 13:07:43 -0600 Ted Gould (1347041)
* Fixing a typo in the error message -- noticed by David Barth.
2009-12-04 14:30:44 -0600 Ted Gould (c1fa836)
* GPLv3 copyright headers.
2009-12-04 13:50:43 -0600 Ted Gould (2d3d5b5)
* Implemented the _connected function as it's silly that it wasn't.
2009-12-04 13:39:49 -0600 Ted Gould (59b5bb7)
* More gtk-doc comments.
2009-12-03 23:25:57 -0600 Ted Gould (5852e0b)
* Adding in some comments and a little bit of code cleanup.
2009-12-03 16:25:33 -0600 Ted Gould (a6d2a69)
* Putting in comments for the functions.
2009-12-03 16:03:17 -0600 Ted Gould (873b502)
* Service version numbers.
2009-12-03 15:15:34 -0600 Ted Gould (ea29a8e)
* Adding a weak pointer to the service proxy.
2009-12-03 14:39:20 -0600 Ted Gould (8331ee5)
* Switching unwatch to being a no_reply function call.
2009-12-03 14:31:10 -0600 Ted Gould (436bca2)
* Full signal handlers so that we can see everything.
2009-12-03 08:49:16 -0600 Ted Gould (6db57d8)
* releasing version 0.3.0~dev-0ubuntu1~ppa8
2009-12-03 08:49:10 -0600 Ted Gould (fa0212c)
* autogen.sh fix. (LP: #491907)
2009-12-03 08:45:59 -0600 Ted Gould (360ae7a)
* Patch to fix autogen.sh
2009-12-03 08:36:08 -0600 Cody Russell (66a7877)
* Fix autogen.sh so parameters are passed
2009-12-02 15:58:52 -0600 Ted Gould (bc803c5)
* Merge in from trunk, now two failing tests.
2009-12-02 15:49:23 -0600 Ted Gould (1696a67)
* Forgot to delete the programs.
2009-12-02 15:35:26 -0600 Ted Gould (b2a0e03)
* Actually checking the version and erroring on it.
2009-12-02 15:15:21 -0600 Ted Gould (0c7f613)
* Specifying who can't get the session bus.
2009-12-02 15:15:03 -0600 Ted Gould (6bbe989)
* Printing out the session bus address
2009-12-02 15:11:29 -0600 Ted Gould (18351a8)
* Changing the names we're registering for to be correct.
2009-12-02 13:57:00 -0600 Ted Gould (937c28b)
* Not erroring when we're supposed to pass.
2009-12-02 13:56:44 -0600 Ted Gould (792315d)
* Adding a log domain for error messages
2009-12-02 13:42:29 -0600 Ted Gould (36f2ede)
* Adding a new test to look at version numbers.
2009-12-02 10:15:11 -0600 Ted Gould (a4e33bf)
* Adding _new functions that include the version number in them.
2009-12-02 10:06:43 -0600 Ted Gould (d7e9d01)
* Sending a version number for the local service.
2009-12-02 08:40:09 -0600 Ted Gould (8f124e3)
* releasing version 0.3.0~dev-0ubuntu1~ppa7
2009-12-02 08:37:01 -0600 Ted Gould (c986e2c)
* Adding an 'UnWatch' command to the standard DBus interface for
graceful disconnection from a service.
2009-12-02 08:35:41 -0600 Ted Gould (de38fc8)
* Adding an unwatch command to allow for graceful disconnection from
a service if we're not interested in it.
2009-12-01 16:45:54 -0600 Ted Gould (a1d20fb)
* Adding a property for version.
2009-12-01 16:34:32 -0600 Ted Gould (aa951a3)
* Change the watch function to return both an API version and a user
set version.
2009-12-01 16:07:26 -0600 Ted Gould (b7864d8)
* Only getting the bus once.
2009-12-01 13:44:30 -0600 Ted Gould (4ba1af3)
* Trying to get a proxy before starting the service every time. If
it exists, let's use it.
2009-12-01 13:37:00 -0600 Ted Gould (5757cfb)
* New files to ignore.
2009-12-01 13:35:30 -0600 Ted Gould (1b1a50d)
* Adding a test to ensure that a service gets shutdown by someone
unwatching it.
2009-12-01 10:47:13 -0600 Ted Gould (6e89bf0)
* Checking to make sure we don't get connected twice, that'd be an
error.
2009-12-01 10:43:10 -0600 Ted Gould (d69de93)
* Updating connection prototype to get all the data.
2009-12-01 10:40:17 -0600 Ted Gould (8f0f2ad)
* Making the timeout a failure case, and making it so that we want a
graceful shutdown.
2009-12-01 10:20:36 -0600 Ted Gould (824d1e8)
* Unwatching if we have mismatched version.
2009-12-01 10:19:11 -0600 Ted Gould (088eff4)
* When destroying the object we tell the watched service that we're
not watching it.
2009-12-01 10:12:51 -0600 Ted Gould (67aef7b)
* Using the define for the version on both sides
2009-12-01 10:11:50 -0600 Ted Gould (c0e2510)
* Finding the watcher and removing him from the list.
2009-12-01 09:58:05 -0600 Ted Gould (8a1912e)
* Add an unwatch function with a basic handler.
2009-11-24 16:36:04 -0600 Ted Gould (0d1af25)
* releasing version 0.3.0~dev-0ubuntu1~ppa6
2009-11-24 16:35:04 -0600 Ted Gould (5d0d185)
* * Adding a new tool to load indicators from the command line. *
debian/control, debian/libindicator-tools: Adding in a new
package for the tools of libindicator.
2009-11-24 16:34:20 -0600 Ted Gould (01c1439)
* Sync to trunk
2009-11-24 16:33:38 -0600 Ted Gould (ad2ef4d)
* Adding in a small tool to test loading of indicators on the command
line. (easier development)
2009-11-24 14:56:18 -0600 Ted Gould (d66daf8)
* releasing version 0.3.0~dev-0ubuntu1~ppa6~tl3
2009-11-24 14:55:22 -0600 Ted Gould (411182c)
* debian/control: Making sure the tools package is using the same
version of the library that it was built with.
2009-11-24 14:52:43 -0600 Ted Gould (8e82971)
* releasing version 0.3.0~dev-0ubuntu1~ppa6~tl2
2009-11-24 14:51:27 -0600 Ted Gould (f5ad201)
* Adding support for remove.
2009-11-24 14:50:53 -0600 Ted Gould (bfb7a29)
* Adding support for removing entries
2009-11-24 10:34:31 -0600 Ted Gould (06ac252)
* releasing version 0.3.0~dev-0ubuntu1~ppa6~tl1
2009-11-24 10:33:21 -0600 Ted Gould (5a914ca)
* debian/control, debian/libindicator-tools: Adding in a new package
for the tools of libindicator.
2009-11-24 10:28:51 -0600 Ted Gould (cc1c8d4)
* Adding a new tool to load indicators from the command line.
2009-11-24 10:19:34 -0600 Ted Gould (b6f78fa)
* Stopping the app when the window closes.
2009-11-24 10:13:44 -0600 Ted Gould (cd27c1b)
* Grabbing the entry added function as well, didn't realize how much
it did :)
2009-11-24 10:11:36 -0600 Ted Gould (a9b6d6f)
* Showing the menubar and window
2009-11-24 10:04:28 -0600 Ted Gould (93650be)
* Adding a small little tool to load an indicator from the command
line.
2009-11-16 23:23:12 -0600 Ted Gould (f8b4671)
* Merging in from Robert.
2009-11-16 23:18:28 -0600 Ted Gould (f040dac)
* releasing version 0.3.0~dev-0ubuntu1~ppa5
2009-11-16 23:18:22 -0600 Ted Gould (7b0d813)
* debian/control: Adding a depend for the -dev package on the base
library to stop users from linking staticly.
2009-11-17 14:06:59 +1100 Robert Collins (18eb9ed)
* Depend on libindicator0 to pull it in when libindicator-dev is a
build-dep.
2009-11-16 15:26:59 -0600 Ted Gould (961fafa)
* Confused
2009-11-16 15:26:25 -0600 Ted Gould (b72113b)
* releasing version 0.3.0~dev-0ubuntu1~ppa4
2009-11-16 15:25:07 -0600 Ted Gould (a095f05)
* releasing version 0.3.0~dev-0ubuntu1~ppa4
2009-11-16 15:25:01 -0600 Ted Gould (52fd9ea)
* 64-bit fix for printf's
2009-11-05 10:56:41 -0600 Ted Gould (a7b7787)
* 64-bit fix in that GTypes are not ints on 64-bit
2009-11-05 10:25:54 -0600 Ted Gould (a87ce28)
* releasing version 0.3.0~dev-0ubuntu1~ppa3
2009-11-05 10:25:09 -0600 Ted Gould (a6c762e)
* debian/control: Adding build deps dbus-glib as well.
2009-11-05 10:09:43 -0600 Ted Gould (2fb0a49)
* releasing version 0.3.0~dev-0ubuntu1~ppa2
2009-11-05 10:08:29 -0600 Ted Gould (3177188)
* debian/control: Adding build deps for the libraries we're using.
Seems we should have done that earlier, eh?
2009-11-05 09:16:25 -0600 Ted Gould (8569ff3)
* releasing version 0.3.0~dev-0ubuntu1~ppa1
2009-11-05 09:15:33 -0600 Ted Gould (20d9f0e)
* * Changing the object interface to allow for multiple items per
module. * Changing debian/libindicator-dev.install for the
adjusted include path.
2009-11-05 09:14:25 -0600 Ted Gould (c347400)
* Sync with trunk
2009-11-05 09:13:41 -0600 Ted Gould (db9e8f4)
* Changing the indicator-object API to support indicators that have
multiple entries, and are dynamic.
2009-11-04 13:18:22 -0600 Ted Gould (d6901e1)
* releasing version 0.3.0~dev-0ubuntu1~ppa1~multi1
2009-11-04 13:17:33 -0600 Ted Gould (15120ed)
* Changing version.
2009-11-04 13:16:34 -0600 Ted Gould (77033be)
* releasing version 0.2.1-0ubuntu2~ppa2~multi1
2009-11-04 13:13:23 -0600 Ted Gould (2802941)
* Changing debian/libindicator-dev.install for the adjusted include
path.
2009-11-04 13:07:37 -0600 Ted Gould (0512f86)
* Changing the object interface to allow for multiple items per
module.
2009-11-04 11:34:44 -0600 Ted Gould (34f914c)
* Changing the include directory as well.
2009-11-04 11:34:00 -0600 Ted Gould (4a558fc)
* Moving everything up to '3' as we're breaking everyone pretty bad
at this point.
2009-11-04 11:24:25 -0600 Ted Gould (2b754cb)
* Updating to current trunk.
2009-11-04 11:19:26 -0600 Ted Gould (534aab3)
* Use close instead of unreffing.
2009-11-04 11:14:22 -0600 Ted Gould (8c321fa)
* Adding a simple indicator test that checks to make sure we can
signal up the stack.
2009-11-04 10:55:48 -0600 Ted Gould (8033011)
* Building a dummy indicator that signals.
2009-11-04 10:53:14 -0600 Ted Gould (db2a239)
* Using the proper define for the type.
2009-11-04 08:19:04 -0600 Ted Gould (5ad8e30)
* releasing version 0.2.1-0ubuntu2~ppa1
2009-11-04 08:15:18 -0600 Ted Gould (3d93d5a)
* * Adding in service management code. * debian/control: Adding a
target for libindicator0 * Adding libindicator0.install
and libindicator-dev.install
2009-11-04 08:14:17 -0600 Ted Gould (61e1ae1)
* Updating to trunk
2009-11-03 23:22:23 -0600 Ted Gould (c547687)
* Adding a service management interface into libindicators as many
will use that.
2009-11-03 23:17:33 -0600 Ted Gould (7db7886)
* Adding in some ID helpers.
2009-11-03 23:15:10 -0600 Ted Gould (0db39bf)
* Adding in some signals to make for some more fun.
2009-11-03 22:42:39 -0600 Ted Gould (cb0c099)
* Making a warning not use a colloquialism.
2009-11-03 22:40:05 -0600 Ted Gould (cfa83c0)
* Changing version to service_version
2009-11-03 22:24:07 -0600 Ted Gould (b267db9)
* Updating to current trunk.
2009-11-03 22:23:16 -0600 Ted Gould (e354bc4)
* Changing the way the module is free'd
2009-11-03 22:16:43 -0600 Ted Gould (03e8903)
* Having the test expect an object, but fail when calling the
functions.
2009-11-03 21:44:51 -0600 Ted Gould (1a528a7)
* Make the tester dynamically link the lib so that there's not two
versions of everything.
2009-11-03 21:38:09 -0600 Ted Gould (10aa800)
* Linking the indicators with the libindicator library.
2009-11-03 21:33:08 -0600 Ted Gould (bffbb2c)
* Switching to checking the entires list instead of individual
functions.
2009-11-03 21:31:04 -0600 Ted Gould (57642ed)
* Converting the dummy indicators over to the new API. They compile
now.
2009-11-03 20:27:00 -0600 Ted Gould (9fa35ba)
* Syncing up with trunk before merging.
2009-11-03 20:23:41 -0600 Ted Gould (541f18c)
* Merging in an interface for loading modules cleanly.
2009-11-03 17:06:39 -0600 Ted Gould (c09917d)
* Changing comment on private struct.
2009-11-03 16:38:11 -0600 Ted Gould (1f96a34)
* Typo
2009-11-03 16:38:05 -0600 Ted Gould (258f461)
* Creating the actual backing function for
indicator_object_get_entries.
2009-11-03 14:00:08 -0600 Ted Gould (78868a0)
* Adding in a default handler for get_entries.
2009-11-03 13:40:10 -0600 Ted Gould (ed409d4)
* Whew, blew up the interface and built it back again.
2009-11-03 13:19:25 -0600 Ted Gould (0575b91)
* Redefining the interface. Now this object should get subclassed by
folks.
2009-11-03 13:03:50 -0600 Ted Gould (e2ce2dd)
* Removing the instance object. I think that we can do everything we
need by using the object.
2009-11-03 11:54:09 -0600 Ted Gould (6935a6b)
* Switching to a set_type function instead of making people do that
themselves.
2009-11-03 11:52:16 -0600 Ted Gould (aaacaac)
* Adding in the basis for the instance class.
2009-11-03 11:46:51 -0600 Ted Gould (614606a)
* Stripping out the symbols for the old stuff, and going with the new
of just getting a type.
2009-11-03 11:16:20 -0600 Ted Gould (1021a83)
* We need atleast the loader branch as that's what we want to change.
2009-11-03 09:34:00 -0600 Ted Gould (b3fc779)
* Typo
2009-11-03 09:31:53 -0600 Ted Gould (07c7bb1)
* Comments in the copyright statements updated.
2009-11-02 17:15:12 -0600 Ted Gould (ff0cc74)
* releasing version 0.2.1-0ubuntu2~ppa1~sm2
2009-11-02 17:14:34 -0600 Ted Gould (c626be5)
* Fixing package config file to point to library
2009-11-02 17:12:06 -0600 Ted Gould (0aa2106)
* Oops, we need to tell package config that we're a big library now.
2009-11-02 16:50:02 -0600 Ted Gould (a4652e1)
* releasing version 0.2.1-0ubuntu2~ppa1~sm1
2009-11-02 16:39:53 -0600 Ted Gould (00808f0)
* * debian/control: Adding a target for libindicator0 * Adding
libindicator0.install and libindicator-dev.install
2009-11-02 16:31:03 -0600 Ted Gould (8e4486c)
* Adding in service management code.
2009-11-02 16:17:31 -0600 Ted Gould (5ccc73b)
* Distcheck fixes. Looking for the files in the right place and
making sure we clean up after ourselves.
2009-11-02 16:14:53 -0600 Ted Gould (c3d30bd)
* We should pass the test if we get a connection, it means we
activated.
2009-11-02 16:13:28 -0600 Ted Gould (6cb18e9)
* We want to not get the shutdown. Since we're testing that we get
it without connection we can now assume that if we don't
get it we should pass.
2009-11-02 16:08:04 -0600 Ted Gould (ddb2ab7)
* Adding a fallback to the session bus after trying the starter bus.
2009-11-02 11:24:03 -0600 Ted Gould (5e5f495)
* Switching the name to match the service file... should fail.
2009-11-02 11:21:20 -0600 Ted Gould (dc5fbef)
* Building a service file.
2009-11-02 11:17:10 -0600 Ted Gould (9a15eec)
* Adding in the basic data needed to start bringing up a test to
start the service.
2009-11-02 10:48:18 -0600 Ted Gould (90446e0)
* Fixing up the build rules so that they're directory independent.
2009-11-02 09:35:48 -0600 Ted Gould (c99ef22)
* Some things are errors that should really be warnings.
2009-11-02 09:31:43 -0600 Ted Gould (0745e42)
* Ah, we can't throw an error on success.
2009-10-30 17:18:10 -0500 Ted Gould (911b9d7)
* Adding a test that ensures we don't get a connect signal.
2009-10-30 15:58:57 -0500 Ted Gould (aa1549d)
* Adding in the connected property and signalling when we're all
hooked up.
2009-10-30 11:30:49 -0500 Ted Gould (d9dc770)
* Ubuntu Desktop updates
2009-10-29 21:58:48 -0500 Ted Gould (a9e61b6)
* A service proxy, and then calling watch.
2009-10-29 21:28:48 -0500 Ted Gould (02ce4f5)
* Building the dbus proxy and using it a little bit.
2009-10-29 20:23:54 -0500 Ted Gould (c87569c)
* Ah, forgot to free name
2009-10-29 20:12:44 -0500 Ted Gould (12fbcd5)
* Properties functions.
2009-10-29 20:02:46 -0500 Ted Gould (9af4097)
* Signals and properties, oh my!
2009-10-29 17:34:00 -0500 Ted Gould (c099b03)
* Adding the API functions.
2009-10-29 17:22:29 -0500 Ted Gould (74296a6)
* Oops, forgot to set to passed.
2009-10-29 17:21:39 -0500 Ted Gould (5819476)
* Sending shutdown signal 500 ms after getting a name if we have no
watchers.
2009-10-29 17:18:51 -0500 Ted Gould (fbba415)
* Adding in the watchers and timeout parameter.
2009-10-29 16:29:47 -0500 Ted Gould (82aaaed)
* Adding in some shared strings for finding intefaces and objects.
2009-10-29 16:11:02 -0500 Ted Gould (2e39b18)
* Woot! We're a DBus service now.
2009-10-29 15:24:49 -0500 Ted Gould (f99a9f2)
* Building ourselves a DBus proxy.
2009-10-29 14:55:25 -0500 Ted Gould (145b214)
* Filling in more of the name property.
2009-10-29 13:45:37 -0500 Ted Gould (fbb2bc9)
* Adding in the 'name' property
2009-10-29 13:13:07 -0500 Ted Gould (621a7ba)
* Adding the shutdown signal
2009-10-29 13:03:39 -0500 Ted Gould (22a5b08)
* Woot! A failing test. Look how TDD I am.
2009-10-29 12:57:56 -0500 Ted Gould (a72fc58)
* Making the gtester stuff into a autotest thingy.
2009-10-29 11:34:44 -0500 Ted Gould (fc573dc)
* Creating a new test and linking it into things.
2009-10-29 11:33:37 -0500 Ted Gould (ec0809e)
* Putting a dummy implementation in for _new for linking
2009-10-29 10:49:12 -0500 Ted Gould (b60a7f1)
* Adding basic interfaces and docs to IndicatorService
2009-10-29 09:56:39 -0500 Ted Gould (0af9206)
* Defining some API and boot strapping documentation.
2009-10-29 09:33:21 -0500 Ted Gould (b8db818)
* Making 'INDICATOR' the prefix for the objects.
2009-10-29 09:27:05 -0500 Ted Gould (ba8af82)
* Putting in some templated objects.
2009-10-28 16:58:19 -0500 Ted Gould (606b493)
* Building ourselves a little dbus spec
2009-10-28 16:55:18 -0500 Ted Gould (15995b7)
* Adding a description for the indicator service.
2009-10-28 16:46:25 -0500 Ted Gould (0220cc7)
* Grabbing the loader branch
2009-10-28 16:43:19 -0500 Ted Gould (b98a481)
* Removing valgrind as I want to clean this branch up and make
another for that.
2009-10-28 16:41:34 -0500 Ted Gould (755adf0)
* Oh, legal headers. Fun, fun.
2009-10-28 16:37:49 -0500 Ted Gould (a8b1436)
* Adding in comments.
2009-10-14 09:08:40 -0500 Ted Gould (f28c65a)
* Adding in check for valgrind that we'll need for the test tools.
2009-10-11 22:06:46 -0500 Ted Gould (7cc9b8f)
* Adding the terballs into ignore
2009-10-11 22:05:28 -0500 Ted Gould (0b18e53)
* Making a tools directory
2009-10-11 21:50:46 -0500 Ted Gould (ccc7f82)
* using the blank dummy indicator
2009-10-11 21:49:22 -0500 Ted Gould (a2f4f86)
* Building a new dummy indicator that doesn't have any symbols in it.
2009-10-09 08:12:31 +0200 Martin Pitt (98c7033)
* releasing version 0.2.1-0ubuntu1 (tag: 0.2.1-0ubuntu1)
2009-10-08 21:03:30 -0400 Ted Gould (bb7b49a)
* Testing the accessors
2009-10-08 20:47:19 -0400 Ted Gould (5144944)
* Adding some accessor functions for the various GTK objects.
2009-10-08 20:22:59 -0400 Ted Gould (fda24e4)
* Maintaining a reference to the objects we create in the object.
2009-10-08 20:18:20 -0400 Ted Gould (32fc4b8)
* We need to use GTK.
2009-10-08 20:17:04 -0400 Ted Gould (9c16e7c)
* A better dummy menu.
2009-10-08 20:12:48 -0400 Ted Gould (97a4004)
* Create a very simple indicator and testing it.
2009-10-08 19:50:40 -0400 Ted Gould (a28e917)
* Being a bit more verbose
2009-10-08 19:49:23 -0400 Ted Gould (56450cf)
* Making it so that the null test checks for failure as we shoudln't
have a null image and label. Also making it so that
warnings don't cause the test to fail.
2009-10-08 19:48:44 -0400 Ted Gould (66b0d1b)
* Making it so that we use the same unref code as everyone else.
2009-10-08 19:17:15 -0400 Ted Gould (4ea2868)
* Truth again. Keeps bitting back. I shouldn't of lied in the 2nd
grade, I confess! No more, please.
2009-10-08 19:12:47 -0400 Ted Gould (b2942d9)
* Checking to see if a file exists before trying to load it.
2009-10-08 19:07:03 -0400 Ted Gould (18f6396)
* Truth. Sucks.
2009-10-08 19:04:51 -0400 Ted Gould (a65694f)
* Turning all the return if fails into proper if's with warning and
unref the object so there aren't any memory leaks.
2009-10-08 18:49:08 -0400 Ted Gould (3bafca7)
* Use the new build dir flag
2009-10-08 18:48:59 -0400 Ted Gould (3766586)
* Build dir fix and making gtester run all of them even if one fails.
2009-10-08 18:43:10 -0400 Ted Gould (bece9de)
* Making it so that we're not using g_return_if_fail as it messes up
the test suite.
2009-10-08 18:36:06 -0400 Ted Gould (f4b307c)
* Fleshing out the load from file function. Still fails.
2009-10-08 17:57:14 -0400 Ted Gould (bce9f51)
* A test to load the dummy indicator
2009-10-08 17:53:01 -0400 Ted Gould (1b828c9)
* Apparently they have to be installable to get the .so. Fail.
2009-10-08 17:11:47 -0400 Ted Gould (d946049)
* Adding a test that should pass as given a bad filename we should
get no object back.
2009-10-08 17:09:21 -0400 Ted Gould (b4d20eb)
* Adding a function to create an object from a file
2009-10-08 17:03:20 -0400 Ted Gould (c594126)
* Creating a dummy indicator that returns null
2009-10-08 17:02:06 -0400 Ted Gould (605f74b)
* Switch from GLib to GTK as that's what we really needed.
2009-10-08 16:34:13 -0400 Ted Gould (26ced5c)
* Using a weak ref instead of connecting to a signal that doesn't
exist
2009-10-08 16:32:19 -0400 Ted Gould (3bf9efb)
* Putting data in the private
2009-10-08 16:29:36 -0400 Ted Gould (4658844)
* Test to build the object and unref it.
2009-10-08 15:29:55 -0400 Ken VanDine (133d9bd)
* * Upstream release 0.2.1 (LP: #446619) * Puts a copyright header
on the header file. Should have been there all along.
2009-10-08 13:00:00 -0400 Ted Gould (1386478)
* Fleshing out the test a little bit.
2009-10-08 12:29:12 -0400 Ted Gould (c314d60)
* Adding in a simple little test.
2009-10-08 12:18:23 -0400 Ted Gould (fa946df)
* Adding in a tests folder
2009-10-08 12:05:36 -0400 Ted Gould (1ca9666)
* Ignoring our new file.
2009-10-08 10:17:18 -0400 Ted Gould (1518975)
* releasing version 0.2.1-0ubuntu1~ppa1
2009-10-08 10:16:40 -0400 Ted Gould (972ad5e)
* * Upstream release 0.2.1 * Puts a copyright header on the header
file. Should have been there all along.
2009-10-08 10:14:24 -0400 Ted Gould (6d8cd64)
* Merging in ubuntu-desktop branch
2009-10-08 10:11:01 -0400 Ted Gould (b5f41d1)
* 0.2.1 (tag: 0.2.1)
2009-10-06 19:07:31 -0400 Ted Gould (a7a8c73)
* Adding license information to the header
2009-10-06 16:32:23 -0400 Ted Gould (24d0253)
* Adding some pkg-config love to get things compiling all nice like.
2009-10-06 15:28:41 -0400 Ted Gould (1f822bf)
* Building a base object.
2009-10-06 11:00:34 -0400 Ted Gould (8935708)
* oops, should be GPLv3 not LGPLv3
2009-10-06 10:58:01 -0400 Ted Gould (0d87e4e)
* Header for the header file that has the LGPLv3
2009-09-10 20:22:50 +0200 Martin Pitt (90bed29)
* releasing version 0.2.0-0ubuntu1 (tag: 0.2.0-0ubuntu1)
2009-09-10 20:22:38 +0200 Martin Pitt (9075de4)
* more verbose changelog
2009-09-10 13:09:34 -0400 Ken VanDine (287766d)
* Upstream release 0.2.0 (LP: #427443)
2009-09-10 11:09:13 -0500 Ted Gould (7f83810)
* Merging in desktop branch
2009-09-10 11:05:56 -0500 Ted Gould (507d19b)
* releasing version 0.2.0-0ubuntu1~ppa1
2009-09-10 11:04:51 -0500 Ted Gould (2eb5232)
* Upstream release 0.2.0
2009-09-10 11:03:29 -0500 Ted Gould (1c30efe)
* Making 0.2.0 (tag: 0.2.0)
2009-08-25 08:38:04 +0200 Martin Pitt (e5afc87)
* releasing version 0.2.0~bzr325-0ubuntu1
2009-08-25 08:33:06 +0200 Martin Pitt (6736e77)
* debian/control: Fix Vcs-* links.
2009-08-25 08:32:27 +0200 Martin Pitt (f434a87)
* Flush changelog.
2009-08-24 12:20:28 -0400 Ken VanDine (7e26ec7)
* * debian/control: - Set both Vcs-Bzr and Vcs-Bzr-Browser, with
~ubuntu-desktop
2009-08-24 09:00:47 -0400 Ken VanDine (689de8d)
* New version (LP: #417039)
2009-08-19 11:38:23 -0500 Ted Gould (999dbf8)
* Using AM 1.11 silent mode
2009-08-18 13:55:03 -0500 Ted Gould (772dcaf)
* releasing version 0.2.0~bzr325-0ubuntu1~ppa1
2009-08-18 13:54:50 -0500 Ted Gould (0ec3b86)
* Removing the install file.
2009-08-18 13:45:00 -0500 Ted Gould (a810a01)
* * Merging in the seperation from indicator-applet * debian/*
Removing all of the indicator-applet stuff
2009-08-18 13:41:27 -0500 Ted Gould (f9bc0fe)
* Merging in the separation from indicator-applet
2009-08-18 11:52:09 -0500 Ted Gould (ba24704)
* Deleting everything only leaving libindicator
2009-08-17 09:18:22 -0500 Ted Gould (dcbb7eb)
* releasing version 0.2.0~bzr319-0ubuntu5~ppa5
2009-08-17 09:18:16 -0500 Ted Gould (8fda9af)
* Setting the icon path in the .pc file.
2009-08-08 09:55:54 -0600 Ted Gould (033de55)
* Adding an icons directory to the .pc file
2009-08-07 19:02:23 +0100 Ted Gould (79d17f5)
* releasing version 0.2.0~bzr319-0ubuntu5~ppa4
2009-08-07 19:02:11 +0100 Ted Gould (1a01d82)
* * Merging onto the main packaging branch. * Renaming the second
Bonobo server description file to match that of the
FastUserSwitchApplet. * Upstream merge for better naming
of the applet. * Updating from upstream with two (count
them) two applets installed in the source. *
debian/control: Adding information on indicator-applet-sus
which is a different applet for the SUS indicator. *
debian/indicator-applet.install: Making it more specific
so that it doesn't grab the directories that now have
additional files created by indicator-applet-sus
existing. * debian/indicator-applet-sus.install: List
files that are now used by the new binary package.
2009-08-07 19:00:00 +0100 Ted Gould (4aa0584)
* Merging in the branch making two applets.
2009-08-07 18:50:37 +0100 Ted Gould (853ef5b)
* releasing version 0.2.0~bzr319-0ubuntu5~ppa3
2009-08-07 18:50:32 +0100 Ted Gould (4054025)
* Renaming the second Bonobo server description file to match that of
the FastUserSwitchApplet.
2009-08-07 18:47:02 +0100 Ted Gould (3a8b5ca)
* Changing the Bonobo server description file name to match that of
FUSA.
2009-08-07 18:40:26 +0100 Ted Gould (721b0f9)
* releasing version 0.2.0~bzr319-0ubuntu5~ppa2
2009-08-07 18:40:19 +0100 Ted Gould (e97463e)
* Upstream merge for better naming of the applet.
2009-08-07 18:40:03 +0100 Ted Gould (31fac01)
* releasing version 0.2.0~bzr319-0ubuntu5~ppa1
2009-08-07 18:38:59 +0100 Ted Gould (38e4c74)
* Oops, we need more identity.
2009-08-07 18:31:45 +0100 Ted Gould (709f0a8)
* Locking the version number so the two indicator-applets are the
same
2009-08-07 18:30:27 +0100 Ted Gould (93135b1)
* * debian/control: Adding information on indicator-applet-sus which
is a different applet for the SUS indicator. *
debian/indicator-applet.install: Making it more specific
so that it doesn't grab the directories that now have
additional files created by indicator-applet-sus
existing. * debian/indicator-applet-sus.install: List
files that are now used by the new binary package.
2009-08-07 18:18:55 +0100 Ted Gould (ae15eee)
* Updating from upstream with two (count them) two applets installed
in the source.
2009-08-07 18:17:42 +0100 Ted Gould (8fd9f27)
* Switching the name to the proper server file.
2009-08-07 17:43:09 +0100 Ted Gould (65df6f1)
* Loading only the SUS plugin.
2009-08-07 17:41:21 +0100 Ted Gould (6c07c79)
* Blocking out SUS from standard applet.
2009-08-07 16:55:23 +0100 Ted Gould (3bb7806)
* Fixing the generation rules for the bonobo server files.
2009-08-07 16:06:32 +0100 Ted Gould (327dfdb)
* Ignoring more files.
2009-08-07 15:57:14 +0100 Ted Gould (2f92722)
* Switching the name to actually be correct.
2009-08-07 15:53:10 +0100 Ted Gould (059f1bf)
* Changing the name of the directory to -sus which makes more sense
2009-08-07 15:45:40 +0100 Ted Gould (c35dbea)
* New executable name
2009-08-07 15:32:30 +0100 Ted Gould (f33fa71)
* Renaming the server file
2009-08-07 14:24:33 +0100 Ted Gould (019d958)
* Adjusting the namespace. Just to make things fun like that.
2009-08-07 14:21:31 +0100 Ted Gould (f2a3bfc)
* Making the schema translatable
2009-08-07 14:19:27 +0100 Ted Gould (5bc7f7d)
* Adding a new server to connect with our new applet. Still needs
changes as it's just a copy.
2009-08-07 14:15:15 +0100 Ted Gould (99caa03)
* Adding a new build target for our new applet
2009-08-07 14:13:05 +0100 Ted Gould (a1ec732)
* Adding the new src to the build system
2009-08-07 12:14:44 +0100 Ted Gould (3b1bb35)
* New src entry
2009-08-06 14:57:57 +0100 Ted Gould (d7f91b9)
* Aurelien's patch to add a set_server function to indicators.
2009-08-06 15:43:38 +0200 Aurelien Gateau (937dba5)
* Updated documentation
2009-08-05 17:53:44 +0100 Ted Gould (a3eb3ea)
* Update to core-dev branch
2009-08-05 15:51:59 +0200 Aurelien Gateau (c4bd83a)
* Introduce indicate_indicator_set_server() so that server can be
defined for message indicators too.
2009-08-05 11:29:13 +0100 Jonathan Riddell (8223eb6)
* Add build-dep on gtk-doc-tools
2009-08-05 11:12:14 +0100 Jonathan Riddell (924a0a6)
* merge with Ken, fix gtk-doc
2009-08-05 09:50:42 +0100 Ken VanDine (bff1218)
* indicator-applet (0.2.0~bzr319-0ubuntu3) karmic; urgency=low
2009-08-05 01:26:47 +0100 Ted Gould (6a2b4b1)
* releasing version 0.2.0~bzr319-0ubuntu1~ppa5
2009-08-05 01:26:41 +0100 Ted Gould (cc920f1)
* Upstream fix for server.c and get indicators with hidden indicators
in the list.
2009-08-05 01:25:55 +0100 Ted Gould (a3e59c2)
* Maintaining the count independent of the entires.
2009-08-05 00:41:16 +0100 Jonathan Riddell (07a83fa)
* Run ./autogen.sh before upload
2009-08-05 00:23:53 +0100 Jonathan Riddell (daaa9a5)
* tidy changelog for release
2009-08-05 00:19:38 +0100 Jonathan Riddell (cb9d427)
* merge current package for upload,
https://code.edge.launchpad.net/~indicator-applet-developers/indicator-applet/applet-packaging/+merge/9671
2009-08-04 12:30:59 +0100 Ted Gould (42ba02f)
* releasing version 0.2.0~bzr319-0ubuntu1~ppa4
2009-08-04 12:26:53 +0100 Ted Gould (c495a62)
* Upstream fix to PC file.
2009-08-04 12:25:24 +0100 Ted Gould (e4ac1dc)
* Update the pc file from the GTK split out.
2009-08-04 10:53:52 +0100 Ted Gould (72093e2)
* releasing version 0.2.0~bzr319-0ubuntu1~ppa3
2009-08-04 10:53:46 +0100 Ted Gould (41c535b)
* debian/control: Fixing the library reference of libindicate-gtk-dev
2009-08-04 10:52:00 +0100 Ted Gould (96ace70)
* releasing version 0.2.0~bzr319-0ubuntu1~ppa2
2009-08-04 10:51:33 +0100 Ted Gould (64034dd)
* Forgot to autogen.sh
2009-08-04 10:27:44 +0100 Ted Gould (541c9b2)
* releasing version 0.2.0~bzr319-0ubuntu1~ppa1
2009-08-04 10:27:27 +0100 Ted Gould (dd164ac)
* Setting up the merge history correctly.
2009-08-04 10:27:08 +0100 Ted Gould (5909ee4)
* * Merging in upstream code to split out libindicate-gtk *
debian/control: * Changing the version number of
libindcate to 2 to match the .so numbering. *
Creating packages for libindicate-gtk * Added
libindicate-gtk-dev.install and libindicate-gtk0.install
for the new library. * Renamed libindicate1.install to
libindicate2.install to match the package name change. *
Modified libindicate-dev to be more specific about the
header files that it grabs.
2009-08-04 10:24:51 +0100 Ted Gould (74bc54c)
* Merging in the splitout of a GTK version of the lib
2009-08-04 01:38:29 +0100 Ted Gould (63ed0ba)
* releasing version 0.2.0~bzr309-0ubuntu4~ppa2
2009-08-04 01:36:30 +0100 Ted Gould (54b4e00)
* debian/control: Fixing some libindicate1's that should be
libindicate2 and making everything dependent on the
versions that are built here in the package.
2009-08-04 01:31:34 +0100 Ted Gould (be06bcb)
* releasing version 0.2.0~bzr309-0ubuntu4~ppa1
2009-08-04 01:26:31 +0100 Ted Gould (6401c45)
* Adding in a make fix
2009-08-04 01:26:10 +0100 Ted Gould (16b15aa)
* Adding libindicate a build include
2009-08-04 00:32:09 +0100 Ted Gould (8bed775)
* * Added libindicate-gtk-dev.install and libindicate-gtk0.install
for the new library. * Renamed libindicate1.install to
libindicate2.install to match the package name change. *
Modified libindicate-dev to be more specific about the
header files that it grabs.
2009-08-04 00:27:09 +0100 Ted Gould (84f0002)
* * debian/control: * Changing the version number of libindcate to
2 to match the .so numbering. * Creating packages
for libindicate-gtk
2009-08-04 00:23:05 +0100 Ted Gould (a1fa7ba)
* Merging in upstream code to split out libindicate-gtk
2009-08-04 00:18:10 +0100 Ted Gould (475cf3d)
* Removing some more noise
2009-08-04 00:14:37 +0100 Ted Gould (2b41594)
* Ignoring the tarball
2009-08-04 00:10:35 +0100 Ted Gould (34baaec)
* Ignoring the right file
2009-08-04 00:08:51 +0100 Ted Gould (c3034d9)
* Making seperate versioning for libindicate-gtk
2009-08-04 00:06:00 +0100 Ted Gould (b31efb2)
* Bumping the version as we removed a function.
2009-08-04 00:01:06 +0100 Ted Gould (8850baa)
* A bunch of distcheck fixes to clean things up
2009-08-03 23:53:40 +0100 Ted Gould (3497522)
* Some odd change
2009-08-03 23:53:17 +0100 Ted Gould (3ec1d88)
* Last libgtk-pixbuf header
2009-08-03 23:52:48 +0100 Ted Gould (8c7a1a7)
* Removing GTK dependencies from the libindicate stuff
2009-08-03 23:49:42 +0100 Ted Gould (d94f22a)
* Fixing these guys to include the -gtk library where needed
2009-08-03 23:45:34 +0100 Ted Gould (f6fb98d)
* Some ignore files for fun
2009-08-03 23:43:37 +0100 Ted Gould (793db0f)
* Oops, forgot the listener stuff
2009-08-03 23:31:00 +0100 Ted Gould (78ad4c4)
* Moving the listener code and some indicator code into
libindicate-gtk
2009-08-03 19:25:05 +0100 Ted Gould (840e1c8)
* Okay, now it is the offending function in it.
2009-08-03 19:10:34 +0100 Ted Gould (ecde85f)
* Creating a default little GTK library to move the GTK stuff in
2009-08-03 18:50:57 +0100 Ted Gould (b3d3f3d)
* Adding a function to set the server of the indicator upon creation.
indicate_indicator_new_with_server()
2009-08-03 18:12:34 +0100 Ted Gould (573c458)
* Merging in changes to the destroy and removing a warning.
2009-08-03 18:08:22 +0100 Ted Gould (f344374)
* Ignoring built files
2009-07-27 17:20:24 +0200 Aurelien Gateau (7f379d5)
* Removed warning: it's annoying in unittests.
2009-07-27 17:18:41 +0200 Aurelien Gateau (8157a2c)
* Destroy dbus proxies in listener finalize.
2009-07-21 11:41:46 -0500 Ted Gould (5390823)
* Fixing the other signal marshallers
2009-07-21 11:39:26 -0500 Ted Gould (b8b2c52)
* Using the server marshaller
2009-07-21 11:37:51 -0500 Ted Gould (5cbbca2)
* Creating the server marshallers that we need
2009-07-21 10:42:36 -0500 Ted Gould (e3a0b5a)
* Oops, we shouldn't have a prototype for a function that doesn't
exist. Thanks to Aurilien.
2009-07-17 21:24:56 -0500 Ted Gould (064740b)
* releasing version 0.2.0~bzr309-0ubuntu3
2009-07-17 21:24:31 -0500 Ted Gould (61730d0)
* Now moving on to Karmic
2009-07-17 21:24:00 -0500 Ted Gould (c594f60)
* releasing version 0.2.0~bzr309-0ubuntu2
2009-07-03 14:42:38 -0500 Ted Gould (049947b)
* Configure change to cleanup output
2009-07-03 14:41:48 -0500 Ted Gould (7867885)
* A little like mentioned on the GNOME Wiki, but doesn't work until I
have a higher version of automake. Doesn't seem to cause
problems though.
2009-06-08 09:31:48 -0500 Ted Gould (63dad6a)
* Patch from Mark Trompell to make suffix checking better.
2009-05-13 15:01:34 -0500 Ted Gould (aee8914)
* debian/control, debian/libindicate-doc.install: Merging in Ken
Vandine's work on making a -doc package for libindicate.
2009-05-13 14:52:04 -0400 Ken VanDine (f36cc1b)
* added debian/libindicate-doc.install
2009-05-13 13:25:33 -0400 Ken VanDine (10e5164)
* Added package libindicate-doc and removed dbus-test-runner build
requirement
2009-05-05 16:45:01 +0100 Ted Gould (e38da9b)
* Merge from upstream, includes documentation.
2009-05-05 16:43:20 +0100 Ted Gould (7926d56)
* Merging in the documentation branch.
2009-04-30 22:30:15 -0500 Ted Gould (1b3fd92)
* Never understand this file really.
2009-04-30 22:30:04 -0500 Ted Gould (395ae9a)
* Fixing function listing
2009-04-30 22:29:44 -0500 Ted Gould (c027c7f)
* Fixing typo
2009-04-30 21:45:19 -0500 Ted Gould (3810da4)
* Fixing some documentation bugs.
2009-04-30 21:42:39 -0500 Ted Gould (51f63e1)
* Documenting most of the public visible functions
2009-04-30 20:58:42 -0500 Ted Gould (1595ee2)
* Adding in arguments for the signals
2009-04-30 20:53:10 -0500 Ted Gould (f64bd73)
* Adding in arguments on the signal docs.
2009-04-30 20:44:43 -0500 Ted Gould (dbfd181)
* Woot, signal documentation works now.
2009-04-30 20:37:52 -0500 Ted Gould (15720aa)
* Basic signals docs.
2009-04-30 20:24:53 -0500 Ted Gould (f4a1e46)
* Server section documentation.
2009-04-30 20:17:52 -0500 Ted Gould (a1ba880)
* Comments for the class, who put all those functions on there...
2009-04-30 16:57:51 -0500 Ted Gould (933bcaa)
* Adding in message documentation and cleaning up some mistakes as I
see them.
2009-04-30 16:04:09 -0500 Ted Gould (298abb1)
* Never understand this file
2009-04-30 16:03:42 -0500 Ted Gould (ef5a4ba)
* Doing a better job about defining out the documentation gets
created and looks. Much cleaner.
2009-04-30 15:50:27 -0500 Ted Gould (0b5e0c1)
* Breaking out into sections.
2009-04-30 15:40:06 -0500 Ted Gould (a77a808)
* Section information
2009-04-30 15:16:47 -0500 Ted Gould (cd973f1)
* Adding to the unused side of things.
2009-04-30 15:16:06 -0500 Ted Gould (6a4918e)
* Removing the big defines that aren't useful and the boilerplate
get_type functions.
2009-04-30 15:12:37 -0500 Ted Gould (d73f65f)
* Reformatting to make gtk-doc happy.
2009-04-30 14:35:30 -0500 Ted Gould (9201eb6)
* Making it more like English and less like a pointer table.
2009-04-30 14:29:40 -0500 Ted Gould (877ac7a)
* Adding in IndicateIndicatorClass documentation.
2009-04-30 14:10:41 -0500 Ted Gould (dd49cd3)
* What is the server
2009-04-30 14:10:33 -0500 Ted Gould (47c4b8e)
* Typo
2009-04-30 14:06:45 -0500 Ted Gould (43f575e)
* Getting most of the indicator documentation in the pool.
2009-04-30 13:07:29 -0500 Ted Gould (1c91e43)
* Turns out that gtk-doc can't have the name of the function on the
same line as the start of the comment. How stupid.
2009-04-30 12:08:32 -0500 Ted Gould (a41eab6)
* Removing symbols that shouldn't be in the docs anyway.
2009-04-30 12:04:20 -0500 Ted Gould (73a5c92)
* Ignoring the dbus and glib-marshaller generated header files.
2009-04-30 11:51:46 -0500 Ted Gould (f62b836)
* Dispaly typo
2009-04-30 11:40:56 -0500 Ted Gould (c73af69)
* First pass at trying to create some function documentation for
Indicator
2009-04-29 10:11:52 -0500 Ted Gould (0ed0749)
* Patch from Niel Patel to close the directory after opening it.
2009-04-29 10:11:21 -0500 Ted Gould (89235a4)
* Patch from Niel Patel to close the directory after opening it.
2009-04-27 11:06:50 -0500 Ted Gould (f6767c8)
* releasing version 0.2.0~bzr307-0ubuntu2
2009-04-27 11:06:42 -0500 Ted Gould (f6f7c27)
* Increment for PPA. Forgot to autogen.sh
2009-04-27 10:52:33 -0500 Ted Gould (d8582f7)
* releasing version 0.2.0~bzr307-0ubuntu1
2009-04-27 10:51:25 -0500 Ted Gould (60e4dde)
* debian/control: Adding a build-dep on dbus-test-runner
2009-04-27 10:50:40 -0500 Ted Gould (73e576b)
* Upstream Snapshot: Adding in a test suite.
2009-04-27 10:48:38 -0500 Ted Gould (0f174a8)
* How important a simple backslash is :)
2009-04-27 10:42:39 -0500 Ted Gould (d2d0c7a)
* Merging in the testing branch to get some tests for this guy
2009-04-27 10:39:20 -0500 Ted Gould (5899a3f)
* Switching to system dbus-test-runner
2009-04-22 23:46:48 -0500 Ted Gould (183d218)
* releasing version 0.2.0~bzr305-0ubuntu1
2009-04-22 23:46:23 -0500 Ted Gould (fd65e07)
* Upstream update
2009-04-22 23:44:06 -0500 Ted Gould (c292100)
* Get the submenu set right.
2009-04-22 22:06:00 -0500 Ted Gould (2f6ccdf)
* Slipping in the hbox
2009-04-22 22:02:05 -0500 Ted Gould (d075aee)
* Oops, cut and paste error, pulling up the wrong symbols
2009-04-22 17:09:11 -0500 Ted Gould (e1eb7c8)
* releasing version 0.2.0~bzr302-0ubuntu1
2009-04-22 17:09:03 -0500 Ted Gould (836e265)
* Upstream snapshot, turning version getting feature into a function
and adding a name symbol outline.
2009-04-22 17:08:17 -0500 Ted Gould (18397c8)
* Turning versions into a function and adding a name symbol. Not yet
used though.
2009-04-22 15:56:02 -0500 Ted Gould (f5044ea)
* releasing version 0.2.0~bzr301-0ubuntu1
2009-04-22 15:55:50 -0500 Ted Gould (2c0d0d8)
* Upstream snapshot, fixing indicator.h
2009-04-22 15:53:30 -0500 Ted Gould (ef4bfde)
* Wow, the genius of making a symbol you want to export static is
simply amazing. It's truly a wonder of nature that I can
tie my shoes in the morning.
2009-04-22 15:23:20 -0500 Ted Gould (adfd764)
* releasing version 0.2.0~bzr300-0ubuntu1
2009-04-22 15:23:13 -0500 Ted Gould (fded83b)
* Upstream snapshot, fixing indicator.h
2009-04-22 15:22:14 -0500 Ted Gould (c0b1f48)
* Oops, not what I wanted. These should have been prototypes not
global variables. Takes a second to think about it, but
yeah, that's what they were.
2009-04-22 14:52:19 -0500 Ted Gould (d332ad5)
* releasing version 0.2.0~bzr299-0ubuntu1
2009-04-22 14:49:27 -0500 Ted Gould (180822b)
* Upstream snapshot, forgot a + on GTK
2009-04-22 14:48:36 -0500 Ted Gould (20cfaa9)
* Forgot a + on gtk
2009-04-21 22:31:30 -0500 Ted Gould (a380678)
* releasing version 0.2.0~bzr298-0ubuntu1
2009-04-21 20:45:05 -0500 Ted Gould (74a2953)
* * debian/control: * Add in package libindicator-dev * Add build
depends on libxml2-dev for upstream dep
2009-04-21 20:42:26 -0500 Ted Gould (6465b8b)
* * debian/control: Add in package libindicator-dev *
debian/libindicate-dev.install: Add greater specificity on
what gets installed to not get confused with files from
libindicator * debian/libindicator-dev.install: Specify
which files should be put into the development package.
2009-04-21 17:07:21 -0500 Ted Gould (b630f12)
* Upstream snapshot
2009-04-21 17:05:44 -0500 Ted Gould (65381a4)
* Release by core-dev into Ubuntu
2009-04-21 15:14:52 -0500 Ted Gould (8c6656e)
* Changing to an icon and a lable and building our own item
2009-04-21 15:01:19 -0500 Ted Gould (ae26892)
* Putting in and checking version information to ensure we all agree
about the header version
2009-04-21 14:49:57 -0500 Ted Gould (4023d35)
* Fixing and using the new indicator header. This will help to
connect things together and make them actually work in a
reasonably type safe way.
2009-04-21 14:35:49 -0500 Ted Gould (b0c9eb5)
* Moving the indicators directory to match libindicator
2009-04-21 14:34:19 -0500 Ted Gould (292b04e)
* Setting the indicators directory manually
2009-04-21 14:15:22 -0500 Ted Gould (61bc03a)
* Creating an indicator lib to make sure we can attach all these
things together.
2009-04-20 15:39:42 -0500 Ted Gould (6f87e9c)
* Adding a test to build a bunch of indicators
2009-04-20 14:44:25 -0500 Ted Gould (ecad1e3)
* Adding in multiple servers connecting in to declare interest test
2009-04-20 13:16:14 -0500 Ted Gould (c5cc32d)
* Expanding range of interest test and not checking to see if we got
none, we shouldn't get it.
2009-04-20 13:13:04 -0500 Ted Gould (76d5d0d)
* Gaurding against setting bad interests
2009-04-20 12:36:07 -0500 Ted Gould (38c6ce2)
* Adding an interests test
2009-04-20 12:16:33 -0500 Ted Gould (443c83a)
* Woot, now we do distcheck too
2009-04-20 12:11:19 -0500 Ted Gould (5f5f476)
* Distcheck fixes
2009-04-20 12:10:58 -0500 Ted Gould (43cf92a)
* Chaning the include so that it works for make distcheck
2009-04-20 11:25:33 -0500 Ted Gould (8162f71)
* Adding in a simple test
2009-04-20 10:57:57 -0500 Ted Gould (ecfb1c2)
* Build infrastructure for first test
2009-04-20 09:34:10 -0500 Ted Gould (a1ccd1a)
* Moving tests to examples
2009-04-14 11:36:17 +0200 Martin Pitt (d10264b)
* releasing version 0.1.6-0ubuntu1
2009-04-14 11:36:10 +0200 Martin Pitt (4959fae)
* * New upstream version * Applied the same fixes as Cody Russell's
patch to indicator-messages to the finalize functions
here. Should fix LP: #359018 completely. * Minor
warnings fixes in search of solution to above.
2009-04-13 14:52:22 -0500 Ted Gould (8270f15)
* Adding in support for finding out if people are interesting on the
bus using introspection instead of sending a random
function call to them and seeing what happens.
2009-04-13 14:47:35 -0500 Ted Gould (e32b37d)
* Commenting out some debug messages
2009-04-13 14:41:33 -0500 Ted Gould (46a050c)
* Less debug
2009-04-13 14:16:25 -0500 Ted Gould (135906b)
* Ah, a typo. Bother.
2009-04-13 14:15:01 -0500 Ted Gould (dec69be)
* Okay, connected into that other there code... let's see what
happens.
2009-04-13 14:07:46 -0500 Ted Gould (24e268d)
* Fleshing out some
2009-04-13 13:30:31 -0500 Ted Gould (bde7e27)
* Whoa, it like builds and stuff
2009-04-13 11:54:33 -0500 Ted Gould (2edf3fb)
* Fixes to the finalize functions.
2009-04-13 11:31:28 -0500 Ted Gould (cb60d3f)
* * New upstream version * Applied the same fixes as Cody Russell's
patch to indicator-messages to the finalize functions
here. Should fix LP: #359018 completely. * Minor
warnings fixes in search of solution to above.
2009-04-13 11:29:13 -0500 Ted Gould (61ded01)
* Merging in core-dev
2009-04-13 10:56:39 -0500 Ted Gould (70223e1)
* Making into a 6 (tag: 0.1.6)
2009-04-13 10:30:28 -0500 Ted Gould (f7dc7fa)
* Adding a bug number
2009-04-13 10:09:20 -0500 Ted Gould (f0fa474)
* Adding in call to the parent class' finalize function as well, this
should free all the way up to the top.
2009-04-12 21:55:06 -0500 Ted Gould (a1207dc)
* Updating from trunk
2009-04-12 21:42:30 -0500 Ted Gould (e9ef5ec)
* Some slight code cleanups to remove warnings
2009-04-12 21:41:48 -0500 Ted Gould (ce66459)
* Proto-pseudo-code for the introspection functions that are going to
be needed
2009-04-11 23:07:38 -0500 Ted Gould (a09510f)
* Fixing some pedantic little bugs to try and figure out what's
causing 359018
2009-04-10 15:51:26 -0500 Ted Gould (20836b8)
* Adding in libxml linking
2009-04-10 14:33:59 -0500 Ted Gould (551a97c)
* Dummy to put bug number in.
2009-04-10 14:32:37 -0500 Ted Gould (f4bfa1f)
* Create the virtual function for checking interest.
2009-04-10 14:19:31 -0500 Ted Gould (28e006b)
* Merging in Eitan's gtype-ify of the enums and the
IndicateListener... objects.
2009-04-10 14:07:43 -0500 Ted Gould (70697a6)
* Marking the dev branch as such.
2009-04-10 13:16:39 +0300 Eitan Isaacson (bcdeb13)
* gtypify IndicateListenerIndicator
2009-04-10 12:51:16 +0300 Eitan Isaacson (a3188d2)
* changed IndicateListenerServer to a gtyped pointer instead of a
gboxed.
2009-04-08 18:14:27 +0300 Eitan Isaacson (8f4019b)
* Changed marshallers to GBoxed for IndicatorListenerServer. Make
copy/free functions empty for now.
2009-04-08 16:47:46 +0300 Eitan Isaacson (a300f6c)
* GBoxed IndicateListenerServer
2009-04-08 14:25:50 +0300 Eitan Isaacson (0307775)
* gtypified the interests enum.
2009-04-08 10:57:41 +0200 seb128 (df604ba)
* releasing version 0.1.5-0ubuntu1
2009-04-07 23:08:20 -0500 Ted Gould (746b6aa)
* Cleaning up changelog
2009-04-07 23:07:04 -0500 Ted Gould (198fee2)
* Merging in core-dev branch
2009-04-07 22:26:07 -0500 Ted Gould (2ffebac)
* Explicitly sets the about window's window icon. (LP: #356437)
2009-04-07 22:25:24 -0500 Ted Gould (a8ab75d)
* Lots of fixes from trunk
2009-04-07 22:22:53 -0500 Ted Gould (c1955c5)
* Added in an 'icon-name' to make the about dialog have a proper
icon. (tag: 0.1.5)
2009-04-07 22:17:11 -0500 Ted Gould (13aa4e5)
* on both client and server side. (LP: #353112) * Makes it so that
all objects down to the menu now use the gtkstyle naming
from FUSA to ensure that they all pick up the theme hacks
that are set for FUSA. (LP: #334490)
2009-04-07 22:12:15 -0500 Ted Gould (b2d85cf)
* * debian/libindicate0.install changed to
debian/libindicate1.install * New upstream version: *
Adds new API for detecting interests of various listeners.
Implemented on both client and server side. (LP:
353112)
2009-04-07 21:13:07 -0500 Ted Gould (75002ff)
* Clearing another warning. Shame gdk doesn't do this one for us.
2009-04-07 21:08:27 -0500 Ted Gould (9a7bcf3)
* Patch from Eitan Isaacson to correct prototype. Had to be adjusted
slightly as the prototypes had moved.
2009-04-07 21:02:08 -0500 Ted Gould (7115f77)
* Ignoring our new test
2009-04-07 20:52:05 -0500 Ted Gould (eba8697)
* Patch from Eitan Isaacson to remove a ref/unref infinite loop that
effectively made it so that we kept our objects forever.
While we love them, at some point we need to say goodbye.
2009-04-07 17:40:25 -0500 Ted Gould (3e1e512)
* Making it so that we don't register the object twice. This is
really a work around, but it's atleast fixes the crasher.
Which sucked. We need to work with the dbus folks to make
this better.
2009-04-07 17:34:45 -0500 Ted Gould (596a5db)
* Adding show hide server test from Eitan on bug 351537
2009-04-07 15:45:35 -0500 Ted Gould (0b820c7)
* Moving the install file.
2009-04-07 11:44:47 -0500 Ted Gould (98d4485)
* debian/control: Switching libindicate0 to libindicate1 to express
the fact that the binary compatibility is broken.
2009-04-07 11:43:02 -0500 Ted Gould (7f23e11)
* I finally understood what seb128 told me about the version
numbering. I feel so stupid for not understanding before
:)
2009-04-07 10:15:39 -0500 Ted Gould (912a2a1)
* Hiding some debugging messages.
2009-04-07 10:14:00 -0500 Ted Gould (9bd1519)
* Simplifying error message
2009-04-06 21:44:50 -0500 Ted Gould (8b71317)
* Fixes for dev stuff.
2009-04-06 21:42:16 -0500 Ted Gould (42492db)
* * Some debug messages * Making the comparison of interests detect
changings properly * Correctly use g_list_remove in
several cases making for long lists * Using g_list_prepend
instead of append because it's faster. * Checking whether
we've got proxies before destroying them.
2009-04-03 15:09:55 -0500 Ted Gould (f252656)
* Header fixes
2009-04-03 15:09:30 -0500 Ted Gould (5f46d7f)
* Merge from upstream for header file fixes.
2009-04-03 15:09:06 -0500 Ted Gould (06dd63a)
* Moving private interests out of the public header file.
2009-04-03 12:50:10 -0500 Ted Gould (76c68f9)
* Merging in dev stuff. This'll break things.
2009-04-03 12:48:28 -0500 Ted Gould (5e3c75a)
* Merge in from the Dev branch
2009-04-03 12:47:23 -0500 Ted Gould (05b5aa4)
* Not quite sure how these got added, but I'm not going to fight it.
2009-04-03 12:45:38 -0500 Ted Gould (4f5d2b5)
* Trying to get to a sane state. I apparently don't know as much
about library versioning as I thought I did.
2009-04-03 12:27:31 -0500 Ted Gould (d93da3d)
* Hiding all of the functions that part of the DBus interface in that
now they're all prefixed with '_' so that they don't get
exported as part of the library symbols. This should
simplify everything a little bit for implementors.
2009-04-03 12:14:07 -0500 Ted Gould (eb5078b)
* Getting rid of everything starting with 'd'. This gets rid of the
dbus stuff that isn't set up to be static, which is silly.
2009-04-03 11:32:35 -0500 Ted Gould (be4c002)
* Hiding the marshsallers from the libraries in the symbols by adding
a _ in front of them.
2009-04-03 11:28:44 -0500 Ted Gould (303c52b)
* Cleaning up the exported symbols, make sure that 'get_type_cb'
isn't exported
2009-04-03 10:51:10 -0500 Ted Gould (c9b2fe4)
* Getting to version 0.2.0
2009-04-03 10:49:56 -0500 Ted Gould (68d7bf9)
* Trying to have more style information included so that we can get
rid of the focus line.
2009-04-03 10:36:10 -0500 Ted Gould (16abe6d)
* Adding interests on new servers saying that we're displaying the
indicators and in the server.
2009-04-03 10:22:20 -0500 Ted Gould (96c1883)
* Fleshing out the functions in the listener to set interests.
2009-04-02 16:38:47 -0500 Ted Gould (68fb067)
* Putting in some protection from crazy values
2009-04-02 16:36:27 -0500 Ted Gould (2f66ceb)
* Hiding debug
2009-04-02 16:35:38 -0500 Ted Gould (5c9e92e)
* Adding a bunch of debugging messages and fixing the lifecycle for
the folk pointer. Lots'o'fun. But things seem to be
working.
2009-04-02 16:12:19 -0500 Ted Gould (6826848)
* Filling in the dbus owner changing code. Now we should catch
those.
2009-04-02 16:11:34 -0500 Ted Gould (1554425)
* Adding printouts for interest changes.
2009-04-02 15:23:10 -0500 Ted Gould (26bfe1c)
* Connecting in the DBus messaging that we need.
2009-04-02 14:08:55 -0500 Ted Gould (6e42996)
* Fleshing out the interest setting and removing functions.
2009-04-02 13:35:20 -0500 Ted Gould (aa7ec58)
* Updating unused file
2009-04-02 13:34:40 -0500 Ted Gould (f94b485)
* Adding in folks support.
2009-04-02 11:34:56 -0500 Ted Gould (1212c8e)
* Adding the interest removed and interest added signals in.
2009-04-02 11:11:20 -0500 Ted Gould (5ebb3c4)
* Woot! Now we have some real functions to call!
2009-04-02 11:05:35 -0500 Ted Gould (b874768)
* I can't believe I messed up this one. Luckily it doesn't seem to
have caused any bugs. Man.
2009-04-02 10:49:35 -0500 Ted Gould (6e51efb)
* Switching around the show_interest and remove_interest functions so
that they are now asyncronous. Not that being
asynchronous is important but more that now they get the
Method Invocation interface that we can use to find out
the sender of the message. Changed various APIs as a
result of this, and moved the DBus functions to be
internal.
2009-04-01 15:54:55 -0500 Ted Gould (58403a8)
* Adding new functions show_interest and remove_interest into the
API. Now to fill in the backend.
2009-04-01 15:27:42 -0500 Ted Gould (966a1e5)
* Adding a remove and show interest
2009-04-01 15:23:31 -0500 Ted Gould (bae37d9)
* Change the API so it's more like we're keeping a list of what, and
who are interested in. This'll make it easier for us to
manage all the DBus nastyness.
2009-04-01 14:56:31 -0500 Ted Gould (e6287ab)
* Adding stuff to ignore, much better
2009-04-01 14:50:13 -0500 Ted Gould (7fea958)
* Misspelling
2009-04-01 14:49:02 -0500 Ted Gould (b76642f)
* Getting some interests in the game.
2009-04-01 13:21:55 -0500 Ted Gould (589454c)
* Switch to searching on the connection, which is really what we care
about and the proxy is a poor sustitute for.
2009-04-01 12:37:24 -0500 Ted Gould (f7bf54a)
* First pass at the pretty meag-change to make it so that we can
detect people on the system vs. the session bus.
Basically reworking a bunch of structures. Fun.
2009-03-30 09:31:49 +0200 Martin Pitt (4134dd0)
* releasing version 0.1.4-0ubuntu1
2009-03-30 09:31:21 +0200 Martin Pitt (1b7e454)
* * New upstream version * Changing the text in the license box to
make sense. (LP: #346215) * Call GNOME Program Init to
initialize all of the ATK and gettext stuff that needs
to be initialized for it all to work. Patch from
Eitan Isaacson. (LP: #349031) * Give the indicator
applet an ATK name so it can be found by the
accessibility frameworks. Patch from Eitan Isaacson.
(LP: #349031) * Making it so the 'No Indicators'
situation uses a label instead of a desensitized menu
item to allow right click through. (LP: #346359) *
Remove the making of 'Indicator Applet Factory'
translatable. (LP: #349540) * Make sure translations
get loaded and make the 'No Indicators' error and the
license translatable. Patch from Gabor Kelemen. (LP:
#349998) * debian/control: Adding libgnomeui-dev as a
dependency as it was added upstream.
2009-03-27 23:42:04 -0500 Ted Gould (9a1d935)
* Now in jaunty
2009-03-27 23:39:31 -0500 Ted Gould (3e8de8a)
* debian/control: Adding libgnomeui-dev as a dependency as it was
added upstream.
2009-03-27 23:38:21 -0500 Ted Gould (ef07f36)
* * New upstream version * Changing the text in the license box to
make sense. (LP: #346215) * Call GNOME Program Init to
initialize all of the ATK and gettext stuff that needs
to be initialized for it all to work. Patch from
Eitan Isaacson. (LP: #349031) * Give the indicator
applet an ATK name so it can be found by the
accessibility frameworks. Patch from Eitan Isaacson.
(LP: #349031) * Making it so the 'No Indicators'
situation uses a label instead of a desensitized menu
item to allow right click through. (LP: #346359) *
Remove the making of 'Indicator Applet Factory'
translatable. (LP: #349540) * Make sure translations
get loaded and make the 'No Indicators' error and the
license translatable. Patch from Gabor Kelemen. (LP:
#349998)
2009-03-27 23:35:44 -0500 Ted Gould (f4b6ce1)
* debian/control: Add dependency to indicator-messages; the applet is
currently fairly useless without it. (LP: #346359)
2009-03-27 23:34:45 -0500 Ted Gould (3151d53)
* Merging in upstream version 0.1.4
2009-03-27 23:17:22 -0500 Ted Gould (02501d7)
* Patch from Gabor Kelemen to make the license and 'No Indicators'
message translatable. (tag: 0.1.4)
2009-03-27 14:41:02 -0500 Ted Gould (31ea8d2)
* Removing the translatable marking for 'Indicator Applet Factory'
2009-03-27 14:18:38 -0500 Ted Gould (497702e)
* Bad truth in the hide function.
2009-03-26 16:23:54 -0500 Ted Gould (b02adf3)
* Adding another bug that gets fixed with Eitan's merge.
2009-03-26 16:10:58 -0500 Ted Gould (d917e8b)
* Comment for label
2009-03-26 16:06:23 -0500 Ted Gould (045b257)
* Switching the case for 'No Indicators' to make it a label to still
support right click through.
2009-03-26 16:01:46 -0500 Ted Gould (1f7ae08)
* Changing license in about box to make sense.
2009-03-26 13:24:38 -0500 Ted Gould (f6bd9e6)
* ATK name for Eitan
2009-03-26 11:27:16 -0500 Ted Gould (37af771)
* Getting gtkdoc stuff to be a little happier
2009-03-26 10:13:11 -0500 Ted Gould (0d98376)
* Bumping version
2009-03-26 10:12:24 -0500 Ted Gould (8fd2e25)
* Merging in Eitan's changes to make the applet a GNOME Program
2009-03-26 13:51:06 +0200 Eitan Isaacson (acc7f89)
* Add gnome_program_init with LIBGNOMEUI_MODULE.
2009-03-25 11:25:37 +0100 Martin Pitt (9e0aabb)
* releasing version 0.1.3-0ubuntu2 (tag: 0.1.3-0ubuntu2)
2009-03-25 11:25:19 +0100 Martin Pitt (ec4b835)
* debian/control: Add dependency to indicator-messages; the applet is
currently fairly useless without it. (LP: #346359)
2009-03-18 00:17:00 -0500 Ted Gould (345e246)
* Cleaning up Changelog
2009-03-18 00:12:25 -0500 Ted Gould (7c4a7a5)
* Merging in upsream 0.1.3
2009-03-18 00:05:05 -0500 Ted Gould (1ec78fc)
* Changing version number (tag: 0.1.3)
2009-03-17 19:45:03 -0500 Ted Gould (6c97fee)
* releasing version 0.1.2-0ubuntu3~ted4
2009-03-17 13:40:36 -0500 Ted Gould (3cb0dc3)
* releasing version 0.1.2-0ubuntu3~ted3
2009-03-17 13:39:45 -0500 Ted Gould (321d1da)
* Removing all the gobject stuff from the debian build files
2009-03-17 13:38:36 -0500 Ted Gould (d4d1a0e)
* Getting explicit disable
2009-03-17 13:38:20 -0500 Ted Gould (ec34124)
* Seems that we still get errors without it being there, I'm not sure
why, but making it so that we can explicitly disable the
gobject-introspection. That should work for now.
2009-03-17 11:29:15 -0500 Ted Gould (bbf57e6)
* releasing version 0.1.2-0ubuntu3~ted2
2009-03-17 11:28:51 -0500 Ted Gould (95e61d1)
* releasing version 0.1.2-0ubuntu3~ted1ubuntu1
2009-03-17 11:05:36 -0500 Ted Gould (b2791c3)
* releasing version 0.1.2-0ubuntu3~ted1
2009-03-17 11:03:51 -0500 Ted Gould (4086f8b)
* Removing GObject introspection from the build deps
2009-03-17 11:03:08 -0500 Ted Gould (fe24c75)
* Changes to make GIR optional from the applet branch
2009-03-17 11:02:30 -0500 Ted Gould (148a7df)
* Merging in the Ubuntu packaging versions
2009-03-17 11:00:01 -0500 Ted Gould (fdc47f8)
* Making it so that the GIR stuff autodetects and only builds if
available.
2009-03-17 10:55:22 +0100 Martin Pitt (78eda23)
* debian/copyright: Fix download location.
2009-03-17 10:54:24 +0100 Martin Pitt (f5f204a)
* Add bzr-builddeb configuration (merge mode). Fortunately this
doesn't insist on having *only* debian/ in bzr. This gives
us the best of both worlds, bzd-bd auto-downloading
orig.tar.gz and merging in the pre-generated autoconf
stuff, and retaining the possibility of merging directly
from trunk, since we keep the full upstream source in this
branch.
2009-03-17 10:51:56 +0100 Martin Pitt (2a0f3ae)
* Add debian/watch.
2009-03-17 10:50:47 +0100 Martin Pitt (0bbf490)
* retroactively mark 0.1.1-0ubuntu2 as uploaded
2009-03-16 23:23:33 +0100 seb128 (a74264a)
* updated shlibs version
2009-03-16 23:22:15 +0100 seb128 (deccbbb)
* indicator-applet (0.1.2-0ubuntu1) jaunty; urgency=low
2009-03-15 09:11:20 -0500 Ted Gould (dab5af7)
* Cleaning up the changelog
2009-03-13 09:27:09 +0200 Ted Gould (a015eb5)
* releasing version 0.1.2-0ubuntu1~ppa2
2009-03-12 19:25:27 +0200 Ted Gould (7ddf215)
* releasing version 0.1.2-0ubuntu1~ppa1
2009-03-12 19:24:47 +0200 Ted Gould (8a4010a)
* Merging in 0.1.2
2009-03-12 19:21:22 +0200 Ted Gould (cad7516)
* Fixes for distcheck (tag: 0.1.2)
2009-03-12 18:55:36 +0200 Ted Gould (34d085b)
* Changing version number
2009-03-12 14:22:31 +0200 Ted Gould (ad92d55)
* Stealing the 'fast-user-switch-applet' name to get better theming
2009-03-12 14:03:01 +0200 Ted Gould (5299a2c)
* Fixing the popup to have the about
2009-03-12 13:51:59 +0200 Ted Gould (2d63bb5)
* Right click menu is working, but without an about
2009-03-09 17:02:47 +0200 Ted Gould (c1663bc)
* Fix doubling of prototypes, patch from Eitan
2009-03-09 15:12:10 +0200 Ted Gould (a2af5af)
* Putting the example executables in libexec and the source code in
doc/examples
2009-02-25 15:48:02 -0600 Ted Gould (ef381a0)
* releasing version 0.1.1-0ubuntu3~ppa3
2009-02-25 15:33:32 -0600 Ted Gould (d5ba977)
* Linking in the build interfaces, needed a temporary function to get
linking right
2009-02-25 15:33:12 -0600 Ted Gould (cb288de)
* Forgot to put these in built sources
2009-02-25 15:14:26 -0600 Ted Gould (e792f8a)
* true is TRUE
2009-02-25 15:14:07 -0600 Ted Gould (87a9458)
* Adding build instructions for the listener interface
2009-02-25 15:04:37 -0600 Ted Gould (9d3143b)
* Merging from core-dev branch
2009-02-25 15:00:50 -0600 Ted Gould (2a8dfa8)
* Merging in changes to put back in the GObject introspection and to
have better build characteristics.
2009-02-25 14:58:19 -0600 Ted Gould (22ccedb)
* Adding in the listeners interface
2009-02-25 14:37:49 -0600 Ted Gould (cf43323)
* Typo
2009-02-25 14:36:14 -0600 Ted Gould (e835fb9)
* releasing version 0.1.1-0ubuntu3~ppa2
2009-02-25 14:35:56 -0600 Ted Gould (903ce09)
* Adding back in the GIR files and some distclean improvements to get
back to NULL.
2009-02-25 11:16:51 -0600 Ted Gould (97133c8)
* releasing version 0.1.1-0ubuntu3~ppa1
2009-02-22 22:59:44 -0600 Ted Gould (13881cb)
* An interface to get the list of servers from another listener
2009-02-22 22:52:55 -0600 Ted Gould (84c1b5e)
* Adding information on how the server was added, but not really
using it for anything yet. I'm not sure that we can --
bother.
2009-02-19 17:25:15 +0100 Martin Pitt (3bc5b8e)
* src/applet-main.c, applet_fill_cb(): Do not show anything if we are
running under a stracciatella GNOME session (i. e. without
Ubuntu components). See UbuntuSpec:stracciatella-session.
2009-02-19 16:21:42 +0100 Martin Pitt (477eb61)
* releasing version 0.1.1-0ubuntu1 (tag: 0.1.1-0ubuntu1)
2009-02-19 16:11:40 +0100 Martin Pitt (fac33da)
* new upstream release 0.1.1
2009-02-18 14:14:01 -0600 Ted Gould (b645beb)
* Releasing 0.1.1 with build fixes and icons. (tag: 0.1.1)
2009-02-18 14:06:19 -0600 Ted Gould (7554f5e)
* releasing version 0.1-0ubuntu3~ppa1
2009-02-18 14:05:02 -0600 Ted Gould (7aeff8e)
* Merging in icon changes
2009-02-18 14:03:42 -0600 Ted Gould (78a8495)
* Changing the icon to be our fancy new one.
2009-02-18 14:03:11 -0600 Ted Gould (971633d)
* Adding in the autotools stuff for installing an icon.
2009-02-18 13:45:06 -0600 Ted Gould (fba553c)
* Ken's very cool Indicator Applet plugin.
2009-02-17 10:28:17 -0600 Ted Gould (19665b4)
* Cherry picking r137 from the ubuntu-core-dev packaging branch that
has licensing fixes
2009-02-17 10:26:55 -0600 Ted Gould (3fe3f9f)
* Cherry picking r136 from the ubuntu-core-dev packaging branch that
cleans up the licensing, descriptions, and adds additional
info
2009-02-17 10:06:09 -0600 Ted Gould (4c82f21)
* Cherry picking r130 from the ubuntu-core-dev packaging branch that
cleans up the changelog, adds better descriptions and
updates the entries in the control file.
2009-02-17 10:01:13 -0600 Ted Gould (8fbbd8a)
* Configure changes to include gio
2009-02-17 09:59:27 -0600 Ted Gould (af72d15)
* Mostly build related changes coming from the upstream branch.
2009-02-17 09:43:09 -0600 Ted Gould (177afdd)
* This is a generated file. Shouldn't be in VCS.
2009-02-17 09:43:04 -0600 Ted Gould (e86d48d)
* Adding the license info
2009-02-17 09:10:00 -0600 Ted Gould (711265c)
* Adding the LGPL licenses and making sure they get into the tarball.
2009-02-17 11:27:00 +0100 Martin Pitt (e072dee)
* debian/copyright: Fix leftover word "either" from the license
description.
2009-02-17 11:23:18 +0100 Martin Pitt (23d6623)
* debian/control: Update package descriptions; the messaging part is
provided by indicator-messages.
2009-02-17 11:17:59 +0100 Martin Pitt (7009e0c)
* debian/control: Fix Vcs-Bzr.
2009-02-17 11:04:52 +0100 Martin Pitt (f0eb6e3)
* releasing version 0.1-0ubuntu1 (tag: 0.1-0ubuntu1)
2009-02-17 10:28:12 +0100 Martin Pitt (5dc54bd)
* configure.ac: Add missing gio-2.0 pkgconfig check (from DX team PPA
packaging branch), and autoreconf to pick up the change.
2009-02-17 09:41:02 +0100 Martin Pitt (93794c8)
* Repack orig.tar.gz with a copy of the LGPL 3, libindicate/* is
under that license.
2009-02-17 09:40:55 +0100 Martin Pitt (b3c78cf)
* debian/copyright: Properly describe licenses.
2009-02-17 09:40:45 +0100 Martin Pitt (b41bed6)
* debian/control: Add Homepage:, Vcs-Bzr:, and proper package
descriptions.
2009-02-17 09:40:22 +0100 Martin Pitt (174ce19)
* flush changelog for ubuntu packaging branch
2009-02-16 13:29:50 -0600 Ted Gould (d4ebcf1)
* Trying to add in some extra files that seem useful for building,
gtk-doc still fails.
2009-02-16 13:04:54 -0600 Ted Gould (25bb9e3)
* Oops, should get the screw up right...
2009-02-16 13:01:55 -0600 Ted Gould (b57c4ff)
* Adding a couple of files to the distribution to pass distcheck
2009-02-15 23:00:05 -0600 Ted Gould (3cea98d)
* releasing version 0.1~ppa41
2009-02-15 22:59:20 -0600 Ted Gould (3e126a2)
* * Putting on a handle * Adding in a background function from
panel-lib
2009-02-15 22:56:27 -0600 Ted Gould (8336b57)
* This function seems to set up the widget correctly with the
background. It's undocumented, but most other applets
seem to do it.
2009-02-15 22:48:08 -0600 Ted Gould (6012d33)
* Putting a little handle on the indicators. Works for GNOME Panel.
2009-02-15 22:07:29 -0600 Ted Gould (e424f77)
* releasing version 0.1~ppa40
2009-02-15 22:04:29 -0600 Ted Gould (55b9343)
* Merging in from the 'upstream' branch. Changes include the
addition of a server signal for the NULL indicator. And a
warning fix for icons.
2009-02-15 21:58:56 -0600 Ted Gould (975000d)
* Removing the debian directory. Going to start using this as my
upstream branch and the other as the packaging branch.
2009-02-15 21:58:08 -0600 Ted Gould (524e5b9)
* Adding a handler for the new server display signal, and then make
the messages more clear between the two.
2009-02-15 21:53:55 -0600 Ted Gould (3a3a6e5)
* Adding a new signal in that handles the ID of zero, or null,
comming back from a listener and uses that to show the
server. Or atleast signal it to figure out how to do
that. Also cleaning up the signals a little to use
defines.
2009-02-15 21:40:46 -0600 Ted Gould (0e0780f)
* Adding a check for NULL string in the icon parsing code. This will
stop a bunch of warnings coming from everything else.
2009-02-13 15:14:25 -0600 Ted Gould (50a37ef)
* releasing version 0.1~ppa39
2009-02-13 15:13:26 -0600 Ted Gould (f079d67)
* Fixing a bug in the listener where properties weren't available on
running servers.
2009-02-13 15:11:32 -0600 Ted Gould (ebe1c53)
* Ah, declared a variable in an if so that it didn't get out of
scope. Like it should have. Bah.
2009-02-13 14:55:10 -0600 Ted Gould (17d0da7)
* Adding in a set of functions to get the properties off of a server
2009-02-12 20:23:11 -0600 Ted Gould (9919392)
* releasing version 0.1~ppa38
2009-02-12 20:18:07 -0600 Ted Gould (f298782)
* Adding in GIO to the list of linked modules.
2009-02-12 16:49:53 -0600 Ted Gould (33dc1d7)
* releasing version 0.1~ppa37
2009-02-12 16:46:31 -0600 Ted Gould (a7d062c)
* Making time and icons happy and work well. Also adding lots of fun
tests for them.
2009-02-12 16:44:59 -0600 Ted Gould (2c157aa)
* Forgot to set the timer back to something reasonable!
2009-02-12 16:43:32 -0600 Ted Gould (3eb4043)
* Adding in support for icons, specifically passing them back and
forth on the bus
2009-02-12 16:43:00 -0600 Ted Gould (6b3a32c)
* Changing from using a memory stream to using a buffer, the memory
stream one seems to be broken.
2009-02-12 14:17:18 -0600 Ted Gould (a2e77d6)
* Adding in the function to take a pixbuf, turn it into a png, base64
encode it and then send it across the wire.
2009-02-12 14:03:52 -0600 Ted Gould (1a8b895)
* Changing the icon data to be base64 encoded, should have done that
originally, how silly.
2009-02-12 13:47:24 -0600 Ted Gould (52cd253)
* Seems like a better name
2009-02-12 13:44:45 -0600 Ted Gould (e921d55)
* Fixing some prototypes to fix warnings and errors we haven't yet
encountered. Also setting the type so that our switch
statement actually works.
2009-02-12 13:34:24 -0600 Ted Gould (8b91e1d)
* Adding in some debug messages and making the signal use the
original key to broadcast itself.
2009-02-12 13:10:19 -0600 Ted Gould (1a5e21e)
* Added in a way to print the values of properties while they change.
More later, but a start.
2009-02-12 12:31:08 -0600 Ted Gould (b94d3a7)
* Seeing what happens if I turn on "sign always" in Bazaar.
2009-02-12 12:15:09 -0600 Ted Gould (c3964b3)
* Adding in the code for handling icons and time
2009-02-12 10:47:54 -0600 Ted Gould (ee27474)
* Rebuilding the way that priorities get done so that we can handle a
time and icon version of the functions so that apps don't
have to worry about those details.
2009-02-12 08:31:14 -0600 Ted Gould (8a2cf34)
* Setting the properties property and picking up Empathy's desktop
file
2009-02-12 08:24:36 -0600 Ted Gould (e1c5a98)
* Adding in a timer function to change the time every three minutes
or so in order to test modifying times.
2009-02-12 08:20:29 -0600 Ted Gould (31d107e)
* Using the time property function
2009-02-12 08:17:37 -0600 Ted Gould (184a04a)
* Adding in a time property function
2009-02-11 20:37:01 -0600 Ted Gould (2717850)
* Merging from trunk
2009-02-11 20:35:39 -0600 Ted Gould (24fd755)
* releasing version 0.1~ppa36
2009-02-11 20:32:31 -0600 Ted Gould (fe7b7c4)
* Merging in the changes to make it so that properties work right,
get handled properly by the listener and have convience
functions. Also lots of little important cleanups.
2009-02-11 20:31:43 -0600 Ted Gould (2f2fdfe)
* Cleaning up some debug messages that aren't as useful anymore
2009-02-11 20:30:21 -0600 Ted Gould (47decbd)
* Switching to ref_default
2009-02-11 20:29:04 -0600 Ted Gould (734c7ea)
* Fixing the deallocation to check the right parameters.
2009-02-11 20:25:44 -0600 Ted Gould (2c02884)
* Turning off some debugging, reformatting, and putting the
connection into the proxy_t structure
2009-02-11 20:22:25 -0600 Ted Gould (ef78255)
* Basically things are working as the proxyts are now findable.
2009-02-11 20:10:33 -0600 Ted Gould (609f0c8)
* Fixing the call, checking both lists of proxies, and adding some
debug info.
2009-02-11 17:14:02 -0600 Ted Gould (69bec2a)
* Removing an annoying warning
2009-02-11 17:04:10 -0600 Ted Gould (5feca66)
* Adding a check for type in the middle of the state machine for
building a server.
2009-02-11 16:30:59 -0600 Ted Gould (584e64c)
* Adding in a ref-default function so that we can keep one listener
around for fun and profit.
2009-02-11 16:10:23 -0600 Ted Gould (8c06d7e)
* Getting all the legal stuff in.
2009-02-11 16:01:51 -0600 Ted Gould (7e01f3a)
* Putting license information everywhere.
2009-02-11 15:59:42 -0600 Ted Gould (5b84e20)
* Adding in an author
2009-02-11 15:57:52 -0600 Ted Gould (468fb34)
* Adding GPL to the tests
2009-02-11 15:55:17 -0600 Ted Gould (25f9a81)
* Adding the GPL to this file
2009-02-11 15:51:31 -0600 Ted Gould (17a13da)
* Putting the debian copyright info in
2009-02-11 15:32:56 -0600 Ted Gould (390c348)
* Adding a license to the top of all these files. LGPL 2/3
2009-02-10 16:52:21 -0600 Ted Gould (3ca33fc)
* Adding to the convience functions for setting the desktop file and
the type of the server.
2009-02-10 16:49:33 -0600 Ted Gould (49220be)
* Building a way to get properties. Seems like this should be in the
DBus libs, but anyway. Here is the code that compiles and
claims that it'll do it. More code than I would have
liked.
2009-02-10 15:30:45 -0600 Ted Gould (8bfb5a1)
* Avoiding a conflict with GObject's get_type function.
2009-02-10 15:28:54 -0600 Ted Gould (0fcfc2b)
* Adding in real functions to match the prototypes.
2009-02-10 15:19:02 -0600 Ted Gould (5a03a06)
* Adding in functions to match the prototypes.
2009-02-10 15:16:31 -0600 Ted Gould (c6eab16)
* Adding in a set_type function and fixing the prototype for
set_desktop
2009-02-10 15:14:57 -0600 Ted Gould (ee050d4)
* Changing type to message.im for testing, now it's different than
the messages.
2009-02-10 15:14:29 -0600 Ted Gould (01244bc)
* Adding an API for getting the type and desktop files
2009-02-10 11:21:16 -0600 Ted Gould (a9e725a)
* Including type information in the creation and destruction of
servers
2009-02-09 11:33:03 -0600 Ted Gould (42e990f)
* Merge from trunk
2009-02-09 11:02:01 -0600 Ted Gould (9d73c89)
* releasing version 0.1~ppa35
2009-02-09 10:59:57 -0600 Ted Gould (50411f8)
* Only emitting a changed signal on properties changed when the
indicator is visible
2009-02-09 10:58:05 -0600 Ted Gould (eb7ca97)
* Some formatting, reusing the private variable, making it so that
hide sends the type and only sending a message of finalize
if we're still visible.
2009-02-09 10:32:56 -0600 Ted Gould (d7d7036)
* Server hide function from Niel
2009-02-09 15:25:13 +0000 Neil Jagdish Patel (d42c9b5)
* Add the indicate_server_hide function
2009-02-07 12:41:40 -0600 Ted Gould (b955805)
* Sending the type with the signal in the listener, adding it into
the tests.
2009-02-07 12:37:47 -0600 Ted Gould (af60279)
* Changing the signals for show/hide to send the type correctly.
2009-02-07 12:21:32 -0600 Ted Gould (455dbe3)
* Setting the type of the server
2009-02-06 15:03:38 +0100 Ted Gould (f308079)
* releasing version 0.1~ppa34
2009-02-06 15:02:51 +0100 Ted Gould (4cf9eec)
* Making the listener handle the case where we're using the new
show/hide structure.
2009-02-06 14:59:29 +0100 Ted Gould (603808b)
* Ah, stupid little wrong function
2009-02-06 14:36:21 +0100 Ted Gould (e5e968c)
* releasing version 0.1~ppa33
2009-02-06 14:15:41 +0100 Ted Gould (37a0956)
* releasing version 0.1~ppa32
2009-02-06 12:49:04 +0100 Ted Gould (0b687ad)
* Tracking the type of the server in the proxyt structure
2009-02-06 12:22:40 +0100 Ted Gould (aa624cd)
* Changing the prototypes to start using the server added stuff
2009-02-06 11:40:28 +0100 Ted Gould (720e250)
* releasing version 0.1~ppa31
2009-02-06 10:41:06 +0100 Ted Gould (07f61bd)
* releasing version 0.1~ppa30
2009-02-06 10:37:30 +0100 Ted Gould (e2fae3b)
* Removing GObject introspection for now
2009-02-06 00:29:51 +0100 Ted Gould (18daf0a)
* releasing version 0.1~ppa29
2009-02-05 18:23:06 +0100 Ted Gould (246b29b)
* releasing version 0.1~ppa28
2009-02-05 17:58:57 +0100 Ted Gould (c18cbee)
* Merging in the trunk changes
2009-02-05 17:58:22 +0100 Ted Gould (c4db8e8)
* Adding properties for doing type and desktop
2009-02-05 15:27:42 +0100 Ted Gould (a14b6dd)
* Changing the DBUS API slightly. Now there is no 'get_desktop'
function as desktop is a property. Added a property for
type so that we can understand what kind of application
this is. And finally adding show/hide signals on the
server as they were already on the listener.
2009-02-05 14:47:40 +0100 Ted Gould (e6ff0d4)
* releasing version 0.1~ppa27
2009-02-05 14:43:21 +0100 Ted Gould (d52c59b)
* releasing version 0.1~ppa23
2009-02-05 14:42:38 +0100 Ted Gould (5cf3a79)
* Adding in the API function to take and icon and display it. Just
the prototype.
2009-02-04 19:08:18 +0100 Ted Gould (d95b170)
* typo
2009-02-04 19:00:11 +0100 Ted Gould (206b407)
* releasing version 0.1~ppa26
2009-02-04 18:58:00 +0100 Ted Gould (cf719f1)
* Merge in documentation and icons
2009-02-04 14:54:56 +0100 Neil Jagdish Patel (eae7dfc)
* Set the widget name on the applet rather than the menubar, to make
sure it's picked up globally.
2009-02-04 14:27:20 +0100 Ted Gould (7ef6658)
* Removing the icons from the larger applet
2009-02-04 14:16:06 +0100 Ted Gould (663d926)
* Adding a conflicts and a replaces to get rid of errors.
2009-02-04 14:14:15 +0100 Ted Gould (212b175)
* ppa23
2009-02-04 13:55:42 +0100 Ted Gould (9ff950e)
* Polish it up
2009-02-04 13:55:18 +0100 Ted Gould (b5314b8)
* Making it so that there is no more boarder on the menu bar
2009-02-04 12:45:50 +0100 Neil Jagdish Patel (124eadc)
* indicator-applet (0.1~ppa22) intrepid; urgency=low
2009-02-04 12:44:34 +0100 Neil Jagdish Patel (3002304)
* Fix coding style
2009-02-03 21:29:52 +0100 Neil Jagdish Patel (e886446)
* Enable support for a "transparent" panel applet, which reacts to
the gnome- panel theme changes
2009-02-03 16:53:37 +0100 Ted Gould (c074cf6)
* Getting gtk-doc working
2009-02-03 15:09:50 +0100 Ted Gould (47aedec)
* Getting everything together to try and build docs
2009-02-03 14:56:35 +0100 Ted Gould (bccae5a)
* Getting the dirs right
2009-02-03 14:30:24 +0100 Ted Gould (aa26429)
* Getting SUBDIRS right
2009-02-03 14:25:53 +0100 Ted Gould (2f6177e)
* I think this will add gtk docs
2009-02-03 14:05:40 +0100 Ted Gould (7a91603)
* Putting in the makefiles for the docs and the reference docs
2009-02-03 12:50:40 +0100 Ted Gould (5d714e6)
* Adding in checks for GTK Doc
2009-02-03 11:57:57 +0100 Ted Gould (0223011)
* Merge from trunk
2009-02-03 11:53:19 +0100 Ted Gould (3c879bc)
* * Adding in package fixes from seb128 * Removing scrollkeeper *
Changing libindicate to libindicate0 * Removing .la file
* Removing targets for files in libindcate-dev.install
* Removing pkg-create-dbgsym * Adding a build depend on
pkg-create-dbgsym
2009-02-03 10:36:09 +0100 Neil Jagdish Patel (67d2967)
* Allow sub-classes of server to emit signals using three new public
functions
2009-02-02 10:44:23 +0100 Ted Gould (a0440fa)
* Bump for PPA
2009-02-02 10:13:42 +0100 Ted Gould (935d457)
* Should have been for Intrepid
2009-01-30 15:07:18 -0600 Ted Gould (f1c8ad7)
* Adding interface for listener sending back a display request.
2009-01-30 12:11:32 -0600 Ted Gould (722c621)
* Listener interface for signalling an indicator
2009-01-30 12:10:50 -0600 Ted Gould (21a212b)
* Adding a print message for when the indicator is signaled
2009-01-30 11:27:48 -0600 Ted Gould (2adf895)
* Adding an interface to call back to an indicator and display it.
2009-01-29 13:50:32 -0600 Ted Gould (d9e7ed9)
* Guess I should merge trunk back in at some point.
2009-01-29 13:39:31 -0600 Ted Gould (17bc0da)
* * Fixing the handling of named DBus connections * Moving most of
the data in the objects to private sections * Making the
signal names defines for easier usage * Having property
changes actually work now.
2009-01-29 13:05:14 -0600 Ted Gould (de80300)
* Changing the include directory from 1.0 to 0.1 which gives us more
room to screw up
2009-01-29 13:03:47 -0600 Ted Gould (fab825e)
* Wow, I didn't realize we weren't handling properties at all
correctly. Fixed now. Whew.
2009-01-29 12:51:48 -0600 Ted Gould (054c9ba)
* Adding a set property after the show to cause a signal
2009-01-29 12:49:43 -0600 Ted Gould (f5e7d6d)
* Have the server pass along the property modified signal
2009-01-29 12:44:17 -0600 Ted Gould (dd60c62)
* Adding a property modified signal to the indicator object
2009-01-29 11:17:11 -0600 Ted Gould (759d62b)
* Making all of the server values move into a private section like
all the others. Generally a good thing and good clean up
2009-01-29 09:59:19 -0600 Ted Gould (c0a3238)
* Making the indicator properties private, they should be. Also
cleans up some deps.
2009-01-29 09:40:29 -0600 Ted Gould (d898b21)
* Removing the gobject-introspection-repository from the list of
build depends as we needed it for the dbus stuff, that
we're no longer using.
2009-01-29 09:40:01 -0600 Ted Gould (d2f37fb)
* Removing DBus from the gobject introspection
2009-01-29 09:31:59 -0600 Ted Gould (116ff8e)
* Oops, forgot the header there
2009-01-29 09:31:00 -0600 Ted Gould (82c65bf)
* Okay, moving all of the variables from the listener class into a
private object. This is to make the GObject introspection
not need dbus, and thus we can reduce our build deps
significantly.
2009-01-29 09:10:18 -0600 Ted Gould (ab78f47)
* Use the new fangled defines to make things cleaner
2009-01-29 09:07:14 -0600 Ted Gould (63630dc)
* Getting some helper defines for some of the hacks that'll probably
change in the future
2009-01-29 09:05:09 -0600 Ted Gould (5454aee)
* Using the defines for the signal names
2009-01-29 09:01:15 -0600 Ted Gould (fea68aa)
* Making the signals use #defines to make everything a little more
predictable. I hate this part of GObject signals.
2009-01-29 09:01:07 -0600 Ted Gould (492652a)
* Adding a variable to make the compiler happier
2009-01-26 09:13:27 -0600 Ted Gould (b96eebb)
* Changed to only listen to reference names instead of descriptive
ones. Hopefully this'll fix a crash.
2009-01-22 15:39:54 -0600 Ted Gould (b6c1425)
* Forgot to run autogen.sh before last package :(
2009-01-21 19:43:54 -0600 Ted Gould (d186804)
* Update API slightly and some fixes.
2009-01-21 17:15:34 -0600 Ted Gould (8199742)
* Adding in a message indicator and a small test to use it.
2009-01-21 16:10:21 -0600 Ted Gould (0fc106d)
* Adding in the im-client test and fixing a couple of bugs it found
2009-01-21 16:02:04 -0600 Ted Gould (48697b9)
* Adding in a type for indicators that are messages
2009-01-21 15:44:19 -0600 Ted Gould (58a667b)
* Generated source files
2009-01-21 15:13:43 -0600 Ted Gould (ea69948)
* Adding in listener_get_property
2009-01-21 15:12:50 -0600 Ted Gould (2ed2801)
* Adding in a get_property function
2009-01-19 12:29:03 -0600 Ted Gould (e782c32)
* Wrong indicate include directory in package config files
2009-01-19 12:22:21 -0600 Ted Gould (640fb32)
* Wrong indicate include directory in package config files
2009-01-16 18:37:08 -0600 Ted Gould (dbe2080)
* Moving the gir file to the right package
2009-01-16 17:12:19 -0600 Ted Gould (7a5bf13)
* Removing the gir file from the applet so that it's only with the
library so that we can install all of them.
2009-01-16 16:34:04 -0600 Ted Gould (ba631e9)
* Adding the GObject Introspection files into the build and the
packaging.
2009-01-16 16:22:27 -0600 Ted Gould (e3f1f4e)
* Shell script integrated into the autotools system
2009-01-16 16:21:09 -0600 Ted Gould (ac140d5)
* Bringing GObject Introspection into the build and making it so that
it gets installed with the library.
2009-01-16 13:51:27 -0600 Ted Gould (e83283e)
* Build fix
2009-01-16 13:32:25 -0600 Ted Gould (09d01e6)
* Adding in libtool to build deps
2009-01-16 13:04:41 -0600 Ted Gould (0eb5899)
* Getting the debian package built up so that it can have a seperate
library binary package.
2009-01-16 13:03:26 -0600 Ted Gould (872812a)
* Changing the build targets, now I understand the difference between
'any' and 'all'
2009-01-16 12:58:34 -0600 Ted Gould (913c9d2)
* Making it so the lib only uses glib (which it does)
2009-01-16 12:54:01 -0600 Ted Gould (28c26d8)
* Adding in the libindicate lib.
2009-01-16 12:47:51 -0600 Ted Gould (8f80127)
* Moving the tests so that they can guarantee to build after the
library builds as otherwise they end up getting built
first.
2009-01-16 12:44:08 -0600 Ted Gould (487239d)
* Adding in a return that was missing (though it's useless)
2009-01-16 00:04:05 -0600 Ted Gould (2b6ce30)
* Building the listener object that listens to all of the folks on
DBus and turns that into a usable interface for indicator
display folks. A lot of code to make things simple :)
2009-01-16 00:01:50 -0600 Ted Gould (df1713a)
* Handling the case that we're destroying an entry because the bus
told us to. Properly signalling all of the removals
2009-01-15 23:19:21 -0600 Ted Gould (ad1cc2d)
* Fixing the printing and the saving of indicators.
2009-01-15 23:11:56 -0600 Ted Gould (fe3addb)
* Changing the test to do the printing by itself instead of using the
debug messages in the class itself
2009-01-15 23:01:16 -0600 Ted Gould (0d1e01e)
* Getting the signals in shape
2009-01-15 21:49:28 -0600 Ted Gould (2722037)
* Okay, adding the other signals in and keeping track of the
indicators that are hanging around. Now, to connect to
things external.
2009-01-15 20:34:39 -0600 Ted Gould (0ff1165)
* Get the type of the list of indicators that we got, and then set
the up to register
2009-01-15 20:10:38 -0600 Ted Gould (fb5b330)
* Now correctly calling the get indicators function to get the
indicators on already created objects.
2009-01-15 19:49:23 -0600 Ted Gould (e50f228)
* Adding in a marshaller for the DBus signals that we need
2009-01-15 17:10:36 -0600 Ted Gould (d1c2ed2)
* Now doing some DBus listening and getting some of the initial
configuration built up.
2009-01-15 17:10:14 -0600 Ted Gould (421cea2)
* Changing to the dbus interface and changing to build teh client and
server interfaces
2009-01-15 15:52:40 -0600 Ted Gould (4c623e4)
* Amazing how a little string can make such a huge difference.
2009-01-15 15:48:38 -0600 Ted Gould (da2657e)
* Adding in a basic listening test
2009-01-15 15:42:16 -0600 Ted Gould (6ba4025)
* Adding a new function
2009-01-15 15:33:00 -0600 Ted Gould (441032c)
* Starting to flesh out the listener a little bit, should get a list
of names on teh bus at this point
2009-01-15 10:39:51 -0600 Ted Gould (ccac9b8)
* Adding in the base object for the listener.
2009-01-15 10:39:32 -0600 Ted Gould (48277fb)
* Cut-and-paste error
2009-01-14 17:12:26 -0600 Ted Gould (8a2369b)
* Okay, I think this is the end of server and indicator minus all the
bugs that I expect to find :)
2009-01-14 17:11:49 -0600 Ted Gould (284b3dd)
* Cleaning up prototypes and type warnings.
2009-01-14 16:31:38 -0600 Ted Gould (bda3bbf)
* Who the hell would design an API that passes in arrays of strings
differently than it passes them out. What an insane idea.
Oh yeah, properties work.
2009-01-14 10:26:09 -0600 Ted Gould (89bf87a)
* Merging in code from yesterday. Got many of the functions working
with real IDs and making lists. The basis for all the
properties stuff is there but it still needs a touch of
fleshing out. Also a new test for debugging.
2009-01-14 10:11:17 -0600 Ted Gould (c145922)
* Chaning the property list parameters to be pointer arrays.
2009-01-13 23:24:39 -0600 Ted Gould (a72a4ce)
* Making the indicator lookup it's own function and trying it out in
another function to get a property.
2009-01-13 23:23:58 -0600 Ted Gould (cb3ce99)
* Adding in some properties to the mix
2009-01-13 15:43:14 -0600 Ted Gould (4670fee)
* Adding in a display function and a list by type.
2009-01-13 14:55:06 -0600 Ted Gould (1c7343c)
* Man, a lot of work for messing up one explaination point.
2009-01-13 14:18:47 -0600 Ted Gould (82dee94)
* Making it so that the indicators all have unique IDs
2009-01-13 13:44:00 -0600 Ted Gould (f64b5d9)
* Forgot to actually add the test
2009-01-13 13:43:32 -0600 Ted Gould (0b4e54d)
* Ah, we weren't checking if we were visible. Now things are better.
2009-01-13 13:38:29 -0600 Ted Gould (bba89ed)
* Return to crashing beauty
2009-01-13 13:38:12 -0600 Ted Gould (3dbe51d)
* Add a test to create a lot of indicators.
2009-01-13 13:26:13 -0600 Ted Gould (5030c34)
* Merging in Robert's changes.
2009-01-13 06:47:42 -0500 Robert Carr (71820cb)
* Add script to build GObject-introspection GIR, and boilerplate
JavaScript test.
2009-01-13 06:43:38 -0500 Robert Carr (27a71bb)
* Use G_BEGIN/END_DECLS, and put the GOBject *_get_type functions in
the header file (needed by introspection, but also the
normal GLib style).
2009-01-13 06:32:44 -0500 Robert Carr (544dec8)
* Merge Ted's changes. I should have used bzr bind.
2009-01-13 06:31:48 -0500 Robert Carr (35c5045)
* Add pkgconfig file.
2009-01-12 23:14:09 -0600 Ted Gould (5525628)
* Fleshing out more functions, we can now return a list of ids. Need
to test with more.
2009-01-12 17:22:47 -0600 Ted Gould (cd4f548)
* Whoo Hoo, we can count
2009-01-12 17:15:43 -0600 Ted Gould (514837a)
* Fleshing out the whole show and hide thing. We should also be
signalling when indicators are added or removed from the
server.
2009-01-12 16:38:46 -0600 Ted Gould (2dc2f26)
* Clean up the signal handlers and fixing the call in the test
function. Now we're to the point of showing the way I
think things should be.
2009-01-12 16:17:25 -0600 Ted Gould (3d55f90)
* Basic show hide support in the indicator
2009-01-12 16:07:22 -0600 Ted Gould (b687b3a)
* Changing to showing the inicator and make it so that we dont' crash
right now.
2009-01-12 10:45:34 -0600 Ted Gould (245fdda)
* Adding in the base functions with pointers and fun stuff like that
2009-01-11 23:51:55 -0600 Ted Gould (bea741f)
* Adding in signals so that we can talk to the app over DBus. Nice.
2009-01-09 16:44:07 -0600 Ted Gould (4d93780)
* Adding in a show to help debugging
2009-01-09 16:37:54 -0600 Ted Gould (55794df)
* Adding in an indicator to the test and fixing a typo
2009-01-09 16:32:09 -0600 Ted Gould (791b5f8)
* Connecting indicators and servers. They create themselves easily.
2009-01-09 16:24:57 -0600 Ted Gould (57b3f58)
* Setting up the singleton nature of the server, and allow setting
it.
2009-01-09 16:12:45 -0600 Ted Gould (f8ca555)
* Fleshing out the server some in adding function and prototypes.
2009-01-08 16:53:43 -0600 Ted Gould (5ed10df)
* Adding in build support for the indicate and crash test. Will make
future ones easier.
2009-01-08 16:42:05 -0600 Ted Gould (fc3c5b9)
* Adding in a simple program to crash after 15 seconds. Now we can
add indicators to it.
2009-01-08 15:35:35 -0600 Ted Gould (7e75808)
* Building a pretty good set of virtual functions and getting them
tied together, with errors too.
2009-01-08 11:31:53 -0600 Ted Gould (e2a3557)
* Basic GObject stuff
2009-01-07 21:01:44 -0600 Ted Gould (d505bed)
* Setting up version of the libraries.
2009-01-07 20:36:35 -0600 Ted Gould (9389a6a)
* Fixing stuff so that everything links all together
2009-01-07 20:24:47 -0600 Ted Gould (4381e65)
* Adding in a built sources tag to build the header file properly
2009-01-07 20:18:12 -0600 Ted Gould (1068ff2)
* Fixing linking and libraries and includes oh my
2009-01-07 19:58:22 -0600 Ted Gould (20c59cd)
* Dummy starting file
2009-01-07 19:26:31 -0600 Ted Gould (699c575)
* Adding libindicate to the build system
2009-01-07 17:42:44 -0600 Ted Gould (3206434)
* Make file starting out to build this thing
2009-01-07 17:42:24 -0600 Ted Gould (cd42ea2)
* Basic server stuff
2009-01-07 15:28:02 -0600 Ted Gould (ff7715c)
* Fixing a bunch of typos, now it is a happy validating XML file.
2009-01-07 15:20:57 -0600 Ted Gould (e962748)
* First version of XML DBus interface
2009-01-07 14:22:21 -0600 Ted Gould (98bb151)
* Dropping in more code to make these real GObjects and such
2008-12-20 00:02:36 -0600 Ted Gould (8e913de)
* Stopping point
2008-12-04 23:08:47 -0800 Ted Gould (0d28e60)
* Moving the indicator directory cross-packages.
2008-12-04 22:41:45 -0800 Ted Gould (227bcb3)
* Put in the kickarse loader code. Happy, happy.
2008-12-04 20:23:23 -0800 Ted Gould (438133c)
* Building in a module loader
2008-12-03 23:51:29 -0800 Ted Gould (2253177)
* Parse directories
2008-12-03 23:23:38 -0800 Ted Gould (75f4a72)
* Making the applet very light.
2008-12-03 19:57:47 -0800 Ted Gould (bbc5347)
* Okay, we're all doing everything perfect
2008-12-03 19:50:17 -0800 Ted Gould (854bab0)
* Making the applet a lot more sparce. Now we're going to load
things dynamically. Let them have their own problems.
2008-12-03 19:26:50 -0800 Ted Gould (e1092da)
* Removing everything except messaging.
2008-12-02 11:49:55 -0600 Ted Gould (a387d91)
* Adding in all of the icons into the mockups.
2008-11-25 10:54:28 -0600 Ted Gould (52e4855)
* Adding in icons from Ken.
2008-11-24 22:49:50 -0600 Ted Gould (c8ae9fe)
* Adding in some filler menus to get some depth.
2008-11-24 22:32:57 -0600 Ted Gould (f458833)
* Adding in the infrastructure to have icons in the build. Only a
dummy icon for now, but it's there and ready for some
friends.
2008-11-24 22:31:40 -0600 Ted Gould (e23753e)
* Adding in additional files to catch translations
2008-11-24 21:34:09 -0600 Ted Gould (3f3e49b)
* Removing the test menu item.
2008-11-24 21:31:53 -0600 Ted Gould (edb2f89)
* Adding in settings
2008-11-24 17:30:01 -0600 Ted Gould (f9b7c24)
* Blocking the prelight
2008-11-24 17:26:48 -0600 Ted Gould (10629d4)
* Making spacing and alignment better
2008-11-24 17:18:30 -0600 Ted Gould (98c6e94)
* Getting some batteries in there.
2008-11-24 16:50:46 -0600 Ted Gould (c6c57ca)
* Basic power handler
2008-11-20 22:48:00 -0600 Ted Gould (35cef87)
* First try at getting it not to hide on click. Fail.
2008-11-20 22:40:11 -0600 Ted Gould (13ad9d4)
* Whoa, getting that inherited type wrong really messes things up.
2008-11-20 17:04:30 -0600 Ted Gould (a29584a)
* Clean compile, but something is broken in the _init function. Not
sure what.
2008-11-19 15:26:40 -0600 Ted Gould (712bddc)
* Okay, blocked the prelight on the item, now how do I get my buttons
out of event prison.
2008-11-19 14:48:34 -0600 Ted Gould (9d3a43a)
* Getting all the widgets in the menu item. Doesn't quite work
right, but the widgets are there.
2008-11-19 14:25:56 -0600 Ted Gould (04153d7)
* Adding in a menu item to start putting in a slider.
2008-11-18 14:31:09 -0600 Ted Gould (4645182)
* Adding a depend for dbus-glib
2008-11-18 14:10:30 -0600 Ted Gould (9073e40)
* Version one of debian packaging.
2008-11-12 22:01:39 -0600 Ted Gould (947bc3f)
* Working on ideas for the prototype of the individual item stuff
2008-11-12 21:49:27 -0600 Ted Gould (b63286e)
* Starting to build functions to handle the menu spec over DBus
2008-11-12 17:06:56 -0600 Ted Gould (b4b7ab3)
* Okay, audio is an icon now.
2008-11-12 16:46:46 -0600 Ted Gould (b61274a)
* Connecting in all the different applets, now they can do their own
thing.
2008-11-12 16:41:12 -0600 Ted Gould (6a2c99b)
* Adding the basis for all the different indicators that we want to
include
2008-11-12 16:23:42 -0600 Ted Gould (99a07ef)
* Switching from a label and an hbox to a menubar
2008-11-12 16:14:24 -0600 Ted Gould (dd64e6a)
* Ah, forgot to show the applet itself.
2008-11-12 16:06:07 -0600 Ted Gould (9d5abe0)
* Putting a label in the widget
2008-11-12 11:15:40 -0600 Ted Gould (5781046)
* Adding in more documentation on the seperation between user
interaction and the system services.
2008-11-10 15:27:56 -0600 Ted Gould (62605c2)
* A diagram about how intermediate daemons are going to provide
status to the panel.
2008-11-10 13:16:32 -0600 Ted Gould (75e2280)
* Getting some text that I'd written on the target API in the repo.
2008-11-10 11:14:51 -0600 Ted Gould (0fdb6cc)
* Indicator prototypes
2008-10-30 12:32:04 -0500 Ted Gould (236c9a2)
* Ignoring some stuff
2008-10-30 12:31:31 -0500 Ted Gould (237fca7)
* Setting up the data directories and getting everything to translate
nicely
2008-10-29 21:36:40 -0500 Ted Gould (9b4a5fb)
* Adding in the linking and some basic prototypes.
2008-10-29 21:30:35 -0500 Ted Gould (435437a)
* Getting the build things together so that it starts building.
Yeah.
2008-10-29 17:16:49 -0500 Ted Gould (9c2e7b6)
* Basic build system, not quite working though
libayatana-indicator-0.6.3/configure.ac 0000644 0000000 0000000 00000013435 13565237013 014766 0 ustar AC_INIT([libayatana-indicator],
[0.6.3],
[https://github.com/ArcticaProject/libayatana-indicator/issues],
[libayatana-indicator],
[https://github.com/ArcticaProject/libayatana-indicator])
AC_PREREQ([2.64])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_AUX_DIR([build-aux])
AC_SUBST([ac_aux_dir])
AM_INIT_AUTOMAKE([1.11 -Wall tar-pax])
AM_MAINTAINER_MODE([enable])
AM_SILENT_RULES([yes])]
# Check for programs
AC_PROG_CC
AM_PROG_CC_C_O
AM_PROG_AR
# Initialize libtool
LT_PREREQ([2.2])
LT_INIT
# Upstream's pkg.m4 (since 0.27) offers this now, but define our own
# compatible version in case the local version of pkgconfig isn't new enough.
# https://bugs.freedesktop.org/show_bug.cgi?id=48743
m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR],
[AC_ARG_WITH([pkgconfigdir],
[AS_HELP_STRING([--with-pkgconfigdir],
[install directory for nx-x11.pc pkg-config file])],
[],[with_pkgconfigdir='$(libdir)/pkgconfig'])
AC_SUBST([pkgconfigdir], [${with_pkgconfigdir}])])
# Required when PKG_CHECK_MODULES called within an if statement
PKG_PROG_PKG_CONFIG
AC_PATH_PROG([GLIB_MKENUMS], [glib-mkenums])
AC_PATH_PROG([GLIB_GENMARSHAL], [glib-genmarshal])
AC_ARG_ENABLE([deprecations],
[AS_HELP_STRING([--enable-deprecations],
[allow deprecated API usage @<:@default=yes@:>@])],
[],
[enable_deprecations=yes])
AS_IF([test "x$enable_deprecations" = xno],
[CFLAGS="$CFLAGS -DG_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED -DGSEAL_ENABLE -DGTK_DISABLE_SINGLE_INCLUDES"]
)
##############################
# Dependencies
##############################
GTK_REQUIRED_VERSION=2.18
GTK3_REQUIRED_VERSION=3.6
GIO_UNIX_REQUIRED_VERSION=2.37
IDO_REQUIRED_VERSION=0.4.0
AC_ARG_WITH([gtk],
[AS_HELP_STRING([--with-gtk],
[Which version of gtk to use @<:@default=3@:>@])],
[],
[with_gtk=3])
AS_IF([test "x$with_gtk" = x3],
[PKG_CHECK_MODULES(LIBINDICATOR, gtk+-3.0 >= $GTK3_REQUIRED_VERSION
gmodule-2.0
gio-unix-2.0 >= $GIO_UNIX_REQUIRED_VERSION
libayatana-ido3-0.4 >= $IDO_REQUIRED_VERSION)
],
[test "x$with_gtk" = x2],
[PKG_CHECK_MODULES(LIBINDICATOR, gtk+-2.0 >= $GTK_REQUIRED_VERSION
gmodule-2.0
gio-unix-2.0 >= $GIO_UNIX_REQUIRED_VERSION)
],
[AC_MSG_FAILURE([Value for --with-gtk was neither 2 nor 3])]
)
AM_CONDITIONAL(USE_GTK3, [test "x$with_gtk" = x3])
LT_LIB_M
AC_SUBST(LIBM)
##############################
# Custom Junk
##############################
AC_DEFUN([AC_DEFINE_PATH], [
test "x$prefix" = xNONE && prefix="$ac_default_prefix"
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
ac_define_path=`eval echo [$]$2`
ac_define_path=`eval echo [$]ac_define_path`
$1="$ac_define_path"
AC_SUBST($1)
ifelse($3, ,
AC_DEFINE_UNQUOTED($1, "$ac_define_path"),
AC_DEFINE_UNQUOTED($1, "$ac_define_path", $3))
])
##############################
# ./configure Flags messings
##############################
cflags_set=${CFLAGS+set}
# find the actual value for $prefix that we'll end up with
REAL_PREFIX=
if test "x$prefix" = "xNONE"; then
REAL_PREFIX=$ac_default_prefix
else
REAL_PREFIX=$prefix
fi
# Have to go $sysconfdir->$prefix/etc->/usr/local/etc
# if you actually know how to code shell then fix this :-)
SYSCONFDIR_TMP="$sysconfdir"
old_prefix=$prefix
prefix=$REAL_PREFIX
EXPANDED_SYSCONFDIR=`eval echo $SYSCONFDIR_TMP`
prefix=$old_prefix
AC_SUBST(EXPANDED_SYSCONFDIR)
AC_DEFINE_PATH(PREFIX, "${prefix}", [prefix directory])
AC_DEFINE_PATH(SYSCONFDIR, "${sysconfdir}", [system configuration dir])
AC_DEFINE_PATH(LIBDIR, "${libdir}", [system configuration dir])
#########################
# Check for systemd
#########################
PKG_CHECK_MODULES(SYSTEMD, systemd,
[has_systemd=yes],
[]
)
if test "x$has_systemd" = "xyes"; then
SYSTEMD_USERDIR=`$PKG_CONFIG --variable=systemduserunitdir systemd`
AC_SUBST(SYSTEMD_USERDIR)
AC_DEFINE(HAVE_SYSTEMD, 1, [create ayatana-indicators-pre.target for systemd])
fi
#########################
# Check if build tests
#########################
AC_ARG_ENABLE([tests],
AC_HELP_STRING([--disable-tests], [disable tests]),,
[enable_tests=yes])
AM_CONDITIONAL([WANT_TESTS], [test "x$enable_tests" != "xno"])
#########################
# Debug symbols
#########################
AC_ARG_ENABLE([debug],
AS_HELP_STRING([--enable-debug],[build with debug symbols]),,
[enable_debug=no])
if test "x$enable_debug" = "xyes"; then
CFLAGS="-g $CFLAGS"
AC_DEFINE(ENABLE_DEBUG, 1, [build with extra debug information])
fi
AM_CONDITIONAL(ENABLE_DEBUG, test "$enable_debug" = "yes")
###########################
# gcov coverage reporting
###########################
m4_include([m4/gcov.m4])
AC_TDD_GCOV
AM_CONDITIONAL([HAVE_GCOV], [test "x$ac_cv_check_gcov" = xyes])
AM_CONDITIONAL([HAVE_LCOV], [test "x$ac_cv_check_lcov" = xyes])
AM_CONDITIONAL([HAVE_GCOVR], [test "x$ac_cv_check_gcovr" = xyes])
AC_SUBST(COVERAGE_CFLAGS)
AC_SUBST(COVERAGE_CXXFLAGS)
AC_SUBST(COVERAGE_LDFLAGS)
###########################
# Files
###########################
AC_CONFIG_FILES([
Makefile
data/Makefile
libayatana-indicator/Makefile
libayatana-indicator/ayatana-indicator-0.4.pc.in
libayatana-indicator/ayatana-indicator3-0.4.pc.in
tests/Makefile
tools/Makefile
])
AC_OUTPUT
###########################
# Results
###########################
AC_MSG_NOTICE([
Libindicator Configuration:
Prefix: $prefix
GTK+ Version: $with_gtk
Enable tests: $enable_tests
Enable debugging: $enable_debug
Coverage reporting: $use_gcov
])
libayatana-indicator-0.6.3/COPYING 0000644 0000000 0000000 00000104513 13565237013 013531 0 ustar GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Copyright (C)
This program 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, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
Copyright (C)
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
.
libayatana-indicator-0.6.3/data/ayatana-indicators-pre.target 0000644 0000000 0000000 00000000225 13565237013 021151 0 ustar [Unit]
Description=Target representing the lifecycle of the Ayatana Indicators. Each indicator should be bound to it in its individual service file.
libayatana-indicator-0.6.3/data/Makefile.am 0000644 0000000 0000000 00000000213 13565237013 015433 0 ustar #if defined(HAVE_SYSTEMD)
systemd_DATA = ayatana-indicators-pre.target
systemddir = $(SYSTEMD_USERDIR)
EXTRA_DIST = $(systemd_DATA)
#endif
libayatana-indicator-0.6.3/helper/test-loader-build 0000755 0000000 0000000 00000000220 13565237013 017211 0 ustar #!/bin/bash
gcc `pkg-config --cflags --libs gtk+-2.0` -I../libindicator/ test-loader.c ../libindicator/indicator-image-helper.c -o test-loader
libayatana-indicator-0.6.3/helper/test-loader.c 0000644 0000000 0000000 00000000553 13565237013 016343 0 ustar
#include
#include "indicator-image-helper.h"
int
main (int argv, char * argc[])
{
gtk_init(&argv, &argc);
GtkImage * image = indicator_image_helper(argc[1]);
GdkPixbuf * pixbuf = gtk_image_get_pixbuf(image);
g_debug("Pixbuf width: %d", gdk_pixbuf_get_width(pixbuf));
g_debug("Pixbuf height: %d", gdk_pixbuf_get_height(pixbuf));
return;
}
libayatana-indicator-0.6.3/libayatana-indicator/ayatana-indicator-0.4.pc.in.in 0000644 0000000 0000000 00000000636 13565237013 024003 0 ustar prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
bindir=@bindir@
includedir=@includedir@
indicatordir=${exec_prefix}/lib/ayatana-indicators/@indicator_abi_version@
iconsdir=@datarootdir@/@PACKAGE@/icons/
Cflags: -I${includedir}/libayatana-indicator-0.@indicator_api_version@
Requires: gtk+-2.0
Libs: -layatana-indicator
Name: libayatana-indicator
Description: libayatana-indicator.
Version: @VERSION@
libayatana-indicator-0.6.3/libayatana-indicator/ayatana-indicator3-0.4.pc.in.in 0000644 0000000 0000000 00000000643 13565237013 024064 0 ustar prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
bindir=@bindir@
includedir=@includedir@
indicatordir=${exec_prefix}/lib/ayatana-indicators3/@indicator_abi_version@/
iconsdir=@datarootdir@/@PACKAGE@/icons/
Cflags: -I${includedir}/libayatana-indicator3-0.@indicator_api_version@
Requires: gtk+-3.0
Libs: -layatana-indicator3
Name: libayatana-indicator3
Description: libayatana-indicator3.
Version: @VERSION@
libayatana-indicator-0.6.3/libayatana-indicator/dbus-shared.h 0000644 0000000 0000000 00000001636 13565237013 021131 0 ustar /*
Shared defines for DBus interfaces and API versions to
make sure the server and client agree.
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#define INDICATOR_SERVICE_INTERFACE "org.ayatana.indicator.service"
#define INDICATOR_SERVICE_OBJECT "/org/ayatana/indicator/service"
#define INDICATOR_SERVICE_VERSION 1
libayatana-indicator-0.6.3/libayatana-indicator/indicator-desktop-shortcuts.c 0000644 0000000 0000000 00000053365 13565237013 024410 0 ustar /*
A small file to parse through the actions that are available
in the desktop file and making those easily usable.
Copyright 2010 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include
#include "indicator-desktop-shortcuts.h"
#define ACTIONS_KEY "Actions"
#define ACTION_GROUP_PREFIX "Desktop Action"
#define OLD_GROUP_SUFFIX "Shortcut Group"
#define OLD_SHORTCUTS_KEY "X-Ayatana-Desktop-Shortcuts"
#define OLD_ENVIRON_KEY "TargetEnvironment"
#define PROP_DESKTOP_FILE_S "desktop-file"
#define PROP_IDENTITY_S "identity"
typedef enum _actions_t actions_t;
enum _actions_t {
ACTIONS_NONE,
ACTIONS_XAYATANA,
ACTIONS_DESKTOP_SPEC
};
typedef struct _IndicatorDesktopShortcutsPrivate IndicatorDesktopShortcutsPrivate;
struct _IndicatorDesktopShortcutsPrivate {
actions_t actions;
GKeyFile * keyfile;
gchar * identity;
GArray * nicks;
gchar * domain;
};
enum {
PROP_0,
PROP_DESKTOP_FILE,
PROP_IDENTITY
};
#define INDICATOR_DESKTOP_SHORTCUTS_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), INDICATOR_TYPE_DESKTOP_SHORTCUTS, IndicatorDesktopShortcutsPrivate))
static void indicator_desktop_shortcuts_class_init (IndicatorDesktopShortcutsClass *klass);
static void indicator_desktop_shortcuts_init (IndicatorDesktopShortcuts *self);
static void indicator_desktop_shortcuts_dispose (GObject *object);
static void indicator_desktop_shortcuts_finalize (GObject *object);
static void set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec);
static void get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec);
static void parse_keyfile (IndicatorDesktopShortcuts * ids);
static gboolean should_show (GKeyFile * keyfile, const gchar * group, const gchar * identity, gboolean should_have_target);
G_DEFINE_TYPE (IndicatorDesktopShortcuts, indicator_desktop_shortcuts, G_TYPE_OBJECT);
/* Build up the class */
static void
indicator_desktop_shortcuts_class_init (IndicatorDesktopShortcutsClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->dispose = indicator_desktop_shortcuts_dispose;
object_class->finalize = indicator_desktop_shortcuts_finalize;
/* Property funcs */
object_class->set_property = set_property;
object_class->get_property = get_property;
g_object_class_install_property(object_class, PROP_DESKTOP_FILE,
g_param_spec_string(PROP_DESKTOP_FILE_S,
"The path of the desktop file to read",
"A path to a desktop file that we'll look for shortcuts in.",
NULL,
G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property(object_class, PROP_IDENTITY,
g_param_spec_string(PROP_IDENTITY_S,
"The string that represents the identity that we're acting as.",
"Used to process ShowIn and NotShownIn fields of the desktop shortcust to get the proper list.",
NULL,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY));
return;
}
/* Initialize instance data */
static void
indicator_desktop_shortcuts_init (IndicatorDesktopShortcuts *self)
{
IndicatorDesktopShortcutsPrivate * priv = indicator_desktop_shortcuts_get_instance_private(self);
priv->keyfile = NULL;
priv->identity = NULL;
priv->domain = NULL;
priv->nicks = g_array_new(TRUE, TRUE, sizeof(gchar *));
priv->actions = ACTIONS_NONE;
return;
}
/* Clear object references */
static void
indicator_desktop_shortcuts_dispose (GObject *object)
{
IndicatorDesktopShortcuts * desktop_shortcuts = INDICATOR_DESKTOP_SHORTCUTS(object);
IndicatorDesktopShortcutsPrivate * priv = indicator_desktop_shortcuts_get_instance_private(desktop_shortcuts);
if (priv->keyfile) {
g_key_file_free(priv->keyfile);
priv->keyfile = NULL;
}
G_OBJECT_CLASS (indicator_desktop_shortcuts_parent_class)->dispose (object);
return;
}
/* Free all memory */
static void
indicator_desktop_shortcuts_finalize (GObject *object)
{
IndicatorDesktopShortcuts * desktop_shortcuts = INDICATOR_DESKTOP_SHORTCUTS(object);
IndicatorDesktopShortcutsPrivate * priv = indicator_desktop_shortcuts_get_instance_private(desktop_shortcuts);
if (priv->identity != NULL) {
g_free(priv->identity);
priv->identity = NULL;
}
if (priv->domain != NULL) {
g_free(priv->domain);
priv->domain = NULL;
}
if (priv->nicks != NULL) {
gint i;
for (i = 0; i < priv->nicks->len; i++) {
gchar * nick = g_array_index(priv->nicks, gchar *, i);
g_free(nick);
}
g_array_free(priv->nicks, TRUE);
priv->nicks = NULL;
}
G_OBJECT_CLASS (indicator_desktop_shortcuts_parent_class)->finalize (object);
return;
}
/* Sets one of the two properties we have, only at construction though */
static void
set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)
{
g_return_if_fail(INDICATOR_IS_DESKTOP_SHORTCUTS(object));
IndicatorDesktopShortcuts * desktop_shortcuts = INDICATOR_DESKTOP_SHORTCUTS(object);
IndicatorDesktopShortcutsPrivate * priv = indicator_desktop_shortcuts_get_instance_private(desktop_shortcuts);
switch(prop_id) {
case PROP_DESKTOP_FILE: {
if (priv->keyfile != NULL) {
g_key_file_free(priv->keyfile);
priv->keyfile = NULL;
priv->actions = ACTIONS_NONE;
}
GError * error = NULL;
GKeyFile * keyfile = g_key_file_new();
g_key_file_load_from_file(keyfile, g_value_get_string(value), G_KEY_FILE_NONE, &error);
if (error != NULL) {
g_warning("Unable to load keyfile from file '%s': %s", g_value_get_string(value), error->message);
g_error_free(error);
g_key_file_free(keyfile);
break;
}
/* Always prefer the desktop spec if we can get it */
if (priv->actions == ACTIONS_NONE && g_key_file_has_key(keyfile, G_KEY_FILE_DESKTOP_GROUP, ACTIONS_KEY, NULL)) {
priv->actions = ACTIONS_DESKTOP_SPEC;
}
/* But fallback if we can't */
if (priv->actions == ACTIONS_NONE && g_key_file_has_key(keyfile, G_KEY_FILE_DESKTOP_GROUP, OLD_SHORTCUTS_KEY, NULL)) {
priv->actions = ACTIONS_XAYATANA;
g_warning("Desktop file '%s' is using a deprecated format for its actions that will be dropped soon.", g_value_get_string(value));
}
if (priv->actions == ACTIONS_NONE) {
g_key_file_free(keyfile);
break;
}
priv->keyfile = keyfile;
parse_keyfile(desktop_shortcuts);
break;
}
case PROP_IDENTITY:
if (priv->identity != NULL) {
g_warning("Identity already set to '%s' and trying to set it to '%s'.", priv->identity, g_value_get_string(value));
return;
}
priv->identity = g_value_dup_string(value);
parse_keyfile(desktop_shortcuts);
break;
/* *********************** */
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
return;
}
/* Gets either the desktop file our the identity. */
static void
get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec)
{
g_return_if_fail(INDICATOR_IS_DESKTOP_SHORTCUTS(object));
IndicatorDesktopShortcuts * desktop_shortcuts = INDICATOR_DESKTOP_SHORTCUTS(object);
IndicatorDesktopShortcutsPrivate * priv = indicator_desktop_shortcuts_get_instance_private(desktop_shortcuts);
switch(prop_id) {
case PROP_IDENTITY:
g_value_set_string(value, priv->identity);
break;
/* *********************** */
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
return;
}
/* Checks to see if we can, and if we can it goes through
and parses the keyfile entries. */
static void
parse_keyfile (IndicatorDesktopShortcuts * ids)
{
IndicatorDesktopShortcutsPrivate * priv = indicator_desktop_shortcuts_get_instance_private(ids);
if (priv->keyfile == NULL) {
return;
}
if (priv->identity == NULL) {
return;
}
/* Remove a previous translation domain if we had one
from a previously parsed file. */
if (priv->domain != NULL) {
g_free(priv->domain);
priv->domain = NULL;
}
/* Check to see if there is a custom translation domain that
we should take into account. */
if (priv->domain == NULL &&
g_key_file_has_key(priv->keyfile, G_KEY_FILE_DESKTOP_GROUP, "X-GNOME-Gettext-Domain", NULL)) {
priv->domain = g_key_file_get_string(priv->keyfile, G_KEY_FILE_DESKTOP_GROUP, "X-GNOME-Gettext-Domain", NULL);
}
if (priv->domain == NULL &&
g_key_file_has_key(priv->keyfile, G_KEY_FILE_DESKTOP_GROUP, "X-Ubuntu-Gettext-Domain", NULL)) {
priv->domain = g_key_file_get_string(priv->keyfile, G_KEY_FILE_DESKTOP_GROUP, "X-Ubuntu-Gettext-Domain", NULL);
}
/* We need to figure out what we're looking for and what we want to
look for in the rest of the file */
const gchar * list_name = NULL;
const gchar * group_format = NULL;
gboolean should_have_target = FALSE;
switch (priv->actions) {
case ACTIONS_NONE:
/* None, let's just get outta here */
return;
case ACTIONS_XAYATANA:
list_name = OLD_SHORTCUTS_KEY;
group_format = "%s " OLD_GROUP_SUFFIX;
should_have_target = TRUE;
break;
case ACTIONS_DESKTOP_SPEC:
list_name = ACTIONS_KEY;
group_format = ACTION_GROUP_PREFIX " %s";
should_have_target = FALSE;
break;
default:
g_assert_not_reached();
return;
}
/* Okay, we've got everything we need. Let's get it on! */
gint i;
gsize num_nicks = 0;
gchar ** nicks = g_key_file_get_string_list(priv->keyfile, G_KEY_FILE_DESKTOP_GROUP, list_name, &num_nicks, NULL);
/* If there is an error from get_string_list num_nicks should still
be zero, so this loop will drop out. */
for (i = 0; i < num_nicks; i++) {
/* g_debug("Looking at group nick %s", nicks[i]); */
gchar * groupname = g_strdup_printf(group_format, nicks[i]);
if (!g_key_file_has_group(priv->keyfile, groupname)) {
g_warning("Unable to find group '%s'", groupname);
g_free(groupname);
continue;
}
if (!should_show(priv->keyfile, G_KEY_FILE_DESKTOP_GROUP, priv->identity, FALSE)) {
g_free(groupname);
continue;
}
if (!should_show(priv->keyfile, groupname, priv->identity, should_have_target)) {
g_free(groupname);
continue;
}
gchar * nickalloc = g_strdup(nicks[i]);
g_array_append_val(priv->nicks, nickalloc);
g_free(groupname);
}
if (nicks != NULL) {
g_strfreev(nicks);
}
return;
}
/* Checks the ONLY_SHOW_IN and NOT_SHOW_IN keys for a group to
see if we should be showing ourselves. */
static gboolean
should_show (GKeyFile * keyfile, const gchar * group, const gchar * identity, gboolean should_have_target)
{
if (should_have_target && g_key_file_has_key(keyfile, group, OLD_ENVIRON_KEY, NULL)) {
/* If we've got this key, we're going to return here and not
process the deprecated keys. */
gint j;
gsize num_env = 0;
gchar ** envs = g_key_file_get_string_list(keyfile, group, OLD_ENVIRON_KEY, &num_env, NULL);
for (j = 0; j < num_env; j++) {
if (g_strcmp0(envs[j], identity) == 0) {
break;
}
}
if (envs != NULL) {
g_strfreev(envs);
}
if (j == num_env) {
return FALSE;
}
return TRUE;
}
/* If there is a list of OnlyShowIn entries we need to check
to see if we're in that list. If not, we drop this nick */
if (g_key_file_has_key(keyfile, group, G_KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN, NULL)) {
gint j;
gsize num_only = 0;
gchar ** onlies = g_key_file_get_string_list(keyfile, group, G_KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN, &num_only, NULL);
for (j = 0; j < num_only; j++) {
if (g_strcmp0(onlies[j], identity) == 0) {
break;
}
}
if (onlies != NULL) {
g_strfreev(onlies);
}
if (j == num_only) {
return FALSE;
}
}
/* If there is a NotShowIn entry we need to make sure that we're
not in that list. If we are, we need to drop out. */
if (g_key_file_has_key(keyfile, group, G_KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN, NULL)) {
gint j;
gsize num_not = 0;
gchar ** nots = g_key_file_get_string_list(keyfile, group, G_KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN, &num_not, NULL);
for (j = 0; j < num_not; j++) {
if (g_strcmp0(nots[j], identity) == 0) {
break;
}
}
if (nots != NULL) {
g_strfreev(nots);
}
if (j != num_not) {
return FALSE;
}
}
return TRUE;
}
/* Looks through the nicks to see if this one is in the list,
and thus valid to use. */
static gboolean
is_valid_nick (gchar ** list, const gchar * nick)
{
if (*list == NULL)
return FALSE;
/* g_debug("Checking Nick: %s", list[0]); */
if (g_strcmp0(list[0], nick) == 0)
return TRUE;
return is_valid_nick(&list[1], nick);
}
/* API */
/**
indicator_desktop_shortcuts_new:
@file: The desktop file that would be opened to
find the actions.
@identity: This is a string that represents the identity
that should be used in searching those actions. It
relates to the ShowIn and NotShownIn properties.
This function creates the basic object. It involves opening
the file and parsing it. It could potentially block on IO. At
the end of the day you'll have a fully functional object.
Return value: A new #IndicatorDesktopShortcuts object.
*/
IndicatorDesktopShortcuts *
indicator_desktop_shortcuts_new (const gchar * file, const gchar * identity)
{
GObject * obj = g_object_new(INDICATOR_TYPE_DESKTOP_SHORTCUTS,
PROP_DESKTOP_FILE_S, file,
PROP_IDENTITY_S, identity,
NULL);
return INDICATOR_DESKTOP_SHORTCUTS(obj);
}
/**
indicator_desktop_shortcuts_get_nicks:
@ids: The #IndicatorDesktopShortcuts object to look in
Give you the list of commands that are available for this desktop
file given the identity that was passed in at creation. This will
filter out the various items in the desktop file. These nicks can
then be used as keys for working with the desktop file.
Return value: A #NULL terminated list of strings. This memory
is managed by the @ids object.
*/
const gchar **
indicator_desktop_shortcuts_get_nicks (IndicatorDesktopShortcuts * ids)
{
g_return_val_if_fail(INDICATOR_IS_DESKTOP_SHORTCUTS(ids), NULL);
IndicatorDesktopShortcutsPrivate * priv = indicator_desktop_shortcuts_get_instance_private(ids);
return (const gchar **)priv->nicks->data;
}
/**
indicator_desktop_shortcuts_nick_get_name:
@ids: The #IndicatorDesktopShortcuts object to look in
@nick: Which command that we're referencing.
This function looks in a desktop file for a nick to find the
user visible name for that shortcut. The @nick parameter
should be gotten from #indicator_desktop_shortcuts_get_nicks
though it's not required that the exact memory location
be the same.
Return value: A user visible string for the shortcut or
#NULL on error.
*/
gchar *
indicator_desktop_shortcuts_nick_get_name (IndicatorDesktopShortcuts * ids, const gchar * nick)
{
g_return_val_if_fail(INDICATOR_IS_DESKTOP_SHORTCUTS(ids), NULL);
IndicatorDesktopShortcutsPrivate * priv = indicator_desktop_shortcuts_get_instance_private(ids);
g_return_val_if_fail(priv->actions != ACTIONS_NONE, NULL);
g_return_val_if_fail(priv->keyfile != NULL, NULL);
g_return_val_if_fail(is_valid_nick((gchar **)priv->nicks->data, nick), NULL);
const gchar * group_format = NULL;
switch (priv->actions) {
case ACTIONS_XAYATANA:
group_format = "%s " OLD_GROUP_SUFFIX;
break;
case ACTIONS_DESKTOP_SPEC:
group_format = ACTION_GROUP_PREFIX " %s";
break;
default:
g_assert_not_reached();
return NULL;
}
gchar * groupheader = g_strdup_printf(group_format, nick);
if (!g_key_file_has_group(priv->keyfile, groupheader)) {
g_warning("The group for nick '%s' doesn't exist anymore.", nick);
g_free(groupheader);
return NULL;
}
if (!g_key_file_has_key(priv->keyfile, groupheader, G_KEY_FILE_DESKTOP_KEY_NAME, NULL)) {
g_warning("No name available for nick '%s'", nick);
g_free(groupheader);
return NULL;
}
gchar * name = NULL;
gchar * keyvalue = g_key_file_get_string(priv->keyfile,
groupheader,
G_KEY_FILE_DESKTOP_KEY_NAME,
NULL);
gchar * localeval = g_key_file_get_locale_string(priv->keyfile,
groupheader,
G_KEY_FILE_DESKTOP_KEY_NAME,
NULL,
NULL);
g_free(groupheader);
if (priv->domain != NULL && g_strcmp0(keyvalue, localeval) == 0) {
name = g_strdup(g_dgettext(priv->domain, keyvalue));
g_free(localeval);
} else {
name = localeval;
}
g_free(keyvalue);
return name;
}
/**
indicator_desktop_shortcuts_nick_exec_with_context:
@ids: The #IndicatorDesktopShortcuts object to look in
@nick: Which command that we're referencing.
@launch_context: The #GAppLaunchContext to use for launching the shortcut
Here we take a @nick and try and execute the action that is
associated with it. The @nick parameter should be gotten
from #indicator_desktop_shortcuts_get_nicks though it's not
required that the exact memory location be the same.
Return value: #TRUE on success or #FALSE on error.
*/
gboolean
indicator_desktop_shortcuts_nick_exec_with_context (IndicatorDesktopShortcuts * ids, const gchar * nick, GAppLaunchContext * launch_context)
{
GError * error = NULL;
gchar * current_dir = NULL;
g_return_val_if_fail(INDICATOR_IS_DESKTOP_SHORTCUTS(ids), FALSE);
IndicatorDesktopShortcutsPrivate * priv = indicator_desktop_shortcuts_get_instance_private(ids);
g_return_val_if_fail(priv->actions != ACTIONS_NONE, FALSE);
g_return_val_if_fail(priv->keyfile != NULL, FALSE);
g_return_val_if_fail(is_valid_nick((gchar **)priv->nicks->data, nick), FALSE);
const gchar * group_format = NULL;
switch (priv->actions) {
case ACTIONS_XAYATANA:
group_format = "%s " OLD_GROUP_SUFFIX;
break;
case ACTIONS_DESKTOP_SPEC:
group_format = ACTION_GROUP_PREFIX " %s";
break;
default:
g_assert_not_reached();
return FALSE;
}
gchar * groupheader = g_strdup_printf(group_format, nick);
if (!g_key_file_has_group(priv->keyfile, groupheader)) {
g_warning("The group for nick '%s' doesn't exist anymore.", nick);
g_free(groupheader);
return FALSE;
}
if (!g_key_file_has_key(priv->keyfile, groupheader, G_KEY_FILE_DESKTOP_KEY_NAME, NULL)) {
g_warning("No name available for nick '%s'", nick);
g_free(groupheader);
return FALSE;
}
if (!g_key_file_has_key(priv->keyfile, groupheader, G_KEY_FILE_DESKTOP_KEY_EXEC, NULL)) {
g_warning("No exec available for nick '%s'", nick);
g_free(groupheader);
return FALSE;
}
/* If possible move to the proper launch path */
gchar * path = g_key_file_get_string(priv->keyfile, groupheader,
G_KEY_FILE_DESKTOP_KEY_PATH, NULL);
if (path && *path != '\0') {
current_dir = g_get_current_dir();
if (chdir(path) < 0) {
g_warning("Impossible to run action '%s' from path '%s'", nick, path);
g_free(current_dir);
g_free(groupheader);
g_free(path);
return FALSE;
}
}
/* Grab the name and the exec entries out of our current group */
gchar * name = g_key_file_get_locale_string(priv->keyfile,
groupheader,
G_KEY_FILE_DESKTOP_KEY_NAME,
NULL,
NULL);
gchar * exec = g_key_file_get_locale_string(priv->keyfile,
groupheader,
G_KEY_FILE_DESKTOP_KEY_EXEC,
NULL,
NULL);
GAppInfoCreateFlags flags = G_APP_INFO_CREATE_NONE;
if (launch_context) {
flags |= G_APP_INFO_CREATE_SUPPORTS_STARTUP_NOTIFICATION;
}
GAppInfo * appinfo = g_app_info_create_from_commandline(exec, name, flags, &error);
g_free(groupheader);
g_free(path);
g_free(name);
g_free(exec);
if (error != NULL) {
g_warning("Unable to build Command line App info: %s", error->message);
g_free(current_dir);
g_error_free(error);
return FALSE;
}
if (appinfo == NULL) {
g_warning("Unable to build Command line App info (unknown)");
g_free(current_dir);
return FALSE;
}
gboolean launched = g_app_info_launch(appinfo, NULL, launch_context, &error);
if (current_dir && chdir(current_dir) < 0)
g_warning("Impossible to switch back to default work dir");
if (error != NULL) {
g_warning("Unable to launch file from nick '%s': %s", nick, error->message);
g_clear_error(&error);
}
g_free(current_dir);
g_object_unref(appinfo);
return launched;
}
/**
indicator_desktop_shortcuts_nick_exec:
@ids: The #IndicatorDesktopShortcuts object to look in
@nick: Which command that we're referencing.
Here we take a @nick and try and execute the action that is
associated with it. The @nick parameter should be gotten
from #indicator_desktop_shortcuts_get_nicks though it's not
required that the exact memory location be the same.
This function is deprecated and shouldn't be used in newly
written code.
Return value: #TRUE on success or #FALSE on error.
*/
gboolean
indicator_desktop_shortcuts_nick_exec (IndicatorDesktopShortcuts * ids, const gchar * nick)
{
return indicator_desktop_shortcuts_nick_exec_with_context (ids, nick, NULL);
}
libayatana-indicator-0.6.3/libayatana-indicator/indicator-desktop-shortcuts.h 0000644 0000000 0000000 00000006746 13565237013 024416 0 ustar /*
A small file to parse through the actions that are available
in the desktop file and making those easily usable.
Copyright 2010 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#ifndef __INDICATOR_DESKTOP_SHORTCUTS_H__
#define __INDICATOR_DESKTOP_SHORTCUTS_H__
#include
#include
#include
G_BEGIN_DECLS
#define INDICATOR_TYPE_DESKTOP_SHORTCUTS (indicator_desktop_shortcuts_get_type ())
#define INDICATOR_DESKTOP_SHORTCUTS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), INDICATOR_TYPE_DESKTOP_SHORTCUTS, IndicatorDesktopShortcuts))
#define INDICATOR_DESKTOP_SHORTCUTS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), INDICATOR_TYPE_DESKTOP_SHORTCUTS, IndicatorDesktopShortcutsClass))
#define INDICATOR_IS_DESKTOP_SHORTCUTS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), INDICATOR_TYPE_DESKTOP_SHORTCUTS))
#define INDICATOR_IS_DESKTOP_SHORTCUTS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), INDICATOR_TYPE_DESKTOP_SHORTCUTS))
#define INDICATOR_DESKTOP_SHORTCUTS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), INDICATOR_TYPE_DESKTOP_SHORTCUTS, IndicatorDesktopShortcutsClass))
typedef struct _IndicatorDesktopShortcuts IndicatorDesktopShortcuts;
typedef struct _IndicatorDesktopShortcutsClass IndicatorDesktopShortcutsClass;
/**
IndicatorDesktopShortcutsClass:
@parent_class: Space for #GObjectClass
The vtable for our precious #IndicatorDesktopShortcutsClass.
*/
struct _IndicatorDesktopShortcutsClass {
GObjectClass parent_class;
};
/**
IndicatorDesktopShortcuts:
@parent: The parent data from #GObject
The public data for an instance of the class
#IndicatorDesktopShortcuts.
*/
struct _IndicatorDesktopShortcuts {
GObject parent;
};
GType indicator_desktop_shortcuts_get_type (void);
IndicatorDesktopShortcuts * indicator_desktop_shortcuts_new (const gchar * file,
const gchar * identity);
const gchar ** indicator_desktop_shortcuts_get_nicks (IndicatorDesktopShortcuts * ids);
gchar * indicator_desktop_shortcuts_nick_get_name (IndicatorDesktopShortcuts * ids,
const gchar * nick);
gboolean indicator_desktop_shortcuts_nick_exec_with_context (IndicatorDesktopShortcuts * ids,
const gchar * nick,
GAppLaunchContext * launch_context);
GLIB_DEPRECATED_FOR(indicator_desktop_shortcuts_nick_exec_with_context)
gboolean indicator_desktop_shortcuts_nick_exec (IndicatorDesktopShortcuts * ids,
const gchar * nick);
G_END_DECLS
#endif
libayatana-indicator-0.6.3/libayatana-indicator/indicator.h 0000644 0000000 0000000 00000002435 13565237013 020702 0 ustar /*
An interface for indicators to link to for creation.
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#ifndef __LIBINDICATOR_INDICATOR_H_SEEN__
#define __LIBINDICATOR_INDICATOR_H_SEEN__ 1
#include
#define INDICATOR_GET_VERSION_S "get_version"
typedef gchar * (*get_version_t) (void);
gchar * get_version (void);
#define INDICATOR_VERSION "0.3.0"
#define INDICATOR_SET_VERSION gchar * get_version(void) { return INDICATOR_VERSION; }
#define INDICATOR_VERSION_CHECK(x) (!g_strcmp0(x, INDICATOR_VERSION))
#define INDICATOR_GET_TYPE_S "get_type"
typedef GType (*get_type_t) (void);
#define INDICATOR_SET_TYPE(x) GType get_type (void) { return x; }
#endif /* __LIBINDICATOR_INDICATOR_H_SEEN__ */
libayatana-indicator-0.6.3/libayatana-indicator/indicator-image-helper.c 0000644 0000000 0000000 00000015022 13565237013 023226 0 ustar /*
A little helper to make a themed image with fallbacks that
is only constrained in the vertical dimention.
Copyright 2010 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#include
#include "indicator-image-helper.h"
const gchar * INDICATOR_NAMES_DATA = "indicator-names-data";
const gint ICON_SIZE = 22;
static void
refresh_image (GtkImage * image)
{
g_return_if_fail(GTK_IS_IMAGE(image));
const gchar * icon_filename = NULL;
GtkIconInfo * icon_info = NULL;
GIcon * icon_names = (GIcon *)g_object_get_data(G_OBJECT(image), INDICATOR_NAMES_DATA);
g_return_if_fail(G_IS_ICON (icon_names));
/* Get the default theme */
GtkIconTheme * default_theme = gtk_icon_theme_get_default();
g_return_if_fail(default_theme != NULL);
/* Look through the themes for that icon */
icon_info = gtk_icon_theme_lookup_by_gicon(default_theme, icon_names, ICON_SIZE, 0);
if (icon_info == NULL) {
/* Maybe the icon was just added to the theme, see if a rescan helps */
gtk_icon_theme_rescan_if_needed(default_theme);
icon_info = gtk_icon_theme_lookup_by_gicon(default_theme, icon_names, ICON_SIZE, 0);
}
if (icon_info == NULL) {
/* Try using the second item in the names, which should be the original filename supplied */
const gchar * const * names = g_themed_icon_get_names(G_THEMED_ICON( icon_names ));
if (names) {
icon_filename = names[1];
} else {
g_warning("Unable to find icon\n");
gtk_image_clear(image);
return;
}
} else {
/* Grab the filename */
icon_filename = gtk_icon_info_get_filename(icon_info);
}
if (icon_filename == NULL && !G_IS_BYTES_ICON(icon_names)) {
/* show a broken image if we don't have a filename or image data */
gtk_image_set_from_icon_name(image, "image-missing", GTK_ICON_SIZE_LARGE_TOOLBAR);
return;
}
if (icon_info != NULL && !G_IS_BYTES_ICON(icon_names)) {
GdkPixbuf *pixbuf = gtk_icon_info_load_icon(icon_info, NULL);
if (gdk_pixbuf_get_height(pixbuf) < ICON_SIZE) {
gtk_image_set_from_file(image, icon_filename);
} else {
gtk_image_set_from_gicon(image, icon_names, GTK_ICON_SIZE_LARGE_TOOLBAR);
}
g_object_unref (pixbuf);
} else if (icon_filename != NULL) {
gtk_image_set_from_file(image, icon_filename);
gint height;
gdk_pixbuf_get_file_info(icon_filename, NULL, &height);
if (height > ICON_SIZE) {
gtk_image_set_pixel_size(image, ICON_SIZE);
}
} else if (G_IS_LOADABLE_ICON(icon_names)) {
/* Build a pixbuf if needed */
GdkPixbuf * pixbuf = NULL;
GError * error = NULL;
GInputStream * stream = g_loadable_icon_load(G_LOADABLE_ICON(icon_names), ICON_SIZE, NULL, NULL, &error);
if (stream != NULL) {
pixbuf = gdk_pixbuf_new_from_stream(stream, NULL, &error);
g_input_stream_close (stream, NULL, NULL);
g_object_unref (stream);
if (pixbuf != NULL) {
/* Scale icon if all we get is something too big. */
if (gdk_pixbuf_get_height(pixbuf) > ICON_SIZE) {
gfloat scale = (gfloat)ICON_SIZE / (gfloat)gdk_pixbuf_get_height(pixbuf);
gint width = round(gdk_pixbuf_get_width(pixbuf) * scale);
GdkPixbuf * scaled = gdk_pixbuf_scale_simple(pixbuf, width, ICON_SIZE, GDK_INTERP_BILINEAR);
g_object_unref(G_OBJECT(pixbuf));
pixbuf = scaled;
}
/* Put the pixbuf on the image */
gtk_image_set_from_pixbuf(image, pixbuf);
g_object_unref(G_OBJECT(pixbuf));
} else {
g_warning ("Unable to load icon from data: %s", error->message);
g_error_free (error);
}
} else {
g_warning ("Unable to load icon from data: %s", error->message);
g_error_free (error);
}
}
if (icon_info != NULL) {
#if GTK_CHECK_VERSION(3, 8, 0)
g_object_unref(icon_info);
#else
/* NOTE: Leaving this in for lower version as it seems
the object_unref() doesn't work on earlier versions. */
gtk_icon_info_free (icon_info);
#endif
}
}
/* Handles the theme changed signal to refresh the icon to make
sure that it changes appropriately */
static void
theme_changed_cb (GtkIconTheme * theme, gpointer user_data)
{
GtkImage * image = GTK_IMAGE(user_data);
refresh_image(image);
return;
}
/* Removes the signal on the theme that was calling update on this
image. */
static void
image_destroyed_cb (GtkImage * image, gpointer user_data)
{
g_signal_handlers_disconnect_by_func(gtk_icon_theme_get_default(), theme_changed_cb, image);
return;
}
/* Catch the style changing on the image to make sure
we've got the latest. */
static void
image_style_change_cb (GtkImage * image, GtkStyle * previous_style, gpointer user_data)
{
refresh_image(image);
return;
}
/* Builds an image with the name and fallbacks and all kinds of fun
stuff . */
GtkImage *
indicator_image_helper (const gchar * name)
{
/* Build us an image */
GtkImage * image = GTK_IMAGE(gtk_image_new());
if (name)
indicator_image_helper_update(image, name);
return image;
}
/* Updates and image with all the fun stuff */
void
indicator_image_helper_update (GtkImage * image, const gchar * name)
{
g_return_if_fail(name != NULL);
g_return_if_fail(name[0] != '\0');
g_return_if_fail(GTK_IS_IMAGE(image));
/* Build us a GIcon */
GIcon * icon_names = g_themed_icon_new_with_default_fallbacks(name);
g_warn_if_fail(icon_names != NULL);
g_return_if_fail(icon_names != NULL);
indicator_image_helper_update_from_gicon (image, icon_names);
g_object_unref (icon_names);
return;
}
void
indicator_image_helper_update_from_gicon (GtkImage *image, GIcon *icon)
{
gboolean seen_previously = FALSE;
seen_previously = (g_object_get_data(G_OBJECT(image), INDICATOR_NAMES_DATA) != NULL);
/* Attach our names to the image */
g_object_set_data_full(G_OBJECT(image), INDICATOR_NAMES_DATA, g_object_ref (icon), g_object_unref);
/* Put the pixbuf in */
refresh_image(image);
/* Connect to all changes */
if (!seen_previously) {
g_signal_connect(G_OBJECT(gtk_icon_theme_get_default()), "changed", G_CALLBACK(theme_changed_cb), image);
g_signal_connect(G_OBJECT(image), "destroy", G_CALLBACK(image_destroyed_cb), NULL);
g_signal_connect(G_OBJECT(image), "style-set", G_CALLBACK(image_style_change_cb), NULL);
}
return;
}
libayatana-indicator-0.6.3/libayatana-indicator/indicator-image-helper.h 0000644 0000000 0000000 00000002366 13565237013 023242 0 ustar /*
A little helper to make a themed image with fallbacks that
is only constrained in the vertical dimention.
Copyright 2010 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#ifndef __INDICATOR_IMAGE_HELPER_H__
#define __INDICATOR_IMAGE_HELPER_H__
#include
GtkImage * indicator_image_helper (const gchar * name);
void indicator_image_helper_update (GtkImage * image,
const gchar * name);
void indicator_image_helper_update_from_gicon (GtkImage * image,
GIcon * icon);
#endif /* __INDICATOR_IMAGE_HELPER_H__ */
libayatana-indicator-0.6.3/libayatana-indicator/indicator-ng.c 0000644 0000000 0000000 00000055142 13565237013 021302 0 ustar /*
* Copyright 2013 Canonical Ltd.
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 3, 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 GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see .
*
* Authors:
* Lars Uebernickel
*/
#include "indicator-ng.h"
#include "indicator-image-helper.h"
#include
struct _IndicatorNg
{
IndicatorObject parent;
gchar *service_file;
gchar *name;
gchar *object_path;
gchar *menu_object_path;
gchar *bus_name;
gchar *profile;
gchar *header_action;
gchar *scroll_action;
gchar *secondary_action;
gchar *submenu_action;
gint position;
guint name_watch_id;
GDBusConnection *session_bus;
GActionGroup *actions;
GMenuModel *menu;
IndicatorObjectEntry entry;
gchar *accessible_desc;
gint64 last_service_restart;
};
static void indicator_ng_initable_iface_init (GInitableIface *initable);
G_DEFINE_TYPE_WITH_CODE (IndicatorNg, indicator_ng, INDICATOR_OBJECT_TYPE,
G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, indicator_ng_initable_iface_init))
enum
{
PROP_0,
PROP_SERVICE_FILE,
PROP_PROFILE,
N_PROPERTIES
};
static GParamSpec *properties[N_PROPERTIES];
static void
indicator_ng_get_property (GObject *object,
guint property_id,
GValue *value,
GParamSpec *pspec)
{
IndicatorNg *self = INDICATOR_NG (object);
switch (property_id)
{
case PROP_SERVICE_FILE:
g_value_set_string (value, self->service_file);
break;
case PROP_PROFILE:
g_value_set_string (value, self->profile);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
indicator_ng_set_property (GObject *object,
guint property_id,
const GValue *value,
GParamSpec *pspec)
{
IndicatorNg *self = INDICATOR_NG (object);
switch (property_id)
{
case PROP_SERVICE_FILE: /* construct-only */
self->service_file = g_strdup (g_value_get_string (value));
break;
case PROP_PROFILE: /* construct-only */
self->profile = g_strdup (g_value_get_string (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
indicator_ng_free_actions_and_menu (IndicatorNg *self)
{
if (self->actions)
{
gtk_widget_insert_action_group (GTK_WIDGET (self->entry.menu), "indicator", NULL);
g_signal_handlers_disconnect_by_data (self->actions, self);
g_clear_object (&self->actions);
}
if (self->menu)
{
g_signal_handlers_disconnect_by_data (self->menu, self);
g_clear_object (&self->menu);
}
}
static void
indicator_ng_dispose (GObject *object)
{
IndicatorNg *self = INDICATOR_NG (object);
if (self->name_watch_id)
{
g_bus_unwatch_name (self->name_watch_id);
self->name_watch_id = 0;
}
g_clear_object (&self->session_bus);
indicator_ng_free_actions_and_menu (self);
g_clear_object (&self->entry.label);
g_clear_object (&self->entry.image);
g_clear_object (&self->entry.menu);
G_OBJECT_CLASS (indicator_ng_parent_class)->dispose (object);
}
static void
indicator_ng_finalize (GObject *object)
{
IndicatorNg *self = INDICATOR_NG (object);
g_free (self->service_file);
g_free (self->name);
g_free (self->object_path);
g_free (self->menu_object_path);
g_free (self->bus_name);
g_free (self->accessible_desc);
g_free (self->header_action);
g_free (self->scroll_action);
g_free (self->secondary_action);
g_free (self->submenu_action);
G_OBJECT_CLASS (indicator_ng_parent_class)->finalize (object);
}
static GList *
indicator_ng_get_entries (IndicatorObject *io)
{
IndicatorNg *self = INDICATOR_NG (io);
return g_list_append (NULL, &self->entry);
}
static gint
indicator_ng_get_position (IndicatorObject *io)
{
IndicatorNg *self = INDICATOR_NG (io);
return self->position;
}
static void
indicator_ng_entry_scrolled (IndicatorObject *io,
IndicatorObjectEntry *entry,
gint delta,
IndicatorScrollDirection direction)
{
IndicatorNg *self = INDICATOR_NG (io);
if (self->actions && self->scroll_action)
{
if (direction == INDICATOR_OBJECT_SCROLL_DOWN ||
direction == INDICATOR_OBJECT_SCROLL_LEFT)
{
delta *= -1;
}
g_action_group_activate_action (self->actions, self->scroll_action,
g_variant_new_int32 (delta));
}
}
void
indicator_ng_secondary_activate (IndicatorObject *io,
IndicatorObjectEntry *entry,
guint timestamp,
gpointer user_data)
{
IndicatorNg *self = INDICATOR_NG (io);
if (self->actions && self->secondary_action)
{
g_action_group_activate_action (self->actions, self->secondary_action, NULL);
}
}
static void
indicator_ng_menu_shown (GtkWidget *widget,
gpointer user_data)
{
IndicatorNg *self = user_data;
if (self->submenu_action)
g_action_group_change_action_state (self->actions, self->submenu_action,
g_variant_new_boolean (TRUE));
}
static void
indicator_ng_menu_hidden (GtkWidget *widget,
gpointer user_data)
{
IndicatorNg *self = user_data;
if (self->submenu_action)
g_action_group_change_action_state (self->actions, self->submenu_action,
g_variant_new_boolean (FALSE));
}
static void
indicator_ng_set_accessible_desc (IndicatorNg *self,
const gchar *accessible_desc)
{
g_free (self->accessible_desc);
self->accessible_desc = g_strdup (accessible_desc);
self->entry.accessible_desc = self->accessible_desc;
g_signal_emit_by_name (self, INDICATOR_OBJECT_SIGNAL_ACCESSIBLE_DESC_UPDATE, &self->entry);
}
static void
indicator_ng_set_icon_from_variant (IndicatorNg *self,
GVariant *variant)
{
GIcon *icon;
if (variant == NULL)
{
if (self->entry.image)
{
gtk_image_clear (self->entry.image);
gtk_widget_hide (GTK_WIDGET (self->entry.image));
}
return;
}
gtk_widget_show (GTK_WIDGET (self->entry.image));
icon = g_icon_deserialize (variant);
if (icon)
{
indicator_image_helper_update_from_gicon (self->entry.image, icon);
g_object_unref (icon);
}
else
{
gchar *text = g_variant_print (variant, TRUE);
g_warning ("invalid icon variant '%s'", text);
gtk_image_set_from_icon_name (self->entry.image, "image-missing", GTK_ICON_SIZE_LARGE_TOOLBAR);
g_free (text);
}
}
static void
indicator_ng_set_label (IndicatorNg *self,
const gchar *label)
{
if (label == NULL || *label == '\0')
{
if (self->entry.label)
gtk_widget_hide (GTK_WIDGET (self->entry.label));
return;
}
gtk_label_set_label (GTK_LABEL (self->entry.label), label);
gtk_widget_show (GTK_WIDGET (self->entry.label));
}
static void
indicator_ng_update_entry (IndicatorNg *self)
{
GVariant *state;
const gchar *label = NULL;
GVariant *icon = NULL;
const gchar *accessible_desc = NULL;
gboolean visible = TRUE;
g_return_if_fail (self->menu != NULL);
g_return_if_fail (self->actions != NULL);
if (!self->header_action ||
!g_action_group_has_action (self->actions, self->header_action))
{
indicator_object_set_visible (INDICATOR_OBJECT (self), FALSE);
return;
}
state = g_action_group_get_action_state (self->actions, self->header_action);
if (state && g_variant_is_of_type (state, G_VARIANT_TYPE ("(sssb)")))
{
const gchar *iconstr = NULL;
g_variant_get (state, "(&s&s&sb)", &label, &iconstr, &accessible_desc, &visible);
if (iconstr)
icon = g_variant_ref_sink (g_variant_new_string (iconstr));
}
else if (state && g_variant_is_of_type (state, G_VARIANT_TYPE ("a{sv}")))
{
g_variant_lookup (state, "label", "&s", &label);
g_variant_lookup (state, "icon", "*", &icon);
g_variant_lookup (state, "accessible-desc", "&s", &accessible_desc);
g_variant_lookup (state, "visible", "b", &visible);
}
else
g_warning ("the action of the indicator menu item must have state with type (sssb) or a{sv}");
indicator_ng_set_label (self, label);
indicator_ng_set_icon_from_variant (self, icon);
indicator_ng_set_accessible_desc (self, accessible_desc);
indicator_object_set_visible (INDICATOR_OBJECT (self), visible);
if (icon)
g_variant_unref (icon);
if (state)
g_variant_unref (state);
}
static gboolean
indicator_ng_menu_item_is_of_type (GMenuModel *menu,
gint index,
const gchar *expected_type)
{
gchar *type;
gboolean has_type = FALSE;
if (g_menu_model_get_item_attribute (menu, index, "x-canonical-type", "s", &type))
{
has_type = g_str_equal (type, expected_type);
g_free (type);
}
return has_type;
}
static void
indicator_ng_menu_changed (GMenuModel *menu,
gint position,
gint removed,
gint added,
gpointer user_data)
{
IndicatorNg *self = user_data;
/* The menu may only contain one item (the indicator title menu).
* Thus, the position is always 0, and there is either exactly one
* item added or exactly one item removed.
*/
g_return_if_fail (position == 0);
g_return_if_fail (added < 2 && removed < 2 && added ^ removed);
if (removed)
indicator_object_set_visible (INDICATOR_OBJECT (self), FALSE);
if (added)
{
g_clear_pointer (&self->header_action, g_free);
g_clear_pointer (&self->scroll_action, g_free);
g_clear_pointer (&self->secondary_action, g_free);
if (indicator_ng_menu_item_is_of_type (self->menu, 0, "org.ayatana.indicator.root"))
{
GMenuModel *popup;
gchar *action;
if (g_menu_model_get_item_attribute (self->menu, 0, G_MENU_ATTRIBUTE_ACTION, "s", &action))
{
if (g_str_has_prefix (action, "indicator."))
self->header_action = g_strdup (action + strlen ("indicator."));
g_free (action);
}
if (g_menu_model_get_item_attribute (self->menu, 0, "x-canonical-scroll-action", "s", &action))
{
if (g_str_has_prefix (action, "indicator."))
self->scroll_action = g_strdup (action + strlen ("indicator."));
g_free (action);
}
if (g_menu_model_get_item_attribute (self->menu, 0, "x-canonical-secondary-action", "s", &action))
{
if (g_str_has_prefix (action, "indicator."))
self->secondary_action = g_strdup (action + strlen ("indicator."));
g_free (action);
}
if (g_menu_model_get_item_attribute (self->menu, 0, "submenu-action", "s", &action))
{
if (g_str_has_prefix (action, "indicator."))
self->submenu_action = g_strdup (action + strlen ("indicator."));
g_free (action);
}
popup = g_menu_model_get_item_link (self->menu, 0, G_MENU_LINK_SUBMENU);
if (popup)
{
gtk_menu_shell_bind_model (GTK_MENU_SHELL (self->entry.menu), popup, NULL, TRUE);
g_object_unref (popup);
}
indicator_ng_update_entry (self);
}
else
g_warning ("indicator menu item must be of type 'org.ayatana.indicator.root'");
}
}
static void
indicator_ng_service_appeared (GDBusConnection *connection,
const gchar *name,
const gchar *name_owner,
gpointer user_data)
{
IndicatorNg *self = user_data;
g_assert (!self->actions);
g_assert (!self->menu);
/* watch is not established when menu_object_path == NULL */
g_assert (self->menu_object_path);
self->session_bus = g_object_ref (connection);
self->actions = G_ACTION_GROUP (g_dbus_action_group_get (connection, name_owner, self->object_path));
gtk_widget_insert_action_group (GTK_WIDGET (self->entry.menu), "indicator", self->actions);
g_signal_connect_swapped (self->actions, "action-added", G_CALLBACK (indicator_ng_update_entry), self);
g_signal_connect_swapped (self->actions, "action-removed", G_CALLBACK (indicator_ng_update_entry), self);
g_signal_connect_swapped (self->actions, "action-state-changed", G_CALLBACK (indicator_ng_update_entry), self);
self->menu = G_MENU_MODEL (g_dbus_menu_model_get (connection, name_owner, self->menu_object_path));
g_signal_connect (self->menu, "items-changed", G_CALLBACK (indicator_ng_menu_changed), self);
if (g_menu_model_get_n_items (self->menu))
indicator_ng_menu_changed (self->menu, 0, 0, 1, self);
indicator_ng_update_entry (self);
}
static void
indicator_ng_service_started (GObject *source_object,
GAsyncResult *res,
gpointer user_data)
{
IndicatorNg *self = user_data;
GError *error = NULL;
GVariant *result;
guint32 start_service_reply;
result = g_dbus_connection_call_finish (G_DBUS_CONNECTION (source_object), res, &error);
if (!result)
{
g_warning ("Could not activate service '%s': %s", self->name, error->message);
indicator_object_set_visible (INDICATOR_OBJECT (self), FALSE);
g_error_free (error);
return;
}
start_service_reply = 0;
g_variant_get (result, "(u)", &start_service_reply);
switch (start_service_reply)
{
case 1: /* DBUS_START_REPLY_SUCCESS */
break;
case 2: /* DBUS_START_REPLY_ALREADY_RUNNING */
g_warning ("could not start service '%s': it is already running", self->name);
break;
default:
g_assert_not_reached ();
}
g_variant_unref (result);
}
static void
indicator_ng_service_vanished (GDBusConnection *connection,
const gchar *name,
gpointer user_data)
{
IndicatorNg *self = user_data;
indicator_ng_free_actions_and_menu (self);
/* Names may vanish because the service decided it doesn't need to
* show its indicator anymore, or because it crashed. Let's assume it
* crashes and restart it unless it explicitly hid its indicator. */
if (indicator_object_entry_is_visible (INDICATOR_OBJECT (self), &self->entry))
{
gint64 now;
/* take care not to start it if it repeatedly crashes */
now = g_get_monotonic_time ();
if (now - self->last_service_restart < 1 * G_USEC_PER_SEC)
{
g_warning ("The indicator '%s' vanished too quickly after appearing. It won't "
"be respawned anymore, as it could be crashing repeatedly.", self->name);
return;
}
self->last_service_restart = now;
g_dbus_connection_call (self->session_bus,
"org.freedesktop.DBus",
"/",
"org.freedesktop.DBus",
"StartServiceByName",
g_variant_new ("(su)", self->bus_name, 0),
G_VARIANT_TYPE ("(u)"),
G_DBUS_CALL_FLAGS_NONE,
-1,
NULL,
indicator_ng_service_started,
self);
}
}
/* Get an integer from a keyfile. Returns @default_value if the key
* doesn't exist exists or is not an integer */
static gint
g_key_file_maybe_get_integer (GKeyFile *keyfile,
const gchar *group,
const gchar *key,
gint default_value)
{
GError *error = NULL;
gint i;
i = g_key_file_get_integer (keyfile, group, key, &error);
if (error)
{
g_error_free (error);
return default_value;
}
return i;
}
static gboolean
indicator_ng_load_from_keyfile (IndicatorNg *self,
GKeyFile *keyfile,
GError **error)
{
g_assert (self->name == NULL);
g_assert (self->object_path == NULL);
g_assert (self->menu_object_path == NULL);
self->name = g_key_file_get_string (keyfile, "Indicator Service", "Name", error);
if (self->name == NULL)
return FALSE;
self->object_path = g_key_file_get_string (keyfile, "Indicator Service", "ObjectPath", error);
if (self->object_path == NULL)
return FALSE;
self->position = g_key_file_maybe_get_integer (keyfile, "Indicator Service", "Position", -1);
/*
* Don't throw an error when the profile doesn't exist. Non-existant
* profiles are silently ignored by not showing an indicator at all.
*/
if (g_key_file_has_group (keyfile, self->profile))
{
/* however, if the profile exists, it must have "ObjectPath" */
self->menu_object_path = g_key_file_get_string (keyfile, self->profile, "ObjectPath", error);
if (self->menu_object_path == NULL)
return FALSE;
/* a position in the profile overrides the global one */
self->position = g_key_file_maybe_get_integer (keyfile, self->profile, "Position", self->position);
}
return TRUE;
}
static gboolean
indicator_ng_initable_init (GInitable *initable,
GCancellable *cancellable,
GError **error)
{
IndicatorNg *self = INDICATOR_NG (initable);
GKeyFile *keyfile;
gboolean success = FALSE;
self->bus_name = g_path_get_basename (self->service_file);
keyfile = g_key_file_new ();
if (g_key_file_load_from_file (keyfile, self->service_file, G_KEY_FILE_NONE, error) &&
indicator_ng_load_from_keyfile (self, keyfile, error))
{
self->entry.name_hint = self->name;
/* only watch the service when it supports the proile we're interested in */
if (self->menu_object_path)
{
self->name_watch_id = g_bus_watch_name (G_BUS_TYPE_SESSION,
self->bus_name,
G_BUS_NAME_WATCHER_FLAGS_AUTO_START,
indicator_ng_service_appeared,
indicator_ng_service_vanished,
self, NULL);
}
success = TRUE;
}
g_key_file_free (keyfile);
return success;
}
static void
indicator_ng_class_init (IndicatorNgClass *class)
{
GObjectClass *object_class = G_OBJECT_CLASS (class);
IndicatorObjectClass *io_class = INDICATOR_OBJECT_CLASS (class);
object_class->get_property = indicator_ng_get_property;
object_class->set_property = indicator_ng_set_property;
object_class->dispose = indicator_ng_dispose;
object_class->finalize = indicator_ng_finalize;
io_class->get_entries = indicator_ng_get_entries;
io_class->get_position = indicator_ng_get_position;
io_class->entry_scrolled = indicator_ng_entry_scrolled;
io_class->secondary_activate = indicator_ng_secondary_activate;
properties[PROP_SERVICE_FILE] = g_param_spec_string ("service-file",
"Service file",
"Path of the service file",
NULL,
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY |
G_PARAM_STATIC_STRINGS);
properties[PROP_PROFILE] = g_param_spec_string ("profile",
"Profile",
"Indicator profile",
"desktop",
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY |
G_PARAM_STATIC_STRINGS);
g_object_class_install_properties(object_class, N_PROPERTIES, properties);
}
static void
indicator_ng_initable_iface_init (GInitableIface *initable)
{
initable->init = indicator_ng_initable_init;
}
static void
indicator_ng_init (IndicatorNg *self)
{
self->entry.label = (GtkLabel*)g_object_ref_sink (gtk_label_new (NULL));
self->entry.image = (GtkImage*)g_object_ref_sink (gtk_image_new ());
self->entry.menu = (GtkMenu*)g_object_ref_sink (gtk_menu_new ());
g_signal_connect (self->entry.menu, "show", G_CALLBACK (indicator_ng_menu_shown), self);
g_signal_connect (self->entry.menu, "hide", G_CALLBACK (indicator_ng_menu_hidden), self);
/* work around IndicatorObject's warning that the accessible
* description is missing. We never set it on construction, but when
* the menu model has arrived on the bus.
*/
self->accessible_desc = g_strdup ("");
self->entry.accessible_desc = self->accessible_desc;
self->position = -1;
indicator_object_set_visible (INDICATOR_OBJECT (self), FALSE);
}
IndicatorNg *
indicator_ng_new (const gchar *service_file,
GError **error)
{
return g_initable_new (INDICATOR_TYPE_NG, NULL, error,
"service-file", service_file,
NULL);
}
IndicatorNg *
indicator_ng_new_for_profile (const gchar *service_file,
const gchar *profile,
GError **error)
{
return g_initable_new (INDICATOR_TYPE_NG, NULL, error,
"service-file", service_file,
"profile", profile,
NULL);
}
const gchar *
indicator_ng_get_service_file (IndicatorNg *self)
{
g_return_val_if_fail (INDICATOR_IS_NG (self), NULL);
return self->service_file;
}
const gchar *
indicator_ng_get_profile (IndicatorNg *self)
{
g_return_val_if_fail (INDICATOR_IS_NG (self), NULL);
return self->profile;
}
libayatana-indicator-0.6.3/libayatana-indicator/indicator-ng.h 0000644 0000000 0000000 00000004054 13565237013 021303 0 ustar /*
* Copyright 2013 Canonical Ltd.
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 3, 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 GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see .
*
* Authors:
* Lars Uebernickel
*/
#ifndef __INDICATOR_NG_H__
#define __INDICATOR_NG_H__
#include "indicator-object.h"
#define INDICATOR_TYPE_NG (indicator_ng_get_type ())
#define INDICATOR_NG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), INDICATOR_TYPE_NG, IndicatorNg))
#define INDICATOR_NG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), INDICATOR_TYPE_NG, IndicatorNgClass))
#define INDICATOR_IS_NG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), INDICATOR_TYPE_NG))
#define INDICATOR_IS_NG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), INDICATOR_TYPE_NG))
#define INDICATOR_NG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), INDICATOR_TYPE_NG, IndicatorNgClass))
typedef struct _IndicatorNg IndicatorNg;
typedef IndicatorObjectClass IndicatorNgClass;
GType indicator_ng_get_type (void);
IndicatorNg * indicator_ng_new (const gchar *service_file,
GError **error);
IndicatorNg * indicator_ng_new_for_profile (const gchar *service_file,
const gchar *profile,
GError **error);
const gchar * indicator_ng_get_service_file (IndicatorNg *indicator);
const gchar * indicator_ng_get_profile (IndicatorNg *indicator);
#endif
libayatana-indicator-0.6.3/libayatana-indicator/indicator-object.c 0000644 0000000 0000000 00000073266 13565237013 022153 0 ustar /*
An object to represent loadable indicator modules to make loading
them easy and objectified.
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "indicator.h"
#include "indicator-object.h"
#include "indicator-object-marshal.h"
#include "indicator-object-enum-types.h"
/**
@ENTRY_INIT: The entry hasn't been initialized yet, so its
visibility will depend upon the inital-visibility property.
@ENTRY_VISIBLE: The entry is visible
@ENTRY_INVISIBLE: The entry is invisible
*/
typedef enum {
ENTRY_INIT,
ENTRY_VISIBLE,
ENTRY_INVISIBLE
}
EntryVisibility;
typedef struct _IndicatorObjectEntryPrivate {
EntryVisibility visibility;
}
IndicatorObjectEntryPrivate;
/**
IndicatorObjectPrivate:
@module: The loaded module representing the object. Note to
subclasses: This will not be set when you're initalized.
@entry: A default entry for objects that don't need all the
fancy stuff. This works with #get_entries_default.
@gotten_entries: A check to see if the @entry has been
populated intelligently yet.
Structure to define the memory for the private area
of the object instance.
*/
struct _IndicatorObjectPrivate {
GModule * module;
/* For get_entries_default */
IndicatorObjectEntry entry;
gboolean gotten_entries;
/* Whether or not entries are visible by default */
gboolean default_visibility;
GHashTable * entry_privates;
GStrv environments;
};
/* Signals Stuff */
enum {
ENTRY_ADDED,
ENTRY_REMOVED,
ENTRY_MOVED,
ENTRY_SCROLLED,
MENU_SHOW,
SHOW_NOW_CHANGED,
ACCESSIBLE_DESC_UPDATE,
SECONDARY_ACTIVATE,
LAST_SIGNAL
};
/* Properties */
/* Enum for the properties so that they can be quickly
found and looked up. */
enum {
PROP_0,
PROP_GSETTINGS_SCHEMA_ID,
PROP_DEFAULT_VISIBILITY,
};
static guint signals[LAST_SIGNAL] = { 0 };
/* GObject stuff */
static void indicator_object_class_init (IndicatorObjectClass *klass);
static void indicator_object_init (IndicatorObject *self);
static void indicator_object_dispose (GObject *object);
static void indicator_object_finalize (GObject *object);
static void set_property (GObject*, guint prop_id, const GValue*, GParamSpec* );
static void get_property (GObject*, guint prop_id, GValue*, GParamSpec* );
/* entries' visibility */
static GList * get_entries_default (IndicatorObject*);
static GList * get_all_entries (IndicatorObject*);
static void indicator_object_entry_being_removed (IndicatorObject*, IndicatorObjectEntry*);
static void indicator_object_entry_was_added (IndicatorObject*, IndicatorObjectEntry*);
static gint indicator_object_real_get_position (IndicatorObject*);
static IndicatorObjectEntryPrivate * entry_get_private (IndicatorObject*, IndicatorObjectEntry*);
G_DEFINE_TYPE_WITH_PRIVATE (IndicatorObject, indicator_object, G_TYPE_OBJECT);
/* Setup the class and put the functions into the
class structure */
static void
indicator_object_class_init (IndicatorObjectClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->dispose = indicator_object_dispose;
object_class->finalize = indicator_object_finalize;
object_class->set_property = set_property;
object_class->get_property = get_property;
klass->get_label = NULL;
klass->get_menu = NULL;
klass->get_image = NULL;
klass->get_accessible_desc = NULL;
klass->get_entries = get_entries_default;
klass->get_location = NULL;
klass->entry_being_removed = NULL;
klass->entry_was_added = NULL;
klass->get_position = indicator_object_real_get_position;
klass->entry_activate = NULL;
klass->entry_activate_window = NULL;
klass->entry_close = NULL;
/**
IndicatorObject::entry-added:
@arg0: The #IndicatorObject object
@arg1: A pointer to the #IndicatorObjectEntry that
is being added.
Signaled when a new entry is added and should
be shown by the person using this object.
*/
signals[ENTRY_ADDED] = g_signal_new (INDICATOR_OBJECT_SIGNAL_ENTRY_ADDED,
G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (IndicatorObjectClass, entry_added),
NULL, NULL,
g_cclosure_marshal_VOID__POINTER,
G_TYPE_NONE, 1, G_TYPE_POINTER, G_TYPE_NONE);
/**
IndicatorObject::entry-removed:
@arg0: The #IndicatorObject object
@arg1: A pointer to the #IndicatorObjectEntry that
is being removed.
Signaled when an entry is removed and should
be removed by the person using this object.
*/
signals[ENTRY_REMOVED] = g_signal_new (INDICATOR_OBJECT_SIGNAL_ENTRY_REMOVED,
G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (IndicatorObjectClass, entry_removed),
NULL, NULL,
g_cclosure_marshal_VOID__POINTER,
G_TYPE_NONE, 1, G_TYPE_POINTER, G_TYPE_NONE);
/**
IndicatorObject::entry-moved:
@arg0: The #IndicatorObject object
@arg1: A pointer to the #IndicatorObjectEntry that
is being moved.
@arg2: The old location of the entry
@arg3: The new location of the entry
When the order of the entries change, then this signal
is sent to tell the new location.
*/
signals[ENTRY_MOVED] = g_signal_new (INDICATOR_OBJECT_SIGNAL_ENTRY_MOVED,
G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (IndicatorObjectClass, entry_moved),
NULL, NULL,
_indicator_object_marshal_VOID__POINTER_UINT_UINT,
G_TYPE_NONE, 3, G_TYPE_POINTER, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_NONE);
/**
IndicatorObject::entry-scrolled:
@arg0: The #IndicatorObject object
@arg1: A pointer to the #IndicatorObjectEntry that
receives the scroll event.
@arg2: The delta of the scroll event
@arg3: The orientation of the scroll event.
When the indicator receives a mouse scroll wheel event
from the user, this signal is emitted.
*/
signals[ENTRY_SCROLLED] = g_signal_new (INDICATOR_OBJECT_SIGNAL_ENTRY_SCROLLED,
G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (IndicatorObjectClass, entry_scrolled),
NULL, NULL,
_indicator_object_marshal_VOID__POINTER_UINT_ENUM,
G_TYPE_NONE, 3, G_TYPE_POINTER, G_TYPE_UINT,
INDICATOR_OBJECT_TYPE_SCROLL_DIRECTION);
/**
IndicatorObject::secondary-activate:
@arg0: The #IndicatorObject object
@arg1: A pointer to the #IndicatorObjectEntry that
receives the secondary activate event.
@arg2: The timestamp of the event
When the indicator receives a secondary activation event
from the user, this signal is emitted.
*/
signals[SECONDARY_ACTIVATE] = g_signal_new (INDICATOR_OBJECT_SIGNAL_SECONDARY_ACTIVATE,
G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (IndicatorObjectClass, secondary_activate),
NULL, NULL,
_indicator_object_marshal_VOID__POINTER_UINT,
G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_UINT);
/**
IndicatorObject::menu-show:
@arg0: The #IndicatorObject object
@arg1: A pointer to the #IndicatorObjectEntry that
is being shown.
@arg2: The timestamp of the event
Used when the indicator wants to signal up the stack
that the menu should be shown.
*/
signals[MENU_SHOW] = g_signal_new (INDICATOR_OBJECT_SIGNAL_MENU_SHOW,
G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (IndicatorObjectClass, menu_show),
NULL, NULL,
_indicator_object_marshal_VOID__POINTER_UINT,
G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_UINT);
/**
IndicatorObject::show-now-changed:
@arg0: The #IndicatorObject object
@arg1: A pointer to the #IndicatorObjectEntry that
is changing it's state
@arg2: The state of whether the entry should be shown
Whether the entry should be shown or not has changed so we need
to tell whoever is displaying it.
*/
signals[SHOW_NOW_CHANGED] = g_signal_new (INDICATOR_OBJECT_SIGNAL_SHOW_NOW_CHANGED,
G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (IndicatorObjectClass, show_now_changed),
NULL, NULL,
_indicator_object_marshal_VOID__POINTER_BOOLEAN,
G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_BOOLEAN);
/**
IndicatorObject::accessible-desc-update::
@arg0: The #IndicatorObject object
@arg1: A pointer to the #IndicatorObjectEntry whos
accessible description has been updated.
Signaled when an indicator's accessible description
has been updated, so that the displayer of the
indicator can fetch the new description.
*/
signals[ACCESSIBLE_DESC_UPDATE] = g_signal_new (INDICATOR_OBJECT_SIGNAL_ACCESSIBLE_DESC_UPDATE,
G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (IndicatorObjectClass, accessible_desc_update),
NULL, NULL,
g_cclosure_marshal_VOID__POINTER,
G_TYPE_NONE, 1, G_TYPE_POINTER, G_TYPE_NONE);
/* Properties */
GParamSpec * pspec = g_param_spec_boolean (INDICATOR_OBJECT_DEFAULT_VISIBILITY,
"default visibility",
"Whether or not entries should initially be visible.",
TRUE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
g_object_class_install_property (object_class, PROP_DEFAULT_VISIBILITY, pspec);
}
/* Initialize an instance */
static void
indicator_object_init (IndicatorObject *self)
{
IndicatorObjectPrivate * priv = indicator_object_get_instance_private(self);
priv->module = NULL;
priv->entry.parent_object = self;
priv->entry.menu = NULL;
priv->entry.label = NULL;
priv->entry.image = NULL;
priv->entry.accessible_desc = NULL;
priv->entry.name_hint = NULL;
priv->entry.parent_window = 0;
priv->gotten_entries = FALSE;
priv->default_visibility = TRUE;
priv->entry_privates = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_free);
priv->environments = NULL;
self->priv = priv;
GObject * o = G_OBJECT(self);
/* Invoke the entry-being-removed virtual function first */
g_signal_connect (o, INDICATOR_OBJECT_SIGNAL_ENTRY_REMOVED,
G_CALLBACK(indicator_object_entry_being_removed), NULL);
/* Invoke the entry-was-added virtual function last */
g_signal_connect_after (o, INDICATOR_OBJECT_SIGNAL_ENTRY_ADDED,
G_CALLBACK(indicator_object_entry_was_added), NULL);
}
/* Unref the objects that we're holding on to. */
static void
indicator_object_dispose (GObject *object)
{
/* Ensure that hidden entries are re-added so their widgetry will
be cleaned up properly by the client */
indicator_object_set_visible (INDICATOR_OBJECT (object), TRUE);
G_OBJECT_CLASS (indicator_object_parent_class)->dispose (object);
}
/* A small helper function that closes a module but
in the function prototype of a GSourceFunc. */
static gboolean
module_unref (gpointer data)
{
if (!g_module_close((GModule *)data)) {
/* All we can do is warn. */
g_warning("Unable to close module!");
}
return FALSE;
}
/* Free memory */
static void
indicator_object_finalize (GObject *object)
{
IndicatorObject * obj = INDICATOR_OBJECT (object);
IndicatorObjectPrivate * priv = indicator_object_get_instance_private(obj);
if (priv->entry_privates != NULL) {
g_hash_table_destroy (priv->entry_privates);
priv->entry_privates = NULL;
}
if (priv->environments != NULL) {
g_strfreev(priv->environments);
priv->environments = NULL;
}
if (priv->module != NULL) {
/* Wow, this is convoluted. So basically we want to unref
the module which will cause the code it included to be
removed. But, since its finalize function is the function
that called this one, we can't really remove it before
it finishes being executed. So we're putting the job into
the main loop to remove it the next time it gets a chance.
Slightly non-deterministic, but should work. */
g_idle_add(module_unref, priv->module);
priv->module = NULL;
}
G_OBJECT_CLASS (indicator_object_parent_class)->finalize (object);
return;
}
/**
indicator_object_new_from_file:
@file: Filename containing a loadable module
This function builds an #IndicatorObject using the symbols
that are found in @file. The module is loaded and the
references are all kept by the object. To unload the
module the object must be destroyed.
Return value: A valid #IndicatorObject or #NULL if error.
*/
IndicatorObject *
indicator_object_new_from_file (const gchar * file)
{
GObject * object = NULL;
GModule * module = NULL;
/* Check to make sure the name exists and that the
file itself exists */
if (file == NULL) {
g_warning("Invalid filename.");
return NULL;
}
if (!g_file_test(file, G_FILE_TEST_EXISTS)) {
g_warning("File '%s' does not exist.", file);
return NULL;
}
/* Grab the g_module reference, pull it in but let's
keep the symbols local to avoid conflicts. */
module = g_module_open(file,
G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
if (module == NULL) {
g_warning("Unable to load module: %s", file);
return NULL;
}
/* Look for the version function, error if not found. */
get_version_t lget_version = NULL;
if (!g_module_symbol(module, INDICATOR_GET_VERSION_S, (gpointer *)(&lget_version))) {
g_warning("Unable to get the symbol for getting the version.");
return NULL;
}
/* Check the version with the macro and make sure we're
all talking the same language. */
if (!INDICATOR_VERSION_CHECK(lget_version())) {
g_warning("Indicator using API version '%s' we're expecting '%s'", lget_version(), INDICATOR_VERSION);
return NULL;
}
/* The function for grabbing a label from the module
execute it, and make sure everything is a-okay */
get_type_t lget_type = NULL;
if (!g_module_symbol(module, INDICATOR_GET_TYPE_S, (gpointer *)(&lget_type))) {
g_warning("Unable to get '" INDICATOR_GET_TYPE_S "' symbol from module: %s", file);
goto unrefandout;
}
if (lget_type == NULL) {
g_warning("Symbol '" INDICATOR_GET_TYPE_S "' is (null) in module: %s", file);
goto unrefandout;
}
/* A this point we allocate the object, any code beyond
here needs to deallocate it if we're returning in an
error'd state. */
object = g_object_new(lget_type(), NULL);
if (object == NULL) {
g_warning("Unable to build an object if type '%d' in module: %s", (gint)lget_type(), file);
goto unrefandout;
}
if (!INDICATOR_IS_OBJECT(object)) {
g_warning("Type '%d' in file %s is not a subclass of IndicatorObject.", (gint)lget_type(), file);
goto unrefandout;
}
/* Now we can track the module */
IndicatorObject * obj = INDICATOR_OBJECT(object);
IndicatorObjectPrivate * priv = indicator_object_get_instance_private(obj);
priv->module = module;
return obj;
/* Error, let's drop the object and return NULL. Sad when
this happens. */
unrefandout:
g_clear_object (&object);
g_clear_object (&module);
g_warning("Error building IndicatorObject from file: %s", file);
return NULL;
}
/* The default get entries function uses the other single
entries in the class to create an entry structure and
put it into a list. This makes it simple for simple objects
to create the list. Small changes from the way they
previously were. */
static GList *
get_entries_default (IndicatorObject * io)
{
IndicatorObjectPrivate * priv = indicator_object_get_instance_private(io);
if (!priv->gotten_entries) {
IndicatorObjectClass * class = INDICATOR_OBJECT_GET_CLASS(io);
priv->entry.parent_object = io;
if (class->get_label) {
priv->entry.label = class->get_label(io);
}
if (class->get_image) {
priv->entry.image = class->get_image(io);
}
if (priv->entry.image == NULL && priv->entry.label == NULL) {
g_warning("IndicatorObject class does not create an image or a label. We need one of those.");
return NULL;
}
if (class->get_menu) {
priv->entry.menu = class->get_menu(io);
}
if (priv->entry.menu == NULL) {
g_warning("IndicatorObject class does not create a menu. We need one of those.");
return NULL;
}
if (class->get_accessible_desc) {
priv->entry.accessible_desc = class->get_accessible_desc(io);
}
if (priv->entry.accessible_desc == NULL) {
g_warning("IndicatorObject class does not have an accessible description.");
}
if (class->get_name_hint) {
priv->entry.name_hint = class->get_name_hint(io);
}
if (class->get_parent_window) {
priv->entry.parent_window = class->get_parent_window(io);
}
priv->gotten_entries = TRUE;
}
return g_list_append(NULL, &(priv->entry));
}
/* returns a list of all IndicatorObjectEntries, visible or not */
static GList*
get_all_entries (IndicatorObject * io)
{
GList * all_entries = NULL, *l;
g_return_val_if_fail(INDICATOR_IS_OBJECT(io), NULL);
IndicatorObjectClass * class = INDICATOR_OBJECT_GET_CLASS(io);
if (class->get_entries == NULL)
g_error("No get_entries function on object. It must have been deleted?!?!");
else
{
all_entries = class->get_entries(io);
for (l = all_entries; l; l = l->next)
{
IndicatorObjectEntry *entry = l->data;
if (entry)
entry->parent_object = io;
}
}
return all_entries;
}
/* get the private structure that corresponds to a caller-specified entry */
static IndicatorObjectEntryPrivate *
entry_get_private (IndicatorObject * io, IndicatorObjectEntry * entry)
{
g_return_val_if_fail (INDICATOR_IS_OBJECT(io), NULL);
g_return_val_if_fail (io->priv != NULL, NULL);
GHashTable * h = io->priv->entry_privates;
IndicatorObjectEntryPrivate * priv = g_hash_table_lookup (h, entry);
if (priv == NULL)
{
priv = g_new0 (IndicatorObjectEntryPrivate, 1);
priv->visibility = ENTRY_INIT;
g_hash_table_insert (h, entry, priv);
}
return priv;
}
/**
indicator_object_get_entries:
@io: #IndicatorObject to query
This function returns a list of visible entries. The list is built
by calling the object's #IndicatorObjectClass::get_entries
virtual function and testing each of the results for visibility.
Callers should free the GList with g_list_free(), but the entries
are owned by the IndicatorObject and should not be freed.
Return value: (element-type IndicatorObjectEntry) (transfer container):
A list if #IndicatorObjectEntry structures or NULL on error.
*/
GList *
indicator_object_get_entries (IndicatorObject * io)
{
GList * l;
GList * ret = NULL;
GList * all_entries = get_all_entries (io);
IndicatorObjectPrivate * priv = indicator_object_get_instance_private(io);
const gboolean default_visibility = priv->default_visibility;
for (l=all_entries; l!=NULL; l=l->next)
{
gboolean show_me;
IndicatorObjectEntry * entry = l->data;
switch (entry_get_private(io,entry)->visibility) {
case ENTRY_VISIBLE: show_me = TRUE; break;
case ENTRY_INVISIBLE: show_me = FALSE; break;
case ENTRY_INIT: show_me = default_visibility; break;
default: show_me = TRUE; g_warn_if_reached(); break;
}
if (show_me)
ret = g_list_prepend (ret, entry);
}
g_list_free (all_entries);
return g_list_reverse (ret);
}
/**
indicator_object_get_location:
@io: #IndicatorObject to query
@entry: The #IndicatorObjectEntry to look for.
This function looks on the class for the object and calls
it's #IndicatorObjectClass::get_location function. If the
function doesn't exist it returns zero.
Return value: Location of the @entry in the display or
zero if no location is specified.
*/
guint
indicator_object_get_location (IndicatorObject * io, IndicatorObjectEntry * entry)
{
g_return_val_if_fail(INDICATOR_IS_OBJECT(io), 0);
IndicatorObjectClass * class = INDICATOR_OBJECT_GET_CLASS(io);
if (class->get_location) {
return class->get_location(io, entry);
}
return 0;
}
/**
indicator_object_get_show_now:
@io: #IndicatorObject to query
@entry: The #IndicatorObjectEntry to look for.
This function returns whether the entry should be shown with
priority on the panel. If the object does not support checking
it assumes that its entries should never have priority.
Return value: Whether the entry should be shown with priority.
*/
guint
indicator_object_get_show_now (IndicatorObject * io, IndicatorObjectEntry * entry)
{
g_return_val_if_fail(INDICATOR_IS_OBJECT(io), 0);
IndicatorObjectClass * class = INDICATOR_OBJECT_GET_CLASS(io);
if (class->get_show_now) {
return class->get_show_now(io, entry);
}
return FALSE;
}
/**
indicator_object_entry_activate_window:
@io: #IndicatorObject to query
@entry: The #IndicatorObjectEntry whose entry was shown
@windowid: ID of the window that is currently focused (or will
be very shortly)
@timestamp: The X11 timestamp of the event
Used to signal to the indicator that the menu on an entry has
been clicked on. This can either be an activate or a showing
of the menu. Also includes a window ID so that we can know what
application is going to be getting focused soon. If there is
no override of this function, it is the same as calling
indicator_object_entry_activate and in general is preferable
if you have that information available.
*/
void
indicator_object_entry_activate_window (IndicatorObject * io, IndicatorObjectEntry * entry, guint windowid, guint timestamp)
{
g_return_if_fail(INDICATOR_IS_OBJECT(io));
IndicatorObjectClass * class = INDICATOR_OBJECT_GET_CLASS(io);
if (class->entry_activate_window != NULL) {
return class->entry_activate_window(io, entry, windowid, timestamp);
} else {
indicator_object_entry_activate(io, entry, timestamp);
}
return;
}
/**
indicator_object_entry_activate:
@io: #IndicatorObject to query
@entry: The #IndicatorObjectEntry whose entry was shown
@timestamp: The X11 timestamp of the event
Used to signal to the indicator that the menu on an entry has
been clicked on. This can either be an activate or a showing
of the menu. Note, this does not actually show the menu that's
left up to the reader.
*/
void
indicator_object_entry_activate (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp)
{
g_return_if_fail(INDICATOR_IS_OBJECT(io));
IndicatorObjectClass * class = INDICATOR_OBJECT_GET_CLASS(io);
if (class->entry_activate != NULL) {
return class->entry_activate(io, entry, timestamp);
}
return;
}
/**
indicator_object_entry_close:
@io: #IndicatorObject to query
@entry: The #IndicatorObjectEntry whose menu was closed
@timestamp: The X11 timestamp of the event
Used to tell the indicator that a menu has been closed for the
entry that is specified.
*/
void
indicator_object_entry_close (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp)
{
g_return_if_fail(INDICATOR_IS_OBJECT(io));
IndicatorObjectClass * class = INDICATOR_OBJECT_GET_CLASS(io);
if (class->entry_close != NULL) {
return class->entry_close(io, entry, timestamp);
}
return;
}
static void
indicator_object_entry_being_removed (IndicatorObject * io, IndicatorObjectEntry * entry)
{
g_return_if_fail(INDICATOR_IS_OBJECT(io));
IndicatorObjectClass * class = INDICATOR_OBJECT_GET_CLASS(io);
entry_get_private (io, entry)->visibility = ENTRY_INVISIBLE;
if (entry)
entry->parent_object = NULL;
if (class->entry_being_removed != NULL)
{
class->entry_being_removed (io, entry);
}
}
static void
indicator_object_entry_was_added (IndicatorObject * io, IndicatorObjectEntry * entry)
{
g_return_if_fail(INDICATOR_IS_OBJECT(io));
IndicatorObjectClass * class = INDICATOR_OBJECT_GET_CLASS(io);
entry_get_private (io, entry)->visibility = ENTRY_VISIBLE;
if (entry)
entry->parent_object = io;
if (class->entry_was_added != NULL)
{
class->entry_was_added (io, entry);
}
}
static gint
indicator_object_real_get_position (IndicatorObject *io)
{
g_return_val_if_fail (INDICATOR_IS_OBJECT (io), -1);
return -1;
}
/**
indicator_object_set_environment:
@io: #IndicatorObject to set on
@env: List of enviroment names to use
Sets the names of the environment that the indicator is being
loaded into. This allows for indicators to behave differently
in different hosts if need be.
*/
void
indicator_object_set_environment (IndicatorObject * io, GStrv env)
{
/* FIXME: should this be a property? */
g_return_if_fail(INDICATOR_IS_OBJECT(io));
if (io->priv->environments != NULL) {
g_strfreev(io->priv->environments);
io->priv->environments = NULL;
}
io->priv->environments = g_strdupv(env);
return;
}
/**
indicator_object_get_environment:
@io: #IndicatorObject to get the environment from
Gets the list of environment strings that this object is
placed into.
Return value: (transfer none): Gets the list of strings that
represent the environment or NULL if none were given.
*/
GStrv
indicator_object_get_environment (IndicatorObject * io)
{
g_return_val_if_fail(INDICATOR_IS_OBJECT(io), NULL);
return io->priv->environments;
}
/**
indicator_object_check_environment:
@io: #IndicatorObject to check on
@env: Environment that we're looking for
Convience function to check to see if the specified environment
@env is in our list of environments.
Return Value: Whether we're in environment @env
*/
gboolean
indicator_object_check_environment (IndicatorObject * io, const gchar * env)
{
g_return_val_if_fail(INDICATOR_IS_OBJECT(io), FALSE);
g_return_val_if_fail(env != NULL, FALSE);
if (io->priv->environments == NULL) {
return FALSE;
}
int i;
for (i = 0; io->priv->environments[i] != NULL; i++) {
if (g_strcmp0(env, io->priv->environments[i]) == 0) {
return TRUE;
}
}
return FALSE;
}
/**
indicator_object_set_visible:
@io: #IndicatorObject to check on
@visible: whether or not the entries should be visible
Used to set all of an indicator's entries to be visible or hidden.
*/
void
indicator_object_set_visible (IndicatorObject * io, gboolean visible)
{
g_return_if_fail(INDICATOR_IS_OBJECT(io));
GList * l;
GList * entries = get_all_entries (io);
const guint signal_id = signals[visible ? ENTRY_ADDED : ENTRY_REMOVED];
EntryVisibility visibility = visible ? ENTRY_VISIBLE : ENTRY_INVISIBLE;
const GQuark detail = (GQuark)0;
for (l=entries; l!=NULL; l=l->next) {
IndicatorObjectEntry *entry = l->data;
if (entry_get_private (io, entry)->visibility != visibility)
g_signal_emit(io, signal_id, detail, entry);
}
g_list_free (entries);
}
static void
get_property (GObject * object,
guint prop_id,
GValue * value,
GParamSpec * pspec)
{
IndicatorObject * self = INDICATOR_OBJECT(object);
g_return_if_fail(self != NULL);
IndicatorObjectPrivate * priv = indicator_object_get_instance_private(self);
g_return_if_fail(priv != NULL);
switch (prop_id) {
/* *********************** */
case PROP_DEFAULT_VISIBILITY:
if (G_VALUE_HOLDS_BOOLEAN(value)) {
g_value_set_boolean(value, priv->default_visibility);
} else {
g_warning("default-visibility property requires a boolean value.");
}
break;
/* *********************** */
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
static void
set_property (GObject * object,
guint prop_id,
const GValue * value,
GParamSpec * pspec)
{
IndicatorObject * self = INDICATOR_OBJECT(object);
g_return_if_fail (self != NULL);
IndicatorObjectPrivate * priv = indicator_object_get_instance_private(self);
g_return_if_fail (priv != NULL);
switch (prop_id) {
/* *********************** */
case PROP_DEFAULT_VISIBILITY:
if (G_VALUE_HOLDS_BOOLEAN(value)) {
priv->default_visibility = g_value_get_boolean (value);
} else {
g_warning("default-visibility property requires a boolean value.");
}
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
gboolean
indicator_object_entry_is_visible (IndicatorObject * io, IndicatorObjectEntry * entry)
{
g_return_val_if_fail (INDICATOR_IS_OBJECT (io), FALSE);
return entry_get_private (io, entry)->visibility == ENTRY_VISIBLE;
}
gint
indicator_object_get_position (IndicatorObject *io)
{
g_return_val_if_fail (INDICATOR_IS_OBJECT (io), FALSE);
return INDICATOR_OBJECT_GET_CLASS (io)->get_position (io);
}
libayatana-indicator-0.6.3/libayatana-indicator/indicator-object-enum-types.c.template 0000644 0000000 0000000 00000001372 13565237013 026056 0 ustar /*** BEGIN file-header ***/
#include "indicator-object-enum-types.h"
/*** END file-header ***/
/*** BEGIN file-production ***/
/* enumerations from "@basename@" */
#include "@basename@"
/*** END file-production ***/
/*** BEGIN value-header ***/
GType
@enum_name@_get_type (void) {
static GType enum_type_id = 0;
if (G_UNLIKELY (!enum_type_id))
{
static const G@Type@Value values[] = {
/*** END value-header ***/
/*** BEGIN value-production ***/
{ @VALUENAME@, "@VALUENAME@", "@valuenick@" },
/*** END value-production ***/
/*** BEGIN value-tail ***/
{ 0, NULL, NULL }
};
enum_type_id = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
}
return enum_type_id;
}
/*** END value-tail ***/
libayatana-indicator-0.6.3/libayatana-indicator/indicator-object-enum-types.h.template 0000644 0000000 0000000 00000001067 13565237013 026064 0 ustar /*** BEGIN file-header ***/
#ifndef __INDICATOR_OBJECT_ENUM_TYPES_H__
#define __INDICATOR_OBJECT_ENUM_TYPES_H__
#include
G_BEGIN_DECLS
/*** END file-header ***/
/*** BEGIN file-production ***/
/* enumerations from "@basename@" */
/*** END file-production ***/
/*** BEGIN file-tail ***/
G_END_DECLS
#endif /* !__INDICATOR_OBJECT_ENUM_TYPES_H__ */
/*** END file-tail ***/
/*** BEGIN value-header ***/
GType @enum_name@_get_type (void) G_GNUC_CONST;
#define INDICATOR_OBJECT_TYPE_@ENUMSHORT@ (@enum_name@_get_type())
/*** END value-header ***/
libayatana-indicator-0.6.3/libayatana-indicator/indicator-object.h 0000644 0000000 0000000 00000024240 13565237013 022144 0 ustar /*
An object to represent loadable indicator modules to make loading
them easy and objectified.
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#ifndef __INDICATOR_OBJECT_H__
#define __INDICATOR_OBJECT_H__
#include
G_BEGIN_DECLS
typedef enum
{
INDICATOR_OBJECT_SCROLL_UP,
INDICATOR_OBJECT_SCROLL_DOWN,
INDICATOR_OBJECT_SCROLL_LEFT,
INDICATOR_OBJECT_SCROLL_RIGHT
} IndicatorScrollDirection;
#define INDICATOR_OBJECT_TYPE (indicator_object_get_type ())
#define INDICATOR_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), INDICATOR_OBJECT_TYPE, IndicatorObject))
#define INDICATOR_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), INDICATOR_OBJECT_TYPE, IndicatorObjectClass))
#define INDICATOR_IS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), INDICATOR_OBJECT_TYPE))
#define INDICATOR_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), INDICATOR_OBJECT_TYPE))
#define INDICATOR_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), INDICATOR_OBJECT_TYPE, IndicatorObjectClass))
#define INDICATOR_OBJECT_SIGNAL_ENTRY_ADDED "entry-added"
#define INDICATOR_OBJECT_SIGNAL_ENTRY_ADDED_ID (g_signal_lookup(INDICATOR_OBJECT_SIGNAL_ENTRY_ADDED, INDICATOR_OBJECT_TYPE))
#define INDICATOR_OBJECT_SIGNAL_ENTRY_REMOVED "entry-removed"
#define INDICATOR_OBJECT_SIGNAL_ENTRY_REMOVED_ID (g_signal_lookup(INDICATOR_OBJECT_SIGNAL_ENTRY_REMOVED, INDICATOR_OBJECT_TYPE))
#define INDICATOR_OBJECT_SIGNAL_ENTRY_MOVED "entry-moved"
#define INDICATOR_OBJECT_SIGNAL_ENTRY_MOVED_ID (g_signal_lookup(INDICATOR_OBJECT_SIGNAL_ENTRY_MOVED, INDICATOR_OBJECT_TYPE))
#define INDICATOR_OBJECT_SIGNAL_ENTRY_SCROLLED "entry-scrolled"
#define INDICATOR_OBJECT_SIGNAL_ENTRY_SCROLLED_ID (g_signal_lookup(INDICATOR_OBJECT_SIGNAL_ENTRY_SCROLLED, INDICATOR_OBJECT_TYPE))
#define INDICATOR_OBJECT_SIGNAL_MENU_SHOW "menu-show"
#define INDICATOR_OBJECT_SIGNAL_MENU_SHOW_ID (g_signal_lookup(INDICATOR_OBJECT_SIGNAL_MENU_SHOW, INDICATOR_OBJECT_TYPE))
#define INDICATOR_OBJECT_SIGNAL_SHOW_NOW_CHANGED "show-now-changed"
#define INDICATOR_OBJECT_SIGNAL_SHOW_NOW_CHANGED_ID (g_signal_lookup(INDICATOR_OBJECT_SIGNAL_SHOW_NOW_CHANGED, INDICATOR_OBJECT_TYPE))
#define INDICATOR_OBJECT_SIGNAL_ACCESSIBLE_DESC_UPDATE "accessible-desc-update"
#define INDICATOR_OBJECT_SIGNAL_ACCESSIBLE_DESC_UPDATE_ID (g_signal_lookup(INDICATOR_OBJECT_SIGNAL_ACCESSIBLE_DESC_UPDATE, INDICATOR_OBJECT_TYPE))
#define INDICATOR_OBJECT_SIGNAL_SECONDARY_ACTIVATE "secondary-activate"
#define INDICATOR_OBJECT_SIGNAL_SECONDARY_ACTIVATE_ID (g_signal_lookup(INDICATOR_OBJECT_SIGNAL_SECONDARY_ACTIVATE, INDICATOR_OBJECT_TYPE))
/* the name of the property to decide whether or not entries are visible by default */
#define INDICATOR_OBJECT_DEFAULT_VISIBILITY "indicator-object-default-visibility"
typedef struct _IndicatorObject IndicatorObject;
typedef struct _IndicatorObjectClass IndicatorObjectClass;
typedef struct _IndicatorObjectPrivate IndicatorObjectPrivate;
typedef struct _IndicatorObjectEntry IndicatorObjectEntry;
/**
IndicatorObjectClass:
@parent_class: #GObjectClass
@get_label: Gets the label for this object. Should be set
to #NULL if @get_entries is set. Should NOT ref the
object.
@get_image: Gets the image for this object. Should be set
to #NULL if @get_entries is set. Should NOT ref the
object.
@get_menu: Gets the image for this object. Should be set
to #NULL if @get_entries is set. Should NOT ref the
object.
@get_accessible_desc: Gets the accessible descriptionfor this
object.
@get_name_hint: Gets the hint of the type of indicator that this
is for the caller.
@get_entries: Gets all of the entires for this object returning
a #GList of #IndicatorObjectEntries. The list should be
under the ownership of the caller but the entires will
not be.
@get_location: Returns the location that a particular entry
should be placed in. This is really only relevant for
indicators that have more than one entry.
@get_show_now: Returns whether the entry is requesting to
be shown "right now" in that it has something important
to tell the user.
@entry_being_removed: Called before an entry is removed.
The default implementation is to ref and unparent the
entry's widgets so that they can be re-added later.
@entry_was_added: Called after an entry is added.
The default implementation is to unref the entry's widgets if
previously reffed by entry_being_removed's default impementation
@entry_activate: Should be called when the menus for a given
entry are shown to the user.
@entry_close: Called when the menu is closed.
@entry_added: Slot for #IndicatorObject::entry-added
@entry_removed: Slot for #IndicatorObject::entry-removed
@entry_moved: Slot for #IndicatorObject::entry-moved
@menu_show: Slot for #IndicatorObject::menu-show
@entry_scrolled: Slot for #IndicatorObject::entry-scrolled
@show_now_changed: Slot for #IndicatorObject::show-now-changed
@accessible_desc_update: Slot for #IndicatorObject::accessible-desc-update
@secondary_activate: Slot for #IndicatorObject::secondary-activate
@get_position: returns the desired position on the panel (0 is right-most), or -1
*/
struct _IndicatorObjectClass {
GObjectClass parent_class;
/* Virtual Functions */
GtkLabel * (*get_label) (IndicatorObject * io);
GtkImage * (*get_image) (IndicatorObject * io);
GtkMenu * (*get_menu) (IndicatorObject * io);
const gchar * (*get_accessible_desc) (IndicatorObject * io);
const gchar * (*get_name_hint) (IndicatorObject * io);
GList * (*get_entries) (IndicatorObject * io);
guint (*get_location) (IndicatorObject * io, IndicatorObjectEntry * entry);
gboolean (*get_show_now) (IndicatorObject * io, IndicatorObjectEntry * entry);
void (*entry_being_removed) (IndicatorObject * io, IndicatorObjectEntry * entry);
void (*entry_was_added) (IndicatorObject * io, IndicatorObjectEntry * entry);
void (*entry_activate) (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp);
void (*entry_activate_window) (IndicatorObject * io, IndicatorObjectEntry * entry, guint windowid, guint timestamp);
void (*entry_close) (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp);
/* Signals */
void (*entry_added) (IndicatorObject * io, IndicatorObjectEntry * entry, gpointer user_data);
void (*entry_removed) (IndicatorObject * io, IndicatorObjectEntry * entry, gpointer user_data);
void (*entry_moved) (IndicatorObject * io, IndicatorObjectEntry * entry, guint old_pos, guint new_pos, gpointer user_data);
void (*entry_scrolled) (IndicatorObject * io, IndicatorObjectEntry * entry, gint delta, IndicatorScrollDirection direction);
void (*menu_show) (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp, gpointer user_data);
void (*show_now_changed) (IndicatorObject * io, IndicatorObjectEntry * entry, gboolean show_now_state, gpointer user_data);
void (*accessible_desc_update) (IndicatorObject * io, IndicatorObjectEntry * entry, gpointer user_data);
void (*secondary_activate) (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp, gpointer user_data);
gint (*get_position) (IndicatorObject *io);
guint (*get_parent_window) (IndicatorObject *io);
/* Reserved */
void (*reserved1) (void);
void (*reserved2) (void);
void (*reserved3) (void);
};
/**
IndicatorObject:
@parent: #GObject
@priv: A cached reference to the private data for the
instance.
*/
struct _IndicatorObject {
GObject parent;
IndicatorObjectPrivate * priv;
};
/**
IndicatorObjectEntry:
@parent_object: The #IndicatorObject that created this entry
@label: The label to be shown on the panel
@image: The image to be shown on the panel
@menu: The menu to be added to the menubar
@accessible_desc: The accessible description
of the indicator
@name_hint: A name to describe the indicator being placed to allow
the caller to be more aware of the individual entries.
@parent_window: the id of the parent window of the indicator entry (if any).
@reserved1: Reserved for future use
@reserved2: Reserved for future use
@reserved3: Reserved for future use
*/
struct _IndicatorObjectEntry {
IndicatorObject * parent_object;
GtkLabel * label;
GtkImage * image;
GtkMenu * menu;
const gchar * accessible_desc;
const gchar * name_hint;
guint parent_window;
void (*reserved1) (void);
void (*reserved2) (void);
void (*reserved3) (void);
};
GType indicator_object_get_type (void);
IndicatorObject * indicator_object_new_from_file (const gchar * file);
GList * indicator_object_get_entries (IndicatorObject * io);
guint indicator_object_get_location (IndicatorObject * io, IndicatorObjectEntry * entry);
guint indicator_object_get_show_now (IndicatorObject * io, IndicatorObjectEntry * entry);
void indicator_object_set_visible (IndicatorObject * io, gboolean visible);
gboolean indicator_object_entry_is_visible (IndicatorObject * io, IndicatorObjectEntry * entry);
void indicator_object_entry_activate (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp);
void indicator_object_entry_activate_window (IndicatorObject * io, IndicatorObjectEntry * entry, guint windowid, guint timestamp);
void indicator_object_entry_close (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp);
gint indicator_object_get_position (IndicatorObject *io);
void indicator_object_set_environment (IndicatorObject * io, GStrv env);
GStrv indicator_object_get_environment (IndicatorObject * io);
gboolean indicator_object_check_environment (IndicatorObject * io, const gchar * env);
G_END_DECLS
#endif
libayatana-indicator-0.6.3/libayatana-indicator/indicator-object-marshal.list 0000644 0000000 0000000 00000000137 13565237013 024314 0 ustar VOID: POINTER, UINT, UINT
VOID: POINTER, UINT, ENUM
VOID: POINTER, UINT
VOID: POINTER, BOOLEAN
libayatana-indicator-0.6.3/libayatana-indicator/indicator-service.c 0000644 0000000 0000000 00000051527 13565237013 022341 0 ustar /*
An object used to provide a simple interface for a service
to query version and manage whether it's running.
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include /* exit() */
#include
#include "indicator-service.h"
#include "gen-indicator-service.xml.h"
#include "dbus-shared.h"
static void unwatch_core (IndicatorService * service, const gchar * name);
static void watchers_remove (gpointer value);
static void bus_get_cb (GObject * object, GAsyncResult * res, gpointer user_data);
static GVariant * bus_watch (IndicatorService * service, const gchar * sender);
/* Private Stuff */
/**
IndicatorSevicePrivate:
@name: The DBus well known name for the service.
@timeout: The source ID for the timeout event.
@watcher: A list of processes on dbus that are watching us.
@this_service_version: The version to hand out that we're
implementing. May not be set, so we'll send zero (default).
@dbus_registration: The handle for this object being registered
on dbus.
*/
typedef struct _IndicatorServicePrivate IndicatorServicePrivate;
struct _IndicatorServicePrivate {
gchar * name;
GDBusConnection * bus;
GCancellable * bus_cancel;
guint timeout;
guint timeout_length;
GHashTable * watchers;
guint this_service_version;
guint dbus_registration;
gboolean replace_mode;
};
/* Signals Stuff */
enum {
SHUTDOWN,
LAST_SIGNAL
};
static guint signals[LAST_SIGNAL] = { 0 };
/* Properties */
/* Enum for the properties so that they can be quickly
found and looked up. */
enum {
PROP_0,
PROP_NAME,
PROP_VERSION
};
/* The strings so that they can be slowly looked up. */
#define PROP_NAME_S "name"
#define PROP_VERSION_S "version"
/* GObject Stuff */
#define INDICATOR_SERVICE_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), INDICATOR_SERVICE_TYPE, IndicatorServicePrivate))
static void indicator_service_class_init (IndicatorServiceClass *klass);
static void indicator_service_init (IndicatorService *self);
static void indicator_service_dispose (GObject *object);
static void indicator_service_finalize (GObject *object);
/* Other prototypes */
static void set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec);
static void get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec);
static void try_and_get_name (IndicatorService * service);
static void bus_method_call (GDBusConnection * connection, const gchar * sender, const gchar * path, const gchar * interface, const gchar * method, GVariant * params, GDBusMethodInvocation * invocation, gpointer user_data);
/* GDBus Stuff */
static GDBusNodeInfo * node_info = NULL;
static GDBusInterfaceInfo * interface_info = NULL;
static GDBusInterfaceVTable interface_table = {
method_call: bus_method_call,
get_property: NULL, /* No properties */
set_property: NULL /* No properties */
};
/* THE define */
G_DEFINE_TYPE_WITH_PRIVATE (IndicatorService, indicator_service, G_TYPE_OBJECT);
static void
indicator_service_class_init (IndicatorServiceClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->dispose = indicator_service_dispose;
object_class->finalize = indicator_service_finalize;
/* Property funcs */
object_class->set_property = set_property;
object_class->get_property = get_property;
/* Properties */
g_object_class_install_property(object_class, PROP_NAME,
g_param_spec_string(PROP_NAME_S,
"The DBus name for this service",
"This is the name that should be used on DBus for this service.",
NULL,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property(object_class, PROP_VERSION,
g_param_spec_uint(PROP_VERSION_S,
"The version of the service that we're implementing.",
"A number to represent the version of the other APIs the service provides. This should match across the manager and the service",
0, G_MAXUINT, 0,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
/* Signals */
/**
IndicatorService::shutdown:
@arg0: The #IndicatorService object
Signaled when the service should shutdown as no one
is listening anymore.
*/
signals[SHUTDOWN] = g_signal_new (INDICATOR_SERVICE_SIGNAL_SHUTDOWN,
G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (IndicatorServiceClass, shutdown),
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0, G_TYPE_NONE);
/* Setting up the DBus interfaces */
if (node_info == NULL) {
GError * error = NULL;
node_info = g_dbus_node_info_new_for_xml(_indicator_service, &error);
if (error != NULL) {
g_error("Unable to parse Indicator Service Interface description: %s", error->message);
g_error_free(error);
}
}
if (interface_info == NULL) {
interface_info = g_dbus_node_info_lookup_interface(node_info, INDICATOR_SERVICE_INTERFACE);
if (interface_info == NULL) {
g_error("Unable to find interface '" INDICATOR_SERVICE_INTERFACE "'");
}
}
return;
}
/* This function builds the variables, sets up the dbus
proxy and registers the object on dbus. Importantly,
it does not request a name as we don't know what name
we have yet. */
static void
indicator_service_init (IndicatorService *self)
{
IndicatorServicePrivate * priv = indicator_service_get_instance_private(self);
/* Get the private variables in a decent state */
priv->name = NULL;
priv->timeout = 0;
priv->watchers = NULL;
priv->bus = NULL;
priv->bus_cancel = NULL;
priv->this_service_version = 0;
priv->timeout_length = 500;
priv->dbus_registration = 0;
priv->replace_mode = FALSE;
const gchar * timeoutenv = g_getenv("INDICATOR_SERVICE_SHUTDOWN_TIMEOUT");
if (timeoutenv != NULL) {
gdouble newtimeout = g_strtod(timeoutenv, NULL);
if (newtimeout >= 1.0f) {
priv->timeout_length = newtimeout;
g_debug("Setting shutdown timeout to: %u", priv->timeout_length);
}
}
const gchar * replaceenv = g_getenv("INDICATOR_SERVICE_REPLACE_MODE");
if (replaceenv != NULL) {
priv->replace_mode = TRUE;
g_debug("Putting into replace mode");
}
/* NOTE: We're using g_free here because that's what needs to
happen and we're watchers_remove as well to clean up the dbus
watches we've setup. */
priv->watchers = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, watchers_remove);
priv->bus_cancel = g_cancellable_new();
g_bus_get(G_BUS_TYPE_SESSION,
priv->bus_cancel,
bus_get_cb,
self);
return;
}
/* Unrefcounting the proxies and making sure that our
timeout doesn't come to haunt us. */
static void
indicator_service_dispose (GObject *object)
{
IndicatorService * service = INDICATOR_SERVICE(object);
IndicatorServicePrivate * priv = indicator_service_get_instance_private(service);
g_clear_pointer (&priv->watchers, g_hash_table_destroy);
if (priv->timeout != 0) {
g_source_remove(priv->timeout);
priv->timeout = 0;
}
if (priv->dbus_registration != 0) {
g_dbus_connection_unregister_object(priv->bus, priv->dbus_registration);
/* Don't care if it fails, there's nothing we can do */
priv->dbus_registration = 0;
}
g_clear_object (&priv->bus);
if (priv->bus_cancel != NULL) {
g_cancellable_cancel(priv->bus_cancel);
g_object_unref(priv->bus_cancel);
priv->bus_cancel = NULL;
}
G_OBJECT_CLASS (indicator_service_parent_class)->dispose (object);
return;
}
/* Freeing the name we're looking for and all of the
information on the watchers we're tracking. */
static void
indicator_service_finalize (GObject *object)
{
IndicatorService * service = INDICATOR_SERVICE(object);
IndicatorServicePrivate * priv = indicator_service_get_instance_private(service);
g_free (priv->name);
g_clear_pointer (&priv->watchers, g_hash_table_destroy);
G_OBJECT_CLASS (indicator_service_parent_class)->finalize (object);
return;
}
/* Either copies a string for the name or it just grabs
the value of the version. */
static void
set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)
{
IndicatorService * self = INDICATOR_SERVICE(object);
g_return_if_fail(self != NULL);
IndicatorServicePrivate * priv = indicator_service_get_instance_private(self);
g_return_if_fail(priv != NULL);
switch (prop_id) {
/* *********************** */
case PROP_NAME:
if (G_VALUE_HOLDS_STRING(value)) {
if (priv->name != NULL) {
g_error("Name can not be set twice!");
return;
}
priv->name = g_value_dup_string(value);
try_and_get_name(self);
} else {
g_warning("Name property requires a string value.");
}
break;
/* *********************** */
case PROP_VERSION:
priv->this_service_version = g_value_get_uint(value);
break;
/* *********************** */
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
return;
}
/* Copies out the name into a value or the version number.
Probably this is the least useful code in this file. */
static void
get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec)
{
IndicatorService * self = INDICATOR_SERVICE(object);
g_return_if_fail(self != NULL);
IndicatorServicePrivate * priv = indicator_service_get_instance_private(self);
g_return_if_fail(priv != NULL);
switch (prop_id) {
/* *********************** */
case PROP_NAME:
if (G_VALUE_HOLDS_STRING(value)) {
g_value_set_string(value, priv->name);
} else {
g_warning("Name property requires a string value.");
}
break;
/* *********************** */
case PROP_VERSION:
g_value_set_uint(value, priv->this_service_version);
break;
/* *********************** */
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
return;
}
/* Callback for getting our connection to DBus */
static void
bus_get_cb (GObject * object, GAsyncResult * res, gpointer user_data)
{
GError * error = NULL;
GDBusConnection * connection = g_bus_get_finish(res, &error);
if (error != NULL) {
g_warning("Unable to get a connection to the session DBus: %s", error->message);
g_error_free(error);
exit (0);
return;
}
IndicatorServicePrivate * priv = indicator_service_get_instance_private(user_data);
g_warn_if_fail(priv->bus == NULL);
priv->bus = connection;
if (priv->bus_cancel != NULL) {
g_object_unref(priv->bus_cancel);
priv->bus_cancel = NULL;
}
/* Now register our object on our new connection */
priv->dbus_registration = g_dbus_connection_register_object(priv->bus,
INDICATOR_SERVICE_OBJECT,
interface_info,
&interface_table,
user_data,
NULL,
&error);
if (error != NULL) {
g_error("Unable to register the object to DBus: %s", error->message);
g_error_free(error);
return;
}
return;
}
/* A method has been called from our dbus inteface. Figure out what it
is and dispatch it. */
static void
bus_method_call (GDBusConnection * connection, const gchar * sender, const gchar * path, const gchar * interface, const gchar * method, GVariant * params, GDBusMethodInvocation * invocation, gpointer user_data)
{
IndicatorService * service = INDICATOR_SERVICE(user_data);
GVariant * retval = NULL;
if (g_strcmp0(method, "Watch") == 0) {
retval = bus_watch(service, sender);
} else if (g_strcmp0(method, "UnWatch") == 0) {
unwatch_core(service, sender);
} else if (g_strcmp0(method, "Shutdown") == 0) {
g_signal_emit(G_OBJECT(service), signals[SHUTDOWN], 0, TRUE);
} else {
g_warning("Calling method '%s' on the indicator service and it's unknown", method);
}
g_dbus_method_invocation_return_value(invocation, retval);
return;
}
/* A function to remove the signals on a proxy before we destroy
it because in this case we've stopped caring. */
static void
watchers_remove (gpointer value)
{
g_bus_unwatch_name(GPOINTER_TO_UINT(value));
return;
}
/* This is the function that gets executed if we timeout
because there are no watchers. We sent the shutdown
signal and hope someone does something sane with it. */
static gboolean
timeout_no_watchers (gpointer data)
{
g_warning("No watchers, service timing out.");
if (g_getenv("INDICATOR_ALLOW_NO_WATCHERS") == NULL) {
g_signal_emit(G_OBJECT(data), signals[SHUTDOWN], 0, TRUE);
} else {
g_warning("\tblocked by environment variable.");
}
return FALSE;
}
/* Callback saying that the name we were looking for has been
found and we've got it. Now start the timer to see if anyone
cares about us. */
static void
try_and_get_name_acquired_cb (GDBusConnection * connection, const gchar * name, gpointer user_data)
{
g_return_if_fail(connection != NULL);
g_return_if_fail(INDICATOR_IS_SERVICE(user_data));
IndicatorServicePrivate * priv = indicator_service_get_instance_private(user_data);
/* Check to see if we already had a timer, if so we want to
extend it a bit. */
if (priv->timeout != 0) {
g_source_remove(priv->timeout);
priv->timeout = 0;
}
/* Allow some extra time at start up as things can be in high
contention then. */
priv->timeout = g_timeout_add(priv->timeout_length * 2, timeout_no_watchers, user_data);
return;
}
/* Callback saying that we didn't get the name, so we need to
shutdown this service. */
static void
try_and_get_name_lost_cb (GDBusConnection * connection, const gchar * name, gpointer user_data)
{
g_return_if_fail(connection != NULL);
g_return_if_fail(INDICATOR_IS_SERVICE(user_data));
IndicatorServicePrivate * priv = indicator_service_get_instance_private(user_data);
if (!priv->replace_mode) {
g_warning("Name request failed.");
g_signal_emit(G_OBJECT(user_data), signals[SHUTDOWN], 0, TRUE);
} else {
/* If we're in replace mode we can be a little more trickey
here. We're going to tell the other guy to shutdown and hope
that we get the name. */
GDBusMessage * message = NULL;
message = g_dbus_message_new_method_call(name,
INDICATOR_SERVICE_OBJECT,
INDICATOR_SERVICE_INTERFACE,
"Shutdown");
g_dbus_connection_send_message(connection, message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
g_object_unref(message);
/* Check to see if we need to clean up a timeout */
if (priv->timeout != 0) {
g_source_remove(priv->timeout);
priv->timeout = 0;
}
/* Set a timeout for no watchers if we can't get the name */
priv->timeout = g_timeout_add(priv->timeout_length * 4, timeout_no_watchers, user_data);
}
return;
}
/* This function sets up the request for the name on dbus. */
static void
try_and_get_name (IndicatorService * service)
{
IndicatorServicePrivate * priv = indicator_service_get_instance_private(service);
g_return_if_fail(priv->name != NULL);
g_bus_own_name(G_BUS_TYPE_SESSION,
priv->name,
G_BUS_NAME_OWNER_FLAGS_NONE,
NULL, /* bus acquired */
try_and_get_name_acquired_cb, /* name acquired */
try_and_get_name_lost_cb, /* name lost */
service,
NULL); /* user data destroy */
return;
}
/* When the watcher vanishes we don't really care about it
anymore. */
static void
watcher_vanished_cb (GDBusConnection * connection, const gchar * name, gpointer user_data)
{
g_return_if_fail(INDICATOR_IS_SERVICE(user_data));
IndicatorServicePrivate * priv = indicator_service_get_instance_private(user_data);
gpointer finddata = g_hash_table_lookup(priv->watchers, name);
if (finddata != NULL) {
unwatch_core(INDICATOR_SERVICE(user_data), name);
} else {
g_warning("Odd, we were watching for '%s' and it disappeard, but then it wasn't in the hashtable.", name);
}
return;
}
/* Here is the function that gets called by the dbus
interface "Watch" function. It is an async function so
that we can get the sender and store that information. We
put them in a list and reset the timeout. */
static GVariant *
bus_watch (IndicatorService * service, const gchar * sender)
{
g_return_val_if_fail(INDICATOR_IS_SERVICE(service), NULL);
IndicatorServicePrivate * priv = indicator_service_get_instance_private(service);
if (GPOINTER_TO_UINT(g_hash_table_lookup(priv->watchers, sender)) == 0) {
guint watch = g_bus_watch_name_on_connection(priv->bus,
sender,
G_BUS_NAME_WATCHER_FLAGS_NONE,
NULL, /* appeared, we dont' care, should have already happened. */
watcher_vanished_cb,
service,
NULL);
if (watch != 0) {
g_hash_table_insert(priv->watchers, g_strdup(sender), GUINT_TO_POINTER(watch));
} else {
g_warning("Unable watch for '%s'", sender);
}
}
if (priv->timeout != 0) {
g_source_remove(priv->timeout);
priv->timeout = 0;
}
return g_variant_new("(uu)", INDICATOR_SERVICE_VERSION, priv->this_service_version);
}
/* Performs the core of loosing a watcher; it removes them
from the list of watchers. If there are none left, it then
starts the timer for the shutdown signal. */
static void
unwatch_core (IndicatorService * service, const gchar * name)
{
g_return_if_fail(name != NULL);
g_return_if_fail(INDICATOR_IS_SERVICE(service));
IndicatorServicePrivate * priv = indicator_service_get_instance_private(service);
/* Remove us from the watcher list here */
gpointer watcher_item = g_hash_table_lookup(priv->watchers, name);
if (watcher_item != NULL) {
gchar * safe_name = g_strdup(name);
g_hash_table_remove(priv->watchers, safe_name);
g_free(safe_name);
} else {
/* Odd that we couldn't find the person, but, eh */
g_warning("Unable to find watcher who is unwatching: %s", name);
}
/* If we're out of watchers set the timeout for shutdown */
if (g_hash_table_size(priv->watchers) == 0) {
if (priv->timeout != 0) {
/* This should never really happen, but let's ensure that
bad things don't happen if it does. */
g_warning("No watchers timeout set twice. Resolving, but odd.");
g_source_remove(priv->timeout);
priv->timeout = 0;
}
/* If we don't get a new watcher quickly, we'll shutdown. */
priv->timeout = g_timeout_add(priv->timeout_length, timeout_no_watchers, service);
}
return;
}
/* API */
/**
indicator_service_new:
@name: The name for the service on dbus
This function creates the service on DBus and tries to
get a well-known name specified in @name. If the name
can't be estabilished then the #IndicatorService::shutdown
signal will be sent.
Return value: A brand new #IndicatorService object or #NULL
if there is an error.
*/
IndicatorService *
indicator_service_new (gchar * name)
{
GObject * obj = g_object_new(INDICATOR_SERVICE_TYPE,
PROP_NAME_S, name,
NULL);
return INDICATOR_SERVICE(obj);
}
/**
indicator_service_new_version:
@name: The name for the service on dbus
@version: The version of the other interfaces provide
by the service.
This function creates the service on DBus and tries to
get a well-known name specified in @name. If the name
can't be estabilished then the #IndicatorService::shutdown
signal will be sent.
Return value: A brand new #IndicatorService object or #NULL
if there is an error.
*/
IndicatorService *
indicator_service_new_version (gchar * name, guint version)
{
GObject * obj = g_object_new(INDICATOR_SERVICE_TYPE,
PROP_NAME_S, name,
PROP_VERSION_S, version,
NULL);
return INDICATOR_SERVICE(obj);
}
libayatana-indicator-0.6.3/libayatana-indicator/indicator-service.h 0000644 0000000 0000000 00000005300 13565237013 022332 0 ustar /*
An object used to provide a simple interface for a service
to query version and manage whether it's running.
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#ifndef __INDICATOR_SERVICE_H__
#define __INDICATOR_SERVICE_H__
#include
#include
G_BEGIN_DECLS
#define INDICATOR_SERVICE_TYPE (indicator_service_get_type ())
#define INDICATOR_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), INDICATOR_SERVICE_TYPE, IndicatorService))
#define INDICATOR_SERVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), INDICATOR_SERVICE_TYPE, IndicatorServiceClass))
#define INDICATOR_IS_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), INDICATOR_SERVICE_TYPE))
#define INDICATOR_IS_SERVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), INDICATOR_SERVICE_TYPE))
#define INDICATOR_SERVICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), INDICATOR_SERVICE_TYPE, IndicatorServiceClass))
#define INDICATOR_SERVICE_SIGNAL_SHUTDOWN "shutdown"
typedef struct _IndicatorService IndicatorService;
typedef struct _IndicatorServiceClass IndicatorServiceClass;
/**
IndicatorServiceClass:
@parent_class: #GObjectClass
@shutdown: Slot for IndicatorServiceClass::shutdown
@indicator_service_reserved1: Reserved for future use
@indicator_service_reserved2: Reserved for future use
@indicator_service_reserved3: Reserved for future use
@indicator_service_reserved4: Reserved for future use
*/
struct _IndicatorServiceClass {
GObjectClass parent_class;
/* Signals */
void (*shutdown) (IndicatorService * service, gpointer user_data);
/* Reserved */
void (*indicator_service_reserved1) (void);
void (*indicator_service_reserved2) (void);
void (*indicator_service_reserved3) (void);
void (*indicator_service_reserved4) (void);
};
/**
IndicatorService:
@parent: #GObject
*/
struct _IndicatorService {
GObject parent;
};
GType indicator_service_get_type (void);
IndicatorService * indicator_service_new (gchar * name);
IndicatorService * indicator_service_new_version (gchar * name,
guint version);
G_END_DECLS
#endif
libayatana-indicator-0.6.3/libayatana-indicator/indicator-service-manager.c 0000644 0000000 0000000 00000055433 13565237013 023751 0 ustar /*
An object used to manage services. Either start them or
just connect to them.
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include
#include
#include "indicator-service-manager.h"
#include "gen-indicator-service.xml.h"
#include "dbus-shared.h"
/* Private Stuff */
/**
IndicatorServiceManagerPrivate:
@name: The well known dbus name the service should be on.
@service_proxy: The proxy to the service itself.
@connected: Whether we're connected to the service or not.
@this_service_version: The version of the service that we're looking for.
@restart_count: The number of times we've restarted this service.
*/
typedef struct _IndicatorServiceManagerPrivate IndicatorServiceManagerPrivate;
struct _IndicatorServiceManagerPrivate {
gchar * name;
GDBusProxy * service_proxy;
GCancellable * service_proxy_cancel;
guint name_watcher;
gboolean connected;
guint this_service_version;
guint restart_count;
gint restart_source;
GCancellable * watch_cancel;
};
/* Signals Stuff */
enum {
CONNECTION_CHANGE,
LAST_SIGNAL
};
static guint signals[LAST_SIGNAL] = { 0 };
/* If this env variable is set, we don't restart */
#define TIMEOUT_ENV_NAME "INDICATOR_SERVICE_RESTART_DISABLE"
#define TIMEOUT_MULTIPLIER 100 /* In ms */
/* What to reset the restart_count to if we know that we're
in a recoverable error condition, but waiting a little bit
will probably make things better. 5 ~= 3 sec. */
#define TIMEOUT_A_LITTLE_WHILE 5
/* Properties */
/* Enum for the properties so that they can be quickly
found and looked up. */
enum {
PROP_0,
PROP_NAME,
PROP_VERSION
};
/* The strings so that they can be slowly looked up. */
#define PROP_NAME_S "name"
#define PROP_VERSION_S "version"
/* GDBus Stuff */
static GDBusNodeInfo * node_info = NULL;
static GDBusInterfaceInfo * interface_info = NULL;
static void indicator_service_manager_class_init (IndicatorServiceManagerClass *klass);
static void indicator_service_manager_init (IndicatorServiceManager *self);
static void indicator_service_manager_dispose (GObject *object);
static void indicator_service_manager_finalize (GObject *object);
/* Prototypes */
static void set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec);
static void get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec);
static void start_service (IndicatorServiceManager * service);
static void start_service_again (IndicatorServiceManager * manager);
static void unwatch (GDBusProxy * proxy);
static void service_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data);
static void service_proxy_name_changed (GDBusConnection * connection, const gchar * sender_name, const gchar * object_path, const gchar * interface_name, const gchar * signal_name, GVariant * parameters, gpointer user_data);
G_DEFINE_TYPE_WITH_PRIVATE (IndicatorServiceManager, indicator_service_manager, G_TYPE_OBJECT);
/* Build all of our signals and proxies and tie everything
all together. Lovely. */
static void
indicator_service_manager_class_init (IndicatorServiceManagerClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->dispose = indicator_service_manager_dispose;
object_class->finalize = indicator_service_manager_finalize;
/* Property funcs */
object_class->set_property = set_property;
object_class->get_property = get_property;
/**
IndicatorServiceManager::connecton-change:
@arg0: The #IndicatorServiceManager object
@arg1: The state of the connection, TRUE is connected.
Signaled when the service is connected or disconnected
depending on it's previous state.
*/
signals[CONNECTION_CHANGE] = g_signal_new (INDICATOR_SERVICE_MANAGER_SIGNAL_CONNECTION_CHANGE,
G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (IndicatorServiceManagerClass, connection_change),
NULL, NULL,
g_cclosure_marshal_VOID__BOOLEAN,
G_TYPE_NONE, 1, G_TYPE_BOOLEAN, G_TYPE_NONE);
/* Properties */
g_object_class_install_property(object_class, PROP_NAME,
g_param_spec_string(PROP_NAME_S,
"The DBus name for the service to monitor",
"This is the name that should be used to start a service.",
NULL,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property(object_class, PROP_VERSION,
g_param_spec_uint(PROP_VERSION_S,
"The version of the service that we're expecting.",
"A number to check and reject a service if it gives us the wrong number. This should match across the manager and the service",
0, G_MAXUINT, 0,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
/* Setting up the DBus interfaces */
if (node_info == NULL) {
GError * error = NULL;
node_info = g_dbus_node_info_new_for_xml(_indicator_service, &error);
if (error != NULL) {
g_error("Unable to parse Indicator Service Interface description: %s", error->message);
g_error_free(error);
}
}
if (interface_info == NULL) {
interface_info = g_dbus_node_info_lookup_interface(node_info, INDICATOR_SERVICE_INTERFACE);
if (interface_info == NULL) {
g_error("Unable to find interface '" INDICATOR_SERVICE_INTERFACE "'");
}
}
return;
}
/* This inits all the variable and sets up the proxy
to dbus. It doesn't look for the service as at this
point we don't know it's name. */
static void
indicator_service_manager_init (IndicatorServiceManager *self)
{
IndicatorServiceManagerPrivate * priv = indicator_service_manager_get_instance_private(self);
/* Get the private variables in a decent state */
priv->name = NULL;
priv->service_proxy = NULL;
priv->service_proxy_cancel = NULL;
priv->name_watcher = 0;
priv->connected = FALSE;
priv->this_service_version = 0;
priv->restart_count = 0;
priv->restart_source = 0;
priv->watch_cancel = NULL;
return;
}
/* If we're connected this provides all the signals to say
that we're about to not be. Then it takes down the proxies
and tells the service that we're not interested in being
its friend anymore either. */
static void
indicator_service_manager_dispose (GObject *object)
{
IndicatorServiceManager * sm = INDICATOR_SERVICE_MANAGER(object);
IndicatorServiceManagerPrivate * priv = indicator_service_manager_get_instance_private(sm);
/* Removing the idle task to restart if it exists. */
if (priv->restart_source != 0) {
g_source_remove(priv->restart_source);
}
/* Block any restart calls */
priv->restart_source = -1;
/* If we were connected we need to make sure to
tell people that it's no longer the case. */
if (priv->connected) {
priv->connected = FALSE;
g_signal_emit(object, signals[CONNECTION_CHANGE], 0, FALSE, TRUE);
}
if (priv->name_watcher != 0) {
g_dbus_connection_signal_unsubscribe(g_dbus_proxy_get_connection(priv->service_proxy),
priv->name_watcher);
priv->name_watcher = 0;
}
/* If we're still getting the proxy, stop looking so we
can then clean up some more. */
if (priv->service_proxy_cancel != NULL) {
g_cancellable_cancel(priv->service_proxy_cancel);
g_object_unref(priv->service_proxy_cancel);
priv->service_proxy_cancel = NULL;
}
/* If we've sent a watch, cancel looking for the reply before
sending the unwatch */
if (priv->watch_cancel != NULL) {
g_cancellable_cancel(priv->watch_cancel);
g_object_unref(priv->watch_cancel);
priv->watch_cancel = NULL;
}
/* If we have a proxy, tell it we're shutting down. Just
to be polite about it. */
if (priv->service_proxy != NULL) {
unwatch(priv->service_proxy);
}
/* Destory our service proxy, we won't need it. */
if (priv->service_proxy != NULL) {
g_object_unref(G_OBJECT(priv->service_proxy));
priv->service_proxy = NULL;
}
/* Let's see if our parents want to do anything. */
G_OBJECT_CLASS (indicator_service_manager_parent_class)->dispose (object);
return;
}
/* Ironically, we don't allocate a lot of memory ourselves. */
static void
indicator_service_manager_finalize (GObject *object)
{
IndicatorServiceManager * sm = INDICATOR_SERVICE_MANAGER(object);
IndicatorServiceManagerPrivate * priv = indicator_service_manager_get_instance_private(sm);
if (priv->name != NULL) {
g_free(priv->name);
priv->name = NULL;
}
G_OBJECT_CLASS (indicator_service_manager_parent_class)->finalize (object);
return;
}
/* Either copies the name into the private variable or
sets the version. Do it wrong and it'll get upset. */
static void
set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)
{
IndicatorServiceManager * self = INDICATOR_SERVICE_MANAGER(object);
g_return_if_fail(self != NULL);
IndicatorServiceManagerPrivate * priv = indicator_service_manager_get_instance_private(self);
g_return_if_fail(priv != NULL);
switch (prop_id) {
/* *********************** */
case PROP_NAME:
if (priv->name != NULL) {
g_error("Name can not be set twice!");
return;
}
priv->name = g_value_dup_string(value);
start_service(self);
break;
/* *********************** */
case PROP_VERSION:
priv->this_service_version = g_value_get_uint(value);
break;
/* *********************** */
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
return;
}
/* Grabs the values from the private variables and
puts them into the value. */
static void
get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec)
{
IndicatorServiceManager * self = INDICATOR_SERVICE_MANAGER(object);
g_return_if_fail(self != NULL);
IndicatorServiceManagerPrivate * priv = indicator_service_manager_get_instance_private(self);
g_return_if_fail(priv != NULL);
switch (prop_id) {
/* *********************** */
case PROP_NAME:
g_value_set_string(value, priv->name);
break;
/* *********************** */
case PROP_VERSION:
g_value_set_uint(value, priv->this_service_version);
break;
/* *********************** */
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
return;
}
/* Small little function to make a long function call a little
bit cleaner. */
static void
unwatch (GDBusProxy * proxy)
{
g_dbus_proxy_call(proxy,
"UnWatch",
NULL, /* parameters */
G_DBUS_CALL_FLAGS_NONE,
-1, /* timeout */
NULL, /* cancelable */
NULL, /* callback */
NULL); /* user data */
return;
}
/* A callback from telling a service that we want to watch
it. It gives us the service API version and the version
of the other APIs it supports. We check both of those.
If they don't match then we unwatch it. Otherwise, we
signal a connection change to tell the rest of the world
that we have a service now. */
static void
watch_cb (GObject * object, GAsyncResult * res, gpointer user_data)
{
GError * error = NULL;
IndicatorServiceManagerPrivate * priv = indicator_service_manager_get_instance_private(user_data);
GVariant * params = g_dbus_proxy_call_finish(G_DBUS_PROXY(object), res, &error);
if (error != NULL) {
g_warning("Unable to set watch on '%s': '%s'", priv->name, error->message);
g_error_free(error);
start_service_again(INDICATOR_SERVICE_MANAGER(user_data));
return;
}
guint service_api_version;
guint this_service_version;
g_variant_get(params, "(uu)", &service_api_version, &this_service_version);
g_variant_unref(params);
/* We've done it, now let's stop counting. */
/* Note: we're not checking versions. Because, the hope is that
the guy holding the name we want with the wrong version will
drop and we can start another service quickly. */
priv->restart_count = 0;
if (service_api_version != INDICATOR_SERVICE_VERSION) {
g_warning("Service is using a different version of the service interface. Expecting %d and got %d.", INDICATOR_SERVICE_VERSION, service_api_version);
unwatch(priv->service_proxy);
/* Let's make us wait a little while, then try again */
priv->restart_count = TIMEOUT_A_LITTLE_WHILE;
start_service_again(INDICATOR_SERVICE_MANAGER(user_data));
return;
}
if (this_service_version != priv->this_service_version) {
g_warning("Service is using a different API version than the manager. Expecting %d and got %d.", priv->this_service_version, this_service_version);
unwatch(priv->service_proxy);
/* Let's make us wait a little while, then try again */
priv->restart_count = TIMEOUT_A_LITTLE_WHILE;
start_service_again(INDICATOR_SERVICE_MANAGER(user_data));
return;
}
if (!priv->connected) {
priv->connected = TRUE;
g_signal_emit(G_OBJECT(user_data), signals[CONNECTION_CHANGE], 0, TRUE, TRUE);
}
return;
}
/* The function that handles getting us connected to the service.
In many cases it will start the service, but if the service
is already there it just allocates the service proxy and acts
like it was no big deal. */
static void
start_service (IndicatorServiceManager * service)
{
IndicatorServiceManagerPrivate * priv = indicator_service_manager_get_instance_private(service);
g_return_if_fail(priv->name != NULL);
if (priv->service_proxy_cancel != NULL) {
/* A service proxy is being gotten currently */
return;
}
if (priv->service_proxy != NULL) {
g_object_unref(priv->service_proxy);
priv->service_proxy = NULL;
}
priv->service_proxy_cancel = g_cancellable_new();
g_dbus_proxy_new_for_bus(G_BUS_TYPE_SESSION,
G_DBUS_PROXY_FLAGS_NONE,
interface_info,
priv->name,
INDICATOR_SERVICE_OBJECT,
INDICATOR_SERVICE_INTERFACE,
priv->service_proxy_cancel,
service_proxy_cb,
service);
return;
}
/* Callback from trying to create the proxy for the service, this
could include starting the service. Sometime it'll fail and
we'll try to start that dang service again! */
static void
service_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data)
{
GError * error = NULL;
IndicatorServiceManager * service = INDICATOR_SERVICE_MANAGER(user_data);
g_return_if_fail(service != NULL);
GDBusProxy * proxy = g_dbus_proxy_new_for_bus_finish(res, &error);
IndicatorServiceManagerPrivate * priv = indicator_service_manager_get_instance_private(user_data);
if (priv->service_proxy_cancel != NULL) {
g_object_unref(priv->service_proxy_cancel);
priv->service_proxy_cancel = NULL;
}
if (error != NULL) {
/* Unable to create the proxy, eh, let's try again
in a bit */
g_error_free(error);
start_service_again(service);
return;
}
gchar * name = g_dbus_proxy_get_name_owner(proxy);
if (name == NULL) {
/* Hmm, since creating the proxy should start it, it seems very
odd that it wouldn't have an owner at this point. But, all
we can do is try again. */
g_object_unref(proxy);
start_service_again(service);
return;
}
g_free(name);
/* Okay, we're good to grab the proxy at this point, we're
sure that it's ours. */
priv->service_proxy = proxy;
/* Signal for drop */
priv->name_watcher = g_dbus_connection_signal_subscribe(
g_dbus_proxy_get_connection(proxy),
"org.freedesktop.DBus",
"org.freedesktop.DBus",
"NameOwnerChanged",
"/org/freedesktop/DBus",
g_dbus_proxy_get_name(proxy),
G_DBUS_SIGNAL_FLAGS_NONE,
service_proxy_name_changed,
user_data,
NULL);
/* Build cancelable if we need it */
if (priv->watch_cancel == NULL) {
priv->watch_cancel = g_cancellable_new();
}
/* Send watch */
g_dbus_proxy_call(priv->service_proxy,
"Watch",
NULL, /* params */
G_DBUS_CALL_FLAGS_NONE,
-1,
priv->watch_cancel,
watch_cb,
user_data);
return;
}
/* Responds to the name owner changing of the proxy, this
usually means the service died. We're dropping the proxy
and recreating it so that it'll restart the service. */
static void
service_proxy_name_changed (GDBusConnection * connection, const gchar * sender_name,
const gchar * object_path, const gchar * interface_name,
const gchar * signal_name, GVariant * parameters,
gpointer user_data)
{
IndicatorServiceManagerPrivate * priv = indicator_service_manager_get_instance_private(user_data);
const gchar * new_name = NULL;
const gchar * prev_name = NULL;
g_variant_get(parameters, "(&s&s&s)", NULL, &prev_name, &new_name);
if (new_name == NULL || new_name[0] == 0) {
if (priv->connected) {
priv->connected = FALSE;
g_signal_emit(G_OBJECT(user_data), signals[CONNECTION_CHANGE], 0, FALSE, TRUE);
}
start_service_again(INDICATOR_SERVICE_MANAGER(user_data));
} else {
/* If we weren't connected before, we are now. Let's tell the
world! */
if (!priv->connected) {
priv->connected = TRUE;
g_signal_emit(G_OBJECT(user_data), signals[CONNECTION_CHANGE], 0, TRUE, TRUE);
}
/* If the names are both valid, and they're not the same, it means that
we've actually changed. So we need to tell the new guy that we're
watching them */
if (new_name != NULL && prev_name != NULL && new_name[0] != 0 && prev_name != 0 && g_strcmp0(prev_name, new_name) != 0) {
/* Send watch */
g_dbus_proxy_call(priv->service_proxy,
"Watch",
NULL, /* params */
G_DBUS_CALL_FLAGS_NONE,
-1,
priv->watch_cancel,
watch_cb,
user_data);
}
}
return;
}
/* The callback that starts the service for real after
the timeout as determined in 'start_service_again'.
This could be in the idle or a timer. */
static gboolean
start_service_again_cb (gpointer data)
{
IndicatorServiceManagerPrivate * priv = indicator_service_manager_get_instance_private(data);
priv->restart_count++;
g_debug("Restarting service '%s' count %d", priv->name, priv->restart_count);
start_service(INDICATOR_SERVICE_MANAGER(data));
priv->restart_source = 0;
return FALSE;
}
/* This function tries to start a new service, perhaps
after a timeout that it determines. The real issue
here is that it throttles restarting if we're not
being successful. */
static void
start_service_again (IndicatorServiceManager * manager)
{
IndicatorServiceManagerPrivate * priv = indicator_service_manager_get_instance_private(manager);
/* If we've already got a restart source running then
let's not do this again. */
if (priv->restart_source != 0) {
return;
}
/* Allow the restarting to be disabled */
if (g_getenv(TIMEOUT_ENV_NAME)) {
return;
}
if (priv->restart_count == 0) {
/* First time, do it in idle */
g_idle_add(start_service_again_cb, manager);
} else {
/* Not our first time 'round the block. Let's slow this down. */
if (priv->restart_count > 16)
priv->restart_count = 16; /* Not more than 1024x */
priv->restart_source = g_timeout_add((1 << priv->restart_count) * TIMEOUT_MULTIPLIER, start_service_again_cb, manager);
}
return;
}
/* API */
/**
indicator_service_manager_new:
@dbus_name: The well known name of the service on DBus
This creates a new service manager object. If the service
is not running it will start it. No matter what, it will
give a IndicatorServiceManager::connection-changed event
signal when it gets connected.
Return value: A brand new lovely #IndicatorServiceManager
object.
*/
IndicatorServiceManager *
indicator_service_manager_new (const gchar * dbus_name)
{
GObject * obj = g_object_new(INDICATOR_SERVICE_MANAGER_TYPE,
PROP_NAME_S, dbus_name,
NULL);
return INDICATOR_SERVICE_MANAGER(obj);
}
/**
inicator_service_manager_new_version:
@dbus_name: The well known name of the service on DBus
@version: Version of the service we expect
This creates a new service manager object. It also sets
the version of the service that we're expecting to see.
In general, it behaves similarly to #indicator_service_manager_new()
except that it checks @version against the version returned
by the service.
Return value: A brand new lovely #IndicatorServiceManager
object.
*/
IndicatorServiceManager *
indicator_service_manager_new_version (const gchar * dbus_name, guint version)
{
GObject * obj = g_object_new(INDICATOR_SERVICE_MANAGER_TYPE,
PROP_NAME_S, dbus_name,
PROP_VERSION_S, version,
NULL);
return INDICATOR_SERVICE_MANAGER(obj);
}
/**
indicator_service_manager_connected:
@sm: #IndicatorServiceManager object to check
Checks to see if the service manager is connected to a
service.
Return value: #TRUE if there is a service connceted.
*/
gboolean
indicator_service_manager_connected (IndicatorServiceManager * sm)
{
g_return_val_if_fail(INDICATOR_IS_SERVICE_MANAGER(sm), FALSE);
IndicatorServiceManagerPrivate * priv = indicator_service_manager_get_instance_private(sm);
return priv->connected;
}
/**
indicator_service_manager_set_refresh:
@sm: #IndicatorServiceManager object to configure
@time_in_ms: The refresh time in milliseconds
Use this function to set the amount of time between restarting
services that may crash or shutdown. This is mostly useful
for testing and development.
NOTE: Not yet implemented.
*/
void
indicator_service_manager_set_refresh (IndicatorServiceManager * sm, guint time_in_ms)
{
return;
}
libayatana-indicator-0.6.3/libayatana-indicator/indicator-service-manager.h 0000644 0000000 0000000 00000006507 13565237013 023754 0 ustar /*
An object used to manage services. Either start them or
just connect to them.
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#ifndef __INDICATOR_SERVICE_MANAGER_H__
#define __INDICATOR_SERVICE_MANAGER_H__
#include
#include
G_BEGIN_DECLS
#define INDICATOR_SERVICE_MANAGER_TYPE (indicator_service_manager_get_type ())
#define INDICATOR_SERVICE_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), INDICATOR_SERVICE_MANAGER_TYPE, IndicatorServiceManager))
#define INDICATOR_SERVICE_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), INDICATOR_SERVICE_MANAGER_TYPE, IndicatorServiceManagerClass))
#define INDICATOR_IS_SERVICE_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), INDICATOR_SERVICE_MANAGER_TYPE))
#define INDICATOR_IS_SERVICE_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), INDICATOR_SERVICE_MANAGER_TYPE))
#define INDICATOR_SERVICE_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), INDICATOR_SERVICE_MANAGER_TYPE, IndicatorServiceManagerClass))
#define INDICATOR_SERVICE_MANAGER_SIGNAL_CONNECTION_CHANGE "connection-change"
typedef struct _IndicatorServiceManager IndicatorServiceManager;
typedef struct _IndicatorServiceManagerClass IndicatorServiceManagerClass;
/**
IndicatorServiceManagerClass:
@parent: #GObjectClass
@connection_changed: Slot for #IndicatorServiceManager::connection-changed.
@indicator_service_manager_reserved1: Reserved for future use.
@indicator_service_manager_reserved2: Reserved for future use.
@indicator_service_manager_reserved3: Reserved for future use.
@indicator_service_manager_reserved4: Reserved for future use.
*/
struct _IndicatorServiceManagerClass {
GObjectClass parent_class;
/* Signals */
void (*connection_change) (IndicatorServiceManager * sm, gboolean connected, gpointer user_data);
/* Buffer */
void (*indicator_service_manager_reserved1) (void);
void (*indicator_service_manager_reserved2) (void);
void (*indicator_service_manager_reserved3) (void);
void (*indicator_service_manager_reserved4) (void);
};
/**
IndicatorServiceManager:
@parent: #GObject
*/
struct _IndicatorServiceManager {
GObject parent;
};
GType indicator_service_manager_get_type (void);
IndicatorServiceManager * indicator_service_manager_new (const gchar * dbus_name);
IndicatorServiceManager * indicator_service_manager_new_version (const gchar * dbus_name,
guint version);
gboolean indicator_service_manager_connected (IndicatorServiceManager * sm);
void indicator_service_manager_set_refresh (IndicatorServiceManager * sm,
guint time_in_ms);
G_END_DECLS
#endif
libayatana-indicator-0.6.3/libayatana-indicator/indicator-service.xml 0000644 0000000 0000000 00000001115 13565237013 022703 0 ustar
libayatana-indicator-0.6.3/libayatana-indicator/Makefile.am 0000644 0000000 0000000 00000011157 13565237013 020612 0 ustar if USE_GTK3
VER=3
lib_LTLIBRARIES = libayatana-indicator3.la
else
VER=
lib_LTLIBRARIES = libayatana-indicator.la
GTK_DISABLE_DEPRECATED = -DGTK_DISABLE_DEPRECATED
endif
BUILT_SOURCES = indicator-object-enum-types.h indicator-object-enum-types.c
CLEANFILES =
DISTCLEANFILES =
EXTRA_DIST = \
ayatana-indicator3-0.$(INDICATOR_API_VERSION).pc.in.in \
ayatana-indicator-0.$(INDICATOR_API_VERSION).pc.in.in
INDICATOR_ABI_VERSION = 7
INDICATOR_API_VERSION = 4
%.pc: %.pc.in
sed \
-e "s|\@indicator_api_version\@|$(INDICATOR_API_VERSION)|" \
-e "s|\@indicator_abi_version\@|$(INDICATOR_ABI_VERSION)|" \
$< > $@
CLEANFILES += ayatana-indicator$(VER)-0.$(INDICATOR_API_VERSION).pc
include $(top_srcdir)/Makefile.am.marshal
libayatana_indicatorincludedir=$(includedir)/libayatana-indicator$(VER)-0.$(INDICATOR_API_VERSION)/libayatana-indicator
indicator_headers = \
indicator.h \
indicator-desktop-shortcuts.h \
indicator-image-helper.h \
indicator-object.h \
indicator-service.h \
indicator-service-manager.h
if USE_GTK3
indicator_headers += indicator-ng.h
endif
libayatana_indicatorinclude_HEADERS = \
$(indicator_headers)
libayatana_indicator_la_SOURCES = \
$(indicator_headers) \
dbus-shared.h \
gen-indicator-service.xml.h \
gen-indicator-service.xml.c \
indicator-object.c \
indicator-object-enum-types.c \
indicator-desktop-shortcuts.c \
indicator-image-helper.c \
indicator-object-marshal.h \
indicator-object-marshal.c \
indicator-service.c \
indicator-service-manager.c
if USE_GTK3
libayatana_indicator_la_SOURCES += indicator-ng.c
endif
libayatana_indicator_la_CFLAGS = \
$(LIBINDICATOR_CFLAGS) \
$(COVERAGE_CFLAGS) \
$(GTK_DISABLE_DEPRECATED) \
-DG_LOG_DOMAIN=\"libayatana-indicator\" \
-Wall -Werror -Wno-error=deprecated-declarations
libayatana_indicator_la_LIBADD = \
$(LIBINDICATOR_LIBS) \
$(LIBM)
libayatana_indicator_la_LDFLAGS = \
$(COVERAGE_LDFLAGS) \
-version-info $(INDICATOR_ABI_VERSION):0:0 \
-no-undefined \
-export-symbols-regex "^[^_].*"
# 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.
libayatana_indicator3includedir = $(libayatana_indicatorincludedir)
libayatana_indicator3include_HEADERS = $(indicator_headers)
libayatana_indicator3_la_SOURCES = $(libayatana_indicator_la_SOURCES)
libayatana_indicator3_la_CFLAGS = $(libayatana_indicator_la_CFLAGS)
libayatana_indicator3_la_LIBADD = $(libayatana_indicator_la_LIBADD)
libayatana_indicator3_la_LDFLAGS = $(libayatana_indicator_la_LDFLAGS)
pkgconfig_DATA = ayatana-indicator$(VER)-0.$(INDICATOR_API_VERSION).pc
pkgconfigdir = $(libdir)/pkgconfig
glib_marshal_list = indicator-object-marshal.list
glib_marshal_prefix = _indicator_object_marshal
indicator-object-enum-types.h: s-enum-types-h
@true
s-enum-types-h: $(indicator_headers)
( cd $(srcdir) && $(GLIB_MKENUMS) --template $(abs_srcdir)/indicator-object-enum-types.h.template \
$(indicator_headers) ) >> tmp-indicator-object-enum-types.h \
&& (cmp -s tmp-indicator-object-enum-types.h indicator-object-enum-types.h || cp tmp-indicator-object-enum-types.h indicator-object-enum-types.h ) \
&& rm -f tmp-indicator-object-enum-types.h && echo timestamp > $(@F)
indicator-object-enum-types.c: s-enum-types-c
@true
s-enum-types-c: $(indicator_headers)
( cd $(srcdir) && $(GLIB_MKENUMS) --template $(abs_srcdir)/indicator-object-enum-types.c.template \
$(indicator_headers) ) > tmp-indicator-object-enum-types.c \
&& (cmp -s tmp-indicator-object-enum-types.c indicator-object-enum-types.c || cp tmp-indicator-object-enum-types.c indicator-object-enum-types.c ) \
&& rm -f tmp-indicator-object-enum-types.c
EXTRA_DIST += indicator-object-enum-types.h.template indicator-object-enum-types.c.template
CLEANFILES += \
indicator-object-enum-types.h \
indicator-object-enum-types.c \
s-enum-types-h \
s-enum-types-c
##################################
# DBus Specs
##################################
DBUS_SPECS = \
indicator-service.xml
gen-%.xml.h: %.xml
@echo "Building $@ from $<"
@echo "extern const char * _$(subst -,_,$(subst .,_,$(basename $(notdir $<))));" > $@
gen-%.xml.c: %.xml
@echo "Building $@ from $<"
echo "const char * _$(subst -,_,$(subst .,_,$(basename $(notdir $<)))) = " > $@
@sed -e "s:\":\\\\\":g" -e s:^:\": -e s:\$$:\\\\n\": $< >> $@
@echo ";" >> $@
BUILT_SOURCES += \
gen-indicator-service.xml.h \
gen-indicator-service.xml.c
CLEANFILES += $(BUILT_SOURCES)
EXTRA_DIST += $(DBUS_SPECS)
libayatana-indicator-0.6.3/m4/gcov.m4 0000644 0000000 0000000 00000004705 13565237013 014220 0 ustar # Checks for existence of coverage tools:
# * gcov
# * lcov
# * genhtml
# * gcovr
#
# Sets ac_cv_check_gcov to yes if tooling is present
# and reports the executables to the variables LCOV, GCOVR and GENHTML.
AC_DEFUN([AC_TDD_GCOV],
[
AC_ARG_ENABLE(gcov,
AS_HELP_STRING([--enable-gcov],
[enable coverage testing with gcov]),
[use_gcov=$enableval], [use_gcov=no])
if test "x$use_gcov" = "xyes"; then
# we need gcc:
if test "$GCC" != "yes"; then
AC_MSG_ERROR([GCC is required for --enable-gcov])
fi
# Check if ccache is being used
AC_CHECK_PROG(SHTOOL, shtool, shtool)
case `$SHTOOL path $CC` in
*ccache*[)] gcc_ccache=yes;;
*[)] gcc_ccache=no;;
esac
if test "$gcc_ccache" = "yes" && (test -z "$CCACHE_DISABLE" || test "$CCACHE_DISABLE" != "1"); then
AC_MSG_ERROR([ccache must be disabled when --enable-gcov option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1.])
fi
lcov_version_list="1.6 1.7 1.8 1.9"
AC_CHECK_PROG(LCOV, lcov, lcov)
AC_CHECK_PROG(GENHTML, genhtml, genhtml)
if test "$LCOV"; then
AC_CACHE_CHECK([for lcov version], glib_cv_lcov_version, [
glib_cv_lcov_version=invalid
lcov_version=`$LCOV -v 2>/dev/null | $SED -e 's/^.* //'`
for lcov_check_version in $lcov_version_list; do
if test "$lcov_version" = "$lcov_check_version"; then
glib_cv_lcov_version="$lcov_check_version (ok)"
fi
done
])
else
lcov_msg="To enable code coverage reporting you must have one of the following lcov versions installed: $lcov_version_list"
AC_MSG_ERROR([$lcov_msg])
fi
case $glib_cv_lcov_version in
""|invalid[)]
lcov_msg="You must have one of the following versions of lcov: $lcov_version_list (found: $lcov_version)."
AC_MSG_ERROR([$lcov_msg])
LCOV="exit 0;"
;;
esac
if test -z "$GENHTML"; then
AC_MSG_ERROR([Could not find genhtml from the lcov package])
fi
ac_cv_check_gcov=yes
ac_cv_check_lcov=yes
# Remove all optimization flags from CFLAGS
changequote({,})
CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9]*//g'`
changequote([,])
# Add the special gcc flags
COVERAGE_CFLAGS="-O0 -fprofile-arcs -ftest-coverage"
COVERAGE_CXXFLAGS="-O0 -fprofile-arcs -ftest-coverage"
COVERAGE_LDFLAGS="-lgcov"
# Check availability of gcovr
AC_CHECK_PROG(GCOVR, gcovr, gcovr)
if test -z "$GCOVR"; then
ac_cv_check_gcovr=no
else
ac_cv_check_gcovr=yes
fi
fi
]) # AC_TDD_GCOV
libayatana-indicator-0.6.3/Makefile.am 0000644 0000000 0000000 00000000437 13565237013 014532 0 ustar ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
SUBDIRS = \
data \
libayatana-indicator \
tools
tools: libayatana-indicator
if WANT_TESTS
SUBDIRS += \
tests
tests: libayatana-indicator
endif
DISTCLEANFILES = \
libayatana-indicator-*.tar.gz
include $(top_srcdir)/Makefile.am.coverage
libayatana-indicator-0.6.3/Makefile.am.coverage 0000644 0000000 0000000 00000002561 13565237013 016324 0 ustar
# Coverage targets
EXTRA_DIST = trim-lcov.py
.PHONY: clean-gcno clean-gcda \
coverage-html generate-coverage-html clean-coverage-html \
coverage-gcovr generate-coverage-gcovr clean-coverage-gcovr
clean-local: clean-gcno clean-coverage-html clean-coverage-gcovr
if HAVE_GCOV
clean-gcno:
@echo Removing old coverage instrumentation
-find -name '*.gcno' -print | xargs -r rm
clean-gcda:
@echo Removing old coverage results
-find -name '*.gcda' -print | xargs -r rm
coverage-html: clean-gcda
-$(MAKE) $(AM_MAKEFLAGS) -k check
$(MAKE) $(AM_MAKEFLAGS) generate-coverage-html
generate-coverage-html:
@echo Collecting coverage data
$(LCOV) --directory $(top_builddir) --capture --no-checksum --compat-libtool | $(top_srcdir)/trim-lcov.py > coverage.info
LANG=C $(GENHTML) --prefix $(top_builddir) --output-directory coveragereport --title "Code Coverage" --legend --show-details coverage.info
clean-coverage-html: clean-gcda
-$(LCOV) --directory $(top_builddir) -z
-rm -rf coverage.info coveragereport
if HAVE_GCOVR
coverage-gcovr: clean-gcda
-$(MAKE) $(AM_MAKEFLAGS) -k check
$(MAKE) $(AM_MAKEFLAGS) generate-coverage-gcovr
generate-coverage-gcovr:
@echo Generating coverage GCOVR report
$(GCOVR) -x -r $(top_builddir) -o $(top_builddir)/coverage.xml
clean-coverage-gcovr: clean-gcda
-rm -rf $(top_builddir)/coverage.xml
endif # HAVE_GCOVR
endif # HAVE_GCOV
libayatana-indicator-0.6.3/Makefile.am.marshal 0000644 0000000 0000000 00000002235 13565237013 016156 0 ustar # 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
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 \
$(srcdir)/$(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 \
$(srcdir)/$(glib_marshal_list)) > xgen-mc \
&& cp xgen-mc $(marshal_c) \
&& rm -f xgen-mc
libayatana-indicator-0.6.3/NEWS 0000644 0000000 0000000 00000000000 13565237013 013157 0 ustar libayatana-indicator-0.6.3/NEWS.Canonical 0000644 0000000 0000000 00000001422 13565237013 015056 0 ustar 12.10.1
- merge lp:~charlesk/libindicator/lp-1045372 to remove the 'cloak'
code that caused libreoffice's menubars in unity to be greyed
out after opening any dialog or switching windows (lp: 1045372)
12.10.0
- merge lp:~evgeni/libindicator/multiarch-same-devheaders so that we
don't include build-time filenames in comments of the enum header
files. If we do, the header files may be different on each build.
This is especially harmful when building multiple times for multiple
architectures and expecting the files to be identical.
- merge lp:~charlesk/libindicator/fix-test-sources to fix a
copy-and-paste error in specifying the tests' source files
- merge lp:~charlesk/libindicator/cxx to constify the constructors
for indicator_service_manager
libayatana-indicator-0.6.3/README 0000644 0000000 0000000 00000002726 13565237013 013361 0 ustar The indicator service file format
=================================
Modern desktop panels find out about indicator by looking at indicator
service files in `/usr/share/ayatana/indicators`. These files have to have
the same name as the well-known D-Bus name that the corresponding service
owns.
An indicator file is a normal key file (like desktop files). It must have
an `[Indicator Service]` section, that must contain the service's name (`Name`)
and the object path at which its action group is found (`ObjectPath`). For
example:
[Indicator Service]
Name=indicator-example
ObjectPath=/org/ayatana/indicator/example
It should also contain a hint to where the indicator should appear in the panel:
Position=70
The smaller the position, the further to the right (or left when RTL is
enabled) the indicator appears.
An indicator can only export one action group, but a menu for each profile
("desktop", "greeter", "phone") supports. There must be a section for each
of those profiles, containing the object path on which the menu is
exported:
[desktop]
ObjectPath=/org/ayatana/indicator/example/desktop
[greeter]
ObjectPath=/org/ayatana/indicator/example/desktop
[phone]
ObjectPath=/org/ayatana/indicator/example/phone
Object paths can be reused for different profiles (the greeter uses the
same menu as the desktop in the above example).
There are no fallbacks. If a profile is not mentioned in the service file,
the indicator will not show up for that profile.
libayatana-indicator-0.6.3/tests/dummy-indicator-blank.c 0000644 0000000 0000000 00000001341 13565237013 020171 0 ustar /*
Test for libindicator
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#include "libayatana-indicator/indicator.h"
INDICATOR_SET_VERSION
libayatana-indicator-0.6.3/tests/dummy-indicator-entry-func.c 0000644 0000000 0000000 00000006223 13565237013 021200 0 ustar /*
Test for libindicator
Copyright 2012 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#include "dummy-indicator-entry-func.h"
GType dummy_indicator_entry_func_get_type (void);
INDICATOR_SET_VERSION
INDICATOR_SET_TYPE(DUMMY_INDICATOR_ENTRY_FUNC_TYPE)
GtkLabel *
get_label (IndicatorObject * io)
{
return NULL;
}
GtkImage *
get_icon (IndicatorObject * io)
{
return NULL;
}
GtkMenu *
get_menu (IndicatorObject * io)
{
return NULL;
}
const gchar *
get_accessible_desc (IndicatorObject * io)
{
return NULL;
}
static void
entry_activate (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp)
{
DummyIndicatorEntryFunc * self = DUMMY_INDICATOR_ENTRY_FUNC(io);
self->entry_activate_called = TRUE;
return;
}
static void
entry_activate_window (IndicatorObject * io, IndicatorObjectEntry * entry, guint windowid, guint timestamp)
{
DummyIndicatorEntryFunc * self = DUMMY_INDICATOR_ENTRY_FUNC(io);
self->entry_activate_window_called = TRUE;
return;
}
static void
entry_close (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp)
{
DummyIndicatorEntryFunc * self = DUMMY_INDICATOR_ENTRY_FUNC(io);
self->entry_close_called = TRUE;
return;
}
static void dummy_indicator_entry_func_class_init (DummyIndicatorEntryFuncClass *klass);
static void dummy_indicator_entry_func_init (DummyIndicatorEntryFunc *self);
static void dummy_indicator_entry_func_dispose (GObject *object);
static void dummy_indicator_entry_func_finalize (GObject *object);
G_DEFINE_TYPE (DummyIndicatorEntryFunc, dummy_indicator_entry_func, INDICATOR_OBJECT_TYPE);
static void
dummy_indicator_entry_func_class_init (DummyIndicatorEntryFuncClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->dispose = dummy_indicator_entry_func_dispose;
object_class->finalize = dummy_indicator_entry_func_finalize;
IndicatorObjectClass * io_class = INDICATOR_OBJECT_CLASS(klass);
io_class->get_label = get_label;
io_class->get_image = get_icon;
io_class->get_menu = get_menu;
io_class->get_accessible_desc = get_accessible_desc;
io_class->entry_activate = entry_activate;
io_class->entry_activate_window = entry_activate_window;
io_class->entry_close = entry_close;
return;
}
static void
dummy_indicator_entry_func_init (DummyIndicatorEntryFunc *self)
{
return;
}
static void
dummy_indicator_entry_func_dispose (GObject *object)
{
G_OBJECT_CLASS (dummy_indicator_entry_func_parent_class)->dispose (object);
return;
}
static void
dummy_indicator_entry_func_finalize (GObject *object)
{
G_OBJECT_CLASS (dummy_indicator_entry_func_parent_class)->finalize (object);
return;
}
libayatana-indicator-0.6.3/tests/dummy-indicator-entry-func.h 0000644 0000000 0000000 00000004106 13565237013 021203 0 ustar /*
Test for libindicator
Copyright 2012 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#ifndef __DUMMY_INDICATOR_ENTRY_FUNC__
#define __DUMMY_INDICATOR_ENTRY_FUNC__
#include
#include
#include "libayatana-indicator/indicator.h"
#include "libayatana-indicator/indicator-object.h"
G_BEGIN_DECLS
#define DUMMY_INDICATOR_ENTRY_FUNC_TYPE (dummy_indicator_entry_func_get_type ())
#define DUMMY_INDICATOR_ENTRY_FUNC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DUMMY_INDICATOR_ENTRY_FUNC_TYPE, DummyIndicatorEntryFunc))
#define DUMMY_INDICATOR_ENTRY_FUNC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DUMMY_INDICATOR_ENTRY_FUNC_TYPE, DummyIndicatorEntryFuncClass))
#define IS_DUMMY_INDICATOR_ENTRY_FUNC(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DUMMY_INDICATOR_ENTRY_FUNC_TYPE))
#define IS_DUMMY_INDICATOR_ENTRY_FUNC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DUMMY_INDICATOR_ENTRY_FUNC_TYPE))
#define DUMMY_INDICATOR_ENTRY_FUNC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DUMMY_INDICATOR_ENTRY_FUNC_TYPE, DummyIndicatorEntryFuncClass))
typedef struct _DummyIndicatorEntryFunc DummyIndicatorEntryFunc;
typedef struct _DummyIndicatorEntryFuncClass DummyIndicatorEntryFuncClass;
struct _DummyIndicatorEntryFuncClass {
IndicatorObjectClass parent_class;
};
struct _DummyIndicatorEntryFunc {
IndicatorObject parent;
gboolean entry_activate_called;
gboolean entry_activate_window_called;
gboolean entry_close_called;
};
#endif /* __DUMMY_INDICATOR_ENTRY_FUNC__ */
libayatana-indicator-0.6.3/tests/dummy-indicator-null.c 0000644 0000000 0000000 00000006422 13565237013 020061 0 ustar /*
Test for libindicator
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#include
#include
#include "libayatana-indicator/indicator.h"
#include "libayatana-indicator/indicator-object.h"
#define DUMMY_INDICATOR_NULL_TYPE (dummy_indicator_null_get_type ())
#define DUMMY_INDICATOR_NULL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DUMMY_INDICATOR_NULL_TYPE, DummyIndicatorNull))
#define DUMMY_INDICATOR_NULL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DUMMY_INDICATOR_NULL_TYPE, DummyIndicatorNullClass))
#define IS_DUMMY_INDICATOR_NULL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DUMMY_INDICATOR_NULL_TYPE))
#define IS_DUMMY_INDICATOR_NULL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DUMMY_INDICATOR_NULL_TYPE))
#define DUMMY_INDICATOR_NULL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DUMMY_INDICATOR_NULL_TYPE, DummyIndicatorNullClass))
typedef struct _DummyIndicatorNull DummyIndicatorNull;
typedef struct _DummyIndicatorNullClass DummyIndicatorNullClass;
struct _DummyIndicatorNullClass {
IndicatorObjectClass parent_class;
};
struct _DummyIndicatorNull {
IndicatorObject parent;
};
GType dummy_indicator_null_get_type (void);
INDICATOR_SET_VERSION
INDICATOR_SET_TYPE(DUMMY_INDICATOR_NULL_TYPE)
GtkLabel *
get_label (IndicatorObject * io)
{
return NULL;
}
GtkImage *
get_icon (IndicatorObject * io)
{
return NULL;
}
GtkMenu *
get_menu (IndicatorObject * io)
{
return NULL;
}
const gchar *
get_accessible_desc (IndicatorObject * io)
{
return NULL;
}
static void dummy_indicator_null_class_init (DummyIndicatorNullClass *klass);
static void dummy_indicator_null_init (DummyIndicatorNull *self);
static void dummy_indicator_null_dispose (GObject *object);
static void dummy_indicator_null_finalize (GObject *object);
G_DEFINE_TYPE (DummyIndicatorNull, dummy_indicator_null, INDICATOR_OBJECT_TYPE);
static void
dummy_indicator_null_class_init (DummyIndicatorNullClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->dispose = dummy_indicator_null_dispose;
object_class->finalize = dummy_indicator_null_finalize;
IndicatorObjectClass * io_class = INDICATOR_OBJECT_CLASS(klass);
io_class->get_label = get_label;
io_class->get_image = get_icon;
io_class->get_menu = get_menu;
io_class->get_accessible_desc = get_accessible_desc;
return;
}
static void
dummy_indicator_null_init (DummyIndicatorNull *self)
{
return;
}
static void
dummy_indicator_null_dispose (GObject *object)
{
G_OBJECT_CLASS (dummy_indicator_null_parent_class)->dispose (object);
return;
}
static void
dummy_indicator_null_finalize (GObject *object)
{
G_OBJECT_CLASS (dummy_indicator_null_parent_class)->finalize (object);
return;
}
libayatana-indicator-0.6.3/tests/dummy-indicator-signaler.c 0000644 0000000 0000000 00000011306 13565237013 020710 0 ustar /*
Test for libindicator
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#include
#include
#include "libayatana-indicator/indicator.h"
#include "libayatana-indicator/indicator-object.h"
#define DUMMY_INDICATOR_SIGNALER_TYPE (dummy_indicator_signaler_get_type ())
#define DUMMY_INDICATOR_SIGNALER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DUMMY_INDICATOR_SIGNALER_TYPE, DummyIndicatorSignaler))
#define DUMMY_INDICATOR_SIGNALER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DUMMY_INDICATOR_SIGNALER_TYPE, DummyIndicatorSignalerClass))
#define IS_DUMMY_INDICATOR_SIGNALER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DUMMY_INDICATOR_SIGNALER_TYPE))
#define IS_DUMMY_INDICATOR_SIGNALER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DUMMY_INDICATOR_SIGNALER_TYPE))
#define DUMMY_INDICATOR_SIGNALER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DUMMY_INDICATOR_SIGNALER_TYPE, DummyIndicatorSignalerClass))
typedef struct _DummyIndicatorSignaler DummyIndicatorSignaler;
typedef struct _DummyIndicatorSignalerClass DummyIndicatorSignalerClass;
struct _DummyIndicatorSignalerClass {
IndicatorObjectClass parent_class;
};
struct _DummyIndicatorSignaler {
IndicatorObject parent;
IndicatorObjectEntry *entries;
};
GType dummy_indicator_signaler_get_type (void);
INDICATOR_SET_VERSION
INDICATOR_SET_TYPE(DUMMY_INDICATOR_SIGNALER_TYPE)
GtkLabel *
get_label (IndicatorObject * io)
{
return GTK_LABEL(gtk_label_new("Signaler Item"));
}
GtkImage *
get_icon (IndicatorObject * io)
{
return GTK_IMAGE(gtk_image_new());
}
GtkMenu *
get_menu (IndicatorObject * io)
{
GtkMenu * main_menu = GTK_MENU(gtk_menu_new());
GtkWidget * loading_item = gtk_menu_item_new_with_label("Loading...");
gtk_menu_shell_append(GTK_MENU_SHELL(main_menu), loading_item);
gtk_widget_show(GTK_WIDGET(loading_item));
return main_menu;
}
const gchar *
get_accessible_desc (IndicatorObject * io)
{
return "Signaler Item";
}
static void dummy_indicator_signaler_class_init (DummyIndicatorSignalerClass *klass);
static void dummy_indicator_signaler_init (DummyIndicatorSignaler *self);
static void dummy_indicator_signaler_dispose (GObject *object);
static void dummy_indicator_signaler_finalize (GObject *object);
G_DEFINE_TYPE (DummyIndicatorSignaler, dummy_indicator_signaler, INDICATOR_OBJECT_TYPE);
static void
dummy_indicator_signaler_class_init (DummyIndicatorSignalerClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->dispose = dummy_indicator_signaler_dispose;
object_class->finalize = dummy_indicator_signaler_finalize;
IndicatorObjectClass * io_class = INDICATOR_OBJECT_CLASS(klass);
io_class->get_label = get_label;
io_class->get_image = get_icon;
io_class->get_menu = get_menu;
io_class->get_accessible_desc = get_accessible_desc;
io_class->entry_being_removed = NULL;
io_class->entry_was_added = NULL;
return;
}
static gboolean
idle_signal (gpointer data)
{
DummyIndicatorSignaler * self = DUMMY_INDICATOR_SIGNALER(data);
IndicatorObjectEntry *added_entry, *removed_entry, *moved_entry;
added_entry = &self->entries[0];
moved_entry = &self->entries[1];
removed_entry = &self->entries[2];
added_entry->name_hint = "added";
moved_entry->name_hint = "moved";
removed_entry->name_hint = "removed";
g_signal_emit(G_OBJECT(self), INDICATOR_OBJECT_SIGNAL_ENTRY_ADDED_ID, 0, added_entry);
g_signal_emit(G_OBJECT(self), INDICATOR_OBJECT_SIGNAL_ENTRY_MOVED_ID, 0, moved_entry, 0, 1);
g_signal_emit(G_OBJECT(self), INDICATOR_OBJECT_SIGNAL_ENTRY_REMOVED_ID, 0, removed_entry);
return FALSE; /* Don't queue again */
}
static void
dummy_indicator_signaler_init (DummyIndicatorSignaler *self)
{
self->entries = g_new0(IndicatorObjectEntry, 3);
g_idle_add(idle_signal, self);
return;
}
static void
dummy_indicator_signaler_dispose (GObject *object)
{
G_OBJECT_CLASS (dummy_indicator_signaler_parent_class)->dispose (object);
return;
}
static void
dummy_indicator_signaler_finalize (GObject *object)
{
DummyIndicatorSignaler * self = DUMMY_INDICATOR_SIGNALER(object);
g_free (self->entries);
G_OBJECT_CLASS (dummy_indicator_signaler_parent_class)->finalize (object);
return;
}
libayatana-indicator-0.6.3/tests/dummy-indicator-simple.c 0000644 0000000 0000000 00000007221 13565237013 020376 0 ustar /*
Test for libindicator
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#include
#include
#include "libayatana-indicator/indicator.h"
#include "libayatana-indicator/indicator-object.h"
#define DUMMY_INDICATOR_SIMPLE_TYPE (dummy_indicator_simple_get_type ())
#define DUMMY_INDICATOR_SIMPLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DUMMY_INDICATOR_SIMPLE_TYPE, DummyIndicatorSimple))
#define DUMMY_INDICATOR_SIMPLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DUMMY_INDICATOR_SIMPLE_TYPE, DummyIndicatorSimpleClass))
#define IS_DUMMY_INDICATOR_SIMPLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DUMMY_INDICATOR_SIMPLE_TYPE))
#define IS_DUMMY_INDICATOR_SIMPLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DUMMY_INDICATOR_SIMPLE_TYPE))
#define DUMMY_INDICATOR_SIMPLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DUMMY_INDICATOR_SIMPLE_TYPE, DummyIndicatorSimpleClass))
typedef struct _DummyIndicatorSimple DummyIndicatorSimple;
typedef struct _DummyIndicatorSimpleClass DummyIndicatorSimpleClass;
struct _DummyIndicatorSimpleClass {
IndicatorObjectClass parent_class;
};
struct _DummyIndicatorSimple {
IndicatorObject parent;
};
GType dummy_indicator_simple_get_type (void);
INDICATOR_SET_VERSION
INDICATOR_SET_TYPE(DUMMY_INDICATOR_SIMPLE_TYPE)
GtkLabel *
get_label (IndicatorObject * io)
{
return GTK_LABEL(gtk_label_new("Simple Item"));
}
GtkImage *
get_icon (IndicatorObject * io)
{
return GTK_IMAGE(gtk_image_new());
}
GtkMenu *
get_menu (IndicatorObject * io)
{
GtkMenu * main_menu = GTK_MENU(gtk_menu_new());
GtkWidget * loading_item = gtk_menu_item_new_with_label("Loading...");
gtk_menu_shell_append(GTK_MENU_SHELL(main_menu), loading_item);
gtk_widget_show(GTK_WIDGET(loading_item));
return main_menu;
}
const gchar *
get_accessible_desc (IndicatorObject * io)
{
return "Simple Item";
}
static void dummy_indicator_simple_class_init (DummyIndicatorSimpleClass *klass);
static void dummy_indicator_simple_init (DummyIndicatorSimple *self);
static void dummy_indicator_simple_dispose (GObject *object);
static void dummy_indicator_simple_finalize (GObject *object);
G_DEFINE_TYPE (DummyIndicatorSimple, dummy_indicator_simple, INDICATOR_OBJECT_TYPE);
static void
dummy_indicator_simple_class_init (DummyIndicatorSimpleClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->dispose = dummy_indicator_simple_dispose;
object_class->finalize = dummy_indicator_simple_finalize;
IndicatorObjectClass * io_class = INDICATOR_OBJECT_CLASS(klass);
io_class->get_label = get_label;
io_class->get_image = get_icon;
io_class->get_menu = get_menu;
io_class->get_accessible_desc = get_accessible_desc;
return;
}
static void
dummy_indicator_simple_init (DummyIndicatorSimple *self)
{
return;
}
static void
dummy_indicator_simple_dispose (GObject *object)
{
G_OBJECT_CLASS (dummy_indicator_simple_parent_class)->dispose (object);
return;
}
static void
dummy_indicator_simple_finalize (GObject *object)
{
G_OBJECT_CLASS (dummy_indicator_simple_parent_class)->finalize (object);
return;
}
libayatana-indicator-0.6.3/tests/dummy-indicator-visible.c 0000644 0000000 0000000 00000011116 13565237013 020540 0 ustar /*
Test for libindicator
Copyright 2012 Canonical Ltd.
Authors:
Charles Kerr
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#include
#include
#include "libayatana-indicator/indicator.h"
#include "libayatana-indicator/indicator-object.h"
#define DUMMY_INDICATOR_VISIBLE_TYPE (dummy_indicator_visible_get_type ())
#define DUMMY_INDICATOR_VISIBLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DUMMY_INDICATOR_VISIBLE_TYPE, DummyIndicatorVisible))
#define DUMMY_INDICATOR_VISIBLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DUMMY_INDICATOR_VISIBLE_TYPE, DummyIndicatorVisibleClass))
#define IS_DUMMY_INDICATOR_VISIBLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DUMMY_INDICATOR_VISIBLE_TYPE))
#define IS_DUMMY_INDICATOR_VISIBLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DUMMY_INDICATOR_VISIBLE_TYPE))
#define DUMMY_INDICATOR_VISIBLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DUMMY_INDICATOR_VISIBLE_TYPE, DummyIndicatorVisibleClass))
typedef struct _DummyIndicatorVisible DummyIndicatorVisible;
typedef struct _DummyIndicatorVisibleClass DummyIndicatorVisibleClass;
struct _DummyIndicatorVisibleClass {
IndicatorObjectClass parent_class;
};
struct _DummyIndicatorVisible {
IndicatorObject parent;
};
GType dummy_indicator_visible_get_type (void);
INDICATOR_SET_VERSION
INDICATOR_SET_TYPE(DUMMY_INDICATOR_VISIBLE_TYPE)
GtkLabel *
get_label (IndicatorObject * io)
{
return GTK_LABEL(gtk_label_new("Visible Item"));
}
GtkImage *
get_icon (IndicatorObject * io)
{
return GTK_IMAGE(gtk_image_new());
}
GtkMenu *
get_menu (IndicatorObject * io)
{
GtkMenu * main_menu = GTK_MENU(gtk_menu_new());
GtkWidget * loading_item = gtk_menu_item_new_with_label("Loading...");
gtk_menu_shell_append(GTK_MENU_SHELL(main_menu), loading_item);
gtk_widget_show(GTK_WIDGET(loading_item));
return main_menu;
}
const gchar *
get_accessible_desc (IndicatorObject * io)
{
return "Visible Item";
}
static void dummy_indicator_visible_class_init (DummyIndicatorVisibleClass *klass);
static void dummy_indicator_visible_init (DummyIndicatorVisible *self);
static void dummy_indicator_visible_dispose (GObject *object);
static void dummy_indicator_visible_finalize (GObject *object);
G_DEFINE_TYPE (DummyIndicatorVisible, dummy_indicator_visible, INDICATOR_OBJECT_TYPE);
static void
dummy_indicator_entry_being_removed (IndicatorObject * io, IndicatorObjectEntry * entry)
{
IndicatorObjectClass * indicator_object_class = INDICATOR_OBJECT_CLASS (dummy_indicator_visible_parent_class);
g_object_set_data(G_OBJECT(entry->label), "is-hidden", GINT_TO_POINTER(1));
if (indicator_object_class->entry_being_removed != NULL) {
indicator_object_class->entry_being_removed (io, entry);
}
}
static void
dummy_indicator_entry_was_added (IndicatorObject * io, IndicatorObjectEntry * entry)
{
IndicatorObjectClass * indicator_object_class = INDICATOR_OBJECT_CLASS (dummy_indicator_visible_parent_class);
g_object_steal_data(G_OBJECT(entry->label), "is-hidden");
if (indicator_object_class->entry_was_added != NULL) {
indicator_object_class->entry_was_added (io, entry);
}
}
static void
dummy_indicator_visible_class_init (DummyIndicatorVisibleClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->dispose = dummy_indicator_visible_dispose;
object_class->finalize = dummy_indicator_visible_finalize;
IndicatorObjectClass * io_class = INDICATOR_OBJECT_CLASS(klass);
io_class->get_label = get_label;
io_class->get_image = get_icon;
io_class->get_menu = get_menu;
io_class->get_accessible_desc = get_accessible_desc;
io_class->entry_being_removed = dummy_indicator_entry_being_removed;
io_class->entry_was_added = dummy_indicator_entry_was_added;
}
static void
dummy_indicator_visible_init (DummyIndicatorVisible *self)
{
}
static void
dummy_indicator_visible_dispose (GObject *object)
{
G_OBJECT_CLASS (dummy_indicator_visible_parent_class)->dispose (object);
}
static void
dummy_indicator_visible_finalize (GObject *object)
{
G_OBJECT_CLASS (dummy_indicator_visible_parent_class)->finalize (object);
}
libayatana-indicator-0.6.3/tests/indicator-test-service.c 0000644 0000000 0000000 00000006553 13565237013 020400 0 ustar
#include
typedef struct
{
GSimpleActionGroup *actions;
GMenu *menu;
guint actions_export_id;
guint menu_export_id;
} IndicatorTestService;
static void
bus_acquired (GDBusConnection *connection,
const gchar *name,
gpointer user_data)
{
IndicatorTestService *indicator = user_data;
GError *error = NULL;
indicator->actions_export_id = g_dbus_connection_export_action_group (connection,
"/org/ayatana/indicator/test",
G_ACTION_GROUP (indicator->actions),
&error);
if (indicator->actions_export_id == 0)
{
g_warning ("cannot export action group: %s", error->message);
g_error_free (error);
return;
}
indicator->menu_export_id = g_dbus_connection_export_menu_model (connection,
"/org/ayatana/indicator/test/desktop",
G_MENU_MODEL (indicator->menu),
&error);
if (indicator->menu_export_id == 0)
{
g_warning ("cannot export menu: %s", error->message);
g_error_free (error);
return;
}
}
static void
name_lost (GDBusConnection *connection,
const gchar *name,
gpointer user_data)
{
IndicatorTestService *indicator = user_data;
if (indicator->actions_export_id)
g_dbus_connection_unexport_action_group (connection, indicator->actions_export_id);
if (indicator->menu_export_id)
g_dbus_connection_unexport_menu_model (connection, indicator->menu_export_id);
}
static void
activate_show (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
g_message ("showing");
}
int
main (int argc, char **argv)
{
IndicatorTestService indicator = { 0 };
GMenuItem *item;
GMenu *submenu;
GActionEntry entries[] = {
{ "_header", NULL, NULL, "{'label': <'Test'>,"
" 'icon': <'indicator-test'>,"
" 'accessible-desc': <'Test indicator'> }", NULL },
{ "show", activate_show, NULL, NULL, NULL }
};
GMainLoop *loop;
indicator.actions = g_simple_action_group_new ();
g_simple_action_group_add_entries (indicator.actions, entries, G_N_ELEMENTS (entries), NULL);
submenu = g_menu_new ();
g_menu_append (submenu, "Show", "indicator.show");
item = g_menu_item_new (NULL, "indicator._header");
g_menu_item_set_attribute (item, "x-canonical-type", "s", "org.ayatana.indicator.root");
g_menu_item_set_submenu (item, G_MENU_MODEL (submenu));
indicator.menu = g_menu_new ();
g_menu_append_item (indicator.menu, item);
g_bus_own_name (G_BUS_TYPE_SESSION,
"org.ayatana.indicator.test",
G_BUS_NAME_OWNER_FLAGS_NONE,
bus_acquired,
NULL,
name_lost,
&indicator,
NULL);
loop = g_main_loop_new (NULL, FALSE);
g_main_loop_run (loop);
g_object_unref (submenu);
g_object_unref (item);
g_object_unref (indicator.actions);
g_object_unref (indicator.menu);
g_object_unref (loop);
return 0;
}
libayatana-indicator-0.6.3/tests/Makefile.am 0000644 0000000 0000000 00000034630 13565237013 015676 0 ustar if USE_GTK3
INDICATOR_LIB = -layatana-indicator3
else
INDICATOR_LIB = -layatana-indicator
GTK_DISABLE_DEPRECATED = -DGTK_DISABLE_DEPRECATED
endif
TESTS =
DISTCLEANFILES =
XFAIL_TESTS =
check_PROGRAMS =
lib_LTLIBRARIES = \
libdummy-indicator-blank.la \
libdummy-indicator-null.la \
libdummy-indicator-signaler.la \
libdummy-indicator-simple.la \
libdummy-indicator-visible.la \
libdummy-indicator-entry-func.la
DBUS_RUNNER=dbus-test-runner --dbus-config /usr/share/dbus-test-runner/session.conf
XVFB_RUN=". $(srcdir)/run-xvfb.sh"
EXTRA_DIST = \
run-xvfb.sh \
session.conf.in \
service-manager-connect.service.in \
service-version-bad.service.in \
service-version-good.service.in \
org.ayatana.indicator.test.service.in
#############################
# Test Loader
#############################
check_PROGRAMS += test-loader
test_loader_SOURCES = \
test-loader.c
test_loader_CFLAGS = \
-Wall -Werror \
$(LIBINDICATOR_CFLAGS) -I$(top_srcdir) \
-DBUILD_DIR="\"$(builddir)\""
test_loader_LDADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
#############################
# Test Desktop Shortcuts
#############################
check_PROGRAMS += test-desktop-shortcuts
test_desktop_shortcuts_SOURCES = \
test-desktop-shortcuts.c
test_desktop_shortcuts_CFLAGS = \
-Wall -Werror \
-DSRCDIR="\"$(srcdir)\"" \
$(LIBINDICATOR_CFLAGS) -I$(top_srcdir) \
-DBUILD_DIR="\"$(abs_builddir)\""
test_desktop_shortcuts_LDADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
DS_XML_REPORT = desktop-shortcuts-check-results.xml
DS_HTML_REPORT = desktop-shortcuts-check-results.html
test-desktop-shortcuts-tester: test-desktop-shortcuts Makefile.am
@echo "#!/bin/bash" > $@
@echo $(XVFB_RUN) >> $@
@echo gtester -k --verbose -o=$(XML_REPORT) ./test-desktop-shortcuts >> $@
@chmod +x $@
TESTS += test-desktop-shortcuts-tester
DISTCLEANFILES += test-desktop-shortcuts-tester \
test-desktop-shortcuts-touch-test \
$(DS_XML_REPORT) \
$(DS_HTML_REPORT)
EXTRA_DIST += test-well-formed.desktop
#############################
# Dummy Indicator Blank
#############################
libdummy_indicator_blank_la_SOURCES = \
dummy-indicator-blank.c
libdummy_indicator_blank_la_CFLAGS = \
-Wall -Werror \
$(GTK_DISABLE_DEPRECATED) \
$(LIBINDICATOR_CFLAGS) -I$(top_srcdir)
libdummy_indicator_blank_la_LIBADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
libdummy_indicator_blank_la_LDFLAGS = \
-module \
-avoid-version
#############################
# Dummy Indicator NULL
#############################
libdummy_indicator_null_la_SOURCES = \
dummy-indicator-null.c
libdummy_indicator_null_la_CFLAGS = \
-Wall -Werror \
$(GTK_DISABLE_DEPRECATED) \
$(LIBINDICATOR_CFLAGS) -I$(top_srcdir)
libdummy_indicator_null_la_LIBADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
libdummy_indicator_null_la_LDFLAGS = \
-module \
-avoid-version
#############################
# Dummy Indicator Signaler
#############################
libdummy_indicator_signaler_la_SOURCES = \
dummy-indicator-signaler.c
libdummy_indicator_signaler_la_CFLAGS = \
-Wall -Werror \
$(GTK_DISABLE_DEPRECATED) \
$(LIBINDICATOR_CFLAGS) -I$(top_srcdir)
libdummy_indicator_signaler_la_LIBADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
libdummy_indicator_signaler_la_LDFLAGS = \
-module \
-avoid-version
#############################
# Dummy Indicator Simple
#############################
libdummy_indicator_simple_la_SOURCES = \
dummy-indicator-simple.c
libdummy_indicator_simple_la_CFLAGS = \
-Wall -Werror \
$(GTK_DISABLE_DEPRECATED) \
$(LIBINDICATOR_CFLAGS) -I$(top_srcdir)
libdummy_indicator_simple_la_LIBADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
libdummy_indicator_simple_la_LDFLAGS = \
-module \
-avoid-version
#############################
# Dummy Indicator Entry Func
#############################
libdummy_indicator_entry_func_la_SOURCES = \
dummy-indicator-entry-func.c \
dummy-indicator-entry-func.h
libdummy_indicator_entry_func_la_CFLAGS = \
-Wall -Werror \
$(GTK_DISABLE_DEPRECATED) \
$(LIBINDICATOR_CFLAGS) -I$(top_srcdir)
libdummy_indicator_entry_func_la_LIBADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
libdummy_indicator_entry_func_la_LDFLAGS = \
-module \
-avoid-version
#############################
# Dummy Indicator Visible
#############################
libdummy_indicator_visible_la_SOURCES = \
dummy-indicator-visible.c
libdummy_indicator_visible_la_CFLAGS = \
-Wall -Werror \
$(GTK_DISABLE_DEPRECATED) \
$(LIBINDICATOR_CFLAGS) -I$(top_srcdir)
libdummy_indicator_visible_la_LIBADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
libdummy_indicator_visible_la_LDFLAGS = \
-module \
-avoid-version
#############################
# Service Shutdown Timeout
#############################
check_PROGRAMS += service-shutdown-timeout
service_shutdown_timeout_SOURCES = \
service-shutdown-timeout.c
service_shutdown_timeout_CFLAGS = \
-Wall -Werror \
$(LIBINDICATOR_CFLAGS) -I$(top_srcdir)
service_shutdown_timeout_LDADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
service-shutdown-timeout-tester: service-shutdown-timeout Makefile
@echo "#!/bin/sh" > service-shutdown-timeout-tester
@echo $(DBUS_RUNNER) --task ./service-shutdown-timeout >> service-shutdown-timeout-tester
@chmod +x service-shutdown-timeout-tester
TESTS += service-shutdown-timeout-tester
DISTCLEANFILES += service-shutdown-timeout-tester
#############################
# Service Manager No Connect
#############################
check_PROGRAMS += service-manager-no-connect
service_manager_no_connect_SOURCES = \
service-manager-no-connect.c
service_manager_no_connect_CFLAGS = \
-Wall -Werror \
$(LIBINDICATOR_CFLAGS) -I$(top_srcdir)
service_manager_no_connect_LDADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
service-manager-no-connect-tester: service-manager-no-connect Makefile.am
@echo "#!/bin/sh" > service-manager-no-connect-tester
@echo $(DBUS_RUNNER) --task ./service-manager-no-connect >> service-manager-no-connect-tester
@chmod +x service-manager-no-connect-tester
TESTS += service-manager-no-connect-tester
DISTCLEANFILES += service-manager-no-connect-tester
#############################
# Service Manager Connect
#############################
session.conf: $(srcdir)/session.conf.in Makefile.am
sed -e "s|\@servicedir\@|$(abs_builddir)|" $< > $@
service-manager-connect.service: $(srcdir)/service-manager-connect.service.in Makefile.am
sed -e "s|\@builddir\@|$(abs_builddir)|" $< > $@
check_PROGRAMS += service-manager-connect
service_manager_connect_SOURCES = \
service-manager-connect.c
service_manager_connect_CFLAGS = \
-Wall -Werror \
$(LIBINDICATOR_CFLAGS) -I$(top_srcdir)
service_manager_connect_LDADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
check_PROGRAMS += service-manager-connect-service
service_manager_connect_service_SOURCES = \
service-manager-connect-service.c
service_manager_connect_service_CFLAGS = \
-Wall -Werror \
$(LIBINDICATOR_CFLAGS) -I$(top_srcdir)
service_manager_connect_service_LDADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
service-manager-connect-tester: service-manager-connect service-manager-connect-service session.conf service-manager-connect.service Makefile.am
@echo "#!/bin/sh" > service-manager-connect-tester
@echo dbus-test-runner --dbus-config $(builddir)/session.conf --task ./service-manager-connect >> service-manager-connect-tester
@chmod +x service-manager-connect-tester
TESTS += service-manager-connect-tester
DISTCLEANFILES += service-manager-connect-tester session.conf service-manager-connect.service
#############################
# Service Versions
#############################
service-version-good.service: $(srcdir)/service-version-good.service.in Makefile.am
sed -e "s|\@builddir\@|$(abs_builddir)|" $< > $@
service-version-bad.service: $(srcdir)/service-version-bad.service.in Makefile.am
sed -e "s|\@builddir\@|$(abs_builddir)|" $< > $@
check_PROGRAMS += service-version-manager
service_version_manager_SOURCES = \
service-version-values.h \
service-version-manager.c
service_version_manager_CFLAGS = \
-Wall -Werror \
$(LIBINDICATOR_CFLAGS) -I$(top_srcdir)
service_version_manager_LDADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
check_PROGRAMS += service-version-bad-service
service_version_bad_service_SOURCES = \
service-version-values.h \
service-version-bad-service.c
service_version_bad_service_CFLAGS = \
-Wall -Werror \
$(LIBINDICATOR_CFLAGS) -I$(top_srcdir)
service_version_bad_service_LDADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
check_PROGRAMS += service-version-good-service
service_version_good_service_SOURCES = \
service-version-values.h \
service-version-good-service.c
service_version_good_service_CFLAGS = \
-Wall -Werror \
$(LIBINDICATOR_CFLAGS) -I$(top_srcdir)
service_version_good_service_LDADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
service-version-tester: service-version-manager service-version-bad-service service-version-good-service session.conf service-version-bad.service service-version-good.service Makefile.am
@echo "#!/bin/sh" > $@
@echo dbus-test-runner --dbus-config $(builddir)/session.conf --task ./service-version-manager >> $@
@chmod +x $@
TESTS += service-version-tester
DISTCLEANFILES += service-version-tester service-version-bad.service service-version-good.service
#############################
# Service Versions
#############################
check_PROGRAMS += service-version-multiwatch-manager
service_version_multiwatch_manager_SOURCES = \
service-version-values.h \
service-version-multiwatch-manager.c
service_version_multiwatch_manager_CFLAGS = \
-Wall -Werror \
$(LIBINDICATOR_CFLAGS) -I$(top_srcdir)
service_version_multiwatch_manager_LDADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
check_PROGRAMS += service-version-multiwatch-manager-impolite
service_version_multiwatch_manager_impolite_SOURCES = \
service-version-values.h \
service-version-multiwatch-manager-impolite.c
service_version_multiwatch_manager_impolite_CFLAGS = \
-Wall -Werror \
$(LIBINDICATOR_CFLAGS) -I$(top_srcdir)
service_version_multiwatch_manager_impolite_LDADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
check_PROGRAMS += service-version-multiwatch-service
service_version_multiwatch_service_SOURCES = \
service-version-values.h \
service-version-multiwatch-service.c
service_version_multiwatch_service_CFLAGS = \
-Wall -Werror \
$(LIBINDICATOR_CFLAGS) -I$(top_srcdir)
service_version_multiwatch_service_LDADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
service-version-multiwatch-tester: service-version-multiwatch-manager service-version-multiwatch-service service-version-multiwatch-manager-impolite Makefile.am
@echo "#!/bin/sh" > $@
@echo dbus-test-runner --task ./service-version-multiwatch-service --task-name Service --task ./service-version-multiwatch-manager --task-name Manager1 --task ./service-version-multiwatch-manager --task-name Manager2 --task ./service-version-multiwatch-manager --task-name Manager3 --task ./service-version-multiwatch-manager --task-name Manager4 --task ./service-version-multiwatch-manager --task-name Manager5 --task ./service-version-multiwatch-manager-impolite --task-name Impolite1 --task ./service-version-multiwatch-manager-impolite --task-name Impolite2 --task ./service-version-multiwatch-manager-impolite --task-name Impolite3 >> $@
@chmod +x $@
TESTS += service-version-multiwatch-tester
DISTCLEANFILES += service-version-multiwatch-tester
#############################
# Service Manager Shutdown
#############################
check_PROGRAMS += service-manager-nostart-connect
service_manager_nostart_connect_SOURCES = \
service-manager-nostart-connect.c
service_manager_nostart_connect_CFLAGS = \
-Wall -Werror \
$(LIBINDICATOR_CFLAGS) -I$(top_srcdir)
service_manager_nostart_connect_LDADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
service-manager-connect-nostart-tester: service-manager-nostart-connect service-manager-connect-service Makefile.am
@echo "#!/bin/sh" > $@
@echo dbus-test-runner --task ./service-manager-nostart-connect --task ./service-manager-connect-service >> $@
@chmod +x $@
TESTS += service-manager-connect-nostart-tester
DISTCLEANFILES += service-manager-connect-nostart-tester
#############################
# Test stuff
#############################
XML_REPORT = loader-check-results.xml
HTML_REPORT = loader-check-results.html
loader-tester: test-loader libdummy-indicator-null.la libdummy-indicator-simple.la libdummy-indicator-entry-func.la Makefile
@echo "#!/bin/bash" > loader-tester
@echo $(XVFB_RUN) >> $@
@echo gtester -k --verbose -o=$(XML_REPORT) ./test-loader >> loader-tester
@chmod +x loader-tester
TESTS += loader-tester
DISTCLEANFILES += loader-tester
DISTCLEANFILES += $(XML_REPORT) $(HTML_REPORT)
#############################
# Indicator-ng
#############################
if USE_GTK3
org.ayatana.indicator.test.service: org.ayatana.indicator.test.service.in Makefile.am
sed -e "s|\@builddir\@|$(abs_builddir)|" $< > $@
check_PROGRAMS += test-indicator-ng
test_indicator_ng_SOURCES = test-indicator-ng.c
test_indicator_ng_CFLAGS = \
$(LIBINDICATOR_CFLAGS) \
-I$(top_srcdir) \
-DSRCDIR="\"$(srcdir)\"" \
-DBUILD_DIR="\"$(abs_builddir)\"" \
-Wall
test_indicator_ng_LDADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
TESTS += test-indicator-ng
DISTCLEANFILES += test-indicator-ng
# Mock indicator service
check_PROGRAMS += indicator-test-service
indicator_test_service_SOURCES = indicator-test-service.c
indicator_test_service_CFLAGS = $(LIBINDICATOR_CFLAGS)
indicator_test_service_LDADD = $(LIBINDICATOR_LIBS)
EXTRA_indicator_test_service_DEPENDENCIES = org.ayatana.indicator.test.service
DISTCLEANFILES += indicator-test-service org.ayatana.indicator.test.service
endif
libayatana-indicator-0.6.3/tests/org.ayatana.indicator.no-such-service 0000644 0000000 0000000 00000000117 13565237013 022746 0 ustar [Indicator Service]
Name=indicator-test
ObjectPath=/org/ayatana/indicator/test
libayatana-indicator-0.6.3/tests/org.ayatana.indicator.test 0000644 0000000 0000000 00000000211 13565237013 020706 0 ustar [Indicator Service]
Name=indicator-test
ObjectPath=/org/ayatana/indicator/test
[desktop]
ObjectPath=/org/ayatana/indicator/test/desktop
libayatana-indicator-0.6.3/tests/org.ayatana.indicator.test.service.in 0000644 0000000 0000000 00000000127 13565237013 022760 0 ustar [D-BUS Service]
Name=org.ayatana.indicator.test
Exec=@builddir@/indicator-test-service
libayatana-indicator-0.6.3/tests/run-xvfb.sh 0000644 0000000 0000000 00000001614 13565237013 015741 0 ustar if [ "$DISPLAY" == "" ]; then
Xvfb -ac -noreset -screen 0 800x600x16 -help 2>/dev/null 1>&2
XID=`for id in 101 102 103 104 105 106 107 197 199 211 223 227 293 307 308 309 310 311 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 4703 4721 4723 4729 4733 4751 9973 9974 9975 9976 9977 9978 9979 9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 ; do test -e /tmp/.X$id-lock || { echo $id; exit 0; }; done; exit 1`
{ Xvfb -ac -noreset -screen 0 800x600x16 :$XID -screen 0 800x600x16 -nolisten tcp -auth /dev/null >/dev/null 2>&1 & trap "kill -15 $! " 0 HUP INT QUIT TRAP USR1 PIPE TERM ; } || { echo "Gtk+Tests:ERROR: Failed to start Xvfb environment for X11 target tests."; exit 1; }
DISPLAY=:$XID
export DISPLAY
echo Setting display: $DISPLAY
fi
libayatana-indicator-0.6.3/tests/service-manager-connect.c 0000644 0000000 0000000 00000003540 13565237013 020501 0 ustar /*
Test for libindicator
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#include
#include "libindicator/indicator-service-manager.h"
static GMainLoop * mainloop = NULL;
static gboolean passed = FALSE;
gboolean
timeout (gpointer data)
{
passed = FALSE;
g_error("Timeout with no connection.");
g_main_loop_quit(mainloop);
return FALSE;
}
void
connection (IndicatorServiceManager * sm, gboolean connected, gpointer user_data)
{
static gboolean has_connected = FALSE;
if (has_connected && connected) {
g_warning("We got two connected signals. FAIL.");
passed = FALSE;
return;
}
if (!connected) {
g_debug("Not connected");
return;
}
has_connected = TRUE;
g_debug("Connection");
passed = TRUE;
g_main_loop_quit(mainloop);
return;
}
int
main (int argc, char ** argv)
{
g_log_set_always_fatal(G_LOG_LEVEL_CRITICAL);
IndicatorServiceManager * is = indicator_service_manager_new("org.ayatana.test");
g_signal_connect(G_OBJECT(is), INDICATOR_SERVICE_MANAGER_SIGNAL_CONNECTION_CHANGE, G_CALLBACK(connection), NULL);
g_timeout_add_seconds(1, timeout, NULL);
mainloop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(mainloop);
g_object_unref(is);
g_debug("Quiting");
if (passed) {
g_debug("Passed");
return 0;
}
g_debug("Failed");
return 1;
}
libayatana-indicator-0.6.3/tests/service-manager-connect-service.c 0000644 0000000 0000000 00000002710 13565237013 022135 0 ustar /*
Test for libindicator
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#include
#include "libindicator/indicator-service.h"
static GMainLoop * mainloop = NULL;
static gboolean passed = FALSE;
gboolean
timeout (gpointer data)
{
passed = FALSE;
g_debug("Timeout with no shutdown.");
g_main_loop_quit(mainloop);
return FALSE;
}
void
shutdown (void)
{
g_debug("Shutdown");
passed = TRUE;
g_main_loop_quit(mainloop);
return;
}
int
main (int argc, char ** argv)
{
g_debug("Starting service");
IndicatorService * is = indicator_service_new("org.ayatana.test");
g_signal_connect(G_OBJECT(is), INDICATOR_SERVICE_SIGNAL_SHUTDOWN, shutdown, NULL);
g_timeout_add_seconds(5, timeout, NULL);
mainloop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(mainloop);
g_debug("Quiting");
if (passed) {
g_debug("Passed");
return 0;
}
g_debug("Failed");
return 1;
}
libayatana-indicator-0.6.3/tests/service-manager-connect.service.in 0000644 0000000 0000000 00000000126 13565237013 022321 0 ustar [D-BUS Service]
Name=org.ayatana.test
Exec=@builddir@/service-manager-connect-service
libayatana-indicator-0.6.3/tests/service-manager-no-connect.c 0000644 0000000 0000000 00000003005 13565237013 021107 0 ustar /*
Test for libindicator
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#include
#include "libindicator/indicator-service-manager.h"
static GMainLoop * mainloop = NULL;
static gboolean passed = FALSE;
gboolean
timeout (gpointer data)
{
passed = TRUE;
g_debug("Timeout with no connection.");
g_main_loop_quit(mainloop);
return FALSE;
}
void
connection (void)
{
g_debug("Connection");
passed = FALSE;
g_main_loop_quit(mainloop);
return;
}
int
main (int argc, char ** argv)
{
g_log_set_always_fatal(G_LOG_LEVEL_CRITICAL);
IndicatorServiceManager * is = indicator_service_manager_new("my.test.name");
g_signal_connect(G_OBJECT(is), INDICATOR_SERVICE_MANAGER_SIGNAL_CONNECTION_CHANGE, connection, NULL);
g_timeout_add_seconds(1, timeout, NULL);
mainloop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(mainloop);
g_debug("Quiting");
if (passed) {
g_debug("Passed");
return 0;
}
g_debug("Failed");
return 1;
}
libayatana-indicator-0.6.3/tests/service-manager-nostart-connect.c 0000644 0000000 0000000 00000003564 13565237013 022177 0 ustar /*
Test for libindicator
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#include
#include "libindicator/indicator-service-manager.h"
static GMainLoop * mainloop = NULL;
static gboolean passed = FALSE;
gboolean
timeout (gpointer data)
{
passed = FALSE;
g_error("Timeout with no connection.");
g_main_loop_quit(mainloop);
return FALSE;
}
void
connection (IndicatorServiceManager * sm, gboolean connected, gpointer user_data)
{
static gboolean has_connected = FALSE;
if (has_connected && connected) {
g_warning("We got two connected signals. FAIL.");
passed = FALSE;
return;
}
if (!connected) {
g_debug("Not connected");
return;
}
has_connected = TRUE;
g_debug("Connection");
passed = TRUE;
g_main_loop_quit(mainloop);
return;
}
int
main (int argc, char ** argv)
{
g_log_set_always_fatal(G_LOG_LEVEL_CRITICAL);
g_usleep(150000);
IndicatorServiceManager * is = indicator_service_manager_new("org.ayatana.test");
g_signal_connect(G_OBJECT(is), INDICATOR_SERVICE_MANAGER_SIGNAL_CONNECTION_CHANGE, G_CALLBACK(connection), NULL);
g_timeout_add_seconds(1, timeout, NULL);
mainloop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(mainloop);
g_object_unref(is);
g_debug("Quiting");
if (passed) {
g_debug("Passed");
return 0;
}
g_debug("Failed");
return 1;
}
libayatana-indicator-0.6.3/tests/service-shutdown-timeout.c 0000644 0000000 0000000 00000002645 13565237013 021004 0 ustar /*
Test for libindicator
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#include
#include "libindicator/indicator-service.h"
static GMainLoop * mainloop = NULL;
static gboolean passed = FALSE;
gboolean
timeout (gpointer data)
{
passed = FALSE;
g_error("Timeout with no shutdown.");
g_main_loop_quit(mainloop);
return FALSE;
}
void
shutdown (void)
{
g_debug("Shutdown");
passed = TRUE;
g_main_loop_quit(mainloop);
return;
}
int
main (int argc, char ** argv)
{
IndicatorService * is = indicator_service_new("my.test.name");
g_signal_connect(G_OBJECT(is), INDICATOR_SERVICE_SIGNAL_SHUTDOWN, shutdown, NULL);
g_timeout_add_seconds(2, timeout, NULL);
mainloop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(mainloop);
g_debug("Quiting");
if (passed) {
g_debug("Passed");
return 0;
}
g_debug("Failed");
return 1;
}
libayatana-indicator-0.6.3/tests/service-version-bad-service.c 0000644 0000000 0000000 00000002761 13565237013 021313 0 ustar /*
Test for libindicator
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#include
#include "libindicator/indicator-service.h"
#include "service-version-values.h"
static GMainLoop * mainloop = NULL;
static gboolean passed = FALSE;
gboolean
timeout (gpointer data)
{
passed = FALSE;
g_debug("Timeout with no shutdown.");
g_main_loop_quit(mainloop);
return FALSE;
}
void
shutdown (void)
{
g_debug("Shutdown");
passed = TRUE;
g_main_loop_quit(mainloop);
return;
}
int
main (int argc, char ** argv)
{
IndicatorService * is = indicator_service_new_version("org.ayatana.version.bad", SERVICE_VERSION_BAD);
g_signal_connect(G_OBJECT(is), INDICATOR_SERVICE_SIGNAL_SHUTDOWN, shutdown, NULL);
g_timeout_add_seconds(1, timeout, NULL);
mainloop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(mainloop);
g_debug("Quiting");
if (passed) {
g_debug("Passed");
return 0;
}
g_debug("Failed");
return 1;
}
libayatana-indicator-0.6.3/tests/service-version-bad.service.in 0000644 0000000 0000000 00000000131 13565237013 021465 0 ustar [D-BUS Service]
Name=org.ayatana.version.bad
Exec=@builddir@/service-version-bad-service
libayatana-indicator-0.6.3/tests/service-version-good-service.c 0000644 0000000 0000000 00000003173 13565237013 021513 0 ustar /*
Test for libindicator
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#include
#include "libindicator/indicator-service.h"
#include "service-version-values.h"
static GMainLoop * mainloop = NULL;
static gboolean passed = FALSE;
static IndicatorService * is = NULL;
gboolean
timeout (gpointer data)
{
passed = FALSE;
g_debug("Timeout with no shutdown.");
if (is != NULL) {
g_object_unref(is);
is = NULL;
}
g_main_loop_quit(mainloop);
return FALSE;
}
void
shutdown (void)
{
g_debug("Shutdown");
passed = TRUE;
if (is != NULL) {
g_object_unref(is);
is = NULL;
}
g_main_loop_quit(mainloop);
return;
}
int
main (int argc, char ** argv)
{
is = indicator_service_new_version("org.ayatana.version.good", SERVICE_VERSION_GOOD);
g_signal_connect(G_OBJECT(is), INDICATOR_SERVICE_SIGNAL_SHUTDOWN, shutdown, NULL);
g_timeout_add_seconds(1, timeout, NULL);
mainloop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(mainloop);
g_debug("Quiting");
if (passed) {
g_debug("Passed");
return 0;
}
g_debug("Failed");
return 1;
}
libayatana-indicator-0.6.3/tests/service-version-good.service.in 0000644 0000000 0000000 00000000133 13565237013 021671 0 ustar [D-BUS Service]
Name=org.ayatana.version.good
Exec=@builddir@/service-version-good-service
libayatana-indicator-0.6.3/tests/service-version-manager.c 0000644 0000000 0000000 00000004400 13565237013 020531 0 ustar /*
Test for libindicator
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#include
#include "libindicator/indicator-service-manager.h"
#include "service-version-values.h"
static GMainLoop * mainloop = NULL;
static gboolean con_good = FALSE;
static gboolean con_bad = FALSE;
gboolean
timeout (gpointer data)
{
g_debug("Timeout.");
g_main_loop_quit(mainloop);
return FALSE;
}
void
connection_bad (IndicatorServiceManager * sm, gboolean connected, gpointer user_data)
{
if (!connected) return;
g_debug("Connection From Bad!");
con_bad = TRUE;
return;
}
void
connection_good (IndicatorServiceManager * sm, gboolean connected, gpointer user_data)
{
if (!connected) return;
g_debug("Connection From Good.");
con_good = TRUE;
return;
}
int
main (int argc, char ** argv)
{
g_log_set_always_fatal(G_LOG_LEVEL_CRITICAL);
g_print("Manager: DBUS_SESSION_BUS_ADDRESS = %s\n", g_getenv("DBUS_SESSION_BUS_ADDRESS"));
IndicatorServiceManager * goodis = indicator_service_manager_new_version("org.ayatana.version.good", SERVICE_VERSION_GOOD);
g_signal_connect(G_OBJECT(goodis), INDICATOR_SERVICE_MANAGER_SIGNAL_CONNECTION_CHANGE, G_CALLBACK(connection_good), NULL);
IndicatorServiceManager * badis = indicator_service_manager_new_version("org.ayatana.version.bad", SERVICE_VERSION_GOOD);
g_signal_connect(G_OBJECT(badis), INDICATOR_SERVICE_MANAGER_SIGNAL_CONNECTION_CHANGE, G_CALLBACK(connection_bad), NULL);
g_timeout_add_seconds(1, timeout, NULL);
mainloop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(mainloop);
g_object_unref(goodis);
g_object_unref(badis);
g_debug("Quiting");
if (con_good && !con_bad) {
g_debug("Passed");
return 0;
}
g_debug("Failed");
return 1;
}
libayatana-indicator-0.6.3/tests/service-version-multiwatch-manager.c 0000644 0000000 0000000 00000003722 13565237013 022716 0 ustar /*
Test for libindicator
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#include
#include "libindicator/indicator-service-manager.h"
#include "service-version-values.h"
static GMainLoop * mainloop = NULL;
static gboolean passed = FALSE;
static IndicatorServiceManager * goodis = NULL;
gboolean
timeout (gpointer data)
{
g_debug("Timeout.");
passed = FALSE;
g_main_loop_quit(mainloop);
return FALSE;
}
void
connection_good (IndicatorServiceManager * sm, gboolean connected, gpointer user_data)
{
if (!connected) return;
g_debug("Connection From Service.");
passed = TRUE;
g_main_loop_quit(mainloop);
return;
}
gboolean
delay_start (gpointer data)
{
g_debug("Starting Manager");
goodis = indicator_service_manager_new_version("org.ayatana.version.good", SERVICE_VERSION_GOOD);
g_signal_connect(G_OBJECT(goodis), INDICATOR_SERVICE_MANAGER_SIGNAL_CONNECTION_CHANGE, G_CALLBACK(connection_good), NULL);
g_timeout_add_seconds(1, timeout, NULL);
return FALSE;
}
int
main (int argc, char ** argv)
{
g_log_set_always_fatal(G_LOG_LEVEL_CRITICAL);
g_print("Manager: DBUS_SESSION_BUS_ADDRESS = %s\n", g_getenv("DBUS_SESSION_BUS_ADDRESS"));
g_timeout_add(500, delay_start, NULL);
mainloop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(mainloop);
g_object_unref(goodis);
g_debug("Quiting");
if (passed) {
g_debug("Passed");
return 0;
}
g_debug("Failed");
return 1;
}
libayatana-indicator-0.6.3/tests/service-version-multiwatch-manager-impolite.c 0000644 0000000 0000000 00000003670 13565237013 024540 0 ustar /*
Test for libindicator
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#include
#include "libindicator/indicator-service-manager.h"
#include "service-version-values.h"
static GMainLoop * mainloop = NULL;
static gboolean passed = FALSE;
static IndicatorServiceManager * goodis = NULL;
gboolean
timeout (gpointer data)
{
g_debug("Timeout.");
passed = FALSE;
g_main_loop_quit(mainloop);
return FALSE;
}
void
connection_good (IndicatorServiceManager * sm, gboolean connected, gpointer user_data)
{
if (!connected) return;
g_debug("Connection From Service.");
passed = TRUE;
g_main_loop_quit(mainloop);
return;
}
gboolean
delay_start (gpointer data)
{
g_debug("Starting Manager");
goodis = indicator_service_manager_new_version("org.ayatana.version.good", SERVICE_VERSION_GOOD);
g_signal_connect(G_OBJECT(goodis), INDICATOR_SERVICE_MANAGER_SIGNAL_CONNECTION_CHANGE, G_CALLBACK(connection_good), NULL);
g_timeout_add_seconds(1, timeout, NULL);
return FALSE;
}
int
main (int argc, char ** argv)
{
g_log_set_always_fatal(G_LOG_LEVEL_CRITICAL);
g_print("Manager: DBUS_SESSION_BUS_ADDRESS = %s\n", g_getenv("DBUS_SESSION_BUS_ADDRESS"));
g_timeout_add(500, delay_start, NULL);
mainloop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(mainloop);
g_debug("Quiting");
if (passed) {
g_debug("Passed");
return 0;
}
g_debug("Failed");
return 1;
}
libayatana-indicator-0.6.3/tests/service-version-multiwatch-service.c 0000644 0000000 0000000 00000003022 13565237013 022735 0 ustar /*
Test for libindicator
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#include
#include "libindicator/indicator-service.h"
#include "service-version-values.h"
static GMainLoop * mainloop = NULL;
static gboolean passed = FALSE;
gboolean
timeout (gpointer data)
{
passed = FALSE;
g_debug("Timeout with no shutdown.");
g_main_loop_quit(mainloop);
return FALSE;
}
void
shutdown (void)
{
g_debug("Shutdown");
passed = TRUE;
g_main_loop_quit(mainloop);
return;
}
int
main (int argc, char ** argv)
{
g_debug("Service starting");
IndicatorService * is = indicator_service_new_version("org.ayatana.version.good", SERVICE_VERSION_GOOD);
g_signal_connect(G_OBJECT(is), INDICATOR_SERVICE_SIGNAL_SHUTDOWN, shutdown, NULL);
g_timeout_add_seconds(2, timeout, NULL);
mainloop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(mainloop);
g_debug("Quiting");
if (passed) {
g_debug("Passed");
return 0;
}
g_debug("Failed");
return 1;
}
libayatana-indicator-0.6.3/tests/service-version-values.h 0000644 0000000 0000000 00000001345 13565237013 020430 0 ustar /*
Test for libindicator
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#define SERVICE_VERSION_GOOD 1342
#define SERVICE_VERSION_BAD 543
libayatana-indicator-0.6.3/tests/session.conf.in 0000644 0000000 0000000 00000003162 13565237013 016575 0 ustar
session
unix:tmpdir=/tmp
@servicedir@
60000
1000000000
1000000000
1000000000
120000
240000
100000
10000
100000
10000
50000
50000
50000
300000
libayatana-indicator-0.6.3/tests/test-desktop-shortcuts.c 0000644 0000000 0000000 00000010074 13565237013 020464 0 ustar /*
Test for libindicator
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#include
#include "libindicator/indicator-desktop-shortcuts.h"
/* Basic object creation and destruction. Stop big
f*** ups here. */
void
test_desktop_shortcuts_creation (void)
{
IndicatorDesktopShortcuts * ids = indicator_desktop_shortcuts_new(SRCDIR "/test-well-formed.desktop", "France");
g_assert(ids != NULL);
g_object_add_weak_pointer(G_OBJECT(ids), (gpointer *)&ids);
g_object_unref(G_OBJECT(ids));
g_assert(ids == NULL);
return;
}
/* Tests that the NotShowIn the desktop group is watched
for */
void
test_desktop_shortcuts_globalnoshow (void)
{
IndicatorDesktopShortcuts * ids = indicator_desktop_shortcuts_new(SRCDIR "/test-well-formed.desktop", "Germany");
g_assert(ids != NULL);
const gchar ** nicks = indicator_desktop_shortcuts_get_nicks(ids);
g_assert(nicks[0] == NULL);
g_object_unref(ids);
return;
}
gboolean
nicks_contains (const gchar ** nicks, const gchar * search)
{
if (nicks[0] == NULL)
return FALSE;
if (g_strcmp0(nicks[0], search) == 0)
return TRUE;
return nicks_contains(&nicks[1], search);
}
/* Checking that the local show OnlyIn works. */
void
test_desktop_shortcuts_localfilter (void)
{
IndicatorDesktopShortcuts * ids = indicator_desktop_shortcuts_new(SRCDIR "/test-well-formed.desktop", "France");
g_assert(ids != NULL);
const gchar ** nicks = indicator_desktop_shortcuts_get_nicks(ids);
g_assert(nicks_contains(nicks, "bob"));
g_assert(nicks_contains(nicks, "alvin"));
g_assert(!nicks_contains(nicks, "jim"));
g_object_unref(ids);
return;
}
/* Nick names -- checks to see they all have names */
void
test_desktop_shortcuts_nicknames (void)
{
IndicatorDesktopShortcuts * ids = indicator_desktop_shortcuts_new(SRCDIR "/test-well-formed.desktop", "France");
g_assert(ids != NULL);
const gchar ** nicks = indicator_desktop_shortcuts_get_nicks(ids);
gint i = 0;
while (nicks[i] != NULL) {
gchar * expectedstr = g_strdup_printf("%s's shortcut", nicks[i]);
gchar * name = indicator_desktop_shortcuts_nick_get_name(ids, nicks[i]);
g_assert(name != NULL);
gboolean same = (g_strcmp0(expectedstr, name) == 0);
g_free(name);
g_free(expectedstr);
g_assert(same);
i++;
}
g_object_unref(ids);
return;
}
/* Try executing a shortcut which will touch a file */
void
test_desktop_shortcuts_launch (void)
{
return;
IndicatorDesktopShortcuts * ids = indicator_desktop_shortcuts_new(SRCDIR "/test-well-formed.desktop", "TouchTest");
g_assert(ids != NULL);
const gchar ** nicks = indicator_desktop_shortcuts_get_nicks(ids);
g_assert(nicks_contains(nicks, "touch"));
g_assert(indicator_desktop_shortcuts_nick_exec_with_context(ids, "touch", NULL));
g_usleep(100000);
g_assert(g_file_test(BUILD_DIR "/test-desktop-shortcuts-touch-test", G_FILE_TEST_EXISTS));
g_object_unref(ids);
return;
}
/* Build our test suite */
void
test_desktop_shortcuts_suite (void)
{
g_test_add_func ("/libindicator/desktopshortcuts/creation", test_desktop_shortcuts_creation);
g_test_add_func ("/libindicator/desktopshortcuts/globalnosho", test_desktop_shortcuts_globalnoshow);
g_test_add_func ("/libindicator/desktopshortcuts/nicknames", test_desktop_shortcuts_nicknames);
g_test_add_func ("/libindicator/desktopshortcuts/launch", test_desktop_shortcuts_launch);
return;
}
int
main (int argc, char ** argv)
{
g_test_init (&argc, &argv, NULL);
gtk_init(&argc, &argv);
test_desktop_shortcuts_suite();
g_log_set_always_fatal(G_LOG_LEVEL_CRITICAL);
return g_test_run();
}
libayatana-indicator-0.6.3/tests/test-indicator-ng.c 0000644 0000000 0000000 00000011771 13565237013 017342 0 ustar
#include
static void
indicator_ng_test_func (gconstpointer user_data)
{
GTestFunc test_func = user_data;
GTestDBus *bus;
bus = g_test_dbus_new (G_TEST_DBUS_NONE);
g_test_dbus_add_service_dir (bus, BUILD_DIR);
g_test_dbus_up (bus);
test_func ();
g_test_dbus_down (bus);
g_object_unref (bus);
}
#define indicator_ng_test_add(name, test_func) \
g_test_add_data_func ("/indicator-ng/" name, test_func, indicator_ng_test_func)
static gboolean
stop_main_loop (gpointer user_data)
{
GMainLoop *loop = user_data;
g_main_loop_quit (loop);
return FALSE;
}
static void
test_non_existing (void)
{
IndicatorNg *indicator;
GError *error = NULL;
indicator = indicator_ng_new (SRCDIR "/org.ayatana.does.not.exist.indicator", &error);
g_assert (indicator == NULL);
g_assert_error (error, G_FILE_ERROR, G_FILE_ERROR_NOENT);
g_clear_error (&error);
}
static void
test_instantiation (void)
{
IndicatorNg *indicator;
GError *error = NULL;
GMainLoop *loop;
indicator = indicator_ng_new (SRCDIR "/org.ayatana.indicator.no-such-service", &error);
g_assert (indicator);
g_assert (error == NULL);
g_assert_cmpstr (indicator_ng_get_service_file (indicator), ==, SRCDIR "/org.ayatana.indicator.no-such-service");
g_assert_cmpstr (indicator_ng_get_profile (indicator), ==, "desktop");
{
gchar *service_file;
gchar *profile;
g_object_get (indicator, "service-file", &service_file,
"profile", &profile,
NULL);
g_assert_cmpstr (service_file, ==, SRCDIR "/org.ayatana.indicator.no-such-service");
g_assert_cmpstr (profile, ==, "desktop");
g_free (service_file);
g_free (profile);
}
loop = g_main_loop_new (NULL, FALSE);
g_timeout_add (200, stop_main_loop, loop);
g_main_loop_run (loop);
/* no such service, so there shouldn't be any indicators */
g_assert (indicator_object_get_entries (INDICATOR_OBJECT (indicator)) == NULL);
g_main_loop_unref (loop);
g_object_unref (indicator);
}
static void
test_instantiation_with_profile (void)
{
IndicatorNg *indicator;
GError *error = NULL;
indicator = indicator_ng_new_for_profile (SRCDIR "/org.ayatana.indicator.test", "greeter", &error);
g_assert (indicator);
g_assert (error == NULL);
g_assert_cmpstr (indicator_ng_get_profile (indicator), ==, "greeter");
g_object_unref (indicator);
}
/* From gtk+/testsuite/gtk/gtkmenu.c
*
* Returns the label of a GtkModelMenuItem, for which
* gtk_menu_item_get_label() returns NULL, because it uses its own
* widgets to accommodate an icon.
*
*/
static const gchar *
get_label (GtkMenuItem *item)
{
GList *children = gtk_container_get_children (GTK_CONTAINER (item));
const gchar *label = NULL;
while (children)
{
if (GTK_IS_CONTAINER (children->data))
children = g_list_concat (children, gtk_container_get_children (children->data));
else if (GTK_IS_LABEL (children->data))
label = gtk_label_get_text (children->data);
children = g_list_delete_link (children, children);
}
return label;
}
static void
test_menu (void)
{
IndicatorNg *indicator;
GError *error = NULL;
GMainLoop *loop;
GList *entries;
IndicatorObjectEntry *entry;
indicator = indicator_ng_new (SRCDIR "/org.ayatana.indicator.test", &error);
g_assert (indicator);
g_assert (error == NULL);
loop = g_main_loop_new (NULL, FALSE);
g_timeout_add (500, stop_main_loop, loop);
g_main_loop_run (loop);
entries = indicator_object_get_entries (INDICATOR_OBJECT (indicator));
g_assert_cmpint (g_list_length (entries), ==, 1);
entry = entries->data;
g_assert_cmpstr (entry->name_hint, ==, "indicator-test");
g_assert_cmpstr (entry->accessible_desc, ==, "Test indicator");
g_assert_cmpstr (gtk_label_get_label (entry->label), ==, "Test");
g_assert (gtk_image_get_storage_type (entry->image) == GTK_IMAGE_ICON_NAME);
{
GList *children;
GtkMenuItem *item;
g_assert (entry->menu != NULL);
children = gtk_container_get_children (GTK_CONTAINER (entry->menu));
g_assert_cmpint (g_list_length (children), ==, 1);
item = children->data;
g_assert (GTK_IS_MENU_ITEM (item));
g_assert (gtk_widget_is_sensitive (GTK_WIDGET (item)));
g_assert_cmpstr (get_label (item), ==, "Show");
g_list_free (children);
}
g_list_free (entries);
g_main_loop_unref (loop);
g_object_unref (indicator);
}
int
main (int argc, char **argv)
{
/* gvfs, dconf, and appmenu-gtk leak GDbusConnections, which confuses
* g_test_dbus_down. Make sure we're not using any of those.
*/
g_setenv ("GIO_USE_VFS", "local", TRUE);
g_setenv ("GSETTINGS_BACKEND", "memory", TRUE);
g_unsetenv ("UBUNTU_MENUPROXY");
g_test_init (&argc, &argv, NULL);
gtk_init (&argc, &argv);
indicator_ng_test_add ("non-existing", test_non_existing);
indicator_ng_test_add ("instantiation", test_instantiation);
indicator_ng_test_add ("instantiation-with-profile", test_instantiation_with_profile);
indicator_ng_test_add ("menu", test_menu);
return g_test_run ();
}
libayatana-indicator-0.6.3/tests/test-loader.c 0000644 0000000 0000000 00000025353 13565237013 016233 0 ustar /*
Test for libindicator
Copyright 2009 Canonical Ltd.
Authors:
Ted Gould
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.0 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License version 3.0 for more details.
You should have received a copy of the GNU General Public
License along with this library. If not, see
.
*/
#include
#include "libayatana-indicator/indicator-object.h"
#include "dummy-indicator-entry-func.h"
void
entry_func_swap (IndicatorObject * io)
{
static void (*saved_func) (IndicatorObject * io, IndicatorObjectEntry * entry, guint windowid, guint timestamp) = NULL;
IndicatorObjectClass * klass = INDICATOR_OBJECT_GET_CLASS(io);
if (saved_func == NULL) {
saved_func = klass->entry_activate_window;
}
if (klass->entry_activate_window == NULL) {
klass->entry_activate_window = saved_func;
} else {
klass->entry_activate_window = NULL;
}
return;
}
void
test_loader_entry_func_window (void)
{
IndicatorObject * object = indicator_object_new_from_file(BUILD_DIR "/.libs/libdummy-indicator-entry-func.so");
g_assert(object != NULL);
DummyIndicatorEntryFunc * entryfunc = (DummyIndicatorEntryFunc *)(object);
entryfunc->entry_activate_called = FALSE;
entryfunc->entry_activate_window_called = FALSE;
entryfunc->entry_close_called = FALSE;
entry_func_swap(object);
indicator_object_entry_activate_window(object, NULL, 0, 0);
g_assert(entryfunc->entry_activate_called);
entry_func_swap(object);
indicator_object_entry_activate_window(object, NULL, 0, 0);
g_assert(entryfunc->entry_activate_window_called);
g_object_unref(object);
return;
}
void
test_loader_entry_funcs (void)
{
IndicatorObject * object = indicator_object_new_from_file(BUILD_DIR "/.libs/libdummy-indicator-entry-func.so");
g_assert(object != NULL);
DummyIndicatorEntryFunc * entryfunc = (DummyIndicatorEntryFunc *)(object);
entryfunc->entry_activate_called = FALSE;
entryfunc->entry_activate_window_called = FALSE;
entryfunc->entry_close_called = FALSE;
indicator_object_entry_activate(object, NULL, 0);
g_assert(entryfunc->entry_activate_called);
indicator_object_entry_activate_window(object, NULL, 0, 0);
g_assert(entryfunc->entry_activate_window_called);
indicator_object_entry_close(object, NULL, 0);
g_assert(entryfunc->entry_close_called);
g_object_unref(object);
return;
}
void destroy_cb (gpointer data, GObject * object);
void
entry_change_cb (IndicatorObject * io, IndicatorObjectEntry * entry, gpointer data)
{
IndicatorObjectEntry *other_entry = data;
other_entry->name_hint = entry->name_hint;
other_entry->parent_object = entry->parent_object;
return;
}
void
entry_move_cb (IndicatorObject * io, IndicatorObjectEntry * entry, gint old, gint new, gpointer data)
{
return entry_change_cb(io, entry, data);
}
void
test_loader_filename_dummy_signaler (void)
{
IndicatorObject * object = indicator_object_new_from_file(BUILD_DIR "/.libs/libdummy-indicator-signaler.so");
g_assert(object != NULL);
IndicatorObjectEntry *added_entry, *moved_entry, *removed_entry;
IndicatorObjectEntry entries[3];
added_entry = &entries[0];
moved_entry = &entries[1];
removed_entry = &entries[2];
g_signal_connect_after(G_OBJECT(object), INDICATOR_OBJECT_SIGNAL_ENTRY_ADDED, G_CALLBACK(entry_change_cb), added_entry);
g_signal_connect_after(G_OBJECT(object), INDICATOR_OBJECT_SIGNAL_ENTRY_MOVED, G_CALLBACK(entry_move_cb), moved_entry);
g_signal_connect_after(G_OBJECT(object), INDICATOR_OBJECT_SIGNAL_ENTRY_REMOVED, G_CALLBACK(entry_change_cb), removed_entry);
GList * list = indicator_object_get_entries(object);
g_assert(list != NULL);
g_list_free(list);
while (g_main_context_pending(NULL)) {
g_main_context_iteration(NULL, TRUE);
}
g_assert(g_strcmp0(added_entry->name_hint, "added") == 0);
g_assert(g_strcmp0(removed_entry->name_hint, "removed") == 0);
g_assert(g_strcmp0(moved_entry->name_hint, "moved") == 0);
g_assert(added_entry->parent_object == object);
g_assert(removed_entry->parent_object == NULL);
g_object_unref(object);
return;
}
/***
****
***/
static void
visible_entry_added (IndicatorObject * io, IndicatorObjectEntry * entry, gpointer box)
{
GtkWidget * child = GTK_WIDGET (entry->label);
g_assert (child != NULL);
if (g_object_get_data (G_OBJECT(child), "frame-parent") == NULL)
{
GtkWidget * frame = gtk_frame_new (NULL);
gtk_container_add (GTK_CONTAINER(frame), child);
gtk_box_pack_start (GTK_BOX(box), frame, FALSE, FALSE, 0);
g_object_set_data (G_OBJECT(child), "frame-parent", frame);
}
}
static void
visible_entry_removed (IndicatorObject * io, IndicatorObjectEntry * entry, gpointer box)
{
GtkWidget * child = GTK_WIDGET (entry->label);
g_assert (child != NULL);
g_assert (g_object_get_data (G_OBJECT(child), "frame-parent") != NULL);
}
void
test_loader_filename_dummy_visible (void)
{
const GQuark is_hidden_quark = g_quark_from_static_string ("is-hidden");
IndicatorObject * object = indicator_object_new_from_file(BUILD_DIR "/.libs/libdummy-indicator-visible.so");
g_assert(object != NULL);
// create our local parent widgetry
#if GTK_CHECK_VERSION(3,0,0)
GtkWidget * box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
#else
GtkWidget * box = gtk_hbox_new (TRUE, 0);
#endif
g_signal_connect(object, INDICATOR_OBJECT_SIGNAL_ENTRY_ADDED,
G_CALLBACK(visible_entry_added), box);
g_signal_connect(object, INDICATOR_OBJECT_SIGNAL_ENTRY_REMOVED,
G_CALLBACK(visible_entry_removed), box);
// on startup, DummyVisible has one entry and it has a label
GList * list = indicator_object_get_entries(object);
g_assert(g_list_length(list) == 1);
IndicatorObjectEntry * entry = list->data;
g_assert(entry != NULL);
g_list_free(list);
g_assert(GTK_IS_LABEL(entry->label));
g_assert(entry->parent_object == object);
g_assert(INDICATOR_IS_OBJECT(entry->parent_object));
GtkWidget * label = GTK_WIDGET(entry->label);
g_assert(g_object_get_qdata(G_OBJECT(label), is_hidden_quark) == NULL);
// add the inital entry to our local parent widgetry
visible_entry_added (object, entry, box);
entry = NULL;
list = gtk_container_get_children (GTK_CONTAINER(box));
g_assert(g_list_length(list) == 1);
g_list_free(list);
// hide the entries and confirm that the label survived
indicator_object_set_visible (object, FALSE);
while (g_main_context_pending(NULL))
g_main_context_iteration(NULL, TRUE);
g_assert(GTK_IS_LABEL(label));
g_assert(g_object_get_qdata(G_OBJECT(label), is_hidden_quark) != NULL);
list = gtk_container_get_children (GTK_CONTAINER(box));
g_assert(g_list_length(list) == 1);
g_list_free(list);
// restore the entries and confirm that the label survived
indicator_object_set_visible (object, TRUE);
while (g_main_context_pending(NULL))
g_main_context_iteration(NULL, TRUE);
g_assert(GTK_IS_LABEL(label));
g_assert(g_object_get_qdata(G_OBJECT(label), is_hidden_quark) == NULL);
list = gtk_container_get_children (GTK_CONTAINER(box));
g_assert(g_list_length(list) == 1);
g_list_free(list);
// cleanup
g_object_unref(object);
gtk_widget_destroy(box);
}
/***
****
***/
void
test_loader_filename_dummy_simple_location (void)
{
IndicatorObject * object = indicator_object_new_from_file(BUILD_DIR "/.libs/libdummy-indicator-simple.so");
g_assert(object != NULL);
GList * entries = indicator_object_get_entries(object);
g_assert(entries != NULL);
g_assert(g_list_length(entries) == 1);
IndicatorObjectEntry *entry = entries->data;
g_assert(indicator_object_get_location(object, entry) == 0);
g_assert(indicator_object_get_location(object, NULL) == 0);
g_assert(entry->parent_object == object);
g_object_unref(object);
return;
}
void
test_loader_filename_dummy_simple_accessors (void)
{
IndicatorObject * object = indicator_object_new_from_file(BUILD_DIR "/.libs/libdummy-indicator-simple.so");
g_assert(object != NULL);
g_assert(indicator_object_get_entries(object) != NULL);
g_object_unref(object);
return;
}
void
test_loader_filename_dummy_simple (void)
{
IndicatorObject * object = indicator_object_new_from_file(BUILD_DIR "/.libs/libdummy-indicator-simple.so");
g_assert(object != NULL);
gboolean unreffed = FALSE;
g_object_weak_ref(G_OBJECT(object), destroy_cb, &unreffed);
g_object_unref(object);
g_assert(unreffed == TRUE);
return;
}
void
test_loader_filename_dummy_blank (void)
{
IndicatorObject * object = indicator_object_new_from_file(BUILD_DIR "/.libs/libdummy-indicator-blank.so");
g_assert(object == NULL);
return;
}
void
test_loader_filename_dummy_null (void)
{
IndicatorObject * object = indicator_object_new_from_file(BUILD_DIR "/.libs/libdummy-indicator-null.so");
g_assert(object != NULL);
g_assert(indicator_object_get_entries(object) == NULL);
g_object_unref(G_OBJECT(object));
return;
}
void
test_loader_filename_bad (void)
{
IndicatorObject * object = indicator_object_new_from_file("/this/file/should/not/exist.so");
g_assert(object == NULL);
return;
}
void
destroy_cb (gpointer data, GObject * object)
{
gboolean * bob = (gboolean *)data;
*bob = TRUE;
return;
}
void
test_loader_refunref (void)
{
GObject * object = g_object_new(INDICATOR_OBJECT_TYPE, NULL);
gboolean unreffed = FALSE;
g_object_weak_ref(object, destroy_cb, &unreffed);
g_object_unref(object);
g_assert(unreffed == TRUE);
return;
}
void
test_loader_creation_deletion_suite (void)
{
g_test_add_func ("/libindicator/loader/ref_and_unref", test_loader_refunref);
g_test_add_func ("/libindicator/loader/filename_bad", test_loader_filename_bad);
g_test_add_func ("/libindicator/loader/dummy/null_load", test_loader_filename_dummy_null);
g_test_add_func ("/libindicator/loader/dummy/blank_load", test_loader_filename_dummy_null);
g_test_add_func ("/libindicator/loader/dummy/simple_load", test_loader_filename_dummy_simple);
g_test_add_func ("/libindicator/loader/dummy/simple_accessors", test_loader_filename_dummy_simple_accessors);
g_test_add_func ("/libindicator/loader/dummy/simple_location", test_loader_filename_dummy_simple_location);
g_test_add_func ("/libindicator/loader/dummy/signaler", test_loader_filename_dummy_signaler);
g_test_add_func ("/libindicator/loader/dummy/entry_funcs", test_loader_entry_funcs);
g_test_add_func ("/libindicator/loader/dummy/entry_func_window", test_loader_entry_func_window);
g_test_add_func ("/libindicator/loader/dummy/visible", test_loader_filename_dummy_visible);
return;
}
int
main (int argc, char ** argv)
{
g_test_init (&argc, &argv, NULL);
gtk_init(&argc, &argv);
test_loader_creation_deletion_suite();
g_log_set_always_fatal(G_LOG_LEVEL_CRITICAL);
return g_test_run();
}
libayatana-indicator-0.6.3/tests/test-well-formed.desktop 0000644 0000000 0000000 00000000617 13565237013 020425 0 ustar [Desktop Entry]
Name=My Application
Exec=ls
NotShowIn=Germany
Actions=bob;alvin;jim;touch
[Desktop Action bob]
Name=bob's shortcut
Exec=ls bob
[Desktop Action alvin]
Name=alvin's shortcut
Exec=ls alvin
OnlyShowIn=France
[Desktop Action jim]
Name=Jim's shortcut
Exec=ls jim
NotShowIn=France
[Desktop Action touch]
Name=Touch Test
Exec=touch test-desktop-shortcuts-touch-test
OnlyShowIn=TouchTest
libayatana-indicator-0.6.3/tools/80indicator-debugging 0000644 0000000 0000000 00000001173 13565237013 017634 0 ustar # These are environment variables that effect the behavior of
# libayatana-indicator's service manager and ayatana-indicator
# service objects. They turn off various robustness features
# that make debugging difficult and are not recommended for
# daily use. Development use only!
# To use: either copy or symbolicly link this file to the
# Xsession dictory. Specifically: /etc/X11/Xsession.d
# Timeout after 1 minute
export INDICATOR_SERVICE_SHUTDOWN_TIMEOUT=60000
# If no one connects, still stay alive
export INDICATOR_ALLOW_NO_WATCHERS=1
# Don't restart the services if they crash
export INDICATOR_SERVICE_RESTART_DISABLE=1
libayatana-indicator-0.6.3/tools/indicator-loader.c 0000644 0000000 0000000 00000024237 13565237013 017226 0 ustar /*
* A small test loader for loading indicators in test suites
* and during development of them.
*
* Copyright 2009 Canonical Ltd.
*
* Authors:
* Ted Gould
* Lars Uebernickel
* Charles Kerr
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* version 3.0 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License version 3.0 for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library. If not, see
* .
*/
#include
#include
#include
#if GTK_CHECK_VERSION (3,0,0)
#include
#endif
static GHashTable * entry_to_menu_item = NULL;
G_DEFINE_QUARK (indicator_loader, entry_data)
static void
activate_entry (GtkWidget * widget, gpointer user_data)
{
gpointer entry;
g_return_if_fail (INDICATOR_IS_OBJECT(user_data));
entry = g_object_get_qdata (G_OBJECT(widget), entry_data_quark());
if (entry == NULL)
{
g_debug("Activation on: (null)");
}
else
{
indicator_object_entry_activate (INDICATOR_OBJECT(user_data),
entry,
gtk_get_current_event_time());
}
}
static void
scroll_entry (GtkWidget *widget, GdkEventScroll* event, gpointer user_data)
{
gpointer entry;
g_return_if_fail (INDICATOR_IS_OBJECT(user_data));
entry = g_object_get_qdata (G_OBJECT(widget), entry_data_quark());
IndicatorScrollDirection direction = G_MAXINT;
switch (event->direction)
{
case GDK_SCROLL_UP:
direction = INDICATOR_OBJECT_SCROLL_UP;
break;
case GDK_SCROLL_DOWN:
direction = INDICATOR_OBJECT_SCROLL_DOWN;
break;
case GDK_SCROLL_LEFT:
direction = INDICATOR_OBJECT_SCROLL_LEFT;
break;
case GDK_SCROLL_RIGHT:
direction = INDICATOR_OBJECT_SCROLL_RIGHT;
break;
default:
break;
}
if (entry == NULL)
{
g_debug("Scroll on: (null)");
}
else if (direction == G_MAXINT)
{
g_debug("Scroll direction not supported");
}
else
{
g_signal_emit_by_name(INDICATOR_OBJECT(user_data),
INDICATOR_OBJECT_SIGNAL_ENTRY_SCROLLED,
entry, 1, direction);
}
}
static GtkWidget*
create_menu_item (IndicatorObjectEntry * entry)
{
GtkWidget * menu_item;
GtkWidget * hbox;
gpointer w;
menu_item = gtk_menu_item_new();
#if GTK_CHECK_VERSION (3,0,0)
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
#else
hbox = gtk_hbox_new (FALSE, 3);
#endif
if ((w = entry->image))
gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET(w), FALSE, FALSE, 0);
if ((w = entry->label))
gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET(w), FALSE, FALSE, 0);
gtk_container_add (GTK_CONTAINER(menu_item), hbox);
gtk_widget_show (hbox);
if ((w = entry->menu))
gtk_menu_item_set_submenu (GTK_MENU_ITEM(menu_item), GTK_WIDGET(w));
return menu_item;
}
static void
entry_added (IndicatorObject * io,
IndicatorObjectEntry * entry,
gpointer user_data)
{
GtkWidget * menu_item;
g_debug ("Signal: Entry Added");
g_warn_if_fail (entry->parent_object != NULL);
menu_item = g_hash_table_lookup (entry_to_menu_item, entry);
if (menu_item == NULL)
{
g_debug ("creating a menuitem for new entry %p", entry);
menu_item = create_menu_item (entry);
g_hash_table_insert (entry_to_menu_item, entry, menu_item);
g_object_set_qdata (G_OBJECT(menu_item), entry_data_quark(), entry);
g_signal_connect (menu_item, "activate", G_CALLBACK(activate_entry), io);
gtk_widget_set_events (menu_item, gtk_widget_get_events (menu_item) | GDK_SCROLL_MASK);
g_signal_connect (menu_item, "scroll-event", G_CALLBACK(scroll_entry), io);
gtk_menu_shell_append (GTK_MENU_SHELL(user_data), menu_item);
}
gtk_widget_show (menu_item);
}
static void
entry_removed (IndicatorObject * io,
IndicatorObjectEntry * entry,
gpointer user_data)
{
GtkWidget * w;
g_debug ("Signal: Entry Removed");
if ((w = g_hash_table_lookup (entry_to_menu_item, entry)))
gtk_widget_hide (w);
}
static void
menu_show (IndicatorObject * io,
IndicatorObjectEntry * entry,
guint timestamp,
gpointer user_data)
{
const char * text;
if (entry == NULL)
text = "(null)";
else if (entry->label == NULL)
text = "(no label)";
else
text = gtk_label_get_text (entry->label);
g_debug ("Show Menu: %s", text);
}
/***
****
***/
static IndicatorObject *
load_module (const gchar * file_name)
{
IndicatorObject * io = NULL;
if (file_name && g_str_has_suffix (file_name, G_MODULE_SUFFIX))
{
io = indicator_object_new_from_file (file_name);
if (io == NULL)
g_warning ("could not load indicator from '%s'", file_name);
}
return io;
}
static IndicatorObject *
load_profile (const char * file_name, const char * profile)
{
IndicatorObject * io = NULL;
#if GTK_CHECK_VERSION (3,0,0)
GError * error = NULL;
io = INDICATOR_OBJECT (indicator_ng_new_for_profile (file_name,
profile,
&error));
if (error != NULL)
{
g_warning ("couldn't load profile '%s' from '%s': %s",
profile, file_name, error->message);
g_error_free (error);
}
#endif
return io;
}
/***
****
***/
static void
add_indicator_to_menu (GtkMenuShell * menu_shell, IndicatorObject * io)
{
GList * entries;
GList * entry;
g_return_if_fail (INDICATOR_IS_OBJECT (io));
/* connect to its signals */
g_signal_connect (io, INDICATOR_OBJECT_SIGNAL_ENTRY_ADDED,
G_CALLBACK(entry_added), menu_shell);
g_signal_connect (io, INDICATOR_OBJECT_SIGNAL_ENTRY_REMOVED,
G_CALLBACK(entry_removed), menu_shell);
g_signal_connect (io, INDICATOR_OBJECT_SIGNAL_MENU_SHOW,
G_CALLBACK(menu_show), NULL);
/* process the entries */
entries = indicator_object_get_entries(io);
for (entry=entries; entry!=NULL; entry=entry->next)
entry_added (io, entry->data, menu_shell);
g_list_free (entries);
}
static void
add_menu_to_grid (GtkGrid * grid,
int top,
const char * text_,
GtkWidget * menu)
{
gchar * text;
GtkWidget * label;
text = g_strdup_printf ("%s:", text_);
label = gtk_label_new (text);
g_free (text);
gtk_grid_attach (GTK_GRID(grid), label, 0, top, 1, 1);
gtk_grid_attach (GTK_GRID(grid), menu, 1, top, 1, 1);
g_object_set (label, "halign", GTK_ALIGN_START,
"hexpand", FALSE,
"margin-right", 6,
"valign", GTK_ALIGN_CENTER,
NULL);
g_object_set (menu, "halign", GTK_ALIGN_START,
"hexpand", TRUE,
NULL);
}
/***
****
***/
int
main (int argc, char ** argv)
{
int menu_count = 0;
const gchar * file_name;
gchar * base_name;
GtkWidget * grid;
if (argc != 2)
{
base_name = g_path_get_basename (argv[0]);
g_warning ("Use: %s filename", base_name);
g_free (base_name);
return 0;
}
/* make sure we don't proxy to ourselves */
g_setenv ("UBUNTU_MENUPROXY", "0", TRUE);
gtk_init (&argc, &argv);
ido_init ();
entry_to_menu_item = g_hash_table_new (g_direct_hash, g_direct_equal);
file_name = argv[1];
grid = g_object_new (GTK_TYPE_GRID, "margin", 4,
"column-spacing", 6,
"row-spacing", 12,
NULL);
/* if it's an old-style indicator... */
if (g_str_has_suffix (file_name, G_MODULE_SUFFIX))
{
IndicatorObject * io = load_module (file_name);
GtkWidget * menu = gtk_menu_bar_new ();
add_indicator_to_menu (GTK_MENU_SHELL(menu), io);
base_name = g_path_get_basename (file_name);
add_menu_to_grid (GTK_GRID(grid), menu_count++, base_name, menu);
g_free (base_name);
}
else /* treat it as a GMenu indicator's keyfile */
{
GError * error;
GKeyFile * key_file;
key_file = g_key_file_new ();
error = NULL;
g_key_file_load_from_file (key_file, file_name, G_KEY_FILE_NONE, &error);
if (error != NULL)
{
g_warning ("loading '%s' failed: %s", file_name, error->message);
g_error_free (error);
}
else
{
gchar ** groups;
int i;
groups = g_key_file_get_groups (key_file, NULL);
for (i=0; groups && groups[i]; i++)
{
const gchar * const profile = groups[i];
IndicatorObject * io;
if (!g_strcmp0 (profile, "Indicator Service"))
continue;
if ((io = load_profile (file_name, profile)))
{
GtkWidget * menu = gtk_menu_bar_new ();
add_indicator_to_menu (GTK_MENU_SHELL(menu), io);
add_menu_to_grid (GTK_GRID(grid), menu_count++, profile, menu);
}
}
g_strfreev (groups);
}
g_key_file_free (key_file);
}
if (menu_count > 0)
{
GtkWidget * window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
base_name = g_path_get_basename (file_name);
gtk_window_set_title (GTK_WINDOW(window), base_name);
g_free (base_name);
g_signal_connect (window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_container_add (GTK_CONTAINER(window), grid);
gtk_widget_show_all (window);
gtk_main ();
}
/* cleanup */
g_hash_table_destroy (entry_to_menu_item);
return 0;
}
libayatana-indicator-0.6.3/tools/Makefile.am 0000644 0000000 0000000 00000002174 13565237013 015672 0 ustar if USE_GTK3
INDICATOR_LIB = -layatana-indicator3
libexec_PROGRAMS = ayatana-indicator-loader3
VER=3
endif
#############################
# Indicator Loader
#############################
ayatana_indicator_loader_SOURCES = \
indicator-loader.c
ayatana_indicator_loader_CFLAGS = \
-Wall -Werror \
$(LIBINDICATOR_CFLAGS) -I$(top_srcdir) \
-DBUILD_DIR="\"$(builddir)\""
ayatana_indicator_loader_LDADD = \
$(LIBINDICATOR_LIBS) \
-L$(top_builddir)/libayatana-indicator/.libs \
$(INDICATOR_LIB)
# 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.
ayatana_indicator_loader3_SOURCES = $(ayatana_indicator_loader_SOURCES)
ayatana_indicator_loader3_CFLAGS = $(ayatana_indicator_loader_CFLAGS)
ayatana_indicator_loader3_LDADD = $(ayatana_indicator_loader_LDADD)
xsessiondir = $(pkgdatadir)
xsession_DATA = 80indicator-debugging
EXTRA_DIST = $(xsession_DATA)
DISTCLEANFILES = Makefile.in
libayatana-indicator-0.6.3/trim-lcov.py 0000755 0000000 0000000 00000004000 13565237013 014755 0 ustar #!/usr/bin/python
# Copyright 2013 Canonical Ltd.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# version 3.0 as published by the Free Software Foundation.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License version 3.0 for more details.
#
# You should have received a copy of the GNU General Public
# License along with this library. If not, see
# .
#
# Author: Ryan Lortie
# This script removes branch and/or line coverage data for lines that
# contain a particular substring.
#
# In the interest of "fairness" it removes all branch or coverage data
# when a match is found -- not just negative data. It is therefore
# likely that running this script will actually reduce the total number
# of lines and branches that are marked as covered (in absolute terms).
#
# This script intentionally avoids checking for errors. Any exceptions
# will trigger make to fail.
import sys
line_suppress = ['g_assert_not_reached']
branch_suppress = ['g_assert', 'g_return_if_fail', 'g_return_val_if_fail', 'G_DEFINE_TYPE']
def check_suppress(suppressions, source, data):
line, _, rest = data.partition(',')
line = int(line) - 1
assert line < len(source)
for suppression in suppressions:
if suppression in source[line]:
return True
return False
source = []
for line in sys.stdin:
line = line[:-1]
keyword, _, rest = line.partition(':')
# Source file
if keyword == 'SF':
source = file(rest).readlines()
# Branch coverage data
elif keyword == 'BRDA':
if check_suppress(branch_suppress, source, rest):
continue
# Line coverage data
elif keyword == 'DA':
if check_suppress(line_suppress, source, rest):
continue
print line