ayatana-indicator-application-22.2.0/AUTHORS0000644000000000000000000000323214203537407015431 0ustar Allan LeSage Aurélien Gâteau Aurelien Gateau C10uD Charles Kerr Chris Coulson CI Train Bot Cody Russell Cody Russell Conor Curran Didier Roche Emmanuele Bassi Hernando Torque Jan Arne Petersen Jason Smith Jason Smith Jeremy Bicha Jo Shields Ken Vandine Ken VanDine Krzysztof Klimonda Krzysztof Klimonda Luke Yelavich Marco Trevisan (Treviño) Martin Pitt Mathieu Trudel-Lapierre Michael Terry Michael Terry Michael Terry Mike Gabriel Neil Jagdish Patel Neil J. Patel Robert Collins Robert Tari Ryan Lortie Sebastien Bacher Sebastien Bacher Sense Egbert Hofstede Sense Hofstede Sense Hofstede Sven Baars Ted Gould Ted Gould Ted Gould ayatana-indicator-application-22.2.0/.build.yml0000644000000000000000000001143314203537407016263 0ustar ######################################################### # THE FOLLOWING LINES IS USED BY docker-build ########################################################## requires: archlinux: # Useful URL: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=ayatana-indicator-application - clang - gcc - git - make - startup-notification - which - cmake - cmake-extras - xorg-server-xvfb - glib2 - gtk3 - dbus-glib - json-glib - intltool - libdbusmenu-glib - libdbusmenu-gtk3 - systemd - vala debian: # Useful URL: https://salsa.debian.org/debian-ayatana-team/ayatana-indicator-application - clang - clang-tools - g++ - cppcheck - git - cmake - cmake-extras - cli-common-dev - intltool - libdbus-1-dev - libdbus-glib-1-dev - libdbusmenu-glib-dev - libdbusmenu-gtk3-dev - libglib2.0-dev - libgtk-3-dev - gtk-sharp3-gapi - libgtk3.0-cil-dev - libjson-glib-dev - libnunit-cil-dev - libxml2-utils - mono-devel - systemd - gobject-introspection - gtk-doc-tools - libgirepository1.0-dev - libgtest-dev - libx11-dev - libxi-dev - valac - dbus-test-runner - xauth - xvfb ubuntu: - clang - clang-tools - g++ - git - cmake - cmake-extras - cli-common-dev - intltool - libdbus-1-dev - libdbus-glib-1-dev - libdbusmenu-glib-dev - libdbusmenu-gtk3-dev - libglib2.0-dev - libgtk-3-dev - gtk-sharp3-gapi - libgtk3.0-cil-dev - libjson-glib-dev - libnunit-cil-dev - libxml2-utils - mono-devel - systemd - gobject-introspection - gtk-doc-tools - libgirepository1.0-dev - libgtest-dev - libx11-dev - libxi-dev - valac - dbus-test-runner - xauth - xvfb variables: - 'CHECKERS=" -enable-checker deadcode.DeadStores -enable-checker alpha.deadcode.UnreachableCode -enable-checker alpha.core.CastSize -enable-checker alpha.core.CastToStruct -enable-checker alpha.core.IdenticalExpr -enable-checker alpha.core.SizeofPtr -enable-checker alpha.security.ArrayBoundV2 -enable-checker alpha.security.MallocOverflow -enable-checker alpha.security.ReturnPtrRange -enable-checker alpha.unix.SimpleStream -enable-checker alpha.unix.cstring.BufferOverlap -enable-checker alpha.unix.cstring.NotNullTerminated -enable-checker alpha.unix.cstring.OutOfBounds -enable-checker alpha.core.FixedAddr -enable-checker security.insecureAPI.strcpy"' before_scripts: - cd ${START_DIR} - if [ ! -d ayatana-ido-build ]; then - git clone --depth 1 https://github.com/AyatanaIndicators/ayatana-ido.git ayatana-ido-build - fi - cd ayatana-ido-build - cmake . -DCMAKE_INSTALL_PREFIX=/usr - make - make install - cd - - rm -Rf ayatana-ido-build/ - - cd ${START_DIR} - if [ ! -d libayatana-indicator-build ]; then - git clone --depth 1 https://github.com/AyatanaIndicators/libayatana-indicator.git libayatana-indicator-build - fi - cd libayatana-indicator-build - cmake . -DCMAKE_INSTALL_PREFIX=/usr - make - make install - cd - - rm -Rf libayatana-indicator-build/ - - cd ${START_DIR} - if [ ! -d libayatana-appindicator-build ]; then - git clone --depth 1 https://github.com/AyatanaIndicators/libayatana-appindicator.git libayatana-appindicator-build - fi - cd libayatana-appindicator-build - cmake . -DCMAKE_INSTALL_PREFIX=/usr - make - make install - rm -Rf libayatana-appindicator-build/ build_scripts: - if [ ${DISTRO_NAME} == "debian" ];then - cppcheck --enable=warning,style,performance,portability,information,missingInclude . - fi - - if [ -e ./CMakeLists.txt ]; then - if [ ${DISTRO_NAME} == "debian" ];then - scan-build $CHECKERS cmake . -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_TESTS=ON - else - scan-build $CHECKERS cmake . -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_VERBOSE_MAKEFILE=ON - fi - else - exit 1 - fi - - if [ $CPU_COUNT -gt 1 ]; then - if [ ${DISTRO_NAME} == "debian" ];then - scan-build $CHECKERS --keep-cc --use-cc=clang --use-c++=clang++ -o html-report make -j $CPU_COUNT - make clean - fi - scan-build $CHECKERS --keep-cc -o html-report make -j $CPU_COUNT - else - if [ ${DISTRO_NAME} == "debian" ];then - scan-build $CHECKERS --keep-cc --use-cc=clang --use-c++=clang++ -o html-report make - make clean - fi - scan-build $CHECKERS --keep-cc -o html-report make - fi # - XVFB_RUN="$(which xvfb-run || true)" # - if [ ${DISTRO_NAME} == "debian" ];then # - if [ -e ./CMakeLists.txt ]; then # - ${XVFB_RUN} env CTEST_OUTPUT_ON_FAILURE=1 make test # - fi # - fi ayatana-indicator-application-22.2.0/ChangeLog0000644000000000000000000047500214203537407016143 0ustar 2022-02-17 Mike Gabriel * release 22.2.0 (HEAD -> main, tag: 22.2.0) * Merge branch 'tari01-pr/cleanup-compile-flags' (0ef4fc1) 2022-02-17 Robert Tari * .build.yml: Drop extra compilation flags (ef11732) * Clean up compilation flags (8f7d4d4) 2022-02-16 Mike Gabriel * Merge branch 'tari01-pr/drop-cmake-install-full-pkglibexecdir' (3bbc1d0) 2022-02-15 Robert Tari * data/CMakeLists.txt: Drop unused CMAKE_INSTALL_FULL_PKGLIBEXECDIR (46041c5) 2022-02-08 Robert Tari * .travis.yml: Run CI builds on Travis CI's Ubuntu focal base system (f011bb9) 2022-01-27 Mike Gabriel * release 0.8.91 (0240328) (tag: 0.8.91) 2022-01-27 Robert Tari * Merge branch 'sunweaver-pr/use-pkg-config-indicatordir-for-library-path' (edbee76) 2022-01-26 Mike Gabriel * data/CMakeLists.txt: Update detection of SYSTEMD_USER_DIR, use systemd's pkg-config variable if possible. (3c432ed) * CMakeLists.txt: Fix project name (ayatana-indicator-application, not ayatana-appindicator-application). (a986a42) 2022-01-27 Robert Tari * Merge branch 'sunweaver-pr/fix-systemd-unit-file-location' (8b83c01) 2022-01-26 Mike Gabriel * src/CMakeLists.txt: Use pkg-config's indicatordir as library installation path. (c8de140) * data/CMakeLists.txt: Update detection of SYSTEMD_USER_DIR, use systemd's pkg-config variable if possible. (b70b185) * CMakeLists.txt: Fix project name (ayatana-indicator-application, not ayatana-appindicator-application). (d49af68) 2021-11-18 Mike Gabriel * release 0.8.90 (91143cb) (tag: 0.8.90) 2021-10-25 Robert Tari * Merge branch 'sunweaver-pr/travis-cleanup' (03225f2) 2021-10-20 Robert Tari * .travis.yml: Temporarily disable ppc64le builds (a80c027) 2021-09-02 Robert Tari * Fix Travis status image (3ea315f) 2021-10-25 Mike Gabriel * .build.yml: Comment out running unit tests (no tests in project). (6eec5b5) * .build.yml: Remove source code of locally built dependencies after they have been installed. (fd4b492) * .build.yml: Run unit tests in build_scripts: target. (d20a158) * .build.yml: Drop autogen.sh support. (441c558) 2021-10-20 Robert Tari * .travis.yml: Temporarily disable ppc64le builds (6a05699) 2021-09-02 Robert Tari * Fix Travis status image (b6d0146) 2021-08-29 Mike Gabriel * debian/rules: Enable unit tests (if there were any). (bff6bb8) 2021-08-28 Mike Gabriel * .travis.yml: Fix branch name what is now the default branch in ayatana-dev-scripts. (f33deb5) 2021-08-10 Mike Gabriel * Merge branch 'tari01-pr/add-enable-werror-option' (82ddfcc) 2021-08-09 Robert Tari * Add ENABLE_WERROR option (f4c60ba) 2021-06-27 Mike Gabriel * README.md: Add missing parenthesis close. (b83b458) 2021-06-15 Robert Tari * Merge branch 'sunweaver-pr/travis-build-our-libs-from-source' (2ce2a0e) 2021-05-25 Mike Gabriel * .build.yml: During CI builds, build latest ayatana-ido, libayatana-indicator and libayatana-indicator and use those for CI builds of ayatana-indicator-application. (4546805) 2021-06-11 Mike Gabriel * Merge branch 'tari01-pr/fix-runtime-install' (ba1630b) 2021-06-11 Robert Tari * Fix .desktop file install location (c1bd489) * Fix service file installation (4a70621) 2021-06-11 Mike Gabriel * Merge branch 'tari01-pr/fix-xdg-location' (e9c253b) 2021-06-11 Robert Tari * Fix .desktop file install location (111b61a) 2021-06-10 Mike Gabriel * Merge branch 'tari01-pr/cmake-install-full' (95a9f27) 2021-06-10 Robert Tari * Use CMAKE_INSTALL_FULL_*DIR locations (d4cf711) 2021-06-07 Mike Gabriel * README.md: Rephrase where this indicator is used, currently not used in Lomiri. (71205ee) * Merge branch 'tari01-pr/add-documentation' (6704d8a) 2021-06-04 Robert Tari * README: Drop old file (7887ac6) * Add documentation and install instructions (9abc758) 2021-05-25 Robert Tari * Merge branch 'sunweaver-pr/debian-pkging-adjusted-to-cmake' (6bac351) 2021-05-25 Mike Gabriel * debian/{control,rules}: Adjust to the CMake build system switch. (96821b5) * Merge branch 'tari01-pr/move-to-cmake' (fe5ae6b) 2021-03-04 Robert Tari * Remove unused files (b9a91db) * Remove Automake files (10b786c) * Add CMakeLists.txt files (5f5d6d7) * data: Fix ayatana-indicator-application.service.in (65be49d) * data: Fix ayatana-indicator-application.desktop.in (51c9025) 2021-05-04 Robert Tari * Merge branch 'sunweaver-pr/travis-ci' (dd675b4) 2021-05-04 Mike Gabriel * .travis.yml: Don't run autotools builds twice (once via script, once directly). (0d7148e) * src/Makefile.am: Drop -Werror compiler flag for now. Not helpful when setting up CI builds for dirty code. (b7faf4f) * Travis CI: Initial draft for CI builds. (cfea3be) 2020-08-17 Mike Gabriel * release 0.8.0 (eee97a7) (tag: 0.8.0) 2020-08-10 Mike Gabriel * configure.ac: Drop data/upstart/Makefile from AC_OUTPUT. Regresion fix for 172e6823. (a95fa57) 2020-08-10 Robert Tari * Merge branch 'sunweaver-pr/drop-upstart-support' Attributes GH PR #4: https://github.com/AyatanaIndicators/ayatana-indicator-application/pull/4 (c6909fa) * Merge branch 'pr/drop-upstart-support' of https://github.com/sunweaver/ayatana-indicator-application into sunweaver-pr/drop-upstart-support Attributes GH PR #4: https://github.com/AyatanaIndicators/ayatana-indicator-application/pull/4 (c7c7c61) * Merge branch 'sunweaver-pr/fix-systemd' Attributes GH PR #3: https://github.com/AyatanaIndicators/ayatana-indicator-application/pull/3 (9e09aaa) 2020-08-10 Mike Gabriel * Drop all references to upstart. (172e682) * debian/*: Install systemd user service file correctly into DEB package. (ac816c0) * Start indicator in systemd when ayatana-indicators.target is started. (bcd0095) * debian/control: Improve dh-autoreconf build-dependency. (05e0a70) 2019-11-27 Mike Gabriel * Drop release/build cruft file src/ChangeLog. (1aa5f07) * release 0.5.3 (e86b005) (tag: 0.5.3) * Avoid deprecated g_type_class_add_private. (8b967ee) 2017-12-04 Mike Gabriel * debian/changelog: Bump upstream to a development version. (75ffda9) * post-release fix debian/changelog for 0.5.1 and 0.5.2 (517180e) 2017-10-26 Mike Gabriel * autogen.sh: Adapt PKG_NAME autogen.sh to ayatana- namespace. (3589a31) * configure.ac: White-space fix and beginning of file. (7cf4fcf) * {configure.ac,Makefile.am}: Drop distcheck features. (3207212) 2017-10-06 Mike Gabriel * debian/control: Modify B-D on systemd: only required on linux-any hosts. (1b6f7b2) * Make systemd optional. If systemd is not available at build-time, the creation of the .service file is omitted. (2c6c3ad) * release 0.5.2 (c21840e) (tag: 0.5.2) 2017-09-26 Mike Gabriel * data/ayatana-indicator-application.desktop.in: Add Budgie as candidate for launching ayatana-indicator-application. (1fb04e5) * data/ayatana-indicator-application.desktop.in: Add XFCE as candidate for launching ayatana-indicator-application. (6f0baea) 2017-06-07 Mike Gabriel * debian/{rules/watch}: Add get-orig-source rule and watch file to make upstream packaging as close to official Debian packaging. (9ea282b) * debian/upstream: Add GnuPG pubkey for upstream devs. (7a0de9b) * debian/patches: Add README for patches/ subfolder. (5810507) 2017-05-31 Mike Gabriel * data/ayatana-indicator-application.desktop.in (7ce7832) 2017-05-30 Mike Gabriel * XDG-autostart this indicator in MATE, too. (630f47c) 2017-05-29 Mike Gabriel * release 0.5.1 (21a3517) (tag: 0.5.1) 2017-05-26 Mike Gabriel * src/application-service-watcher.c: Comment out upstart specific code for now. We can reintroduce it once we know if our session is upstart-managed (or systemd-managed). (af351b0) 2017-05-15 Mike Gabriel * data/Makefile.am: Indentation/white-space fix. (0858a56) * upstart service files: Fix namespace overlapping with the project we forked from. (fe747e1) 2017-05-15 Michael Terry * Work inside a snap by prefixing hard coded paths with . (LP: #1629009) (3661214) 2017-05-15 Jeremy Bicha * Hide 'Indicator Application' from Startup Applications (LP: #1637379) (LP: #1637379) (f20bc23) 2017-05-15 Ted Gould * Adding a systemd user unit. (a099394) 2017-05-15 Mike Gabriel * build system: Switch to mate-common. (9afe090) 2015-11-11 Mike Gabriel * Add forgotten file... (src/ayatana-application-service-marshal.list). (dcb6427) * dbus-shared.h: Use org.ayatana namespace for the DBus service object. (2349431) * Fork from Ubuntu's indicator-application code project. (13e1544) 2015-01-28 CI Train Bot * Releasing 12.10.1+15.04.20150128-0ubuntu1 (6935795) 2015-01-28 Ted Gould * Remove XFCE from the OnlyShowIn list Fixes: #1411959 Approved by: Antti Kaijanmäki, PS Jenkins bot (61f83a5) 2015-01-27 Ted Gould * Update gcov.m4 (57a37ce) 2015-01-20 Ted Gould * Remove XFCE from the OnlyShowIn list (d941082) 2014-04-07 CI bot * Releasing 12.10.1+14.04.20140407-0ubuntu1 (f08a10d) 2014-04-07 Ted Gould * Fix the upstart job and desktop config for GNOME2 Fixes: 1302123 (72e1242) * Switching to single equals (6f1a0f7) 2014-04-02 CI bot * Releasing 12.10.1+14.04.20140402-0ubuntu1 (b3b0fc8) 2014-04-02 Sebastien Bacher * Don't output warnings about properties re-requests, debug is enough Fixes: 1297437 (343963f) 2014-03-25 Ted Gould * Switch session checking to be in pre-start (d0042b5) 2014-03-25 Sebastien Bacher * Don't output warnings about properties re-requests, debug is enough (04a7c41) 2014-03-24 CI bot * Releasing 12.10.1+14.04.20140324-0ubuntu1 (4b29e70) 2014-03-24 Sebastien Bacher * Don't mention "library", that's a separate source nowadays (2906f8d) 2014-03-21 Sebastien Bacher * Don't mention "library", that's a separate source nowadays (38f5543) 2014-02-26 Ted Gould * Update for gnome-fallback (02d2362) * Switch to not being ubuntu-touch for other desktops (d0e78b3) 2014-02-25 Ted Gould * Synchronize process management across indicators. (e51f4d9) 2014-02-20 Ted Gould * Switch to a name watch (7ae14a3) * Own the name (b12215e) * Removes the indicator service code (e48b26b) 2014-02-19 Ted Gould * Switch to using pkglibexecdir (dd359a1) * Build the upstart desktop file in its own directory (f179a2c) * Adding a desktop file for the Upstart override (c6a36f4) * Make sure this is for Unity and XFCE (4d7566c) 2014-02-14 Ted Gould * Fixing the autostart file (cbe78c0) * Respawn limit and better rules (7d97429) 2014-01-17 Automatic PS uploader * Releasing 12.10.1+14.04.20140117-0ubuntu1 (revision 244 from lp:indicator-application). (ae7db09) * Releasing 12.10.1+14.04.20140117-0ubuntu1, based on r244 (bd2e50e) 2014-01-17 Sebastien Bacher * don't error out on deprecated declarations. (0a8bd5a) * include new lcov version (8fbbd6b) 2014-01-16 Sebastien Bacher * don't error out on deprecated declarations (c4eb40f) 2013-11-25 Automatic PS uploader * Releasing 12.10.1+14.04.20131125-0ubuntu1 (revision 242 from lp:indicator-application). (74305fa) * Releasing 12.10.1+14.04.20131125-0ubuntu1, based on r242 (70d3aea) 2013-10-31 Ted Gould * Switch indicator application over to having an upstart job for managing the service. Also make it emit it's own event for when application indicators should be started so we can clean up the boot sequence. Fixes: https://bugs.launchpad.net/bugs/1185565. (f2ce0ee) 2013-10-28 Ted Gould * Adding an XDG Autostart file (96efd3b) * Merge trunk (6623650) 2013-10-24 Charles Kerr * When we can't get a handle to the system bus, exit gracefully instead of crashing. Fixes: https://bugs.launchpad.net/bugs/1197788. (da34f0c) 2013-10-23 Charles Kerr * don't crash if we can't get the session bus. (5e409a4) 2013-08-27 Ted Gould * Dropping debugging for system-wide support (bcd73f4) 2013-07-12 Ted Gould * Add the indicator-services-end condition (f3246fc) * Add the indicator-services-start condition (77943e2) * Make sure to have proper syntax (e5d5f1a) 2013-05-29 Ted Gould * Dropping service from extra dist and clean (634e24e) * Limiting to only the ubuntu session (7b8ff47) * A comment, because comments rock. (fe92d7d) * When we get our name, then start app indicators (3051b7a) * Dropping the dbus service file (a6999f4) * Adding an upstart job configuration (477cf6a) 2013-01-25 Automatic PS uploader * Releasing 12.10.1daily13.01.25-0ubuntu1 to ubuntu. (fe77f0e) * Releasing 12.10.1daily13.01.25-0ubuntu1, based on r239 (fb406e1) 2013-01-23 Charles Kerr * remove g_type_init() calls; introduce explicit glib requirements to configure.ac and debian/control (36d8b41) 2013-01-22 Charles Kerr * add a glib minimum to configure.ac, debian/control. remove g_type_init() calls. (f788c22) 2013-01-11 Automatic PS uploader * Releasing 12.10.1daily13.01.11-0ubuntu1 to ubuntu. (f8a22d3) * Releasing 12.10.1daily13.01.11-0ubuntu1, based on r237 (b9c040b) 2012-12-18 Marco Trevisan (Treviño) * Indicator-application: removing the deprecated approver support. (22ee6bf) * Indicator-application: removing the deprecated approver support (d5c42de) 2012-11-22 Didier Roche * Bootstrap message for automated daily uploda. (6f43d3e) * boostrap message (0f8800c) 2012-11-22 Sebastien Bacher * Import packaging. (3ff7ad1) 2012-11-21 Mathieu Trudel-Lapierre * debian/copyright: simplify into one File: stanza. (e21f29c) * Update Vcs-Bzr, Vcs-Browser and add a notice to uploaders. (60c5d50) 2012-11-20 Mathieu Trudel-Lapierre * Add gnome-common to Build-Depends. (e88b951) * Reorganize Build-Depends for consistency with other indicator packages. (a873cad) * Add and export DPKG_GENSYMBOLS_CHECK_LEVEL. (a90599b) * - Add dh-autoreconf to Build-Depends. - Override dh_autoreconf to call autogen.sh and not call configure. (0688e47) * debian/rules: - Use dh_autoreconf with dh sequencer. (a5c187b) * debian/control: - Update style to match other indicator packages. (a22957c) * Tell bzr-builddeb to build this package using split mode (6a6c91d) * Import debian/ from lp:~ubuntu-desktop/indicator-application/ubuntu (e174cb0) 2012-08-22 Sebastien Bacher * releasing version 12.10.0-0ubuntu2 (6603fe4) * debian/control: Build-Depends on dbus-test-runner and xvfb, dh9 runs make check for us and the tests require those (e863c24) * releasing version 12.10.0-0ubuntu1 (bd61f1d) * New upstream release: - Require GTK3 in Indicators (lp: #996607); Dropped GTK2 build; Updated packaging to the current standards (a89e5cc) * Import upstream version 12.10.0 (9df80bf) 2012-08-21 Charles Kerr * 12.10.0 (90e5ec8) 2012-06-22 Charles Kerr * remove gtk2 support. Fixes: https://bugs.launchpad.net/bugs/996607. Approved by Lars Uebernickel. (f2ace01) 2012-05-07 Charles Kerr * require gtk3 (a6590cc) 2012-04-11 Ken VanDine * releasing version 0.5.0-0ubuntu1 (ed31788) * New upstream release. * Improved gcov rules in our Automake files. * Fix parent pointer object for unity-panel-service. (486e1b3) 2012-04-11 Charles Kerr * releasing version 0.5.0-0ubuntu1~ppa1 (7201938) * New upstream release. * Improved gcov rules in our Automake files. * Fix parent pointer object for unity-panel-service. (a88bd1a) * Import upstream version 0.5.0 (cb8844b) * Sync from Ubuntu Desktop (f0e4fc0) * 0.5.0 (ab3fc0e) (tag: 0.5.0) * merge lp:~allanlesage/indicator-application/TDD to improve our automake gcov rules (3a3e89e) 2012-04-10 Charles Kerr * merge lp:~ted/indicator-application/parent-pointer to add in the parent object pointer for unity-panel-service. (0404809) 2012-04-09 Ted Gould * Set the parent object pointer to help unity-panel-service (1833f44) 2012-03-27 Allan LeSage * Pedantic name change for gcovr xml coverage results. (22ff9e1) * Removed gcovr dependency, moved coverage targets to own makefile, cleaning up *.gcno. (18da8cd) 2012-03-21 Ken VanDine * releasing version 0.4.94-0ubuntu1 (5a7ebb9) * New upstream release. * Memory leak (LP: #957992); New upstream release. * Fix a dbus memory leak. (LP: #953585) * Fix potential integer overflow (LP: #944234) (be63d57) * Merging shared upstream rev into target branch. (086cedb) * Prepared upstream tree for merging into target branch. (9aa7545) * Merging shared upstream rev into target branch. (5e75991) * Prepared upstream tree for merging into target branch. (86bfcf3) 2012-03-21 Ted Gould * releasing version 0.4.94-0ubuntu1~ppa1 (3aac21d) * New upstream release. * Memory leak (LP: #957992) (9871b47) * Import upstream version 0.4.94 (63e76db) * Sync to Ubuntu Desktop (48d44ef) * Merging shared upstream rev into target branch. (14455a2) * Prepared upstream tree for merging into target branch. (2b3f1e6) * 0.4.94 (daf30a3) (tag: 0.4.94) 2012-03-20 Charles Kerr * merge lp:~charlesk/indicator-application/hashtable-mem-bugs to fix memory errors reported in lp bug #957992 (54d6c14) 2012-03-17 Charles Kerr * Fix two memory bugs with clearing out out directories from our icon search path. (e80b857) 2012-03-14 Sebastien Bacher * releasing version 0.4.93-0ubuntu1 (b907100) * New upstream release: - Coverity INTEGER_OVERFLOW - CID 10716 (lp: #944234) - small memory leak caused by inline use of dbus_g_method_get_sender() (lp: #953585) (cc14b53) * Import upstream version 0.4.93 (de6e9e4) 2012-03-13 Charles Kerr * releasing version 0.4.93-0ubuntu1~ppa (244eff8) * releasing version 0.4.93-0ubuntu1~ppa (71265fd) * New upstream release. * Fix a dbus memory leak. (LP: #953585) * Fix potential integer overflow (LP: #944234) (c102fa5) * Import upstream version 0.4.93 (fed02bf) * Sync from Ubuntu Desktop (2c9a58b) * 0.4.93 (8e26e84) (tag: 0.4.93) 2012-03-12 Charles Kerr * in generate_id(), we have a handful of local guint8's that get left-shifted to the point of potential overflow -- so change them to guint32 instead. Bug reported by coverity in lp ticket #944234 (e6d8a51) * change local guint8 fields that get left-shifted to guint32 to prevent overflow, as reported by coverity in lp bug #944234 (256988d) * merge lp:~htorque/indicator-application/fix-small-memleak to fix a small memory leak described in lp bug #953585 (ec7981d) 2012-03-12 Hernando Torque * Fix small memory leak by freeing string returned by dbus_g_method_get_sender. (67847ad) 2012-03-12 Ken VanDine * releasing version 0.4.92-0ubuntu1 (80459a4) * New upstream release. * Explicitly specifying GVariant Builder types * Cleaning up a switch statement (LP: #944236) (bc0fd0f) 2012-03-09 Ted Gould * releasing version 0.4.92-0ubuntu1~ppa1 (7045c3e) * New upstream release. * Explicitly specifying GVariant Builder types * Cleaning up a switch statement (LP: #944236) (889f6d9) * Import upstream version 0.4.92 (d518799) * Merge from U. Desktop (9b0c61b) * 0.4.92 (29bf37b) (tag: 0.4.92) 2012-03-05 Charles Kerr * merge lp:~ted/indicator-application/lp944236 to fix the warning that Coverity reported in bug #944236 (d6769d5) 2012-03-05 Sebastien Bacher * releasing version 0.4.91-0ubuntu2 (1c5dbfe) * Backport an upstream fix for a gvariant misuse, thanks desrt for it! (e3d1d6d) 2012-03-02 Ted Gould * Cleaning up switch statement to be more readable (5960d8f) * Add full type to GVariantBuilder (e2bbff7) 2012-03-02 Ryan Lortie * make proper use of g_variant_builder_init() (a140461) 2012-02-15 Sebastien Bacher * releasing version 0.4.91-0ubuntu1 (68e3c2d) 2012-02-15 Ted Gould * releasing version 0.4.91-0ubuntu1~ppa1 (3ed68eb) * New upstream release. * Unref approval data after use (568df37) * Import upstream version 0.4.91 (1401a3d) * Sync to Ubuntu Desktop (c87f1ae) * 0.4.91 (9ea46ae) (tag: 0.4.91) 2012-02-12 Ted Gould * Unreffing the result of the approval message (e985113) 2012-02-11 Sven Baars * Free the result of g_dbus_proxy_call_finish after use (6d9ffd0) 2012-02-08 Ken VanDine * releasing version 0.4.90-0ubuntu1 (4b35057) * New upstream release. * Adding in a code coverage based build target * Fixing useless variable setting * Fixing variant usage * Adding support for the Title property * Fixing to work with Dbusmenu 0.5.90; debian/control: Dbusmenu bump to 0.5.90 (9b28d1b) 2012-02-08 Ted Gould * releasing version 0.4.90-0ubuntu1~ppa1 (6350c37) * debian/control: Dbusmenu bump to 0.5.90 (0bf3d06) * New upstream release. * Adding in a code coverage based build target * Fixing useless variable setting * Fixing variant usage * Adding support for the Title property * Fixing to work with Dbusmenu 0.5.90 (44cc6e7) * Import upstream version 0.4.90 (2296595) * Sync to U. Desktop (e548f85) * 0.4.90 (8c0ecc8) (tag: 0.4.90) * Adding in a code coverage based build target (1652735) * Fixing useless variable setting (4e1deeb) * Fixing variant usage (8a1e30e) * Adding support for the Title property (0492224) * Fixing to work with Dbusmenu 0.5.90 (8aa53e2) 2012-02-03 Ted Gould * Oops, forgot one (a85b08a) * Making sure to initial string pointers (4145c58) * Make sure to initialize values before free'ing them (ee1ac0d) * Ensuring that the values are initialized to NULL before using that later. (18b2217) * Attaching bug (7614d41) * Fixing variant usage (79e3bfe) * Ignoring generated files (11f93eb) * Fixing some of the variant usage to free strings appropriately (3bfb6d6) * Changing the signatures on the indicator side, we don't care much about title though. (432817d) * Don't need the ID as that's already the hint (bc7f44a) * Changing the output signatures (cef6f0f) * Adding in service versions to detect the dbus API change (3ceb032) * Adding to more strings to the standard structure, ID and title (1b2a457) * Changing the service description to match (2a7a9f3) * If we have a mega-change of things, let's signal a title change (c1f07f7) * Handling the 'NewTitle' signal coming from the application indicator (c91e6fc) * Add the title to the structure for the application indicator (716e613) * Fixing includes to match dbusmenu v0.5.90 (37d7bd7) * Requiring dbusmenu 0.5.90 (996e46e) 2012-01-25 Ken VanDine * releasing version 0.4.0-0ubuntu2 (0e850cc) 2012-01-24 Charles Kerr * fix dead store found by clang static analyzer (3cfb188) 2012-01-24 Ken VanDine * no change rebuild for libindicator7 (2e6ca53) 2011-12-06 Allan LeSage * Added coverage reporting via gcov config and targets. (dd6a60c) 2011-09-28 Ken VanDine * releasing version 0.4.0-0ubuntu1 (dfb47bb) * New upstream release. * Fix memory leak (LP: #829961) (f4999fe) 2011-09-28 Ted Gould * Merge U. Desktop (749e1fc) * releasing version 0.4.0-0ubuntu1~ppa1 (77b5c42) * New upstream release. * Fix memory leak (LP: #829961) (60db507) * Import upstream version 0.4.0 (61ce124) * 0.4.0 (ec05da4) (tag: 0.4.0) 2011-09-16 Ted Gould * Memory leaks on double calls for properties (ac5c445) * Pulling in mterry's additional fixes (bed6607) * Ensure we set a default value for aicon (21a6e47) 2011-09-16 Michael Terry * free application fields before resetting them to new values (a11c876) 2011-09-14 Ted Gould * Freeing properties on second run of building the app indicator (2f9133d) 2011-08-11 Sebastien Bacher * releasing version 0.3.92-0ubuntu1 (256899d) * debian/rules: - update the translations template (c538da3) * New upstream release. * Support middle click actions and send as Ayatana Activates * Fix signature for null sets (8735cde) 2011-08-11 Ted Gould * releasing version 0.3.92-0ubuntu1~ppa1 (09cbd15) * New upstream release. * Support middle click actions and send as Ayatana Activates * Fix signature for null sets (e66b698) * Import upstream version 0.3.92 (e7d1dd3) * Merge from U. Desktop (6773f89) * 0.3.92 (3bb503c) (tag: 0.3.92) 2011-07-22 Ted Gould * Enabling Secondary Activate support (bc8e1d9) * Fixing the signal prototype (6e7a1fe) 2011-07-21 Marco Trevisan (Treviño) * (11bf1f5) * Up (2426537) * Use g_variant_new_uint32 as we just have one parameter (f1a3038) * Don't use "SecondaryActivate" method (7cd7056) 2011-07-10 Marco Trevisan (Treviño) * Add support to the "SecondaryActivate" method (1a569c2) 2011-07-09 Marco Trevisan (Treviño) * Merge with upstream (81714fd) 2011-07-08 Sebastien Bacher * releasing version 0.3.91-0ubuntu2 (432dd0a) 2011-07-08 Ted Gould * Fixing the signature on the startup functions. (f255dfc) * Forgot an 's' in the case of no app indicators (3770d74) 2011-07-08 Sebastien Bacher * releasing version 0.3.91-0ubuntu1 (39322c2) 2011-07-07 Ted Gould * Merging Ken's branch as well. (b7c636a) * releasing version 0.3.91-0ubuntu1~ppa1 (3eca9a2) * New upstream release. * Build with libindicator 0.4 (1e42fac) * Import upstream version 0.3.91 (457dd74) * U. Desktop Sync (f374f8e) * 0.3.91 (75eadfd) (tag: 0.3.91) * Putting in name hints for the indicators (3d3beb6) * Oops, should be a free (510e1e1) * Making sure to unref() the result if we get one. (3640e44) * Setting the name hints through the stack. (2902ab6) * Migrated to libindicator 0.4 (1af03e8) 2011-07-02 Marco Trevisan (Treviño) * Use the "entry-scrolled" signal instead of the old ones (62c7490) * Fix compilation with GTK+-2.0 (0ab53a4) 2011-06-28 Ken VanDine * releasing version 0.3.90-0ubuntu2 (f099efd) * Make sure gtk2 builds get pkgconfig info for appindicator-0.1 instead of appindicator3-0.1 (2799ed4) 2011-06-22 Ken VanDine * releasing version 0.3.90-0ubuntu1 (f2c00ec) * New upstream release. * GTK3 Port (3315ba5) 2011-06-22 Ted Gould * releasing version 0.3.90-0ubuntu1~ppa1 (e27d98a) * New upstream release. * GTK3 Port (c15ad5e) * Import upstream version 0.3.90 (3eea1be) * Merging Ubuntu Desktop (1152e6d) * 0.3.90 (58779f7) (tag: 0.3.90) * Changing where to find the header (1a9efdf) * Making tests use proper version of libappindicator and cleaning up libappindicator usage to use the same enum headers. (58f4756) 2011-06-10 Ted Gould * Add path for GTK3 indicator and make GTK3 default (b5aec1c) 2011-05-26 Michael Terry * change to gtk3 by default (fc4bf64) * use indicator3 path if using gtk3 (484079b) 2011-04-14 Ken VanDine * releasing version 0.3.2-0ubuntu1 (361d963) 2011-04-14 Ted Gould * releasing version 0.3.2-0ubuntu1~ppa1 (28549d9) * New upstream release. ∘ Free app using application_free() instead of just freeing the memory (LP: #743564) ∘ Protect against cancellation ∘ Make it so that we can cancel GetAll() (LP: #725665) ∘ Make it so that we can cancel Approver requests (d8f7ec7) * Import upstream version 0.3.2 (b8ece12) * 0.3.2 (ba6c0b1) (tag: 0.3.2) 2011-04-12 Ted Gould * releasing version 0.3.1-0ubuntu3~ppa1 (36e1489) * Make it so that we can cancel Approver requests (9ee516c) * Make approver signals cancelable (4803742) * * Protect against cancelation * Make it so that we can cancel GetAll() (LP: #725665) (8589bf9) * Ensure we can cancel GetAll() (0edabc6) * Protect from canceling (dd97a3c) * Drop debian/patches/lp_743564.patch as merged upstream. (a595799) * Upstream Merge * Free app using application_free() instead of just freeing the memory (LP: #743564) (f428921) * Merge to U. Desktop (0536a41) * Makes sure to free the application using the application_free() function (d24fd27) 2011-04-12 Michael Terry * cancel approver requests too (e029f89) 2011-04-11 Michael Terry * make sure we can cancel GetAll call (ce5dcdd) * catch one more cancel-before-accessing freed memory instance -- this one resulting in a double free (bee98f7) 2011-04-08 Ken VanDine * releasing version 0.3.1-0ubuntu2 (e25a3f6) 2011-04-08 Michael Terry * don't merely free an app, it has to be properly removed from list and such (2e0265d) 2011-04-07 Ken VanDine * releasing version 0.3.1-0ubuntu1 (c361700) 2011-04-07 Ted Gould * releasing version 0.3.1-0ubuntu1~ppa1 (72fbb08) * New upstream release. ∘ Fix the name of "nm-applet" in the overrides file ∘ Handle async tasks being canceled (LP: #752998) (d468238) * Import upstream version 0.3.1 (b0a027c) * Sync to U. Desktop (b07cb5f) * 0.3.1 (f17f35f) (tag: 0.3.1) * Handle async cancels (e4e135f) 2011-04-07 Michael Terry * cancel-guard several callback functions (f57f2e7) 2011-04-06 Ted Gould * Fixing the name of the network manager applet (108f239) 2011-03-23 Ken VanDine * releasing version 0.3.0-0ubuntu1 (06c66da) 2011-03-23 Ted Gould * releasing version 0.3.0-0ubuntu1~ppa1 (01b1054) * New upstream release. * Version number bump (8a87e5c) * Import upstream version 0.3.0 (fe82495) * Merge from U. Desktop (a919e35) * 0.3.0 (2e52cac) (tag: 0.3.0) 2011-03-16 Ken VanDine * releasing version 0.2.95-0ubuntu1 (e8ef564) 2011-03-16 Ted Gould * releasing version 0.2.95-0ubuntu1~ppa1 (1058de2) * Drop debian/patches/fix-null-string-to-variant-crash.patch (c98c03e) * New upstream release. ∘ Fix ordering of indicators ∘ No more duplication of indicators on the panel (LP: #708243) ∘ Using proper object on async call (LP: #734584) ∘ Protect from the accessible description being NULL. (LP: #724767) (7c64f15) * Import upstream version 0.2.95 (57bf196) * 0.2.95 (4492990) (tag: 0.2.95) * Fix ordering of indicators (eb6a863) * Moving iBus and keyboard under advice of mpt (9e0c4a2) 2011-03-15 Ted Gould * Handle the case of getting application signals while still waiting on the full list. (a601eb2) * Using the proper object to finish the call (a76d0eb) 2011-03-14 Ted Gould * Use the passed in proxy to get the result to ensure it's valid. (1aeeeb0) * Inserting network manager applet at the front (b0e008b) * Debug message on missing override file. (b29c6f2) * Debug message on missing override file. (31299f3) * Do a sort after deciding the ordering ID (e5d2b6b) * Noticing a missing unref (e2adde1) 2011-03-11 Ted Gould * Adding bug (a0387eb) * If we're requeuing we don't really want to continue to process the signal (00a8865) * Removing applications before adding new ones. (a11d8f1) * A couple memory leaks (d3c5e25) * Only clear the cancel if we're not being cancelled (c892f84) * Unrefing the object, it might not happen right away, so let's clear it ourselves. (bc6a7d9) * If we're in the middle of a GetApplications and we get another signal, let's try again. (a4e9c0b) * Add a cancellable object for the GetApplications call (c6313ac) 2011-03-03 Ted Gould * Merge from U. Desktop (c8b3e36) 2011-03-02 Ted Gould * Protect from the accessible description being NULL (7b31678) 2011-02-25 Michael Terry * debian/control, debian/rules: - Add quilt as a patch syste. debian/patches/fix-null-string-to-variant-crash.patch: - Don't pass a null string to GVariant, it hates it. LP: #724767 (c638472) * fix crash on null string passed to GVariant (6a1c35a) 2011-02-24 Ken VanDine * releasing version 0.2.94-0ubuntu1 (8ea37c5) 2011-02-24 Ted Gould * releasing version 0.2.94-0ubuntu1~ppa1 (a45a01a) * New upstream release. * Make the accessible description NULL so that indicator-applet doesn't crash (LP: #721533) * emit LabelChanged signal along with the IconChanged signal (LP: #712581) (4b3ebd6) * Import upstream version 0.2.94 (87fb997) * 0.2.94 (63807a0) (tag: 0.2.94) * releasing version 0.2.93-0ubuntu5~ppa2 (7357145) * Fix, let's not talk about it. (fcdd637) * Making sure we have a description for the variant world (419c9a4) * releasing version 0.2.93-0ubuntu5~ppa1 (b61f621) * Upstream Merge * Adding in support for Accssible Descriptions (14fc5ff) * Sync with U.Desktop (2c1ee7d) * Adding support for accessible descriptions (22dee03) * Switching things around so the icon switches with the description all the way up the stack (1cfc978) 2011-02-23 Ted Gould * Adding a missing brace (ab57d41) 2011-02-21 Ted Gould * Make sure to NULL out the structure (c507ab1) 2011-02-19 Ken VanDine * releasing version 0.2.93-0ubuntu4 (c893dfd) 2011-02-18 Ted Gould * Ensures the accessible description is NULL (f614bf0) 2011-02-17 Ken VanDine * releasing version 0.2.93-0ubuntu3 (1fa5506) 2011-02-16 Ted Gould * Remove g_error's to stop abortion. (0c56561) * On status change update the label as well (14df3d3) 2011-02-11 Ken VanDine * releasing version 0.2.93-0ubuntu2 (e3db442) 2011-02-11 Michael Terry * don't abort on various unexpected situations; just spit out critical warning (fb64a7a) * update label too in update_status (d2a8021) 2011-02-11 Luke Yelavich * Use the ACCESSIBLE_DESC_UPDATE signal to refresh the accessible description. (70d0a4d) 2011-02-08 Luke Yelavich * accessible_name -> accessible_desc (a958e07) * Merge from trunk (8c46407) 2011-02-07 Ted Gould * Build fix to get libindicator header (3cca546) 2011-02-07 Luke Yelavich * Add accessible name support (e6a59a7) * Include indicator-object.h to reference INDICATOR_OBJECT_SCROLL_UP (5568288) 2011-02-03 Ken VanDine * releasing version 0.2.93-0ubuntu1 (24664ec) 2011-02-03 Ted Gould * releasing version 0.2.93-0ubuntu1~ppa1 (56bc4ef) * Dropping old entry (dc643bf) * Merge from U. Desktop (2c42caf) * New upstream release. * Support the scroll wheel event and send it to applications. (18e5be1) * Import upstream version 0.2.93 (cd55d42) * 0.2.93 (f780ca4) (tag: 0.2.93) * Adding in the indicator-object header (2a36982) * Support scroll events from libindicator on down to sending them to the applications. (dc47b4e) 2011-01-29 Marco Trevisan (Treviño) * Use INDICATOR_OBJECT_SCROLL instead of GDK_SCROLL enum value (70bc5ad) * Using the SNI method "Scroll" instead of "XAyatanaScrollAction" (df3e144) * indicator-application: rename the method ApplicationScrollSignal to ApplicationScrollEvent (016feb9) 2011-01-27 Ken VanDine * releasing version 0.2.92-0ubuntu1 (c3f02be) 2011-01-27 Ted Gould * releasing version 0.2.92-0ubuntu1~ppa1 (e08f548) * New upstream release. * Fix naming of the approver interface * Fix a bug in the builders (6379235) * Import upstream version 0.2.92 (2c6ef4e) * Sync to Ubuntu Desktop (94b8617) * 0.2.92 (82c80cd) (tag: 0.2.92) 2011-01-26 Ted Gould * Fix the use of variant builder (40d7a61) 2011-01-27 Marco Trevisan (Treviño) * application-appstore: support for ApplicationScrollSignal method (6adb897) * indicator-application: catch "scroll-entry" signal and send ApplicationScrollSignal to appstore (e6f4e51) 2011-01-26 Ted Gould * Protecting against empty application lists, fixing the builder to be on the stack and using it correctly. (0bd9ddc) 2011-01-18 Ted Gould * Switch to canonical.com (85761bc) 2011-01-17 Ted Gould * Changing the name of the approver interface (2e57848) 2011-01-14 Ken VanDine * releasing version 0.2.91-0ubuntu2 (7ac8601) * Updated for the gir abi transition; debian/control - build depend on dbusmenu >= 0.3.90 - Fixes FTBFS (LP: #684949) (fe9f030) * releasing version 0.2.91-0ubuntu1 (81a4a72) * Import upstream version 0.2.91 (9dee1e2) * Reverted changelog for merge (93ada25) * distcheck fixes, use notdir to wrap basename (ada08ac) (tag: 0.2.91) * Version bump, 0.2.91 (d0fa7ae) 2011-01-14 Ted Gould * Porting to GDBus and fixing some other misc. issus. (1edb21b) 2011-01-13 Michael Terry * merge ken's com.canonical branch (fe8048c) * make sure to free pre-validated applications; add applications to the app list as soon as we create them, to avoid apps that spam us (like gnome-power-manager) from creating multiple apps in our list (a3311f4) 2011-01-13 Ken VanDine * com.canonical rename for the indicator (7f2ea1f) 2011-01-13 Michael Terry * reduce debug spew (3992c95) * don't use cached properties for new icons or new aicons either. Instead, just ask for all properties again (520b3c3) * actually request properties from applications; using cached properties doesn't seem to work (6f02e42) * don't second guess service's new application, which caused our positions to get out of sync with the service if it was a bit confused (06e5e14) * watch for name change, instead of name owner change for approver connections (dcde0f7) 2011-01-12 Michael Terry * fix issue where icons never went away (16734d8) * fix bug with gvariant string; port test (4b0e072) 2011-01-11 Ken VanDine * check for dbusmenu 0.3.90 (1434c5b) 2011-01-11 Michael Terry * port to gdbus (af582ad) 2010-12-16 Ken VanDine * releasing version 0.2.90-0ubuntu4 (54c9e64) 2010-12-10 Ken VanDine * releasing version 0.2.90+r170-0ubuntu1 (bc0f5cc) 2010-12-09 Ken VanDine * releasing version 0.2.90-0ubuntu3 (6e9fee7) 2010-12-08 Ted Gould * releasing version 0.2.90-0ubuntu4~ppa1 (1f80de2) * Upstream Merge * Removing libappindicator from the tarbal. Autogen; debian/control: Removing all libappindicator packages (4b13b78) * Sync to trunk (951f22d) * Remove the library from the build (6c905a6) * releasing version 0.2.90-0ubuntu4~ppa1~nolib1 (961ba26) * debian/control: Removing all libappindicator packages (39febd0) * Autogen (7df1ae5) * Dbusmenu API update (940a2eb) * Updating to new dbusmenu, no API changes here (97fcd26) * Upstream Merge * Removing libappindicator from the tarball (6e142fb) * Updating to trunk with mostly libappindicator changes. (01a3193) * Merge from Ubuntu Desktop for dual builds (3acbfb5) 2010-12-08 Ken VanDine * debian/control - build depend on dbusmenu >= 0.3.90 (b917f6f) * releasing version 0.2.90-0ubuntu2 (a227646) * releasing version 0.2.90-0ubuntu1 (1860f39) * New upstream release. * A race fix on the dbus name (LP: #526499) * Fixing the Watcher Interface * Fixes to build with GTK 2/3 * Fixes to build with valac-0.1. debian/control - Changed the valac build depends to valac-0.12; debian/python-appindicator.install - Make sure python2.6 and python2.7 files get include. debian/rules - Fix builds for multiple python versions - disable parallel builds, it breaks the mono binding generation (be69a42) 2010-12-07 Ted Gould * releasing version 0.2.90-0ubuntu1~ppa1 (c05b64a) * New upstream release. * Fixes to build with GTK 2/3 * Fixes to build with valac-0.12 (4478b59) * Import upstream version 0.2.90 (a413eba) * 0.2.90 (12d94d3) (tag: 0.2.90) * Update to newest g-ir-scanner and vapigen (eef3316) 2010-12-03 Ted Gould * Merging with trunk to get the GTK 3 build. Though, we don't really use it yet. (fe4253d) * Merging in support for GTK3/2 dual build (5ffa185) 2010-12-03 Ken VanDine * Build fixes with the latest g-ir-scanner and vapigen (0a09bca) * Explicitly call ShowAll on the menu, otherwise it isn't show. Specify a panel icon that exists for the example (e7e4604) 2010-12-02 Ted Gould * Fixing up the test so it builds and runs (6456a3f) * Removing some unneeded files (1a1a2e3) * Linking to the install directory of libappindicator for the header files (6e2c639) * Adding the libappindicator dep for the tests (7c3589d) * Dropping the library tests (68fd1cc) * Removing the example (caf5eeb) * Removing the C files and build (8b85dae) * Removing doc and introspection build options (683065b) * Remove m4 files and including them in dist (a5eb518) * Removing LGPL (14aebb7) * Removing bindings (aae875c) * Removing docs (3fee20a) * Removing library deps, bindings and documentation that are included with the lib (938d4e2) * Splitting the deps (69ee3a2) 2010-11-01 Ted Gould * releasing version 0.2.9-0ubuntu2~ppa2 (15d58f5) * Upstream Merge * A race fix on the dbus name (LP: #526499) (ea40161) * Sync to trunk (7ab5839) * Race fixup (9c008cd) 2010-10-20 Ted Gould * releasing version 0.2.9-0ubuntu2~ppa2~race2 (52c2b07) * Upstream Merge * Making a printout (77d4ced) * Uhg, we need a message to know if we've fixed the bug. (b176944) 2010-10-19 Ted Gould * releasing version 0.2.9-0ubuntu2~ppa2~race1 (7fa4cd4) * Upstream Merge * A race fix on the dbus name (ed10f8d) * releasing version 0.2.9-0ubuntu2~ppa1 (5bfdd2a) * Upstream Merge * Fixing the Watcher Interface (f5573ca) * Merge with Ubuntu Desktop (597ba2a) * Add a nice little warning in (ccea5af) * Adding a check for the name to ensure we didn't miss it (3758df5) 2010-10-13 Michael Terry * ship both pc files in EXTRA_DIST (e8289f9) 2010-10-08 Ted Gould * Fixing the Watcher interface (50440e6) 2010-10-08 Aurelien Gateau * NotificationHost => StatusNotifierHost, Service => StatusNotifierItem (ea206ef) * Fix implementation of org.kde.StatusNotifierWatcher interface (6f032f5) 2010-10-06 Michael Terry * instead of always building gtk2 and gtk3, add a --with-gtk= flag to configure to specify which to build with (3551eb1) 2010-09-22 Didier Roche * releasing version 0.2.9-0ubuntu1 (853fe81) * debian/libappindicator0.1-cil.installcligac: Add the 0.1 policy file.; debian/control: - build with latest libindicator-dev for ABI breakage (LP: #637692) (2b4effa) 2010-09-22 Ted Gould * releasing version 0.2.9-0ubuntu1~ppa2 (fbedfce) * debian/libappindicator0.1-cil.installcligac: Add the 0.1 policy file. (d1f389d) * Adding a new library line for configure so that we don't end up with extra libs in the library. (eab2ebe) * releasing version 0.2.9-0ubuntu1~ppa1 (a182b72) * New upstream release. * Fix submenus with Glade applications (LP: #608219) * Add new functions to Mono and Python bindings (a374c74) * Import upstream version 0.2.9 (f5e7b8e) * 0.2.9 (fe08c86) (tag: 0.2.9) 2010-09-21 Ted Gould * Fixes for the bindings (7a891ca) 2010-09-21 Sense Egbert Hofstede * Resolving conflict when merging with trunk (f8bbae1) * Undoing a previous commit that had nothing to do with what I want to achive in my merge request. That's what you get for misusing old branches\! (e9ed8cb) * Created a second policy file to make sure that applications depending on 'appindicator-sharp' will not have to be recompiled. Changes to the packaging is required to make sure the policy file gets installed. (df5dbe2) 2010-09-21 Ted Gould * releasing version 0.2.8-0ubuntu2~ppa1 (76442cd) * Autogen.sh (dca441b) * Upstream Merge * Fix Mono binding versioning and build (LP: #636132) (2491cd3) * Merge ubuntu-desktop (50aa305) * Fixing Mono bindings to build versions correctly. (1be18c5) 2010-09-20 Sense Egbert Hofstede * Remove the redudant set and get functions for the ordering_index property from the Mono bindings as we want programmers to work witht the property directly. (12d7f82) * * Adding Python bindings for the new API additons * Updating the Mono assembly version to reflect the changes to the API * Remove two redundant elements from the Mono bindings' metadata file (3f3c6a0) * Merging Jo Shields' fixes to the build infrastructure to shut GAPI up. (482276f) 2010-09-19 Jo Shields * Bump SONAME in Mono binding to libappindicator.so.1 (316dbc5) * The purpose of a dllmap is to turn a DllImport for "foo" into a dlopen of "bar". This is most commonly used to make apps more cross-platform, by specifying the Windows library name (foo.dll) into a Linux/OSX/etc filename (libfoo.so.0). (4247b7e) * gapi2-parser cannot cope with multiple signals connected to the same method - it will bail out, complaining it cannot find a method to match the second signal. (b598108) 2010-09-18 Sense Egbert Hofstede * Updating to trunk (6c8da9e) * Commit latest changes before merging with trunk (e050bfc) 2010-09-15 Ted Gould * Adding a disthook for AUTHORS (c2aee8a) 2010-09-15 Ken VanDine * releasing version 0.2.8-0ubuntu1 (fee0915) 2010-09-15 Ted Gould * releasing version 0.2.8-0ubuntu1~ppa1 (b8eb440) * * Update the icon if the item is visible (LP: #639643); New upstream release. * Handle double registration of indicators (LP: #621838) (db852e8) * Import upstream version 0.2.8 (c876d26) * 0.2.8 (a4dc11a) (tag: 0.2.8) * Merging of Ubuntu Desktop (859281b) * releasing version 0.2.7-0ubuntu1~ppa2 (9ee069f) * Update the icon if the item is visible (LP: #639643) (fecd2e9) * Upstream Merge * Update the icon if the item is visible (7d4feea) * Merging trunk (f30ec96) * Making it when we see changes we always update the icon. (9485bb3) * releasing version 0.2.7-0ubuntu1~ppa2~attention1 (0e5b5b6) * Upstream Merge * Update the icon if the item is visible (7ccd345) * Allowing updates if the item is visible. (8e221f4) 2010-09-09 Ken VanDine * releasing version 0.2.7-0ubuntu1 (d7a7c77) 2010-09-09 Ted Gould * releasing version 0.2.7-0ubuntu1~ppa1 (4054bd4) * Merge from Ubuntu Desktop (4057700) * New upstream release. * Handle double registration of indicators (LP: #621838) (250c2b0) * Import upstream version 0.2.7 (b6d9801) * 0.2.7 (b39568d) (tag: 0.2.7) * Handle double registration of indicators. (1f5808c) 2010-09-07 Ted Gould * Check for duplicate additions of applications and just rerequest properties. (c560340) * Extra debugging info (01ca0dc) * Logging status change (d18fdf6) 2010-09-02 Ken VanDine * releasing version 0.2.6-0ubuntu1 (5e8e9f5) 2010-08-26 Ted Gould * releasing version 0.2.6-0ubuntu1~ppa1 (d3dcecf) * Merging from Ubuntu Desktop (6e060fd) * New upstream release. (84b7100) * Import upstream version 0.2.6 (17e7865) * 0.2.6 (7b3e58b) (tag: 0.2.6) 2010-08-25 Ted Gould * releasing version 0.2.5-0ubuntu1~ppa2 (166096e) * Upstream Merge * Fixing the position of new indicators (LP: #623205) * Position the ibus and keyboard layout indicators correctly. (87c04ea) * Ordering i18n and keyboard indicators (c74bade) * Putting new icons in the right place (ee3fb93) 2010-08-24 Sense Egbert Hofstede * Merging with trunk (c553ba5) 2010-08-20 Ted Gould * Get the proper position for an application when it becomes visible. (81de048) * Handling the typo (35924b4) * Adding keyboard and ibus to overrides (d74f776) 2010-08-19 Ken VanDine * releasing version 0.2.5-0ubuntu1 (6e18a72) 2010-08-19 Ted Gould * releasing version 0.2.5-0ubuntu1~ppa1 (618737a) * New upstream release. * Allowing approvers to change thier mind (f71709a) * Import upstream version 0.2.5 (101c8ff) * 0.2.5 (b51c1de) (tag: 0.2.5) * Fix approver for function change (ced1792) * releasing version 0.2.4-0ubuntu2~ppa3 (80345b2) * Upstream Merge * Allowing approvers to change thier mind (1c12616) * releasing version 0.2.4-0ubuntu2~ppa2 (1051775) * Adding a signal for approvers to be able to change their mind (0ed6b99) * Merging Ubuntu Desktop (18cbc6a) * Upstream Merge * Making it so the approver actually approves indicators * Fixing a small memory leak (6881133) * Sync to trunk (425894a) * Changing the state machine to have approvers actually aprove things. (e930a47) * Fixing a memory leak Cody noticed. (fbb9323) 2010-08-18 Ted Gould * Flesh out the revise judgement handler to update the list of approvers. (9fc60ae) * Refactor so that there is a function to look for applications. (1865cf3) * Connecting into the signal coming from the approver (ca21363) * Adding a signal to the approver interface (12c8cd4) * Changing function name as well. (a1e4f99) * XAyatana the register interface (1d51365) * Start some approvin' (e71beec) 2010-08-16 Ted Gould * releasing version 0.2.4-0ubuntu2~ppa1~approver3 (82c8332) * Upstream Merge * Fixing approvers retiring off the bus (f1a43bb) * Commenting out debug message (72c93f2) * Making it so that we don't set the proxy to null right away. (fb1811e) * Making the list so that if there are errors we handle them well. (93f92e8) 2010-08-13 Ted Gould * releasing version 0.2.4-0ubuntu2~ppa1~approver2 (c712bf0) * * Making it so the approver actually approves indicators; New upstream release. * Add in ordering IDs * Adding label support into the library * Adding label support into the indicator * Breaking the ABI in order to get more space in the class structure. * Allow the icon theme path to be changed dynamically (LP: #607831); debian/control: Moving libappindicator0 to libappindicator. debian/rules: Moving libappindicator0 to libappindicator1 * Rebuild with the new gobject introspection (61fbb6f) * Upstream Merge * Updating to trunk * Fixing application list (45fc7d9) * Making sure to remove our applications from the list as well. (ba5b85a) * Responding to approver errors like they're approval. (a0023d1) * Uhg, broken merge. (c04a7cf) * Updating to trunk (564b2af) * Freeing the allocated keys. (eadc69d) 2010-08-12 Ken VanDine * releasing version 0.2.4-0ubuntu1 (2840a6f) 2010-08-12 Ted Gould * releasing version 0.2.4-0ubuntu1~ppa1 (2368f53) * New upstream release. * Adding label support into the library * Adding label support into the indicator * Allow the icon theme path to be changed dynamically (LP: #607831. Rebuild with the new gobject introspection (468ac3c) * Import upstream version 0.2.4 (0d7fd31) * 0.2.4 (d81670c) (tag: 0.2.4) * Merging in Ubuntu Desktop branch (47aa858) * releasing version 0.2.3-0ubuntu2~ppa6 (92aca3c) * Upstream Merge * Add in ordering IDs (374ce0d) * Sync to trunk (6769e30) * Switching to using ordering IDs instead of the LRU file. (f6b5ccd) 2010-08-11 Ted Gould * releasing version 0.2.3-0ubuntu2~ppa6~approver1 (91c8163) * Upstream Merge * Making it so the approver actually approves indicators (081c349) * Changing it so that the list of applications has all the applications in it, independent of visible state. (7a4bfc9) * Making sure to only list the visible applications. (98252b2) * Switching the get_position() function to look at the visibility of the applications. (fa45eaa) * Handle the proxy being destroyed, and cleaning up the approver. (d722653) * Simplifying the visual state to just be shown/hidden while letting the status show which icon is shown. (360e8a4) * Switching a few status checks to look at the visible state (0db4eb5) * Make it so that an approver that gets free'd gets removed from the applications list of approval. (4398a69) * Moving some TODOs (ba69049) * Changing the apply_status function to be less about applying the status and more about trying to apply a visual state that can be determined by things like approvers. This means that it doesn't get passed the status. (b7419c3) * Making sure to clean up the approved by list (ddd8746) * Adding a visible state entry to the application structure (a635d68) * Managing the list with the approver returns. (fbdf4bf) * Changing to a list, we're going to need to track who so when they disconnect we can know the state change. (e8b76a6) * Adding a count for the number of approvers that have approved the application. (efd7be1) * Merging in the XLabel branch to handle conflicts. (b7d28a1) * releasing version 0.2.3-0ubuntu2~ppa5~order5 (c1b795e) * Upstream Merge * Various fixes to the ordering index calculation * Putting ordering indexes in the X namespace (1486db2) * Fighting wrap around (f34b5e5) * Better debug printing. (d678c35) * Using unsigned chars for calculating, we want no sign extension. (cfe735b) * We were using the wrong function, we want categories not statuses! (a0c8fb0) * Making a wrapper property for the 'X' domain (9346cf3) * Adding the wrapper properties to the get. (7330f01) * Adding in a wrapper signal (1fbc480) * Adding a set of wrapper properties that can be used by the dbus interface. (ea682be) * Changing the app store (2a0f0b9) * Changing the Dbus interface. (16cdfbc) * Putting the ordering index into the 'x' domain. (818f7c4) * Making it so that applications will pass '0' over dbus if they don't have a set ordering index. (7301841) * releasing version 0.2.3-0ubuntu2~ppa5~order4 (bd56ec8) * Upstream Merge * Cleaning up the ID creation and ordering to put low numbers to the right. (68b7423) * Ignoring the generate id library object file. (0dd2e79) * Instead of using a struct just using multiply, which in all reality, is more clear and the compiler will optimize it for us. (8bfbd55) * Making the categories a case statement. (38c7a01) * Switching to be more opaque, but also more sane. (26d50df) * Flipping the order (fd956d9) * releasing version 0.2.3-0ubuntu2~ppa5 (15f7dee) * Autogen (5d6feac) * releasing version 0.2.3-0ubuntu2~ppa5~order3 (5dcb1d4) * Upstream Merge * Checking to make sure we get a list of keys before using them. * Fixing typo for group name in overrides file. (3e415d5) * Typo (77343b7) * releasing version 0.2.3-0ubuntu2~ppa5~order2 (bceb5ac) * debian/indicator-application.install: Adding in the ordering-override file to this package. (d47d1f1) * Ensuring that we got a list of keys so we don't crash (bdd9c85) 2010-08-11 Sebastien Bacher * releasing version 0.2.3-0ubuntu2 (77beaba) 2010-08-10 Ted Gould * Autogen (3d26f16) * Upstream Merge * Adding in override files for the ordering IDs (21fcf7a) * Checking for an override and applying it. (51de4ce) * Fleshing out the loading overrides function. (de6c40d) * Putting together the pieces to look for override files (f4b22a7) * Adding an override hash table (dad491a) * Installing the override file in the package specific data directory. (73fb38c) * Adding in an override keyfile (6c0afe2) * releasing version 0.2.3-0ubuntu2~ppa5~order1 (1c31b31) * Doc fixes (3a5a1f6) * Autogen (e85c5b2) * Fixing documentation with new API. (79436bd) * Upstream Merge * Add in ordering IDs (3b61df4) * Updating to trunk (a34479e) * Removing the LRU file object. (d2c36a2) * Removing the LRU file (bf3f4c6) * Pulling in the generate ID function as well (961575a) * Setting the ordering ID. (c27a7a9) * Adding in an ordering index for application structures (09e6c21) * I like 'index' better than 'id' -- now everything is consistent. (06c0194) * Adding 'OrderingIndex' and realigning. (1cac2ea) * Providing accessors for the ordering_id property (f04dd09) * Storing the value and allowing the get to use a generated value. (220d6a3) * Uhg, wrong library (4a52e90) * Brining generate-id into the fold (5bffdaf) * Writing a small little function to generate the ID. (bd2b24f) * Adding the ordering id property. (fe604c4) * releasing version 0.2.3-0ubuntu2~ppa4 (e4484ff) * debian/rules: Moving libappindicator0 to libappindicator1 (352c666) * debian/control: Moving libappindicator0 to libappindicator1 (294f162) * Upstream Merge * Breaking the ABI in order to get more space in the class structure. (e2305c3) * releasing version 0.2.3-0ubuntu2~ppa3 (2fd1a6b) * Breaking the ABI so we have more space in the class structure (d7c7a2a) * Upstream Merge * Adding label support into the library * Adding label support into the indicator; Autogen * Upstream Merge * Fixing the check of the function signature (29311fb) * Sync to trunk (0e21b91) * Adding label support into the indicator (87bd896) * Adding label support into the library. (398dce8) 2010-08-09 Ted Gould * Adding the Ordering Index property (c43dd8f) * Start with the ABI break. (afac3d9) 2010-08-05 Ted Gould * Changing the size of the class structure, the reason for the break. (8918685) * Incrementing the major version number (18628e9) * Adding label support (649c799) * releasing version 0.2.3-0ubuntu2~ppa1~label7 (4e4e053) * Updating to trunk (79896b0) * Bringing in indicator stuff (1ba6811) * Syncing with trunk and resolving conflicts (c4045e9) * Fixing merge (d377c94) * Updating to trunk and resolve conflicts (b1daa47) * releasing version 0.2.3-0ubuntu2~ppa1 (9e24b87) * Upstream Merge * Allow the icon theme path to be changed dynamically (LP: #607831) (e4c14f7) * Support dynamically changing the icon theme path. (9291697) * releasing version 0.2.3-0ubuntu2~ppa1~label6 (8ceb58c) * Upstream Merge * Adding a helper update of the icon when rebuilding (141558f) * Updating with helper when rebuilding. (c1aaada) * Tracking the long name along with the application entry. (225167d) * Check for suffix when updating icon as well! (593c6b8) * releasing version 0.2.3-0ubuntu2~ppa1~label5 (085b99e) * Add the ability to toggle the label (83aa68f) * Upstream Merge * Handle label updating and use the guide to guess the size. (7f91215) * Adding the ability to toggle the label on and off (23e9b56) * Showing and hiding the entries with removal. (54c6103) * Reshuffling the signaling and making sure to ref the label. (b17e625) * Not really sure what this TODO meant, so I'm removing it. (38074f5) * Some slight refactoring and comments along with the ability to remove the entries and recreate them. (08a2c88) * Building a label in the case that we don't have one already. (a644617) 2010-08-05 Sense Egbert Hofstede * Partial, segfaulting, fix for LP: #608219, requires GTK+ change attached to same bug report. (1a0c666) 2010-08-05 Ted Gould * Adding updating the guide and label size to the label update signal (62a5f41) * Storing the guide and using it to bound the size of the label. (9c46c11) 2010-08-05 Sense Egbert Hofstede * Passing the updated icon theme path along with the DBus signal, saving a DBus call. (247e5a1) 2010-08-05 Ted Gould * releasing version 0.2.3-0ubuntu2~ppa1~label4 (3a3ea03) * Upstream Merge * Fixing the prototype of the added signal (0450275) * Changing the prototype of the added function. (fff357c) 2010-08-04 Ted Gould * releasing version 0.2.3-0ubuntu2~ppa1~label3 (e4dd5ca) * Fixing the signal prototype (05be20a) * Upstream Merge * Making the test program count to 100 (77b2b6f) * Make sure we get to 100 (1f04ea2) * Fixing the prototype for the label changed signal. (208fc00) * releasing version 0.2.3-0ubuntu2~ppa1~label2 (1e7513c) * Upstream Merge * Fixing the check of the function signature (2ffcd74) * Fix the check for the updated function signature. (b83a74c) * releasing version 0.2.3-0ubuntu2~ppa1~label1 (1baa860) * Adding label support into the indicator (be5cab0) * Upstream Merge * Adding label support into the library (6eeaa49) * Setting the label in the simple client (f2b8083) * If it changes, let's update. (c25bb3c) * If we get passed a label let's make a GTK one for fun. (91c8b42) * Connecting to the application signal for new label and handling it appropriately. (83f5634) * Cast once, be happy (04fd119) * Sending the label and the guide over dbus if we have them. (788b0db) * Start tracking the label and the label guide allong with the other application properties. (0d11bf6) * Whitespace fix (ff9b7b4) * Adding in a base signal handler for the label change (d06c102) * Adding signal for label changing. (4dea77d) * Adding the new entries to the list of the get_apps function. (e33d50b) * Updating signal emition to match new API (d58186a) * Changing prototypes to match DBus API change. (1f1bb2c) * Adding labels to the service interface (faf2859) * Adding defines for the new properties and signal. (4189a76) * Merging in the API changes (8b0b19a) 2010-08-03 Ted Gould * More signalling tests. (43e185e) * Setting up a basic signals test (6882b4c) * Stupid reverse logic in the string comparison. (2925384) * Turning null strings into NULLs (f721168) * Adding a test to set the label and guides a bunch. (a2e95f1) * Signaling when the labels change in the idle loop (52bfc9d) * Putting the new define into the docs (0422fcb) * Reusing the application service marshallers, not beautiful, but it works for now. (84821ec) * Adding in a signal to tell when the label is updated. (fc9d5d4) * Adding the label funcs to the documentation. (e0f472f) * Adding in the convience wrappers (706a72b) * Adding the label and guide fields to the private struct and tying that into the properties. (e541156) * Setting up the label and lable guide properties. (44e84ed) * Adding a property to guide the size of the label (89a5ffe) * These have needed to be ignored for a while. (6de3d6f) * This shouldn't be in Bazaar (9f0e3c6) * Adding the label property and a signal for it changing. (456347a) 2010-07-22 Sense Hofstede * Fixed two G_PARAM_SPECS and made it even more possible to remove the custom icon theme path. (0a8c09e) * Fix wrong naming that caused the signal to be missed (0dbf34a) * Clean-up and renaming variables and functions everywhere to use icon_theme_path for the sake of consistency. (0bbee36) 2010-07-22 C10uD * forgot some files (3fb0e11) * trying to implement runtime theme-path changing (4780617) 2010-07-15 Ted Gould * Updating to Ubuntu Desktop (3f326bd) 2010-07-15 Ken VanDine * releasing version 0.2.3-0ubuntu1 (38feb55) 2010-07-15 Ted Gould * releasing version 0.2.3-0ubuntu1~ppa1 (8faa8b6) * New upstream release. (a32741d) * Import upstream version 0.2.3 (863cd1c) * 0.2.3 (17dea09) (tag: 0.2.3) 2010-07-13 Ted Gould * releasing version 0.2.2-0ubuntu2~ppa2 (76c177b) * Autogen update (c95f517) * Merge upstream * Fixing test for slower machines (35cad52) * Adjusting the tests so they can deal with slow systems better. (37d583e) 2010-07-12 Ted Gould * Ignoring the tester script (e1dc7c0) * Add a fail timeout so this test can't block. (930a79a) * Adding in setting the environment variable to adjust the timeout to be twice as long for slow systems. (8a0649a) * releasing version 0.2.2-0ubuntu2~ppa1 (0de45ad) * Autogen update (791daf2) * Merge upstream * Adding an Approver API to remove things from the AppIndicators. (e273b81) * Putting in a basic approver API. (7ef1834) 2010-07-09 Ted Gould * Need the built headers too (25b69bb) * Oops, with a menu we're all GTK now. (1b89529) * Building up to a formal test (3c43fed) * Filling out the approve function. (12c8596) * Filling out the approver prototype (0bf54f5) * Building an application indicator too! (d7c39d7) * Making the registration async to clean things up, and async is better anyway. (ed8163b) * Some more error handling and better debug messages. (5b41b1e) * Helpful debug info (018bf0e) * Okay, so now we're detecing when the watcher comes up, and registering ourselves as the approver. (fd3e18e) * Adding a new sample approver (8072a97) * When we have new apps we can ask the approver about them. (306a78b) * Looking at all the applications when we get a new approver. (b3a0f3e) * Building the approver structure and putting it in the list. (a281700) * Comments (4f7e748) * Adding some structures for approvers and making them real. (93572f1) * For DBus to real objects, the signal shall travel. (2986445) * Adding a function to bring in approvers (d7c7324) * Sync to trunk (fb4da4a) 2010-07-08 Ted Gould * Sync to Ubuntu Desktop branch (4e2c23b) * Use a private pointer instead of a lookup. (1ddd622) 2010-07-08 Sense Hofstede * Removed all but one calls to the APPLICATION_SERVICE_APPSTORE_GET_PRIVATE() macro (925e3d8) 2010-07-08 Sebastien Bacher * releasing version 0.2.2-0ubuntu1 (22da24c) 2010-07-08 Ted Gould * releasing version 0.2.2-0ubuntu1~ppa1 (8ce01c5) * New upstream release. ∘ Work with updated container signal names (2a931ef) * Import upstream version 0.2.2 (44880df) * 0.2.2 (a627c07) (tag: 0.2.2) 2010-07-07 Ted Gould * Merging this branch, but I think it's fixes must have gone in with another. (cf31f2f) * Working with the better container signals (eed6cf0) 2010-07-06 Ted Gould * Updating to Ubuntu Desktop (033b032) 2010-07-01 Ted Gould * Return a boolean (a8aac3a) 2010-06-25 Ted Gould * Adding in a template function to register approvers. (6cf35d7) * Adding a function to register an approver. (4c9f434) * Adding an approver interface. (a46a27a) 2010-06-22 Didier Roche * releasing version 0.2.1-0ubuntu1 (711cb0b) 2010-06-21 Ken VanDine * New upstream release. * Fix icon updating (LP: #594199) * Change Mono bindings to only parse particular files (LP: #592706) * Make a policy for migrating the mono bindings * Test fixes to make them more reliabl. debian/control: Fixing version numbers; debian/control: Making the 0.1-cil replace and provide the 0.0-ci. debian/libappindicator0.1-cil.installcligac: Add the policy.dll file to the install.; Upstream release 0.0.2 * Updates API to use GTK instead of dbusmenu to make it easier for upstream developers to use. (90a5410) 2010-06-21 Ted Gould * releasing version 0.2.1-0ubuntu1~ppa1 (61a4f68) * Making some files match upstream relases that don't. (1c6a483) * New upstream release. * Fix icon updating (LP: #594199) * Change Mono bindings to only parse particular files (LP: #592706) * Make a policy for migrating the mono bindings * Test fixes to make them more reliable (0ac50a3) * Import upstream version 0.2.1 (3439224) * 0.2.1 (20f0c1d) (tag: 0.2.1) * Fixing versions of concflicts. (458ad9a) * Fixing policy version numbers. (a4976d3) 2010-06-21 Ken VanDine * Don't conflict with libappindicator0.0-cil, just replace and provide (db008b0) * Use full assembly version for the policy file (ac400f7) * Specify versions for Replaces/Conflicts for libappindicator0.0-cil (e48a4c7) 2010-06-21 Ted Gould * releasing version 0.2.0-0ubuntu4~ppa6 (55e7722) 2010-06-19 Michael Terry * use gtk3 versions of dbusmenu and indicator; use appindicator3 0.1 rather than appindicator 3.1 (60abdc2) * first pass at gtk3 version of libappindicator (e1f36a8) 2010-06-18 Ted Gould * Conflicts as well (bec7e4e) * debian/control: Making the 0.1-cil replace and provide the 0.0-cil (591b407) * debian/control: Fixing version numbers (d2a540c) * releasing version 0.2.0-0ubuntu4~ppa5 (b741fd3) * debian/libappindicator0.1-cil.installcligac: Changing version policy applies to. (b1f6a47) * Autogen (fe4f2d9) * Upstream merge * Changing the policy to be for 0.0 (7eac5d7) * Setting the policy version. (9745469) * releasing version 0.2.0-0ubuntu4~ppa4 (955c737) * debian/libappindicator0.1-cil.installcligac: Add the policy.dll file to the install.; Autogen (570ea94) * Upstream merge * Make a policy for migrating the mono bindings (6bee066) * Fix mono versioning. (f9a13d5) * Cleaning up file name definitions (787b920) * Adding the policy config to the installed files. (f23786e) * Switching to the policy name. (c5c2670) * Swithcing the version to be the assembly version. (64a712f) * Fixup the gacutil stuff. Still doesn't ununinstall. (c012b2a) * Fixing policy name (f8f18e9) * Replacing the macros with the proper data (35915da) * Forgot to merge in packaging branch. Linking now. (16680b1) * releasing version 0.2.0-0ubuntu4~ppa3 (b076c2b) * Adding bug number (910aa3a) * Upstream merge * Fix icon updating (LP: #594199) (4eb17f9) * Make icon switching work again. (87d82b8) * Fixing the distcheck by cleaning up (e434b93) * Readjusting so that the policy file is in the same directory as the DLL (c0f6417) * Fixing directories (5ea2df7) * Typo (814bed1) * Generating a policy dll (f399d89) * releasing version 0.2.0-0ubuntu4~ppa2 (ceac804) * Upstream Merge * Change Mono bindings to only parse particular files; Autogen. For fun and profit.; Upstream release 0.0.2 * Updates API to use GTK instead of dbusmenu to make it easier for upstream developers to use. (4b33012) * Sync to trunk (0299891) * Fix mono bindings by restricting gapi2-parser (250a731) * Remove the assert with checking if the value is NULL. (d4f5fa7) 2010-06-17 Ted Gould * releasing version 0.2.0-0ubuntu4~ppa2~icons3 (782f9e5) * Upstream merge * Using class_ref and unref to allocate the type if need be (985eb70) * Use class ref and unref to allocate it if need be. (ce25d4c) * releasing version 0.2.0-0ubuntu4~ppa2~icons2 (c204273) * Upstream Merge * Fixing the enum lookup from nick (28a5a2e) * Reworking to make more clear and use the GEnumValue structure correctly. (e589eca) * releasing version 0.2.0-0ubuntu4~ppa2~icons1 (6ee70d2) * Upstream Merge * Making it so that icons can be changed at any time. (81e0ff2) * releasing version 0.2.0-0ubuntu4~ppa1 (9119e00) * Upstream Merge * Test fixes to make them more reliable (c4314c8) * Icon name shouldn't be construct only. (fc6b18b) * Linking Bug (a835081) * releasing version 0.2.0-0ubuntu4~ppa1~monofix2 (9a0770c) * Autogen. For fun and profit. (b6e10ee) * releasing version 0.2.0-0ubuntu4~ppa1~monofix1 (b62203f) * Upstream Merge * Change Mono bindings to only parse particular files * Test fixes for Hudson builds (dc1a9ec) * Only work with specific files instead of the whole directory. (750406e) * Sync to Ubuntu desktop (53d1e55) 2010-06-14 Ken VanDine * renamed cil binary to libappindicator0.1 to match the assembly version (LP: #592706) (c6734d2) 2010-06-11 Ted Gould * Changing signal names and getting the ones on the base menu as well. (95c7907) * Changing the signal names (34a4af9) * More time for initial fallback. (cdb0efc) * Increase the timeouts, but make it so that the watcher shutsdown when seen. (6eedd6e) * Increasing timeout to hopefully make it work on Hudson with load. (259c519) 2010-06-11 Ken VanDine * renamed cil binary to libappindicator0.1 to match the assembly version (0eb105d) 2010-06-08 Sebastien Bacher * releasing version 0.2.0-0ubuntu2 (52ebd17) 2010-06-07 Sebastien Bacher * releasing version 0.2.0-0ubuntu1 (0fb6915) 2010-06-04 Ken VanDine * New upstream release. * Unref the child that was created * Build GIR and VAPI files (LP: #510610) * Fixes to documentation and enum construction * Fix distcheck * Merging patch to add assembly information to Mono binding (LP: #547195); debian/control: Add GObject Introspection and Vala build dependencies.; Added debian/gir1.0-libappindicator-0.1.install and modified debian/control and debian/libappindicator-dev.install to handle the VAPI and GI files. debian/libappindicator0.0-cil.install: Fixing directory of cli files (83ea782) 2010-06-03 Ted Gould * releasing version 0.2.0-0ubuntu1~ppa1 (ebc5cbf) * Fixing control file (5ffc5c9) * Fixing typo (d5f07a0) * debian/libappindicator0-cli.install: Fixing directory of cli files (fa7673f) * Fixing so files that got lost. (ec772ab) * Getting some files back... where did they go. (d7f06e7) * Added debian/gir1.0-libappindicator-0.1.install and modified debian/control and debian/libappindicator-dev.install to handle the VAPI and GI files. (ead73d0) * Build GIR and VAPI files (LP: #510610) (da48072) * debian/control: Add GObject Introspection and Vala build dependencies. (f50f08a) * New upstream release. * Build GIR and VAPI files * Fixes to documentation and enum construction * Fix distcheck (614e30a) * Import upstream version 0.2.0 (0f7ba97) * Changing revision for merge-upstream (d3216b9) * 0.2.0 (27fe45b) (tag: 0.2.0) 2010-06-01 Ted Gould * Distcheck fixes (3651994) * Merging in trunk (1b748b2) * Fixes to docuementation and making the enums build correctly with gtk-mkenum (e0ddc2d) 2010-05-23 Sense Hofstede * Documentation and introspection fixes and such (01fafa4) 2010-05-20 Ted Gould * Sync to trunk to ensure no conflicts. (0e3c221) * Merging in the 0.1 series branch (ef11b71) * Merging in updates from the 0.1 series branch (f7fd52b) * releasing version 0.0.21-0ubuntu1~ppa1 (7cb5463) * New upstream release. * Adding AssemblyInfo.cs for building (144908d) * Import upstream version 0.0.21 (84e75c6) * releasing version 0.0.20-0ubuntu1~ppa1 (2cbdb9f) * 0.0.21 (6fcbfe5) (tag: 0.0.21) * Build fix to include the AssemblyInfo.cs file (38c5c10) * Forgot to drop the patch (d16ae42) * New upstream release. * Unref the child when created in libappindicator (LP: #569273) * Merging patch to add assembly information to Mono binding (LP: #547195. Remove child-leakage.patch as merged upstream (086d22c) * Import upstream version 0.0.20 (9b028d9) * Desktop sync (bdec505) * 0.0.20 (cd4c6e0) (tag: 0.0.20) * Only grab the app indicator files. (20a976b) * Ignoring the lru file header (29a3d02) * Fixing which sources are marked as BUILT (6efcf99) * Bringing along the AssemblyInfo.cs file and fixing its path (9366eb0) * Okay, now everyone is in the right directory, I think. (a403884) * Need to look for things in the source directory too! (a106e8d) * Fix C includes fro teh VAPI/GIR files (8f8efd3) * Adding GIR/VAPI support and flattening directories (e09b459) * releasing version 0.2.0~dev-0ubuntu1~ppa2 (3c5b3e5) * Upstream Merge * Unref the child that was created (6a47d48) * Woot, trunked (80633ae) * Stopping the leakage of children. (ea79d7f) * Fixing the ref leakage of a child object. (22423f9) 2010-05-20 Sebastien Bacher * releasing version 0.0.19-0ubuntu5 (3096e10) 2010-05-20 Ken VanDine * debian/patches/child-leakage.patch - Fixes a memory leak (LP: #569273) (1e43a91) 2010-05-19 Ted Gould * releasing version 0.2.0~dev-0ubuntu1~ppa2~childleak1 (f777fc6) * Upstream Merge * Unref the child that was created (8620702) * releasing version 0.2.0~dev-0ubuntu1~ppa1 (6293246) * Upstream Merge * kicking off new branch (0f690c2) * Dummy commit (d469436) * Changing it so the object gets unref'd (8566afc) 2010-04-29 Ted Gould * Ignoring built VAPI file (0b09164) * Now, build us a VAPI! (fae0a61) * Fixing the ignore list. (f5c58a8) * Building the GIR file (3ef5fec) * Removing the libappindicator directory to make things simpler (ba1fd39) * Add introspection stuff here (0bd103a) 2010-04-28 Ted Gould * Adding the introspection.m4 for our new rules (27490e3) * Adding introspection and VAPI checks (3dc48c0) 2010-04-21 Sebastien Bacher * releasing version 0.0.19-0ubuntu4 (86518f0) 2010-04-16 Ted Gould * Patch for package names (04a9942) * Sync to desktop (b53899d) 2010-04-14 Sebastien Bacher * releasing version 0.0.19-0ubuntu3 (4f93e61) 2010-04-14 Ted Gould * Sync to Ubuntu Desktop (d15e362) * Merging patch to add assembly information to Mono binding (LP: #547195) (1d8e044) * Adding assembly info for Mono bindings (2c90c6c) 2010-04-14 Cody Russell * Add AssemblyInfo.cs to the Mono bindings. (6b3689e) 2010-04-14 Sebastien Bacher * releasing version 0.0.19-0ubuntu2 (73b7491) 2010-04-14 Ted Gould * debian/control: + Set libappindicator0-cil and libappindicator-cil-dev to Arch: all + Make libappindicator0-cil depend on libappindicator0 >= ${source:Version} instead; debian/rules: + Fix ordering of dh_*cli* (LP: #560095. debian/libappindicator0-cil.install, debian/libappindicator0-cil.installcligac: + Fix CLI policy breakage: - Wrong installation paths for GAC'd CLI libraries - Direct installation of GAC'd libraries (d38c39a) * Sync to desktop (abb09f2) 2010-04-13 Neil Jagdish Patel * Add G_LOG_DOMAIN support to the various targets for better messages (7210a54) 2010-04-01 Sebastien Bacher * releasing version 0.0.19-0ubuntu1 (40b74a1) 2010-04-01 Ted Gould * releasing version 0.0.19-0ubuntu1~ppa1 (734b874) * New upstream release. * Don't set the fallback timer if we're already in a fallback mode to avoid unfalling back excessively. (LP: #529052) * Fix distcheck of documentation (45e7b47) * Import upstream version 0.0.19 (d005a22) * Disable merge mode (70600e1) * 0.0.19 (1fbc5af) (tag: 0.0.19) * Fixing documentation distcheck (2ee85c2) * Moving field documentation into a different comment block so that they're private (ba28468) * Making it so the timer doesn't get set if we're already in the fallback case. (ff63763) * Catch up to trunk (bf2c8f1) * Don't store the panel suffix, just add it for the fallback icons. (5055af8) * Adding in documentation for the private structure. (14aebe4) * Make it so that we don't store the panel-suffix icons but we do use them with the status icon. (5aa064c) * No timer if we're already in fallback. (d6bb68c) 2010-03-30 Ted Gould * releasing version 0.0.18-0ubuntu2~ppa1 (4ed0753) * Upstream Merge * Setup the icons to use the -panel variants even when falling back to status icons. (LP: #547072) * Change python bindings to use _with_path so that they can set the icon path. (LP: #527061) (8ca677a) * Updating to Ubuntu Desktop (2d7ae83) * Merging fix to make it so that python apps can set an icon path. (d3026a2) 2010-03-30 C10uD * Patch 001 from bug 527061 (4bbf4c0) 2010-03-30 Sebastien Bacher * releasing version 0.0.18-0ubuntu1 (fd1ec3c) (tag: 0.0.18-0ubuntu1) 2010-03-29 Ken VanDine * Upstream Release 0.0.18 * Change when there are updates to Check and Radio buttons via their actions. (LP: #542221) * Fixing icon updating with themes and naming fallbacks with the status icon fallback. (LP: #532858) (64eef1a) 2010-03-29 Ted Gould * Tracking the icon name and included the panel suffix for fallback usage. (9fddbf6) 2010-03-25 Krzysztof Klimonda * use gchar instead of for the clarity (1d03452) * Make app_indicator_set_property also set the suffixed icon_name. (5bf0d10) * Make GtkStatusIcon use icons with the panel suffix if available. (64c0273) 2010-03-25 Ted Gould * releasing version 0.0.18-0ubuntu1~ppa1 (dd8d40d) * Upstream Release 0.0.18 * Change when there are updates to Check and Radio buttons via their actions. (LP: #542221) * Fixing icon updating with themes and naming fallbacks with the status icon fallback. (LP: #532858) (5483c83) * 0.0.18 (9919c5e) (tag: 0.0.18) * Fixing tests to use GTK for icon theme fixes. (b4e1960) * Fixing icon changing with fallbacks. (275909f) 2010-03-25 Krzysztof Klimonda * remove g_object_ref_sink call from status_icon_changes (26a1f26) 2010-03-23 Ted Gould * Update to track toggle changes in actions. (105b2a0) 2010-03-22 Krzysztof Klimonda * Use app_indicator_get_icon/app_indicator_get_attention_icon methods to get the right icon. (85400dc) * Move g_signal_connect for the theme-changed signal to app_indicator_init () (c80fe4d) * don't use indicator_image_helper () (16a9a73) 2010-03-20 Krzysztof Klimonda * Fix the missing icon on theme change if old icon has different name (b531c56) 2010-03-19 Sense Hofstede * Make sure the state of GtkCheckMenuItems and GtkRadioMenuItems gets updated even when they're changed via their actions. (c18de95) 2010-03-18 Sebastien Bacher * releasing version 0.0.17-0ubuntu1 (05da30c) (tag: 0.0.17-0ubuntu1) 2010-03-18 Ken VanDine * Upstream Release 0.0.17 * Support GTK's show menu items property (LP: #528527) * Fix status and category nicks in Python bindings (LP: #539858) * Switch domains to org.kde instead of org.freedesktop as spec was never officially approved by that body. (5581a39) 2010-03-18 Ted Gould * releasing version 0.0.17-0ubuntu1~ppa1 (543f7fc) * Upstream Release 0.0.17 * Support GTK's show menu items property (LP: #528527) * Fix status and category nicks in Python bindings (LP: #539858) * Switch domains to org.kde instead of org.freedesktop as spec was never officially approved by that body. (d5717ba) * Sync to Ubuntu Desktop (b839c8a) * 0.0.17 (42de500) (tag: 0.0.17) 2010-03-17 Ted Gould * Fix nicks on Python bindings. (65febbd) 2010-03-16 Sense Hofstede * Make the nicks of the AppIndicatorCategory and AppIndicatorStatus types adhere the specification in the Python bindings as well (Closes: #539858) (414b5f8) 2010-03-15 Ted Gould * Changing from freedesktop to kde as the spec was never approved finally by freedesktop. (9be1c6d) 2010-03-15 Aurelien Gateau * org.freedesktop.StatusNotifier* => org.kde.StatusNotifier* (42fd4ba) 2010-03-15 Sebastien Bacher * releasing version 0.0.16-0ubuntu2 (ddee75a) (tag: 0.0.16-0ubuntu2) 2010-03-15 Ted Gould * Make the icons follow the show menu icons property. (c88bf0b) 2010-03-15 Jan Arne Petersen * Only show images if "gtk-menu-images" settings or "always-show-image" property is TRUE. (4ade827) 2010-03-11 Sebastien Bacher * releasing version 0.0.16-0ubuntu1 (04fecf2) (tag: 0.0.16-0ubuntu1) 2010-03-11 Ted Gould * releasing version 0.0.16-0ubuntu1~ppa1 (0be5c8b) * debian/control: Increasing the libindicator-dev dependency to 0.3.5 to match upstream. (079ae03) * Upstream release 0.0.16 * Use libindicator icon loading helper * Workaround for label changes on GtkActions * Testing fix for using xvfb (837d679) * Update to ubuntu-desktop (9504966) * 0.0.16 (bf1f152) (tag: 0.0.16) * Adding a two second wait to make seting up Xvfb more reliable. This is similar to xvfb-run. (1720ce3) * Using the new image loader utilities in libindicator (9f09be2) * Switching to use the update function. (6b6a72d) * Upping libindicator required version to 0.3.5 (b3f9c44) 2010-03-10 Ted Gould * Removing design team size (c9b8c0a) * Also using the helper when changing icons. (e785284) * Switching to using the libindicator image helper (249bcd9) 2010-03-08 Ted Gould * Workaround to make action label updates get caught and update the label. (a503e71) 2010-03-08 Jan Arne Petersen * Listen also to label changes on actions related to menu items to workaround a gtk+ bug. (27a7bb9) 2010-03-04 Sebastien Bacher * releasing version 0.0.15-0ubuntu1 (8dcf6e3) (tag: 0.0.15-0ubuntu1) 2010-03-04 Ted Gould * releasing version 0.0.15-0ubuntu1~ppa1 (3174368) * Upstream release 0.0.15 * Icon size fix to 22 px * Status icon correctly removed in fallback * Fixed test suite to run better on slow machines. (03519bd) * 0.0.15 (fa72360) (tag: 0.0.15) 2010-03-02 Ted Gould * Lengthing kill timer to be a little longer for slow systems. (588e856) * Fixing application icon size. (1323afb) 2010-03-01 Ted Gould * Switching from hide to visible. (cda145d) 2010-02-28 Ted Gould * Merge with Ubuntu Desktop (d7ff915) 2010-02-27 Chris Coulson * Use gtk_status_icon_set_visible to hide the status icon. GtkStatusIcon is not derived from GtkWidget, so gtk_widget_hide doesn't work (70c46ca) 2010-02-26 Ted Gould * Switching from menu size to design team size (cc62e3c) 2010-02-25 Sebastien Bacher * releasing version 0.0.14-0ubuntu1 (55be444) (tag: 0.0.14-0ubuntu1) 2010-02-25 Ken VanDine * Upstream release 0.0.14 ∘ Fix mono bindings to include proper metadata (LP: #526620) ∘ Send connection changed signal when the proxy is created and destroyed (LP: #527082) ∘ Hide the fallback status icon before unrefing it. (LP: #526041) ∘ Increase dbus-glib version check to 0.82 ∘ Handle menu layout changes and visibility changes better. ∘ Improve testing stability ∘ Read menu sensitivity on startup. ∘ Handle null strings when evaluating whether we have an attention icon. ∘ Remove dbus objects when we fallback ∘ Disconnect client_menu_changed signal handlers on cleanup. ∘ Handle cases where the menu gets unset on updates. ∘ Fix custom labels on stock items. ∘ Adds support for submenus (089972e) 2010-02-25 Ted Gould * releasing version 0.0.14-0ubuntu1~ppa1 (23541b9) * Upstream release 0.0.14 ∘ Fix mono bindings to include proper metadata (LP: #526620) ∘ Send connection changed signal when the proxy is created and destroyed (LP: #527082) ∘ Hide the fallback status icon before unrefing it. (LP: #526041) ∘ Increase dbus-glib version check to 0.82 ∘ Handle menu layout changes and visibility changes better. ∘ Improve testing stability ∘ Read menu sensitivity on startup. ∘ Handle null strings when evaluating whether we have an attention icon. ∘ Remove dbus objects when we fallback ∘ Disconnect client_menu_changed signal handlers on cleanup. ∘ Handle cases where the menu gets unset on updates. ∘ Fix custom labels on stock items. ∘ Adds support for submenus (579c1e0) * 0.0.14 (bc5b940) (tag: 0.0.14) * Ignoring everything. (ddbb7c0) * Changing the metadata to have the proper signal names in it. (806f651) * Emitting the connection changed signal when the proxy is created and destroyed. (464e29f) * Hide the status icon when unref'd (bb72be9) * Hiding the notification icon before unreffing it. (1cfa837) 2010-02-25 Sense Hofstede * Do send the connection-changed signal, in check_connect() -- when a new connection is established -- watcher_proxy_destroyed() and app_indicator_dispose() (Closes LP: #527082) (e8fe4dd) * Correct the Mono bindings metadata to properly bind with the signals (Closes LP: #526620) (2aec0b9) 2010-02-23 Ted Gould * Sync to Ubuntu Desktop (9d1ecc8) 2010-02-23 Sebastien Bacher * releasing version 0.0.13-0ubuntu8 (b42f475) (tag: 0.0.13-0ubuntu8) 2010-02-23 Ted Gould * releasing version 0.0.13-0ubuntu8~ppa1 (1d1afe2) * debian/control: Checking for dbus-glib >= 0.82 (0d3da8e) * Upstream Merge * Checking for dbus-glib version 0.82 (50aff10) * Adding a check for dbus-glib version. The patch to unregister requires v. 0.82 (1572f64) * Updating to ubuntu-desktop revision (8af2c8c) * releasing version 0.0.13-0ubuntu3~ppa4 (cbdd6a7) * Handling the visibility of menus better (1e5be58) * Upstream merge * Fixing automatic updating of menus * Handling the visibility of menus better * Improve testing to be more reliable * Handle null string attention icons (8c0532f) * Fixes to get the menus updated and visibility all handled nicely. (2fdd555) * Updated patch for the visibility field (100dd09) 2010-02-23 Jan Arne Petersen * Second patch on 524150 (44ff7ab) 2010-02-22 Ted Gould * releasing version 0.0.13-0ubuntu3~ppa3~menu3 (4589ee8) * Upstream Merge * Blocking tearoffs (1b76f58) * NO TEARY! (78429e8) * releasing version 0.0.13-0ubuntu3~ppa3~menu2 (bc743fa) * Upstream Merge * Using foreach instead of forall (0940357) * Looking at children with foreach instead of forall (1d6eba2) * releasing version 0.0.13-0ubuntu3~ppa3~menu1 (3676f11) * Upstream merge * Menu updates connections (dd2a9a5) 2010-02-22 Jan Arne Petersen * Creates and event handler for the add and remove signals to recreate the menu (75ccac5) 2010-02-22 Ted Gould * Making the fallback test more robust on slow systems. (225f291) * Fall out of the while, sometime, if we really think it's not recoverable. (bf13c7a) * Trying to make the test a little more robust by waiting for the other process to register on the bus, and then waiting. (a067b5b) 2010-02-22 Sebastien Bacher * releasing version 0.0.13-0ubuntu7 (d0087bc) (tag: 0.0.13-0ubuntu7) 2010-02-22 Ted Gould * Patch to read sensitivity on startup. (e5612de) * Fixes bug 522151 (7b02e4c) 2010-02-22 Jan Arne Petersen * Set the sensitive state when starting out. (271d86b) 2010-02-22 Ted Gould * Properly look for null strings in the attention icon. (0135db5) 2010-02-19 Ted Gould * Improving the dbus tests so that they have a mock watcher in them. (96f2eb9) * Adding a mock server here as well (7e683f7) * Putting in a mock watcher so we don't fall back. (e035620) 2010-02-19 Martin Pitt * releasing version 0.0.13-0ubuntu6 (05db164) (tag: 0.0.13-0ubuntu6) 2010-02-19 Ken VanDine * set to UNRELEASED (5308b54) * Cherrypick fix to check for a null string as the attention ico. Cherrypick fix to remove the registration of dbus objects (LP: #497870) - lets us drop debian/patches/unregister.patch (a889ee7) * Cherry picked fix to check for a null string as the attention icon (b1e72a5) 2010-02-19 Ted Gould * Checking for a null string as the attention icon. (780acae) 2010-02-19 Martin Pitt * releasing version 0.0.13-0ubuntu5 (494d1b1) (tag: 0.0.13-0ubuntu5) 2010-02-19 Ken VanDine * debian/patches/unregister.patch - Fix to remove the registration of dbus objects (LP: #497870) (d90b4c3) 2010-02-19 Ted Gould * Fix to remove the registration of dbus objects (435edba) * Attaching bug (b0a873f) * Removing debug output (b79a5bb) 2010-02-19 Jan Arne Petersen * Fix to unregister the object (9012c49) 2010-02-17 Ted Gould * Disconnect signal handlers when unreffing the menu. (42e1e57) 2010-02-17 Sebastien Bacher * releasing version 0.0.13-0ubuntu4 (2ac7533) (tag: 0.0.13-0ubuntu4) 2010-02-17 Cody Russell * Disconnect 'client_menu_changed' in dispose method. (715d752) 2010-02-16 Ted Gould * releasing version 0.0.13-0ubuntu3~ppa2 (386128a) * Upstream Merge * Fixing a crash by checking for NULL (66e7fd1) 2010-02-16 Cody Russell * Check priv->menu for non-NULL (de406e5) 2010-02-16 Ted Gould * releasing version 0.0.13-0ubuntu3~ppa1 (99f3dd5) * Upstream Merge * Submenu support * Updating menus (1b3b3fe) 2010-02-16 Sebastien Bacher * releasing version 0.0.13-0ubuntu3 (60b206c) (tag: 0.0.13-0ubuntu3) 2010-02-12 Ted Gould * Fixing visibility changes and when menuitems get added and deleted. (2cc377b) 2010-02-12 Cody Russell * Minor cleanup (84137b6) * Change the indentation for this case to be the same as the others. (e18cf83) * Just to be safe, let's connect these at the end. (1c7a301) * Use dbusmenu_menuitem_property_set_bool(), and also fix some indenting. (02b6144) 2010-02-12 Ted Gould * Fixing labels on stock items. (350a701) 2010-02-12 Cody Russell * Handle menuitem visibility changes, and additions/removals from menus. (8b257dc) 2010-02-12 Sense Hofstede * * When a GtkImageMenuItem has got a stock icon set don't just assume it's also using the stock label, but check first. (Closes: #520048) (e192dea) 2010-02-12 Ted Gould * Updating to Ubuntu Desktop (5fef5a2) 2010-02-12 Sebastien Bacher * releasing version 0.0.13-0ubuntu2 (be1ce77) (tag: 0.0.13-0ubuntu2) 2010-02-11 Ted Gould * Adding in submenu support. (a98fd45) 2010-02-11 Cody Russell * Submenus (af5ac81) 2010-02-11 Ken VanDine * releasing version 0.0.13-0ubuntu1 (4102c4d) (tag: 0.0.13-0ubuntu1) 2010-02-11 Ted Gould * releasing version 0.0.13-0ubuntu1 (f7b909c) * Upstream release 0.0.13 * Changing the menu property to be a proper DBus object path * Make object paths unique by including application IDs in them (bbebb7a) * Sync to Ubuntu Desktop (a94ef5f) * 0.0.13 (14abe9a) (tag: 0.0.13) * Fix to make the dbus paths unique by using the ID of the application. (0e783eb) 2010-02-10 Ted Gould * Making sure our new tests with gtk_init() in them have an X server to talk to. (ec5e7ea) * Building a menu so this item will show (6f79c17) * Moving the clean_id code to get set when we set the ID and checking for it when building the menu. (cc9f014) * Changing to ID based naming and setting a menu to get init (8418f3a) * Creating a clean ID that doesn't take any illegal dbus characters and using that in the path. (aafaa31) * Making the menu path also include the ID (907253f) * Making it so that you can't set an ID twice instead of just issuing a warning. (f5b69fe) * Moving the registration of the object to when we want to connect everything, and making the path include the item ID to ensure it's unique. (370c87f) * Switching menu property to be an object path. (07cba33) * Falling back on string if that's what we get. Makes things compatible. (8be6fe7) 2010-02-08 Ken VanDine * releasing version 0.0.12-0ubuntu1 (c9d339f) (tag: 0.0.12-0ubuntu1) 2010-02-08 Ted Gould * releasing version 0.0.12-0ubuntu1~ppa1 (b881da9) * Merging in ubuntu-desktop (ef5c412) * Upstream release 0.0.12 (c5ba9dd) * 0.0.12 (fb4952b) (tag: 0.0.12) * releasing version 0.0.11-0ubuntu1~ppa3 (c21b71a) * Upstream Merge * Handling the service restarting better by removing the icons after a small delay to ensure they don't return. * Fixing a crash where a proxy was created while the previous one was being destroyed. (89972d2) * Handling the service resetting much better. Clearing out the old, but after ensuring they won't come back. (e6056c5) * releasing version 0.0.11-0ubuntu1~ppa2 (08f04e0) * Cause the proxy to get built outside of the other proxy destroy callback. (a11cf7a) * Upstream Merge * Fixing copying of the attention icon * Adding status changing to the example application * Adding a test for status changing getting sent over DBus. (585f9e3) * Sync to trunk (821e845) * Fixing status updates and adding tests to help debug status changing. (c273ac9) 2010-02-06 Ted Gould * Ready to recieve the boxed type on the other side. (28b0ba5) * Changing the type of the property and setting it with boxed (035f565) * Boolean again! (b3be172) * Adding check to look for privates gotten on invalid objects. (ffbe6e8) * Handling if we get duplicate entries added, just recycling. (aca3270) * Now we're actively killing. (85b920f) * Setting up the disconnected helpers and structure. (2440214) * Changing the proxy to only build if we need it, and not destroy itself on killing the process. There's really no reason for that. (130e93c) * Making room for a disconnected function. (87a7acd) * Putting the proxy construction in an idle function. (5f4f1eb) * Reffing the connection so we ensure that we have it even when folks die. (53bb574) * releasing version 0.0.11-0ubuntu1~ppa2~aicon1 (3f35b1d) * Upstream Merge * Fixing grabbing of attention icon (f6ea519) * Getting the wrong string for the Attention Icon when looking at the properties (987c4b5) * More logging from our app indicator on icon changes (c2e186c) * Adding a menu item to toggle the attention state. (5b94301) * Making sure the client has time to setup. (982498c) * Changing to 100 instead of 1000 (b9152c3) * Lengthening the time a little bit to make sure we don't miss messages. (74c6657) * Now setting status ALOT (d004765) * Loose the timeout (39bf2cc) * Adjusting the status test to watch for toggles (119bd7a) 2010-02-05 Ted Gould * Typo (d27570e) * Adding a test for changing the status. Just a copy of the standard dbus test. (1a8b83c) 2010-02-04 Sebastien Bacher * releasing version 0.0.11-0ubuntu1 (b8830e1) (tag: 0.0.11-0ubuntu1) 2010-02-04 Ted Gould * releasing version 0.0.11-0ubuntu1~ppa1 (5bd2875) * debian/control: Increasing dbusmenu* deps to 0.2.2 (1e12054) * Upstream release 0.0.11 * Interoperability Fixes * Adding in XVFB support for tests * Adding support for icons with the '-panel' suffix (33edaca) * 0.0.11 (f8ab455) (tag: 0.0.11) * Interop fixes. (8808bcb) * Migrating to the new dbusmenu (4f81ab9) * Merging in signal change. (b6cda58) * Changing the #defines (b3f174d) * Upping Dbusmenu required version (5f2baa8) * Wrong srcdir (901d87f) * Wrong filename (a313884) * Adding in XVFB support (a8b197a) * Getting run-xvfb on the tests (8398c58) 2010-02-03 Aurelien Gateau * Merged timestamp fix (4fc1824) 2010-02-02 Aurelien Gateau * icon -> icon-name sensitive -> enabled toggle-checked -> toggle-state toggle-state type is now an int (770470f) 2010-02-02 Ted Gould * Changing the prototype of the activate signal (4b0a319) 2010-02-01 Conor Curran * Checking for the nunit dependency with a specific version. (3a8354f) * changed dependency nunit2.4 to nunit since this is the name of the package (aa89c97) 2010-02-01 Ted Gould * Fixing the name of the enum strings to match the StatusNotifier spec. (d6090e4) * Adding code to look for special panel versions of the icon with a '-panel' with the AppIndicators. (ae7bfd4) * Changing the suffix to 'panel' (8a8c965) 2010-01-27 Ted Gould * Changing the category in the fallback test as well. (c73f5af) * Changing strings in the test suite as well. (d415cb6) * Changing the strings in the #defines here, but really we should be using the enum. (53821e9) * Making it so there is another level of translation so that we can use different strings in the enum. (1b40a68) 2010-01-24 Ted Gould * Truth. Bad, Bad, truth. (e68b4e3) * When setting or changing an icon first check to see if there is a panel specific icon that we should be using. (79cd82f) 2010-01-21 Ken VanDine * releasing version 0.0.10-0ubuntu2 (10c9c76) (tag: 0.0.10-0ubuntu2) * releasing version 0.0.10-0ubuntu1 (6ac376a) (tag: 0.0.10-0ubuntu1) 2010-01-21 Ted Gould * releasing version 0.0.10-0ubuntu1~ppa1 (f25e2f0) * debian/control: Adjusted back changes in 0.0.9-0ubuntu3 as this branch is still on Karmic. Changes are in Lucid. (f5582e9) * Upstream release 0.0.10; debian/control: Adding dependency for json-glib to build. (e38c251) * Updating to ubuntu-desktop branch (9c8e204) * releasing version 0.0.9-0ubuntu1~ppa4 (8140c6f) * Upstream merge * Adding in a file to position the indicator. debian/control: Adding dependency for json-glib to build. (1650aa3) * Sync to trunk (1f9ee73) * 0.0.10 (bb106d1) (tag: 0.0.10) * Require libindicator 0.3.1 (2377df3) * Adding support for a file tracking add and touch times for applications for ordering them. (f2b8365) * releasing version 0.0.9-0ubuntu1~ppa4~order2 (678e097) * debian/control: Adding dependency for json-glib to build. (770afff) * releasing version 0.0.9-0ubuntu1~ppa4~order1 (d4f211a) * Upstream merge * Adding in a file to position the indicators (2c3e17d) 2010-01-20 Ted Gould * Implements the get_location function to place the entires. (a9bf196) * Looking at the last touch date of entries as we're loading the file and removing ones that are very old. (da6242b) * License headers. (0ccf950) * Moving directory and filename into defines (26a0d6f) * Moving the JSON file values into #defines (33644ed) * Fleshing out loading of the LRU file and realizing we need a json-glib dep and the 'category' field in the output. (5317706) * Updating to trunk (surprisingly without conflict) (de65968) * releasing version 0.0.9-0ubuntu1~ppa3 (2062afe) * Upstream update * Ref counting theme directories as they get added and removed * Use the right callback function for fallback (LP: #507975) (78417dc) * Add tracking and refcounting of theme directories. Unregister them when we're done. (38e8ceb) * Use the right function in the fallback. (93d5972) * releasing version 0.0.9-0ubuntu1~ppa2 (0ba7549) * Upstream update * Support getting the app list from a running service. (f279a2d) * Sync to trunk (3d7c9e2) * Merge to get the current list of applications on startup. (b22c464) * Switch to building a string and writing it out instead of async writes as the order doesn't seem to be predictable. (7243272) * Build the directory and some debugging info (39c33f7) * Fleshing out the cleaning and dirtying functions. Now we should write out a file. (de476ff) * Making a sort function that looks at two Apps and determines their ordering. (77f24c0) * Fleshing out touching. (064fd75) * Allocating memory and objects in the lur world (c663b23) * Ref'ing the image and menu so that when we remove them we don't get warnings. (ba6eadc) 2010-01-19 Ted Gould * Switching to inserting in the application array using a sort function. Looking that up in the LRU file DB. (a634890) * Adding in the 'id' and 'category' fields to the application structure. (570fc94) * Protecting our _new a little bit. (e8d4604) * Adding a _new function for the appstore and using it. It now takes the lru file. (08fef8d) * Building the LRU file. (85394de) * Adding some API to our LRU file (2f82ed5) * Sync to trunk (8b32f5e) 2010-01-19 Sebastien Bacher * releasing version 0.0.9-0ubuntu3 (6b648fd) (tag: 0.0.9-0ubuntu3) * releasing version 0.0.9-0ubuntu2 (92c127a) (tag: 0.0.9-0ubuntu2) 2010-01-19 Ted Gould * Attaching bug (f8da1e7) * Changing to use the status wrapper for handling the status signal's different prototype. (3344b7d) 2010-01-19 Cody Russell * Handling duplication applications getting added. (0b8b85b) * Move the check for duplicates. (e9fafdf) 2010-01-19 Ted Gould * Adding an object to start tracking the lru of the app indicators (f8d65da) 2010-01-15 Ted Gould * Cleaning out dead code and turning a printout into an assert. (9c545b7) * releasing version 0.0.9-0ubuntu1~ppa2~applist2 (fd7d6e6) * Upstream update * Simplify and correct the structure handling. * Pass the correct object path over the bus. We want the menu. (e709d9b) * Using the menu path instead of the item path. (93f32fd) * Using a straight value array and making sure to pass the application (2579e9f) * releasing version 0.0.9-0ubuntu1~ppa2~applist1 (36e7fd1) * Upstream update * Support getting the app list from a running service. (a75c3de) * Fleshing out the get_applications function so that we do something with the list we now get. (b447c26) * Setting the proper type for the GValue of an 'o' (8045abd) * Better init value and adding error to prototype. (00cad2e) 2010-01-14 Ted Gould * Returning truth. (eddc0d0) * Need icon path in the list as well. (321ae86) * Fleshing out returning the list of apps already there. (7a001c7) 2010-01-14 Cody Russell * Only add the Application if it doesn't already exist in the appstore. (abd499a) 2010-01-14 Ted Gould * Removing shutdown printf (831a83c) * Actually unref'ing the dir and fixing the truth there. (76ef80d) * Merging in the warnings branch. (c302241) * Debug message for directories. (5a93b5e) * We should have kept ref's to these. (fe7f3dc) * Fleshing out the ref and the unref functions for the theme directories. (3712733) * Adding in our hash table of refs. (9393ffc) 2010-01-14 Ken VanDine * Upstream Release 0.0.9 * Add fallback support for situations where the NotificationWatcher isn't available. (8cc2e35) 2010-01-14 Ted Gould * Forgot to merge in the 'fallback' packing branch. All in sync now. (bd7118f) * Sync to trunk (4d4273f) * releasing version 0.0.9-0ubuntu1~ppa1 (8240163) * Upstream Release 0.0.9 * Add fallback support for situations where the NotificationWatcher isn't available. (6e43740) * 0.0.9 (f0104e1) (tag: 0.0.9) * Update to desktop. (e43ee66) * Fallback support to XEmbed based notify item. (39b0dc9) * Returning the icon we've created. (09442ab) * Making a more descriptive error on 'unfallback' not existing. (2bfabeb) * Using better naming for 'do_it_now' parameter. (544ac3a) 2010-01-14 Ken VanDine * [merge] Upstream release 0.0.8 (1a2eabc) 2010-01-13 Ted Gould * Realized that we didn't really use the 'notify' signal... now using the better ones anyway. (c303c0c) * Making it so that the icon will update in the fallback case with changes to the properties of the AppIndicator. (c26cab9) * Showing the toggle_item as well as the others. (67493d4) * Popping up menu on activate. (6068e6c) * Showing items in sample (10521bb) * Adding in a get_menu function. (9489aa2) * releasing version 0.0.8-0ubuntu1~ppa2~fallback5 (b83df5e) * Upstream update * Looking at StatusIcon fallback (15176e3) * Connecting to the activate signal (bf390ec) * releasing version 0.0.8-0ubuntu1~ppa2~fallback4 (556b0bc) * Upstream update * Removing the 'destroy' signal handler (1583b1b) * Remove the 'destroy' signal handler before destroying the watcher proxy. (ef95891) * releasing version 0.0.8-0ubuntu1~ppa2~fallback3 (8baa1ed) * Upstream update * More checking. (c1d9e7d) * Checking more for whether we have an APP_INDICATOR object (e67b856) * Explicitly checking for the APP_INDICATOR. Confused. (303db3c) * releasing version 0.0.8-0ubuntu1~ppa2~fallback2 (df2c07b) * Upstream update * Checking fallback function params (b7f9aaf) * releasing version 0.0.8-0ubuntu1~ppa2~fallback1 (519e03c) * Checking for the status of the variable getting passed in. (6023693) * Upstream update * Fallback support (21c5cc4) * Fleshing out the fallback function, so it should create an icon. (b1b9134) * Really we should have gotten the final cleanup unfallback, which we weren't testing for either. (5d07598) * Getting the class the proper way (88c99ac) * Clear the fallback timer pointer after using it. (89aa4a7) * Adding a function to watch if the watcher proxy gets destroyed. (c959db1) * Removing a warning. (06a6bb7) * Making sure to return a value so that unfallback gets called. (5898ca0) * Calling the unfallback function if we're doing this for the second time. (5739297) * Ignoring the generated fallback test itself (3ac18fb) 2010-01-12 Ted Gould * Setting up a dbus proxy and starting to look at owner change events on it when we don't have a NotificationWatcher to look at. (7e0feb2) * Adding a menu so that the app indicator will init (f55bf25) * Wrong class function (bded6da) * Adding the fallback test to the suite (7783a49) * Adding state transitions that'll get us to a passed state. (9a21024) * Adding a kill function and letting the test fail over it. (a216db2) * Printing status in watcher (d0abe1e) * Adding in the item side of things. (cc31c23) * Woah, this is pretty sweet. I hope it works. (348bcfb) * Getting the start of the fallback tests in place. (4a1b722) * Setup the fallback timer and flesh out it's actions. (36d47b5) * Fallback timer pointer lifecycle. (9518459) * Some comments (7e5e095) * Start timer fallback (40d3056) * Updating to trunk (b2198be) 2010-01-12 Ken VanDine * merged 0.0.8 (2ceb846) * Upstream Release 0.0.8 (0eea33a) 2010-01-12 Ted Gould * releasing version 0.0.8-0ubuntu1~ppa1 (5ca2ed3) * Upstream release 0.0.8 * Mirror icon changes over dbus (44efa30) * 0.0.8 (abd41dd) (tag: 0.0.8) 2010-01-12 Cody Russell * Mirror the icon changes over dbus (6fe9571) 2010-01-12 Ken VanDine * autoreconf (7e77e90) * debian/patches/mono_bindings_fix.patch - Mono bindings fixes (LP: #505923) (6d6c8e4) 2010-01-12 Cody Russell * Remove debugging code (6ae0ede) 2010-01-12 Ted Gould * releasing version 0.0.7-0ubuntu1~ppa5 (06145a0) * Upstream update * Distcheck fixes to tests and cleanfiles (c20fb45) * Adding the middle API file to the cleanfiles for distcheck (0fda6a0) * Fixing the path for the tests. (bd7a48f) 2010-01-11 Ted Gould * releasing version 0.0.7-0ubuntu1~ppa4 (f905b80) * Upstream update * Better default object names. (356a1ce) * Updating path names to have more reasonable defaults. (d104014) * releasing version 0.0.7-0ubuntu1~ppa3 (807982e) * Upstream update * Fixes for the mono binding properties (481ad31) * releasing version 0.0.7-0ubuntu1~ppa2 (983ceaf) * Upstream Merge * Sensitivity to label changes (ed18ce8) * Sync to trunk (2e6c62f) * Fixes for the mono bindings to make the properties work with enums and the #define'd string names. (e04e32f) * releasing version 0.0.7-0ubuntu1~ppa2~mono1 (4d42c62) * Fixing makefiles (8bb5b38) * Adding back in the MIDDLE_API and sed magic (d6ae58e) * Upstream update * Fixes for the mono binding properties (1e13ebd) * Removing the middle API stuff and cleaning up Makefile (f466763) * Cody's customs (d09369b) 2010-01-11 Cody Russell * Mono binding fixes. (af45b19) 2010-01-11 Ted Gould * Adding in customs support (9c04a32) * Use sed to get rid of the #defines (bebf565) * Switching the metadata to not use #defines (9035e52) * Initing and destroying the status_icon variable (f8d6a7d) * Having better default paths that look a little more professional. (73afc35) * Setting the fallback functions so that we can go round trip on setting up this API. (d8c7246) 2010-01-11 Cody Russell * trunk merge (b7ec550) * Label fu (724261a) 2010-01-11 Ted Gould * Adding in the class functions for handling the fallback. (2a91387) 2010-01-11 Cody Russell * Watching several properties and updating them as they change. (e979943) 2010-01-08 Ken VanDine * debian/control - bump build depends version of libdbusmenu to 0.2.0 (820eb75) * Upstream Release 0.0.7 * Making the Notification Watcher register for it's own DBus name to keep the service one unique. * Adding support for icons changing through the service and in the indicator. * Fixing the generated headers for DBus Properties calls * Fixing libappindicator set_icon to set the right icon. * Adding in icon path support. * Switching DBus interface to org.freedesktop * Adding check/radio support to menu parsing * Adding ChangeLog to dist * Adding check item support to menu parsing (64df46b) 2010-01-08 Cody Russell * Remove debugging code. (b56f250) * Watch for changes to label and sensitivity. (ecb11f0) 2010-01-08 Ted Gould * releasing version 0.0.7-0ubuntu1~ppa1 (c1010b6) * Upstream Release 0.0.7 (54708c2) * 0.0.7 (5787ec0) (tag: 0.0.7) * Merging with the desktop branch (a7e0e79) * releasing version 0.0.6-0ubuntu1~ppa6 (21f677f) * Upstream merge: * Making the Notification Watcher register for it's own DBus name to keep the service one unique. (a3bf98e) * Making the Notification Watcher get it's own interface name. (e5fbe72) * releasing version 0.0.6-0ubuntu1~ppa5 (7f93d0d) * Upstream merge: * Adding support for icons changing through the service and in the indicator. * Fixing the generated headers for DBus Properties calls * Fixing libappindicator set_icon to set the right icon. (7a78594) * Sync to trunk (c4b431a) * Supporting icons changing and status changing. (98237f0) * Reactivate kill switch (bb71fc2) * Making applications register to the watcher address so they work on KDE (8d0d0e4) * Make the watcher register it's own name (34bb6cb) * Making the service have a name different than the watcher interface. (087c7f0) * Icons branch (d8cb0ba) * releasing version 0.0.6-0ubuntu1~ppa4~icon2 (8e8fc16) * Fixing everything by putting the slots on correctly. (6c2b2fd) * Putting the signal on the Class instead of the Instance. (5f797d7) * Debug message cleanup. (f8e9a51) * Fixing shutdown signal, but disabling for now (7970210) * When destroying the application free all the proxies. (12aab96) * Fleshing out some of the remove function. For some reason the appstore is getting disposed, but that's the next thing to look at. (ad42e10) * releasing version 0.0.6-0ubuntu1~ppa4~icon1 (ae5ff4b) * Syncing with all the other branches.; Upstream update * Adding in icon path support.; Upstream update * Switching DBus interface to org.freedesktop * Adding check/radio support to menu parsing; Upstream update * Adding ChangeLog to dist * Adding check item support to menu parsing (4e91ad3) * Updating to trunk (96e4332) * Syncing to final icon-path changes (5d97173) * releasing version 0.0.6-0ubuntu1~ppa4 (aaa7438) * Upstream update * Adding in icon path support. (e824c0b) * Sync to trunk (a12df72) * Final icon-path merge. (2b000f7) * Sync to karmic packaging branch (458b67c) * releasing version 0.0.6-0ubuntu1~ppa3 (ab7949f) * Upstream update * Switching DBus interface to org.freedesktop * Adding check/radio support to menu parsing (d5b5933) * Adding in the ability for applications to specify a directory path to get added to the icon theme search path. (a575382) 2010-01-08 Aurélien Gâteau * Changing to freedesktop.org namespace and fixing some of the function names and interfaces that weren't matching the FD.o spec. (1c834b9) 2010-01-08 Aurelien Gateau * Merged lp:~ted/indicator-application/fdo (5f86c72) 2010-01-08 Ted Gould * Adjusting so that we use the parameter if it's not an object but a path. (0c8cf85) * Using the #defines for the property names instead of strings. Define them once. (8226d6c) * Changing the property to 'IconThemePath' to make it more clear about what it adjusts. (83b4f68) 2010-01-08 Sebastien Bacher * Typo in documentation using wrong values for the enum. (d7719b9) * Use correct status syntax in the api description (lp: #504700) (69f4b95) 2010-01-07 Ted Gould * releasing version 0.0.6-0ubuntu1~ppa2~icon4 (8fdbf38) * Upstream merge: * Fixing the generated headers for DBus Properties calls * Fixing libappindicator set_icon to set the right icon. (a375e41) * Pretty major cut and paste error. Wrong icon. (cb14ba3) * Changing dbus-properties header to be static and not built from the XML as it needs a fix. (d1fbe4a) * releasing version 0.0.6-0ubuntu1~ppa2~icon3 (8ddab95) * Upstream merge: * Adding support for icons changing through the service and in the indicator. (2fef3d4) * Merging in the icon_path branch to start to handle conflicts from there. (b1ffef3) * A small refactoring of the code to get the position of an application. (2cc15ba) * Fleshing out the signal functions for updates. Some do more callbacks. (4abe47b) * Moving the list of applications management into the state change function. This makes it so that we can handle it appearing and disappearing all in one special place. (45e742e) * Adding in a status variable (16fb78b) * Responding to the icon changed signal in the indicator. (655f6d1) * releasing version 0.0.6-0ubuntu1~ppa2 (7f27006) * Adding an icon_changed signal to the application store (2c767da) * Cleaning up signal handlers. (f7e660f) * Upstream update * Adding ChangeLog to dist * Adding check item support to menu parsing (99b4888) 2010-01-07 Cody Russell * Support for check items in the libappindicator menu parser. (e76d63c) 2010-01-07 Ted Gould * Setting up and connecting to the item signals (6d922ea) 2010-01-07 Cody Russell * Toggle events (a60f25e) 2010-01-07 Ted Gould * Allowing for the default path if one is not given. (199f3d2) 2010-01-07 Aurelien Gateau * Revert part of previous revision: pass the path, not the service name to register_status_item (17476bd) 2010-01-07 Cody Russell * More checkbox related updates. (6bde6a4) * Checkmark support (bf0be37) 2010-01-07 Aurelien Gateau * Use org.freedesktop namespace (0aaa6a2) 2010-01-07 Ted Gould * releasing version 0.0.6-0ubuntu1~ppa2~icon2ubuntu1 (13de14e) * Debug message (6575026) * Adding a path based debug message (ad8ca0d) * releasing version 0.0.6-0ubuntu1~ppa2~icon2 (6223c53) * Fixing the signals. (11984c8) * Forgot to adjust the parameter count. (e16d383) 2010-01-06 Ted Gould * Handle the case of no icon path more gracefully, by just passing along the null string. (eec2466) * Ignoring some of the generated files (150a0d7) 2009-12-23 Aurelien Gateau * Previous commit was not meant to be pushed to trunk Revert my mess (dd2ed95) * Make it work on KDE (95b5ea9) 2009-12-20 Ted Gould * releasing version 0.0.6-0ubuntu1~ppa2~icon1 (06b735f) * Adding in icon path support. (28d5fae) * Appending the new icon path to the theme search. (cd57997) * Adding the icon path to the app entry struct (3915de9) * Adding in the icon path to the list of parameters that are passed when we have a new application. (9185eee) * Adding new constructor to docs. (a9c6b6e) * Forgot to get these from the private struct. (b3542e0) * Making the icon-path property construct only and making a constructor to set it. (c44c00b) * Adding the icon_path property to the code. (2f82dde) * Adding of a new property, icon path, to store the path to the icons. (8d4ca51) 2009-12-17 Ted Gould * Adding ChangeLog to tarball (312dadc) 2009-12-17 Ken VanDine * include ChangeLog in EXTRA_DIST (929d2e8) * Upstream release 0.0.6 * Include Python binding * Include Mono binding * Minor bug fixes * Fixing when menus are set twice. (LP: #497812) * Keeping a constant signature for the library instead of building it each time. debian/control, debian/python-appindicator.install: Building a binary package for the python bindings. debian/control: Adding python building build dep. debian/control, debian/libappindicator0-cil.install: Building a binary package for the Mono bindings. debian/control: Adding Mono building build deps (60e78aa) * version bump (951c79d) 2009-12-17 Ted Gould * releasing version 0.0.6-0ubuntu1~ppa1 (75de7c2) * Upstream release 0.0.6 * Keeping a constant signature for the library instead of building it each time. (71a9247) * 0.0.6 (7eb8f46) (tag: 0.0.6) * Using a constant snk file instead of generating it each time. (f789e13) 2009-12-17 Ken VanDine * merged (cca4d63) * merged (4e8176e) * use srcdir for the path to appindicator-sharp.snk (52c77eb) * Don't create the signature during build (af81423) 2009-12-17 Ted Gould * releasing version 0.0.5-0ubuntu1~ppa1 (e173606) * Upstream release 0.0.5 * Include Python binding * Include Mono binding * Minor bug fixes; debian/control, debian/python-appindicator.install: Building a binary package for the python bindings.; debian/control: Adding python building build deps; debian/control, debian/libappindicator0-cil.install: Building a binary package for the Mono bindings.; debian/control: Adding Mono building build deps (2c6df6b) * 0.0.5 (6d8c312) (tag: 0.0.5) 2009-12-17 Ken VanDine * Linking Mono bindings to versioned library and fixing the example with licensing info and a menu. (6a7f7db) * Added license/copyright to the example and un-commented out the code that adds the menu. (84d7e5e) * added libnunit2.4-cil build-depends (c64d79b) * link against the versioned library (d1fbd5d) 2009-12-17 Ted Gould * releasing version 0.0.4-0ubuntu3~ppa4 (3280544) * Upstream updates: * Fixing when menus are set twice. (LP: #497812) (bdff04c) * Fix issue with setting a menu twice by only allocating one dbusmenu server. (d11b8c9) 2009-12-17 Cody Russell * Only create the dbusmenu server if it doesn't exist (09c4ec2) 2009-12-17 Ted Gould * Initing 'menuservice' to NULL (6af83d4) * Only build a dbusmenu server if we don't have one. (f4c9af7) 2009-12-17 Ken VanDine * Moved Build-Depend-indep to Build-Depends (f87e935) 2009-12-17 Ted Gould * releasing version 0.0.4-0ubuntu3~ppa3 (e2f1257) * debian/control: Fixing the libdbusmenu-glib version dep. (24abbb1) * debian/control: Removing architecture independent build dependencies are no architecture dependent. (5918076) * releasing version 0.0.4-0ubuntu3~ppa2 (3995123) * Upstream updates: * Mono build fixes. * Mono metadata file cleanups. (1443165) * Mono build cleanups (4d95601) * debian/control: Adding a build-dep on nunit (d293bbf) * Updates to Mono bindings to make them more Mono-onic. (7219db0) 2009-12-17 Ken VanDine * merged from trunk (33beea5) 2009-12-17 Ted Gould * releasing version 0.0.4-0ubuntu3~ppa1 (c4f20d6) 2009-12-17 Ken VanDine * Upstream release - debian/libappindicator0-cil.install - debian/libappindicator0-cil-dev.install - debian/control (7ebdc97) 2009-12-17 Ted Gould * Integrating a ton of work. (511ef69) * Added mono bindings; debian/rules - don't use gnome.mk, specify all the targets to build python bindings for each supported python version; Adding in Python bindings. * debian/control, debian/python-appindicator.install: Building a binary package for the python bindings. debian/control: Adding python building build dep. debian/control - make libappindicator0 recommend indicator-application; debian/rules: - removed the disable-scrollkeeper configure arg - don't include .la and .a files; debian/patches/clean_up_docs.patch - removed, merged upstream; debian/control: - removed Build-Depend for scrollkeeper - libappindicator-dev needs to depend on libdbusmenu-glib-dev - bump standards version to 3.8.3 - libappindicator-doc doesn't need to depend on libappindicator0 - set libappindicator-doc arch all - make libappindicator-dev depend on libappindicator0; debian/copyright - Include the proper licenses (LGPL-2.1 and LGPL-3) (5aed77c) 2009-12-17 Ken VanDine * Install the assembly in the gac (6af5c99) 2009-12-17 Ted Gould * Upstream work * Python bindings * Mono binding clean up (20a7ac2) * Mono and Pythong bindings living together. (97f6e62) 2009-12-16 Ken VanDine * set version back to 0.0.4 (394f015) * merged from trunk (cef679b) * Added mono bindings (2ba572c) * Use a versioned assemblydir (8a26b8c) * use more macros (ceef246) * Reference the correct dll (7996187) * fixed path to python bindings (23b19e9) * debian/rules - don't use gnome.mk, specify all the targets to build python bindings for each supported python version; Adding in Python bindings.; debian/control, debian/python-appindicator.install: Building a binary package for the python bindings.; debian/control: Adding python building build deps (2a5cad3) * merged in python bindings branch and some of my fixes needed for packaging (4d9d260) * exclude the path in subst replace in the dbus-binding-tool command (251da6d) 2009-12-16 Jason Smith * Make mono bindings less redundant and more mono friendly (7aee325) 2009-12-15 Ken VanDine * make libappindicator0 recommend indicator-application (53d5f10) * release (c4a5888) * debian/control - make libappindicator0 depend on indicator-application (c593131) 2009-12-14 Sebastien Bacher * releasing version 0.0.4-0ubuntu1 (add48dd) (tag: 0.0.4-0ubuntu1) 2009-12-14 Ted Gould * releasing version 0.0.4-0ubuntu1~ppa2 (0d66efa) * debian/control: Adding in mono build depends. (1ae9e02) * Upstream work * Mono bindings (0d59bd4) 2009-12-14 Ken VanDine * use path to find includes (c66e720) 2009-12-14 Ted Gould * Merging in mono bindings. (985c449) * Looking for the assembly files in the right location. (bb6fa61) * Adding the test files to dist and making sure we find them in the right directory. (04e218d) * Merging in Jason's fix of Cody's branch. Yeah, seriously. (aebb91e) 2009-12-14 Jason Smith * Nicer fix (5e6e5ba) * Make build work right (3d0245f) 2009-12-12 Cody Russell * Try to add SetMenu() (40f3778) * Initial stab at setting up test/example fu (59526b6) 2009-12-11 Ted Gould * Fixing the build system to link everything all happy like. (a3a42b9) * Adding the Python build system into the indicator-application one. (a602f42) 2009-12-11 Neil J. Patel * Stealing a bunch of Neil's python binding code. (f7ba47b) 2009-12-11 Ken VanDine * fixed typo in the Vcs-Bzr line (1c008f5) * merged from trunk (7158acf) * set to UNRELEASED (e75075f) * - bump standards version to 3.8.3 - libappindicator-doc doesn't need to depend on libappindicator0 (fd5003d) * libappindicator-dev needs to depend on libdbusmenu-glib-dev (2da3664) * fix the path used for deleting the .la and .a files (2f0f25f) 2009-12-11 Cody Russell * Fix distcheck (ed48108) 2009-12-11 Ken VanDine * don't include .la and .a files (54099ef) 2009-12-11 Ted Gould * Merging in Ken's Lucid changes. (a5dfa76) 2009-12-11 Cody Russell * Move appindicator-sharp.pc to appindicator-sharp-0.1.pc (7783eb6) * trunk merge, resolve conflicts (8de2753) 2009-12-11 Ted Gould * releasing version 0.0.4-0ubuntu1~ppa1 (52f97ba) * Upstream release 0.0.4 * Adding files to the tarball * Putting version number in docs * Removing cruft in docs (c5d3cf3) * 0.0.4 (d303893) (tag: 0.0.4) 2009-12-11 Cody Russell * Add missing Makefile.am (5fe114e) 2009-12-11 Ken VanDine * Adding extra files to the distribution tarball and making the documentation include the version number. (ab6e7dd) * removed the disable-scrollkeeper configure arg (f9d90d2) 2009-12-11 Cody Russell * Move to bindings/mono (88a109e) * Build for Mono bindings (6d3743e) 2009-12-11 Ken VanDine * include autogen.sh, COPYING.LGPL.2.1 and COPYING.LGPL.3 in EXTRA_DIST (8205193) * Merged changes from trunk (8063616) * Bump version to 0.0.4; Include version in the generated docs (3e2f1b6) * fixed parse error in changelog (d032af1) * debian/control: - removed Build-Depend for scrollkeeper (020d8bb) * Upstream release 0.0.4; debian/rules: - removed disable-scrollkeeper - set DOC_SERVER used for doc. debian/patches/clean_up_docs.patch - removed, merged upstream (7263623) 2009-12-10 Ted Gould * releasing version 0.0.3-0ubuntu2~ppa1 (c52a914) * debian/patches/clean_up_docs.patch: Remove as merged upstream. (e11024f) 2009-12-10 Ken VanDine * Documentation cleanups (d0ff3d2) 2009-12-10 Ted Gould * Merging in Ken's fixes. (9ef452b) 2009-12-10 Sebastien Bacher * releasing version 0.0.3-0ubuntu1 (c5ceaf1) (tag: 0.0.3-0ubuntu1) 2009-12-10 Ken VanDine * debian/copyright - Include the proper licenses (LGPL-2.1 and LGPL-3) (4358884) * - set libappindicator-doc arch all - make libappindicator-dev depend on libappindicator0 (af73889) * set to UNRELEASED (767f3d4) * set release to lucid (bd32dd0) * set a title and remove releaseinfo, we haven't set it yet. (27f8252) * added simple-patchsys.mk (ff35c76) * debian/patches/clean_up_docs.patch - Remove template values and set a proper title (a634b49) * fixed a typo in libappindicator-doc.install (7c04550) * debian/libappindicator-doc.install - install the developer docs * debian/rules - enable-gtk-doc (86e4f6e) * added bzr-builddeb/default.conf (87560be) * debian/control - set Vcs-Bzr to ~ubuntu-desktop (fb2b3cf) 2009-12-10 Ted Gould * Merging in Ken's updates (e44eaf4) * releasing version 0.0.3-0ubuntu1~ppa1 (7dcc785) * debian/control: Increasing libdbusmenu requirements to 0.1.8 (94cc8a7) * Upstream release 0.0.3 * More GtkMenu support in libappindicator (eab11a2) * 0.0.3 (6b3e25f) (tag: 0.0.3) 2009-12-10 Ken Vandine * Increasing libindicator requirement to 0.3.0 (dc31293) 2009-12-10 Ken VanDine * Bump required version for libindicator to 0.3.0 (ad85df3) * debian/control - Updated Vcs-Bzr, project urls and description (2227fe0) * debian/watch: - Updated url to point to the LP project (f87a074) 2009-12-09 Cody Russell * Adding support for separators. (9e7a9fb) * Add support for separator menuitems (6cb0e1a) 2009-12-09 Ted Gould * Switching back to the calling style with all the parameters. Otherwise the --enable-gtk-doc gets lost. (0e959b1) * Fixing up documentation and making it error if symbols are missing. (5ed9363) * Adding a directory name on the distribution of the .pc.in file (ecd7cd9) * releasing version 0.0.2-0ubuntu1~ppa2 (59f09d6) * debian/control: Adding a build dep on gtk-doc-tools (afd0904) * debian/libappindicator-dev.install: Adding pkgconfig files. (b478a86) * Getting the install files with the right names. (4e25a45) * Upstream update * Adding in documentation * Adding a pkg-config .pc file for libappindicator (b67737d) 2009-12-09 Cody Russell * Add pkgconfig support, fixes bug #494583 (bae74ef) * pkgconfig Libs and Requires fixes (02ab21b) * merge from trunk (875e290) 2009-12-09 Ted Gould * Fix to autogen.sh to support configure options. (cd2a4a9) 2009-12-09 Cody Russell * fix autogen.sh (6519597) * pkgconfig file (3f16792) 2009-12-08 Ted Gould * Improved menu item parsing from Cody. (e0bf73e) 2009-12-08 Cody Russell * Beefed up and stuff. (284188b) 2009-12-08 Ted Gould * Putting gtk-doc-check into a wrapper to it runs in srcdir (e4cdb13) * Adding in some section documentation. (a29bb3d) * Documenting the AppIndicatorClass as well. (b8e1a71) * Fixing function documentation. (79d9410) * Adding documentation for the signal string defines. (c80692f) * Adding in documentation for the Object/Class macros (46799c6) * Adding a check rule for documentation. (b63e880) * Adding support for building gtk-doc documentation. (4a19cb4) * Making it so that we have a local gtk-doc.make file that will pass a dist without the lib being built. (cf4dd4a) * Ken's gtk-doc integration branch (fbb083f) 2009-12-08 Ken VanDine * Removed a commented variable (86b124f) * Clean up some cruft I left around (0c816c3) * Fixes for make distcheck and default configure args (199da20) * Added some missing gtk-doc related files (5ebc39a) * don't run gtkdocize with autogen.sh (43eac26) 2009-12-07 Jason Smith * Add script to automate building (someone should do this without autofoo) (dc33785) * Ensure names are nice and pretty (6335098) * Make build work (e945be8) * Add mono xml api file (a7dec87) 2009-12-07 Ted Gould * Adding in an activate signal. (bfb9e77) 2009-12-07 Cody Russell * Add 'activate' signal support (95ecb48) 2009-12-05 Ken VanDine * remove --enable-gtk-doc from autogen.sh (fb20a31) * generate gtk-doc (9306d83) 2009-12-04 Ted Gould * releasing version 0.0.2-0ubuntu1~ppa1 (ec3c1be) * Upstream release 0.0.2 * Updates API to use GTK instead of dbusmenu to make it easier for upstream developers to use. (5498681) * Increasing to version 0.0.2 (2906ee4) (tag: 0.0.2) * Test suite fixes for the GTK Menu changes. (fe16a24) 2009-12-04 Cody Russell * Remove the menu test (c9670e6) * test fix (6f39584) * Test fixes (670019c) 2009-12-04 Ted Gould * Adding GTK Menu support to libappindicator and removing dbusmenu support. (17478a9) 2009-12-04 Cody Russell * credit :) (7406617) * Small cleanup (17d72ed) * Fix up some docs (5f4c6f8) 2009-12-03 Cody Russell * API changes, gtk menu support (580f2be) 2009-12-02 Ted Gould * releasing version 0.0.1-0ubuntu3~ppa4 (25d7d99) * Adding in copyright headers and licenses (fb3c300) * Adding legal headers on files and licenses. (92a3e89) * releasing version 0.0.1-0ubuntu3~ppa3 (5710b62) * Massive name change.; debian/* changing packaging to not be "custom" anymore and now everything is "application. debian/control: Splitting out libappindicator; Adding debian/libappindicator0.install, debian/libappindicator-dev.install, debian/indicator-application.install (5317413) * Sync to trunk (5c4e31a) * Changing the name from indicator-custom to indicator-application (984759e) * releasing version 0.0.1-0ubuntu3~ppa2 (f897644) * Implementing the service and having the indicator and app library start using it. (29ef598) * Sync from trunk (69448c0) * Create a service and start using it. Also updating to libindicator 0.3.0. (47741f6) 2009-12-01 Ted Gould * releasing version 0.0.1-0ubuntu3~ppa1~newname1 (dc560c7) * debian/* changing packaging to not be "custom" anymore and now everything is "application"; debian/control: Splitting out libappindicator; Adding debian/libappindicator0.install, debian/libappindicator-dev.install, debian/indicator-application.install (c0b7c89) * Massive name change. (1566a99) * Updating to service-me-please branch. (113fc34) * Updating to trunk packaging (1933cc6) * releasing version 0.0.1-0ubuntu3~ppa1 (71797b3) * Flesh out the library to have stuff working.; Updating test suite to run under dbus-test-runner. (c860f69) 2009-11-30 Ted Gould * Copyright notice for marshallers definition. (1895dec) * Header for a DBus interface description, not sure if that's right or not. (dfb7524) * Adding in GPLv3 headers. (9028f21) * Adding in LGPL v3/2 headers (d8e73df) * Adding GPLv3 headers. (8027b94) * GPL header (91013e4) * Adding in copying license files. (45f5d8c) * Getting the right named files. (44be8d2) * Changing the insides to remove the custom stuff. (f0881be) * De-customizing the directory stuff. (35d5c71) * Migrating to the new 'app' world. (7cc02cf) * Shortening the object names as well. People hate typing. (a7c7079) * Massive custom to application find and replace throughout the code. (672b725) * Ignoring happily again. (fdd8e21) * Shortening the file names as well. (997bdb5) * Making the directory name shorter (8eff74d) * Changing file names, and some fallouts from that. (5b2dcab) * Total insane rename. Probably broke more than a few things. (fc1e08a) * Another name change. (e0cb52e) 2009-11-24 Ted Gould * Changing all the dbus names. (ad2afb8) * Name changed (f4d0952) * Name changes (8fa7b92) * A bunch of code. (f0fcaa6) * releasing version 0.0.1-0ubuntu3~ppa1~service8 (2edb47b) * Sync to trunk and fix distcheck by delaying connecting to the service by checking for data. (62a7252) * Moving the connection code into a function that is called to check to see if we have enough data. This fixes distcheck after the merge from main. (8c7ce8f) * Merging in changes on trunk. Resolving a conflict. (acbab33) * releasing version 0.0.1-0ubuntu3~ppa1~service7 (7c86b00) * Woot, basic remove support. Causes warnings, but it works. (4b23fc3) * Showing the icon. Now we can put things up in the menu! Finally. (ce09817) * Ignoring the marshallers (254386f) * Building a little more of a menu item for testing. (314754f) * Fixing Marshallers so that everything is happy-happy. (c8faaf3) 2009-11-23 Ted Gould * releasing version 0.0.1-0ubuntu3~ppa1~service6 (bfd3806) * I really shouldn't have to register marshalers. Srsly. (6caead9) * Moving the registration of the marshallers until after the proxy. Odd that I'd have to do this, but let's try. (f0b58f5) * releasing version 0.0.1-0ubuntu3~ppa1~service5 (cecee4c) * Forgot return types. (28f794c) * Forgot return types. (756b6c9) * releasing version 0.0.1-0ubuntu3~ppa1~service4 (c27868e) * Registering marshallers for DBus in the indicator. (25d690a) * Adding a debug message on getting an application. (009e468) * Making a simple client (62f0373) * releasing version 0.0.1-0ubuntu3~ppa1~service3 (b6b57bd) * Adding more fun. Now we're cookin'! (59b0398) * Connecting to a notification watcher. (2c04418) * Adding in a TODO (9a48354) * Commenting. (5a87d20) * Fixing custom indicator watcher object path. (efd63e3) * Cleaning up main a little bit and handling the 'disconnected' case that doesn't yet quite exist. (f22ff6a) * Adding a remove function and switching to the position in the list being the position. (f7cfd25) 2009-11-09 Ted Gould * Adding in the dbus shared header. (3d71f7f) * A simple little app. (5c797c3) * Adding a defualt file for a little appliction that'll grow into a full app. (23d6b5d) 2009-11-08 Ted Gould * releasing version 0.0.1-0ubuntu3~ppa1~service2 (9738887) * Building the service and getting things in better shape. (3d0184b) 2009-11-06 Ted Gould * Grabbing the properties and going to town. Turning back into another signal. (d0abdda) * Adding some XML for dbus properties interface. (ffd9962) * Building the property proxy. (4bcfbf4) * Forgot to save. (1cee2f3) * Building a proxy. (8b92c1c) * Adding an application list. (e25d64f) * Getting the registration signal, and passing it up the stack. (bca77a7) * Adding app add/remove to appstore (78a6d0d) * Woot! Now we have signals in our watcher. Let's rock on! (591311a) * Connecting the watcher and the appstore. And actually building one. We're on DBus now. (ced0ec2) * Moving the watcher stuff to the new object. (fa2ac00) * Creating a new object to be our watcher. Apparently we can't have two DBus interfaces on the same object :( (ab660ab) * Adding in teh source directory for distcheck (c894aa5) * Adding in a set of marshallers to make our signals all happy. (53f654e) * Putting some signals on here. (3ea189e) * Changing some API and implementing the simple stuff. (4644370) * Fleshing out the application added stuff (faef47f) * Fleshing out get_entries (463ca24) * Making for a list of applications that we can build and destroy at will. (1dc8a8a) * Hooking up to the proxy. Let's do this! (349af66) * Fleshing out connected to start bringing up the proxy. (10d1d2e) * Migrating over to the libindicator 0.3.0 API. (7532947) 2009-11-04 Ted Gould * Put the cleanup of gtester on the wrong variable. (f23c54f) * A small fix to make things run under dbus-test-runner so that we start a dbus test session. (2d5018b) 2009-11-03 Ted Gould * Put the gtester test under a dbus-test-runner to ensure that we have a session bus to test with. (8ef7ed5) * Fleshing out the library so that the interface is implemented. Also tests for the library. (be7d032) * Removing the checks on private being NULL when we're already testing the object. (cd7ec27) 2009-11-02 Ted Gould * releasing version 0.0.1-0ubuntu3~ppa1~service1 (3345ad5) * releasing version 0.0.1-0ubuntu2 (88be27c) (tag: 0.0.1-0ubuntu2) * debian/control: Splitting out libcustomindicator; Adding debian/libcustomindicator0.install, debian/libcustomindicator-dev.install, debian/indicator-custom.install to make all the different packages. (9d043e6) * Merging project name change. (81d7988) * Changing the package name (a260225) * releasing version 0.0.1-0ubuntu2~ppa1~service1 (733c841) * Grabbing from the service development branch (8d4cdc7) * We've got a service manager. Now we'll start ourselves up! (d496d7a) * Getting the name into a header. (9aff9ba) * Boom, make us an indicator service. (3d1c4c4) 2009-11-02 Robert Collins * Draft packaging. (df182c1) 2009-10-28 Ted Gould * Building our app store (f2c4a15) * Registering ourselves on dbus (714f372) * Boom! Now we're implementing dbus. (8903841) * Adding an appstore object to hold all of our apps. (ecf44bf) * Adding the custom-service interface. (ec8cd68) * Pulling in the unreviewed lib-flesh branch (b6d06ca) 2009-10-22 Ted Gould * 'Merging' in trunk. No changes. Better history. (9c868b9) * Adding in testing the location of the dbusmenuserver (1b71a85) * Looking for the wrong property, we can only set the object. (d6cc939) * We can't get the enum values from the string param spec, we need to find the enum one and then use that. (20caa2f) * Property name changes. Boo. (6030445) * Changes due to the properties changes. (6a255c6) * Gimme a break (0256208) * Adding a set of read-only properties that deal with the strings for dbus, and let the other properties do the real work. (00f4a53) * Branch building up the interface for the library. (20d116a) * Checking the category and state (b04e0de) * All strings work. (af10235) * Fleshing out the property counting. (e99a6fe) * Settng the right path (199365d) * If we fail, we need to really fail. (9db2ce5) * Adding a kill function, just in case. (e0d35fc) * Basic code calling all the properties. (a8b1009) * Fleshing out the server to setup a simple custom indicator. (83a3d84) * Switching to using a little autotest as well. (23b7242) * Adding in two little client server binaries for testing the custom indicator. (bca9b7e) 2009-10-21 Ted Gould * Change the enums to match the KDE ones to make life simpler even though I dislike the names. (0df50d7) * Turning on verbose output and showing the status of all tests. (5e34573) * Getting the prototype right. (5aeff27) * The signal should have a string not a enum value. (02cb525) * Making sure to signal if we change the status. (b08b158) * Adding test to test the property change signals. (5e1d1d9) * Checking all the set functions. (dc43af9) * Switching from doing the GValues as enums to the more specific types. (d11f7e6) * Silly, these are enums not ints. (fdd9a5d) * Adding a test that sets a bunch of properties. (795f7d9) 2009-10-21 Cody Russell * Ah, forgot a return. Cody would kill me! Oh, no. (0093c37) 2009-10-21 Ted Gould * Woot! We can build a custom indicator, and it exists. (10e9550) 2009-10-20 Ted Gould * Now we're building a test, woot! (5e928c9) * Tests directory. (d28010e) * Fleshing out the get functions. (ada3399) * Fleshing out the set functions. (e932bfa) * Filling out some prototypes. (08c19ed) * Okay, connecting this little thing into DBus already. (81afbd1) * Making sure to free and unref all of our private variables. (484b489) * Now for some 'set' code. Bringin' it. (59d8fbd) * Fleshing out get parameters... (23fdc86) * Adding in a bunch of things to the private struct. We now have data! (b52ac88) * Basic property case statements. (56cd30a) 2009-10-19 Ted Gould * Creating a connected property to check easily. (b82c8da) * Boom, there are some signals. (9dbe19d) * Adding in the dbus signals from that interface. (6587e75) * Header comments and a new signal that we'll need to deal with. (bf1efc1) * Wow, properties. The properties system in gobject is a little insane. (6da6b6b) 2009-10-17 Ted Gould * Changing the name to match the changes in the previous commit. (9e25a77) * Switching the name to be more consistent. (49bddff) * Getting the name change into the templates properly. (72815e1) * Making the enums camel case. I prefer the other, but it seems best to match GTK style (06111bc) * Making sure to get the property names into defines so that we can ensure they're all the same. (7b45f65) * Filling out the property list. (a49c643) 2009-10-16 Ted Gould * Putting in our first property, status. Woo hoo! (85b61a4) * Oops, shouldn't be CLUTTER there. (8dc712f) * Forgot to change the package name (63e10a6) * Set and get properties (31f519d) * Merging in the library interface. (227666e) * Adding the possibility of making the directories silently. (50e28fd) * Some small changes to make 'distcheck' happy. (f4f482c) * Another object file bites the dust (174af37) * Fixing the templates. (00c4764) * Filling out the enums to have values. (0b6ffb4) * Adding the C file into the build as well. (d7e3756) * Putting in the enum templates and building them. (ba81d4a) * Setting up build to build the enums. (5b8ab09) * Adding programs for buiding enums and marsherers and all that jazz (0336cb4) 2009-10-16 Emmanuele Bassi * Stealing these makefile segments to build enums and marshallers (8ad3fb0) 2009-10-16 Ted Gould * Building a basic prototype of the API for the lib. (1101075) * Adding in the DBus interface files and building of those. (664bc74) 2009-10-15 Ted Gould * Building a basic library starting out. (b666cc1) * We need a directory. (be305bc) * We're on the dbus branch now (e576b28) * Ignoring the generated dbus interfaces. (afd1d17) * Building the ChangeLog on dist (d6fb194) 2009-10-13 Ted Gould * Making sure we get our specs and clean up after ourselves. Distcheck magic. (df1cc80) * Getting some functions so that we can link happy like. (89ebfc6) * Fixing symbol names. (17192c2) * Getting to building all these header files nicely. (7b2c29f) * Some dbus y'all! (9fc5dd8) * A basical build system and basic files. (e265e46) * Building a basic indicator and the service to go along with it. (fb328a4) * Cleaning up status (d7640ed) * Local install on distcheck, now it passes. (683109e) * Wrong version (5b565b0) * DBus Service file (6e1d6b9) * Autogen and friends (7bd4902) * Very basic. (8f6b6e0) * First version (140fda5) ayatana-indicator-application-22.2.0/CMakeLists.txt0000644000000000000000000000272414203537407017126 0ustar cmake_minimum_required(VERSION 3.13) project(ayatana-indicator-application C) if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) SET(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "..." FORCE) endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) # Options option(ENABLE_TESTS "Enable all tests and checks" OFF) option(ENABLE_COVERAGE "Enable coverage reports (includes enabling all tests and checks)" OFF) option(ENABLE_WERROR "Treat all build warnings as errors" OFF) if(ENABLE_COVERAGE) set(ENABLE_TESTS ON) set(CMAKE_BUILD_TYPE "Coverage") else() set(CMAKE_BUILD_TYPE "Release") endif() if(ENABLE_WERROR) add_definitions("-Werror") endif() if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") add_definitions("-Weverything") else() add_definitions("-Wall") endif() # Check for prerequisites set(CMAKE_BUILD_TYPE "Release") find_package(PkgConfig REQUIRED) pkg_check_modules(PROJECT_DEPS REQUIRED glib-2.0>=2.58 ayatana-indicator3-0.4>=0.6.2 gtk+-3.0>=3.24 ayatana-appindicator3-0.1>=0.5.3 dbus-glib-1>=0.110 dbusmenu-gtk3-0.4) # Set global variables include(GNUInstallDirs) set(PROJECT_VERSION "22.2.0") set(PROJECT_NAME "ayatana-indicator-application") # Make everything add_subdirectory(data) add_subdirectory(src) if (ENABLE_TESTS) include(CTest) enable_testing() endif() # Display config info message(STATUS "Install prefix: ${CMAKE_INSTALL_PREFIX}") message(STATUS "Unit tests: ${ENABLE_TESTS}") message(STATUS "Build with -Werror: ${ENABLE_WERROR}") ayatana-indicator-application-22.2.0/COPYING0000644000000000000000000010451314203537407015420 0ustar 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 . ayatana-indicator-application-22.2.0/data/ayatana-indicator-application.desktop.in0000644000000000000000000000040214203537407025157 0ustar [Desktop Entry] Type=Application Name=Ayatana Indicator Application Exec=@CMAKE_INSTALL_FULL_LIBEXECDIR@/ayatana-indicator-application/ayatana-indicator-application-service StartupNotify=false Terminal=false OnlyShowIn=Unity;MATE;XFCE;Budgie; NoDisplay=true ayatana-indicator-application-22.2.0/data/ayatana-indicator-application.service.in0000644000000000000000000000046414203537407025156 0ustar [Unit] Description=Ayatana Indicator Application Service PartOf=graphical-session.target PartOf=ayatana-indicators.target [Service] ExecStart=@CMAKE_INSTALL_FULL_LIBEXECDIR@/ayatana-indicator-application/ayatana-indicator-application-service Restart=on-failure [Install] WantedBy=ayatana-indicators.target ayatana-indicator-application-22.2.0/data/CMakeLists.txt0000644000000000000000000000246314203537407020037 0ustar # ayatana-indicator-application.service ########################### # Systemd Job ########################### pkg_check_modules(SYSTEMD systemd) if (${SYSTEMD_FOUND}) # where to install pkg_get_variable(SYSTEMD_USER_DIR systemd systemduserunitdir) message (STATUS "${SYSTEMD_USER_DIR} is the systemd user unit file install dir") set (SYSTEMD_USER_NAME "${CMAKE_PROJECT_NAME}.service") set (SYSTEMD_USER_FILE "${CMAKE_CURRENT_BINARY_DIR}/${SYSTEMD_USER_NAME}") set (SYSTEMD_USER_FILE_IN "${CMAKE_CURRENT_SOURCE_DIR}/${SYSTEMD_USER_NAME}.in") # build it configure_file ("${SYSTEMD_USER_FILE_IN}" "${SYSTEMD_USER_FILE}") # install it install (FILES "${SYSTEMD_USER_FILE}" DESTINATION "${SYSTEMD_USER_DIR}") endif() ########################### # XDG Autostart ########################### configure_file("${CMAKE_CURRENT_SOURCE_DIR}/ayatana-indicator-application.desktop.in" "${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-application.desktop" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-application.desktop" DESTINATION "/etc/xdg/autostart") ########################### # ordering-override.keyfile ########################### install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/ordering-override.keyfile" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/ayatana-indicator-application") ayatana-indicator-application-22.2.0/data/ordering-override.keyfile0000644000000000000000000000015214203537407022270 0ustar [Ordering Index Overrides] nm-applet=1 gnome-power-manager=2 ibus=3 gst-keyboard-xkb=4 gsd-keyboard-xkb=5 ayatana-indicator-application-22.2.0/INSTALL.md0000644000000000000000000000162714203537407016017 0ustar # Build and installation instructions ## Compile-time build dependencies - cmake (>= 3.13) - cmake-extras - glib-2.0 (>= 2.58) - ayatana-indicator3-0.4 (>= 0.6.2) - gtk+-3.0 (>= 3.24) - ayatana-appindicator3-0.1 (>= 0.5.5) - dbus-glib-1 (>=0.110) - dbusmenu-gtk3-0.4 - systemd - intltool - gtest (>= 1.6.0) - gmock - gcovr (>= 2.4) - lcov (>= 1.9) ## For end-users and packagers ``` cd ayatana-indicator-application-X.Y.Z mkdir build cd build cmake .. make sudo make install ``` ## For testers - unit tests only ``` cd ayatana-indicator-application-X.Y.Z mkdir build cd build cmake .. -DENABLE_TESTS=ON make make test ``` ## For testers - both unit tests and code coverage ``` cd ayatana-indicator-application-X.Y.Z mkdir build cd build cmake .. -DENABLE_COVERAGE=ON make make test make coverage-html ``` **The install prefix defaults to `/usr`, change it with `-DCMAKE_INSTALL_PREFIX=/some/path`** ayatana-indicator-application-22.2.0/NEWS0000644000000000000000000000472314203537407015066 0ustar Overview of changes in ayatana-indicator-application 22.2.0 - Upstream version bump to new release versioning scheme: .., where . will be bumped in Ayatana Indicators bundle releases and gets incremented with minor changeset releases. - Clean up compilation flags. - data/CMakeLists.txt: Drop unused CMAKE_INSTALL_FULL_PKGLIBEXECDIR. Overview of changes in ayatana-indicator-application 0.8.91 - CMake: Update systemd unit target dir detection. - CMake: Install .so file to indicator dir as provided by pkg-config file ayatana-indicator3-0.4.pc. - Fix project name in CMakeLists.txt. Overview of changes in ayatana-indicator-application 0.8.90 - Add documentation and install instructions. - Port to CMake. Overview of changes in ayatana-indicator-application 0.8.0 - Version bump to bring all system indicators (and the renderer libraries to the same version level). - Start the indicator with the ayatana-indicators.target. - Drop upstart support. Overview of changes in ayatana-indicator-application 0.5.3 - Avoid deprecated g_type_class_add_private. - autogen.sh: Adapt PKG_NAME autogen.sh to ayatana- namespace. - {configure.ac,Makefile.am}: Drop distcheck features. - Make systemd optional. If systemd is not available at build-time, the creation of the .service file is omitted. Overview of changes in ayatana-indicator-application 0.5.2 - data/ayatana-indicator-application.desktop.in: Add Budgie as candidate for launching ayatana-indicator-application. - data/ayatana-indicator-application.desktop.in: Add XFCE as candidate for launching ayatana-indicator-application. - data/ayatana-indicator-application.desktop.in: Drop AutostartCondition, drop GNOME from OnlyShowIn. - XDG-autostart this indicator in MATE, too. Overview of changes in ayatana-indicator-application 0.5.1 - src/application-service-watcher.c: Comment out upstart specific code for now. We can reintroduce it once we know if our session is upstart-managed (or systemd-managed). - upstart service files: Fix namespace overlapping with the project we forked from. - Work inside a snap by prefixing hard coded paths with. - Hide 'Indicator Application' from Startup Applications. - Adding a systemd user unit. - build system: Switch to mate-common. - dbus-shared.h: Use org.ayatana namespace for the DBus service object. - Fork from Ubuntu's indicator-application code project. ayatana-indicator-application-22.2.0/README.md0000644000000000000000000000405314203537407015642 0ustar # ayatana-indicator-application - Ayatana Indicator Application Service [![Build Status](https://api.travis-ci.com/AyatanaIndicators/ayatana-indicator-application.svg)](https://travis-ci.com/github/AyatanaIndicators/ayatana-indicator-application) ## About Ayatana Indicators The Ayatana Indicators project is the continuation of Application Indicators and System Indicators, two technologies developed by Canonical Ltd. for the Unity7 desktop. Application Indicators are a GTK implementation of the StatusNotifierItem Specification (SNI) that was originally submitted to freedesktop.org by KDE. System Indicators are an extensions to the Application Indicators idea. System Indicators allow for far more widgets to be displayed in the indicator's menu. The Ayatana Indicators project is the new upstream for application indicators, system indicators and associated projects with a focus on making Ayatana Indicators a desktop agnostic technology. On GNU/Linux, Ayatana Indicators are currently available for desktop envinronments like MATE (used by default in [Ubuntu MATE](https://ubuntu-mate.com)), XFCE (used by default in [Xubuntu](https://bluesabre.org/2021/02/25/xubuntu-21-04-progress-update/), LXDE, and the Budgie Desktop). The Lomiri Operating Environment (UI of the Ubuntu Touch OS, formerly known as Unity8) uses Ayatana Indicators for rendering its notification area and the [UBports](https://ubports.com) project is a core contributor to the Ayatana Indicators project. For further info, please visit: https://ayatana-indicators.org ## About this Software Component The -application Ayatana System Indicator is an application menu indicator for Unity7 and optionally for others, e.g. MATE, XFCE, LXDE). The indicator takes menus from applications and places them into the panel. Its behavior and features are listed at https://wiki.ayatana-indicators.org/AyatanaIndicatorApplication ## License and Copyright See COPYING and AUTHORS file in this project. ## Building and Testing For instructions on building and running built-in tests, see the INSTALL.md file. ayatana-indicator-application-22.2.0/src/app-indicator-enum-types.c.in0000644000000000000000000000341314203537407022560 0ustar /*** BEGIN file-header ***/ /* An object to represent the application as an application indicator in the system panel. Copyright 2009 Canonical Ltd. Authors: Ted Gould This program is free software: you can redistribute it and/or modify it under the terms of either or both of the following licenses: 1) the GNU Lesser General Public License version 3, as published by the Free Software Foundation; and/or 2) the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR PURPOSE. See the applicable version of the GNU Lesser General Public License for more details. You should have received a copy of both the GNU Lesser General Public License version 3 and version 2.1 along with this program. If not, see */ #include "app-indicator-enum-types.h" /*** END file-header ***/ /*** BEGIN file-production ***/ #include "@filename@" /*** END file-production ***/ /*** BEGIN value-header ***/ /** @enum_name@_get_type: Builds a GLib type for the #@EnumName@ enumeration. Return value: A unique #GType for the #@EnumName@ enum. */ GType @enum_name@_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const G@Type@Value values[] = { /*** END value-header ***/ /*** BEGIN value-production ***/ { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, /*** END value-production ***/ /*** BEGIN value-tail ***/ { 0, NULL, NULL} }; etype = g_@type@_register_static (g_intern_static_string("@EnumName@"), values); } return etype; } /*** END value-tail ***/ ayatana-indicator-application-22.2.0/src/app-indicator-enum-types.h.in0000644000000000000000000000301614203537407022564 0ustar /*** BEGIN file-header ***/ /* An object to represent the application as an application indicator in the system panel. Copyright 2009 Canonical Ltd. Authors: Ted Gould This program is free software: you can redistribute it and/or modify it under the terms of either or both of the following licenses: 1) the GNU Lesser General Public License version 3, as published by the Free Software Foundation; and/or 2) the GNU Lesser General Public License version 2.1, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR PURPOSE. See the applicable version of the GNU Lesser General Public License for more details. You should have received a copy of both the GNU Lesser General Public License version 3 and version 2.1 along with this program. If not, see */ #ifndef __APP_INDICATOR_ENUM_TYPES_H__ #define __APP_INDICATOR_ENUM_TYPES_H__ #include G_BEGIN_DECLS /*** END file-header ***/ /*** BEGIN file-tail ***/ G_END_DECLS #endif /* __APP_INDICATOR_ENUM_TYPES_H__ */ /*** END file-tail ***/ /*** BEGIN file-production ***/ /* Enumerations from file: "@filename@" */ /*** END file-production ***/ /*** BEGIN value-header ***/ GType @enum_name@_get_type (void) G_GNUC_CONST; #define APP_INDICATOR_TYPE_@ENUMSHORT@ (@enum_name@_get_type()) /*** END value-header ***/ ayatana-indicator-application-22.2.0/src/application-service-appstore.c0000644000000000000000000012324014203537407023112 0ustar /* An object that stores the registration of all the application indicators. It also communicates this to the indicator visualization. Copyright 2009 Canonical Ltd. Authors: Ted Gould 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 . */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include "application-service-appstore.h" #include "ayatana-application-service-marshal.h" #include "dbus-shared.h" #include "generate-id.h" /* DBus Prototypes */ static GVariant * get_applications (ApplicationServiceAppstore * appstore); 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); static void props_cb (GObject * object, GAsyncResult * res, gpointer user_data); #include "gen-ayatana-application-service.xml.h" #define NOTIFICATION_ITEM_PROP_ID "Id" #define NOTIFICATION_ITEM_PROP_CATEGORY "Category" #define NOTIFICATION_ITEM_PROP_STATUS "Status" #define NOTIFICATION_ITEM_PROP_ICON_NAME "IconName" #define NOTIFICATION_ITEM_PROP_ICON_DESC "IconAccessibleDesc" #define NOTIFICATION_ITEM_PROP_AICON_NAME "AttentionIconName" #define NOTIFICATION_ITEM_PROP_AICON_DESC "AttentionAccessibleDesc" #define NOTIFICATION_ITEM_PROP_ICON_THEME_PATH "IconThemePath" #define NOTIFICATION_ITEM_PROP_MENU "Menu" #define NOTIFICATION_ITEM_PROP_LABEL "XAyatanaLabel" #define NOTIFICATION_ITEM_PROP_LABEL_GUIDE "XAyatanaLabelGuide" #define NOTIFICATION_ITEM_PROP_TITLE "Title" #define NOTIFICATION_ITEM_PROP_ORDERING_INDEX "XAyatanaOrderingIndex" #define NOTIFICATION_ITEM_SIG_NEW_ICON "NewIcon" #define NOTIFICATION_ITEM_SIG_NEW_AICON "NewAttentionIcon" #define NOTIFICATION_ITEM_SIG_NEW_STATUS "NewStatus" #define NOTIFICATION_ITEM_SIG_NEW_LABEL "XAyatanaNewLabel" #define NOTIFICATION_ITEM_SIG_NEW_ICON_THEME_PATH "NewIconThemePath" #define NOTIFICATION_ITEM_SIG_NEW_TITLE "NewTitle" #define OVERRIDE_GROUP_NAME "Ordering Index Overrides" #define OVERRIDE_FILE_NAME "ordering-override.keyfile" /* Private Stuff */ typedef struct { GCancellable * bus_cancel; GDBusConnection * bus; guint dbus_registration; GList * applications; GHashTable * ordering_overrides; } ApplicationServiceAppstorePrivate; typedef enum { VISIBLE_STATE_HIDDEN, VISIBLE_STATE_SHOWN } visible_state_t; #define STATE2STRING(x) ((x) == VISIBLE_STATE_HIDDEN ? "hidden" : "visible") typedef struct _Application Application; struct _Application { gchar * id; gchar * category; gchar * dbus_name; gchar * dbus_object; ApplicationServiceAppstore * appstore; /* not ref'd */ GCancellable * dbus_proxy_cancel; GDBusProxy * dbus_proxy; GCancellable * props_cancel; gboolean queued_props; GDBusProxy * props; gboolean validated; /* Whether we've gotten all the parameters and they look good. */ AppIndicatorStatus status; gchar * icon; gchar * icon_desc; gchar * aicon; gchar * aicon_desc; gchar * menu; gchar * icon_theme_path; gchar * label; gchar * guide; gchar * title; gboolean currently_free; guint ordering_index; visible_state_t visible_state; guint name_watcher; }; /* 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 */ }; /* GObject stuff */ static void application_service_appstore_class_init (ApplicationServiceAppstoreClass *klass); static void application_service_appstore_init (ApplicationServiceAppstore *self); static void application_service_appstore_dispose (GObject *object); static void application_service_appstore_finalize (GObject *object); static gint app_sort_func (gconstpointer a, gconstpointer b, gpointer userdata); static void load_override_file (GHashTable * hash, const gchar * filename); static AppIndicatorStatus string_to_status(const gchar * status_string); static void apply_status (Application * app); static AppIndicatorCategory string_to_cat(const gchar * cat_string); static Application * find_application (ApplicationServiceAppstore * appstore, const gchar * address, const gchar * object); static Application * find_application_by_menu (ApplicationServiceAppstore * appstore, const gchar * address, const gchar * menuobject); static void bus_get_cb (GObject * object, GAsyncResult * res, gpointer user_data); static void dbus_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data); static void app_receive_signal (GDBusProxy * proxy, gchar * sender_name, gchar * signal_name, GVariant * parameters, gpointer user_data); static void get_all_properties (Application * app); static void application_free (Application * app); G_DEFINE_TYPE_WITH_PRIVATE (ApplicationServiceAppstore, application_service_appstore, G_TYPE_OBJECT); static void application_service_appstore_class_init (ApplicationServiceAppstoreClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = application_service_appstore_dispose; object_class->finalize = application_service_appstore_finalize; /* Setting up the DBus interfaces */ if (node_info == NULL) { GError * error = NULL; node_info = g_dbus_node_info_new_for_xml(_ayatana_application_service, &error); if (error != NULL) { g_critical("Unable to parse Application 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_APPLICATION_DBUS_IFACE); if (interface_info == NULL) { g_critical("Unable to find interface '" INDICATOR_APPLICATION_DBUS_IFACE "'"); } } return; } static void application_service_appstore_init (ApplicationServiceAppstore *self) { ApplicationServiceAppstorePrivate * priv = application_service_appstore_get_instance_private(self); priv->applications = NULL; priv->bus_cancel = NULL; priv->dbus_registration = 0; priv->ordering_overrides = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); load_override_file(priv->ordering_overrides, DATADIR "/" OVERRIDE_FILE_NAME); gchar * userfile = g_build_filename(g_get_user_data_dir(), "indicators", "application", OVERRIDE_FILE_NAME, NULL); load_override_file(priv->ordering_overrides, userfile); g_free(userfile); priv->bus_cancel = g_cancellable_new(); g_bus_get(G_BUS_TYPE_SESSION, priv->bus_cancel, bus_get_cb, self); return; } 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_critical("OMG! Unable to get a connection to DBus: %s", error->message); g_error_free(error); return; } ApplicationServiceAppstorePrivate * priv = application_service_appstore_get_instance_private(APPLICATION_SERVICE_APPSTORE(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_APPLICATION_DBUS_OBJ, interface_info, &interface_table, user_data, NULL, &error); if (error != NULL) { g_critical("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) { ApplicationServiceAppstore * service = APPLICATION_SERVICE_APPSTORE(user_data); GVariant * retval = NULL; Application *app = NULL; gchar *dbusaddress = NULL; gchar *dbusmenuobject = NULL; if (g_strcmp0(method, "GetApplications") == 0) { retval = get_applications(service); } else if (g_strcmp0(method, "ApplicationScrollEvent") == 0) { gchar *orientation = NULL; gint delta; guint direction; g_variant_get (params, "(ssiu)", &dbusaddress, &dbusmenuobject, &delta, &direction); switch (direction) { case INDICATOR_OBJECT_SCROLL_UP: delta = -delta; orientation = "vertical"; break; case INDICATOR_OBJECT_SCROLL_DOWN: /* delta unchanged */ orientation = "vertical"; break; case INDICATOR_OBJECT_SCROLL_LEFT: delta = -delta; orientation = "horizontal"; break; case INDICATOR_OBJECT_SCROLL_RIGHT: /* delta unchanged */ orientation = "horizontal"; break; default: g_assert_not_reached(); break; } app = find_application_by_menu(service, dbusaddress, dbusmenuobject); if (app != NULL && app->dbus_proxy != NULL && orientation != NULL) { g_dbus_proxy_call(app->dbus_proxy, "Scroll", g_variant_new("(is)", delta, orientation), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } } else if (g_strcmp0(method, "ApplicationSecondaryActivateEvent") == 0) { guint time; g_variant_get (params, "(ssu)", &dbusaddress, &dbusmenuobject, &time); app = find_application_by_menu(service, dbusaddress, dbusmenuobject); if (app != NULL && app->dbus_proxy != NULL) { g_dbus_proxy_call(app->dbus_proxy, "XAyatanaSecondaryActivate", g_variant_new("(u)", time), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } } else { g_warning("Calling method '%s' on the indicator service and it's unknown", method); } g_free(dbusaddress); g_free(dbusmenuobject); g_dbus_method_invocation_return_value(invocation, retval); return; } static void application_service_appstore_dispose (GObject *object) { ApplicationServiceAppstorePrivate * priv = application_service_appstore_get_instance_private(APPLICATION_SERVICE_APPSTORE(object)); while (priv->applications != NULL) { application_service_appstore_application_remove(APPLICATION_SERVICE_APPSTORE(object), ((Application *)priv->applications->data)->dbus_name, ((Application *)priv->applications->data)->dbus_object); } 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; } if (priv->bus != NULL) { g_object_unref(priv->bus); priv->bus = NULL; } if (priv->bus_cancel != NULL) { g_cancellable_cancel(priv->bus_cancel); g_object_unref(priv->bus_cancel); priv->bus_cancel = NULL; } G_OBJECT_CLASS (application_service_appstore_parent_class)->dispose (object); return; } static void application_service_appstore_finalize (GObject *object) { ApplicationServiceAppstorePrivate * priv = application_service_appstore_get_instance_private(APPLICATION_SERVICE_APPSTORE(object)); if (priv->ordering_overrides != NULL) { g_hash_table_destroy(priv->ordering_overrides); priv->ordering_overrides = NULL; } G_OBJECT_CLASS (application_service_appstore_parent_class)->finalize (object); return; } /* Loads the file and adds the override entries to the table of overrides */ static void load_override_file (GHashTable * hash, const gchar * filename) { g_return_if_fail(hash != NULL); g_return_if_fail(filename != NULL); if (!g_file_test(filename, G_FILE_TEST_EXISTS)) { g_debug("Override file '%s' doesn't exist", filename); return; } g_debug("Loading overrides from: '%s'", filename); GError * error = NULL; GKeyFile * keyfile = g_key_file_new(); g_key_file_load_from_file(keyfile, filename, G_KEY_FILE_NONE, &error); if (error != NULL) { g_warning("Unable to load keyfile '%s' because: %s", filename, error->message); g_error_free(error); g_key_file_free(keyfile); return; } gchar ** keys = g_key_file_get_keys(keyfile, OVERRIDE_GROUP_NAME, NULL, &error); if (error != NULL) { g_warning("Unable to get keys from keyfile '%s' because: %s", filename, error->message); g_error_free(error); g_key_file_free(keyfile); return; } gchar * key; gint i; for (i = 0; (key = keys[i]) != NULL; i++) { GError * valerror = NULL; gint val = g_key_file_get_integer(keyfile, OVERRIDE_GROUP_NAME, key, &valerror); if (valerror != NULL) { g_warning("Unable to get key '%s' out of file '%s' because: %s", key, filename, valerror->message); g_error_free(valerror); continue; } g_debug("%s: override '%s' with value '%d'", filename, key, val); g_hash_table_insert(hash, g_strdup(key), GINT_TO_POINTER(val)); } g_strfreev(keys); g_key_file_free(keyfile); return; } /* Return from getting the properties from the item. We're looking at those and making sure we have everything that we need. If we do, then we'll move on up to sending this onto the indicator. */ static void got_all_properties (GObject * source_object, GAsyncResult * res, gpointer user_data) { Application * app = (Application *)user_data; g_return_if_fail(app != NULL); GError * error = NULL; GVariant * menu = NULL, * id = NULL, * category = NULL, * status = NULL, * icon_name = NULL, * aicon_name = NULL, * icon_desc = NULL, * aicon_desc = NULL, * icon_theme_path = NULL, * index = NULL, * label = NULL, * guide = NULL, * title = NULL; GVariant * properties = g_dbus_proxy_call_finish(G_DBUS_PROXY(source_object), res, &error); if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { g_error_free (error); return; // Must exit before accessing freed memory } if (app->props_cancel != NULL) { g_object_unref(app->props_cancel); app->props_cancel = NULL; } if (error != NULL) { g_critical("Could not grab DBus properties for %s: %s", app->dbus_name, error->message); g_error_free(error); if (!app->validated) application_free(app); return; } ApplicationServiceAppstorePrivate * priv = application_service_appstore_get_instance_private(app->appstore); /* Grab all properties from variant */ GVariantIter * iter = NULL; const gchar * name = NULL; GVariant * value = NULL; g_variant_get(properties, "(a{sv})", &iter); while (g_variant_iter_loop (iter, "{&sv}", &name, &value)) { if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_MENU) == 0) { menu = g_variant_ref(value); } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_ID) == 0) { id = g_variant_ref(value); } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_CATEGORY) == 0) { category = g_variant_ref(value); } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_STATUS) == 0) { status = g_variant_ref(value); } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_ICON_NAME) == 0) { icon_name = g_variant_ref(value); } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_ICON_DESC) == 0) { icon_desc = g_variant_ref(value); } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_AICON_NAME) == 0) { aicon_name = g_variant_ref(value); } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_AICON_DESC) == 0) { aicon_desc = g_variant_ref(value); } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_ICON_THEME_PATH) == 0) { icon_theme_path = g_variant_ref(value); } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_ORDERING_INDEX) == 0) { index = g_variant_ref(value); } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_LABEL) == 0) { label = g_variant_ref(value); } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_LABEL_GUIDE) == 0) { guide = g_variant_ref(value); } else if (g_strcmp0(name, NOTIFICATION_ITEM_PROP_TITLE) == 0) { title = g_variant_ref(value); } /* else ignore */ } g_variant_iter_free (iter); g_variant_unref(properties); if (menu == NULL || id == NULL || category == NULL || status == NULL || icon_name == NULL) { g_warning("Notification Item on object %s of %s doesn't have enough properties.", app->dbus_object, app->dbus_name); if (!app->validated) application_free(app); } else { app->validated = TRUE; /* It is possible we're coming through a second time and getting the properties. So we need to ensure we don't already have them stored */ g_free(app->id); g_free(app->category); g_free(app->icon); g_free(app->menu); app->id = g_variant_dup_string(id, NULL); app->category = g_variant_dup_string(category, NULL); app->status = string_to_status(g_variant_get_string(status, NULL)); app->icon = g_variant_dup_string(icon_name, NULL); app->menu = g_variant_dup_string(menu, NULL); /* Now the optional properties */ g_free(app->icon_desc); if (icon_desc != NULL) { app->icon_desc = g_variant_dup_string(icon_desc, NULL); } else { app->icon_desc = g_strdup(""); } g_free(app->aicon); if (aicon_name != NULL) { app->aicon = g_variant_dup_string(aicon_name, NULL); } else { app->aicon = g_strdup(""); } g_free(app->aicon_desc); if (aicon_desc != NULL) { app->aicon_desc = g_variant_dup_string(aicon_desc, NULL); } else { app->aicon_desc = g_strdup(""); } g_free(app->icon_theme_path); if (icon_theme_path != NULL) { app->icon_theme_path = g_variant_dup_string(icon_theme_path, NULL); } else { app->icon_theme_path = g_strdup(""); } gpointer ordering_index_over = g_hash_table_lookup(priv->ordering_overrides, app->id); if (ordering_index_over == NULL) { if (index == NULL || g_variant_get_uint32(index) == 0) { app->ordering_index = generate_id(string_to_cat(app->category), app->id); } else { app->ordering_index = g_variant_get_uint32(index); } } else { app->ordering_index = GPOINTER_TO_UINT(ordering_index_over); } g_debug("'%s' ordering index is '%X'", app->id, app->ordering_index); priv->applications = g_list_sort_with_data(priv->applications, app_sort_func, NULL); g_free(app->label); if (label != NULL) { app->label = g_variant_dup_string(label, NULL); } else { app->label = g_strdup(""); } g_free(app->guide); if (guide != NULL) { app->guide = g_variant_dup_string(guide, NULL); } else { app->guide = g_strdup(""); } g_free(app->title); if (title != NULL) { app->title = g_variant_dup_string(title, NULL); } else { app->title = g_strdup(""); } apply_status(app); if (app->queued_props) { get_all_properties(app); app->queued_props = FALSE; } } if (menu) g_variant_unref (menu); if (id) g_variant_unref (id); if (category) g_variant_unref (category); if (status) g_variant_unref (status); if (icon_name) g_variant_unref (icon_name); if (icon_desc) g_variant_unref (icon_desc); if (aicon_name) g_variant_unref (aicon_name); if (aicon_desc) g_variant_unref (aicon_desc); if (icon_theme_path) g_variant_unref (icon_theme_path); if (index) g_variant_unref (index); if (label) g_variant_unref (label); if (guide) g_variant_unref (guide); if (title) g_variant_unref (title); return; } static void get_all_properties (Application * app) { if (app->props != NULL && app->props_cancel == NULL) { app->props_cancel = g_cancellable_new(); g_dbus_proxy_call(app->props, "GetAll", g_variant_new("(s)", NOTIFICATION_ITEM_DBUS_IFACE), G_DBUS_CALL_FLAGS_NONE, -1, app->props_cancel, got_all_properties, app); } else { g_debug("Queuing a properties check"); app->queued_props = TRUE; } } /* Simple translation function -- could be optimized */ static AppIndicatorStatus string_to_status(const gchar * status_string) { GEnumClass * klass = G_ENUM_CLASS(g_type_class_ref(APP_INDICATOR_TYPE_INDICATOR_STATUS)); g_return_val_if_fail(klass != NULL, APP_INDICATOR_STATUS_PASSIVE); AppIndicatorStatus retval = APP_INDICATOR_STATUS_PASSIVE; GEnumValue * val = g_enum_get_value_by_nick(klass, status_string); if (val == NULL) { g_warning("Unrecognized status '%s' assuming passive.", status_string); } else { retval = (AppIndicatorStatus)val->value; } g_type_class_unref(klass); return retval; } /* Simple translation function -- could be optimized */ static AppIndicatorCategory string_to_cat(const gchar * cat_string) { GEnumClass * klass = G_ENUM_CLASS(g_type_class_ref(APP_INDICATOR_TYPE_INDICATOR_CATEGORY)); g_return_val_if_fail(klass != NULL, APP_INDICATOR_CATEGORY_OTHER); AppIndicatorCategory retval = APP_INDICATOR_CATEGORY_OTHER; GEnumValue * val = g_enum_get_value_by_nick(klass, cat_string); if (val == NULL) { g_warning("Unrecognized status '%s' assuming other.", cat_string); } else { retval = (AppIndicatorCategory)val->value; } g_type_class_unref(klass); return retval; } /* A small helper function to get the position of an application in the app list of the applications that are visible. */ static gint get_position (Application * app) { ApplicationServiceAppstorePrivate * priv = application_service_appstore_get_instance_private(app->appstore); GList * lapp; gint count; /* Go through the list and try to find ours */ for (lapp = priv->applications, count = 0; lapp != NULL; lapp = g_list_next(lapp), count++) { if (lapp->data == app) { break; } /* If the selected app isn't visible let's not count it's position */ Application * thisapp = (Application *)(lapp->data); if (thisapp->visible_state == VISIBLE_STATE_HIDDEN) { count--; } } if (lapp == NULL) { g_warning("Unable to find position for app '%s'", app->id); return -1; } return count; } /* A simple global function for dealing with freeing the information in an Application structure */ static void application_free (Application * app) { if (app == NULL) return; g_debug("Application free '%s'", app->id); /* Handle the case where this could be called by unref'ing one of the proxy objects. */ if (app->currently_free) return; app->currently_free = TRUE; ApplicationServiceAppstorePrivate * priv = application_service_appstore_get_instance_private(app->appstore); /* Remove from the application list */ priv->applications = g_list_remove(priv->applications, app); if (app->name_watcher != 0) { g_dbus_connection_signal_unsubscribe(g_dbus_proxy_get_connection(app->dbus_proxy), app->name_watcher); app->name_watcher = 0; } if (app->props) { g_object_unref(app->props); } if (app->props_cancel != NULL) { g_cancellable_cancel(app->props_cancel); g_object_unref(app->props_cancel); app->props_cancel = NULL; } if (app->dbus_proxy) { g_object_unref(app->dbus_proxy); } if (app->dbus_proxy_cancel != NULL) { g_cancellable_cancel(app->dbus_proxy_cancel); g_object_unref(app->dbus_proxy_cancel); app->dbus_proxy_cancel = NULL; } if (app->id != NULL) { g_free(app->id); } if (app->category != NULL) { g_free(app->category); } if (app->dbus_name != NULL) { g_free(app->dbus_name); } if (app->dbus_object != NULL) { g_free(app->dbus_object); } if (app->icon != NULL) { g_free(app->icon); } if (app->icon_desc != NULL) { g_free(app->icon_desc); } if (app->aicon != NULL) { g_free(app->aicon); } if (app->aicon_desc != NULL) { g_free(app->aicon_desc); } if (app->menu != NULL) { g_free(app->menu); } if (app->icon_theme_path != NULL) { g_free(app->icon_theme_path); } if (app->label != NULL) { g_free(app->label); } if (app->guide != NULL) { g_free(app->guide); } if (app->title != NULL) { g_free(app->title); } g_free(app); return; } /* Gets called when the proxy changes owners, which is usually when it drops off of the bus. */ static void application_died (Application * app) { /* Application died */ g_debug("Application proxy destroyed '%s'", app->id); /* Remove from the panel */ app->status = APP_INDICATOR_STATUS_PASSIVE; apply_status(app); /* Destroy the data */ application_free(app); return; } /* This function takes two Application structure pointers and uses their ordering index to compare them. */ static gint app_sort_func (gconstpointer a, gconstpointer b, gpointer userdata) { Application * appa = (Application *)a; Application * appb = (Application *)b; return (appb->ordering_index/2) - (appa->ordering_index/2); } static void emit_signal (ApplicationServiceAppstore * appstore, const gchar * name, GVariant * variant) { ApplicationServiceAppstorePrivate * priv = application_service_appstore_get_instance_private(appstore); GError * error = NULL; g_dbus_connection_emit_signal (priv->bus, NULL, INDICATOR_APPLICATION_DBUS_OBJ, INDICATOR_APPLICATION_DBUS_IFACE, name, variant, &error); if (error != NULL) { g_critical("Unable to send %s signal: %s", name, error->message); g_error_free(error); return; } return; } /* Change the status of the application. If we're going passive it removes it from the panel. If we're coming online, then it add it to the panel. Otherwise it changes the icon. */ static void apply_status (Application * app) { ApplicationServiceAppstore * appstore = app->appstore; /* g_debug("Applying status. Status: %d Visible: %d", app->status, app->visible_state); */ visible_state_t goal_state = VISIBLE_STATE_HIDDEN; if (app->status != APP_INDICATOR_STATUS_PASSIVE) { goal_state = VISIBLE_STATE_SHOWN; } /* Nothing needs to change, we're good */ if (app->visible_state == goal_state /* ) { */ && goal_state == VISIBLE_STATE_HIDDEN) { /* TODO: Uhg, this is a little wrong in that we're going to send an icon every time the status changes and the indicator is visible even though it might not be updating. But, at this point we need a small patch that is harmless. In the future we need to track which icon is shown and remove the duplicate message. */ return; } if (app->visible_state != goal_state) { g_debug("Changing app '%s' state from %s to %s", app->id, STATE2STRING(app->visible_state), STATE2STRING(goal_state)); } /* This means we're going off line */ if (goal_state == VISIBLE_STATE_HIDDEN) { gint position = get_position(app); if (position == -1) return; emit_signal (appstore, "ApplicationRemoved", g_variant_new ("(i)", position)); } else { /* Figure out which icon we should be using */ gchar * newicon = app->icon; gchar * newdesc = app->icon_desc; if (app->status == APP_INDICATOR_STATUS_ATTENTION && app->aicon != NULL && app->aicon[0] != '\0') { newicon = app->aicon; newdesc = app->aicon_desc; } if (newdesc == NULL) { newdesc = ""; } /* Determine whether we're already shown or not */ if (app->visible_state == VISIBLE_STATE_HIDDEN) { /* Put on panel */ emit_signal (appstore, "ApplicationAdded", g_variant_new ("(sisossssss)", newicon, get_position(app), app->dbus_name, app->menu, app->icon_theme_path, app->label, app->guide, newdesc, app->id, app->title)); } else { /* Icon update */ gint position = get_position(app); if (position == -1) return; emit_signal (appstore, "ApplicationIconChanged", g_variant_new ("(iss)", position, newicon, newdesc)); emit_signal (appstore, "ApplicationLabelChanged", g_variant_new ("(iss)", position, app->label != NULL ? app->label : "", app->guide != NULL ? app->guide : "")); emit_signal (appstore, "ApplicationTitleChanged", g_variant_new ("(is)", position, app->title != NULL ? app->title : "")); } } app->visible_state = goal_state; return; } /* Called when the Notification Item signals that it has a new status. */ static void new_status (Application * app, const gchar * status) { app->status = string_to_status(status); apply_status(app); return; } /* Called when the Notification Item signals that it has a new icon theme path. */ static void new_icon_theme_path (Application * app, const gchar * icon_theme_path) { if (g_strcmp0(icon_theme_path, app->icon_theme_path)) { /* If the new icon theme path is actually a new icon theme path */ if (app->icon_theme_path != NULL) g_free(app->icon_theme_path); app->icon_theme_path = g_strdup(icon_theme_path); if (app->visible_state != VISIBLE_STATE_HIDDEN) { gint position = get_position(app); if (position == -1) return; emit_signal (app->appstore, "ApplicationIconThemePathChanged", g_variant_new ("(is)", position, app->icon_theme_path)); } } return; } /* Called when the Notification Item signals that it has a new label. */ static void new_label (Application * app, const gchar * label, const gchar * guide) { gboolean changed = FALSE; if (g_strcmp0(app->label, label) != 0) { changed = TRUE; if (app->label != NULL) { g_free(app->label); app->label = NULL; } app->label = g_strdup(label); } if (g_strcmp0(app->guide, guide) != 0) { changed = TRUE; if (app->guide != NULL) { g_free(app->guide); app->guide = NULL; } app->guide = g_strdup(guide); } if (changed) { gint position = get_position(app); if (position == -1) return; emit_signal (app->appstore, "ApplicationLabelChanged", g_variant_new ("(iss)", position, app->label != NULL ? app->label : "", app->guide != NULL ? app->guide : "")); } return; } /* Adding a new NotificationItem object from DBus in to the appstore. First, we need to get the information on it though. */ void application_service_appstore_application_add (ApplicationServiceAppstore * appstore, const gchar * dbus_name, const gchar * dbus_object) { g_debug("Adding new application: %s:%s", dbus_name, dbus_object); /* Make sure we got a sensible request */ g_return_if_fail(IS_APPLICATION_SERVICE_APPSTORE(appstore)); g_return_if_fail(dbus_name != NULL && dbus_name[0] != '\0'); g_return_if_fail(dbus_object != NULL && dbus_object[0] != '\0'); Application * app = find_application(appstore, dbus_name, dbus_object); if (app != NULL) { g_debug("Application already exists, re-requesting properties."); get_all_properties(app); return; } /* Build the application entry. This will be carried along until we're sure we've got everything. */ app = g_new0(Application, 1); app->validated = FALSE; app->dbus_name = g_strdup(dbus_name); app->dbus_object = g_strdup(dbus_object); app->appstore = appstore; app->status = APP_INDICATOR_STATUS_PASSIVE; app->icon = NULL; app->aicon = NULL; app->menu = NULL; app->icon_theme_path = NULL; app->label = NULL; app->guide = NULL; app->title = NULL; app->currently_free = FALSE; app->ordering_index = 0; app->visible_state = VISIBLE_STATE_HIDDEN; app->name_watcher = 0; app->props_cancel = NULL; app->props = NULL; app->queued_props = FALSE; /* Get the DBus proxy for the NotificationItem interface */ app->dbus_proxy_cancel = g_cancellable_new(); g_dbus_proxy_new_for_bus(G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, NULL, app->dbus_name, app->dbus_object, NOTIFICATION_ITEM_DBUS_IFACE, app->dbus_proxy_cancel, dbus_proxy_cb, app); ApplicationServiceAppstorePrivate * priv = application_service_appstore_get_instance_private(app->appstore); priv->applications = g_list_insert_sorted_with_data (priv->applications, app, app_sort_func, NULL); /* We're returning, nothing is yet added until the properties come back and give us more info. */ return; } static void 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) { Application * app = (Application *)user_data; gchar * new_name = NULL; g_variant_get(parameters, "(sss)", NULL, NULL, &new_name); if (new_name == NULL || new_name[0] == 0) application_died(app); g_free(new_name); } /* Callback from trying to create the proxy for the app. */ static void dbus_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data) { GError * error = NULL; Application * app = (Application *)user_data; g_return_if_fail(app != NULL); GDBusProxy * proxy = g_dbus_proxy_new_for_bus_finish(res, &error); if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { g_error_free (error); return; // Must exit before accessing freed memory } if (app->dbus_proxy_cancel != NULL) { g_object_unref(app->dbus_proxy_cancel); app->dbus_proxy_cancel = NULL; } if (error != NULL) { g_critical("Could not grab DBus proxy for %s: %s", app->dbus_name, error->message); g_error_free(error); application_free(app); return; } /* Okay, we're good to grab the proxy at this point, we're sure that it's ours. */ app->dbus_proxy = proxy; /* We've got it, let's watch it for destruction */ app->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, name_changed, app, NULL); g_signal_connect(proxy, "g-signal", G_CALLBACK(app_receive_signal), app); app->props_cancel = g_cancellable_new(); g_dbus_proxy_new(g_dbus_proxy_get_connection(proxy), G_DBUS_PROXY_FLAGS_NONE, NULL, app->dbus_name, app->dbus_object, "org.freedesktop.DBus.Properties", app->props_cancel, props_cb, app); return; } /* Callback from trying to create the proxy for the app. */ static void props_cb (GObject * object, GAsyncResult * res, gpointer user_data) { GError * error = NULL; Application * app = (Application *)user_data; g_return_if_fail(app != NULL); GDBusProxy * proxy = g_dbus_proxy_new_for_bus_finish(res, &error); if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { g_error_free (error); return; // Must exit before accessing freed memory } if (app->props_cancel != NULL) { g_object_unref(app->props_cancel); app->props_cancel = NULL; } if (error != NULL) { g_critical("Could not grab Properties DBus proxy for %s: %s", app->dbus_name, error->message); g_error_free(error); application_free(app); return; } /* Okay, we're good to grab the proxy at this point, we're sure that it's ours. */ app->props = proxy; get_all_properties(app); return; } /* Receives all signals from the service, routed to the appropriate functions */ static void app_receive_signal (GDBusProxy * proxy, gchar * sender_name, gchar * signal_name, GVariant * parameters, gpointer user_data) { Application * app = (Application *)user_data; if (!app->validated) return; if (g_strcmp0(signal_name, NOTIFICATION_ITEM_SIG_NEW_ICON) == 0) { /* icon name isn't provided by signal, so look it up */ get_all_properties(app); } else if (g_strcmp0(signal_name, NOTIFICATION_ITEM_SIG_NEW_AICON) == 0) { /* aicon name isn't provided by signal, so look it up */ get_all_properties(app); } else if (g_strcmp0(signal_name, NOTIFICATION_ITEM_SIG_NEW_TITLE) == 0) { /* title name isn't provided by signal, so look it up */ get_all_properties(app); } else if (g_strcmp0(signal_name, NOTIFICATION_ITEM_SIG_NEW_STATUS) == 0) { gchar * status = NULL; g_variant_get(parameters, "(s)", &status); new_status(app, status); g_free(status); } else if (g_strcmp0(signal_name, NOTIFICATION_ITEM_SIG_NEW_ICON_THEME_PATH) == 0) { gchar * icon_theme_path = NULL; g_variant_get(parameters, "(s)", &icon_theme_path); new_icon_theme_path(app, icon_theme_path); g_free(icon_theme_path); } else if (g_strcmp0(signal_name, NOTIFICATION_ITEM_SIG_NEW_LABEL) == 0) { gchar * label = NULL, * guide = NULL; g_variant_get(parameters, "(ss)", &label, &guide); new_label(app, label, guide); g_free(label); g_free(guide); } return; } /* Looks for an application in the list of applications */ static Application * find_application (ApplicationServiceAppstore * appstore, const gchar * address, const gchar * object) { ApplicationServiceAppstorePrivate * priv = application_service_appstore_get_instance_private(appstore); GList * listpntr; for (listpntr = priv->applications; listpntr != NULL; listpntr = g_list_next(listpntr)) { Application * app = (Application *)listpntr->data; if (!g_strcmp0(app->dbus_name, address) && !g_strcmp0(app->dbus_object, object)) { return app; } } return NULL; } /* Looks for an application in the list of applications with the matching menu */ static Application * find_application_by_menu (ApplicationServiceAppstore * appstore, const gchar * address, const gchar * menuobject) { g_return_val_if_fail(appstore, NULL); g_return_val_if_fail(address, NULL); g_return_val_if_fail(menuobject, NULL); ApplicationServiceAppstorePrivate * priv = application_service_appstore_get_instance_private(appstore); GList *l; for (l = priv->applications; l != NULL; l = l->next) { Application *a = l->data; if (g_strcmp0(a->dbus_name, address) == 0 && g_strcmp0(a->menu, menuobject) == 0) { return a; } } return NULL; } /* Removes an application. Currently only works for the apps that are shown. */ void application_service_appstore_application_remove (ApplicationServiceAppstore * appstore, const gchar * dbus_name, const gchar * dbus_object) { g_return_if_fail(IS_APPLICATION_SERVICE_APPSTORE(appstore)); g_return_if_fail(dbus_name != NULL && dbus_name[0] != '\0'); g_return_if_fail(dbus_object != NULL && dbus_object[0] != '\0'); Application * app = find_application(appstore, dbus_name, dbus_object); if (app != NULL) { application_died(app); } else { g_warning("Unable to find application %s:%s", dbus_name, dbus_object); } return; } gchar** application_service_appstore_application_get_list (ApplicationServiceAppstore * appstore) { ApplicationServiceAppstorePrivate * priv = application_service_appstore_get_instance_private(appstore); gchar ** out; gchar ** outpntr; GList * listpntr; out = g_new(gchar*, g_list_length(priv->applications) + 1); for (listpntr = priv->applications, outpntr = out; listpntr != NULL; listpntr = g_list_next(listpntr), ++outpntr) { Application * app = (Application *)listpntr->data; *outpntr = g_strdup_printf("%s%s", app->dbus_name, app->dbus_object); } *outpntr = 0; return out; } /* Creates a basic appstore object and attaches the LRU file object to it. */ ApplicationServiceAppstore * application_service_appstore_new (void) { ApplicationServiceAppstore * appstore = APPLICATION_SERVICE_APPSTORE(g_object_new(APPLICATION_SERVICE_APPSTORE_TYPE, NULL)); return appstore; } /* DBus Interface */ static GVariant * get_applications (ApplicationServiceAppstore * appstore) { ApplicationServiceAppstorePrivate * priv = application_service_appstore_get_instance_private(appstore); GVariant * out = NULL; if (g_list_length(priv->applications) > 0) { GVariantBuilder builder; GList * listpntr; gint position = 0; g_variant_builder_init(&builder, G_VARIANT_TYPE ("a(sisossssss)")); for (listpntr = priv->applications; listpntr != NULL; listpntr = g_list_next(listpntr)) { Application * app = (Application *)listpntr->data; if (app->visible_state == VISIBLE_STATE_HIDDEN) { continue; } g_variant_builder_add (&builder, "(sisossssss)", app->icon, position++, app->dbus_name, app->menu, app->icon_theme_path, app->label, app->guide, (app->icon_desc != NULL) ? app->icon_desc : "", app->id, app->title); } out = g_variant_builder_end(&builder); } else { GError * error = NULL; out = g_variant_parse(g_variant_type_new("a(sisossssss)"), "[]", NULL, NULL, &error); if (error != NULL) { g_warning("Unable to parse '[]' as a 'a(sisossssss)': %s", error->message); out = NULL; g_error_free(error); } } if (out != NULL) { return g_variant_new_tuple(&out, 1); } else { return NULL; } } ayatana-indicator-application-22.2.0/src/application-service-appstore.h0000644000000000000000000000655314203537407023126 0ustar /* An object that stores the registration of all the application indicators. It also communicates this to the indicator visualization. Copyright 2009 Canonical Ltd. Authors: Ted Gould 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 . */ #ifndef __APPLICATION_SERVICE_APPSTORE_H__ #define __APPLICATION_SERVICE_APPSTORE_H__ #include #include G_BEGIN_DECLS #define APPLICATION_SERVICE_APPSTORE_TYPE (application_service_appstore_get_type ()) #define APPLICATION_SERVICE_APPSTORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), APPLICATION_SERVICE_APPSTORE_TYPE, ApplicationServiceAppstore)) #define APPLICATION_SERVICE_APPSTORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), APPLICATION_SERVICE_APPSTORE_TYPE, ApplicationServiceAppstoreClass)) #define IS_APPLICATION_SERVICE_APPSTORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), APPLICATION_SERVICE_APPSTORE_TYPE)) #define IS_APPLICATION_SERVICE_APPSTORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), APPLICATION_SERVICE_APPSTORE_TYPE)) #define APPLICATION_SERVICE_APPSTORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), APPLICATION_SERVICE_APPSTORE_TYPE, ApplicationServiceAppstoreClass)) typedef struct _ApplicationServiceAppstore ApplicationServiceAppstore; typedef struct _ApplicationServiceAppstoreClass ApplicationServiceAppstoreClass; struct _ApplicationServiceAppstoreClass { GObjectClass parent_class; void (*application_added) (ApplicationServiceAppstore * appstore, gchar *, gint, gchar *, gchar *, gpointer); void (*application_removed) (ApplicationServiceAppstore * appstore, gint, gpointer); void (*application_icon_changed)(ApplicationServiceAppstore * appstore, gint, const gchar *, gpointer); void (*application_icon_theme_path_changed)(ApplicationServiceAppstore * appstore, gint, const gchar *, gpointer); void (*application_label_changed)(ApplicationServiceAppstore * appstore, gint, const gchar *, const gchar *, gpointer); }; struct _ApplicationServiceAppstore { GObject parent; }; ApplicationServiceAppstore * application_service_appstore_new (void); GType application_service_appstore_get_type (void); void application_service_appstore_application_add (ApplicationServiceAppstore * appstore, const gchar * dbus_name, const gchar * dbus_object); void application_service_appstore_application_remove (ApplicationServiceAppstore * appstore, const gchar * dbus_name, const gchar * dbus_object); gchar** application_service_appstore_application_get_list (ApplicationServiceAppstore * appstore); G_END_DECLS #endif ayatana-indicator-application-22.2.0/src/application-service.c0000644000000000000000000000472614203537407021266 0ustar /* The core file for the service that starts up all the objects we need and houses our main loop. Copyright 2009 Canonical Ltd. Authors: Ted Gould 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 . */ #include #include "application-service-appstore.h" #include "application-service-watcher.h" #include "dbus-shared.h" /* The base main loop */ static GMainLoop * mainloop = NULL; /* Where the application registry lives */ static ApplicationServiceAppstore * appstore = NULL; /* Interface for applications */ static ApplicationServiceWatcher * watcher = NULL; /* Make sure we can set up all our objects before we get the name */ static void bus_acquired (GDBusConnection * con, const gchar * name, gpointer user_data) { g_debug("Bus Acquired, building objects"); /* Building our app store */ appstore = application_service_appstore_new(); /* Adding a watcher for the Apps coming up */ watcher = application_service_watcher_new(appstore); } /* Nice to know, but we're not doing anything special */ static void name_acquired (GDBusConnection * con, const gchar * name, gpointer user_data) { g_debug("Name Acquired"); } /* Shouldn't happen under normal usage */ static void name_lost (GDBusConnection * con, const gchar * name, gpointer user_data) { g_warning("Name Lost"); g_main_loop_quit(mainloop); } /* Builds up the core objects and puts us spinning into a main loop. */ int main (int argc, char ** argv) { guint nameownership = g_bus_own_name(G_BUS_TYPE_SESSION, INDICATOR_APPLICATION_DBUS_ADDR, G_BUS_NAME_OWNER_FLAGS_NONE, bus_acquired, name_acquired, name_lost, NULL, NULL); /* Building and executing our main loop */ mainloop = g_main_loop_new(NULL, FALSE); g_main_loop_run(mainloop); g_debug("Finishing Main Loop"); g_bus_unown_name(nameownership); /* Unref'ing all the objects */ g_main_loop_unref(mainloop); g_object_unref(G_OBJECT(watcher)); g_object_unref(G_OBJECT(appstore)); return 0; } ayatana-indicator-application-22.2.0/src/application-service-watcher.c0000644000000000000000000003116014203537407022711 0ustar /* An object implementing the NotificationWatcher interface and passes the information into the app-store. Copyright 2009 Canonical Ltd. Authors: Ted Gould 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 . */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include #include "application-service-watcher.h" #include "dbus-shared.h" /* Enum for the properties so that they can be quickly found and looked up. */ enum { PROP_0, PROP_PROTOCOL_VERSION, PROP_IS_STATUS_NOTIFIER_HOST_REGISTERED, PROP_REGISTERED_STATUS_NOTIFIER_ITEMS }; /* The strings so that they can be slowly looked up. */ #define PROP_PROTOCOL_VERSION_S "protocol-version" #define PROP_IS_STATUS_NOTIFIER_HOST_REGISTERED_S "is-status-notifier-host-registered" #define PROP_REGISTERED_STATUS_NOTIFIER_ITEMS_S "registered-status-notifier-items" #define CURRENT_PROTOCOL_VERSION 0 static gboolean _ayatana_notification_watcher_server_register_status_notifier_item (ApplicationServiceWatcher * appwatcher, const gchar * service, DBusGMethodInvocation * method); static gboolean _ayatana_notification_watcher_server_register_status_notifier_host (ApplicationServiceWatcher * appwatcher, const gchar * host); static void get_name_cb (DBusGProxy * proxy, guint status, GError * error, gpointer data); #include "ayatana-notification-watcher-server.h" /* Private Stuff */ typedef struct { ApplicationServiceAppstore * appstore; DBusGProxy * dbus_proxy; } ApplicationServiceWatcherPrivate; /* Signals Stuff */ enum { STATUS_NOTIFIER_ITEM_REGISTERED, STATUS_NOTIFIER_ITEM_UNREGISTERED, STATUS_NOTIFIER_HOST_REGISTERED, LAST_SIGNAL }; static guint signals[LAST_SIGNAL] = { 0 }; /* GObject stuff */ static void application_service_watcher_class_init (ApplicationServiceWatcherClass *klass); static void application_service_watcher_init (ApplicationServiceWatcher *self); static void application_service_watcher_dispose (GObject *object); static void application_service_watcher_finalize (GObject *object); static void application_service_watcher_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); static void application_service_watcher_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); G_DEFINE_TYPE_WITH_PRIVATE (ApplicationServiceWatcher, application_service_watcher, G_TYPE_OBJECT); static void application_service_watcher_class_init (ApplicationServiceWatcherClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = application_service_watcher_dispose; object_class->finalize = application_service_watcher_finalize; /* Property funcs */ object_class->set_property = application_service_watcher_set_property; object_class->get_property = application_service_watcher_get_property; /* Properties */ g_object_class_install_property (object_class, PROP_PROTOCOL_VERSION, g_param_spec_int(PROP_PROTOCOL_VERSION_S, "Protocol Version", "Which version of the StatusNotifierProtocol this watcher implements", 0, G_MAXINT, CURRENT_PROTOCOL_VERSION, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (object_class, PROP_IS_STATUS_NOTIFIER_HOST_REGISTERED, g_param_spec_boolean(PROP_IS_STATUS_NOTIFIER_HOST_REGISTERED_S, "Is StatusNotifierHost Registered", "True if there is at least one StatusNotifierHost registered", FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (object_class, PROP_REGISTERED_STATUS_NOTIFIER_ITEMS, g_param_spec_boxed(PROP_REGISTERED_STATUS_NOTIFIER_ITEMS_S, "Registered StatusNotifierItems", "The list of StatusNotifierItems registered to this watcher", G_TYPE_STRV, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); /* Signals */ signals[STATUS_NOTIFIER_ITEM_REGISTERED] = g_signal_new ("status-notifier-item-registered", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ApplicationServiceWatcherClass, status_notifier_item_registered), NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING, G_TYPE_NONE); signals[STATUS_NOTIFIER_ITEM_UNREGISTERED] = g_signal_new ("status-notifier-item-unregistered", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ApplicationServiceWatcherClass, status_notifier_item_unregistered), NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING, G_TYPE_NONE); signals[STATUS_NOTIFIER_HOST_REGISTERED] = g_signal_new ("status-notifier-host-registered", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ApplicationServiceWatcherClass, status_notifier_host_registered), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0, G_TYPE_NONE); dbus_g_object_type_install_info(APPLICATION_SERVICE_WATCHER_TYPE, &dbus_glib__ayatana_notification_watcher_server_object_info); return; } static void application_service_watcher_init (ApplicationServiceWatcher *self) { ApplicationServiceWatcherPrivate * priv = application_service_watcher_get_instance_private(self); priv->appstore = NULL; GError * error = NULL; DBusGConnection * session_bus = dbus_g_bus_get(DBUS_BUS_SESSION, &error); if (error != NULL) { g_warning("Unable to get session bus: %s", error->message); g_error_free(error); exit(0); return; } dbus_g_connection_register_g_object(session_bus, NOTIFICATION_WATCHER_DBUS_OBJ, G_OBJECT(self)); priv->dbus_proxy = dbus_g_proxy_new_for_name_owner(session_bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, &error); if (error != NULL) { g_error("Ah, can't get proxy to dbus: %s", error->message); g_error_free(error); return; } org_freedesktop_DBus_request_name_async(priv->dbus_proxy, NOTIFICATION_WATCHER_DBUS_ADDR, DBUS_NAME_FLAG_DO_NOT_QUEUE, get_name_cb, self); return; } static void application_service_watcher_dispose (GObject *object) { ApplicationServiceWatcherPrivate * priv = application_service_watcher_get_instance_private(APPLICATION_SERVICE_WATCHER(object)); if (priv->appstore != NULL) { g_object_unref(G_OBJECT(priv->appstore)); priv->appstore = NULL; } G_OBJECT_CLASS (application_service_watcher_parent_class)->dispose (object); return; } static void application_service_watcher_finalize (GObject *object) { G_OBJECT_CLASS (application_service_watcher_parent_class)->finalize (object); return; } static void application_service_watcher_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) { /* There are no writable properties for now */ } static void application_service_watcher_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { ApplicationServiceWatcherPrivate * priv = application_service_watcher_get_instance_private(APPLICATION_SERVICE_WATCHER(object)); switch (prop_id) { case PROP_PROTOCOL_VERSION: g_value_set_int (value, CURRENT_PROTOCOL_VERSION); break; case PROP_IS_STATUS_NOTIFIER_HOST_REGISTERED: g_value_set_boolean (value, TRUE); break; case PROP_REGISTERED_STATUS_NOTIFIER_ITEMS: g_value_set_boxed (value, application_service_appstore_application_get_list(priv->appstore)); break; } } ApplicationServiceWatcher * application_service_watcher_new (ApplicationServiceAppstore * appstore) { GObject * obj = g_object_new(APPLICATION_SERVICE_WATCHER_TYPE, NULL); ApplicationServiceWatcherPrivate * priv = application_service_watcher_get_instance_private(APPLICATION_SERVICE_WATCHER(obj)); priv->appstore = appstore; g_object_ref(G_OBJECT(priv->appstore)); return APPLICATION_SERVICE_WATCHER(obj); } static gboolean _ayatana_notification_watcher_server_register_status_notifier_item (ApplicationServiceWatcher * appwatcher, const gchar * service, DBusGMethodInvocation * method) { ApplicationServiceWatcherPrivate * priv = application_service_watcher_get_instance_private(appwatcher); if (service[0] == '/') { char * sender = dbus_g_method_get_sender(method); application_service_appstore_application_add(priv->appstore, sender, service); g_free(sender); } else { application_service_appstore_application_add(priv->appstore, service, NOTIFICATION_ITEM_DEFAULT_OBJ); } dbus_g_method_return(method, G_TYPE_NONE); return TRUE; } static gboolean _ayatana_notification_watcher_server_register_status_notifier_host (ApplicationServiceWatcher * appwatcher, const gchar * host) { return FALSE; } /* Function to handle the return of the get name. There isn't a whole lot that can be done, but we're atleast going to tell people. */ static void get_name_cb (DBusGProxy * proxy, guint status, GError * error, gpointer data) { if (error != NULL) { g_warning("Unable to get watcher name '%s' because: %s", NOTIFICATION_WATCHER_DBUS_ADDR, error->message); return; } if (status != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER && status != DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER) { g_warning("Unable to get watcher name '%s'", NOTIFICATION_WATCHER_DBUS_ADDR); return; } /* After we've got the name we can request upstart to trigger the jobs of any application indicators that need to start at desktop init time. */ // GError * spawn_error = NULL; // gchar * argv[] = { // "initctl", // "--session", // "--user", // "emit", // "--no-wait", // "appindicators-start", // NULL, // }; // // g_spawn_async(NULL, /* Working Directory */ // argv, // NULL, /* environment */ // G_SPAWN_SEARCH_PATH, // NULL, NULL, /* child setup function */ // NULL, /* Pid */ // &spawn_error); // // if (spawn_error != NULL) { // /* NOTE: When we get to the point where we can start // assuming upstart user sessions this can be escillated // to a warning or higher */ // g_debug("Unable to signal appindicators-start to upstart: %s", spawn_error->message); // g_error_free(spawn_error); // } return; } ayatana-indicator-application-22.2.0/src/application-service-watcher.h0000644000000000000000000000476214203537407022726 0ustar /* An object implementing the NotificationWatcher interface and passes the information into the app-store. Copyright 2009 Canonical Ltd. Authors: Ted Gould 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 . */ #ifndef __APPLICATION_SERVICE_WATCHER_H__ #define __APPLICATION_SERVICE_WATCHER_H__ #include #include #include "application-service-appstore.h" G_BEGIN_DECLS #define APPLICATION_SERVICE_WATCHER_TYPE (application_service_watcher_get_type ()) #define APPLICATION_SERVICE_WATCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), APPLICATION_SERVICE_WATCHER_TYPE, ApplicationServiceWatcher)) #define APPLICATION_SERVICE_WATCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), APPLICATION_SERVICE_WATCHER_TYPE, ApplicationServiceWatcherClass)) #define IS_APPLICATION_SERVICE_WATCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), APPLICATION_SERVICE_WATCHER_TYPE)) #define IS_APPLICATION_SERVICE_WATCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), APPLICATION_SERVICE_WATCHER_TYPE)) #define APPLICATION_SERVICE_WATCHER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), APPLICATION_SERVICE_WATCHER_TYPE, ApplicationServiceWatcherClass)) typedef struct _ApplicationServiceWatcher ApplicationServiceWatcher; typedef struct _ApplicationServiceWatcherClass ApplicationServiceWatcherClass; struct _ApplicationServiceWatcherClass { GObjectClass parent_class; /* Signals */ void (*status_notifier_item_registered) (ApplicationServiceWatcher * watcher, gchar * object, gpointer data); void (*status_notifier_item_unregistered) (ApplicationServiceWatcher * watcher, gchar * object, gpointer data); void (*status_notifier_host_registered) (ApplicationServiceWatcher * watcher, gpointer data); }; struct _ApplicationServiceWatcher { GObject parent; }; GType application_service_watcher_get_type (void); ApplicationServiceWatcher * application_service_watcher_new (ApplicationServiceAppstore * appstore); G_END_DECLS #endif ayatana-indicator-application-22.2.0/src/ayatana-application-service-marshal.list0000644000000000000000000000156314203537407025054 0ustar # Marshaller definitions to be generated. # # Copyright 2009 Canonical Ltd. # # Authors: # Ted Gould # # 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 . VOID: STRING, INT, STRING, STRING, STRING, STRING, STRING VOID: INT, STRING, STRING VOID: INT, STRING VOID: STRING, STRING VOID: BOOL, STRING, OBJECT ayatana-indicator-application-22.2.0/src/ayatana-application-service.xml0000644000000000000000000000574314203537407023260 0ustar ayatana-indicator-application-22.2.0/src/ayatana-notification-watcher.xml0000644000000000000000000000173314203537407023433 0ustar ayatana-indicator-application-22.2.0/src/CMakeLists.txt0000644000000000000000000001164214203537407017714 0ustar # gen-ayatana-application-service.xml.h file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/gen-ayatana-application-service.xml.h" "extern const char * _ayatana_application_service;") # gen-ayatana-application-service.xml.c file(READ "${CMAKE_CURRENT_SOURCE_DIR}/ayatana-application-service.xml" GEN_AYATANA_APPLICATION_SERVICE_XML_C) string(REPLACE "\"" "\\\"" GEN_AYATANA_APPLICATION_SERVICE_XML_C ${GEN_AYATANA_APPLICATION_SERVICE_XML_C}) string(REPLACE "\n" "\\n\"\n\"" GEN_AYATANA_APPLICATION_SERVICE_XML_C ${GEN_AYATANA_APPLICATION_SERVICE_XML_C}) string(REGEX REPLACE "\n\"$" "\n" GEN_AYATANA_APPLICATION_SERVICE_XML_C ${GEN_AYATANA_APPLICATION_SERVICE_XML_C}) string(PREPEND GEN_AYATANA_APPLICATION_SERVICE_XML_C "const char * _ayatana_application_service = \n\"") string(APPEND GEN_AYATANA_APPLICATION_SERVICE_XML_C "\;") file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/gen-ayatana-application-service.xml.c" ${GEN_AYATANA_APPLICATION_SERVICE_XML_C}) # ayatana-application-service-marshal.h find_program(GLIB_GENMARSHAL glib-genmarshal) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/ayatana-application-service-marshal.h" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${GLIB_GENMARSHAL} --prefix=_ayatana_application_service_marshal --header ayatana-application-service-marshal.list --quiet --output="${CMAKE_CURRENT_BINARY_DIR}/ayatana-application-service-marshal.h" ) # ayatana-application-service-marshal.c add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/ayatana-application-service-marshal.c" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/ayatana-application-service-marshal.h" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${GLIB_GENMARSHAL} --prefix=_ayatana_application_service_marshal --body ayatana-application-service-marshal.list --include-header=ayatana-application-service-marshal.h --quiet --output="${CMAKE_CURRENT_BINARY_DIR}/ayatana-application-service-marshal.c" ) # ayatana-notification-watcher-server.h find_program(DBUS_BINDING_TOOL dbus-binding-tool) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/ayatana-notification-watcher-server.h" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/ayatana-application-service-marshal.c" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${DBUS_BINDING_TOOL} --prefix=_ayatana_notification_watcher_server --mode=glib-server --output="${CMAKE_CURRENT_BINARY_DIR}/ayatana-notification-watcher-server.h" "${CMAKE_CURRENT_SOURCE_DIR}/ayatana-notification-watcher.xml" ) # ayatana-notification-watcher-client.h add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/ayatana-notification-watcher-client.h" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/ayatana-notification-watcher-server.h" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${DBUS_BINDING_TOOL} --prefix=_ayatana_notification_watcher_client --mode=glib-client --output="${CMAKE_CURRENT_BINARY_DIR}/ayatana-notification-watcher-client.h" "${CMAKE_CURRENT_SOURCE_DIR}/ayatana-notification-watcher.xml" ) add_custom_target("src-generated" DEPENDS "ayatana-notification-watcher-client.h") # libayatana-application.so set(SOURCES ayatana-application-service-marshal.c indicator-application.c ) add_library("ayatana-application" SHARED ${SOURCES}) target_compile_definitions("ayatana-application" PUBLIC G_LOG_DOMAIN="Ayatana-Indicator-Application") target_include_directories("ayatana-application" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS}) target_include_directories("ayatana-application" PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) target_link_libraries("ayatana-application" ${PROJECT_DEPS_LIBRARIES}) add_dependencies("ayatana-application" "src-generated") pkg_get_variable(indicatordir "ayatana-indicator3-0.4" "indicatordir") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libayatana-application.so" DESTINATION "${indicatordir}") # ayatana-indicator-application-service set(SOURCES application-service.c application-service-appstore.c ayatana-application-service-marshal.c application-service-watcher.c gen-ayatana-application-service.xml.c generate-id.c ) add_executable("ayatana-indicator-application-service" ${SOURCES}) target_compile_definitions("ayatana-indicator-application-service" PUBLIC DATADIR="${CMAKE_INSTALL_FULL_DATADIR}/ayatana-indicator-application") target_compile_definitions("ayatana-indicator-application-service" PUBLIC G_LOG_DOMAIN="ayatana-indicator-application-service") target_include_directories("ayatana-indicator-application-service" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS}) target_include_directories("ayatana-indicator-application-service" PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) target_link_libraries("ayatana-indicator-application-service" ${PROJECT_DEPS_LIBRARIES}) add_dependencies("ayatana-indicator-application-service" "ayatana-application") install(TARGETS "ayatana-indicator-application-service" RUNTIME DESTINATION "${CMAKE_INSTALL_FULL_LIBEXECDIR}/ayatana-indicator-application") ayatana-indicator-application-22.2.0/src/dbus-shared.h0000644000000000000000000000255114203537407017525 0ustar /* DBus defaults for everyone to share in the project. Copyright 2009 Canonical Ltd. Authors: Ted Gould 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 . */ #define INDICATOR_APPLICATION_DBUS_ADDR "org.ayatana.indicator.application" #define INDICATOR_APPLICATION_DBUS_OBJ "/org/ayatana/indicator/application/service" #define INDICATOR_APPLICATION_DBUS_IFACE "org.ayatana.indicator.application.service" #define INDICATOR_APPLICATION_SERVICE_VERSION 2 #define NOTIFICATION_WATCHER_DBUS_ADDR "org.kde.StatusNotifierWatcher" #define NOTIFICATION_WATCHER_DBUS_OBJ "/StatusNotifierWatcher" #define NOTIFICATION_WATCHER_DBUS_IFACE "org.kde.StatusNotifierWatcher" #define NOTIFICATION_ITEM_DBUS_IFACE "org.kde.StatusNotifierItem" #define NOTIFICATION_ITEM_DEFAULT_OBJ "/StatusNotifierItem" ayatana-indicator-application-22.2.0/src/generate-id.c0000644000000000000000000000322414203537407017501 0ustar /* Quick litte lack to generate the ordering ID. Copyright 2010 Canonical Ltd. Authors: Ted Gould 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 . */ #include "generate-id.h" #define MULTIPLIER 32 guint32 generate_id (const AppIndicatorCategory catenum, const gchar * id) { guint32 category = 0; guint32 first = 0; guint32 second = 0; guint32 third = 0; switch (catenum) { case APP_INDICATOR_CATEGORY_OTHER: category = MULTIPLIER * 5; break; case APP_INDICATOR_CATEGORY_APPLICATION_STATUS: category = MULTIPLIER * 4; break; case APP_INDICATOR_CATEGORY_COMMUNICATIONS: category = MULTIPLIER * 3; break; case APP_INDICATOR_CATEGORY_SYSTEM_SERVICES: category = MULTIPLIER * 2; break; case APP_INDICATOR_CATEGORY_HARDWARE: category = MULTIPLIER * 1; break; default: g_warning("Got an undefined category: %d", category); category = 0; break; } if (id != NULL) { if (id[0] != '\0') { first = id[0]; if (id[1] != '\0') { second = id[1]; if (id[2] != '\0') { third = id[2]; } } } } return (((((category * 256) + first) * 256) + second) * 256) + third; } ayatana-indicator-application-22.2.0/src/generate-id.h0000644000000000000000000000165714203537407017516 0ustar /* Quick litte lack to generate the ordering ID. Copyright 2010 Canonical Ltd. Authors: Ted Gould 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 . */ #ifndef __GENERATE_ID_H__ #define __GENERATE_ID_H__ #include #include "libayatana-appindicator/app-indicator.h" guint32 generate_id (const AppIndicatorCategory category, const gchar * id); #endif /* __GENERATE_ID_H__ */ ayatana-indicator-application-22.2.0/src/indicator-application.c0000644000000000000000000010161314203537407021573 0ustar /* The indicator application visualization object. It takes the information given by the service and turns it into real-world pixels that users can actually use. Well, GTK does that, but this asks nicely. Copyright 2009 Canonical Ltd. Authors: Ted Gould 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 . */ #ifdef HAVE_CONFIG_H #include "config.h" #endif /* G Stuff */ #include #include #include #include /* DBus Stuff */ #include /* Indicator Stuff */ #include #include #include /* Local Stuff */ #include "dbus-shared.h" #include "gen-ayatana-application-service.xml.h" #include "ayatana-application-service-marshal.h" #define PANEL_ICON_SUFFIX "panel" #define INDICATOR_APPLICATION_TYPE (indicator_application_get_type ()) #define INDICATOR_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), INDICATOR_APPLICATION_TYPE, IndicatorApplication)) #define INDICATOR_APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), INDICATOR_APPLICATION_TYPE, IndicatorApplicationClass)) #define IS_INDICATOR_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), INDICATOR_APPLICATION_TYPE)) #define IS_INDICATOR_APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), INDICATOR_APPLICATION_TYPE)) #define INDICATOR_APPLICATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), INDICATOR_APPLICATION_TYPE, IndicatorApplicationClass)) typedef struct _IndicatorApplication IndicatorApplication; typedef struct _IndicatorApplicationClass IndicatorApplicationClass; struct _IndicatorApplicationClass { IndicatorObjectClass parent_class; }; struct _IndicatorApplication { IndicatorObject parent; }; GType indicator_application_get_type (void); INDICATOR_SET_VERSION INDICATOR_SET_TYPE(INDICATOR_APPLICATION_TYPE) #ifdef HAVE_CONFIG_H #include "config.h" #endif typedef struct { GCancellable * service_proxy_cancel; GDBusProxy * service_proxy; GList * applications; GHashTable * theme_dirs; guint disconnect_kill; GCancellable * get_apps_cancel; guint watch; } IndicatorApplicationPrivate; typedef struct _ApplicationEntry ApplicationEntry; struct _ApplicationEntry { IndicatorObjectEntry entry; gchar * icon_theme_path; gboolean old_service; gchar * dbusobject; gchar * dbusaddress; gchar * guide; gchar * longname; }; static void indicator_application_class_init (IndicatorApplicationClass *klass); static void indicator_application_init (IndicatorApplication *self); static void indicator_application_dispose (GObject *object); static void indicator_application_finalize (GObject *object); static GList * get_entries (IndicatorObject * io); static guint get_location (IndicatorObject * io, IndicatorObjectEntry * entry); static void entry_scrolled (IndicatorObject * io, IndicatorObjectEntry * entry, gint delta, IndicatorScrollDirection direction); static void entry_secondary_activate (IndicatorObject * io, IndicatorObjectEntry * entry, guint time, gpointer data); static void connected (GDBusConnection * con, const gchar * name, const gchar * owner, gpointer user_data); static void disconnected (GDBusConnection * con, const gchar * name, gpointer user_data); static void disconnected_helper (gpointer data, gpointer user_data); static gboolean disconnected_kill (gpointer user_data); static void disconnected_kill_helper (gpointer data, gpointer user_data); static void application_added (IndicatorApplication * application, const gchar * iconname, gint position, const gchar * dbusaddress, const gchar * dbusobject, const gchar * icon_theme_path, const gchar * label, const gchar * guide, const gchar * accessible_desc, const gchar * hint); static void application_removed (IndicatorApplication * application, gint position); static void application_label_changed (IndicatorApplication * application, gint position, const gchar * label, const gchar * guide); static void application_icon_changed (IndicatorApplication * application, gint position, const gchar * iconname, const gchar * icondesc); static void application_icon_theme_path_changed (IndicatorApplication * application, gint position, const gchar * icon_theme_path); static void get_applications (GObject * obj, GAsyncResult * res, gpointer user_data); static void get_applications_helper (IndicatorApplication * self, GVariant * variant); static void theme_dir_unref(IndicatorApplication * ia, const gchar * dir); static void theme_dir_ref(IndicatorApplication * ia, const gchar * dir); static void icon_theme_remove_dir_from_search_path (const char * dir); static void service_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data); static void receive_signal (GDBusProxy * proxy, gchar * sender_name, gchar * signal_name, GVariant * parameters, gpointer user_data); G_DEFINE_TYPE_WITH_PRIVATE (IndicatorApplication, indicator_application, INDICATOR_OBJECT_TYPE); static void indicator_application_class_init (IndicatorApplicationClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = indicator_application_dispose; object_class->finalize = indicator_application_finalize; IndicatorObjectClass * io_class = INDICATOR_OBJECT_CLASS(klass); io_class->get_entries = get_entries; io_class->get_location = get_location; io_class->secondary_activate = entry_secondary_activate; io_class->entry_scrolled = entry_scrolled; return; } static void indicator_application_init (IndicatorApplication *self) { IndicatorApplicationPrivate * priv = indicator_application_get_instance_private(self); /* These are built in the connection phase */ priv->service_proxy_cancel = NULL; priv->service_proxy = NULL; priv->theme_dirs = NULL; priv->disconnect_kill = 0; priv->watch = g_bus_watch_name(G_BUS_TYPE_SESSION, INDICATOR_APPLICATION_DBUS_ADDR, G_BUS_NAME_WATCHER_FLAGS_NONE, connected, disconnected, self, NULL); priv->applications = NULL; priv->theme_dirs = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); priv->get_apps_cancel = NULL; return; } static void indicator_application_dispose (GObject *object) { IndicatorApplicationPrivate * priv = indicator_application_get_instance_private(INDICATOR_APPLICATION(object)); if (priv->disconnect_kill != 0) { g_source_remove(priv->disconnect_kill); } if (priv->get_apps_cancel != NULL) { g_cancellable_cancel(priv->get_apps_cancel); g_object_unref(priv->get_apps_cancel); priv->get_apps_cancel = NULL; } while (priv->applications != NULL) { application_removed(INDICATOR_APPLICATION(object), 0); } if (priv->service_proxy != NULL) { g_object_unref(G_OBJECT(priv->service_proxy)); priv->service_proxy = NULL; } 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 (priv->theme_dirs != NULL) { gpointer directory; GHashTableIter iter; g_hash_table_iter_init (&iter, priv->theme_dirs); while (g_hash_table_iter_next (&iter, &directory, NULL)) { icon_theme_remove_dir_from_search_path (directory); } g_hash_table_destroy(priv->theme_dirs); priv->theme_dirs = NULL; } if (priv->watch != 0) { g_bus_unwatch_name(priv->watch); priv->watch = 0; } G_OBJECT_CLASS (indicator_application_parent_class)->dispose (object); return; } static void indicator_application_finalize (GObject *object) { G_OBJECT_CLASS (indicator_application_parent_class)->finalize (object); return; } /* Brings up the connection to a service that has just come onto the bus, or is atleast new to us. */ static void connected (GDBusConnection * con, const gchar * name, const gchar * owner, gpointer user_data) { IndicatorApplication * application = INDICATOR_APPLICATION(user_data); g_return_if_fail(application != NULL); IndicatorApplicationPrivate * priv = indicator_application_get_instance_private(application); g_debug("Connected to Application Indicator Service."); if (priv->service_proxy_cancel == NULL && priv->service_proxy == NULL) { /* Build the service proxy */ priv->service_proxy_cancel = g_cancellable_new(); g_dbus_proxy_new_for_bus(G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, NULL, INDICATOR_APPLICATION_DBUS_ADDR, INDICATOR_APPLICATION_DBUS_OBJ, INDICATOR_APPLICATION_DBUS_IFACE, priv->service_proxy_cancel, service_proxy_cb, application); } return; } /* Callback from trying to create the proxy for the service, this could include starting the service. */ static void service_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data) { GError * error = NULL; IndicatorApplication * self = INDICATOR_APPLICATION(user_data); g_return_if_fail(self != NULL); IndicatorApplicationPrivate * priv = indicator_application_get_instance_private(self); GDBusProxy * proxy = g_dbus_proxy_new_for_bus_finish(res, &error); if (priv->service_proxy_cancel != NULL) { g_object_unref(priv->service_proxy_cancel); priv->service_proxy_cancel = NULL; } if (error != NULL) { g_critical("Could not grab DBus proxy for %s: %s", INDICATOR_APPLICATION_DBUS_ADDR, error->message); g_error_free(error); return; } /* Okay, we're good to grab the proxy at this point, we're sure that it's ours. */ priv->service_proxy = proxy; g_signal_connect(proxy, "g-signal", G_CALLBACK(receive_signal), self); /* We shouldn't be in a situation where we've already called this function. It doesn't *hurt* anything, but man we should look into it more. */ if (priv->get_apps_cancel != NULL) { g_warning("Already getting applications? Odd."); return; } priv->get_apps_cancel = g_cancellable_new(); /* Query it for existing applications */ g_debug("Request current apps"); g_dbus_proxy_call(priv->service_proxy, "GetApplications", NULL, G_DBUS_CALL_FLAGS_NONE, -1, priv->get_apps_cancel, get_applications, self); return; } /* Marks every current application as belonging to the old service so that we can delete it if it doesn't come back. Also, sets up a timeout on comming back. */ static void disconnected (GDBusConnection * con, const gchar * name, gpointer user_data) { IndicatorApplication * application = INDICATOR_APPLICATION(user_data); g_return_if_fail(application != NULL); IndicatorApplicationPrivate * priv = indicator_application_get_instance_private(application); g_list_foreach(priv->applications, disconnected_helper, application); /* I'll like this to be a little shorter, but it's a bit inpractical to make it so. This means that the user will probably notice a visible glitch. Though, if applications are disappearing there isn't much we can do. */ priv->disconnect_kill = g_timeout_add(250, disconnected_kill, application); return; } /* Marks an entry as being from the old service */ static void disconnected_helper (gpointer data, gpointer user_data) { ApplicationEntry * entry = (ApplicationEntry *)data; entry->old_service = TRUE; return; } /* Makes sure the old applications that don't come back get dropped. */ static gboolean disconnected_kill (gpointer user_data) { g_return_val_if_fail(IS_INDICATOR_APPLICATION(user_data), FALSE); IndicatorApplicationPrivate * priv = indicator_application_get_instance_private(INDICATOR_APPLICATION(user_data)); priv->disconnect_kill = 0; g_list_foreach(priv->applications, disconnected_kill_helper, user_data); return FALSE; } /* Looks for entries that are still associated with the old service and removes them. */ static void disconnected_kill_helper (gpointer data, gpointer user_data) { g_return_if_fail(IS_INDICATOR_APPLICATION(user_data)); IndicatorApplicationPrivate * priv = indicator_application_get_instance_private(INDICATOR_APPLICATION(user_data)); ApplicationEntry * entry = (ApplicationEntry *)data; if (entry->old_service) { application_removed(INDICATOR_APPLICATION(user_data), g_list_index(priv->applications, data)); } return; } /* Goes through the list of applications that we're maintaining and pulls out the IndicatorObjectEntry and returns that in a list for the caller. */ static GList * get_entries (IndicatorObject * io) { g_return_val_if_fail(IS_INDICATOR_APPLICATION(io), NULL); IndicatorApplicationPrivate * priv = indicator_application_get_instance_private(INDICATOR_APPLICATION(io)); GList * retval = NULL; GList * apppointer = NULL; for (apppointer = priv->applications; apppointer != NULL; apppointer = g_list_next(apppointer)) { IndicatorObjectEntry * entry = &(((ApplicationEntry *)apppointer->data)->entry); retval = g_list_prepend(retval, entry); } if (retval != NULL) { retval = g_list_reverse(retval); } return retval; } /* Finds the location of a specific entry */ static guint get_location (IndicatorObject * io, IndicatorObjectEntry * entry) { g_return_val_if_fail(IS_INDICATOR_APPLICATION(io), 0); IndicatorApplicationPrivate * priv = indicator_application_get_instance_private(INDICATOR_APPLICATION(io)); return g_list_index(priv->applications, entry); } /* Redirect the secondary activate to the Application Item */ static void entry_secondary_activate (IndicatorObject * io, IndicatorObjectEntry * entry, guint time, gpointer data) { g_return_if_fail(IS_INDICATOR_APPLICATION(io)); IndicatorApplicationPrivate * priv = indicator_application_get_instance_private(INDICATOR_APPLICATION(io)); g_return_if_fail(priv->service_proxy); GList *l = g_list_find(priv->applications, entry); if (l == NULL) return; ApplicationEntry *app = l->data; if (app && app->dbusaddress && app->dbusobject && priv->service_proxy) { g_dbus_proxy_call(priv->service_proxy, "ApplicationSecondaryActivateEvent", g_variant_new("(ssu)", app->dbusaddress, app->dbusobject, time), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } } /* Redirect the scroll event to the Application Item */ static void entry_scrolled (IndicatorObject * io, IndicatorObjectEntry * entry, gint delta, IndicatorScrollDirection direction) { g_return_if_fail(IS_INDICATOR_APPLICATION(io)); IndicatorApplicationPrivate * priv = indicator_application_get_instance_private(INDICATOR_APPLICATION(io)); g_return_if_fail(priv->service_proxy); GList *l = g_list_find(priv->applications, entry); if (l == NULL) return; ApplicationEntry *app = l->data; if (app && app->dbusaddress && app->dbusobject && priv->service_proxy) { g_dbus_proxy_call(priv->service_proxy, "ApplicationScrollEvent", g_variant_new("(ssiu)", app->dbusaddress, app->dbusobject, delta, direction), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } } /* Does a quick meausre of how big the string is in pixels with a Pango layout */ static gint measure_string (GtkStyle * style, PangoContext * context, const gchar * string) { PangoLayout * layout = pango_layout_new(context); pango_layout_set_text(layout, string, -1); pango_layout_set_font_description(layout, style->font_desc); gint width; pango_layout_get_pixel_size(layout, &width, NULL); g_object_unref(layout); return width; } /* Try to get a good guess at what a maximum width of the entire string would be. */ static void guess_label_size (ApplicationEntry * app) { /* This is during startup. */ if (app->entry.label == NULL) return; GtkStyle * style = gtk_widget_get_style(GTK_WIDGET(app->entry.label)); PangoContext * context = gtk_widget_get_pango_context(GTK_WIDGET(app->entry.label)); gint length = measure_string(style, context, gtk_label_get_text(app->entry.label)); if (app->guide != NULL) { gint guidelen = measure_string(style, context, app->guide); if (guidelen > length) { length = guidelen; } } gtk_widget_set_size_request(GTK_WIDGET(app->entry.label), length, -1); return; } /* Here we respond to new applications by building up the ApplicationEntry and signaling the indicator host that we've got a new indicator. */ static void application_added (IndicatorApplication * application, const gchar * iconname, gint position, const gchar * dbusaddress, const gchar * dbusobject, const gchar * icon_theme_path, const gchar * label, const gchar * guide, const gchar * accessible_desc, const gchar * hint) { g_return_if_fail(IS_INDICATOR_APPLICATION(application)); g_debug("Building new application entry: %s with icon: %s at position %i", dbusaddress, iconname, position); IndicatorApplicationPrivate * priv = indicator_application_get_instance_private(application); ApplicationEntry * app = g_new0(ApplicationEntry, 1); app->entry.parent_object = INDICATOR_OBJECT(application); app->old_service = FALSE; app->icon_theme_path = NULL; if (icon_theme_path != NULL && icon_theme_path[0] != '\0') { app->icon_theme_path = g_strdup(icon_theme_path); theme_dir_ref(application, icon_theme_path); } app->dbusaddress = g_strdup(dbusaddress); app->dbusobject = g_strdup(dbusobject); app->guide = NULL; /* We make a long name using the suffix, and if that icon is available we want to use it. Otherwise we'll just use the name we were given. */ app->longname = NULL; if (!g_str_has_suffix(iconname, PANEL_ICON_SUFFIX)) { app->longname = g_strdup_printf("%s-%s", iconname, PANEL_ICON_SUFFIX); } else { app->longname = g_strdup(iconname); } app->entry.image = indicator_image_helper(app->longname); if (label == NULL || label[0] == '\0') { app->entry.label = NULL; } else { app->entry.label = GTK_LABEL(gtk_label_new(label)); g_object_ref(G_OBJECT(app->entry.label)); gtk_widget_show(GTK_WIDGET(app->entry.label)); if (app->guide != NULL) { g_free(app->guide); app->guide = NULL; } if (guide != NULL) { app->guide = g_strdup(guide); } guess_label_size(app); } if (accessible_desc == NULL || accessible_desc[0] == '\0') { app->entry.accessible_desc = NULL; } else { app->entry.accessible_desc = g_strdup(accessible_desc); } if (hint == NULL || hint[0] == '\0') { app->entry.name_hint = NULL; } else { app->entry.name_hint = g_strdup(hint); } app->entry.menu = GTK_MENU(dbusmenu_gtkmenu_new((gchar *)dbusaddress, (gchar *)dbusobject)); /* Keep copies of these for ourself, just in case. */ g_object_ref(app->entry.image); g_object_ref(app->entry.menu); gtk_widget_show(GTK_WIDGET(app->entry.image)); priv->applications = g_list_insert(priv->applications, app, position); g_signal_emit(G_OBJECT(application), INDICATOR_OBJECT_SIGNAL_ENTRY_ADDED_ID, 0, &(app->entry), TRUE); return; } /* This removes the application from the list and free's all of the memory associated with it. */ static void application_removed (IndicatorApplication * application, gint position) { g_return_if_fail(IS_INDICATOR_APPLICATION(application)); IndicatorApplicationPrivate * priv = indicator_application_get_instance_private(application); ApplicationEntry * app = (ApplicationEntry *)g_list_nth_data(priv->applications, position); if (app == NULL) { g_warning("Unable to find application at position: %d", position); return; } priv->applications = g_list_remove(priv->applications, app); g_signal_emit(G_OBJECT(application), INDICATOR_OBJECT_SIGNAL_ENTRY_REMOVED_ID, 0, &(app->entry), TRUE); if (app->icon_theme_path != NULL) { theme_dir_unref(application, app->icon_theme_path); g_free(app->icon_theme_path); } if (app->dbusaddress != NULL) { g_free(app->dbusaddress); } if (app->dbusobject != NULL) { g_free(app->dbusobject); } if (app->guide != NULL) { g_free(app->guide); } if (app->longname != NULL) { g_free(app->longname); } if (app->entry.image != NULL) { g_object_unref(G_OBJECT(app->entry.image)); } if (app->entry.label != NULL) { g_object_unref(G_OBJECT(app->entry.label)); } if (app->entry.menu != NULL) { g_object_unref(G_OBJECT(app->entry.menu)); } if (app->entry.accessible_desc != NULL) { g_free((gchar *)app->entry.accessible_desc); } if (app->entry.name_hint != NULL) { g_free((gchar *)app->entry.name_hint); } g_free(app); return; } /* The callback for the signal that the label for an application has changed. */ static void application_label_changed (IndicatorApplication * application, gint position, const gchar * label, const gchar * guide) { IndicatorApplicationPrivate * priv = indicator_application_get_instance_private(application); ApplicationEntry * app = (ApplicationEntry *)g_list_nth_data(priv->applications, position); gboolean signal_reload = FALSE; if (app == NULL) { g_warning("Unable to find application at position: %d", position); return; } if (label == NULL || label[0] == '\0') { /* No label, let's see if we need to delete the old one */ if (app->entry.label != NULL) { g_object_unref(G_OBJECT(app->entry.label)); app->entry.label = NULL; signal_reload = TRUE; } } else { /* We've got a label, is this just an update or is it a new thing. */ if (app->entry.label != NULL) { gtk_label_set_text(app->entry.label, label); } else { app->entry.label = GTK_LABEL(gtk_label_new(label)); g_object_ref(G_OBJECT(app->entry.label)); gtk_widget_show(GTK_WIDGET(app->entry.label)); signal_reload = TRUE; } } /* Copy the guide if we have one */ if (app->guide != NULL) { g_free(app->guide); app->guide = NULL; } if (guide != NULL && guide[0] != '\0') { app->guide = g_strdup(guide); } /* Protected against not having a label */ guess_label_size(app); if (signal_reload) { /* Telling the listener that this has been removed, and then readded to make it reparse the entry. */ if (app->entry.label != NULL) { gtk_widget_hide(GTK_WIDGET(app->entry.label)); } if (app->entry.image != NULL) { gtk_widget_hide(GTK_WIDGET(app->entry.image)); } if (app->entry.menu != NULL) { gtk_menu_detach(app->entry.menu); } g_signal_emit(G_OBJECT(application), INDICATOR_OBJECT_SIGNAL_ENTRY_REMOVED_ID, 0, &(app->entry), TRUE); if (app->entry.label != NULL) { gtk_widget_show(GTK_WIDGET(app->entry.label)); } if (app->entry.image != NULL) { indicator_image_helper_update(app->entry.image, app->longname); gtk_widget_show(GTK_WIDGET(app->entry.image)); } g_signal_emit(G_OBJECT(application), INDICATOR_OBJECT_SIGNAL_ENTRY_ADDED_ID, 0, &(app->entry), TRUE); } return; } /* The callback for the signal that the icon for an application has changed. */ static void application_icon_changed (IndicatorApplication * application, gint position, const gchar * iconname, const gchar * icondesc) { IndicatorApplicationPrivate * priv = indicator_application_get_instance_private(application); ApplicationEntry * app = (ApplicationEntry *)g_list_nth_data(priv->applications, position); if (app == NULL) { g_warning("Unable to find application at position: %d", position); return; } if (iconname == NULL) { g_warning("We can't have a NULL icon name on %d", position); return; } /* We make a long name using the suffix, and if that icon is available we want to use it. Otherwise we'll just use the name we were given. */ if (app->longname != NULL) { g_free(app->longname); app->longname = NULL; } if (!g_str_has_suffix(iconname, PANEL_ICON_SUFFIX)) { app->longname = g_strdup_printf("%s-%s", iconname, PANEL_ICON_SUFFIX); } else { app->longname = g_strdup(iconname); } indicator_image_helper_update(app->entry.image, app->longname); if (g_strcmp0(app->entry.accessible_desc, icondesc) != 0) { if (app->entry.accessible_desc != NULL) { g_free((gchar *)app->entry.accessible_desc); app->entry.accessible_desc = NULL; } if (icondesc != NULL && icondesc[0] != '\0') { app->entry.accessible_desc = g_strdup(icondesc); } g_signal_emit(G_OBJECT(application), INDICATOR_OBJECT_SIGNAL_ACCESSIBLE_DESC_UPDATE_ID, 0, &(app->entry), TRUE); } return; } /* The callback for the signal that the icon theme path for an application has changed. */ static void application_icon_theme_path_changed (IndicatorApplication * application, gint position, const gchar * icon_theme_path) { IndicatorApplicationPrivate * priv = indicator_application_get_instance_private(application); ApplicationEntry * app = (ApplicationEntry *)g_list_nth_data(priv->applications, position); if (app == NULL) { g_warning("Unable to find application at position: %d", position); return; } if (g_strcmp0(icon_theme_path, app->icon_theme_path) != 0) { if(app->icon_theme_path != NULL) { theme_dir_unref(application, app->icon_theme_path); g_free(app->icon_theme_path); app->icon_theme_path = NULL; } if (icon_theme_path != NULL && icon_theme_path[0] != '\0') { app->icon_theme_path = g_strdup(icon_theme_path); theme_dir_ref(application, app->icon_theme_path); } indicator_image_helper_update(app->entry.image, app->longname); } return; } /* Receives all signals from the service, routed to the appropriate functions */ static void receive_signal (GDBusProxy * proxy, gchar * sender_name, gchar * signal_name, GVariant * parameters, gpointer user_data) { IndicatorApplication * self = INDICATOR_APPLICATION(user_data); IndicatorApplicationPrivate * priv = indicator_application_get_instance_private(self); /* If we're in the middle of a GetApplications call and we get any of these our state is probably going to just be confused. Let's cancel the call we had and try again to try and get a clear answer */ if (priv->get_apps_cancel != NULL) { g_cancellable_cancel(priv->get_apps_cancel); g_object_unref(priv->get_apps_cancel); priv->get_apps_cancel = g_cancellable_new(); g_dbus_proxy_call(priv->service_proxy, "GetApplications", NULL, G_DBUS_CALL_FLAGS_NONE, -1, priv->get_apps_cancel, get_applications, self); return; } if (g_strcmp0(signal_name, "ApplicationAdded") == 0) { gchar * iconname = NULL; gint position; gchar * dbusaddress = NULL; gchar * dbusobject = NULL; gchar * icon_theme_path = NULL; gchar * label = NULL; gchar * guide = NULL; gchar * accessible_desc = NULL; gchar * hint = NULL; gchar * title = NULL; g_variant_get (parameters, "(sisossssss)", &iconname, &position, &dbusaddress, &dbusobject, &icon_theme_path, &label, &guide, &accessible_desc, &hint, &title); application_added(self, iconname, position, dbusaddress, dbusobject, icon_theme_path, label, guide, accessible_desc, hint); g_free(iconname); g_free(dbusaddress); g_free(dbusobject); g_free(icon_theme_path); g_free(label); g_free(guide); g_free(accessible_desc); g_free(hint); g_free(title); } else if (g_strcmp0(signal_name, "ApplicationRemoved") == 0) { gint position; g_variant_get (parameters, "(i)", &position); application_removed(self, position); } else if (g_strcmp0(signal_name, "ApplicationIconChanged") == 0) { gint position; gchar * iconname = NULL; gchar * icondesc = NULL; g_variant_get (parameters, "(iss)", &position, &iconname, &icondesc); application_icon_changed(self, position, iconname, icondesc); g_free(iconname); g_free(icondesc); } else if (g_strcmp0(signal_name, "ApplicationIconThemePathChanged") == 0) { gint position; gchar * icon_theme_path = NULL; g_variant_get (parameters, "(is)", &position, &icon_theme_path); application_icon_theme_path_changed(self, position, icon_theme_path); g_free(icon_theme_path); } else if (g_strcmp0(signal_name, "ApplicationLabelChanged") == 0) { gint position; gchar * label = NULL; gchar * guide = NULL; g_variant_get (parameters, "(iss)", &position, &label, &guide); application_label_changed(self, position, label, guide); g_free(label); g_free(guide); } return; } /* This responds to the list of applications that the service has and calls application_added on each one of them. */ static void get_applications (GObject * obj, GAsyncResult * res, gpointer user_data) { IndicatorApplication * self = INDICATOR_APPLICATION(user_data); IndicatorApplicationPrivate * priv = indicator_application_get_instance_private(self); GError * error = NULL; GVariant * result; GVariant * child; GVariantIter * iter; result = g_dbus_proxy_call_finish(priv->service_proxy, res, &error); /* No one can cancel us anymore, we've completed! */ if (priv->get_apps_cancel != NULL) { if (error == NULL || error->domain != G_IO_ERROR || error->code != G_IO_ERROR_CANCELLED) { g_object_unref(priv->get_apps_cancel); priv->get_apps_cancel = NULL; } } /* If we got an error, print it and exit out */ if (error != NULL) { g_warning("Unable to get application list: %s", error->message); g_error_free(error); return; } /* Remove all applications that we previously had as we're going to repopulate the list. */ while (priv->applications != NULL) { application_removed(self, 0); } /* Get our new applications that we got in the request */ g_variant_get(result, "(a(sisossssss))", &iter); while ((child = g_variant_iter_next_value (iter))) { get_applications_helper(self, child); g_variant_unref(child); } g_variant_iter_free (iter); g_variant_unref(result); return; } /* A little helper that takes apart the DBus structure and calls application_added on every entry in the list. */ static void get_applications_helper (IndicatorApplication * self, GVariant * variant) { gchar * icon_name = NULL; gint position; gchar * dbus_address = NULL; gchar * dbus_object = NULL; gchar * icon_theme_path = NULL; gchar * label = NULL; gchar * guide = NULL; gchar * accessible_desc = NULL; gchar * hint = NULL; gchar * title = NULL; g_variant_get(variant, "(sisossssss)", &icon_name, &position, &dbus_address, &dbus_object, &icon_theme_path, &label, &guide, &accessible_desc, &hint, &title); application_added(self, icon_name, position, dbus_address, dbus_object, icon_theme_path, label, guide, accessible_desc, hint); g_free(icon_name); g_free(dbus_address); g_free(dbus_object); g_free(icon_theme_path); g_free(label); g_free(guide); g_free(accessible_desc); g_free(hint); g_free(title); return; } /* Unrefs a theme directory. This may involve removing it from the search path. */ static void theme_dir_unref(IndicatorApplication * ia, const gchar * dir) { IndicatorApplicationPrivate * priv = indicator_application_get_instance_private(ia); if (!g_hash_table_contains (priv->theme_dirs, dir)) { g_warning("Unref'd a directory '%s' that wasn't in the theme dir hash table.", dir); } else { int count = GPOINTER_TO_INT(g_hash_table_lookup(priv->theme_dirs, dir)); if (count > 1) { count--; g_hash_table_insert(priv->theme_dirs, g_strdup(dir), GINT_TO_POINTER(count)); } else { icon_theme_remove_dir_from_search_path (dir); g_hash_table_remove (priv->theme_dirs, dir); } } } static void icon_theme_remove_dir_from_search_path (const char * dir) { GtkIconTheme * icon_theme = gtk_icon_theme_get_default(); gchar ** paths; gint path_count; gtk_icon_theme_get_search_path(icon_theme, &paths, &path_count); gint i; gboolean found = FALSE; for (i = 0; i < path_count; i++) { if (found) { /* If we've already found the right entry */ paths[i - 1] = paths[i]; } else { /* We're still looking, is this the one? */ if (!g_strcmp0(paths[i], dir)) { found = TRUE; /* We're freeing this here as it won't be captured by the g_strfreev() below as it's out of the array. */ g_free(paths[i]); } } } /* If we found one we need to reset the path to accomidate the changes */ if (found) { paths[path_count - 1] = NULL; /* Clear the last one */ gtk_icon_theme_set_search_path(icon_theme, (const gchar **)paths, path_count - 1); } g_strfreev(paths); return; } /* Refs a theme directory, and it may add it to the search path */ static void theme_dir_ref(IndicatorApplication * ia, const gchar * dir) { IndicatorApplicationPrivate * priv = indicator_application_get_instance_private(ia); int count = 0; if ((count = GPOINTER_TO_INT(g_hash_table_lookup(priv->theme_dirs, dir))) != 0) { /* It exists so what we need to do is increase the ref count of this dir. */ count++; } else { /* It doesn't exist, so we need to add it to the table and to the search path. */ gtk_icon_theme_append_search_path(gtk_icon_theme_get_default(), dir); g_debug("\tAppending search path: %s", dir); count = 1; } g_hash_table_insert(priv->theme_dirs, g_strdup(dir), GINT_TO_POINTER(count)); return; } ayatana-indicator-application-22.2.0/.travis.yml0000644000000000000000000000170614203537407016476 0ustar # vim: set ts=2 sts=2 sw=2 expandtab : dist: focal language: shell os: linux arch: - amd64 # - ppc64le services: - docker addons: apt: packages: - python3-pip - python3-setuptools before_install: # let's use the MATE project's docker build script... - curl -Ls -o docker-build https://github.com/AyatanaIndicators/ayatana-dev-scripts/raw/main/travis/docker-build - chmod +x docker-build install: - pip3 install wheel - pip3 install PyGithub - ./docker-build --name ${DISTRO} --config .build.yml --install script: - ./docker-build --name ${DISTRO} --verbose --config .build.yml --build scripts env: # temp disable of archlinux builds, see https://gitlab.archlinux.org/archlinux/archlinux-docker/-/issues/56 # - DISTRO="archlinux:latest" - DISTRO="debian:testing" - DISTRO="debian:stable" # - DISTRO="ubuntu:rolling" - DISTRO="ubuntu:focal" jobs: exclude: - env: DISTRO="archlinux:latest" arch: ppc64le