libayatana-appindicator-0.5.93/AUTHORS0000644000000000000000000000435714512163465014346 0ustar Alberts Muktupāvels Allan LeSage Aurélien Gâteau Aurelien Gateau C10uD Charles Kerr Chris Coulson Chris J Arges Cody Russell Cody Russell Colin Watson Conor Curran Didier Roche Dmitry Shachnev Emmanuele Bassi Evgeni Golov György Balló Iain Lane Jan Arne Petersen Jason Smith Jason Smith Javier Jardón Jeremy Bicha John Vert Jo Shields Ken Vandine Ken VanDine Krzysztof Klimonda Krzysztof Klimonda Lars Uebernickel Łukasz 'sil2100' Zemczak Luke Yelavich Marco Trevisan (Treviño) Marco Trevisan (Treviño) Martin Pitt Mathieu Trudel-Lapierre Matthias Klose Michael Terry Michael Terry Michael Vogt Michal Hruby Mike Gabriel Neil Jagdish Patel Neil J. Patel Robert Ancell Robert Bruce Park Robert Collins Robert Tari Sebastien Bacher Sebastien Bacher Sense Egbert Hofstede Sense Hofstede Sense Hofstede Ted Gould Ted Gould unknown unknown Артём Попов libayatana-appindicator-0.5.93/bindings/CMakeLists.txt0000644000000000000000000000021314512163465017616 0ustar if (ENABLE_BINDINGS_VALA AND FLAVOUR_GTK3) add_subdirectory(vala) endif() if (ENABLE_BINDINGS_MONO) add_subdirectory(mono) endif() libayatana-appindicator-0.5.93/bindings/mono/app-indicator.sources.xml.in0000644000000000000000000000101214512163465023367 0ustar @REL_SRC@src/app-indicator.c @REL_BIN@src/app-indicator-enum-types.c @REL_BIN@src/app-indicator-enum-types.h @REL_SRC@src/app-indicator.h libayatana-appindicator-0.5.93/bindings/mono/ApplicationIndicatorCustom.cs.in0000644000000000000000000000213514512163465024262 0ustar using System; using System.Runtime.InteropServices; namespace AyatanaAppIndicator { public partial class ApplicationIndicator : GLib.Object { [DllImport ("@ayatana_appindicator_gtkver@.dll")] static extern int app_indicator_get_status (IntPtr i); [DllImport ("@ayatana_appindicator_gtkver@.dll")] static extern int app_indicator_get_category (IntPtr i); [DllImport ("@ayatana_appindicator_gtkver@.dll")] static extern void app_indicator_set_status (IntPtr i, int s); [GLib.Property ("status")] public AppIndicatorStatus AppIndicatorStatus { get { return (AppIndicatorStatus) app_indicator_get_status (Handle); } set { app_indicator_set_status (Handle, (int) value); } } [GLib.Property ("category")] public AppIndicatorCategory AppIndicatorCategory { get { return (AppIndicatorCategory) app_indicator_get_category (Handle); } } } } libayatana-appindicator-0.5.93/bindings/mono/AssemblyInfo.cs0000644000000000000000000000227214512163465020757 0ustar /* * Copyright 2010 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . * * Authors: * Cody Russell */ using System.Reflection; [assembly: AssemblyTitle ("Application Indicators")] [assembly: AssemblyDescription ("Ayatana Application Indicators")] [assembly: AssemblyConfiguration ("")] [assembly: AssemblyCompany ("Ayatana Project")] [assembly: AssemblyProduct ("Ayatana AppIndicators")] [assembly: AssemblyCopyright ("© 2010 Canonical, Ltd.; © 2015 Mike Gabriel; © 2021 Robert Tari")] [assembly: AssemblyTrademark ("")] [assembly: AssemblyCulture ("")] [assembly: AssemblyVersion ("0.5.90.0")] libayatana-appindicator-0.5.93/bindings/mono/ayatana-appindicator3-sharp-0.1.pc.in0000644000000000000000000000076314512163465024554 0ustar prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=${prefix} libdir=@CMAKE_INSTALL_FULL_LIBDIR@ assemblies_dir=@CMAKE_INSTALL_FULL_LIBDIR@/cli/ayatana-appindicator3-sharp-0.1 Name: ayatana-appindicator3-sharp Description: application indicators for .NET (GTK-3+ variant) Version: @PROJECT_VERSION@ Libraries: ${assemblies_dir}/ayatana-appindicator3-sharp.dll ${assemblies_dir}/ayatana-appindicator3-sharp.dll.config Requires: gtk-sharp-3.0 Cflags: Libs: -r:${assemblies_dir}/ayatana-appindicator3-sharp.dll libayatana-appindicator-0.5.93/bindings/mono/ayatana-appindicator3-sharp.dll.config0000644000000000000000000000056614512163465025271 0ustar libayatana-appindicator-0.5.93/bindings/mono/ayatana-appindicator3-sharp.snk0000644000000000000000000000112414512163465024034 0ustar $RSA2 U 5~rۿBNa @X< tmmYcTX}K0tM,ފ~s/>H٤6̭bº8|(Hܚ4haHPc{X}1""C#y*Ì=d"~'!d{;<{0b9*gmNGhٜQTr] y-Tt$34ҏQ{IǥWu=4,.o En/㝶R~}{yo뿈8G"zu]/23=`}Py?ςp?Xwh4LNm¬߿f Bu/4=f>4ҨSfF0pX묤(A9Ib*b1LՓjZ'}EbI*QExsfuقգ'Ey&~Y E8z ]VO)P!;:uV5? .;k+*9rn\oٍu 5zYmB(libayatana-appindicator-0.5.93/bindings/mono/ayatana-appindicator-sharp-0.1.pc.in0000644000000000000000000000075614512163465024473 0ustar prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=${prefix} libdir=@CMAKE_INSTALL_FULL_LIBDIR@ assemblies_dir=@CMAKE_INSTALL_FULL_LIBDIR@/cli/ayatana-appindicator-sharp-0.1 Name: ayatana-appindicator-sharp Description: application indicators for .NET (GTK-2+ variant) Version: @PROJECT_VERSION@ Libraries: ${assemblies_dir}/ayatana-appindicator-sharp.dll ${assemblies_dir}/ayatana-appindicator-sharp.dll.config Requires: gtk-sharp-2.0 Cflags: Libs: -r:${assemblies_dir}/ayatana-appindicator-sharp.dll libayatana-appindicator-0.5.93/bindings/mono/ayatana-appindicator-sharp.dll.config0000644000000000000000000000056414512163465025204 0ustar libayatana-appindicator-0.5.93/bindings/mono/ayatana-appindicator-sharp.snk0000644000000000000000000000112414512163465023751 0ustar $RSA2 U 5~rۿBNa @X< tmmYcTX}K0tM,ފ~s/>H٤6̭bº8|(Hܚ4haHPc{X}1""C#y*Ì=d"~'!d{;<{0b9*gmNGhٜQTr] y-Tt$34ҏQ{IǥWu=4,.o En/㝶R~}{yo뿈8G"zu]/23=`}Py?ςp?Xwh4LNm¬߿f Bu/4=f>4ҨSfF0pX묤(A9Ib*b1LՓjZ'}EbI*QExsfuقգ'Ey&~Y E8z ]VO)P!;:uV5? .;k+*9rn\oٍu 5zYmB(libayatana-appindicator-0.5.93/bindings/mono/CMakeLists.txt0000644000000000000000000003533414512163465020602 0ustar if (FLAVOUR_GTK3) set (ayatana_appindicator_gtkver "ayatana-appindicator3") elseif (FLAVOUR_GTK2) set (ayatana_appindicator_gtkver "ayatana-appindicator") endif() # ayatana-appindicator{,3}-sharp-0.1.pc configure_file("${CMAKE_CURRENT_SOURCE_DIR}/${ayatana_appindicator_gtkver}-sharp-0.1.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/${ayatana_appindicator_gtkver}-sharp-0.1.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${ayatana_appindicator_gtkver}-sharp-0.1.pc" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig") # ayatana-appindicator{,3}-sharp.dll.config file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/${ayatana_appindicator_gtkver}-sharp.dll.config" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/${ayatana_appindicator_gtkver}-sharp.dll.config" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/cli/${ayatana_appindicator_gtkver}-sharp-0.1") # app-indicator-gtk{2,3}.sources.xml file(RELATIVE_PATH REL_BIN ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR}) file(RELATIVE_PATH REL_SRC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/app-indicator.sources.xml.in" "${CMAKE_CURRENT_BINARY_DIR}/app-indicator.sources.xml" @ONLY) # libayatana-appindicator{,3}-api.raw if (FLAVOUR_GTK3) find_program(GAPI_PARSER gapi3-parser) elseif (FLAVOUR_GTK2) find_program(GAPI_PARSER gapi2-parser) endif() add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/lib${ayatana_appindicator_gtkver}-api.raw" DEPENDS "src" "${CMAKE_CURRENT_BINARY_DIR}/app-indicator.sources.xml" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${GAPI_PARSER} "${CMAKE_CURRENT_BINARY_DIR}/app-indicator.sources.xml" ) # libayatana-appindicator{,3}-api.middle if (FLAVOUR_GTK3) find_program(GAPI_FIXUP gapi3-fixup) elseif (FLAVOUR_GTK2) find_program(GAPI_FIXUP gapi2-fixup) endif() add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/lib${ayatana_appindicator_gtkver}-api.middle" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/lib${ayatana_appindicator_gtkver}-api.raw" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_BINARY_DIR}/lib${ayatana_appindicator_gtkver}-api.raw" "${CMAKE_CURRENT_BINARY_DIR}/lib${ayatana_appindicator_gtkver}-api.middle" COMMAND ${GAPI_FIXUP} --api=lib${ayatana_appindicator_gtkver}-api.middle --metadata="${CMAKE_CURRENT_SOURCE_DIR}/lib${ayatana_appindicator_gtkver}-api.metadata" ) # libayatana-appindicator{,3}-api.xml add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/lib${ayatana_appindicator_gtkver}-api.xml" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/lib${ayatana_appindicator_gtkver}-api.middle" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} VERBATIM COMMAND sed -e "s|PROP_ID_S|id|" -e "s|PROP_STATUS_S|Status|" -e "s|PROP_STATUS_S|status|" -e "s|PROP_CATEGORY_S|Category|" -e "s|PROP_CATEGORY_S|category|" -e "s|PROP_ICON_NAME_S|icon-name|" -e "s|PROP_ICON_DESC_S|IconDesc|" -e "s|PROP_ICON_DESC_S|icon-desc|" -e "s|PROP_ATTENTION_ICON_NAME_S|AttentionIconName|" -e "s|PROP_ATTENTION_ICON_NAME_S|attention-icon-name|" -e "s|PROP_ATTENTION_ICON_DESC_S|AttentionIconDesc|" -e "s|PROP_ATTENTION_ICON_DESC_S|attention-icon-desc|" -e "s|PROP_ICON_THEME_PATH_S|icon-theme-path|" -e "s|PROP_MENU_S|menu|" -e "s|PROP_CONNECTED_S|connected|" -e "s|PROP_LABEL_S|label|" -e "s|PROP_LABEL_GUIDE_S|label-guide|" -e "s|PROP_ORDERING_INDEX_S|ordering-index|" -e "s|PROP_DBUS_MENU_SERVER_S|DbusMenuServer|" -e "s|PROP_DBUS_MENU_SERVER_S|dbus-menu-server|" -e "s|PROP_TITLE_S|Title|" -e "s|PROP_TITLE_S|title|" "${CMAKE_CURRENT_BINARY_DIR}/lib${ayatana_appindicator_gtkver}-api.middle" > "${CMAKE_CURRENT_BINARY_DIR}/lib${ayatana_appindicator_gtkver}-api.xml" ) # AppIndicatorCategory.cs # NewAttentionIconHandler.cs # NewStatusHandler.cs # AppIndicatorStatus.cs # NewIconHandler.cs # ObjectManager.cs # ApplicationIndicator.cs # NewIconThemePathHandler.cs # ScrollEventHandler.cs # ConnectionChangedHandler.cs # NewLabelHandler.cs if (FLAVOUR_GTK3) pkg_check_modules(GTK_SHARP_3_0 REQUIRED gtk-sharp-3.0>=2.99) string(REPLACE ":" ";-I:" GTK_SHARP_3_0_INCLUDE_DIRS ${GTK_SHARP_3_0_INCLUDE_DIRS}) find_program(GAPI3_CODEGEN gapi3-codegen) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/GtkSharp/ObjectManager.cs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/AppIndicatorCategory.cs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewAttentionIconHandler.cs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewStatusHandler.cs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/AppIndicatorStatus.cs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewIconHandler.cs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ApplicationIndicator.cs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewIconThemePathHandler.cs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ScrollEventHandler.cs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ConnectionChangedHandler.cs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewLabelHandler.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/lib${ayatana_appindicator_gtkver}-api.xml" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${GAPI3_CODEGEN} --generate lib${ayatana_appindicator_gtkver}-api.xml --outdir=${CMAKE_CURRENT_BINARY_DIR} --assembly-name=${ayatana_appindicator_gtkver}-sharp ${GTK_SHARP_3_0_INCLUDE_DIRS} ) elseif (FLAVOUR_GTK2) pkg_check_modules(GTK_SHARP_2_0 REQUIRED gtk-sharp-2.0>=2.12) string(REPLACE ":" ";-I:" GTK_SHARP_2_0_INCLUDE_DIRS ${GTK_SHARP_2_0_INCLUDE_DIRS}) find_program(GAPI2_CODEGEN gapi2-codegen) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ObjectManager.cs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/AppIndicatorCategory.cs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewAttentionIconHandler.cs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewStatusHandler.cs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/AppIndicatorStatus.cs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewIconHandler.cs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ApplicationIndicator.cs.raw" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewIconThemePathHandler.cs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ScrollEventHandler.cs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ConnectionChangedHandler.cs" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewLabelHandler.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/lib${ayatana_appindicator_gtkver}-api.xml" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${GAPI2_CODEGEN} --generate lib${ayatana_appindicator_gtkver}-api.xml --outdir=${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator --assembly-name=${ayatana_appindicator_gtkver}-sharp ${GTK_SHARP_2_0_INCLUDE_DIRS} && mv "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ApplicationIndicator.cs" "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ApplicationIndicator.cs.raw" ) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ApplicationIndicator.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ApplicationIndicator.cs.raw" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} VERBATIM COMMAND sed -e "s|public class ApplicationIndicator|public partial class ApplicationIndicator|" "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ApplicationIndicator.cs.raw" > "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ApplicationIndicator.cs" ) endif() # ayatana-appindicator{,3}-sharp.dll pkg_check_modules(MONO REQUIRED mono>=5.18) find_program(MCS mcs) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/ApplicationIndicatorCustom.cs.in" "${CMAKE_CURRENT_BINARY_DIR}/ApplicationIndicatorCustom.cs" @ONLY) if (FLAVOUR_GTK3) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${ayatana_appindicator_gtkver}-sharp.dll" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/GtkSharp/ObjectManager.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/AppIndicatorCategory.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewAttentionIconHandler.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewStatusHandler.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/AppIndicatorStatus.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewIconHandler.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ApplicationIndicator.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewIconThemePathHandler.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ScrollEventHandler.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ConnectionChangedHandler.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewLabelHandler.cs" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${MCS} -keyfile:"${CMAKE_CURRENT_SOURCE_DIR}/${ayatana_appindicator_gtkver}-sharp.snk" -nowarn:0169,0612,0618 -unsafe -out:"${CMAKE_CURRENT_BINARY_DIR}/${ayatana_appindicator_gtkver}-sharp.dll" -target:library ${GTK_SHARP_3_0_LDFLAGS} "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/*.cs" "${CMAKE_CURRENT_BINARY_DIR}/GtkSharp/ObjectManager.cs" "${CMAKE_CURRENT_SOURCE_DIR}/AssemblyInfo.cs" "${CMAKE_CURRENT_BINARY_DIR}/ApplicationIndicatorCustom.cs" ) elseif (FLAVOUR_GTK2) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${ayatana_appindicator_gtkver}-sharp.dll" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ObjectManager.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/AppIndicatorCategory.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewAttentionIconHandler.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewStatusHandler.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/AppIndicatorStatus.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewIconHandler.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ApplicationIndicator.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewIconThemePathHandler.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ScrollEventHandler.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/ConnectionChangedHandler.cs" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/NewLabelHandler.cs" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${MCS} -keyfile:"${CMAKE_CURRENT_SOURCE_DIR}/${ayatana_appindicator_gtkver}-sharp.snk" -nowarn:0169,0612,0618 -unsafe -out:"${CMAKE_CURRENT_BINARY_DIR}/${ayatana_appindicator_gtkver}-sharp.dll" -target:library ${GTK_SHARP_2_0_LDFLAGS} "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator/*.cs" "${CMAKE_CURRENT_SOURCE_DIR}/AssemblyInfo.cs" "${CMAKE_CURRENT_BINARY_DIR}/ApplicationIndicatorCustom.cs" ) endif() find_program(GACUTIL gacutil) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${ayatana_appindicator_gtkver}-sharp.dll" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/cli/${ayatana_appindicator_gtkver}-sharp-0.1") install(CODE "execute_process(WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${GACUTIL} -i ${CMAKE_CURRENT_BINARY_DIR}/${ayatana_appindicator_gtkver}-sharp.dll -package ${ayatana_appindicator_gtkver}-sharp -root ${CMAKE_INSTALL_FULL_LIBDIR})") # policy.0.0.ayatana-appindicator{,3}-sharp.config configure_file("${CMAKE_CURRENT_SOURCE_DIR}/policy.0.0.${ayatana_appindicator_gtkver}-sharp.config.in" "${CMAKE_CURRENT_BINARY_DIR}/policy.0.0.${ayatana_appindicator_gtkver}-sharp.config" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/policy.0.0.${ayatana_appindicator_gtkver}-sharp.config" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/cli/${ayatana_appindicator_gtkver}-sharp-0.1") # policy.0.0.ayatana-appindicator{,3}-sharp.dll find_program(AL al) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/policy.0.0.${ayatana_appindicator_gtkver}-sharp.dll" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${ayatana_appindicator_gtkver}-sharp.dll" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${AL} -link:"${CMAKE_CURRENT_BINARY_DIR}/policy.0.0.${ayatana_appindicator_gtkver}-sharp.config" -out:"${CMAKE_CURRENT_BINARY_DIR}/policy.0.0.${ayatana_appindicator_gtkver}-sharp.dll" -keyfile:"${CMAKE_CURRENT_SOURCE_DIR}/${ayatana_appindicator_gtkver}-sharp.snk" ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/policy.0.0.${ayatana_appindicator_gtkver}-sharp.dll" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/cli/${ayatana_appindicator_gtkver}-sharp-0.1") install(CODE "execute_process(WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${GACUTIL} -i ${CMAKE_CURRENT_BINARY_DIR}/policy.0.0.${ayatana_appindicator_gtkver}-sharp.dll -package ${ayatana_appindicator_gtkver}-sharp -root ${CMAKE_INSTALL_FULL_LIBDIR})") # policy.0.1.ayatana-appindicator{,3}-sharp.config configure_file("${CMAKE_CURRENT_SOURCE_DIR}/policy.0.1.${ayatana_appindicator_gtkver}-sharp.config.in" "${CMAKE_CURRENT_BINARY_DIR}/policy.0.1.${ayatana_appindicator_gtkver}-sharp.config" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/policy.0.1.${ayatana_appindicator_gtkver}-sharp.config" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/cli/${ayatana_appindicator_gtkver}-sharp-0.1") # policy.0.1.ayatana-appindicator{,3}-sharp.dll find_program(AL al) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/policy.0.1.${ayatana_appindicator_gtkver}-sharp.dll" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/policy.0.0.${ayatana_appindicator_gtkver}-sharp.dll" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${AL} -link:"${CMAKE_CURRENT_BINARY_DIR}/policy.0.1.${ayatana_appindicator_gtkver}-sharp.config" -out:"${CMAKE_CURRENT_BINARY_DIR}/policy.0.1.${ayatana_appindicator_gtkver}-sharp.dll" -keyfile:"${CMAKE_CURRENT_SOURCE_DIR}/${ayatana_appindicator_gtkver}-sharp.snk" ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/policy.0.1.${ayatana_appindicator_gtkver}-sharp.dll" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/cli/${ayatana_appindicator_gtkver}-sharp-0.1") add_custom_target("bindings-mono" ALL DEPENDS "policy.0.1.${ayatana_appindicator_gtkver}-sharp.dll") if (ENABLE_TESTS) add_subdirectory(examples) endif() libayatana-appindicator-0.5.93/bindings/mono/examples/AyatanaIndicatorExample.cs0000644000000000000000000000374314512163465024735 0ustar /* * Copyright 2009 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . * * Authors: * Cody Russell */ using Gtk; using AyatanaAppIndicator; public class IndicatorExample { public static void Main () { Application.Init (); Window win = new Window ("Test"); win.Resize (200, 200); Label label = new Label (); label.Text = "Hello, world!"; win.Add (label); ApplicationIndicator indicator = new ApplicationIndicator ("Example", "applications-microblogging-panel", AppIndicatorCategory.ApplicationStatus); indicator.AppIndicatorStatus = AppIndicatorStatus.Attention; Menu menu = new Menu (); var foo = new MenuItem ("Foo"); menu.Append (foo); foo.Activated += delegate { System.Console.WriteLine ("Foo item has been activated"); }; menu.Append (new MenuItem ("Bar")); indicator.Menu = menu; indicator.Menu.ShowAll (); indicator.SecondaryActivateTarget = foo; win.ShowAll (); Application.Run (); } } libayatana-appindicator-0.5.93/bindings/mono/examples/ayatana-indicator-example.in0000755000000000000000000000015414512163465025224 0ustar #!/bin/sh MONO_PATH=@CMAKE_BINARY_DIR@/bindings/mono @CMAKE_CURRENT_BINARY_DIR@/AyatanaIndicatorExample.exe libayatana-appindicator-0.5.93/bindings/mono/examples/CMakeLists.txt0000644000000000000000000000252514512163465022414 0ustar # ayatana-indicator-example configure_file("${CMAKE_CURRENT_SOURCE_DIR}/ayatana-indicator-example.in" "${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-example" @ONLY) # AyatanaIndicatorExample.exe find_program(MONO mono) if (FLAVOUR_GTK3) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaIndicatorExample.exe" DEPENDS "bindings-mono" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${MCS} -out:"${CMAKE_CURRENT_BINARY_DIR}/AyatanaIndicatorExample.exe" -target:exe ${GTK_SHARP_3_0_LDFLAGS} "-r:${CMAKE_BINARY_DIR}/bindings/mono/ayatana-appindicator3-sharp.dll" "${CMAKE_CURRENT_SOURCE_DIR}/AyatanaIndicatorExample.cs" ) elseif (FLAVOUR_GTK2) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaIndicatorExample.exe" DEPENDS "bindings-mono" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${MCS} -out:"${CMAKE_CURRENT_BINARY_DIR}/AyatanaIndicatorExample.exe" -target:exe ${GTK_SHARP_2_0_LDFLAGS} "-r:${CMAKE_BINARY_DIR}/bindings/mono/ayatana-appindicator-sharp.dll" "${CMAKE_CURRENT_SOURCE_DIR}/AyatanaIndicatorExample.cs" ) endif() add_custom_target("bindings-mono-examples" ALL DEPENDS "AyatanaIndicatorExample.exe") libayatana-appindicator-0.5.93/bindings/mono/libayatana-appindicator3-api.metadata0000644000000000000000000001606014512163465025151 0ustar ApplicationIndicator NewAttentionIcon new-attention-icon NewStatus new-status NewLabel new-label NewAccessibleDesc new-accessible-desc ConnectionChanged connection-changed ScrollEvent scroll-event NewIcon new-icon NewIconThemePath new-icon-theme-path ID true true IconName AttentionIconName IconThemePath Menu GtkMenu* Connected Label LabelGuide AccessibleDesc OrderingIndex SetMenu id icon-name category id icon-name category icon-theme-path libayatana-appindicator-0.5.93/bindings/mono/libayatana-appindicator-api.metadata0000644000000000000000000001606014512163465025066 0ustar ApplicationIndicator NewAttentionIcon new-attention-icon NewStatus new-status NewLabel new-label NewAccessibleDesc new-accessible-desc ConnectionChanged connection-changed ScrollEvent scroll-event NewIcon new-icon NewIconThemePath new-icon-theme-path ID true true IconName AttentionIconName IconThemePath Menu GtkMenu* Connected Label LabelGuide AccessibleDesc OrderingIndex SetMenu id icon-name category id icon-name category icon-theme-path libayatana-appindicator-0.5.93/bindings/mono/policy.0.0.ayatana-appindicator3-sharp.config.in0000644000000000000000000000065014512163465026710 0ustar libayatana-appindicator-0.5.93/bindings/mono/policy.0.0.ayatana-appindicator-sharp.config.in0000644000000000000000000000064714512163465026633 0ustar libayatana-appindicator-0.5.93/bindings/mono/policy.0.1.ayatana-appindicator3-sharp.config.in0000644000000000000000000000066414512163465026716 0ustar libayatana-appindicator-0.5.93/bindings/mono/policy.0.1.ayatana-appindicator-sharp.config.in0000644000000000000000000000066314512163465026632 0ustar libayatana-appindicator-0.5.93/bindings/mono/TestAyatanaIndicator.cs0000644000000000000000000000522414512163465022437 0ustar /* * Copyright 2009 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . * * Authors: * Cody Russell */ using System; using GLib; using Gtk; using AyatanaAppIndicator; using NUnit.Framework; namespace Ayatana.AyatanaAppIndicator.Test { [TestFixture] public class IndicatorTest { ApplicationIndicator indicator; private void Update () { while (MainContext.Pending ()) MainContext.Iteration(true); } [SetUp] public void Init () { Application.Init (); Console.WriteLine ("Init()"); indicator = new ApplicationIndicator ("my-id", "my-name", AppIndicatorCategory.ApplicationStatus); Console.WriteLine ("Created indicator"); Update(); } [Test] public void TestProperties () { Console.WriteLine ("TestProperties()"); Assert.AreNotSame (indicator, null); Assert.AreEqual (indicator.IconName, "my-name"); Assert.AreEqual (indicator.ID, "my-id"); Assert.AreEqual (indicator.AppIndicatorStatus, AppIndicatorCategory.ApplicationStatus); Console.WriteLine ("End.."); } [Test] public void TestSetProperties () { Console.WriteLine ("TestSetProperties"); indicator.AppIndicatorStatus = AppIndicatorStatus.Attention; indicator.AttentionIconName = "my-attention-name"; Assert.AreEqual (indicator.AppIndicatorStatus, AppIndicatorStatus.Attention); Assert.AreEqual (indicator.AttentionIconName, "my-attention-name"); Console.WriteLine ("End.."); } } }libayatana-appindicator-0.5.93/bindings/vala/ayatana-appindicator-0.1-custom.vala0000644000000000000000000000216714512163465024555 0ustar /* Copyright (C) 2011 Canonical, Ltd. 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 Authored by Michal Hruby */ namespace AppIndicator { [CCode (type_check_function = "IS_APP_INDICATOR", type_id = "app_indicator_get_type ()")] public class Indicator : GLib.Object { } } // vim:et:ai:cindent:ts=2 sts=2 sw=2: libayatana-appindicator-0.5.93/bindings/vala/ayatana-appindicator3-0.1.deps0000644000000000000000000000003714512163465023332 0ustar gtk+-3.0 glib-2.0 Dbusmenu-0.4 libayatana-appindicator-0.5.93/bindings/vala/CMakeLists.txt0000644000000000000000000000203214512163465020542 0ustar # ayatana-appindicator3-0.1.deps install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/ayatana-appindicator3-0.1.deps" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/vala/vapi") # AyatanaAppIndicator3-0.1.vala find_package(Vala REQUIRED QUIET) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator3-0.1.vala" DEPENDS "src" "${CMAKE_BINARY_DIR}/src/AyatanaAppIndicator3-0.1.typelib" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${VAPI_GEN} --library=ayatana-appindicator3-0.1 --pkg gtk+-3.0 --girdir="${CMAKE_SOURCE_DIR}/src" --metadatadir "${CMAKE_SOURCE_DIR}/src" "${CMAKE_BINARY_DIR}/src/AyatanaAppIndicator3-0.1.gir" "${CMAKE_CURRENT_SOURCE_DIR}/ayatana-appindicator-0.1-custom.vala" ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ayatana-appindicator3-0.1.vapi" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/vala/vapi") add_custom_target("bindings-vala" ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaAppIndicator3-0.1.vala") if (ENABLE_TESTS) add_subdirectory(examples) endif() libayatana-appindicator-0.5.93/bindings/vala/examples/ayatana-indicator-example.vala0000644000000000000000000000343214512163465025513 0ustar /* * Copyright 2011 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . * * Authors: * Marco Trevisan (Treviño) */ using Gtk; using AppIndicator; public class IndicatorExample { public static int main(string[] args) { Gtk.init(ref args); var win = new Window(); win.title = "Indicator Test"; win.resize(200, 200); win.destroy.connect(Gtk.main_quit); var label = new Label("Hello, world!"); win.add(label); var indicator = new Indicator(win.title, "indicator-messages", IndicatorCategory.APPLICATION_STATUS); if (!(indicator is Indicator)) return -1; indicator.set_status(IndicatorStatus.ACTIVE); indicator.set_attention_icon("indicator-messages-new"); var menu = new Gtk.Menu(); var item = new Gtk.MenuItem.with_label("Foo"); item.activate.connect(() => { indicator.set_status(IndicatorStatus.ATTENTION); }); item.show(); menu.append(item); var bar = item = new Gtk.MenuItem.with_label("Bar"); item.show(); item.activate.connect(() => { indicator.set_status(IndicatorStatus.ACTIVE); }); menu.append(item); indicator.set_menu(menu); indicator.set_secondary_activate_target(bar); win.show_all(); Gtk.main(); return 0; } } libayatana-appindicator-0.5.93/bindings/vala/examples/CMakeLists.txt0000644000000000000000000000221614512163465022364 0ustar # ayatana-indicator-example.c add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-example.c" DEPENDS "bindings-vala" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${VALA_COMPILER} --pkg ayatana-appindicator3-0.1 --pkg gtk+-3.0 --vapidir=${CMAKE_BINARY_DIR}/bindings/vala -C ayatana-indicator-example.vala --metadatadir "${CMAKE_SOURCE_DIR}/src" --directory=${CMAKE_CURRENT_BINARY_DIR} VERBATIM COMMAND sed -i "s|#include\\s*<\\s*libayatana-appindicator/app-indicator.h\\s*>||g" "${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-example.c" ) # ayatana-indicator-example set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-example.c" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} -include ${CMAKE_SOURCE_DIR}/src/app-indicator.h") add_executable("ayatana-indicator-example" "${CMAKE_CURRENT_BINARY_DIR}/ayatana-indicator-example.c") target_include_directories("ayatana-indicator-example" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS}) target_link_libraries("ayatana-indicator-example" "${PROJECT_DEPS_LIBRARIES} -layatana-appindicator3 -L${CMAKE_BINARY_DIR}/src") libayatana-appindicator-0.5.93/.build.yml0000644000000000000000000001420514512163465015167 0ustar ######################################################### # THE FOLLOWING LINES IS USED BY docker-build ########################################################## requires: archlinux: # Useful URL: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=libayatana-appindicator - clang - gcc - git - make - startup-notification - which - cmake - cmake-extras - mate-common - gtk3 - glib2 - libdbusmenu-gtk3 - dbus-glib - gobject-introspection debian: # Useful URL: https://salsa.debian.org/debian-ayatana-team/libayatana-appindicator - autopoint - clang - clang-tools - g++ - cppcheck - git - at-spi2-core - cmake - cmake-extras - cli-common-dev - gobject-introspection - intltool - gtk-doc-tools - libxml2-utils - libnunit-cil-dev - dbus-test-runner - xvfb - valac - mono-devel - libglib2.0-dev - libgtk-3-dev - libgtk2.0-dev - gtk-sharp3-gapi - libgtk3.0-cil-dev - gtk-sharp2-gapi - libgtk2.0-cil-dev - libdbus-1-dev - libdbus-glib-1-dev - libdbusmenu-glib-dev - libdbusmenu-gtk3-dev - libdbusmenu-gtk-dev - libgirepository1.0-dev ubuntu: - autopoint - clang - clang-tools - g++ - cppcheck - git - at-spi2-core - cmake - cmake-extras - cli-common-dev - gobject-introspection - intltool - gtk-doc-tools - libxml2-utils - libnunit-cil-dev - dbus-test-runner - xvfb - valac - mono-devel - libglib2.0-dev - libgtk-3-dev - libgtk2.0-dev - gtk-sharp3-gapi - libgtk3.0-cil-dev - gtk-sharp2-gapi - libgtk2.0-cil-dev - libdbus-1-dev - libdbus-glib-1-dev - libdbusmenu-glib-dev - libdbusmenu-gtk3-dev - libdbusmenu-gtk-dev - libgirepository1.0-dev 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 - mkdir -p build/gtk3 - cd build/gtk3 - cmake ../../ -DCMAKE_INSTALL_PREFIX=/usr -DFLAVOUR_GTK3=ON - make - make install - cd - - mkdir -p build/gtk2 - cd build/gtk2 - cmake ../../ -DCMAKE_INSTALL_PREFIX=/usr -DFLAVOUR_GTK2=ON - make - make install - cd - - cd ../ - rm -Rf libayatana-indicator-build/ build_scripts: - if [ ${DISTRO_NAME} == "debian" ];then - export CFLAGS+=" -Wsign-compare -Wunused-parameter" - cppcheck --enable=warning,style,performance,portability,information,missingInclude . - fi - - if [ -e ./CMakeLists.txt ]; then - mkdir -p build/gtk3/ - cd build/gtk3/ - if [ ${DISTRO_NAME} == "debian" ] || [ ${DISTRO_NAME} == "ubuntu" ]; then - scan-build $CHECKERS cmake ../../ -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_TESTS=ON -DFLAVOUR_GTK3=ON - else - scan-build $CHECKERS cmake ../../ -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_VERBOSE_MAKEFILE=ON -DFLAVOUR_GTK3=ON - fi - cd - - mkdir -p build/gtk2/ - cd build/gtk2/ - if [ ${DISTRO_NAME} == "debian" ] || [ ${DISTRO_NAME} == "ubuntu" ]; then - scan-build $CHECKERS cmake ../../ -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_TESTS=ON -DFLAVOUR_GTK2=ON - else - scan-build $CHECKERS cmake ../../ -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_VERBOSE_MAKEFILE=ON -DFLAVOUR_GTK2=ON - fi - cd - - else - exit 1 - fi - - if [ $CPU_COUNT -gt 1 ]; then - if [ ${DISTRO_NAME} == "debian" ];then - cd build/gtk3/ - scan-build $CHECKERS --keep-cc --use-cc=clang --use-c++=clang++ -o html-report make -j $CPU_COUNT - make clean - cd - - cd build/gtk2/ - scan-build $CHECKERS --keep-cc --use-cc=clang --use-c++=clang++ -o html-report make -j $CPU_COUNT - make clean - cd - - fi - cd build/gtk3/ - scan-build $CHECKERS --keep-cc -o html-report make -j $CPU_COUNT - cd - - cd build/gtk2/ - scan-build $CHECKERS --keep-cc -o html-report make -j $CPU_COUNT - cd - - else - if [ ${DISTRO_NAME} == "debian" ];then - cd build/gtk3/ - scan-build $CHECKERS --keep-cc --use-cc=clang --use-c++=clang++ -o html-report make - make clean - cd - - cd build/gtk2/ - scan-build $CHECKERS --keep-cc --use-cc=clang --use-c++=clang++ -o html-report make - make clean - cd - - fi - cd build/gtk3/ - scan-build $CHECKERS --keep-cc -o html-report make - cd - - cd build/gtk2/ - scan-build $CHECKERS --keep-cc -o html-report make - cd - - fi - XVFB_RUN="$(which xvfb-run || true)" - if [ ${DISTRO_NAME} == "debian" ] || [ ${DISTRO_NAME} == "ubuntu" ]; then - if [ -e ./CMakeLists.txt ]; then - cd build/gtk3/ - ${XVFB_RUN} env CTEST_OUTPUT_ON_FAILURE=1 make test - cd - - cd build/gtk2/ - ${XVFB_RUN} env CTEST_OUTPUT_ON_FAILURE=1 make test - cd - - fi - fi libayatana-appindicator-0.5.93/ChangeLog0000644000000000000000000055321714512163465015054 0ustar 2021-11-18 Mike Gabriel * release 0.5.90 (HEAD -> master, tag: 0.5.90) 2021-10-24 Mike Gabriel * debian/rules: Unset DBUS_SESSION_BUS_ADDRESS before running tests. (2bf2076) * CMakeLists.txt: Fix how we evaluate the result for find_program for gtkdoc-scan. (ea91c02) * CMakeLists.txt: Fix gtkdoc-scan binary name. (d008320) 2021-10-24 Robert Tari * Merge branch 'sunweaver-pr/run-tests-in-build_scripts-target' (c3f146d) 2021-10-24 Mike Gabriel * .build.yml. Run unit tests directly after build in build_scripts: target. (a6c9ba8) 2021-10-24 Robert Tari * Merge branch 'sunweaver-pr/dbus-test-runner-keep-env' (c2f6dc5) * Merge branch 'sunweaver-pr/fix-mono-bindings-for-gtk3' (06df5ff) 2021-10-24 Mike Gabriel * tests/CMakeLists.txt: Assure that modified outside environment variables (see debian/rules) survive into the dbus-test-runner wrapped environment. (471a7ac) * .build.yml: Fix building and running unit tests (mixed up of && and ||). (52bade6) * .build.yml: Drop local builds of ayatana-ido and libayatana-indicator. They confuse cppcheck. (d34e805) * .build.yml: Fix rebuild with gcc on multi-core build nodes. (3a6def5) * .build.yml and debian/control: Sync list and order of build-dependencies (Debian and Ubuntu). (074fb94) * bindings/mono/CMakeLists.txt: Fix missing target bindings/mono/AyatanaAppIndicator/ApplicationIndicator.cs. (c8b0ce5) 2021-10-24 Robert Tari * Merge branch 'sunweaver-pr/gi-is-mandatory' (adaf4e3) * .build.yml: Fix typo (12f77f0) 2021-10-23 Mike Gabriel * CMakeLists.txt: White-space fix (remove superfluous empty line). (289797b) * CMakeLists.txt: Check for presence of gtk-doc executable if -DENABLE_GTKDOC=ON. (aaac9d8) * {,bindings/}CMakeLists.txt: Add switch for enabling/disabling bindings (enabled by default). (9673233) 2021-10-24 Robert Tari * .build.yml: Fix typo (f720888) * Merge branch 'sunweaver-pr/check-for-gtk-doc' (ba37cb9) 2021-10-23 Mike Gabriel * {,bindings/}CMakeLists.txt: Add switch for enabling/disabling bindings (enabled by default). (d80057c) 2021-10-24 Robert Tari * Merge branch 'sunweaver-pr/make-bindings-optional' (62c77b5) 2021-10-23 Mike Gabriel * src/CMakeLists.txt: GObjectIntrospection is not optional, so mark it as REQUIRED (only). (c3e24c2) * CMakeLists.txt: White-space fix (remove superfluous empty line). (3bbad2a) * CMakeLists.txt: Check for presence of gtk-doc executable if -DENABLE_GTKDOC=ON. (5ffca10) * {,bindings/}CMakeLists.txt: Add switch for enabling/disabling bindings (enabled by default). (7e5b7d8) 2021-10-23 Robert Tari * Merge branch 'sunweaver-pr/bring-back-gtk2-build-support' (7e4b671) * Merge branch 'sunweaver-pr/add-enable-gtkdoc-cmake-option' (69f8357) 2021-10-23 Mike Gabriel * .build.yml: Drop autogen.sh support; add GTK+-2.0 build and test support; also run unit tests on Ubuntu. (91bddd9) * debian/*: Re-enable / uncomment GTK+ 2.0 support. (152bf4e) * Re-introduce (CMake based) build support against GTK+ 2.0. (c723768) * CMakeLists: Introduce -DENABLE_GTKDOC. (1245eb7) 2021-10-22 Mike Gabriel * debian/rules: Run GTK3 unit tests first (see if they also fail on Jenkins). (61bb127) * debian/rules: Also explicitly set XDG_CACHE_HOME for unit tests. (4de805f) * debian/rules: Also set XDG_DATA_HOME for unit tests. (800f06c) 2021-10-20 Robert Tari * .travis.yml: Temporarily disable ppc64le builds (7bb8af0) * .travis.yml: Temporarily disable ppc64le builds (38190d0) 2021-08-10 Mike Gabriel * Merge branch 'tari01-pr/add-enable-werror-option' (e7d58e5) 2021-08-09 Robert Tari * Add ENABLE_WERROR option (8d3a18b) 2021-06-11 Robert Tari * Merge branch 'sunweaver-pr/debian-fix-gtk-3-only-builds' (c173a0e) 2021-06-11 Mike Gabriel * debian/*: Fix DEB builds (GTK-3+ only for now) after CMake switch-over. (5826955) 2021-06-11 Robert Tari * Merge branch 'sunweaver-pr/mono-namespacing-fix' (909558a) 2021-06-11 Mike Gabriel * Mono bindings: Change namespace from ayatana-appindicator-sharp3 to ayatana-appindicator3-sharp (and similar). (d359a4b) 2021-06-10 Mike Gabriel * debian/changelog: Bump package version to 0.5.90. (301b56f) * Merge branch 'tari01-pr/move-to-cmake' (80245fc) 2021-06-09 Robert Tari * bindings/vala/ayatana-appindicator3-0.1.deps: Add all dependencies (fd8225e) 2021-06-03 Robert Tari * .build.yml: Add libdbus-1-dev dependency for Debian/Ubuntu (edc83f3) 2021-06-02 Robert Tari * .build.yml: Add gtk-sharp3-gapi dependency for Debian/Ubuntu (363301e) 2021-06-01 Robert Tari * .build.yml: Add libgtk3.0-cil-dev dependency (56c2732) 2021-02-27 Robert Tari * Drop Automake files (ec32948) * Drop legacy GTK files (93f8f78) * Add CMakeLists.txt files + cmake/ helpers (367188d) * bindings/mono/examples: Port ayatana-indicator-example.in to CMake (2d8c300) * bindings/mono: Drop custom extension and use partial class in ApplicationIndicatorCustom.cs (33422a5) * bindings/vala: Add ayatana-appindicator3-0.1.deps (3ed807d) * bindings/mono: Rename and port ayatana-appindicator-sharp3-0.1.pc.in to CMake (e16b735) * src: Port ayatana-appindicator3-0.1.pc.in to CMake (7b0ede1) * bindings/mono: Use preconfigured ayatana-appindicator-sharp.dll.config (a52688b) * docs/reference: Port version.xml.in to CMake (1d8eec2) * docs/reference: Port libayatana-appindicator-docs.sgml.in to CMake (3ebb89d) * bindings/mono: Port policy.0.1.ayatana-appindicator-sharp.config.in to CMake (0df68d8) * bindings/mono: Port policy.0.0.ayatana-appindicator-sharp.config.in to CMake (290c62f) * bindings/mono: Update AssemblyInfo.cs (00f0e2c) * bindings/mono: Port app-indicator.sources.xml.in to CMake (4e06a0e) * src: use preconfigured AyatanaAppIndicator3-0.1.metadata (5004d72) 2021-05-25 Robert Tari * Merge branch 'sunweaver-pr/travis-ci' (3148485) 2021-05-25 Mike Gabriel * configure.ac: Default to GTK+-3.0 build (will come with CMake switch, anyway). (3400cf9) * {src,tests}/Makefile.am: Drop -Werror flag for now. Needs to be re-added later. (32f5f11) * Travis CI: Add initial scripts for running CI builds on Travis CI. (13f7ad0) 2021-05-03 Mike Gabriel * debian/rules: Make really really sure that unit tests are not run in parallel (although this looks ugly). (826f848) 2021-05-01 Mike Gabriel * Merge branch 'pr/fix-unit-tests' (1defcc3) 2021-04-30 Mike Gabriel * debian/rules: Switch to official Debian's dotest-% target. This stops ignoring unit tests during DEB package buids (and also fixes them). (6173997) * tests/Makefile.am: Add --keep-env option to dbus-test-runner calls. Allows propagating e.g. a build HOME into the DBus test environment. (04a517e) 2020-07-23 Mike Gabriel * release 0.5.5 (c43a76e) (tag: 0.5.5) * debian/rules: Explicitly set XDG_CACHE_HOME during unit tests, too. Hope this amends the dconf errors spotted lately. (c11784b) * debian/rules: Fix dh_auto_test call in dotest-%: target. (91ec65e) * debian/control: Drop R³ field again, it causes FTBFS on Ubuntu bionic in their version of dh_makeclilibs. (71dfd0a) * debian/rules: Drop more Python2 build stuff, esp. references to Py2-version specific builds. (05ebffc) * debian/changelog: Fix typo in previous changelog stanza's date. (1c48b44) 2020-07-22 Mike Gabriel * configure.ac: Drop Python section that configured the build for Python2 bindings. (50e147a) 2020-07-20 Mike Gabriel * configure.ac: No more reference to Python2 ayatana_appindicator bindings. (6af5e32) 2020-07-19 Mike Gabriel * debian/rules: Drop reference to python2 build of remove bin:pkg python-ayatana-appindicator. (7373261) 2020-07-18 Mike Gabriel * debian/control: Port over changes from official Debian packaging. (43dc072) * bindings/pyton: Drop Python2/Gtk-2 bindings. (8c4c6db) * debian/*: Drop Python2 binding support. (eb5ffbb) 2019-11-11 Mike Gabriel * release 0.5.4 (5ca235f) (tag: 0.5.4) 2019-08-29 Mike Gabriel * Avoid deprecated g_type_class_add_private. (e7acaf9) 2018-03-22 Mike Gabriel * debian/control: Add Ds for libgtk*-dev to libaytana-appindicator*-dev. (f9d315a) 2018-03-20 Mike Gabriel * debian/control: Drop from Recommends: ayatana-indicator-application. The -application Indicator should be pulled in from the desktop env's side that wants to utilize it (e.g. via the indicator-render applet). (7b7bd6b) * release 0.5.3 (4892a12) (tag: 0.5.3) * src/app-indicator.c: Type cast assignments from g_object_ref(). (b14ba33) 2017-10-26 Mike Gabriel * {configure.ac,Makefile.am}: Drop distcheck features. (d4b1697) 2017-10-24 Mike Gabriel * release 0.5.2 (a081ea2) (tag: 0.5.2) * debian/source/format: Explicitly set to source format 1.0. (82f779a) * debian/upstream/signing-key.asc: Add upstream signing key. (34f4291) * debian/control: Use Github repo in Vcs-*: URL fields. (5f9176e) * debian/control: Bump Standards-Version: to 4.1.1. No changes needed. (f8fccd9) * debian/control: Fix Homepage: URL. (7a4fb33) * debian/*.install: Adapt .typelib installation paths (to multi-arch). (eff5282) * debian/control: Various adaptation to SYNOPSIS and LONG_DESCRIPTION fields. (eb9d5a1) * debian/rules: Only dh_install cil packages on architectures that support Mono. (6a978fc) * debian/rules: Enable all hardening flags. (906c9a4) * debian/copyright: Adopt from official Debian package (slightly modified). (3a09566) * debian/rules: White space fix. (af533aa) * API documentation: Suppress some warnings being thrown. (c3c9e79) * python2 bindings: Finally avoid implicit declaration for (_ayatana)_appindicator_add_constants() function symbol. (d89dee1) 2017-10-06 Mike Gabriel * debian/control: Add to B-D: dh-python. (024cc53) 2017-10-05 Mike Gabriel * src/app-indicator.c: Avoid usage of PATH_MAX macro. Fixes FTBFS on Debian GNU/Hurd. (bc7f683) 2017-09-29 Mike Gabriel * Revert "debian/{control,compat}: Bump DH version level to 10 (and bump B-D to >= 10)." (c17c300) * post-release project name fix in debian/changelog (4388914) * debian/control: Add missing , at EOL under B-D. (0303c95) 2017-09-28 Mike Gabriel * debian/{control,rules}: Update supported host architectures. (9164fa6) * debian/{control,compat}: Bump DH version level to 10 (and bump B-D to >= 10). (9c19888) * bindings/mono/Makefile.am: Don't run tests on all targets, only on check target. Fixes FTBFS when built parallely. (65e8d53) 2017-09-26 Mike Gabriel * debian/changelog: Post-release fix in date string of 0.5.0 release stanza. (303ab50) * bindings/python: Yet another 'ayatana' namespace fix for the Python2 bindings. (ee1719a) 2017-09-23 Mike Gabriel * release 0.5.1 (c3dc683) (tag: 0.5.1) * Python2 bindings: Fix import ayatana_appindicator failure by correctly adding the ayatana namespace. (8a97153) * docs/reference/Makefile.am: Drop option --nogtkinit from SCANGOBJ_OPTIONS. Has been long deprecated in scangobj and been removed in gtk-doc (>= 1.26). (75d83e0) 2017-05-22 Mike Gabriel * release 0.5.0 (73a2c16) (tag: 0.5.0) * autogen.sh: Fix PKG_NAME. Use ayatana- in PKG_NAME. (bd7789c) 2017-05-15 Marco Trevisan (Treviño) * app-indicator: don't append the snap prefix if the icon is saved in a well known readable path (0f55cbb) * AppIndicator: don't emit label cahanges when guide is still empty (20e557b) * AppIndicator: fix icon and theme paths when running in $SNAP environment (5b851ff) 2017-05-15 Alberts Muktupāvels * Handle watcher service appearing and disappearing. (17376e1) 2017-05-15 Dmitry Shachnev * Make test-simple-app really working. (14520bd) 2017-05-15 Mike Gabriel * build system: Switch to mate-common. (b0a3d75) * src/dbus-shared.h: Fix copy+paste flaw for INDICATOR_APPLICATION_DBUS_OBJ. (4dd25fc) 2015-11-11 Mike Gabriel * debian/rules: Use instead of `pwd`. (3dbc56b) * Re-rename README.md to README. Otherwise automake will complain. (8f3e225) * README.md: Don't sound Ubuntu-hostile (which we aren't). (d7266c0) * Rename README -> README.md, fill with content. (b63351e) * tests/run-xvfb.sh: Give tests even more time (10s). (742c033) * tests/run-xvfb.sh: Give tests more time (4s instead of 2s) to complete. This may help with observed / arbitrary test failures when built on jenkins.arctica-project.org. (c6d4799) * debian/control: Fix versioned build-dependency for libayatana-indicator{,3}-dev. (6b3a341) * Revert "debian/rules: Make sure the kill command is found in ..." (d9c905e) * debian/rules: Make sure the kill command is found in /home/mike/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt/thinlinc/bin. (1abf3ea) * debian/rules: Use backticks instead of $() (which is not a GNU make way of invoking commands). (1a915b2) * debian/rules: Provide temporary home for test suite runs. (865dd82) * debian/rules: Expect tests/test-suite.log files in build/gtk subdirs. (7ded69d) * debian/rules: Don't abort build on failing tests (so that we see the tests-suite.log file). (d95085e) * debian/rules: View test's log file for better debugging of problems when built in clean chroots. (0d6f90a) * debian/control: Add B-D: procps. The test suite complains about the ps command to be missing in minimal build environments. (5f0eee4) * Drop .bzrignore file. (c7c92ab) 2015-11-10 Mike Gabriel * debian/control: Fix build-dependency issue for nightly builds. (5952912) 2015-11-09 Mike Gabriel * Fork from Ubuntu's libappindicator project. (def21c2) 2014-11-10 CI bot * Releasing 12.10.1+15.04.20141110-0ubuntu1 (bf7bc28) 2014-11-10 Lars Uebernickel * scroll-event: change parameter to the right type (9cb1df0) 2014-11-10 Matthias Klose * Rebuild to drop files installed into /usr/share/pyshared. (643fad3) 2014-11-10 Lars Uebernickel * gcov.m4: add lcov 1.11 (cd218c8) * scroll-event: change parameter to the right type (ae927bc) 2013-12-19 Ted Gould * Fix build failures on trusty. Fixes: https://bugs.launchpad.net/bugs/1262655. (25762ad) * Adding gcov 1.10 (52c50b3) 2013-12-19 Matthias Klose * Build with -Wno-error=deprecated-declarations.; Don't build the mono bindings on ppc64el, not available.; Disable building the example, vala build error. (a703b19) 2013-10-17 Robert Bruce Park * Merge distro back to trunk. (65bc7f8) * Merge distro back to trunk. (3cb943d) 2013-10-14 Matthias Klose * Don't build the mono bindings on AArch64, not available. Fixes: https://bugs.launchpad.net/bugs/1239474. (7fa21cc) * Don't build the mono bindings on AArch64, not available. (LP: #1239474) (63078a8) 2013-09-20 Automatic PS uploader * Releasing 12.10.1+13.10.20130920-0ubuntu1 (revision 266 from lp:libappindicator). (53d9d3d) * Releasing 12.10.1+13.10.20130920-0ubuntu1, based on r266 (6561e54) 2013-09-16 Jeremy Bicha * - Build using default vala - Build-depend on at-spi2-core to avoid test failure - Build-depend on libxml2-utils - Don't explicitly build-depend on gir packages, gnome-doc-utils, or quilt - Have -dev packages depend on their gir- packages. (e467f23) 2013-08-13 Jeremy Bicha * Don't explicitly build-depend on gir packages, quilt, or gnome-doc-utils Build using default vala Build-depend on libxml2-utils Build-depend on at-spi2-core to avoid test failure Have -dev packages depend on their gir- packages (88416a6) 2013-06-19 Automatic PS uploader * Releasing 12.10.1daily13.06.19-0ubuntu1 to ubuntu. (2f5c0e2) * Releasing 12.10.1daily13.06.19-0ubuntu1, based on r264 (d24626e) 2013-06-10 Marco Trevisan (Treviño) * NotificationWatcher interface has not anymore the XAyatanaRegisterNotificationApprover method. (6e92176) 2013-06-10 Ted Gould * Making gtk-doc check run in the current source directory. (e17244e) 2013-06-07 Ted Gould * Seems no one else has this on, no reason to be the odd ball. (256ce01) * Don't need the same directory twice (5ab6b49) * An odd typo worth fixing (b8fe5d1) * Going back to the environment style (27a81fb) * Dropping some left over debugging info (955ce2e) * Making sure the check is done in the source directory (0678dac) 2013-05-03 Automatic PS uploader * Releasing 12.10.1daily13.05.02-0ubuntu1 to ubuntu. (1ca305b) 2013-05-02 Automatic PS uploader * Releasing 12.10.1daily13.05.02-0ubuntu1, based on r261 (da7e4bb) 2013-05-02 Mathieu Trudel-Lapierre * Merge changelog changes from /13.04 branch for saucy. (2a10f27) * Merge changelog changes from /13.04 branch for saucy. (8c82773) 2013-04-19 Łukasz 'sil2100' Zemczak * indicator_desktop_shortcuts_nick_exec() is deprecated, use indicator_desktop_shortcuts_nick_exec_with_context() with a NULL context instead - fixes the FTBFS. (a510902) * indicator_desktop_shortcuts_nick_exec is deprecated, use indicator_desktop_shortcuts_nick_exec_with_context instead - fixes the FTBFS (affeefe) 2013-04-17 Mathieu Trudel-Lapierre * Remove the clean target. (0202579) 2013-04-16 Iain Lane * Install appindicator-sharp's pcfile into /usr/share/pkgconfig as this is an arch:all package and library. Update the assemblydir variable in this pcfile to refer to the correct location for the library instead of an incorrect multiarch directory. (02d580a) * Install appindicator-sharp's pcfile into /usr/share/pkgconfig as this is an arch:all package and library. Update the assemblydir variable in this pcfile to refer to the correct location for the library instead of an incorrect multiarch directory. (32257b0) 2013-04-09 Mathieu Trudel-Lapierre * debian/rules: drop the clean target, it's superfluous. (e40014d) 2013-04-03 Mathieu Trudel-Lapierre * Reverse the order of dh_clean and dh_autoreconf_clean, fixes issues where autoreconf files get dropped and thus autoreconf fails to properly clean. (736066f) 2013-03-13 Automatic PS uploader * Releasing 12.10.1daily13.03.13-0ubuntu1 to ubuntu. (5d2aa7d) * Releasing 12.10.1daily13.03.13-0ubuntu1, based on r255 (8bdd55e) 2013-03-11 Sebastien Bacher * stop build-depending on libindicate, it's deprecated and not used there. (5c18eb1) * stop build-depending on libindicate, it's deprecated and not used there (34d5196) 2013-02-15 Automatic PS uploader * Releasing 12.10.1daily13.02.15-0ubuntu1 to ubuntu. (d3d5390) * Releasing 12.10.1daily13.02.15-0ubuntu1, based on r253 (ef867f3) 2013-02-14 John Vert * in app_indicator_init(), finish initializing self's fields before calling g_bus_get(). Fixes: https://bugs.launchpad.net/bugs/1122596. (59c3e10) * in app_indicator_init(), finish initializing self's fields before calling g_bus_get(). (6e84cff) 2013-02-14 Iain Lane * Install typelib files into non Multi-Arch paths. Fixes: https://bugs.launchpad.net/bugs/1124941. (93b038e) * Install typelib files in standard (non MA) paths (0a83385) 2013-02-13 Automatic PS uploader * Releasing 12.10.1daily13.02.13-0ubuntu1 to ubuntu. (ede8d21) * Releasing 12.10.1daily13.02.13-0ubuntu1, based on r250 (454c84f) 2013-02-05 Mathieu Trudel-Lapierre * Bootstrap message. Fixes: https://bugs.launchpad.net/bugs/1065310. (89da4a1) 2013-02-04 Mathieu Trudel-Lapierre * Automatic snapshot from revision 245 (bootstrap): - Fix Vala classes not being able to inherit from Indicator (LP: #1065310) (5d60b84) * We don't need to kill at-spi2-registry, that was only meant for testing. (e0e8251) * We don't need to kill at-spi2-registry, that was only meant for testing. (b266f26) 2013-01-30 Charles Kerr * This is a continuation of ~mathieu-tl/libappindicator/fix-test-merge/ which adds fixes for bug #1102589, bug #1102595, bug #1109128, and bug #1103087, which should get it finally passing CI. Fixes: https://bugs.launchpad.net/bugs/1102589, https://bugs.launchpad.net/bugs/1102595, https://bugs.launchpad.net/bugs/1103087, https://bugs.launchpad.net/bugs/1109128. (bd333ad) 2013-01-29 Charles Kerr * fix potential overflow reported by Coverity (3e9b3f1) * fix copy-paste error when updating the attention accessible text (0793d59) * flush the dbus connection before exiting test-libappindicator-status-server (345b7af) * raise gtk+ minimum to 2.35.4 because we no longer use g_type_init() (82b3dc0) 2013-01-23 Mathieu Trudel-Lapierre * Increase dbus-test-runner timeout to 5 minutes to give tests enough time to start up and run on buildds, especially on slow architectures. (fc8b73e) * resolve conflicts on acinclude.m4 (1c9c770) 2013-01-21 Chris J Arges * This fixes python multi-arch include issues. (ee33a9a) 2013-01-17 Chris J Arges * acinclude.m4: Fix python multi-arch include issues. (962ea76) 2013-01-16 Mathieu Trudel-Lapierre * Remove deprecated calls to g_type_init() (6a86412) * Adjust timeouts and log handlers to not fail tests unnecessarily. (8958959) 2013-01-14 Michael Terry * increase another test timeout to make amd64 build (c5aca65) 2013-01-10 Michael Terry * some packaging fixes to make tests more resistant to timing issues and warnings from sub-libraries (616555a) 2013-01-08 Mathieu Trudel-Lapierre * More traces (b598e7c) 2012-12-18 Marco Trevisan (Treviño) * NotificationWatcher: remove XAyatanaRegisterNotificationApprover method (62ef4f4) 2012-12-11 Mathieu Trudel-Lapierre * Properly retrieve the path to python headers. (59a0f71) 2012-12-10 Mathieu Trudel-Lapierre * Remove entry about disabling tests for documentation: they're fixed. (8aad250) * Fix gtkdoc tests and building of the documentation given a separate build directory. (c8d15b0) 2012-12-07 Mathieu Trudel-Lapierre * Re-enable docs (0605654) 2012-12-06 Mathieu Trudel-Lapierre * Add reference to the bug we're waiting for a fix for; re: gtk-doc completeness, missing links and undocumented symbols (db9a00b) * Temporarily disable gtk-doc completeness tests until they can be fixed. (35683fe) 2012-12-05 Ted Gould * Adding a custom clean rule to the inline packaging. (3050e34) 2012-12-05 Mathieu Trudel-Lapierre * Inline packaging (9651f1d) 2012-12-04 Ted Gould * Trying to be more direct (d2f16cb) * Going with just dh_clean (3dceb09) * Making it so that clean doesn't have cli in it (63938c0) 2012-11-30 Mathieu Trudel-Lapierre * Properly disable tests for gtk2 and gtk3, not the gtk2 build. (a640bfe) * Temporarily disable GTK2 tests. (085a347) 2012-11-30 Charles Kerr * update our use of gtk-doc from 1.9 to 1.18. (effd665) 2012-11-27 Mathieu Trudel-Lapierre * More shuffling around of Build-Depends. (4f9fa5b) 2012-11-26 Mathieu Trudel-Lapierre * Add xvfb to Build-Depends. (568791d) * Override dh_auto_test to run tests per-flavor. (bab27b9) * Add a Pre-Depends on multiarch-support for libappindicator(3-)7. (97eb2fd) * Override dh_autoreconf to run autogen.sh and not call configure. (6a07efc) * Add and export DPKG_GENSYMBOLS_CHECK_LEVEL. (9dff094) * Update Vcs-Bzr, Vcs-Browser and add a notice to uploaders. (ee40944) * Drop old Conflicts, Replaces, Provides for old unsupported upgrade paths. (6ccd332) * debian/*.install: - Update paths for multiarch and for use with dh9 (remove debian/tmp...) (4664f1e) * debian/rules: - Convert from cdbs to debhelper 9. (1c8427d) * Drop Build-Depends on cdbs. (a091723) * debian/compat: bump to compat level 9. (d92dc38) * Bump Build-Depends on debhelper to (>= 9). (ca3d312) * Reorganize Build-Depends for clarity. (4e7dde6) * debian/control: - Update style: use trailing commas at the end of dependency lists. (501f677) * Tell bzr-builddeb to build the package in split mode. (f6833f0) * Import debian/ from lp:~ubuntu-desktop/libappindicator/ubuntu (51bae23) 2012-10-11 Lars Uebernickel * Merge lp:~robert-ancell/libappindicator/lp-1065310 (0807da7) 2012-10-11 Robert Ancell * Fix Vala classes not being able to inherit from Indicator (26b796b) 2012-07-11 Sebastien Bacher * releasing version 12.10.0-0ubuntu1 (09ddb17) * New upstream release. (63a49ad) * Import upstream version 12.10.0 (dfefc88) 2012-07-11 Charles Kerr * bump version to 12.10.0 (f2744fa) 2012-06-18 Charles Kerr * merge lp:~evgeni/libappindicator/optional-mono to make Mono binding generation optional. This way we don't FTB on architectures that don't support Mono. (ad488df) * merge bzr merge lp:~evgeni/libappindicator/multiarch-same-devheaders so that we don't include build-time filenames in comments of the enum header files. (2723b6c) 2012-06-10 Evgeni Golov * don't include build-time filenames in comments of the enum header files (96fc7f9) * make building mono extension optional, so we can build on archs that do not have mono (086dae1) 2012-05-23 Robert Ancell * releasing version 0.4.92-0ubuntu2 (f480157) (tag: 0.4.92-0ubuntu2) 2012-05-22 unknown * use autoreconf.mk instead of calling dh_autoreconf by hand (8d0330b) 2012-04-23 Charles Kerr * merge lp:~ted/libappindicator/app_name to try the application name as a fallback if the client doesn't explicitly set the title. (0bf6ada) 2012-04-16 Ted Gould * If we don't have a title set, use the application name to output the title (b894548) 2012-04-12 Charles Kerr * merge lp:~allanlesage/libappindicator/TDD to add gcov targets to our autotools build for code-coverage reporting. For more information, see this blog post: http://qualityhour.wordpress.com/2012/01/29/test-coverage-tutorial-for-cc-autotools-projects/ . (859a831) 2012-03-27 Allan LeSage * Added coverage tooling. (6f29399) 2012-03-21 Ken VanDine * releasing version 0.4.92-0ubuntu1 (27eb63c) * New upstream release. * Fix a Coverity PW.BRANCH_PAST_INITIALIZATION error (LP: #957471) * Fix FTB bug from ambiguity between Glib.Menu and Gtk.Menu in the Vala code; debian/control: Updating to valac-0.16 (f3df2e1) 2012-03-21 Charles Kerr * releasing version 0.4.92-0ubuntu1 (ea6700d) (tag: 0.4.92-0ubuntu1) * bump debian/control's valac dependency from 0.14 to 0.16 (61c3e01) * New upstream release. * Fix a Coverity PW.BRANCH_PAST_INITIALIZATION error (LP: #957471) * Fix FTB bug from ambiguity between Glib.Menu and Gtk.Menu in the Vala code (3aa2827) * Import upstream version 0.4.92 (812ded8) * Sync from Ubuntu Desktop (03fa072) * 0.4.92 (d4b572c) (tag: 0.4.92) * merge lp:~charlesk/libappindicator/fix-vala-examples to resolve ambiguity in the vala examples between glib.Menu and Gtk.Menu (a0f8c26) * The vala examples were written before GMenu, so add explict namespace use here to avoid valac errors caused by namespace ambiguity between glib and gtk (ie, use 'new Gtk.Menu' instead of 'new Menu') (13c8aef) 2012-03-19 Charles Kerr * merge lp:~charlesk/libappindicator/lp-957471 to fix a PW.BRANCH_PAST_INITIALIZATION error reported by Coverity in bug #957471 (84d8aae) 2012-03-16 Charles Kerr * remove oddly-scoped variable to fix a CID 10737 - PW.BRANCH_PAST_INITIALIZATION warning reported by Coverity in Bug #957471 (36f65c7) 2012-03-09 Sebastien Bacher * releasing version 0.4.91-0ubuntu3 (73331d6) (tag: 0.4.91-0ubuntu3) * debian/rules: build without make check until the builder environment issues are sorted (ac1487a) * releasing version 0.4.91-0ubuntu2 (25c5aef) (tag: 0.4.91-0ubuntu2) * debian/control: build-depends on dbus-test-runner (593ee90) * releasing version 0.4.91-0ubuntu1 (1ae63e0) (tag: 0.4.91-0ubuntu1) * debian/rules: - run make check during the build (55b03b4) * New upstream release. * Set name and title in fallback status item (LP: #885080) * Fix build in non-source dir cases (LP: #931764) * Use file names for icons in fallback mode (LP: #875770) * Add since declarations to documentation * Fix test suite to work with libindicator 0.4.93 * Fix the mono binding properties (223b045) 2012-03-09 Ted Gould * releasing version 0.4.91-0ubuntu1~ppa1 (b17679f) * New upstream release. * Set name and title in fallback status item (LP: #885080) * Fix build in non-source dir cases (LP: #931764) * Use file names for icons in fallback mode (LP: #875770) * Add since declarations to documentation * Fix test suite to work with libindicator 0.4.93 * Fix the mono binding properties (6a88fca) * Import upstream version 0.4.91 (b681b75) * Merge U. Desktop (e602f2a) * 0.4.91 (f95bf78) (tag: 0.4.91) * Update to new actions format in libindicator (244c436) * Include an index for 0.5 (ef62b53) 2012-03-07 Charles Kerr * Merge lp:~ted/libappindicator/lp885080 to add a title and name on the status icon in fallback mode for bug #885080 (328e55e) 2012-03-06 Ted Gould * Making the Mono and Python bindings build directory independent (b587402) 2012-03-06 Charles Kerr * generate app-indicator.sources.xml (for mono bindings) and appindicator.override (for python bindings) at configure time so that they can take into account top_builddir vs top_srcdir differences. (5ab2da4) 2012-03-06 Ted Gould * Look for files and don't use those as icon names in the fallback (8655832) * Removing unneeded NULL check (be2eef5) * Improve docs on title functions (bd4dbb3) 2012-03-02 Ted Gould * Attaching bug (f39aac0) * Rework the icon setting function so that it can handle images that are file paths by checking to see if the files exist (e2ec05d) * Protecting from NULL titles, which apparently status_icon can't take :-/ (fafea8a) * Handle the title changing at runtime (002c16b) * Attaching bug (556d749) * Sets the title of the status icon to the title of the appindicator and the name to the ID (63331bc) 2012-02-29 Sebastien Bacher * Set "Since: 0.5" in the inline documentation for the new set_title and get_title functions (72ddc78) 2012-02-07 Sebastien Bacher * releasing version 0.4.90-0ubuntu2 (fe1d218) (tag: 0.4.90-0ubuntu2) * debian/control: - don't make libappindicator3-dev depends on libappindicator-dev; debian/libappindicator3-dev.install: - install the gtk3 include directory (36ed779) 2012-02-06 Ken VanDine * releasing version 0.4.90-0ubuntu1 (d351a75) (tag: 0.4.90-0ubuntu1) * set to UNRELEASED (86b6eae) * New upstream release. * Fix include with Dbusmenu 0.5.90 * Fix GTK3 include paths in pkgconfig file (LP: #869373) * Add title property (LP: #923971) * Don't specify pyglib-2.0-python2.6 in LDFLAGS * fix fallback icon of the GtkStatusIcon (LP: #820080); debian/control: Dbusmneu Dep to 0.5.90; deibna/*symbols: Updated to add [set|get]_title functions (2c4628f) 2012-02-03 Ted Gould * releasing version 0.4.90-0ubuntu1~ppa1 (0ef39fd) * deibna/*symbols: Updated to add [set|get]_title functions (f149e80) * debian/control: Dbusmneu Dep to 0.5.90 (5ad59aa) * New upstream release. * Fix include with Dbusmenu 0.5.90 * Fix GTK3 include paths in pkgconfig file (LP: #869373) * Add title property (LP: #923971) * Don't specify pyglib-2.0-python2.6 in LDFLAGS * fix fallback icon of the GtkStatusIcon (LP: #820080) (57f1cab) * Import upstream version 0.4.90 (7256c18) * Sync with U. Desktop (6516e72) * Fixing some of the properties in the mono bindings (4ccb5d7) (tag: 0.4.90) * 0.4.90 (53fbf0d) * Updating to Dbusmenu 0.5.90 (879f9e9) 2012-01-31 Ted Gould * Changing dbusmenu-gtk required version (67380ab) 2012-01-30 Ted Gould * Add the ability to set and export the title of the app indicator (ea6c887) * Attaching bug (f6e9dcf) * Fix type in comment (f0e9928) 2012-01-28 Ted Gould * Adding the get/set function to the docs (8b21de2) * Handling getting the title property (982de61) * Making get_title work (97d2b40) * Only signal to dbus if we're connected (dcbd590) * Adding a test to track setting of the title (2d03f1d) * Setting the titles in the examples (84ba240) * Make the set function call the property set function (f12cf32) * Support the title property over dbus and emitting the dbus signal when it changes (3aa66a7) * Adding the 'Title' property and 'NewTitle' signal to the DBus interface description (e5b9bc3) * Adding the title property (3c1556c) * Adding a title entry to the private structure (fb65099) * Adding get/set title functions (a89fe2c) 2012-01-27 Ted Gould * Update to trunk (dea1a71) * Making tests optional (d006f9d) * Fixing pkgconfig file for GTK3 (d813c8a) * Removing unneeded python dep (9ea0166) 2012-01-26 Ken VanDine * Don't specify pyglib-2.0-python2.6 in LDFLAGS, it isn't needed and only works with python2.6 (ae5cbc9) 2012-01-25 Ken VanDine * releasing version 0.4.1-0ubuntu4 (996677f) (tag: 0.4.1-0ubuntu4) 2012-01-24 Ken VanDine * - Don't specify pyglib-2.0-python2.6 in LDFLAGS - dhr_autoreconf; debian/libappindicator1.symbols, debian/libappindicator3-1.symbols - added symbol. s/pyglib-2.0-python2.6/pyglib-2.0-python2.7/ for python bindings. (9055ae0) * rebuild for libindicator7; bindings/python/Makefile.am - Don't specify pyglib-2.0-python2.6 in LDFLAGS, it isn't needed and only works with python2.6; debian/rules - include autoreconf.mk; debian/control - added build dep on dh-autoreconf (0e4459f) * no change rebuild for libindicator7 (5452357) * Don't specify pyglib-2.0-python2.6 in LDFLAGS, it isn't needed and only works with python2.6 (95620c4) 2011-11-23 György Balló * Make building mono tests optional. Check for mono-nunit if nunit is not available (ce8b882) 2011-11-22 György Balló * Use the standard location for mono bindings (1798a73) * Do not link pyglib explicitly (c101b27) * Fix header files location for GTK3 (4777acb) * Make building tests optional (077275b) 2011-09-30 Michael Vogt * releasing version 0.4.1-0ubuntu2 (b1064de) (tag: 0.4.1-0ubuntu2) * src/app-indicator.c: - fix fallback icon of the GtkStatusIcon (LP: #820080), cherry pick of r221 from lp:libappindicator (e669e2d) 2011-09-30 Ted Gould * Work with fallbacks and theme paths (bc49dd8) 2011-09-30 Michael Vogt * src/app-indicator.c: hide first in passive mode and add comment about it (d1788f9) * src/app-indicator.c: do not add the same icon_theme_path again, gtk3 apparently does not check this (ff65f9f) * simplify (5819385) * src/app-indicator.c: honor icon_theme_path in the fallback (4aca6f6) * unbreak attention_icon (f476076) * src/app-indicator.c: when using the fallback icon, first check if there is a "-panel" version of the icon available and if not fallback to the indicator one (6ecd10f) 2011-09-28 Ken VanDine * releasing version 0.4.1-0ubuntu1 (ba84fd6) (tag: 0.4.1-0ubuntu1) * New upstream release (0.4.0). * Fix VAPI file for Vala bindings (LP: #789588); New upstream release (0.4.1). * Fix build. (641031f) 2011-09-28 Ted Gould * releasing version 0.4.1-0ubuntu1~ppa1 (c93b59d) * New upstream release (0.4.0).; New upstream release (0.4.1). * Fix build. (b620c7c) * Import upstream version 0.4.1 (334e44d) * 0.4.1 (a011977) (tag: 0.4.1) * Fix deps (1c49e53) * Fix dep as well (9a0a2e0) * Fix prefix on custom vala (a8cb786) * Switching out the prefix for a fixed name (3c21ff4) * New upstream release. * Fix VAPI file for Vala bindings (LP: #789588) (c6f5993) * Import upstream version 0.4.0 (e57397e) * Merge U. Desktop (b5c8bb4) * 0.4.0 (e527e64) (tag: 0.4.0) * Bring along custom and grab from srcdir (9826036) 2011-09-23 Ted Gould * Fixing Vala bindings (aa96c75) 2011-09-23 Michal Hruby * Fix type_check_function for vala bindings (c0b476c) 2011-08-11 Sebastien Bacher * releasing version 0.3.91-0ubuntu1 (2d4793a) (tag: 0.3.91-0ubuntu1) * debian/rules: - update the translations template after build, dh_translations doesn't work for builds out of the source directory (8c1f764) * New upstream release. * Secondary activate support * Better GIR file annotations (29515fe) 2011-08-11 Ted Gould * releasing version 0.3.91-0ubuntu1~ppa1 (7a5688c) * New upstream release. * Secondary activate support * Better GIR file annotations (6a05f53) * Import upstream version 0.3.91 (8c352cd) * Sync to U. Desktop (1a48342) * 0.3.91 (1bfe91a) (tag: 0.3.91) 2011-07-22 Ted Gould * Fix comments to work with g-ir-scanner (ba1f3a6) * Adding in support for the secondary activate (middle click) (5c4ee09) * Adding the secondary target functions to the documentation (f551fdb) * Watching for the 'XAyatanaSecondaryActivate' method as well (d59df9b) * Always clear the sec_activate_target (195a64f) 2011-07-20 Marco Trevisan (Treviño) * Fixed comments to correctly work with g-ir-scanner (940f4ac) * examples: use the set_secondary_activate_target API (beb4f16) * vala: updated example to use the new API (a3812f9) * mono bindings: updated API and example (6a52781) * app-indicator: Move from "secondary-activate" signal to secondary_activate target (8f71358) 2011-07-19 Marco Trevisan (Treviño) * Call the right signal on middle-click over the tray icon! (d54d1e7) 2011-07-18 Marco Trevisan (Treviño) * app-indicator: added middle click support for wrapper tray (a758223) * examples: add secondary-activate signal usage to Vala and C (383469d) * Vala bindings example: added secondary_activate (d24b2f2) * mono bindings: added SecondaryActivate support. (4574948) * Add signal "secondary-activate" and emit it when needed (0e4c805) 2011-07-09 Marco Trevisan (Treviño) * Merge with Upstream (4146455) 2011-07-08 Sebastien Bacher * releasing version 0.3.90-0ubuntu1 (90aa5af) (tag: 0.3.90-0ubuntu1) 2011-07-07 Ted Gould * releasing version 0.3.90-0ubuntu1~ppa1 (7b75269) * New upstream release. * Fix a memory leak (LP: #) * Port to libindicator 0.4 (e3d7177) * Import upstream version 0.3.90 (fc03ef7) * 0.3.90 (bf95161) (tag: 0.3.90) * Removing -Werror for the Vala compiler (15fccc9) * Free allocated name (7cff4ed) * Migrate to libindicator 0.4 (f20865c) 2011-07-05 Ted Gould * Sync to U. Desktop (6e9e154) 2011-07-05 Michael Terry * No change rebuild to depend on libdbusmenu-gtk4 (instead of -gtk3) LP: #803667 (8693295) (tag: 0.3.0-0ubuntu3) 2011-06-21 Colin Watson * releasing version 0.3.0-0ubuntu2 (c6d8437) (tag: 0.3.0-0ubuntu2) * Remove unused libmono-dev build-dependency (for Mono 2.10 transition). (cde0e9c) * Call dh_python2 from binary-fixup rather than binary-predeb, so that generated maintainer script snippets actually end up in the package. (967fd70) 2011-06-16 Ted Gould * Free name if we get it (ea77e8e) * Doc fix (4ffbe0b) * Autotools fixes (e5c3a1d) 2011-06-16 Javier Jardón * Trivial documentation fix (654b97f) 2011-06-15 Javier Jardón * configure.ac: Generate xz tarballs with pax format by default (b3466bd) * Update autotools configuration (7c0bf2d) 2011-03-23 Ken VanDine * releasing version 0.3.0-0ubuntu1 (b0772a8) (tag: 0.3.0-0ubuntu1) 2011-03-23 Ted Gould * releasing version 0.3.0-0ubuntu1~ppa1 (d536601) * New upstream release. * Don't use GIcon with GtkStatusIcon (LP: #708118) (2ad6b90) * Import upstream version 0.3.0 (010b25c) * Sync with U. Desktop (5b6331c) * 0.3.0 (0ed4513) (tag: 0.3.0) * Use icon-name instead of GIcon in the fallback GtkStatusIcon (8974a7f) * Set gtk_status_icon using icon_name instead of gicon (54b25e3) 2011-03-16 Ken VanDine * releasing version 0.2.99-0ubuntu1 (30a29c6) (tag: 0.2.99-0ubuntu1) 2011-03-16 Ted Gould * releasing version 0.2.99-0ubuntu1~ppa1 (0988693) * New upstream release. ∘ Fix long standing memory leak (LP: #569273) (8b323ea) * Import upstream version 0.2.99 (bf797a9) * Merge with U. Desktop (e1790a2) * 0.2.99 (f321aae) (tag: 0.2.99) 2011-03-14 Ted Gould * Doing a ref_sink() like we should have been doing! (dae2422) 2011-03-14 Michael Terry * sink ref to passed-in menu in set_menu() to avoid leaks (f2f415d) 2011-03-10 Ken VanDine * releasing version 0.2.98-0ubuntu1 (c50e0ff) (tag: 0.2.98-0ubuntu1) 2011-03-10 Ted Gould * releasing version 0.2.98-0ubuntu1~ppa1 (38951a7) * Merging with U. Desktop (4d82c5e) * New upstream release. ∘ Don't watch signals we don't need to. (LP: #728503) (d8f3bb3) * Import upstream version 0.2.98 (1f0b4c1) * 0.2.98 (0f9fc0f) (tag: 0.2.98) * Adding a TargetEnvironment to the desktop file (29f8630) 2011-03-09 Ted Gould * Don't watch signals we shouldn't need to. (d43f34b) 2011-03-08 Ted Gould * Attaching bug number (d679d3c) * Dropping the client_menu_changed function as dbusmenu should do this for us. (c156b45) 2011-03-03 Ken VanDine * releasing version 0.2.97-0ubuntu1 (007331a) (tag: 0.2.97-0ubuntu1) 2011-03-03 Ted Gould * releasing version 0.2.97-0ubuntu1~ppa1 (be0a541) * debian/patches: Removed, all upstream (3eb5a9d) * New upstream release. * Set includedir to the location of the headers provided by libappindicator-dev (LP: #721562) * Fix crash when importing appindicator from Python (LP: #724917). * Fix crash when switching themes by disconnecting a signal from the theme on dispose. LP: #708188 (15784db) * Import upstream version 0.2.97 (56d9374) * Merge from U. Desktop (70d5440) * 0.2.97 (4490e2e) (tag: 0.2.97) 2011-03-02 Ted Gould * Adding additional functions into Python bindings (4a277c7) * Fixing the pkgconfig file (b56c1fb) * Drop theme signal handler when shutting down. (d6e2549) 2011-02-28 Ken VanDine * releasing version 0.2.96-0ubuntu4 (fe59d57) (tag: 0.2.96-0ubuntu4) * Set the includedir for appindicator3-0.1 to ${includedir}/libappindicator-0.1 (6c5c047) 2011-02-28 Michael Terry * debian/patches/update-defs.patch: - Fix crash when importing appindicator from Python (LP: #724917). (8fd3730) (tag: 0.2.96-0ubuntu3) 2011-02-28 Артём Попов * Really add update-defs.patch (160c776) * debian/patches/update-defs.patch: - Fix crash when importing appindicator from Python (LP: #724917). (fdb740f) 2011-02-28 Michael Terry * debian/control, debian/rules: - Add quil. debian/patches/disconnect-from-theme.patch: - Fix crash when switching themes by disconnecting a signal from the theme on dispose. LP: #708188 (49874d3) (tag: 0.2.96-0ubuntu2) 2011-02-26 Артём Попов * Updated appindicator.defs (fixes LP: #724917) (8669272) 2011-02-25 Michael Terry * disconnect from icon theme on dispose (c591e81) 2011-02-24 Ken VanDine * releasing version 0.2.96-0ubuntu1 (5f97e91) (tag: 0.2.96-0ubuntu1) 2011-02-24 Ted Gould * releasing version 0.2.96-0ubuntu1~ppa1 (22fbdf6) * New upstream release. * Add support for accessible descriptions * Move deregistration of object later to send final signals (59d8e5d) * Import upstream version 0.2.96 (7a1564e) * Merging U. Desktop (dd6a451) * 0.2.96 (d634d56) (tag: 0.2.96) * Add the ability to set accessible descriptions for the icon and attention icon. (ce7b22d) 2011-02-23 Ted Gould * Cleaning up even more! (d21b676) * Switching to proper properties (eb2ba45) * Matching prototypes to C file (ccad277) * Fixing the sections list (13b9f33) * Dropping the accessible description tests. I don't have time to rewrite them now. They should be redone though. (f4470e6) * Switching to the new style of setting the a11y label (f4920ad) * Reconfigure properties to match. (e3ccf5f) * Fixing up the get functions (e5b4e41) * Fixing up the set functions so we get some descriptions. (7e03ead) * Switch around API so it makes sense for what we want to do. (4716fe0) * Dropping the new accessible description signal (021dd71) * Drop signaling the accessible description changed on it's own. (6335283) * Change the name of the accessible description and add the attention one. (5de3ea9) * Changing the signal to match what was discussed with the KDE folks (d63e2d0) 2011-02-23 unknown * Release libappindicator (3c0119b) 2011-02-22 unknown * debian/control: - Use new build-depends for libgtk-3-dev (8ee2307) 2011-02-17 Ken VanDine * releasing version 0.2.95-0ubuntu2 (eef1472) (tag: 0.2.95-0ubuntu2) 2011-02-16 Ted Gould * Remove registration of the object until after all possible signals are sent (abccdd7) 2011-02-14 Luke Yelavich * Merge from trunk (5824bcd) 2011-02-11 Michael Terry * don't unregister on dbus until after we hide appindicator (86d57d3) 2011-02-11 Ken VanDine * releasing version 0.2.95-0ubuntu1 (a83d65c) (tag: 0.2.95-0ubuntu1) * New upstream release (0.2.95); debian/rules - build and install the vapi for gtk3 (26b9521) 2011-02-10 Ted Gould * debian/rules: Not building libappindicator3-dev until we've got the GTK3 build all put together. (7695312) * debian/libappindicator-dev.install, debian/libappindicator3-dev.install: switching the file name of the vapi files. (d13c1f1) * New upstream release (0.2.95) ∘ Fixing build for GTK2/3 dual build (3d4fdfb) * Import upstream version 0.2.95 (596f48a) * 0.2.95 (1c384cd) (tag: 0.2.95) * Fix the build so we can distcheck with GTK 2 and 3 (4044f92) * Blocking the menu proxy from our test (4d24048) * Changing the build so that it uses the right version of the vala files and removes the predefined header location (889b2da) * Changing the install path of the headers for libappindicator GTK3 version so it's parrallel installable (61a686f) * Adjusting the name of the different namespace with GTK 3 (725a13e) * Ensure that we're building with the right library (2c30d69) * Cleanup what we create (b184209) * gtk-doc wants a deprecated section now (f5de6c3) * Removing the multiple modules as we shouldn't need them (3b78014) * Fixing scroll documentation (0c53b39) * Making sure to pick up both metadata files in dist. (99189aa) * New upstream release (0.2.93); New upstream release (0.2.94) ∘ Include vala example files as well (ac68d85) * Import upstream version 0.2.94 (2c23d4b) * 0.2.94 (e5b56ec) (tag: 0.2.94) * Make sure to pull the vala source file along with us. (cd7daed) * Syncing with upstream much better (acdd6c5) * Removing all the non packaging stuff (648cd92) * Getting closer to the tarball (4dfca04) * New upstream release. ∘ Fix Vala bindings ∘ Add support for scroll events (a9814d5) * Import upstream version 0.2.93 (18d8992) * Merge from U.Desktop (6def775) 2011-02-11 Luke Yelavich * Merge from trunk (b63c137) 2011-02-10 Ted Gould * 0.2.93 (23a4650) (tag: 0.2.93) * Ignoring new Vala stuff (409fc00) * Being more specific about the types of the signal (43c1ba2) * Fixing Vala bindings (2f8daac) * Ensuring we don't run the app as part of the test, just build it so this will work in automation. (e69e292) 2011-02-08 Ken VanDine * releasing version 0.2.92-0ubuntu2 (a9d343c) (tag: 0.2.92-0ubuntu2) * debian/control, debian/rules - Include new binaries for gtk3 builds; debian/libappindicator1.symbols, debian/libappindicator3-1.symbols - Added symbol files for libappindicator1 and libappdindicator3-1 (37a5403) * debian/libappindicator1.symbols, debian/libappindicator3-1.symbols (be01a9e) * Manually run dh_makeshlibs for libappindicator1 and libappindicator3-1 (b93c2b2) * fixup the clean target (ca3edb2) * more gtk3 build fixes (625332e) * gtk3 packaging fixes, still wip (d0ad1b8) * debian/control, debian/rules - Include new binaries for gtk3 builds - Added symbol files for libappindicator1 and libappdindicator3-1 (c790761) 2011-02-08 Luke Yelavich * accessible_name -> accessible_desc (fffab2e) 2011-02-05 Marco Trevisan (Treviño) * example makefile code cleanup (b4f20fe) * examples, vala: check for valac (d268d2b) 2011-02-04 Marco Trevisan (Treviño) * examples, added scroll-event demo. (d22edfa) * Merge against new trunk (675cec0) * Vala simple client, compile workaround improved. (1b85f7f) * simple-client-vala: indentation fixes (b9efa8f) * Examples, added simple-client-vala (89b31ab) 2011-02-04 Luke Yelavich * Merge from trunk (31519e7) * Add accessible_name support (b13fa49) 2011-02-04 Marco Trevisan (Treviño) * Always check if vapigen is available when building VAPI (32a1bf9) * Vala bindings: add metadata as build dependencies, support for gtk3 (6cc0ff8) * Include gir metadata file in built_sources (c58fd3f) 2011-02-03 Ted Gould * Merge from U.Desktop (df6a39d) * Merging in the upstream packaging branch (5851112) * Changing the build to be the check instead of running it as we might not be interactive. (692281a) 2011-02-03 Marco Trevisan (Treviño) * vala bindings makefile: just use deps file for dependencies (3f2a4ba) 2011-02-03 Ted Gould * Support the Scroll method for scroll whell support. (0faacd1) 2011-02-03 Marco Trevisan (Treviño) * Vala example, changed copyright year (2fea206) * Vala example: indentation fixes (99ffe88) * Vala example: adding copyright message. (bcbd870) * Adding vala bindings and example (7f49d7c) * Merge against new trunk (b5660e8) 2011-01-29 Marco Trevisan (Treviño) * Using the SNI method "Scroll" instead of XAyatanaScrollAction (0d97a5e) 2011-01-27 Ken VanDine * releasing version 0.2.92-0ubuntu1 (b7ad7ae) (tag: 0.2.92-0ubuntu1) * Import upstream version 0.2.92 (93d52e4) 2011-01-27 Ted Gould * releasing version 0.2.92-0ubuntu1~ppa1 (0ab2c93) * New upstream release. (9ba798d) * Import upstream version 0.2.92 (41981b1) * 0.2.92 (19c543f) (tag: 0.2.92) * Requiring a version of dbusmenu with a parser (3e812be) * releasing version 0.2.91.1-0ubuntu2~ppa1 (11add3f) * Upstream Merge * Fixes to build system to build with GTK3 * Use the dbusmenu parser (27ae7e2) * Sync to trunk (ceb50bd) * Switching to use the dbusmenu parser (a3548cc) 2011-01-27 Marco Trevisan (Treviño) * app-indicator: don't use two AppIndicator slots, reset one. (a71428d) * app-indicator: remove old debug code. (e18d298) * Updated mono bindings (eb8d8a3) * app-indicator: listen for XAyatanaScrollAction and emit "scroll-event" signal (52b2a29) 2011-01-25 Ted Gould * Fixups for GTK3 Build (30d75ca) * releasing version 0.2.91.1-0ubuntu2~ted1 (d0a0e2a) * Upstream Merge * Use the dbusmenu parser (625c881) * Updates from Ubuntu Desktop (83b9ba8) 2011-01-25 Ken VanDine * GTK3 fixes (c5195ae) * Fixed includedir, we don't ship separate headers for the gtk3 build (b7e634a) * Don't build python bindings for gtk3 (29ab06e) 2011-01-25 Ted Gould * Removing the parser that was here. (a8bbf19) * Rework the setup_dbusmenu function to use the dbusmenu parser. (331794c) 2011-01-13 Ken VanDine * releasing version 0.2.91.1-0ubuntu1 (62f943d) (tag: 0.2.91.1-0ubuntu1) * Import upstream version 0.2.91.1 (be00d00) * com.canonical rename (8cf0c2e) (tag: 0.2.91.1) 2011-01-13 Sebastien Bacher * releasing version 0.2.91-0ubuntu1 (db379ab) (tag: 0.2.91-0ubuntu1) 2011-01-13 Ken VanDine * Canonical.com conversion (cf693f9) 2011-01-13 Sebastien Bacher * Import upstream version 0.2.91 (79f9e4c) 2011-01-13 Ken VanDine * Merged (57fd55e) * merged; avoid nulls when crafting variants; use notdir in case make gives us full paths (0b26440) * Fix the pkgconfig name for dbusmenu-glib-0.4 (c2762f3) 2011-01-13 Michael Terry * aw shucks, do the required properties too, defensively (0e9f42a) * avoid nulls when crafting variants (05980b6) * use notdir in case make gives us full paths (b38d1d8) 2011-01-12 Ken VanDine * Fixed pkgconfig files to require dbusmenu-glib-0.4 (7c301f7) * Rebuild for libindicator2 (0092f8a) * Fix the pkgconfig name for dbusmenu-glib-0.4 (087e631) 2011-01-06 Ken VanDine * Merged changes from ~ubuntu-desktop package; Intial release. debian/rules - Changes to build targets to get it building multipass for python 2.6 and 2.7 (9d5b3b0) 2010-12-16 Ken VanDine * releasing version 0.2.90-0ubuntu4 (54c9e64) (tag: 0.2.90-0ubuntu4) 2010-12-10 Ken VanDine * releasing version 0.2.90+r175-0ubuntu1 (2437d4b) (tag: 0.2.90+r175-0ubuntu1) * debian/rules - Changes to build targets to get it building multipass for python 2.6 and 2.7 (29871df) 2010-12-09 Ken VanDine * releasing version 0.2.90-0ubuntu3 (6e9fee7) (tag: 0.2.90-0ubuntu3) 2010-12-08 Ted Gould * More lovin' from Ken. Moving the package order in the control file. (fdec9f2) 2010-12-08 Ken VanDine * move python-appindicator to the end (d4236cd) 2010-12-08 Ted Gould * Fix from Ken for the targets (5a1319d) 2010-12-08 Ken VanDine * fixed some targets for multipass builds (3fc08a0) 2010-12-08 Ted Gould * Intial release. (2706502) * Import upstream version 0.2.91 (67140a7) * Converting over to libappindicator with a dummy commit for merge upstream (86419fb) * 0.2.91 (6698a1a) (tag: 0.2.91) * Adding the dbus test as an expected failure as it's pretty fragile right now. Needs to be refactored when we switch to GDBus (a4e9c0e) * debian/control: Removing the indicator-application bin package. (2a0070a) * Autogen (f1ca6d3) * Upstream Merge * Removing service, lib only * Switching from dbus-glib to GDBus (36d0bc8) * Switching the library over to using GDBus (0d8a2c6) * Wrong directory for the GTK 3 header. Fixed. (5b8d8f9) * Merge from Ubuntu Desktop for dual builds (3acbfb5) 2010-12-08 Ken VanDine * debian/control - build depend on dbusmenu >= 0.3.90 (b917f6f) 2010-12-08 Ted Gould * Syncing back with trunk (0fee0e4) * Adding a test in the simple client for full icon path as people are using it now (6d73d54) * Merging the property stuff. (142f013) * Removing the service from the build (6e6356f) 2010-12-08 Ken VanDine * releasing version 0.2.90-0ubuntu2 (a227646) (tag: 0.2.90-0ubuntu2) 2010-12-08 Ted Gould * Ignoring the generated XML include files. (b35ed0d) * Changing the tarball we're ignoring (8c8512a) * Adding in some '_' so that the symbols don't get exported in the library. (41edd6b) * Switching around so that this test passes even if it's not perfect. (a977f31) * Drop the need and use of dbus-glib (2144d77) * Making sure we have more ref's on our callbacks. (7fae05b) * Adding a ref for creating the bus proxy. (52375e6) * Making sure to ref the object when doing the async callback. (b9d6690) * Adding a build for dbus-glib for tests so that we can pass them unmodified. (4a94c8c) * Dropping the 'MENU' property as we don't need it. (9530e69) * Cleaning up configure.ac (02fba60) 2010-12-08 Ken VanDine * releasing version 0.2.90-0ubuntu1 (1860f39) (tag: 0.2.90-0ubuntu1) * 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 * Switching to the new dbusmenu API (c7539b5) * 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-06 Ted Gould * Changing what we're checking with the watcher, now that it's persistant more of the time we need to not block if it exists. (05d072b) * Emitting the signals on DBus (4b46daa) * Returning real values for the dbus properties (985854c) * Killing the X signals as well (0d80d13) * Dropping all the 'x' properties in the object (a666e4b) * Putting some dummy code in the bus get property function. (1652577) * Switching the names of the generated files to stop automake from thinking it needs to build the XML files. (07aeca3) * Adding in the get_prop function so that things start linking (a92f870) * Switch from using the DBus proxy to using the owner change signal on the watcher proxy. (884367e) * Readjusting how the proxy is setup, called back, and the registration occurs. (6e078ce) * Blacklisting some new files (47a57eb) * Changing the connection to be a GDBus connection and making aquiring it async (6a4266b) * Switching the dbus object registration to us GDBus (c1f18c7) * Dropping the registration of the type of the object in the dbus-glib way (589bebb) * Building up the base inforation for the dbus interfaces as static globals (9287e20) * Entirely unsure why this makes things better, but well, it does. (f590403) * Changing to not use the dbus binding tool but to instead turn the XML files into pseudo-C (2209cb8) * No indicator directory without the service (d797092) * Dropping dbus-glib and checking for a GIO version (4d2b723) * Merging the remove service branch (0fc55bf) 2010-12-03 Ted Gould * Sync with remove service branch (240d1c9) * Sync with remove service (bbd727e) * Merging from trunk with the desktop convience function. (0f4c1ea) * Merging from trunk with the desktop convience function. (8bfcfe5) * Adding a convience function for building the items from a desktop file (fbf708e) * Merging in removing the service (5265f39) * Merging in removing of the service (2855f7d) * Merging in support for GTK3/2 dual build (5ffa185) * Updating to trunk with GTK3 support. (671666f) * Merging in changes to setup a dual build with GTK 3 (6145439) * Updating to trunk so that we get the GI fixes (b90242a) * Fixes to the GObject Introspection and Vala files (63f4725) 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 * Oops, someone has to bring dbus-shared.h into the tarball now (d2a48b2) * Migrating to the LIBRARY flags (03dbdec) * Dropping a lib that should have never been there! (185a2a9) * Changing more of the bulid directives over to be library based (dd21c70) * Removing the approver test and switching the build flags (f664f48) * Adding back in the support for generating marshallers (7123c74) * Dropping the service and indicator files (e1a62d3) * Removing the INDICATOR based compiler fun (1dc185e) * Adding a section for library dependents (34adf7b) * Removing data directory (e9a363f) * Changing the name to libappindicator in the base build files (2367242) * Promoting the LGPLv3 (f8e822f) 2010-11-11 Ted Gould * Documentation fixes for distcheck (c2e08e0) * Fleshing out a function to see if an invalid name results in no entries (aad1926) * Changing the ID to ensure we get different paths (ca62d8c) * Test fix for property test (fe00673) * Clearing the events before unrefing (178f821) * Filling out the activate function. (9bde70f) * Setup the menu as a dbusmenu if we build it (2d87c7a) * Switching to use the private variable for the shorties (5c687d9) * Adding shorties as a private variable (1d3ca65) * Switching to be dbusmenu based instead of GTK menu based (d089c38) * Adding a property for getting the dbusmenu server (5a29ece) * Set the property type correctly. (8b57d12) * Test setting the menu and verify it comes out (53d10c2) * Set and Get for the dbusmenu server property (00758f3) * Create a property for the dbusmenu server (1ec2b70) * Start to flesh out the nicks side of building the menu items (9f0ec1f) * Adding a dependency for the library on libindicator (8eb4f8e) 2010-11-09 Ted Gould * Add a menu item to use the local icon (40c2ed8) * Adding in an icon and passing it's path to the build (02e634b) 2010-11-08 Ted Gould * Merging in the lib-deps-fixes branch so that I can use those changes. (dd78c21) * Adding a test to check the number of items in the desktop file (52c7066) * Adding the srcdir to the build command line (2e1b353) * Adding a desktop file for testing (145fd40) * Adding in a couple of desktop tests (8d9b6e9) * Adding the profile in there (d2427bb) * Adding an API function to build the menu from a desktop file (de1ea7a) 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) (tag: 0.2.9-0ubuntu1) * 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) (tag: 0.2.8-0ubuntu1) 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) (tag: 0.2.7-0ubuntu1) 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) (tag: 0.2.6-0ubuntu1) 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) (tag: 0.2.5-0ubuntu1) 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) (tag: 0.2.4-0ubuntu1) 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) (tag: 0.2.3-0ubuntu2) 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) (tag: 0.2.3-0ubuntu1) 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) (tag: 0.2.2-0ubuntu1) 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) (tag: 0.2.1-0ubuntu1) 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) (tag: 0.2.0-0ubuntu2) 2010-06-07 Sebastien Bacher * releasing version 0.2.0-0ubuntu1 (0fb6915) (tag: 0.2.0-0ubuntu1) 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) (tag: 0.0.19-0ubuntu5) 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) (tag: 0.0.19-0ubuntu4) 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) (tag: 0.0.19-0ubuntu3) 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) (tag: 0.0.19-0ubuntu2) 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) (tag: 0.0.19-0ubuntu1) 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) libayatana-appindicator-0.5.93/cmake/FindGObjectIntrospection.cmake0000644000000000000000000000376514512163465022261 0ustar # - try to find gobject-introspection # # Once done this will define # # INTROSPECTION_FOUND - system has gobject-introspection # INTROSPECTION_SCANNER - the gobject-introspection scanner, g-ir-scanner # INTROSPECTION_COMPILER - the gobject-introspection compiler, g-ir-compiler # INTROSPECTION_GENERATE - the gobject-introspection generate, g-ir-generate # INTROSPECTION_GIRDIR # INTROSPECTION_TYPELIBDIR # INTROSPECTION_CFLAGS # INTROSPECTION_LIBS # # Copyright (C) 2010, Pino Toscano, # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. macro(_GIR_GET_PKGCONFIG_VAR _outvar _varname) execute_process( COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=${_varname} gobject-introspection-1.0 OUTPUT_VARIABLE _result RESULT_VARIABLE _null ) if (_null) else() string(REGEX REPLACE "[\r\n]" " " _result "${_result}") string(REGEX REPLACE " +$" "" _result "${_result}") separate_arguments(_result) set(${_outvar} ${_result} CACHE INTERNAL "") endif() endmacro(_GIR_GET_PKGCONFIG_VAR) find_package(PkgConfig) if(PKG_CONFIG_FOUND) if(PACKAGE_FIND_VERSION_COUNT GREATER 0) set(_gir_version_cmp ">=${PACKAGE_FIND_VERSION}") endif() pkg_check_modules(_pc_gir gobject-introspection-1.0${_gir_version_cmp}) if(_pc_gir_FOUND) set(INTROSPECTION_FOUND TRUE) _gir_get_pkgconfig_var(INTROSPECTION_SCANNER "g_ir_scanner") _gir_get_pkgconfig_var(INTROSPECTION_COMPILER "g_ir_compiler") _gir_get_pkgconfig_var(INTROSPECTION_GENERATE "g_ir_generate") _gir_get_pkgconfig_var(INTROSPECTION_GIRDIR "girdir") _gir_get_pkgconfig_var(INTROSPECTION_TYPELIBDIR "typelibdir") set(INTROSPECTION_CFLAGS "${_pc_gir_CFLAGS}") set(INTROSPECTION_LIBS "${_pc_gir_LIBS}") endif() endif() mark_as_advanced( INTROSPECTION_SCANNER INTROSPECTION_COMPILER INTROSPECTION_GENERATE INTROSPECTION_GIRDIR INTROSPECTION_TYPELIBDIR INTROSPECTION_CFLAGS INTROSPECTION_LIBS ) libayatana-appindicator-0.5.93/cmake/FindVala.cmake0000644000000000000000000000442214512163465017035 0ustar # - Find Vala # This module looks for valac. # This module defines the following values: # VALA_FOUND # VALA_COMPILER # VALA_VERSION # VAPI_GEN # VAPI_GEN_VERSION #============================================================================= # Copyright Přemysl Janouch 2011 # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY # OF SUCH DAMAGE. #============================================================================= find_program (VALA_COMPILER "valac") if (VALA_COMPILER) execute_process (COMMAND ${VALA_COMPILER} --version OUTPUT_VARIABLE VALA_VERSION) string (REGEX MATCH "[.0-9]+" VALA_VERSION "${VALA_VERSION}") endif (VALA_COMPILER) find_program (VAPI_GEN "vapigen") if (VAPI_GEN) execute_process (COMMAND ${VAPI_GEN} --version OUTPUT_VARIABLE VAPI_GEN_VERSION) string (REGEX MATCH "[.0-9]+" VAPI_GEN_VERSION "${VAPI_GEN_VERSION}") endif (VAPI_GEN) include (FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS (Vala REQUIRED_VARS VALA_COMPILER VERSION_VAR VALA_VERSION) mark_as_advanced (VALA_COMPILER VALA_VERSION VAPI_GEN) libayatana-appindicator-0.5.93/CMakeLists.txt0000644000000000000000000000676414512163465016042 0ustar cmake_minimum_required(VERSION 3.13) project(libayatana-appindicator C) if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) SET(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "..." FORCE) endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) # 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) option(ENABLE_GTKDOC "Enable building GTK documentation" OFF) option(ENABLE_BINDINGS_VALA "Enable Vala bindings (GTK+-3.0 and beyond only)" ON) option(ENABLE_BINDINGS_MONO "Enable Mono bindings" ON) if(ENABLE_COVERAGE) set(ENABLE_TESTS ON) set(CMAKE_BUILD_TYPE "Coverage") else() set(CMAKE_BUILD_TYPE "Release") endif() if(ENABLE_WERROR) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror") endif() # Check for prerequisites option(FLAVOUR_GTK2 "Build against GTK+-2.0" OFF) option(FLAVOUR_GTK3 "Build against GTK+-3.0" ON) if (FLAVOUR_GTK2) set (FLAVOUR_GTK3 OFF) endif() if (FLAVOUR_GTK3) set (FLAVOUR_GTK2 OFF) endif() set(DEPS glib-2.0>=2.58) if (FLAVOUR_GTK3) set(DEPS ${DEPS} ayatana-indicator3-0.4>=0.8.4 gtk+-3.0>=3.24 dbusmenu-gtk3-0.4 ) elseif (FLAVOUR_GTK2) set(DEPS ${DEPS} ayatana-indicator-0.4>=0.8.4 gtk+-2.0>=2.18 dbusmenu-gtk-0.4 ) endif() if(ENABLE_TESTS) set(DEPS ${DEPS} dbus-1>=1.12 dbus-glib-1>=0.82) endif() find_package(PkgConfig REQUIRED) pkg_check_modules(PROJECT_DEPS REQUIRED ${DEPS}) if (ENABLE_GTKDOC) find_program (GTKDOC "gtkdoc-scan") if (NOT GTKDOC) message(WARNING "Building the gtk-doc API documentation is enabled, but the gtkdoc-scan executable has not been found. Disabling API documentation building, although requested.") set (ENABLE_GTKDOC OFF) endif() endif() # Set global variables include(GNUInstallDirs) set(PROJECT_VERSION "0.5.90") set(PROJECT_NAME "libayatana-appindicator") if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") set(COMPILE_FLAGS "${COMPILE_FLAGS} -Weverything") set(COMPILE_FLAGS "${COMPILE_FLAGS} -Wno-c++98-compat -Wno-padded") set(COMPILE_FLAGS "${COMPILE_FLAGS} -Wno-documentation") else() set(COMPILE_FLAGS "${COMPILE_FLAGS} -Wall") endif() # Make everything add_subdirectory(src) add_subdirectory(bindings) if (ENABLE_GTKDOC) add_subdirectory(docs) endif() if (ENABLE_TESTS) include(CTest) enable_testing() add_subdirectory(tests) add_subdirectory(example) if(ENABLE_COVERAGE) find_package(CoverageReport) ENABLE_COVERAGE_REPORT(TARGETS "ayatana-appindicator3" TESTS "test-libappindicator" "test-libappindicator-dbus-client" "test-libappindicator-dbus-server" "test-libappindicator-status-client" "test-libappindicator-status-server" "test-libappindicator-fallback-item" "test-libappindicator-fallback-watcher" FILTER /usr/include ${CMAKE_BINARY_DIR}/*) endif() endif() # Display config info message(STATUS "Install prefix: ${CMAKE_INSTALL_PREFIX}") message(STATUS "GTK+-3.0 build: ${FLAVOUR_GTK3}") message(STATUS "GTK+-2.0 build: ${FLAVOUR_GTK2}") message(STATUS "Vala bindings: ${ENABLE_BINDINGS_VALA}") message(STATUS "Mono bindings: ${ENABLE_BINDINGS_MONO}") message(STATUS "Unit tests: ${ENABLE_TESTS}") message(STATUS "Build with -Werror: ${ENABLE_WERROR}") message(STATUS "API Documentation: ${ENABLE_GTKDOC}") libayatana-appindicator-0.5.93/cmake/UseGObjectIntrospection.cmake0000644000000000000000000000743714512163465022135 0ustar # Copyright (C) 2010, Pino Toscano, # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. include(ListOperations) macro(_gir_list_prefix _outvar _listvar _prefix) set(${_outvar}) foreach(_item IN LISTS ${_listvar}) list(APPEND ${_outvar} ${_prefix}${_item}) endforeach() endmacro(_gir_list_prefix) macro(gir_add_introspections introspections_girs) foreach(gir IN LISTS ${introspections_girs}) set(_gir_name "${gir}") ## Transform the gir filename to something which can reference through a variable ## without automake/make complaining, eg Gtk-2.0.gir -> Gtk_2_0_gir string(REPLACE "-" "_" _gir_name "${_gir_name}") string(REPLACE "." "_" _gir_name "${_gir_name}") # Namespace and Version is either fetched from the gir filename # or the _NAMESPACE/_VERSION variable combo set(_gir_namespace "${${_gir_name}_NAMESPACE}") if (_gir_namespace STREQUAL "") string(REGEX REPLACE "([^-]+)-.*" "\\1" _gir_namespace "${gir}") endif () set(_gir_version "${${_gir_name}_VERSION}") if (_gir_version STREQUAL "") string(REGEX REPLACE ".*-([^-]+).gir" "\\1" _gir_version "${gir}") endif () # _PROGRAM is an optional variable which needs it's own --program argument set(_gir_program "${${_gir_name}_PROGRAM}") if (NOT _gir_program STREQUAL "") set(_gir_program "--program=${_gir_program}") endif () # Variables which provides a list of things _gir_list_prefix(_gir_libraries ${_gir_name}_LIBS "--library=") _gir_list_prefix(_gir_packages ${_gir_name}_PACKAGES "--pkg=") _gir_list_prefix(_gir_includes ${_gir_name}_INCLUDES "--include=") _gir_list_prefix(_gir_export_packages ${_gir_name}_EXPORT_PACKAGES "--pkg-export=") # Reuse the LIBTOOL variable from by automake if it's set set(_gir_libtool "--no-libtool") add_custom_command( COMMAND ${INTROSPECTION_SCANNER} ${INTROSPECTION_SCANNER_ARGS} --namespace=${_gir_namespace} --nsversion=${_gir_version} ${_gir_libtool} ${_gir_program} ${_gir_libraries} ${_gir_packages} ${_gir_includes} ${_gir_export_packages} ${${_gir_name}_SCANNERFLAGS} ${${_gir_name}_CFLAGS} ${${_gir_name}_FILES} --output ${CMAKE_CURRENT_BINARY_DIR}/${gir} DEPENDS ${${_gir_name}_FILES} ${${_gir_name}_LIBS} OUTPUT ${gir} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} VERBATIM ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${gir} DESTINATION share/gir-1.0) string(REPLACE ".gir" ".typelib" _typelib "${gir}") add_custom_command( COMMAND ${INTROSPECTION_COMPILER} ${INTROSPECTION_COMPILER_ARGS} --includedir=. ${CMAKE_CURRENT_BINARY_DIR}/${gir} -o ${CMAKE_CURRENT_BINARY_DIR}/${_typelib} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${gir} OUTPUT ${_typelib} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${_typelib} DESTINATION ${CMAKE_INSTALL_LIBDIR}/girepository-1.0) add_custom_target(gir-${gir} ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${gir}) add_custom_target(gir-typelibs-${_typelib} ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_typelib}) endforeach() endmacro(gir_add_introspections) macro(gir_get_cflags _output) get_directory_property(_tmp_includes INCLUDE_DIRECTORIES) list_prefix(_includes _tmp_includes "-I") get_directory_property(_tmp_compile_definitions COMPILE_DEFINITIONS) list_prefix(_compile_definitions _tmp_compile_definitions "-D") set(${_output} ${_includes} ${_compile_definitions}) endmacro(gir_get_cflags) libayatana-appindicator-0.5.93/cmake/UseVala.cmake0000644000000000000000000002067414512163465016720 0ustar # - Precompilation of Vala/Genie source files into C sources # Makes use of the parallel build ability introduced in Vala 0.11. Derived # from a similar module by Jakob Westhoff and the original GNU Make rules. # Might be a bit oversimplified. # # This module defines three functions. The first one: # # vala_init (id # [DIRECTORY dir] - Output directory (binary dir by default) # [PACKAGES package...] - Package dependencies # [OPTIONS option...] - Extra valac options # [CUSTOM_VAPIS file...]) - Custom vapi files to include in the build # [DEPENDS targets...]) - Extra dependencies for code generation # # initializes a single precompilation unit using the given arguments. # You can put files into it via the following function: # # vala_add (id source.vala # [DEPENDS source...]) - Vala/Genie source or .vapi dependencies # # Finally retrieve paths for generated C files by calling: # # vala_finish (id # [SOURCES sources_var] - Input Vala/Genie sources # [OUTPUTS outputs_var] - Output C sources # [GENERATE_HEADER id.h - Generate id.h and id_internal.h # [GENERATE_VAPI id.vapi] - Generate a vapi file # [GENERATE_SYMBOLS id.def]]) - Generate a list of public symbols # #============================================================================= # Copyright Přemysl Janouch 2011 # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY # OF SUCH DAMAGE. #============================================================================= find_package (Vala 0.20 REQUIRED) include (CMakeParseArguments) function (vala_init id) set (_multi_value PACKAGES OPTIONS CUSTOM_VAPIS DEPENDS) cmake_parse_arguments (arg "" "DIRECTORY" "${_multi_value}" ${ARGN}) if (arg_DIRECTORY) set (directory ${arg_DIRECTORY}) if (NOT IS_DIRECTORY ${directory}) file (MAKE_DIRECTORY ${directory}) endif (NOT IS_DIRECTORY ${directory}) else (arg_DIRECTORY) set (directory ${CMAKE_CURRENT_BINARY_DIR}) endif (arg_DIRECTORY) set (pkg_opts) foreach (pkg ${arg_PACKAGES}) list (APPEND pkg_opts "--pkg=${pkg}") endforeach (pkg) set (VALA_${id}_DIR "${directory}" PARENT_SCOPE) set (VALA_${id}_ARGS ${pkg_opts} ${arg_OPTIONS} ${arg_CUSTOM_VAPIS} PARENT_SCOPE) set (VALA_${id}_DEPENDS ${arg_DEPENDS} PARENT_SCOPE) set (VALA_${id}_SOURCES "" PARENT_SCOPE) set (VALA_${id}_OUTPUTS "" PARENT_SCOPE) set (VALA_${id}_FAST_VAPI_FILES "" PARENT_SCOPE) set (VALA_${id}_FAST_VAPI_ARGS "" PARENT_SCOPE) endfunction (vala_init) function (vala_add id file) cmake_parse_arguments (arg "" "" "DEPENDS" ${ARGN}) if (NOT IS_ABSOLUTE "${file}") set (file "${CMAKE_CURRENT_SOURCE_DIR}/${file}") endif (NOT IS_ABSOLUTE "${file}") get_filename_component (output_name "${file}" NAME) get_filename_component (output_base "${file}" NAME_WE) set (output_base "${VALA_${id}_DIR}/${output_base}") # XXX: It would be best to have it working without touching the vapi # but it appears this cannot be done in CMake. add_custom_command (OUTPUT "${output_base}.vapi" COMMAND ${VALA_COMPILER} "${file}" "--fast-vapi=${output_base}.vapi" COMMAND ${CMAKE_COMMAND} -E touch "${output_base}.vapi" DEPENDS "${file}" COMMENT "Generating a fast vapi for ${output_name}" VERBATIM) set (vapi_opts) set (vapi_depends) foreach (vapi ${arg_DEPENDS}) if (NOT IS_ABSOLUTE "${vapi}") set (vapi "${VALA_${id}_DIR}/${vapi}.vapi") endif (NOT IS_ABSOLUTE "${vapi}") list (APPEND vapi_opts "--use-fast-vapi=${vapi}") list (APPEND vapi_depends "${vapi}") endforeach (vapi) add_custom_command (OUTPUT "${output_base}.c" COMMAND ${VALA_COMPILER} "${file}" -C ${vapi_opts} ${VALA_${id}_ARGS} COMMAND ${CMAKE_COMMAND} -E touch "${output_base}.c" DEPENDS "${file}" ${vapi_depends} ${VALA_${id}_DEPENDS} WORKING_DIRECTORY "${VALA_${id}_DIR}" COMMENT "Precompiling ${output_name}" VERBATIM) set (VALA_${id}_SOURCES ${VALA_${id}_SOURCES} "${file}" PARENT_SCOPE) set (VALA_${id}_OUTPUTS ${VALA_${id}_OUTPUTS} "${output_base}.c" PARENT_SCOPE) set (VALA_${id}_FAST_VAPI_FILES ${VALA_${id}_FAST_VAPI_FILES} "${output_base}.vapi" PARENT_SCOPE) set (VALA_${id}_FAST_VAPI_ARGS ${VALA_${id}_FAST_VAPI_ARGS} "--use-fast-vapi=${output_base}.vapi" PARENT_SCOPE) endfunction (vala_add) function (vala_finish id) set (_one_value SOURCES OUTPUTS GENERATE_VAPI GENERATE_HEADER GENERATE_SYMBOLS) cmake_parse_arguments (arg "" "${_one_value}" "" ${ARGN}) if (arg_SOURCES) set (${arg_SOURCES} ${VALA_${id}_SOURCES} PARENT_SCOPE) endif (arg_SOURCES) if (arg_OUTPUTS) set (${arg_OUTPUTS} ${VALA_${id}_OUTPUTS} PARENT_SCOPE) endif (arg_OUTPUTS) set (outputs) set (export_args) if (arg_GENERATE_VAPI) if (NOT IS_ABSOLUTE "${arg_GENERATE_VAPI}") set (arg_GENERATE_VAPI "${VALA_${id}_DIR}/${arg_GENERATE_VAPI}") endif (NOT IS_ABSOLUTE "${arg_GENERATE_VAPI}") list (APPEND outputs "${arg_GENERATE_VAPI}") list (APPEND export_args "--internal-vapi=${arg_GENERATE_VAPI}") if (NOT arg_GENERATE_HEADER) message (FATAL_ERROR "Header generation required for vapi") endif (NOT arg_GENERATE_HEADER) endif (arg_GENERATE_VAPI) if (arg_GENERATE_SYMBOLS) if (NOT IS_ABSOLUTE "${arg_GENERATE_SYMBOLS}") set (arg_GENERATE_SYMBOLS "${VALA_${id}_DIR}/${arg_GENERATE_SYMBOLS}") endif (NOT IS_ABSOLUTE "${arg_GENERATE_SYMBOLS}") list (APPEND outputs "${arg_GENERATE_SYMBOLS}") list (APPEND export_args "--symbols=${arg_GENERATE_SYMBOLS}") if (NOT arg_GENERATE_HEADER) message (FATAL_ERROR "Header generation required for symbols") endif (NOT arg_GENERATE_HEADER) endif (arg_GENERATE_SYMBOLS) if (arg_GENERATE_HEADER) if (NOT IS_ABSOLUTE "${arg_GENERATE_HEADER}") set (arg_GENERATE_HEADER "${VALA_${id}_DIR}/${arg_GENERATE_HEADER}") endif (NOT IS_ABSOLUTE "${arg_GENERATE_HEADER}") get_filename_component (header_path "${arg_GENERATE_HEADER}" PATH) get_filename_component (header_name "${arg_GENERATE_HEADER}" NAME_WE) set (header_base "${header_path}/${header_name}") get_filename_component (header_ext "${arg_GENERATE_HEADER}" EXT) list (APPEND outputs "${header_base}${header_ext}" "${header_base}_internal${header_ext}") list (APPEND export_args "--header=${header_base}${header_ext}" "--internal-header=${header_base}_internal${header_ext}") endif (arg_GENERATE_HEADER) if (outputs) add_custom_command (OUTPUT ${outputs} COMMAND ${VALA_COMPILER} -C ${VALA_${id}_ARGS} ${export_args} ${VALA_${id}_FAST_VAPI_ARGS} DEPENDS ${VALA_${id}_FAST_VAPI_FILES} COMMENT "Generating vapi/headers/symbols" VERBATIM) endif (outputs) endfunction (vala_finish id) function (vapi_gen id) set (_one_value LIBRARY INPUT) set (_multi_value PACKAGES) cmake_parse_arguments (arg "" "${_one_value}" "${_multi_value}" ${ARGN}) set(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${id}.vapi") if (arg_LIBRARY) set (OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${arg_LIBRARY}.vapi") endif (arg_LIBRARY) set("${id}_OUTPUT" ${OUTPUT} PARENT_SCOPE) set(PACKAGE_LIST) foreach(PACKAGE ${arg_PACKAGES}) list(APPEND PACKAGE_LIST "--pkg" ${PACKAGE}) endforeach() add_custom_command( OUTPUT ${OUTPUT} COMMAND ${VAPI_GEN} ${PACKAGE_LIST} --library=${arg_LIBRARY} ${arg_INPUT} DEPENDS ${arg_INPUT} VERBATIM ) add_custom_target(${id} ALL DEPENDS ${OUTPUT}) endfunction (vapi_gen id) libayatana-appindicator-0.5.93/COPYING0000644000000000000000000001672714512163465014335 0ustar GNU LESSER 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. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser 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 Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. libayatana-appindicator-0.5.93/COPYING.LGPL.2.10000644000000000000000000006363714512163465015373 0ustar GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, 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 this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), 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 distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser 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 Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "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 LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY 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 LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey 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 library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! libayatana-appindicator-0.5.93/docs/CMakeLists.txt0000644000000000000000000000003414512163465016752 0ustar add_subdirectory(reference) libayatana-appindicator-0.5.93/docs/reference/CMakeLists.txt0000644000000000000000000002554014512163465020721 0ustar if (FLAVOUR_GTK3) set (ayatana_appindicator_gtkver "ayatana-appindicator3") elseif (FLAVOUR_GTK2) set (ayatana_appindicator_gtkver "ayatana-appindicator") endif() # libayatana-appindicator-docs.sgml configure_file("${CMAKE_CURRENT_SOURCE_DIR}/libayatana-appindicator-docs.sgml.in" "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-docs.sgml" @ONLY) # version.xml configure_file("${CMAKE_CURRENT_SOURCE_DIR}/version.xml.in" "${CMAKE_CURRENT_BINARY_DIR}/version.xml" @ONLY) # libayatana-appindicator-decl.txt # libayatana-appindicator-decl-list.txt # libayatana-appindicator-overrides.txt # libayatana-appindicator-sections.txt find_program(GTKDOC_SCAN gtkdoc-scan) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-decl.txt" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-decl-list.txt" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-overrides.txt" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-sections.txt" DEPENDS "src" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${GTKDOC_SCAN} --ignore-headers="app-indicator-enum-types.h;application-service-appstore.h;application-service-client.h;application-service-lru-file.h;application-service-marshal.h;application-service-server.h;application-service-watcher.h;dbus-properties-client.h;dbus-properties-server.h;dbus-shared.h;generate-id.h;notification-item-client.h;notification-item-server.h;notification-watcher-client.h;notification-watcher-server.h" --module=libayatana-appindicator --source-dir="${CMAKE_SOURCE_DIR}/src" --source-dir="${CMAKE_BINARY_DIR}/src" ) # libayatana-appindicator.types add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.types" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-decl.txt" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-decl-list.txt" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-overrides.txt" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-sections.txt" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/libayatana-appindicator.types" "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.types" ) # scangobj.sh list(JOIN PROJECT_DEPS_INCLUDE_DIRS " -I" GTKDOC_SCANGOBJ_INCLUDE_DIRS) list(JOIN PROJECT_DEPS_LIBRARIES " -l" GTKDOC_SCANGOBJ_LIBRARIES) set (SCANGOBJ_AYATANA_APPINDICATOR "${ayatana_appindicator_gtkver}") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scangobj.sh.in" "${CMAKE_CURRENT_BINARY_DIR}/scangobj.sh") # libayatana-appindicator.actions # libayatana-appindicator.args # libayatana-appindicator.hierarchy # libayatana-appindicator.interfaces # libayatana-appindicator.prerequisites # libayatana-appindicator.signals add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.actions" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.args" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.hierarchy" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.interfaces" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.prerequisites" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.signals" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.types" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND sh scangobj.sh ) # gtkdocentities.ent file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/xml/gtkdocentities.ent" "") file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/xml/gtkdocentities.ent" "\n") file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/xml/gtkdocentities.ent" "\n") file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/xml/gtkdocentities.ent" "\n") file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/xml/gtkdocentities.ent" "\n") file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/xml/gtkdocentities.ent" "\n") file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/xml/gtkdocentities.ent" "\n") # libayatana-appindicator-undeclared.txt # libayatana-appindicator-undocumented.txt # libayatana-appindicator-unused.txt # xml/annotation-glossary.xml # xml/api-index-0.5.xml # xml/api-index-deprecated.xml # xml/api-index-full.xml # xml/app-indicator.xml # xml/libayatana-appindicator-doc.bottom # xml/libayatana-appindicator-doc.top # xml/object_index.sgml # xml/tree_index.sgml find_program(GTKDOC_MKDB gtkdoc-mkdb) list(JOIN PROJECT_DEPS_INCLUDE_DIRS ";-I" GTKDOC_SCANGOBJ_INCLUDE_DIRS) list(JOIN PROJECT_DEPS_LIBRARIES ";-l" GTKDOC_SCANGOBJ_LIBRARIES) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-undeclared.txt" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-undocumented.txt" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-unused.txt" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/annotation-glossary.xml" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/api-index-0.5.xml" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/api-index-deprecated.xml" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/api-index-full.xml" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/app-indicator.xml" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/libayatana-appindicator-doc.bottom" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/libayatana-appindicator-doc.top" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/object_index.sgml" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xml/tree_index.sgml" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.actions" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.args" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.hierarchy" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.interfaces" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.prerequisites" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator.signals" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${GTKDOC_MKDB} --module=libayatana-appindicator --output-format=xml --expand-content-files="" --main-sgml-file=libayatana-appindicator-docs.sgml --source-dir="${CMAKE_SOURCE_DIR}/src" --sgml-mode ) # html file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html") # html/annotation-glossary.html # html/api-index-0-5.html # html/api-index-deprecated.html # html/api-index-full.html # html/AppIndicator.html # html/ch01.html # html/home.png # html/index.html # html/left.png # html/left-insensitive.png # html/libayatana-appindicator.devhelp2 # html/object-tree.html # html/right.png # html/right-insensitive.png # html/style.css # html/up.png # html/up-insensitive.png find_program(GTKDOC_MKHTML gtkdoc-mkhtml) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/annotation-glossary.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/api-index-0-5.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/api-index-deprecated.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/api-index-full.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/AppIndicator.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/ch01.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/home.png" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/index.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/left.png" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/left-insensitive.png" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/libayatana-appindicator.devhelp2" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/object-tree.html" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/right.png" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/right-insensitive.png" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/style.css" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/up.png" OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html/up-insensitive.png" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-undeclared.txt" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-undocumented.txt" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libayatana-appindicator-unused.txt" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/annotation-glossary.xml" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/api-index-0.5.xml" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/api-index-deprecated.xml" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/api-index-full.xml" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/app-indicator.xml" "xml/libayatana-appindicator-doc.bottom" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/libayatana-appindicator-doc.top" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/object_index.sgml" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/xml/tree_index.sgml" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html" COMMAND ${GTKDOC_MKHTML} --path=${CMAKE_CURRENT_BINARY_DIR} libayatana-appindicator libayatana-appindicator-docs.sgml ) # html/annotation-glossary.html # html/api-index-0-5.html # html/api-index-deprecated.html # html/api-index-full.html # html/AppIndicator.html # html/ch01.html # html/index.html # html/object-tree.html # html/style.css find_program(GTKDOC_FIXXREF gtkdoc-fixxref) add_custom_command( OUTPUT "fixxref" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/annotation-glossary.html" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/api-index-0-5.html" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/api-index-deprecated.html" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/api-index-full.html" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/AppIndicator.html" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/ch01.html" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/home.png" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/index.html" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/left.png" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/left-insensitive.png" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/libayatana-appindicator.devhelp2" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/object-tree.html" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/right.png" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/right-insensitive.png" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/style.css" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/up.png" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html/up-insensitive.png" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${GTKDOC_FIXXREF} --module=libayatana-appindicator --module-dir=html --html-dir="${CMAKE_INSTALL_FULL_DATADIR}/gtk-doc/html" ) set_source_files_properties("fixxref" PROPERTIES SYMBOLIC True) install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html/" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/gtk-doc/html/lib${ayatana_appindicator_gtkver}") add_custom_target("docs-references" ALL DEPENDS "fixxref") libayatana-appindicator-0.5.93/docs/reference/libayatana-appindicator-docs.sgml.in0000644000000000000000000000233414512163465025154 0ustar ]> libayatana-appindicator Reference Manual for libayatana-appindicator @PROJECT_VERSION@ Base Classes for Applications Object Hierarchy API Index API 0.5 Index Deprecated API Index libayatana-appindicator-0.5.93/docs/reference/libayatana-appindicator-overrides.txt0000644000000000000000000000000014512163465025462 0ustar libayatana-appindicator-0.5.93/docs/reference/libayatana-appindicator-sections.txt0000644000000000000000000000254714512163465025331 0ustar
app-indicator APP_INDICATOR_TYPE APP_INDICATOR APP_INDICATOR_CLASS IS_APP_INDICATOR IS_APP_INDICATOR_CLASS APP_INDICATOR_GET_CLASS APP_INDICATOR_SIGNAL_NEW_ICON APP_INDICATOR_SIGNAL_NEW_ATTENTION_ICON APP_INDICATOR_SIGNAL_NEW_STATUS APP_INDICATOR_SIGNAL_NEW_LABEL APP_INDICATOR_SIGNAL_NEW_ICON_THEME_PATH APP_INDICATOR_SIGNAL_CONNECTION_CHANGED APP_INDICATOR_SIGNAL_SCROLL_EVENT AppIndicatorCategory AppIndicatorStatus AppIndicatorPrivate Ayatana AppIndicator AppIndicator AppIndicatorClass app_indicator_get_type app_indicator_new app_indicator_new_with_path app_indicator_set_status app_indicator_set_attention_icon app_indicator_set_attention_icon_full app_indicator_set_menu app_indicator_set_icon app_indicator_set_icon_full app_indicator_set_icon_theme_path app_indicator_set_label app_indicator_set_ordering_index app_indicator_set_secondary_activate_target app_indicator_set_title app_indicator_get_id app_indicator_get_category app_indicator_get_status app_indicator_get_icon app_indicator_get_icon_desc app_indicator_get_icon_theme_path app_indicator_get_attention_icon app_indicator_get_attention_icon_desc app_indicator_get_menu app_indicator_get_label app_indicator_get_label_guide app_indicator_get_ordering_index app_indicator_get_secondary_activate_target app_indicator_get_title app_indicator_build_menu_from_desktop
libayatana-appindicator-0.5.93/docs/reference/libayatana-appindicator.types0000644000000000000000000000002714512163465024020 0ustar app_indicator_get_type libayatana-appindicator-0.5.93/docs/reference/scangobj.sh.in0000644000000000000000000000045214512163465020703 0ustar LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${CMAKE_BINARY_DIR}/src" CFLAGS="-I${GTKDOC_SCANGOBJ_INCLUDE_DIRS}" LDFLAGS="-l${GTKDOC_SCANGOBJ_LIBRARIES} -L${CMAKE_BINARY_DIR}/src -l${SCANGOBJ_AYATANA_APPINDICATOR}" gtkdoc-scangobj --type-init-func="g_type_init()" --module=libayatana-appindicator > /dev/null libayatana-appindicator-0.5.93/docs/reference/version.xml.in0000644000000000000000000000002214512163465020761 0ustar @PROJECT_VERSION@ libayatana-appindicator-0.5.93/example/CMakeLists.txt0000644000000000000000000000431214512163465017460 0ustar if (FLAVOUR_GTK3) set (ayatana_appindicator_gtkver "ayatana-appindicator3") set (gtk_valapkgver "gtk+-3.0") elseif (FLAVOUR_GTK2) set (ayatana_appindicator_gtkver "ayatana-appindicator") set (gtk_valapkgver "gtk+-2.0") endif() # simple-client-vala.c # Vala bindings are only available for FLAVOUR_GTK3 if (FLAVOUR_GTK3) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/simple-client-vala.c" DEPENDS "bindings-vala" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${VALA_COMPILER} --pkg ${ayatana_appindicator_gtkver}-0.1 --pkg ${gtk_valapkgver} --vapidir=${CMAKE_BINARY_DIR}/bindings/vala -C simple-client-vala.vala --directory=${CMAKE_CURRENT_BINARY_DIR} VERBATIM COMMAND sed -i "s|#include\\s*<\\s*libayatana-appindicator/app-indicator.h\\s*>||g" "${CMAKE_CURRENT_BINARY_DIR}/simple-client-vala.c" ) # simple-client-vala set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/simple-client-vala.c" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} -include ${CMAKE_SOURCE_DIR}/src/app-indicator.h") add_executable("simple-client-vala" "${CMAKE_CURRENT_BINARY_DIR}/simple-client-vala.c") target_include_directories("simple-client-vala" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS}) target_link_libraries("simple-client-vala" "${PROJECT_DEPS_LIBRARIES} -l${ayatana_appindicator_gtkver} -L${CMAKE_BINARY_DIR}/src") add_dependencies("simple-client-vala" "${ayatana_appindicator_gtkver}") endif() # simple-client set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/simple-client.c" PROPERTIES COMPILE_FLAGS ${COMPILE_FLAGS}) add_executable("simple-client" "${CMAKE_CURRENT_SOURCE_DIR}/simple-client.c") target_compile_definitions("simple-client" PUBLIC LOCAL_ICON="${CMAKE_CURRENT_SOURCE_DIR}/simple-client-test-icon.png") target_include_directories("simple-client" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS}) target_include_directories("simple-client" PUBLIC "${CMAKE_SOURCE_DIR}/src") target_link_libraries("simple-client" "${PROJECT_DEPS_LIBRARIES} -l${ayatana_appindicator_gtkver} -L${CMAKE_BINARY_DIR}/src") add_dependencies("simple-client" "${ayatana_appindicator_gtkver}") libayatana-appindicator-0.5.93/example/simple-client.c0000644000000000000000000001625514512163465017642 0ustar /* A small piece of sample code demonstrating a very simple application with an indicator. 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 "app-indicator.h" #include "libdbusmenu-glib/server.h" #include "libdbusmenu-glib/menuitem.h" GMainLoop * mainloop = NULL; static gboolean active = TRUE; static gboolean can_haz_label = TRUE; static void label_toggle_cb (GtkWidget * widget, gpointer data) { can_haz_label = !can_haz_label; if (can_haz_label) { gtk_menu_item_set_label(GTK_MENU_ITEM(widget), "Hide label"); } else { gtk_menu_item_set_label(GTK_MENU_ITEM(widget), "Show label"); } return; } static void activate_clicked_cb (GtkWidget *widget, gpointer data) { AppIndicator * ci = APP_INDICATOR(data); if (active) { app_indicator_set_status (ci, APP_INDICATOR_STATUS_ATTENTION); gtk_menu_item_set_label(GTK_MENU_ITEM(widget), "I'm okay now"); active = FALSE; } else { app_indicator_set_status (ci, APP_INDICATOR_STATUS_ACTIVE); gtk_menu_item_set_label(GTK_MENU_ITEM(widget), "Get Attention"); active = TRUE; } } static void local_icon_toggle_cb (GtkWidget *widget, gpointer data) { AppIndicator * ci = APP_INDICATOR(data); if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) { app_indicator_set_icon_full(ci, LOCAL_ICON, "Local Icon"); } else { app_indicator_set_icon_full(ci, "indicator-messages", "System Icon"); } return; } static void item_clicked_cb (GtkWidget *widget, gpointer data) { const gchar *text = (const gchar *)data; g_print ("%s clicked!\n", text); } static void toggle_sensitivity_cb (GtkWidget *widget, gpointer data) { GtkWidget *target = (GtkWidget *)data; gtk_widget_set_sensitive (target, !gtk_widget_is_sensitive (target)); } static void image_clicked_cb (GtkWidget *widget, gpointer data) { gtk_image_set_from_stock (GTK_IMAGE (gtk_image_menu_item_get_image ( GTK_IMAGE_MENU_ITEM (widget))), GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU); } static void scroll_event_cb (AppIndicator * ci, gint delta, guint direction, gpointer data) { g_print("Got scroll event! delta: %d, direction: %d\n", delta, direction); } static void append_submenu (GtkWidget *item) { GtkWidget *menu; GtkWidget *mi; GtkWidget *prev_mi; menu = gtk_menu_new (); mi = gtk_menu_item_new_with_label ("Sub 1"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi); g_signal_connect (mi, "activate", G_CALLBACK (item_clicked_cb), "Sub 1"); prev_mi = mi; mi = gtk_menu_item_new_with_label ("Sub 2"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi); g_signal_connect (mi, "activate", G_CALLBACK (toggle_sensitivity_cb), prev_mi); mi = gtk_menu_item_new_with_label ("Sub 3"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi); g_signal_connect (mi, "activate", G_CALLBACK (item_clicked_cb), "Sub 3"); gtk_widget_show_all (menu); gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu); } guint percentage = 0; static gboolean percent_change (gpointer user_data) { percentage = (percentage + 1) % 100; if (can_haz_label) { gchar * percentstr = g_strdup_printf("%d%%", percentage + 1); app_indicator_set_label (APP_INDICATOR(user_data), percentstr, "100%"); g_free(percentstr); } else { app_indicator_set_label (APP_INDICATOR(user_data), NULL, NULL); } return TRUE; } int main (int argc, char ** argv) { GtkWidget *menu = NULL; AppIndicator *ci = NULL; gtk_init (&argc, &argv); ci = app_indicator_new ("example-simple-client", "indicator-messages", APP_INDICATOR_CATEGORY_APPLICATION_STATUS); g_assert (IS_APP_INDICATOR (ci)); g_assert (G_IS_OBJECT (ci)); app_indicator_set_status (ci, APP_INDICATOR_STATUS_ACTIVE); app_indicator_set_attention_icon_full(ci, "indicator-messages-new", "System Messages Icon Highlighted"); app_indicator_set_label (ci, "1%", "100%"); app_indicator_set_title (ci, "Test Inidcator"); g_signal_connect (ci, "scroll-event", G_CALLBACK (scroll_event_cb), NULL); g_timeout_add_seconds(1, percent_change, ci); menu = gtk_menu_new (); GtkWidget *item = gtk_check_menu_item_new_with_label ("1"); g_signal_connect (item, "activate", G_CALLBACK (item_clicked_cb), "1"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); gtk_widget_show (item); item = gtk_radio_menu_item_new_with_label (NULL, "2"); g_signal_connect (item, "activate", G_CALLBACK (item_clicked_cb), "2"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); gtk_widget_show (item); item = gtk_menu_item_new_with_label ("3"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); append_submenu (item); gtk_widget_show (item); GtkWidget *toggle_item = gtk_menu_item_new_with_label ("Toggle 3"); g_signal_connect (toggle_item, "activate", G_CALLBACK (toggle_sensitivity_cb), item); gtk_menu_shell_append (GTK_MENU_SHELL (menu), toggle_item); gtk_widget_show(toggle_item); item = gtk_image_menu_item_new_from_stock (GTK_STOCK_NEW, NULL); g_signal_connect (item, "activate", G_CALLBACK (image_clicked_cb), NULL); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); gtk_widget_show(item); item = gtk_menu_item_new_with_label ("Get Attention"); g_signal_connect (item, "activate", G_CALLBACK (activate_clicked_cb), ci); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); gtk_widget_show(item); app_indicator_set_secondary_activate_target(ci, item); item = gtk_menu_item_new_with_label ("Show label"); label_toggle_cb(item, ci); g_signal_connect (item, "activate", G_CALLBACK (label_toggle_cb), ci); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); gtk_widget_show(item); item = gtk_check_menu_item_new_with_label ("Set Local Icon"); g_signal_connect (item, "activate", G_CALLBACK (local_icon_toggle_cb), ci); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); gtk_widget_show(item); app_indicator_set_menu (ci, GTK_MENU (menu)); mainloop = g_main_loop_new(NULL, FALSE); g_main_loop_run(mainloop); return 0; } libayatana-appindicator-0.5.93/example/simple-client-test-icon.png0000644000000000000000000000635614512163465022110 0ustar PNG  IHDR$$nbsRGB pHYs  tIME ,IOztEXtCommentCreated with GIMPW [IDATHuWY\Y>ݪn^ܫێ1 8b|_'.w/>*bH(c7~s !DA! omx3zB0Q䦦'3)"-JBHIW!AEÊѢD5ѳ )RJ `5 +ZܩrBQrpO=u}rsc7X0üVGi C"L#tbaga}˲  ϗB-W>p JoCPWBa hx&z, zA~v~꩟S!h4:q*2>QY(X "c'>oQș\Plg1| gN[ZZ4탭ǵ MOOXQT*p`jQ7=t:Bb !~ ݮJz>;7c&t-B0E;w6\QH$1.JZ1R|A.3Msaa!L:)뺍Fc0LLLPJ޽j25w/pܨ}669=MbhfLNwjQef6@;p]vE)MӃݻL4MuvVqױ'ڇˑI-x.D)}W*۷oW j-RM w:rk] *c]qNC.tA;pz!´Zr|pp0L"H%5u-dX\YYRf~# U[:BnY f #T4MӔ҃K.;(3 HqLZ% bP(?́zxC΄᱙ CwMMM (sk5h*d4f C<|<7 瞻p7okj`D`A TCqUe0b ru\ce6&PIL5B1ڽF>ąx<>H11_r} H E .UH)DBG?iMv8f]o>lfzfjr]7J-,,՟}Kz!\  q5Jŋ(j]-0–ɮ݌΋1,a.~^ӉFT*Hǎ] `R C J-FCCι#l۶(ҡ3ƄryeYBT*H$!eD"u1TaZ0$AwBd(cRNghօBa{{󼹹e4GFF\t:/_j(Pt̙p!U1<6vS3:BP(< Q(J&!rvbSN<MGUQq6{l( uaΩl6+LVU,٬iV*n+h4t:ɔJl6dDZpQH"ݤIU1Q"aW&T7M&j5s766ݮt:B)RA)W^aiO>˯آ.L؍@C_=!*3r\6-ˎ$c.D"D"a6TuB뺜shB @p BsI5844::cH,*vXEuCk6Mܹs ͈2٣W1EdztgXBث_;{0Rd2 !?߾/..D"vuuU(N.uTÜMAdIENDB`libayatana-appindicator-0.5.93/example/simple-client-vala.vala0000644000000000000000000001103214512163465021250 0ustar /* A small piece of sample code demonstrating a very simple application with an indicator. Copyright 2011 Canonical Ltd. Authors: Marco Trevisan 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 . */ using Gtk; using AppIndicator; static int main(string[] args) { var sc = new SimpleClient(args); sc.run(); return 0; } class SimpleClient { Gtk.Menu menu; Indicator ci; int percentage; bool active; bool can_haz_label; public SimpleClient(string[] args) { Gtk.init(ref args); ci = new Indicator("example-simple-client", "indicator-messages", IndicatorCategory.APPLICATION_STATUS); ci.set_status(IndicatorStatus.ACTIVE); ci.set_attention_icon("indicator-messages-new"); ci.set_label("1%", "100%"); ci.set_title("Test Indicator (vala)"); active = true; can_haz_label = true; } private void toggle_sensitivity(Widget widget) { widget.set_sensitive(!widget.is_sensitive()); } private void append_submenu(Gtk.MenuItem item) { var menu = new Gtk.Menu(); Gtk.MenuItem mi; mi = new Gtk.MenuItem.with_label("Sub 1"); menu.append(mi); mi.activate.connect(() => { print("Sub1\n"); }); Gtk.MenuItem prev_mi = mi; mi = new Gtk.MenuItem.with_label("Sub 2"); menu.append(mi); mi.activate.connect(() => { toggle_sensitivity(prev_mi); }); mi = new Gtk.MenuItem.with_label("Sub 3"); menu.append(mi); mi.activate.connect(() => { print("Sub3\n"); }); mi = new Gtk.MenuItem.with_label("Toggle Attention"); menu.append(mi); mi.activate.connect(() => { if (ci.get_status() == IndicatorStatus.ATTENTION) ci.set_status(IndicatorStatus.ACTIVE); else ci.set_status(IndicatorStatus.ATTENTION); }); ci.set_secondary_activate_target(mi); menu.show_all(); item.set_submenu(menu); } private void label_toggle(Gtk.MenuItem item) { can_haz_label = !can_haz_label; if (can_haz_label) { item.set_label("Hide label"); } else { item.set_label("Show label"); } } public void run() { ci.scroll_event.connect((delta, direction) => { print(@"Got scroll event! delta: $delta, direction: $direction\n"); }); GLib.Timeout.add_seconds(1, () => { percentage = (percentage + 1) % 100; if (can_haz_label) { ci.set_label(@"$(percentage+1)%", ""); } else { ci.set_label("", ""); } return true; }); menu = new Gtk.Menu(); var chk = new CheckMenuItem.with_label("1"); chk.activate.connect(() => { print("1\n"); }); menu.append(chk); chk.show(); var radio = new Gtk.RadioMenuItem.with_label(new SList(), "2"); radio.activate.connect(() => { print("2\n"); }); menu.append(radio); radio.show(); var submenu = new Gtk.MenuItem.with_label("3"); menu.append(submenu); append_submenu(submenu); submenu.show(); var toggle_item = new Gtk.MenuItem.with_label("Toggle 3"); toggle_item.activate.connect(() => { toggle_sensitivity(submenu); }); menu.append(toggle_item); toggle_item.show(); var imgitem = new Gtk.ImageMenuItem.from_stock(Stock.NEW, null); imgitem.activate.connect(() => { Image img = (Image) imgitem.get_image(); img.set_from_stock(Stock.OPEN, IconSize.MENU); }); menu.append(imgitem); imgitem.show(); var att = new Gtk.MenuItem.with_label("Get Attention"); att.activate.connect(() => { if (active) { ci.set_status(IndicatorStatus.ATTENTION); att.set_label("I'm okay now"); active = false; } else { ci.set_status(IndicatorStatus.ACTIVE); att.set_label("Get Attention"); active = false; } }); menu.append(att); att.show(); var show = new Gtk.MenuItem.with_label("Show Label"); label_toggle(show); show.activate.connect(() => { label_toggle(show); }); menu.append(show); show.show(); var icon = new Gtk.CheckMenuItem.with_label("Set Local Icon"); icon.activate.connect(() => { if (icon.get_active()) { ci.set_icon("simple-client-test-icon.png"); } else { ci.set_icon("indicator-messages"); } }); menu.append(icon); icon.show(); ci.set_menu(menu); Gtk.main(); } } libayatana-appindicator-0.5.93/NEWS0000644000000000000000000000356014512163465013770 0ustar Overview of changes in libayatana-appindicator 0.5.90 - Mono bindings: Change namespace from ayatana-appindicator-sharp3 to ayatana-appindicator3-sharp (and similar). - Port to CMake. - Default to GTK+-3.0 as default build flavour. - Add Travis CI configuration. - Add --keep-env option to dbus-test-runner calls. Allows propagating e.g. a build HOME into the DBus test environment. Overview of changes in libayatana-appindicator 0.5.5 - Drop Python2 support. Overview of changes in libayatana-appindicator 0.5.4 - Drop deprecated g_type_class_add_private Glib-2.0 API calls. Overview of changes in libayatana-appindicator 0.5.3 - src/app-indicator.c: Type cast assignments from g_object_ref(). - Drop distcheck features Overview of changes in libayatana-appindicator 0.5.2 - python2 bindings: Finally avoid implicit declaration for (_ayatana)_appindicator_add_constants() function symbol. - API documentation: Suppress some warnings being thrown. - src/app-indicator.c: Avoid usage of PATH_MAX macro. Fixes FTBFS on Debian GNU/Hurd. - bindings/mono/Makefile.am: Don't run tests on all targets, only on check target. Fixes FTBFS when built parallely. - bindings/python: Yet another 'ayatana' namespace fix for the Python2 bindings. Overview of changes in libayatana-appindicator 0.5.1 - Python2 bindings: Fix import ayatana_appindicator failure by correctly adding the ayatana namespace. - docs/reference/Makefile.am: Drop option --nogtkinit from SCANGOBJ_OPTIONS. - AppIndicator: fix icon and theme paths when running in $SNAP environment. - Handle watcher service appearing and disappearing. - Make test-simple-app really working. - src/dbus-shared.h: Fix copy+paste flaw for INDICATOR_APPLICATION_DBUS_OBJ. Overview of changes in libayatana-appindicator 0.5.0 - Fork from Ubuntu's libappindicator project. libayatana-appindicator-0.5.93/README0000644000000000000000000000072614512163465014152 0ustar # Ayatana Application Indicators (Shared Library) # A library to allow applications to export a menu into the an Application Indicators aware menu bar. Based on KSNI it also works in KDE and will fallback to generic Systray support if none of those are available. This code project was originally started by Canonical Ltd. and has been adapted by various authors with the purpose of making this Application Indicators available on Ubuntu and non-Ubuntu systems alike. libayatana-appindicator-0.5.93/src/app-indicator.c0000644000000000000000000025261414512163465016764 0ustar /* An object to represent the application as an application indicator in the system panel. Copyright 2009 Canonical Ltd. Authors: Ted Gould Cody Russell 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 */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #define _GNU_SOURCE #include #include #include #include #include #include #include #include "app-indicator.h" #include "app-indicator-enum-types.h" #include "application-service-marshal.h" #include "gen-notification-watcher.xml.h" #include "gen-notification-item.xml.h" #include "dbus-shared.h" #include "generate-id.h" #define PANEL_ICON_SUFFIX "panel" /** * AppIndicatorPrivate: * @id: The ID of the indicator. Maps to AppIndicator:id. * @category: Which category the indicator is. Maps to AppIndicator:category. * @status: The status of the indicator. Maps to AppIndicator:status. * @icon_name: The name of the icon to use. Maps to AppIndicator:icon-name. * @attention_icon_name: The name of the attention icon to use. Maps to AppIndicator:attention-icon-name. * @menu: The menu for this indicator. Maps to AppIndicator:menu * @watcher_proxy: The proxy connection to the watcher we're connected to. If we're not connected to one this will be %NULL. * * All of the private data in an instance of an application indicator. * */ typedef struct { /*< Private >*/ /* Properties */ gchar *id; gchar *clean_id; AppIndicatorCategory category; AppIndicatorStatus status; gchar *icon_name; gchar *absolute_icon_name; gchar *attention_icon_name; gchar *absolute_attention_icon_name; gchar *icon_theme_path; gchar *absolute_icon_theme_path; DbusmenuServer *menuservice; GtkWidget *menu; GtkWidget *sec_activate_target; gboolean sec_activate_enabled; guint32 ordering_index; gchar * title; gchar * label; gchar * label_guide; gchar * accessible_desc; gchar * att_accessible_desc; guint label_change_idle; GtkStatusIcon * status_icon; gint fallback_timer; /* Fun stuff */ GDBusConnection *connection; guint dbus_registration; gchar * path; /* StatusNotifierWatcher */ GDBusProxy *watcher_proxy; guint watcher_id; /* Might be used */ IndicatorDesktopShortcuts * shorties; } AppIndicatorPrivate; /* Signals Stuff */ enum { NEW_ICON, NEW_ATTENTION_ICON, NEW_STATUS, NEW_LABEL, CONNECTION_CHANGED, NEW_ICON_THEME_PATH, SCROLL_EVENT, LAST_SIGNAL }; static guint signals[LAST_SIGNAL] = { 0 }; /* Enum for the properties so that they can be quickly found and looked up. */ enum { PROP_0, PROP_ID, PROP_CATEGORY, PROP_STATUS, PROP_ICON_NAME, PROP_ICON_DESC, PROP_ATTENTION_ICON_NAME, PROP_ATTENTION_ICON_DESC, PROP_ICON_THEME_PATH, PROP_CONNECTED, PROP_LABEL, PROP_LABEL_GUIDE, PROP_ORDERING_INDEX, PROP_DBUS_MENU_SERVER, PROP_TITLE }; /* The strings so that they can be slowly looked up. */ #define PROP_ID_S "id" #define PROP_CATEGORY_S "category" #define PROP_STATUS_S "status" #define PROP_ICON_NAME_S "icon-name" #define PROP_ICON_DESC_S "icon-desc" #define PROP_ATTENTION_ICON_NAME_S "attention-icon-name" #define PROP_ATTENTION_ICON_DESC_S "attention-icon-desc" #define PROP_ICON_THEME_PATH_S "icon-theme-path" #define PROP_CONNECTED_S "connected" #define PROP_LABEL_S "label" #define PROP_LABEL_GUIDE_S "label-guide" #define PROP_ORDERING_INDEX_S "ordering-index" #define PROP_DBUS_MENU_SERVER_S "dbus-menu-server" #define PROP_TITLE_S "title" /* Default Path */ #define DEFAULT_ITEM_PATH "/org/ayatana/NotificationItem" /* More constants */ #define DEFAULT_FALLBACK_TIMER 100 /* in milliseconds */ /* Globals */ static GDBusNodeInfo * item_node_info = NULL; static GDBusInterfaceInfo * item_interface_info = NULL; static GDBusNodeInfo * watcher_node_info = NULL; static GDBusInterfaceInfo * watcher_interface_info = NULL; /* Boiler plate */ static void app_indicator_class_init (AppIndicatorClass *klass); static void app_indicator_init (AppIndicator *self); static void app_indicator_dispose (GObject *object); static void app_indicator_finalize (GObject *object); /* Property functions */ static void app_indicator_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); static void app_indicator_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); /* Other stuff */ static void signal_label_change (AppIndicator * self); static void check_connect (AppIndicator * self); static void register_service_cb (GObject * obj, GAsyncResult * res, gpointer user_data); static void start_fallback_timer (AppIndicator * self, gboolean disable_timeout); static gboolean fallback_timer_expire (gpointer data); static GtkStatusIcon * fallback (AppIndicator * self); static void status_icon_status_wrapper (AppIndicator * self, const gchar * status, gpointer data); static gboolean scroll_event_wrapper(GtkWidget *status_icon, GdkEventScroll *event, gpointer user_data); static gboolean middle_click_wrapper(GtkWidget *status_icon, GdkEventButton *event, gpointer user_data); static void status_icon_changes (AppIndicator * self, gpointer data); static void status_icon_activate (GtkStatusIcon * icon, gpointer data); static void status_icon_menu_activate (GtkStatusIcon *status_icon, guint button, guint activate_time, gpointer user_data); static void unfallback (AppIndicator * self, GtkStatusIcon * status_icon); static gchar * append_panel_icon_suffix (const gchar * icon_name); static gchar * get_real_theme_path (AppIndicator * self); static gchar * append_snap_prefix (const gchar * path); static void theme_changed_cb (GtkIconTheme * theme, gpointer user_data); static void sec_activate_target_parent_changed(GtkWidget *menuitem, GtkWidget *old_parent, gpointer user_data); static GVariant * bus_get_prop (GDBusConnection * connection, const gchar * sender, const gchar * path, const gchar * interface, const gchar * property, GError ** error, gpointer user_data); 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 bus_creation (GObject * obj, GAsyncResult * res, gpointer user_data); static const GDBusInterfaceVTable item_interface_table = { method_call: bus_method_call, get_property: bus_get_prop, set_property: NULL /* No properties that can be set */ }; /* GObject type */ G_DEFINE_TYPE_WITH_PRIVATE (AppIndicator, app_indicator, G_TYPE_OBJECT); static void watcher_ready_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { AppIndicator *self = APP_INDICATOR(user_data); AppIndicatorPrivate *priv = app_indicator_get_instance_private(self); GError *error = NULL; priv->watcher_proxy = g_dbus_proxy_new_finish (res, &error); if (error) { start_fallback_timer (self, FALSE); g_object_unref (self); g_error_free (error); return; } check_connect (self); g_object_unref (self); } static void name_appeared_handler (GDBusConnection *connection, const gchar *name, const gchar *name_owner, gpointer user_data) { AppIndicator *self = APP_INDICATOR(user_data); AppIndicatorPrivate *priv = app_indicator_get_instance_private(self); g_dbus_proxy_new (priv->connection, G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES | G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS, watcher_interface_info, NOTIFICATION_WATCHER_DBUS_ADDR, NOTIFICATION_WATCHER_DBUS_OBJ, NOTIFICATION_WATCHER_DBUS_IFACE, NULL, (GAsyncReadyCallback) watcher_ready_cb, (AppIndicator*)g_object_ref (self)); } static void name_vanished_handler (GDBusConnection *connection, const gchar *name, gpointer user_data) { AppIndicator *self = APP_INDICATOR(user_data); AppIndicatorPrivate *priv = app_indicator_get_instance_private(self); g_clear_object (&priv->watcher_proxy); /* Emit the AppIndicator::connection-changed signal*/ g_signal_emit (self, signals[CONNECTION_CHANGED], 0, FALSE); start_fallback_timer (self, FALSE); } static void app_indicator_class_init (AppIndicatorClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); /* Clean up */ object_class->dispose = app_indicator_dispose; object_class->finalize = app_indicator_finalize; /* Property funcs */ object_class->set_property = app_indicator_set_property; object_class->get_property = app_indicator_get_property; /* Our own funcs */ klass->fallback = fallback; klass->unfallback = unfallback; /* Properties */ /** * AppIndicator:id: * * The ID for this indicator, which should be unique, but used consistently * by this program and its indicator. */ g_object_class_install_property (object_class, PROP_ID, g_param_spec_string(PROP_ID_S, "The ID for this indicator", "An ID that should be unique, but used consistently by this program and its indicator.", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY)); /** * AppIndicator:category: * * The type of indicator that this represents. Please don't use 'Other'. * Defaults to 'ApplicationStatus'. */ g_object_class_install_property (object_class, PROP_CATEGORY, g_param_spec_string (PROP_CATEGORY_S, "Indicator Category", "The type of indicator that this represents. Please don't use 'other'. Defaults to 'ApplicationStatus'.", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY)); /** * AppIndicator:status: * * Whether the indicator is shown or requests attention. Defaults to * 'Passive'. */ g_object_class_install_property (object_class, PROP_STATUS, g_param_spec_string (PROP_STATUS_S, "Indicator Status", "Whether the indicator is shown or requests attention. Defaults to 'Passive'.", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * AppIndicator:icon-name: * * The name of the regular icon that is shown for the indicator. */ g_object_class_install_property(object_class, PROP_ICON_NAME, g_param_spec_string (PROP_ICON_NAME_S, "An icon for the indicator", "The default icon that is shown for the indicator.", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * AppIndicator:icon-desc: * * The description of the regular icon that is shown for the indicator. */ g_object_class_install_property(object_class, PROP_ICON_DESC, g_param_spec_string (PROP_ICON_DESC_S, "A description of the icon for the indicator", "A description of the default icon that is shown for the indicator.", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * AppIndicator:attention-icon-name: * * If the indicator sets it's status to %APP_INDICATOR_STATUS_ATTENTION * then this icon is shown. */ g_object_class_install_property (object_class, PROP_ATTENTION_ICON_NAME, g_param_spec_string (PROP_ATTENTION_ICON_NAME_S, "An icon to show when the indicator request attention.", "If the indicator sets it's status to 'attention' then this icon is shown.", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * AppIndicator:attention-icon-desc: * * If the indicator sets it's status to %APP_INDICATOR_STATUS_ATTENTION * then this textual description of the icon shown. */ g_object_class_install_property (object_class, PROP_ATTENTION_ICON_DESC, g_param_spec_string (PROP_ATTENTION_ICON_DESC_S, "A description of the icon to show when the indicator request attention.", "When the indicator is an attention mode this should describe the icon shown", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * AppIndicator:icon-theme-path: * * An additional place to look for icon names that may be installed by the * application. */ g_object_class_install_property(object_class, PROP_ICON_THEME_PATH, g_param_spec_string (PROP_ICON_THEME_PATH_S, "An additional path for custom icons.", "An additional place to look for icon names that may be installed by the application.", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT)); /** * AppIndicator:connected: * * Pretty simple, %TRUE if we have a reasonable expectation of being * displayed through this object. You should hide your TrayIcon if so. */ g_object_class_install_property (object_class, PROP_CONNECTED, g_param_spec_boolean (PROP_CONNECTED_S, "Whether we're conneced to a watcher", "Pretty simple, true if we have a reasonable expectation of being displayed through this object. You should hide your TrayIcon if so.", FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); /** * AppIndicator:label: * * A label that can be shown next to the string in the application * indicator. The label will not be shown unless there is an icon * as well. The label is useful for numerical and other frequently * updated information. In general, it shouldn't be shown unless a * user requests it as it can take up a significant amount of space * on the user's panel. This may not be shown in all visualizations. */ g_object_class_install_property(object_class, PROP_LABEL, g_param_spec_string (PROP_LABEL_S, "A label next to the icon", "A label to provide dynamic information.", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * AppIndicator:label-guide: * * An optional string to provide guidance to the panel on how big * the #AppIndicator:label string could get. If this is set correctly * then the panel should never 'jiggle' as the string adjusts through * out the range of options. For instance, if you were providing a * percentage like "54% thrust" in #AppIndicator:label you'd want to * set this string to "100% thrust" to ensure space when Scotty can * get you enough power. */ g_object_class_install_property(object_class, PROP_LABEL_GUIDE, g_param_spec_string (PROP_LABEL_GUIDE_S, "A string to size the space available for the label.", "To ensure that the label does not cause the panel to 'jiggle' this string should provide information on how much space it could take.", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * AppIndicator:ordering-index: * * The ordering index is an odd parameter, and if you think you don't need * it you're probably right. In general, the application indicator try * to place the applications in a recreatable place taking into account * which category they're in to try and group them. But, there are some * cases where you'd want to ensure indicators are next to each other. * To do that you can override the generated ordering index and replace it * with a new one. Again, you probably don't want to be doing this, but * in case you do, this is the way. */ g_object_class_install_property(object_class, PROP_ORDERING_INDEX, g_param_spec_uint (PROP_ORDERING_INDEX_S, "The location that this app indicator should be in the list.", "A way to override the default ordering of the applications by providing a very specific idea of where this entry should be placed.", 0, G_MAXUINT32, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * AppIndicator:dbus-menu-server: * * A way to get the internal dbusmenu server if it is available. * This should only be used for testing. */ g_object_class_install_property(object_class, PROP_DBUS_MENU_SERVER, g_param_spec_object (PROP_DBUS_MENU_SERVER_S, "The internal DBusmenu Server", "DBusmenu server which is available for testing the application indicators.", DBUSMENU_TYPE_SERVER, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * AppIndicator:title: * * Provides a way to refer to this application indicator in a human * readable form. This is used in the Unity desktop in the HUD as * the first part of the menu entries to distinguish them from the * focused application's entries. */ g_object_class_install_property(object_class, PROP_TITLE, g_param_spec_string (PROP_TITLE_S, "Title of the application indicator", "A human readable way to refer to this application indicator in the UI.", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /* Signals */ /** * AppIndicator::new-icon: * @arg0: The #AppIndicator object * * when #AppIndicator:icon-name is changed */ signals[NEW_ICON] = g_signal_new (APP_INDICATOR_SIGNAL_NEW_ICON, G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (AppIndicatorClass, new_icon), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0, G_TYPE_NONE); /** * AppIndicator::new-attention-icon: * @arg0: The #AppIndicator object * * Emitted when #AppIndicator:attention-icon-name is changed */ signals[NEW_ATTENTION_ICON] = g_signal_new (APP_INDICATOR_SIGNAL_NEW_ATTENTION_ICON, G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (AppIndicatorClass, new_attention_icon), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0, G_TYPE_NONE); /** * AppIndicator::new-status: * @arg0: The #AppIndicator object * @arg1: The string value of the #AppIndicatorStatus enum. * * Emitted when #AppIndicator:status is changed */ signals[NEW_STATUS] = g_signal_new (APP_INDICATOR_SIGNAL_NEW_STATUS, G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (AppIndicatorClass, new_status), NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); /** * AppIndicator::new-label: * @arg0: The #AppIndicator object * @arg1: The string for the label * @arg2: The string for the guide * * Emitted when either #AppIndicator:label or #AppIndicator:label-guide are * changed. */ signals[NEW_LABEL] = g_signal_new (APP_INDICATOR_SIGNAL_NEW_LABEL, G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (AppIndicatorClass, new_label), NULL, NULL, _application_service_marshal_VOID__STRING_STRING, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING); /** * AppIndicator::connection-changed: * @arg0: The #AppIndicator object * @arg1: Whether we're connected or not * * Signaled when we connect to a watcher, or when it drops away. */ signals[CONNECTION_CHANGED] = g_signal_new (APP_INDICATOR_SIGNAL_CONNECTION_CHANGED, G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (AppIndicatorClass, connection_changed), NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN, G_TYPE_NONE); /** * AppIndicator::new-icon-theme-path: * @arg0: The #AppIndicator object * * Signaled when there is a new icon set for the * object. */ signals[NEW_ICON_THEME_PATH] = g_signal_new (APP_INDICATOR_SIGNAL_NEW_ICON_THEME_PATH, G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (AppIndicatorClass, new_icon_theme_path), NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); /** * AppIndicator::scroll-event: * @arg0: The #AppIndicator object * @arg1: How many steps the scroll wheel has taken * @arg2: (type Gdk.ScrollDirection): Which direction the wheel went in * * Signaled when the #AppIndicator receives a scroll event. */ signals[SCROLL_EVENT] = g_signal_new (APP_INDICATOR_SIGNAL_SCROLL_EVENT, G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (AppIndicatorClass, scroll_event), NULL, NULL, _application_service_marshal_VOID__INT_UINT, G_TYPE_NONE, 2, G_TYPE_INT, GDK_TYPE_SCROLL_DIRECTION); /* DBus interfaces */ if (item_node_info == NULL) { GError * error = NULL; item_node_info = g_dbus_node_info_new_for_xml(_notification_item, &error); if (error != NULL) { g_error("Unable to parse Notification Item DBus interface: %s", error->message); g_error_free(error); } } if (item_interface_info == NULL && item_node_info != NULL) { item_interface_info = g_dbus_node_info_lookup_interface(item_node_info, NOTIFICATION_ITEM_DBUS_IFACE); if (item_interface_info == NULL) { g_error("Unable to find interface '" NOTIFICATION_ITEM_DBUS_IFACE "'"); } } if (watcher_node_info == NULL) { GError * error = NULL; watcher_node_info = g_dbus_node_info_new_for_xml(_notification_watcher, &error); if (error != NULL) { g_error("Unable to parse Notification Item DBus interface: %s", error->message); g_error_free(error); } } if (watcher_interface_info == NULL && watcher_node_info != NULL) { watcher_interface_info = g_dbus_node_info_lookup_interface(watcher_node_info, NOTIFICATION_WATCHER_DBUS_IFACE); if (watcher_interface_info == NULL) { g_error("Unable to find interface '" NOTIFICATION_WATCHER_DBUS_IFACE "'"); } } return; } static void app_indicator_init (AppIndicator *self) { AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); priv->id = NULL; priv->clean_id = NULL; priv->category = APP_INDICATOR_CATEGORY_OTHER; priv->status = APP_INDICATOR_STATUS_PASSIVE; priv->icon_name = NULL; priv->attention_icon_name = NULL; priv->icon_theme_path = NULL; priv->absolute_icon_theme_path = get_real_theme_path (self); priv->menu = NULL; priv->menuservice = NULL; priv->ordering_index = 0; priv->title = NULL; priv->label = NULL; priv->label_guide = NULL; priv->label_change_idle = 0; priv->connection = NULL; priv->dbus_registration = 0; priv->path = NULL; priv->status_icon = NULL; priv->fallback_timer = 0; priv->shorties = NULL; priv->sec_activate_target = NULL; priv->sec_activate_enabled = FALSE; priv->watcher_proxy = NULL; priv->watcher_id = g_bus_watch_name (G_BUS_TYPE_SESSION, NOTIFICATION_WATCHER_DBUS_ADDR, G_BUS_NAME_WATCHER_FLAGS_NONE, (GBusNameAppearedCallback) name_appeared_handler, (GBusNameVanishedCallback) name_vanished_handler, self, NULL); /* Start getting the session bus */ g_object_ref(self); /* ref for the bus creation callback */ g_bus_get(G_BUS_TYPE_SESSION, NULL, bus_creation, self); g_signal_connect(G_OBJECT(gtk_icon_theme_get_default()), "changed", G_CALLBACK(theme_changed_cb), self); return; } /* Free all objects, make sure that all the dbus signals are sent out before we shut this down. */ static void app_indicator_dispose (GObject *object) { AppIndicator *self = APP_INDICATOR (object); AppIndicatorPrivate *priv = app_indicator_get_instance_private(self); if (priv->shorties != NULL) { g_object_unref(G_OBJECT(priv->shorties)); priv->shorties = NULL; } if (priv->status != APP_INDICATOR_STATUS_PASSIVE) { app_indicator_set_status(self, APP_INDICATOR_STATUS_PASSIVE); } if (priv->status_icon != NULL) { AppIndicatorClass * class = APP_INDICATOR_GET_CLASS(object); if (class->unfallback != NULL) { class->unfallback(self, priv->status_icon); } priv->status_icon = NULL; } if (priv->fallback_timer != 0) { g_source_remove(priv->fallback_timer); priv->fallback_timer = 0; } if (priv->label_change_idle != 0) { g_source_remove(priv->label_change_idle); priv->label_change_idle = 0; } if (priv->menu != NULL) { g_object_unref(G_OBJECT(priv->menu)); priv->menu = NULL; } if (priv->menuservice != NULL) { g_object_unref (priv->menuservice); } if (priv->watcher_id != 0) { g_bus_unwatch_name (priv->watcher_id); priv->watcher_id = 0; } if (priv->watcher_proxy != NULL) { g_object_unref(G_OBJECT(priv->watcher_proxy)); priv->watcher_proxy = NULL; /* Emit the AppIndicator::connection-changed signal*/ g_signal_emit (self, signals[CONNECTION_CHANGED], 0, FALSE); } if (priv->dbus_registration != 0) { g_dbus_connection_unregister_object(priv->connection, priv->dbus_registration); priv->dbus_registration = 0; } if (priv->connection != NULL) { g_object_unref(G_OBJECT(priv->connection)); priv->connection = NULL; } if (priv->sec_activate_target != NULL) { g_signal_handlers_disconnect_by_func (priv->sec_activate_target, sec_activate_target_parent_changed, self); g_object_unref(G_OBJECT(priv->sec_activate_target)); priv->sec_activate_target = NULL; } g_signal_handlers_disconnect_by_func(gtk_icon_theme_get_default(), G_CALLBACK(theme_changed_cb), self); G_OBJECT_CLASS (app_indicator_parent_class)->dispose (object); return; } /* Free all of the memory that we could be using in the object. */ static void app_indicator_finalize (GObject *object) { AppIndicator * self = APP_INDICATOR(object); AppIndicatorPrivate *priv = app_indicator_get_instance_private(self); if (priv->status != APP_INDICATOR_STATUS_PASSIVE) { g_warning("Finalizing Application Status with the status set to: %d", priv->status); } if (priv->id != NULL) { g_free(priv->id); priv->id = NULL; } if (priv->clean_id != NULL) { g_free(priv->clean_id); priv->clean_id = NULL; } if (priv->icon_name != NULL) { g_free(priv->icon_name); priv->icon_name = NULL; } if (priv->absolute_icon_name != NULL) { g_free(priv->absolute_icon_name); priv->absolute_icon_name = NULL; } if (priv->attention_icon_name != NULL) { g_free(priv->attention_icon_name); priv->attention_icon_name = NULL; } if (priv->absolute_attention_icon_name != NULL) { g_free(priv->absolute_attention_icon_name); priv->absolute_attention_icon_name = NULL; } if (priv->icon_theme_path != NULL) { g_free(priv->icon_theme_path); priv->icon_theme_path = NULL; } if (priv->absolute_icon_theme_path != NULL) { g_free(priv->absolute_icon_theme_path); priv->absolute_icon_theme_path = NULL; } if (priv->title != NULL) { g_free(priv->title); priv->title = NULL; } if (priv->label != NULL) { g_free(priv->label); priv->label = NULL; } if (priv->label_guide != NULL) { g_free(priv->label_guide); priv->label_guide = NULL; } if (priv->accessible_desc != NULL) { g_free(priv->accessible_desc); priv->accessible_desc = NULL; } if (priv->att_accessible_desc != NULL) { g_free(priv->att_accessible_desc); priv->att_accessible_desc = NULL; } if (priv->path != NULL) { g_free(priv->path); priv->path = NULL; } G_OBJECT_CLASS (app_indicator_parent_class)->finalize (object); return; } #define WARN_BAD_TYPE(prop, value) g_warning("Can not work with property '%s' with value of type '%s'.", prop, G_VALUE_TYPE_NAME(value)) /* Set some properties */ static void app_indicator_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) { AppIndicator *self = APP_INDICATOR (object); AppIndicatorPrivate *priv = app_indicator_get_instance_private(self); GEnumValue *enum_val; switch (prop_id) { case PROP_ID: if (priv->id != NULL) { g_warning ("Resetting ID value when I already had a value of: %s", priv->id); break; } priv->id = g_strdup (g_value_get_string (value)); priv->clean_id = g_strdup(priv->id); gchar * cleaner; for (cleaner = priv->clean_id; *cleaner != '\0'; cleaner++) { if (!g_ascii_isalnum(*cleaner)) { *cleaner = '_'; } } check_connect (self); break; case PROP_CATEGORY: enum_val = g_enum_get_value_by_nick ((GEnumClass *) g_type_class_ref (APP_INDICATOR_TYPE_INDICATOR_CATEGORY), g_value_get_string (value)); if (priv->category != enum_val->value) { priv->category = enum_val->value; } break; case PROP_STATUS: enum_val = g_enum_get_value_by_nick ((GEnumClass *) g_type_class_ref (APP_INDICATOR_TYPE_INDICATOR_STATUS), g_value_get_string (value)); app_indicator_set_status (APP_INDICATOR (object), enum_val->value); break; case PROP_ICON_NAME: app_indicator_set_icon_full (APP_INDICATOR (object), g_value_get_string (value), priv->accessible_desc); check_connect (self); break; case PROP_ICON_DESC: app_indicator_set_icon_full (APP_INDICATOR (object), priv->icon_name, g_value_get_string (value)); check_connect (self); break; case PROP_ATTENTION_ICON_NAME: app_indicator_set_attention_icon_full (APP_INDICATOR (object), g_value_get_string (value), priv->att_accessible_desc); break; case PROP_ATTENTION_ICON_DESC: app_indicator_set_attention_icon_full (APP_INDICATOR (object), priv->attention_icon_name, g_value_get_string (value)); break; case PROP_ICON_THEME_PATH: app_indicator_set_icon_theme_path (APP_INDICATOR (object), g_value_get_string (value)); check_connect (self); break; case PROP_LABEL: { gchar * oldlabel = priv->label; priv->label = g_value_dup_string(value); if (priv->label != NULL && priv->label[0] == '\0') { g_free(priv->label); priv->label = NULL; } if (g_strcmp0(oldlabel, priv->label) != 0) { signal_label_change(APP_INDICATOR(object)); } if (oldlabel != NULL) { g_free(oldlabel); } break; } case PROP_TITLE: { gchar * oldtitle = priv->title; priv->title = g_value_dup_string(value); if (priv->title != NULL && priv->title[0] == '\0') { g_free(priv->title); priv->title = NULL; } if (g_strcmp0(oldtitle, priv->title) != 0 && priv->connection != NULL) { GError * error = NULL; g_dbus_connection_emit_signal(priv->connection, NULL, priv->path, NOTIFICATION_ITEM_DBUS_IFACE, "NewTitle", NULL, &error); if (error != NULL) { g_warning("Unable to send signal for NewTitle: %s", error->message); g_error_free(error); } } if (oldtitle != NULL) { g_free(oldtitle); } if (priv->status_icon != NULL) { gtk_status_icon_set_title(priv->status_icon, priv->title ? priv->title : ""); } break; } case PROP_LABEL_GUIDE: { gchar * oldguide = priv->label_guide; priv->label_guide = g_value_dup_string(value); if (priv->label_guide != NULL && priv->label_guide[0] == '\0') { g_free(priv->label_guide); priv->label_guide = NULL; } if (g_strcmp0(oldguide, priv->label_guide) != 0) { signal_label_change(APP_INDICATOR(object)); } if (priv->label_guide != NULL && priv->label_guide[0] == '\0') { g_free(priv->label_guide); priv->label_guide = NULL; } if (oldguide != NULL) { g_free(oldguide); } break; } case PROP_ORDERING_INDEX: priv->ordering_index = g_value_get_uint(value); break; case PROP_DBUS_MENU_SERVER: g_clear_object (&priv->menuservice); priv->menuservice = DBUSMENU_SERVER (g_value_dup_object(value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } return; } /* Function to fill our value with the property it's requesting. */ static void app_indicator_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { AppIndicator *self = APP_INDICATOR (object); AppIndicatorPrivate *priv = app_indicator_get_instance_private(self); GEnumValue *enum_value; switch (prop_id) { case PROP_ID: g_value_set_string (value, priv->id); break; case PROP_CATEGORY: enum_value = g_enum_get_value ((GEnumClass *) g_type_class_ref (APP_INDICATOR_TYPE_INDICATOR_CATEGORY), priv->category); g_value_set_string (value, enum_value->value_nick); break; case PROP_STATUS: enum_value = g_enum_get_value ((GEnumClass *) g_type_class_ref (APP_INDICATOR_TYPE_INDICATOR_STATUS), priv->status); g_value_set_string (value, enum_value->value_nick); break; case PROP_ICON_NAME: g_value_set_string (value, priv->icon_name); break; case PROP_ICON_DESC: g_value_set_string (value, priv->accessible_desc); break; case PROP_ATTENTION_ICON_NAME: g_value_set_string (value, priv->attention_icon_name); break; case PROP_ATTENTION_ICON_DESC: g_value_set_string (value, priv->att_accessible_desc); break; case PROP_ICON_THEME_PATH: g_value_set_string (value, priv->icon_theme_path); break; case PROP_CONNECTED: { gboolean connected = FALSE; if (priv->watcher_proxy != NULL) { gchar * name = g_dbus_proxy_get_name_owner(priv->watcher_proxy); if (name != NULL) { connected = TRUE; g_free(name); } } g_value_set_boolean (value, connected); break; } case PROP_LABEL: g_value_set_string (value, priv->label); break; case PROP_LABEL_GUIDE: g_value_set_string (value, priv->label_guide); break; case PROP_ORDERING_INDEX: g_value_set_uint(value, priv->ordering_index); break; case PROP_DBUS_MENU_SERVER: g_value_set_object(value, priv->menuservice); break; case PROP_TITLE: g_value_set_string(value, priv->title); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } return; } /* DBus bus has been created, well maybe, but we got a call back about it so we need to check into it. */ static void bus_creation (GObject * obj, GAsyncResult * res, gpointer user_data) { GError * error = NULL; GDBusConnection * connection = g_bus_get_finish(res, &error); if (error != NULL) { g_warning("Unable to get the session bus: %s", error->message); g_error_free(error); g_object_unref(G_OBJECT(user_data)); return; } AppIndicator * app = APP_INDICATOR(user_data); AppIndicatorPrivate * priv = app_indicator_get_instance_private(app); priv->connection = connection; /* If the connection was blocking the exporting of the object this function will export everything. */ check_connect(app); g_object_unref(G_OBJECT(app)); return; } 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) { g_return_if_fail(IS_APP_INDICATOR(user_data)); AppIndicator * app = APP_INDICATOR(user_data); AppIndicatorPrivate * priv = app_indicator_get_instance_private(app); GVariant * retval = NULL; if (g_strcmp0(method, "Scroll") == 0) { GdkScrollDirection direction; gint delta; const gchar *orientation; g_variant_get(params, "(i&s)", &delta, &orientation); if (g_strcmp0(orientation, "horizontal") == 0) { direction = (delta >= 0) ? GDK_SCROLL_RIGHT : GDK_SCROLL_LEFT; } else if (g_strcmp0(orientation, "vertical") == 0) { direction = (delta >= 0) ? GDK_SCROLL_DOWN : GDK_SCROLL_UP; } else { g_dbus_method_invocation_return_value(invocation, retval); return; } delta = ABS(delta); g_signal_emit(app, signals[SCROLL_EVENT], 0, delta, direction); } else if (g_strcmp0(method, "SecondaryActivate") == 0 || g_strcmp0(method, "XAyatanaSecondaryActivate") == 0) { GtkWidget *menuitem = priv->sec_activate_target; if (priv->sec_activate_enabled && menuitem && gtk_widget_get_visible (menuitem) && gtk_widget_get_sensitive (menuitem)) { gtk_widget_activate (menuitem); } } else { g_warning("Calling method '%s' on the app-indicator and it's unknown", method); } g_dbus_method_invocation_return_value(invocation, retval); } /* DBus is asking for a property so we should figure out what it wants and try and deliver. */ static GVariant * bus_get_prop (GDBusConnection * connection, const gchar * sender, const gchar * path, const gchar * interface, const gchar * property, GError ** error, gpointer user_data) { g_return_val_if_fail(IS_APP_INDICATOR(user_data), NULL); AppIndicator * app = APP_INDICATOR(user_data); AppIndicatorPrivate *priv = app_indicator_get_instance_private(app); if (g_strcmp0(property, "Id") == 0) { return g_variant_new_string(priv->id ? priv->id : ""); } else if (g_strcmp0(property, "Category") == 0) { GEnumValue *enum_value; enum_value = g_enum_get_value ((GEnumClass *) g_type_class_ref (APP_INDICATOR_TYPE_INDICATOR_CATEGORY), priv->category); return g_variant_new_string(enum_value->value_nick ? enum_value->value_nick : ""); } else if (g_strcmp0(property, "Status") == 0) { GEnumValue *enum_value; enum_value = g_enum_get_value ((GEnumClass *) g_type_class_ref (APP_INDICATOR_TYPE_INDICATOR_STATUS), priv->status); return g_variant_new_string(enum_value->value_nick ? enum_value->value_nick : ""); } else if (g_strcmp0(property, "IconName") == 0) { if (priv->absolute_icon_name) { return g_variant_new_string(priv->absolute_icon_name); } return g_variant_new_string(priv->icon_name ? priv->icon_name : ""); } else if (g_strcmp0(property, "AttentionIconName") == 0) { if (priv->absolute_attention_icon_name) { return g_variant_new_string(priv->absolute_attention_icon_name); } return g_variant_new_string(priv->attention_icon_name ? priv->attention_icon_name : ""); } else if (g_strcmp0(property, "Title") == 0) { const gchar * output = NULL; if (priv->title == NULL) { const gchar * name = g_get_application_name(); if (name != NULL) { output = name; } else { output = ""; } } else { output = priv->title; } return g_variant_new_string(output); } else if (g_strcmp0(property, "IconThemePath") == 0) { if (priv->absolute_icon_theme_path) { return g_variant_new_string(priv->absolute_icon_theme_path); } return g_variant_new_string(priv->icon_theme_path ? priv->icon_theme_path : ""); } else if (g_strcmp0(property, "Menu") == 0) { if (priv->menuservice != NULL) { GValue strval = { 0 }; g_value_init(&strval, G_TYPE_STRING); g_object_get_property (G_OBJECT (priv->menuservice), DBUSMENU_SERVER_PROP_DBUS_OBJECT, &strval); GVariant * var = g_variant_new("o", g_value_get_string(&strval)); g_value_unset(&strval); return var; } else { return g_variant_new("o", "/"); } } else if (g_strcmp0(property, "XAyatanaLabel") == 0) { return g_variant_new_string(priv->label ? priv->label : ""); } else if (g_strcmp0(property, "XAyatanaLabelGuide") == 0) { return g_variant_new_string(priv->label_guide ? priv->label_guide : ""); } else if (g_strcmp0(property, "XAyatanaOrderingIndex") == 0) { return g_variant_new_uint32(priv->ordering_index); } else if (g_strcmp0(property, "IconAccessibleDesc") == 0) { return g_variant_new_string(priv->accessible_desc ? priv->accessible_desc : ""); } else if (g_strcmp0(property, "AttentionAccessibleDesc") == 0) { return g_variant_new_string(priv->att_accessible_desc ? priv->att_accessible_desc : ""); } *error = g_error_new(0, 0, "Unknown property: %s", property); return NULL; } /* Sends the label changed signal and resets the source ID */ static gboolean signal_label_change_idle (gpointer user_data) { AppIndicator * self = (AppIndicator *)user_data; AppIndicatorPrivate *priv = app_indicator_get_instance_private(self); gchar * label = priv->label != NULL ? priv->label : ""; gchar * guide = priv->label_guide != NULL ? priv->label_guide : ""; g_signal_emit(G_OBJECT(self), signals[NEW_LABEL], 0, label, guide, TRUE); if (priv->dbus_registration != 0 && priv->connection != NULL) { GError * error = NULL; g_dbus_connection_emit_signal(priv->connection, NULL, priv->path, NOTIFICATION_ITEM_DBUS_IFACE, "XAyatanaNewLabel", g_variant_new("(ss)", label, guide), &error); if (error != NULL) { g_warning("Unable to send signal for NewIcon: %s", error->message); g_error_free(error); } } priv->label_change_idle = 0; return FALSE; } /* Sets up an idle function to send the label changed signal so that we don't send it too many times. */ static void signal_label_change (AppIndicator * self) { AppIndicatorPrivate *priv = app_indicator_get_instance_private(self); /* don't set it twice */ if (priv->label_change_idle != 0) { return; } priv->label_change_idle = g_idle_add(signal_label_change_idle, self); return; } /* This function is used to see if we have enough information to connect to things. If we do, and we're not connected, it connects for us. */ static void check_connect (AppIndicator *self) { AppIndicatorPrivate *priv = app_indicator_get_instance_private(self); /* Do we have a connection? */ if (priv->connection == NULL) return; /* If we already have a proxy, let's see if it has someone implementing it. If not, we can't do much more than to do nothing. */ if (priv->watcher_proxy != NULL) { gchar * name = g_dbus_proxy_get_name_owner(priv->watcher_proxy); if (name == NULL) { return; } g_free(name); } /* Do we have enough information? */ if (priv->menu == NULL) return; if (priv->icon_name == NULL) return; if (priv->id == NULL) return; if (priv->path == NULL) { priv->path = g_strdup_printf(DEFAULT_ITEM_PATH "/%s", priv->clean_id); } if (priv->dbus_registration == 0) { GError * error = NULL; priv->dbus_registration = g_dbus_connection_register_object(priv->connection, priv->path, item_interface_info, &item_interface_table, self, NULL, &error); if (error != NULL) { g_warning("Unable to register object on path '%s': %s", priv->path, error->message); g_error_free(error); return; } } /* NOTE: It's really important the order here. We make sure to *publish* the object on the bus and *then* get the proxy. The reason is that we want to ensure all the filters are setup before talking to the watcher and that's where the order is important. */ if (priv->watcher_proxy == NULL) return; g_dbus_proxy_call (priv->watcher_proxy, "RegisterStatusNotifierItem", g_variant_new ("(s)", priv->path), G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback) register_service_cb, (AppIndicator*)g_object_ref (self)); } /* Responce from the DBus command to register a service with a NotificationWatcher. */ static void register_service_cb (GObject * obj, GAsyncResult * res, gpointer user_data) { GError * error = NULL; GVariant * returns = g_dbus_proxy_call_finish(G_DBUS_PROXY(obj), res, &error); /* We don't care about any return values */ if (returns != NULL) { g_variant_unref(returns); } if (error != NULL) { /* They didn't respond, ewww. Not sure what they could be doing */ g_warning("Unable to connect to the Notification Watcher: %s", error->message); start_fallback_timer(APP_INDICATOR(user_data), TRUE); g_object_unref(G_OBJECT(user_data)); return; } g_return_if_fail(IS_APP_INDICATOR(user_data)); AppIndicator * app = APP_INDICATOR(user_data); AppIndicatorPrivate * priv = app_indicator_get_instance_private(app); /* Emit the AppIndicator::connection-changed signal*/ g_signal_emit (app, signals[CONNECTION_CHANGED], 0, TRUE); if (priv->status_icon) { AppIndicatorClass * class = APP_INDICATOR_GET_CLASS(app); if (class->unfallback != NULL) { class->unfallback(app, priv->status_icon); priv->status_icon = NULL; } } g_object_unref(G_OBJECT(user_data)); return; } /* A helper function to get the nick out of a given category enum value. */ static const gchar * category_from_enum (AppIndicatorCategory category) { GEnumValue *value; value = g_enum_get_value ((GEnumClass *)g_type_class_ref (APP_INDICATOR_TYPE_INDICATOR_CATEGORY), category); return value->value_nick; } /* A function that will start the fallback timer if it's not already started. It sets up the DBus watcher to see if there is a change. Also, provides an override mode for cases where it's unlikely that a timer will help anything. */ static void start_fallback_timer (AppIndicator * self, gboolean disable_timeout) { g_return_if_fail(IS_APP_INDICATOR(self)); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); if (priv->fallback_timer != 0) { /* The timer is set, let's just be happy with the one we've already got running */ return; } if (priv->status_icon != NULL) { /* We're already fallen back. Let's not do it again. */ return; } if (disable_timeout) { fallback_timer_expire(self); } else { priv->fallback_timer = g_timeout_add(DEFAULT_FALLBACK_TIMER, fallback_timer_expire, self); } return; } /* A function that gets executed when we want to change the state of the fallback. */ static gboolean fallback_timer_expire (gpointer data) { g_return_val_if_fail(IS_APP_INDICATOR(data), FALSE); AppIndicator * app = APP_INDICATOR(data); AppIndicatorPrivate * priv = app_indicator_get_instance_private(app); AppIndicatorClass * class = APP_INDICATOR_GET_CLASS(data); if (priv->status_icon == NULL) { if (class->fallback != NULL) { priv->status_icon = class->fallback(APP_INDICATOR(data)); } } else { if (class->unfallback != NULL) { class->unfallback(APP_INDICATOR(data), priv->status_icon); priv->status_icon = NULL; } else { g_warning("No 'unfallback' function but the 'fallback' function returned a non-NULL result."); } } priv->fallback_timer = 0; return FALSE; } /* emit a NEW_ICON signal in response for the theme change */ static void theme_changed_cb (GtkIconTheme * theme, gpointer user_data) { g_signal_emit (user_data, signals[NEW_ICON], 0, TRUE); AppIndicator * self = (AppIndicator *)user_data; AppIndicatorPrivate *priv = app_indicator_get_instance_private(self); if (priv->dbus_registration != 0 && priv->connection != NULL) { GError * error = NULL; g_dbus_connection_emit_signal(priv->connection, NULL, priv->path, NOTIFICATION_ITEM_DBUS_IFACE, "NewIcon", NULL, &error); if (error != NULL) { g_warning("Unable to send signal for NewIcon: %s", error->message); g_error_free(error); } } return; } /* Creates a StatusIcon that can be used when the application indicator area isn't available. */ static GtkStatusIcon * fallback (AppIndicator * self) { GtkStatusIcon * icon = gtk_status_icon_new(); gtk_status_icon_set_name(icon, app_indicator_get_id(self)); const gchar * title = app_indicator_get_title(self); if (title != NULL) { gtk_status_icon_set_title(icon, title); } g_signal_connect(G_OBJECT(self), APP_INDICATOR_SIGNAL_NEW_STATUS, G_CALLBACK(status_icon_status_wrapper), icon); g_signal_connect(G_OBJECT(self), APP_INDICATOR_SIGNAL_NEW_ICON, G_CALLBACK(status_icon_changes), icon); g_signal_connect(G_OBJECT(self), APP_INDICATOR_SIGNAL_NEW_ATTENTION_ICON, G_CALLBACK(status_icon_changes), icon); status_icon_changes(self, icon); g_signal_connect(G_OBJECT(icon), "activate", G_CALLBACK(status_icon_activate), self); g_signal_connect(G_OBJECT(icon), "popup-menu", G_CALLBACK(status_icon_menu_activate), self); g_signal_connect(G_OBJECT(icon), "scroll-event", G_CALLBACK(scroll_event_wrapper), self); g_signal_connect(G_OBJECT(icon), "button-release-event", G_CALLBACK(middle_click_wrapper), self); return icon; } /* A wrapper as the status update prototype is a little bit different, but we want to handle it the same. */ static void status_icon_status_wrapper (AppIndicator * self, const gchar * status, gpointer data) { return status_icon_changes(self, data); } /* A wrapper for redirecting the scroll events to the app-indicator from status icon widget. */ static gboolean scroll_event_wrapper (GtkWidget *status_icon, GdkEventScroll *event, gpointer data) { g_return_val_if_fail(IS_APP_INDICATOR(data), FALSE); AppIndicator * app = APP_INDICATOR(data); g_signal_emit(app, signals[SCROLL_EVENT], 0, 1, event->direction); return TRUE; } static gboolean middle_click_wrapper (GtkWidget *status_icon, GdkEventButton *event, gpointer data) { g_return_val_if_fail(IS_APP_INDICATOR(data), FALSE); AppIndicator * app = APP_INDICATOR(data); AppIndicatorPrivate *priv = app_indicator_get_instance_private(app); if (event->button == 2 && event->type == GDK_BUTTON_RELEASE) { GtkAllocation alloc; gint px = event->x; gint py = event->y; gtk_widget_get_allocation (status_icon, &alloc); GtkWidget *menuitem = priv->sec_activate_target; if (px >= 0 && px < alloc.width && py >= 0 && py < alloc.height && priv->sec_activate_enabled && menuitem && gtk_widget_get_visible (menuitem) && gtk_widget_get_sensitive (menuitem)) { gtk_widget_activate (menuitem); return TRUE; } } return FALSE; } /* This tracks changes to either the status or the icons that are associated with the app indicator */ static void status_icon_changes (AppIndicator * self, gpointer data) { GtkStatusIcon * icon = GTK_STATUS_ICON(data); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); /* add the icon_theme_path once if needed */ GtkIconTheme *icon_theme = gtk_icon_theme_get_default(); const gchar *theme_path = priv->absolute_icon_theme_path ? priv->absolute_icon_theme_path : priv->icon_theme_path; if (theme_path != NULL) { gchar **path; gint n_elements, i; gboolean found=FALSE; gtk_icon_theme_get_search_path(icon_theme, &path, &n_elements); for (i=0; i< n_elements || path[i] == NULL; i++) { if(g_strcmp0(path[i], theme_path) == 0) { found=TRUE; break; } } if(!found) { gtk_icon_theme_append_search_path(icon_theme, theme_path); } g_strfreev (path); } const gchar * icon_name = NULL; switch (app_indicator_get_status(self)) { case APP_INDICATOR_STATUS_PASSIVE: /* hide first to avoid that the change is visible to the user */ gtk_status_icon_set_visible(icon, FALSE); icon_name = app_indicator_get_icon(self); break; case APP_INDICATOR_STATUS_ACTIVE: icon_name = app_indicator_get_icon(self); gtk_status_icon_set_visible(icon, TRUE); break; case APP_INDICATOR_STATUS_ATTENTION: /* get the _attention_ icon here */ icon_name = app_indicator_get_attention_icon(self); gtk_status_icon_set_visible(icon, TRUE); break; }; if (icon_name != NULL) { gchar *snapped_icon = append_snap_prefix(icon_name); if (g_file_test(icon_name, G_FILE_TEST_EXISTS)) { gtk_status_icon_set_from_file(icon, icon_name); } else if (snapped_icon && g_file_test(snapped_icon, G_FILE_TEST_EXISTS)) { gtk_status_icon_set_from_file(icon, snapped_icon); } else { gchar *longname = append_panel_icon_suffix(icon_name); if (longname != NULL && gtk_icon_theme_has_icon (icon_theme, longname)) { gtk_status_icon_set_from_icon_name(icon, longname); } else { gtk_status_icon_set_from_icon_name(icon, icon_name); } g_free(longname); } g_free(snapped_icon); } return; } /* Handles the activate action by the status icon by showing the menu in a popup. */ static void status_icon_activate (GtkStatusIcon * icon, gpointer data) { GtkMenu * menu = app_indicator_get_menu(APP_INDICATOR(data)); if (menu == NULL) return; gtk_menu_popup(menu, NULL, /* Parent Menu */ NULL, /* Parent item */ gtk_status_icon_position_menu, icon, 1, /* Button */ gtk_get_current_event_time()); return; } /* Handles the right-click action by the status icon by showing the menu in a popup. */ static void status_icon_menu_activate (GtkStatusIcon *status_icon, guint button, guint activate_time, gpointer user_data) { status_icon_activate(status_icon, user_data); } /* Removes the status icon as the application indicator area is now up and running again. */ static void unfallback (AppIndicator * self, GtkStatusIcon * status_icon) { g_signal_handlers_disconnect_by_func(G_OBJECT(self), status_icon_status_wrapper, status_icon); g_signal_handlers_disconnect_by_func(G_OBJECT(self), status_icon_changes, status_icon); g_signal_handlers_disconnect_by_func(G_OBJECT(self), scroll_event_wrapper, status_icon); g_signal_handlers_disconnect_by_func(G_OBJECT(self), middle_click_wrapper, status_icon); gtk_status_icon_set_visible(status_icon, FALSE); g_object_unref(G_OBJECT(status_icon)); return; } /* A helper function that appends PANEL_ICON_SUFFIX to the given icon name if it's missing. */ static gchar * append_panel_icon_suffix (const gchar *icon_name) { gchar * long_name = NULL; if (!g_str_has_suffix (icon_name, PANEL_ICON_SUFFIX)) { long_name = g_strdup_printf("%s-%s", icon_name, PANEL_ICON_SUFFIX); } else { long_name = g_strdup (icon_name); } return long_name; } static gboolean widget_is_menu_child(AppIndicator * self, GtkWidget *child) { g_return_val_if_fail(IS_APP_INDICATOR(self), FALSE); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); if (!priv->menu) return FALSE; if (!child) return FALSE; GtkWidget *parent; while ((parent = gtk_widget_get_parent(child))) { if (parent == priv->menu) return TRUE; if (GTK_IS_MENU(parent)) child = gtk_menu_get_attach_widget(GTK_MENU(parent)); else child = parent; } return FALSE; } static void sec_activate_target_parent_changed(GtkWidget *menuitem, GtkWidget *old_parent, gpointer data) { g_return_if_fail(IS_APP_INDICATOR(data)); AppIndicator *self = APP_INDICATOR(data); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); priv->sec_activate_enabled = widget_is_menu_child(self, menuitem); } /* ************************* */ /* Public Functions */ /* ************************* */ /** * app_indicator_new: * @id: The unique id of the indicator to create. * @icon_name: The icon name for this indicator * @category: The category of indicator. * * Creates a new #AppIndicator setting the properties: * #AppIndicator:id with @id, #AppIndicator:category with @category * and #AppIndicator:icon-name with @icon_name. * * Return value: A pointer to a new #AppIndicator object. */ AppIndicator * app_indicator_new (const gchar *id, const gchar *icon_name, AppIndicatorCategory category) { AppIndicator *indicator = g_object_new (APP_INDICATOR_TYPE, PROP_ID_S, id, PROP_CATEGORY_S, category_from_enum (category), PROP_ICON_NAME_S, icon_name, NULL); return indicator; } /** * app_indicator_new_with_path: * @id: The unique id of the indicator to create. * @icon_name: The icon name for this indicator * @category: The category of indicator. * @icon_theme_path: A custom path for finding icons. * Creates a new #AppIndicator setting the properties: * #AppIndicator:id with @id, #AppIndicator:category with @category, * #AppIndicator:icon-name with @icon_name and #AppIndicator:icon-theme-path * with @icon_theme_path. * * Return value: A pointer to a new #AppIndicator object. */ AppIndicator * app_indicator_new_with_path (const gchar *id, const gchar *icon_name, AppIndicatorCategory category, const gchar *icon_theme_path) { AppIndicator *indicator = g_object_new (APP_INDICATOR_TYPE, PROP_ID_S, id, PROP_CATEGORY_S, category_from_enum (category), PROP_ICON_NAME_S, icon_name, PROP_ICON_THEME_PATH_S, icon_theme_path, NULL); return indicator; } /** * app_indicator_get_type: * * Generates or returns the unique #GType for #AppIndicator. * * Return value: A unique #GType for #AppIndicator objects. */ /** * app_indicator_set_status: * @self: The #AppIndicator object to use * @status: The status to set for this indicator * * Wrapper function for property #AppIndicator:status. */ void app_indicator_set_status (AppIndicator *self, AppIndicatorStatus status) { g_return_if_fail (IS_APP_INDICATOR (self)); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); if (priv->status != status) { GEnumValue *value = g_enum_get_value ((GEnumClass *) g_type_class_ref (APP_INDICATOR_TYPE_INDICATOR_STATUS), status); priv->status = status; g_signal_emit (self, signals[NEW_STATUS], 0, value->value_nick); if (priv->dbus_registration != 0 && priv->connection != NULL) { GError * error = NULL; g_dbus_connection_emit_signal(priv->connection, NULL, priv->path, NOTIFICATION_ITEM_DBUS_IFACE, "NewStatus", g_variant_new("(s)", value->value_nick), &error); if (error != NULL) { g_warning("Unable to send signal for NewStatus: %s", error->message); g_error_free(error); } } } return; } /** * app_indicator_set_attention_icon: * @self: The #AppIndicator object to use * @icon_name: The name of the attention icon to set for this indicator * * Wrapper for app_indicator_set_attention_icon_full() with a NULL * description. * * Deprecated: Use app_indicator_set_attention_icon_full() instead. */ void app_indicator_set_attention_icon (AppIndicator *self, const gchar *icon_name) { return app_indicator_set_attention_icon_full(self, icon_name, NULL); } /** * app_indicator_set_attention_icon_full: * @self: The #AppIndicator object to use * @icon_name: The name of the attention icon to set for this indicator * @icon_desc: A textual description of the icon * * Wrapper function for property #AppIndicator:attention-icon-name. */ void app_indicator_set_attention_icon_full (AppIndicator *self, const gchar *icon_name, const gchar * icon_desc) { g_return_if_fail (IS_APP_INDICATOR (self)); g_return_if_fail (icon_name != NULL); gboolean changed = FALSE; AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); if (g_strcmp0 (priv->attention_icon_name, icon_name) != 0) { g_free (priv->attention_icon_name); priv->attention_icon_name = g_strdup (icon_name); g_free(priv->absolute_attention_icon_name); priv->absolute_attention_icon_name = NULL; if (icon_name && icon_name[0] == '/') { priv->absolute_attention_icon_name = append_snap_prefix (icon_name); } changed = TRUE; } if (g_strcmp0(priv->att_accessible_desc, icon_desc) != 0) { g_free (priv->att_accessible_desc); priv->att_accessible_desc = g_strdup (icon_desc); changed = TRUE; } if (changed) { g_signal_emit (self, signals[NEW_ATTENTION_ICON], 0, TRUE); if (priv->dbus_registration != 0 && priv->connection != NULL) { GError * error = NULL; g_dbus_connection_emit_signal(priv->connection, NULL, priv->path, NOTIFICATION_ITEM_DBUS_IFACE, "NewAttentionIcon", NULL, &error); if (error != NULL) { g_warning("Unable to send signal for NewAttentionIcon: %s", error->message); g_error_free(error); } } } return; } /** * app_indicator_set_icon: * @self: The #AppIndicator object to use * @icon_name: The icon name to set. * * Wrapper function for app_indicator_set_icon_full() with a NULL * description. * * Deprecated: Use app_indicator_set_icon_full() */ void app_indicator_set_icon (AppIndicator *self, const gchar *icon_name) { return app_indicator_set_icon_full(self, icon_name, NULL); } /** * app_indicator_set_icon_full: * @self: The #AppIndicator object to use * @icon_name: The icon name to set. * @icon_desc: A textual description of the icon for accessibility * * Sets the default icon to use when the status is active but * not set to attention. In most cases, this should be the * application icon for the program. * * Wrapper function for property #AppIndicator:icon-name and * #AppIndicator::icon-desc. */ void app_indicator_set_icon_full (AppIndicator *self, const gchar *icon_name, const gchar * icon_desc) { g_return_if_fail (IS_APP_INDICATOR (self)); g_return_if_fail (icon_name != NULL); gboolean changed = FALSE; AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); if (g_strcmp0 (priv->icon_name, icon_name) != 0) { if (priv->icon_name) { g_free (priv->icon_name); } priv->icon_name = g_strdup(icon_name); g_free(priv->absolute_icon_name); priv->absolute_icon_name = NULL; if (icon_name && icon_name[0] == '/') { priv->absolute_icon_name = append_snap_prefix (icon_name); } changed = TRUE; } if (g_strcmp0(priv->accessible_desc, icon_desc) != 0) { if (priv->accessible_desc != NULL) { g_free(priv->accessible_desc); } priv->accessible_desc = g_strdup(icon_desc); changed = TRUE; } if (changed) { g_signal_emit (self, signals[NEW_ICON], 0, TRUE); if (priv->dbus_registration != 0 && priv->connection != NULL) { GError * error = NULL; g_dbus_connection_emit_signal(priv->connection, NULL, priv->path, NOTIFICATION_ITEM_DBUS_IFACE, "NewIcon", NULL, &error); if (error != NULL) { g_warning("Unable to send signal for NewIcon: %s", error->message); g_error_free(error); } } } return; } /** * app_indicator_set_label: * @self: The #AppIndicator object to use * @label: The label to show next to the icon. * @guide: A guide to size the label correctly. * * This is a wrapper function for the #AppIndicator:label and * #AppIndicator:guide properties. This function can take #NULL * as either @label or @guide and will clear the entries. */ void app_indicator_set_label (AppIndicator *self, const gchar * label, const gchar * guide) { g_return_if_fail (IS_APP_INDICATOR (self)); /* Note: The label can be NULL, it's okay */ /* Note: The guide can be NULL, it's okay */ g_object_set(G_OBJECT(self), PROP_LABEL_S, label == NULL ? "" : label, PROP_LABEL_GUIDE_S, guide == NULL ? "" : guide, NULL); return; } static const gchar * get_snap_prefix () { const gchar *snap = g_getenv ("SNAP"); return (snap && *snap != '\0') ? snap : NULL; } static gchar * append_snap_prefix (const gchar *path) { gint i; const gchar *snap = get_snap_prefix (); g_autofree gchar *canon_path = NULL; if (snap != NULL && path != NULL) { canon_path = canonicalize_file_name(path); if (g_str_has_prefix (canon_path, "/tmp/")) { g_warning ("Using '/tmp' paths in SNAP environment will lead to unreadable resources"); return NULL; } if (g_str_has_prefix (canon_path, snap) || g_str_has_prefix (canon_path, g_get_home_dir ()) || g_str_has_prefix (canon_path, g_get_user_cache_dir ()) || g_str_has_prefix (canon_path, g_get_user_config_dir ()) || g_str_has_prefix (canon_path, g_get_user_data_dir ()) || g_str_has_prefix (canon_path, g_get_user_runtime_dir ())) { return g_strdup (canon_path); } for (i = 0; i < G_USER_N_DIRECTORIES; ++ i) { if (g_str_has_prefix (canon_path, g_get_user_special_dir (i))) { return g_strdup (canon_path); } } return g_build_path (G_DIR_SEPARATOR_S, snap, canon_path, NULL); } return NULL; } static gchar * get_real_theme_path (AppIndicator * self) { AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); const gchar *theme_path = priv->icon_theme_path; gchar *snapped_path = append_snap_prefix (theme_path); if (snapped_path != NULL) { return snapped_path; } else if (get_snap_prefix ()) { return g_build_path (G_DIR_SEPARATOR_S, g_get_user_data_dir (), "icons", NULL); } return NULL; } /** * app_indicator_set_icon_theme_path: * @self: The #AppIndicator object to use * @icon_theme_path: The icon theme path to set. * * Sets the path to use when searching for icons. */ void app_indicator_set_icon_theme_path (AppIndicator *self, const gchar *icon_theme_path) { g_return_if_fail (IS_APP_INDICATOR (self)); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); if (g_strcmp0 (priv->icon_theme_path, icon_theme_path) != 0) { if (priv->icon_theme_path != NULL) g_free(priv->icon_theme_path); priv->icon_theme_path = g_strdup(icon_theme_path); g_free (priv->absolute_icon_theme_path); priv->absolute_icon_theme_path = get_real_theme_path (self); g_signal_emit (self, signals[NEW_ICON_THEME_PATH], 0, priv->icon_theme_path, TRUE); if (priv->dbus_registration != 0 && priv->connection != NULL) { const gchar *theme_path = priv->absolute_icon_theme_path ? priv->absolute_icon_theme_path : priv->icon_theme_path; GError * error = NULL; g_dbus_connection_emit_signal(priv->connection, NULL, priv->path, NOTIFICATION_ITEM_DBUS_IFACE, "NewIconThemePath", g_variant_new("(s)", theme_path ? theme_path : ""), &error); if (error != NULL) { g_warning("Unable to send signal for NewIconThemePath: %s", error->message); g_error_free(error); } } } return; } /* Does the dbusmenu related work. If there isn't a server, it builds one and if there are menus it runs the parse to put those menus into the server. */ static void setup_dbusmenu (AppIndicator *self) { DbusmenuMenuitem *root = NULL; AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); if (priv->menu) { root = dbusmenu_gtk_parse_menu_structure(priv->menu); } if (priv->menuservice == NULL) { gchar * path = g_strdup_printf(DEFAULT_ITEM_PATH "/%s/Menu", priv->clean_id); priv->menuservice = dbusmenu_server_new (path); g_free(path); } dbusmenu_server_set_root (priv->menuservice, root); /* Drop our local ref as set_root should get it's own. */ if (root != NULL) { g_object_unref(root); } return; } /** * app_indicator_set_menu: * @self: The #AppIndicator * @menu: (allow-none): A #GtkMenu to set * * Sets the menu that should be shown when the Application Indicator * is clicked on in the panel. An application indicator will not * be rendered unless it has a menu. * * Wrapper function for property #AppIndicator:menu. */ void app_indicator_set_menu (AppIndicator *self, GtkMenu *menu) { g_return_if_fail (IS_APP_INDICATOR (self)); g_return_if_fail (GTK_IS_MENU (menu)); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); g_return_if_fail (priv->clean_id != NULL); if (priv->menu != NULL) { g_object_unref (priv->menu); } priv->menu = GTK_WIDGET (menu); g_object_ref_sink (priv->menu); setup_dbusmenu (self); priv->sec_activate_enabled = widget_is_menu_child (self, priv->sec_activate_target); check_connect (self); return; } /** * app_indicator_set_ordering_index: * @self: The #AppIndicator * @ordering_index: A value for the ordering of this app indicator * * Sets the ordering index for the app indicator which effects the * placement of it on the panel. For almost all app indicator * this is not the function you're looking for. * * Wrapper function for property #AppIndicator:ordering-index. */ void app_indicator_set_ordering_index (AppIndicator *self, guint32 ordering_index) { g_return_if_fail (IS_APP_INDICATOR (self)); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); priv->ordering_index = ordering_index; return; } /** * app_indicator_set_secondary_activate_target: * @self: The #AppIndicator * @menuitem: (allow-none): A #GtkWidget to be activated on secondary activation * * Set the @menuitem to be activated when a secondary activation event (i.e. a * middle-click) is emitted over the #AppIndicator icon/label. * * The @menuitem can be also a complex #GtkWidget, but to get activated when * a secondary activation occurs in the #Appindicator, it must be a visible and * active child (or inner-child) of the #AppIndicator:menu. * * Setting @menuitem to %NULL causes to disable this feature. */ void app_indicator_set_secondary_activate_target (AppIndicator *self, GtkWidget *menuitem) { g_return_if_fail (IS_APP_INDICATOR (self)); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); if (priv->sec_activate_target) { g_signal_handlers_disconnect_by_func (priv->sec_activate_target, sec_activate_target_parent_changed, self); g_object_unref(G_OBJECT(priv->sec_activate_target)); priv->sec_activate_target = NULL; } if (menuitem == NULL) { return; } g_return_if_fail (GTK_IS_WIDGET (menuitem)); priv->sec_activate_target = (GtkWidget*)g_object_ref(G_OBJECT(menuitem)); priv->sec_activate_enabled = widget_is_menu_child(self, menuitem); g_signal_connect(menuitem, "parent-set", G_CALLBACK(sec_activate_target_parent_changed), self); } /** * app_indicator_set_title: * @self: The #AppIndicator * @title: (allow-none): Title of the app indicator * * Sets the title of the application indicator, or how it should be referred * in a human readable form. This string should be UTF-8 and localized as it * expected that users will set it. * * In the Unity desktop the most prominent place that this is show will be * in the HUD. HUD listings for this application indicator will start with * the title as the first part of the line for the menu items. * * Setting @title to %NULL removes the title. * * Since: 0.5 * */ void app_indicator_set_title (AppIndicator *self, const gchar * title) { g_return_if_fail (IS_APP_INDICATOR (self)); g_object_set(G_OBJECT(self), PROP_TITLE_S, title == NULL ? "": title, NULL); return; } /** * app_indicator_get_id: * @self: The #AppIndicator object to use * * Wrapper function for property #AppIndicator:id. * * Return value: The current ID */ const gchar * app_indicator_get_id (AppIndicator *self) { g_return_val_if_fail (IS_APP_INDICATOR (self), NULL); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); return priv->id; } /** * app_indicator_get_category: * @self: The #AppIndicator object to use * * Wrapper function for property #AppIndicator:category. * * Return value: The current category. */ AppIndicatorCategory app_indicator_get_category (AppIndicator *self) { g_return_val_if_fail (IS_APP_INDICATOR (self), APP_INDICATOR_CATEGORY_APPLICATION_STATUS); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); return priv->category; } /** * app_indicator_get_status: * @self: The #AppIndicator object to use * * Wrapper function for property #AppIndicator:status. * * Return value: The current status. */ AppIndicatorStatus app_indicator_get_status (AppIndicator *self) { g_return_val_if_fail (IS_APP_INDICATOR (self), APP_INDICATOR_STATUS_PASSIVE); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); return priv->status; } /** * app_indicator_get_icon: * @self: The #AppIndicator object to use * * Wrapper function for property #AppIndicator:icon-name. * * Return value: The current icon name. */ const gchar * app_indicator_get_icon (AppIndicator *self) { g_return_val_if_fail (IS_APP_INDICATOR (self), NULL); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); return priv->icon_name; } /** * app_indicator_get_icon_desc: * @self: The #AppIndicator object to use * * Wrapper function for property #AppIndicator:icon-desc. * * Return value: The current icon description. */ const gchar * app_indicator_get_icon_desc (AppIndicator *self) { g_return_val_if_fail (IS_APP_INDICATOR (self), NULL); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); return priv->accessible_desc; } /** * app_indicator_get_icon_theme_path: * @self: The #AppIndicator object to use * * Wrapper function for property #AppIndicator:icon-theme-path. * * Return value: The current icon theme path. */ const gchar * app_indicator_get_icon_theme_path (AppIndicator *self) { g_return_val_if_fail (IS_APP_INDICATOR (self), NULL); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); return priv->icon_theme_path; } /** * app_indicator_get_attention_icon: * @self: The #AppIndicator object to use * * Wrapper function for property #AppIndicator:attention-icon-name. * * Return value: The current attention icon name. */ const gchar * app_indicator_get_attention_icon (AppIndicator *self) { g_return_val_if_fail (IS_APP_INDICATOR (self), NULL); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); return priv->attention_icon_name; } /** * app_indicator_get_attention_icon_desc: * @self: The #AppIndicator object to use * * Wrapper function for property #AppIndicator:attention-icon-desc. * * Return value: The current attention icon description. */ const gchar * app_indicator_get_attention_icon_desc (AppIndicator *self) { g_return_val_if_fail (IS_APP_INDICATOR (self), NULL); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); return priv->att_accessible_desc; } /** * app_indicator_get_title: * @self: The #AppIndicator object to use * * Gets the title of the application indicator. See the function * app_indicator_set_title() for information on the title. * * Return value: The current title. * * Since: 0.5 * */ const gchar * app_indicator_get_title (AppIndicator *self) { g_return_val_if_fail (IS_APP_INDICATOR (self), NULL); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); return priv->title; } /** * app_indicator_get_menu: * @self: The #AppIndicator object to use * * Gets the menu being used for this application indicator. * Wrapper function for property #AppIndicator:menu. * * Returns: (transfer none): A #GtkMenu object or %NULL if one hasn't been set. */ GtkMenu * app_indicator_get_menu (AppIndicator *self) { g_return_val_if_fail (IS_APP_INDICATOR (self), NULL); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); return GTK_MENU(priv->menu); } /** * app_indicator_get_label: * @self: The #AppIndicator object to use * * Wrapper function for property #AppIndicator:label. * * Return value: The current label. */ const gchar * app_indicator_get_label (AppIndicator *self) { g_return_val_if_fail (IS_APP_INDICATOR (self), NULL); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); return priv->label; } /** * app_indicator_get_label_guide: * @self: The #AppIndicator object to use * * Wrapper function for property #AppIndicator:label-guide. * * Return value: The current label guide. */ const gchar * app_indicator_get_label_guide (AppIndicator *self) { g_return_val_if_fail (IS_APP_INDICATOR (self), NULL); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); return priv->label_guide; } /** * app_indicator_get_ordering_index: * @self: The #AppIndicator object to use * * Wrapper function for property #AppIndicator:ordering-index. * * Return value: The current ordering index. */ guint32 app_indicator_get_ordering_index (AppIndicator *self) { g_return_val_if_fail (IS_APP_INDICATOR (self), 0); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); if (priv->ordering_index == 0) { return _generate_id(priv->category, priv->id); } else { return priv->ordering_index; } } /** * app_indicator_get_secondary_activate_target: * @self: The #AppIndicator object to use * * Gets the menuitem being called on secondary-activate event. * * Returns: (transfer none): A #GtkWidget object or %NULL if none has been set. */ GtkWidget * app_indicator_get_secondary_activate_target (AppIndicator *self) { g_return_val_if_fail (IS_APP_INDICATOR (self), NULL); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); return GTK_WIDGET(priv->sec_activate_target); } #define APP_INDICATOR_SHORTY_NICK "app-indicator-shorty-nick" /* Callback when an item from the desktop shortcuts gets called. */ static void shorty_activated_cb (DbusmenuMenuitem * mi, guint timestamp, gpointer user_data) { gchar * nick = g_object_get_data(G_OBJECT(mi), APP_INDICATOR_SHORTY_NICK); g_return_if_fail(nick != NULL); g_return_if_fail(IS_APP_INDICATOR(user_data)); AppIndicator * self = APP_INDICATOR(user_data); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); g_return_if_fail(priv->shorties != NULL); indicator_desktop_shortcuts_nick_exec_with_context(priv->shorties, nick, NULL); return; } /** * app_indicator_build_menu_from_desktop: * @self: The #AppIndicator object to use * @desktop_file: A path to the desktop file to build the menu from * @desktop_profile: Which entries should be used from the desktop file * * This function allows for building the Application Indicator menu * from a static desktop file. */ void app_indicator_build_menu_from_desktop (AppIndicator * self, const gchar * desktop_file, const gchar * desktop_profile) { g_return_if_fail(IS_APP_INDICATOR(self)); AppIndicatorPrivate * priv = app_indicator_get_instance_private(self); /* Build a new shortcuts object */ if (priv->shorties != NULL) { g_object_unref(priv->shorties); priv->shorties = NULL; } priv->shorties = indicator_desktop_shortcuts_new(desktop_file, desktop_profile); g_return_if_fail(priv->shorties != NULL); const gchar ** nicks = indicator_desktop_shortcuts_get_nicks(priv->shorties); int nick_num; /* Place the items on a dbusmenu */ DbusmenuMenuitem * root = dbusmenu_menuitem_new(); for (nick_num = 0; nicks[nick_num] != NULL; nick_num++) { DbusmenuMenuitem * item = dbusmenu_menuitem_new(); g_object_set_data(G_OBJECT(item), APP_INDICATOR_SHORTY_NICK, (gpointer)nicks[nick_num]); gchar * name = indicator_desktop_shortcuts_nick_get_name(priv->shorties, nicks[nick_num]); dbusmenu_menuitem_property_set(item, DBUSMENU_MENUITEM_PROP_LABEL, name); g_free(name); g_signal_connect(G_OBJECT(item), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(shorty_activated_cb), self); dbusmenu_menuitem_child_append(root, item); } /* Swap it if needed */ if (priv->menuservice == NULL) { gchar * path = g_strdup_printf(DEFAULT_ITEM_PATH "/%s/Menu", priv->clean_id); priv->menuservice = dbusmenu_server_new (path); g_free(path); } dbusmenu_server_set_root (priv->menuservice, root); if (priv->menu != NULL) { g_object_unref(G_OBJECT(priv->menu)); priv->menu = NULL; } return; } libayatana-appindicator-0.5.93/src/app-indicator-enum-types.c.in0000644000000000000000000000341314512163465021464 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 "@basename@" /*** 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 ***/ libayatana-appindicator-0.5.93/src/app-indicator-enum-types.h.in0000644000000000000000000000301614512163465021470 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: "@basename@" */ /*** 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 ***/ libayatana-appindicator-0.5.93/src/app-indicator.h0000644000000000000000000003476214512163465016773 0ustar /* An object to represent the application as an application indicator in the system panel. Copyright 2009 Canonical Ltd. Authors: Ted Gould Cody Russell 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_H__ #define __APP_INDICATOR_H__ #include G_BEGIN_DECLS /** * APP_INDICATOR_TYPE: * * Get the #GType for a #AppIndicator. */ /** * APP_INDICATOR: * @obj: The object to convert * * Safely convert a #GObject into an #AppIndicator. */ /** * APP_INDICATOR_CLASS: * @klass: #GObjectClass based class to convert. * * Safely convert a #GObjectClass into a #AppIndicatorClass. */ /** * IS_APP_INDICATOR: * @obj: An #GObject to check * * Checks to see if @obj is in the object hierarchy of #AppIndicator. */ /** * IS_APP_INDICATOR_CLASS: * @klass: An #GObjectClass to check * * Checks to see if @klass is in the object class hierarchy of #AppIndicatorClass. */ /** * APP_INDICATOR_GET_CLASS: * @obj: A #GObject in the class hierarchy of #AppIndicator. * * Gets a pointer to the #AppIndicatorClass for the object @obj. */ #define APP_INDICATOR_TYPE (app_indicator_get_type ()) #define APP_INDICATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), APP_INDICATOR_TYPE, AppIndicator)) #define APP_INDICATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), APP_INDICATOR_TYPE, AppIndicatorClass)) #define IS_APP_INDICATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), APP_INDICATOR_TYPE)) #define IS_APP_INDICATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), APP_INDICATOR_TYPE)) #define APP_INDICATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), APP_INDICATOR_TYPE, AppIndicatorClass)) /** * APP_INDICATOR_SIGNAL_NEW_ICON: * * String identifier for the #AppIndicator::new-icon signal. */ /** * APP_INDICATOR_SIGNAL_NEW_ATTENTION_ICON: * * String identifier for the #AppIndicator::new-attention-icon signal. */ /** * APP_INDICATOR_SIGNAL_NEW_STATUS: * * String identifier for the #AppIndicator::new-status signal. */ /** * APP_INDICATOR_SIGNAL_NEW_LABEL: * * String identifier for the #AppIndicator::new-label signal. */ /** * APP_INDICATOR_SIGNAL_CONNECTION_CHANGED: * * String identifier for the #AppIndicator::connection-changed signal. */ /** * APP_INDICATOR_SIGNAL_NEW_ICON_THEME_PATH: * * String identifier for the #AppIndicator::new-icon-theme-path signal. */ /** * APP_INDICATOR_SIGNAL_SCROLL_EVENT: * * String identifier for the #AppIndicator::scroll-event signal. */ #define APP_INDICATOR_SIGNAL_NEW_ICON "new-icon" #define APP_INDICATOR_SIGNAL_NEW_ATTENTION_ICON "new-attention-icon" #define APP_INDICATOR_SIGNAL_NEW_STATUS "new-status" #define APP_INDICATOR_SIGNAL_NEW_LABEL "new-label" #define APP_INDICATOR_SIGNAL_CONNECTION_CHANGED "connection-changed" #define APP_INDICATOR_SIGNAL_NEW_ICON_THEME_PATH "new-icon-theme-path" #define APP_INDICATOR_SIGNAL_SCROLL_EVENT "scroll-event" /** * AppIndicatorCategory: * @APP_INDICATOR_CATEGORY_APPLICATION_STATUS: The indicator is used to display the status of the application. * @APP_INDICATOR_CATEGORY_COMMUNICATIONS: The application is used for communication with other people. * @APP_INDICATOR_CATEGORY_SYSTEM_SERVICES: A system indicator relating to something in the user's system. * @APP_INDICATOR_CATEGORY_HARDWARE: An indicator relating to the user's hardware. * @APP_INDICATOR_CATEGORY_OTHER: Something not defined in this enum, please don't use unless you really need it. * * The category provides grouping for the indicators so that * users can find indicators that are similar together. */ typedef enum { /*< prefix=APP_INDICATOR_CATEGORY >*/ APP_INDICATOR_CATEGORY_APPLICATION_STATUS, /*< nick=ApplicationStatus >*/ APP_INDICATOR_CATEGORY_COMMUNICATIONS, /*< nick=Communications >*/ APP_INDICATOR_CATEGORY_SYSTEM_SERVICES, /*< nick=SystemServices >*/ APP_INDICATOR_CATEGORY_HARDWARE, /*< nick=Hardware >*/ APP_INDICATOR_CATEGORY_OTHER /*< nick=Other >*/ } AppIndicatorCategory; /** * AppIndicatorStatus: * @APP_INDICATOR_STATUS_PASSIVE: The indicator should not be shown to the user. * @APP_INDICATOR_STATUS_ACTIVE: The indicator should be shown in it's default state. * @APP_INDICATOR_STATUS_ATTENTION: The indicator should show it's attention icon. * * These are the states that the indicator can be on in * the user's panel. The indicator by default starts * in the state @APP_INDICATOR_STATUS_PASSIVE and can be * shown by setting it to @APP_INDICATOR_STATUS_ACTIVE. */ typedef enum { /*< prefix=APP_INDICATOR_STATUS >*/ APP_INDICATOR_STATUS_PASSIVE, /*< nick=Passive >*/ APP_INDICATOR_STATUS_ACTIVE, /*< nick=Active >*/ APP_INDICATOR_STATUS_ATTENTION /*< nick=NeedsAttention >*/ } AppIndicatorStatus; typedef struct _AppIndicator AppIndicator; typedef struct _AppIndicatorClass AppIndicatorClass; /** * AppIndicatorClass: * @parent_class: Mia familia * @new_icon: Slot for #AppIndicator::new-icon. * @new_attention_icon: Slot for #AppIndicator::new-attention-icon. * @new_status: Slot for #AppIndicator::new-status. * @new_icon_theme_path: Slot for #AppIndicator::new-icon-theme-path * @new_label: Slot for #AppIndicator::new-label. * @connection_changed: Slot for #AppIndicator::connection-changed. * @scroll_event: Slot for #AppIndicator::scroll-event * @app_indicator_reserved_ats: Reserved for future use. * @fallback: Function that gets called to make a #GtkStatusIcon when * there is no Application Indicator area available. * @unfallback: The function that gets called if an Application * Indicator area appears after the fallback has been created. * @app_indicator_reserved_1: Reserved for future use. * @app_indicator_reserved_2: Reserved for future use. * @app_indicator_reserved_3: Reserved for future use. * @app_indicator_reserved_4: Reserved for future use. * @app_indicator_reserved_5: Reserved for future use. * @app_indicator_reserved_6: Reserved for future use. * * The signals and external functions that make up the #AppIndicator * class object. */ struct _AppIndicatorClass { /* Parent */ GObjectClass parent_class; /* DBus Signals */ void (* new_icon) (AppIndicator *indicator, gpointer user_data); void (* new_attention_icon) (AppIndicator *indicator, gpointer user_data); void (* new_status) (AppIndicator *indicator, const gchar *status, gpointer user_data); void (* new_icon_theme_path) (AppIndicator *indicator, const gchar *icon_theme_path, gpointer user_data); void (* new_label) (AppIndicator *indicator, const gchar *label, const gchar *guide, gpointer user_data); /* Local Signals */ void (* connection_changed) (AppIndicator * indicator, gboolean connected, gpointer user_data); void (* scroll_event) (AppIndicator * indicator, gint delta, GdkScrollDirection direction, gpointer user_data); void (*app_indicator_reserved_ats)(void); /* Overridable Functions */ GtkStatusIcon * (*fallback) (AppIndicator * indicator); void (*unfallback) (AppIndicator * indicator, GtkStatusIcon * status_icon); /* Reserved */ void (*app_indicator_reserved_1)(void); void (*app_indicator_reserved_2)(void); void (*app_indicator_reserved_3)(void); void (*app_indicator_reserved_4)(void); void (*app_indicator_reserved_5)(void); void (*app_indicator_reserved_6)(void); }; /** * AppIndicator: * parent: Parent object. * priv: Internal data. * * An application indicator represents the values that are needed to show a * unique status in the panel for an application. In general, applications * should try to fit in the other indicators that are available on the * panel before using this. But, sometimes it is necissary. * */ struct _AppIndicator { GObject parent; }; /* GObject Stuff */ GType app_indicator_get_type (void) G_GNUC_CONST; AppIndicator *app_indicator_new (const gchar *id, const gchar *icon_name, AppIndicatorCategory category); AppIndicator *app_indicator_new_with_path (const gchar *id, const gchar *icon_name, AppIndicatorCategory category, const gchar *icon_theme_path); /* Set properties */ void app_indicator_set_status (AppIndicator *self, AppIndicatorStatus status); void app_indicator_set_attention_icon (AppIndicator *self, const gchar *icon_name); void app_indicator_set_attention_icon_full (AppIndicator *self, const gchar *icon_name, const gchar *icon_desc); void app_indicator_set_menu (AppIndicator *self, GtkMenu *menu); void app_indicator_set_icon (AppIndicator *self, const gchar *icon_name); void app_indicator_set_icon_full (AppIndicator *self, const gchar *icon_name, const gchar *icon_desc); void app_indicator_set_label (AppIndicator *self, const gchar *label, const gchar *guide); void app_indicator_set_icon_theme_path(AppIndicator *self, const gchar *icon_theme_path); void app_indicator_set_ordering_index (AppIndicator *self, guint32 ordering_index); void app_indicator_set_secondary_activate_target (AppIndicator *self, GtkWidget *menuitem); void app_indicator_set_title (AppIndicator *self, const gchar *title); /* Get properties */ const gchar * app_indicator_get_id (AppIndicator *self); AppIndicatorCategory app_indicator_get_category (AppIndicator *self); AppIndicatorStatus app_indicator_get_status (AppIndicator *self); const gchar * app_indicator_get_icon (AppIndicator *self); const gchar * app_indicator_get_icon_desc (AppIndicator *self); const gchar * app_indicator_get_icon_theme_path (AppIndicator *self); const gchar * app_indicator_get_attention_icon (AppIndicator *self); const gchar * app_indicator_get_attention_icon_desc (AppIndicator *self); const gchar * app_indicator_get_title (AppIndicator *self); GtkMenu * app_indicator_get_menu (AppIndicator *self); const gchar * app_indicator_get_label (AppIndicator *self); const gchar * app_indicator_get_label_guide (AppIndicator *self); guint32 app_indicator_get_ordering_index (AppIndicator *self); GtkWidget * app_indicator_get_secondary_activate_target (AppIndicator *self); /* Helpers */ void app_indicator_build_menu_from_desktop (AppIndicator * self, const gchar * desktop_file, const gchar * desktop_profile); G_END_DECLS /** * SECTION:app-indicator * @short_description: An object to put application information * into the panel. * @stability: Unstable * @include: libappindicator/app-indicator.h * * An application indicator is a way for an application to put * a menu into the panel on the user's screen. This allows the * user to interact with the application even though it might * not be visible to the user at the time. In most cases this * is not a good solution as there are other ways to inform the * user. It should only be use if persistence is a desired * feature for the user (not for your marketing purpose of * having your logo in the panel). */ #endif libayatana-appindicator-0.5.93/src/application-service-marshal.list0000644000000000000000000000162214512163465022340 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 VOID: INT, UINT VOID: INT, INT libayatana-appindicator-0.5.93/src/AyatanaAppIndicator-0.1.metadata0000644000000000000000000000013714512163465021727 0ustar AyatanaAppIndicator3 name="AppIndicator" Indicator.priv hidden="1" IndicatorPrivate hidden="1" libayatana-appindicator-0.5.93/src/ayatana-appindicator-0.1.pc.in0000644000000000000000000000053314512163465021373 0ustar prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ bindir=@bindir@ includedir=@includedir@ Cflags: -I${includedir}/libayatana-appindicator-0.1 Requires: ayatana-indicator-0.4 dbusmenu-glib-0.4 gtk+-2.0 Libs: -L${libdir} -layatana-appindicator Name: ayatana-appindicator-0.1 Description: Ayatana Application Indicators Version: @VERSION@ libayatana-appindicator-0.5.93/src/AyatanaAppIndicator3-0.1.metadata0000644000000000000000000000013714512163465022012 0ustar AyatanaAppIndicator3 name="AppIndicator" Indicator.priv hidden="1" IndicatorPrivate hidden="1" libayatana-appindicator-0.5.93/src/ayatana-appindicator3-0.1.pc.in0000644000000000000000000000066314512163465021462 0ustar prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=${prefix} libdir=@CMAKE_INSTALL_FULL_LIBDIR@ bindir=@CMAKE_INSTALL_FULL_BINDIR@ includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ Cflags: -I${includedir}/libayatana-appindicator3-0.1 Requires: ayatana-indicator3-0.4 dbusmenu-glib-0.4 glib-2.0 gtk+-3.0 Libs: -L${libdir} -layatana-appindicator3 Name: ayatana-appindicator3-0.1 Description: Ayatana Application Indicators Version: @PROJECT_VERSION@ libayatana-appindicator-0.5.93/src/CMakeLists.txt0000644000000000000000000001653714512163465016630 0ustar set(HEADERS app-indicator.h ) set(SOURCES app-indicator.c app-indicator-enum-types.c application-service-marshal.c generate-id.c gen-notification-item.xml.c gen-notification-watcher.xml.c ) if (FLAVOUR_GTK3) set (ayatana_appindicator_gtkver "ayatana-appindicator3") set (ayatana_appindicator_girver "AyatanaAppIndicator3") set (gtk_girver "Gtk-3.0") elseif (FLAVOUR_GTK2) set (ayatana_appindicator_gtkver "ayatana-appindicator") set (ayatana_appindicator_girver "AyatanaAppIndicator") set (gtk_girver "Gtk-2.0") endif() install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/app-indicator.h" DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}/lib${ayatana_appindicator_gtkver}-0.1/libayatana-appindicator") # ayatana-appindicator{,3}-0.1.pc configure_file("${CMAKE_CURRENT_SOURCE_DIR}/${ayatana_appindicator_gtkver}-0.1.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/${ayatana_appindicator_gtkver}-0.1.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${ayatana_appindicator_gtkver}-0.1.pc" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig") # app-indicator-enum-types.h find_program(GLIB_MKENUMS glib-mkenums) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/app-indicator-enum-types.h" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${GLIB_MKENUMS} --template app-indicator-enum-types.h.in ${HEADERS} --output="${CMAKE_CURRENT_BINARY_DIR}/app-indicator-enum-types.h" ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/app-indicator-enum-types.h" DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}/lib${ayatana_appindicator_gtkver}-0.1/libayatana-appindicator") # app-indicator-enum-types.c add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/app-indicator-enum-types.c" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/app-indicator-enum-types.h" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${GLIB_MKENUMS} --template app-indicator-enum-types.c.in ${HEADERS} --output="${CMAKE_CURRENT_BINARY_DIR}/app-indicator-enum-types.c" ) find_program(GLIB_GENMARSHAL glib-genmarshal) # application-service-marshal.h add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/application-service-marshal.h" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/app-indicator-enum-types.c" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${GLIB_GENMARSHAL} --prefix=_application_service_marshal --header application-service-marshal.list --quiet --output="${CMAKE_CURRENT_BINARY_DIR}/application-service-marshal.h" ) # application-service-marshal.c add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/application-service-marshal.c" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/application-service-marshal.h" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${GLIB_GENMARSHAL} --prefix=_application_service_marshal --body application-service-marshal.list --include-header=application-service-marshal.h --quiet --output="${CMAKE_CURRENT_BINARY_DIR}/application-service-marshal.c" ) # gen-notification-item.xml.h file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/gen-notification-item.xml.h" "extern const char * _notification_item;") # gen-notification-item.xml.c file(READ "${CMAKE_CURRENT_SOURCE_DIR}/notification-item.xml" GEN_NOTIFICATION_ITEM_XML_C) string(REPLACE "\"" "\\\"" GEN_NOTIFICATION_ITEM_XML_C ${GEN_NOTIFICATION_ITEM_XML_C}) string(REPLACE "\n" "\\n\"\n\"" GEN_NOTIFICATION_ITEM_XML_C ${GEN_NOTIFICATION_ITEM_XML_C}) string(REGEX REPLACE "\n\"$" "\n" GEN_NOTIFICATION_ITEM_XML_C ${GEN_NOTIFICATION_ITEM_XML_C}) string(PREPEND GEN_NOTIFICATION_ITEM_XML_C "const char * _notification_item = \n\"") string(APPEND GEN_NOTIFICATION_ITEM_XML_C "\;") file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/gen-notification-item.xml.c" ${GEN_NOTIFICATION_ITEM_XML_C}) # gen-notification-watcher.xml.h file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/gen-notification-watcher.xml.h" "extern const char * _notification_watcher;") # gen-notification-watcher.xml.c file(READ "${CMAKE_CURRENT_SOURCE_DIR}/notification-watcher.xml" GEN_NOTIFICATION_WATCHER_XML_C) string(REPLACE "\"" "\\\"" GEN_NOTIFICATION_WATCHER_XML_C ${GEN_NOTIFICATION_WATCHER_XML_C}) string(REPLACE "\n" "\\n\"\n\"" GEN_NOTIFICATION_WATCHER_XML_C ${GEN_NOTIFICATION_WATCHER_XML_C}) string(REGEX REPLACE "\n\"$" "\n" GEN_NOTIFICATION_WATCHER_XML_C ${GEN_NOTIFICATION_WATCHER_XML_C}) string(PREPEND GEN_NOTIFICATION_WATCHER_XML_C "const char * _notification_watcher = \n\"") string(APPEND GEN_NOTIFICATION_WATCHER_XML_C "\;") file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/gen-notification-watcher.xml.c" ${GEN_NOTIFICATION_WATCHER_XML_C}) # libayatana-appindicator{,3}.so set_source_files_properties(${SOURCES} PROPERTIES COMPILE_FLAGS ${COMPILE_FLAGS}) add_library("${ayatana_appindicator_gtkver}" SHARED ${SOURCES}) set_target_properties("${ayatana_appindicator_gtkver}" PROPERTIES VERSION 1.0.0 SOVERSION 1) target_compile_definitions("${ayatana_appindicator_gtkver}" PUBLIC G_LOG_DOMAIN="libayatana-appindicator") target_include_directories("${ayatana_appindicator_gtkver}" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS}) target_include_directories("${ayatana_appindicator_gtkver}" PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) target_include_directories("${ayatana_appindicator_gtkver}" PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries("${ayatana_appindicator_gtkver}" ${PROJECT_DEPS_LIBRARIES}) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/lib${ayatana_appindicator_gtkver}.so" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/lib${ayatana_appindicator_gtkver}.so.1" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/lib${ayatana_appindicator_gtkver}.so.1.0.0" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}") # AyatanaAppIndicator{,3}-0.1.gir find_package(GObjectIntrospection REQUIRED) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${ayatana_appindicator_girver}-0.1.gir" DEPENDS "${ayatana_appindicator_gtkver}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${INTROSPECTION_SCANNER} app-indicator.c ${HEADERS} --add-include-path=${CMAKE_CURRENT_BINARY_DIR} --c-include=libayatana-appindicator/app-indicator.h --symbol-prefix=app --identifier-prefix=App --namespace=${ayatana_appindicator_girver} --nsversion=0.1 --quiet --warn-all --include=GObject-2.0 --include=${gtk_girver} --library-path=${CMAKE_CURRENT_BINARY_DIR} --library="${ayatana_appindicator_gtkver}" --output "${CMAKE_CURRENT_BINARY_DIR}/${ayatana_appindicator_girver}-0.1.gir" ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${ayatana_appindicator_girver}-0.1.gir" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/gir-1.0") # AyatanaAppIndicator{,3}-0.1.typelib add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${ayatana_appindicator_girver}-0.1.typelib" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${ayatana_appindicator_girver}-0.1.gir" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${INTROSPECTION_COMPILER} --includedir=${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/${ayatana_appindicator_girver}-0.1.gir -o "${CMAKE_CURRENT_BINARY_DIR}/${ayatana_appindicator_girver}-0.1.typelib" ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${ayatana_appindicator_girver}-0.1.typelib" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/girepository-1.0") add_custom_target(src ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${ayatana_appindicator_girver}-0.1.typelib") libayatana-appindicator-0.5.93/src/dbus-shared.h0000644000000000000000000000261014512163465016425 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 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" #define NOTIFICATION_APPROVER_DBUS_IFACE "org.ayatana.StatusNotifierApprover" libayatana-appindicator-0.5.93/src/generate-id.c0000644000000000000000000000321614512163465016406 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) { guchar category = 0; guchar first = 0; guchar second = 0; guchar 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 << 8) + first) << 8) + second) << 8) + third; } libayatana-appindicator-0.5.93/src/generate-id.h0000644000000000000000000000163014512163465016411 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 "app-indicator.h" guint32 _generate_id (const AppIndicatorCategory category, const gchar * id); #endif /* __GENERATE_ID_H__ */ libayatana-appindicator-0.5.93/src/notification-item.xml0000644000000000000000000000357014512163465020225 0ustar libayatana-appindicator-0.5.93/src/notification-watcher.xml0000644000000000000000000000173314512163465020723 0ustar libayatana-appindicator-0.5.93/tests/CMakeLists.txt0000644000000000000000000002643314512163465017177 0ustar if (FLAVOUR_GTK3) set (ayatana_appindicator_gtkver "ayatana-appindicator3") elseif (FLAVOUR_GTK2) set (ayatana_appindicator_gtkver "ayatana-appindicator") endif() # test-libappindicator set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator.c" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} -include ${CMAKE_SOURCE_DIR}/src/app-indicator.h") add_executable("test-libappindicator" "${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator.c") target_compile_definitions("test-libappindicator" PUBLIC SRCDIR="${CMAKE_CURRENT_SOURCE_DIR}") target_include_directories("test-libappindicator" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS}) target_include_directories("test-libappindicator" PUBLIC "${CMAKE_SOURCE_DIR}/src") target_link_libraries("test-libappindicator" "${PROJECT_DEPS_LIBRARIES} -l${ayatana_appindicator_gtkver}") target_link_directories("test-libappindicator" PUBLIC "${CMAKE_BINARY_DIR}/src") add_dependencies("test-libappindicator" "${ayatana_appindicator_gtkver}") # test-libappindicator-dbus-client set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator.c" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS}") add_executable("test-libappindicator-dbus-client" "${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-dbus-client.c") target_include_directories("test-libappindicator-dbus-client" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS}) target_include_directories("test-libappindicator-dbus-client" PUBLIC "${CMAKE_SOURCE_DIR}/src") target_link_libraries("test-libappindicator-dbus-client" "${PROJECT_DEPS_LIBRARIES} -l${ayatana_appindicator_gtkver}") target_link_directories("test-libappindicator-dbus-client" PUBLIC "${CMAKE_BINARY_DIR}/src") add_dependencies("test-libappindicator-dbus-client" "${ayatana_appindicator_gtkver}") # test-libappindicator-dbus-server set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-dbus-server.c" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS}") add_executable("test-libappindicator-dbus-server" "${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-dbus-server.c") target_include_directories("test-libappindicator-dbus-server" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS}) target_include_directories("test-libappindicator-dbus-server" PUBLIC "${CMAKE_SOURCE_DIR}/src") target_link_libraries("test-libappindicator-dbus-server" "${PROJECT_DEPS_LIBRARIES} -l${ayatana_appindicator_gtkver}") target_link_directories("test-libappindicator-dbus-server" PUBLIC "${CMAKE_BINARY_DIR}/src") add_dependencies("test-libappindicator-dbus-server" "${ayatana_appindicator_gtkver}") # test-libappindicator-status-client set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-status-client.c" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS}") add_executable("test-libappindicator-status-client" "${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-status-client.c") target_include_directories("test-libappindicator-status-client" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS}) target_link_libraries("test-libappindicator-status-client" "${PROJECT_DEPS_LIBRARIES} -l${ayatana_appindicator_gtkver}") target_link_directories("test-libappindicator-status-client" PUBLIC "${CMAKE_BINARY_DIR}/src") add_dependencies("test-libappindicator-status-client" "${ayatana_appindicator_gtkver}") # test-libappindicator-status-server set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-status-server.c" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS}") add_executable("test-libappindicator-status-server" "${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-status-server.c") target_include_directories("test-libappindicator-status-server" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS}) target_include_directories("test-libappindicator-status-server" PUBLIC "${CMAKE_SOURCE_DIR}/src") target_link_libraries("test-libappindicator-status-server" "${PROJECT_DEPS_LIBRARIES} -l${ayatana_appindicator_gtkver}") target_link_directories("test-libappindicator-status-server" PUBLIC "${CMAKE_BINARY_DIR}/src") add_dependencies("test-libappindicator-status-server" "${ayatana_appindicator_gtkver}") # test-libappindicator-fallback-item set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-fallback-item.c" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS}") add_executable("test-libappindicator-fallback-item" "${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-fallback-item.c") target_include_directories("test-libappindicator-fallback-item" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS}) target_include_directories("test-libappindicator-fallback-item" PUBLIC "${CMAKE_SOURCE_DIR}/src") target_link_libraries("test-libappindicator-fallback-item" "${PROJECT_DEPS_LIBRARIES} -l${ayatana_appindicator_gtkver}") target_link_directories("test-libappindicator-fallback-item" PUBLIC "${CMAKE_BINARY_DIR}/src") add_dependencies("test-libappindicator-fallback-item" "${ayatana_appindicator_gtkver}") # test-libappindicator-fallback-watcher set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-fallback-watcher.c" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS}") add_executable("test-libappindicator-fallback-watcher" "${CMAKE_CURRENT_SOURCE_DIR}/test-libappindicator-fallback-watcher.c") target_include_directories("test-libappindicator-fallback-watcher" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS}) target_link_libraries("test-libappindicator-fallback-watcher" "${PROJECT_DEPS_LIBRARIES} -l${ayatana_appindicator_gtkver}") target_link_directories("test-libappindicator-fallback-watcher" PUBLIC "${CMAKE_BINARY_DIR}/src") add_dependencies("test-libappindicator-fallback-watcher" "${ayatana_appindicator_gtkver}") # test-simple-app set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/test-simple-app.c" PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS}") add_executable("test-simple-app" "${CMAKE_CURRENT_SOURCE_DIR}/test-simple-app.c") target_include_directories("test-simple-app" PUBLIC ${PROJECT_DEPS_INCLUDE_DIRS}) target_include_directories("test-simple-app" PUBLIC "${CMAKE_SOURCE_DIR}/src") target_link_libraries("test-simple-app" "${PROJECT_DEPS_LIBRARIES} -l${ayatana_appindicator_gtkver}") target_link_directories("test-simple-app" PUBLIC "${CMAKE_BINARY_DIR}/src") add_dependencies("test-simple-app" "${ayatana_appindicator_gtkver}") # test-libappindicator-fallback find_program(DBUS_TEST_RUNNER dbus-test-runner) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-fallback" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-fallback-watcher" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-fallback-item" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} VERBATIM COMMAND echo "#!/bin/bash" > "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-fallback" COMMAND echo "export DISPLAY=" >> "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-fallback" COMMAND echo ". ${CMAKE_CURRENT_SOURCE_DIR}/run-xvfb.sh" >> "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-fallback" COMMAND echo "${DBUS_TEST_RUNNER} --keep-env -m 300 --dbus-config /usr/share/dbus-test-runner/session.conf --task ${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-fallback-watcher --task-name Watcher --ignore-return --task ${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-fallback-item --task-name Item" >> "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-fallback" COMMAND chmod +x "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-fallback" ) add_test("test-libappindicator-fallback" "test-libappindicator-fallback") # test-libappindicator-dbus add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-dbus" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-dbus-client" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-dbus-server" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} VERBATIM COMMAND echo "#!/bin/bash" > "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-dbus" COMMAND echo "export DISPLAY=" >> "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-dbus" COMMAND echo ". ${CMAKE_CURRENT_SOURCE_DIR}/run-xvfb.sh" >> "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-dbus" COMMAND echo "${DBUS_TEST_RUNNER} --keep-env -m 300 --dbus-config /usr/share/dbus-test-runner/session.conf --task ${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-dbus-client --task-name Client --ignore-return --task ${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-dbus-server --task-name Server" >> "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-dbus" COMMAND chmod +x "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-dbus" ) add_test("test-libappindicator-dbus" "test-libappindicator-dbus") # test-libappindicator-status add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-status" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-status-client" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-status-server" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} VERBATIM COMMAND echo "#!/bin/bash" > "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-status" COMMAND echo "export DISPLAY=" >> "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-status" COMMAND echo ". ${CMAKE_CURRENT_SOURCE_DIR}/run-xvfb.sh" >> "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-status" COMMAND echo "${DBUS_TEST_RUNNER} --keep-env -m 300 --dbus-config /usr/share/dbus-test-runner/session.conf --task ${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-status-client --task-name Client --ignore-return --task ${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-status-server --task-name Server" >> "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-status" COMMAND chmod +x "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator-status" ) add_test("test-libappindicator-status" "test-libappindicator-status") # libappindicator-tests-gtester add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests-gtester" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} VERBATIM COMMAND echo "#!/bin/sh" > "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests-gtester" COMMAND echo "gtester -k --verbose -o=${CMAKE_CURRENT_BINARY_DIR}/libappindicator-check-results.xml ${CMAKE_CURRENT_BINARY_DIR}/test-libappindicator" >> "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests-gtester" COMMAND chmod +x "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests-gtester" ) # libappindicator-tests add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests" DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests-gtester" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} VERBATIM COMMAND echo "#!/bin/bash" > "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests" COMMAND echo "export DISPLAY=" >> "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests" COMMAND echo ". ${CMAKE_CURRENT_SOURCE_DIR}/run-xvfb.sh" >> "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests" COMMAND echo "${DBUS_TEST_RUNNER} --keep-env -m 300 --dbus-config /usr/share/dbus-test-runner/session.conf --task ${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests-gtester" >> "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests" COMMAND chmod +x "${CMAKE_CURRENT_BINARY_DIR}/libappindicator-tests" ) add_test("libappindicator-tests" "libappindicator-tests") add_custom_target("tests" ALL DEPENDS "test-libappindicator-fallback" "test-libappindicator-dbus" "test-libappindicator-status" "libappindicator-tests") libayatana-appindicator-0.5.93/tests/run-xvfb.sh0000644000000000000000000000156614512163465016542 0ustar if [ "$DISPLAY" == "" ]; then Xvfb -ac -noreset -screen 0 800x600x16 -help 2>/dev/null 1>&2 XID=`for id in 101 102 103 104 105 106 107 197 199 211 223 227 293 307 308 309 310 311 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 4703 4721 4723 4729 4733 4751 9973 9974 9975 9976 9977 9978 9979 9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 ; do test -e /tmp/.X$id-lock || { echo $id; exit 0; }; done; exit 1` { Xvfb -ac -noreset -screen 0 800x600x16 :$XID -screen 0 800x600x16 -nolisten tcp -auth /dev/null >/dev/null 2>&1 & trap "kill -15 $! " 0 HUP INT QUIT TRAP USR1 PIPE TERM ; } || { echo "Gtk+Tests:ERROR: Failed to start Xvfb environment for X11 target tests."; exit 1; } DISPLAY=:$XID export DISPLAY sleep 10 fi libayatana-appindicator-0.5.93/tests/test-defines.h0000644000000000000000000000222214512163465017170 0ustar /* Testing defines to be shared between various tests. 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 TEST_ID "my-id" #define TEST_ICON_NAME "my-icon-name" #define TEST_ATTENTION_ICON_NAME "my-attention-icon-name" #define TEST_STATE APP_INDICATOR_STATUS_ACTIVE #define TEST_STATE_S "Active" #define TEST_CATEGORY APP_INDICATOR_CATEGORY_APPLICATION_STATUS #define TEST_CATEGORY_S "ApplicationStatus" #define TEST_OBJECT "/an/object/path/to/use" libayatana-appindicator-0.5.93/tests/test-libappindicator.c0000644000000000000000000003510514512163465020720 0ustar /* Tests for the libappindicator library. 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 #include #include #include static gboolean allow_warnings (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data) { // By default, gtest will fail a test on even a warning message. // But since some of our sub-libraries are noisy (especially at-spi2), // only fail on critical or worse. return ((log_level & G_LOG_LEVEL_MASK) <= G_LOG_LEVEL_CRITICAL); } void test_libappindicator_prop_signals_status_helper (AppIndicator * ci, gchar * status, gboolean * signalactivated) { *signalactivated = TRUE; return; } void test_libappindicator_prop_signals_helper (AppIndicator * ci, gboolean * signalactivated) { *signalactivated = TRUE; return; } void test_libappindicator_prop_signals (void) { g_test_log_set_fatal_handler (allow_warnings, NULL); AppIndicator * ci = app_indicator_new ("test-app-indicator", "indicator-messages", APP_INDICATOR_CATEGORY_APPLICATION_STATUS); g_assert(ci != NULL); gboolean signaled = FALSE; gulong handlerid; handlerid = 0; handlerid = g_signal_connect(G_OBJECT(ci), "new-icon", G_CALLBACK(test_libappindicator_prop_signals_helper), &signaled); g_assert(handlerid != 0); handlerid = 0; handlerid = g_signal_connect(G_OBJECT(ci), "new-attention-icon", G_CALLBACK(test_libappindicator_prop_signals_helper), &signaled); g_assert(handlerid != 0); handlerid = 0; handlerid = g_signal_connect(G_OBJECT(ci), "new-status", G_CALLBACK(test_libappindicator_prop_signals_status_helper), &signaled); g_assert(handlerid != 0); signaled = FALSE; app_indicator_set_icon(ci, "bob"); g_assert(signaled); signaled = FALSE; app_indicator_set_icon(ci, "bob"); g_assert(!signaled); signaled = FALSE; app_indicator_set_icon(ci, "al"); g_assert(signaled); signaled = FALSE; app_indicator_set_attention_icon(ci, "bob"); g_assert(signaled); signaled = FALSE; app_indicator_set_attention_icon(ci, "bob"); g_assert(!signaled); signaled = FALSE; app_indicator_set_attention_icon(ci, "al"); g_assert(signaled); signaled = FALSE; app_indicator_set_status(ci, APP_INDICATOR_STATUS_PASSIVE); g_assert(!signaled); signaled = FALSE; app_indicator_set_status(ci, APP_INDICATOR_STATUS_ACTIVE); g_assert(signaled); signaled = FALSE; app_indicator_set_status(ci, APP_INDICATOR_STATUS_ACTIVE); g_assert(!signaled); signaled = FALSE; app_indicator_set_status(ci, APP_INDICATOR_STATUS_ATTENTION); g_assert(signaled); return; } void test_libappindicator_init_set_props (void) { g_test_log_set_fatal_handler (allow_warnings, NULL); AppIndicator * ci = app_indicator_new ("my-id", "my-name", APP_INDICATOR_CATEGORY_APPLICATION_STATUS); g_assert(ci != NULL); app_indicator_set_status(ci, APP_INDICATOR_STATUS_ACTIVE); app_indicator_set_attention_icon(ci, "my-attention-name"); app_indicator_set_title(ci, "My Title"); g_assert(!g_strcmp0("my-id", app_indicator_get_id(ci))); g_assert(!g_strcmp0("my-name", app_indicator_get_icon(ci))); g_assert(!g_strcmp0("my-attention-name", app_indicator_get_attention_icon(ci))); g_assert(!g_strcmp0("My Title", app_indicator_get_title(ci))); g_assert(app_indicator_get_status(ci) == APP_INDICATOR_STATUS_ACTIVE); g_assert(app_indicator_get_category(ci) == APP_INDICATOR_CATEGORY_APPLICATION_STATUS); g_object_unref(G_OBJECT(ci)); return; } void test_libappindicator_init_with_props (void) { g_test_log_set_fatal_handler (allow_warnings, NULL); AppIndicator * ci = app_indicator_new ("my-id", "my-name", APP_INDICATOR_CATEGORY_APPLICATION_STATUS); app_indicator_set_status (ci, APP_INDICATOR_STATUS_ACTIVE); app_indicator_set_attention_icon (ci, "my-attention-name"); g_assert(ci != NULL); g_assert(!g_strcmp0("my-id", app_indicator_get_id(ci))); g_assert(!g_strcmp0("my-name", app_indicator_get_icon(ci))); g_assert(!g_strcmp0("my-attention-name", app_indicator_get_attention_icon(ci))); g_assert(app_indicator_get_status(ci) == APP_INDICATOR_STATUS_ACTIVE); g_assert(app_indicator_get_category(ci) == APP_INDICATOR_CATEGORY_APPLICATION_STATUS); g_object_unref(G_OBJECT(ci)); return; } void test_libappindicator_init (void) { g_test_log_set_fatal_handler (allow_warnings, NULL); AppIndicator * ci = app_indicator_new ("my-id", "my-name", APP_INDICATOR_CATEGORY_APPLICATION_STATUS); g_assert(ci != NULL); g_object_unref(G_OBJECT(ci)); return; } void test_libappindicator_set_label (void) { g_test_log_set_fatal_handler (allow_warnings, NULL); AppIndicator * ci = app_indicator_new ("my-id", "my-name", APP_INDICATOR_CATEGORY_APPLICATION_STATUS); g_assert(ci != NULL); g_assert(app_indicator_get_label(ci) == NULL); g_assert(app_indicator_get_label_guide(ci) == NULL); /* First check all the clearing modes, this is important as we're going to use them later, we need them to work. */ app_indicator_set_label(ci, NULL, NULL); g_assert(app_indicator_get_label(ci) == NULL); g_assert(app_indicator_get_label_guide(ci) == NULL); app_indicator_set_label(ci, "", NULL); g_assert(app_indicator_get_label(ci) == NULL); g_assert(app_indicator_get_label_guide(ci) == NULL); app_indicator_set_label(ci, NULL, ""); g_assert(app_indicator_get_label(ci) == NULL); g_assert(app_indicator_get_label_guide(ci) == NULL); app_indicator_set_label(ci, "", ""); g_assert(app_indicator_get_label(ci) == NULL); g_assert(app_indicator_get_label_guide(ci) == NULL); app_indicator_set_label(ci, "label", ""); g_assert(g_strcmp0(app_indicator_get_label(ci), "label") == 0); g_assert(app_indicator_get_label_guide(ci) == NULL); app_indicator_set_label(ci, NULL, NULL); g_assert(app_indicator_get_label(ci) == NULL); g_assert(app_indicator_get_label_guide(ci) == NULL); app_indicator_set_label(ci, "label", "guide"); g_assert(g_strcmp0(app_indicator_get_label(ci), "label") == 0); g_assert(g_strcmp0(app_indicator_get_label_guide(ci), "guide") == 0); app_indicator_set_label(ci, "label2", "guide"); g_assert(g_strcmp0(app_indicator_get_label(ci), "label2") == 0); g_assert(g_strcmp0(app_indicator_get_label_guide(ci), "guide") == 0); app_indicator_set_label(ci, "trick-label", "trick-guide"); g_assert(g_strcmp0(app_indicator_get_label(ci), "trick-label") == 0); g_assert(g_strcmp0(app_indicator_get_label_guide(ci), "trick-guide") == 0); g_object_unref(G_OBJECT(ci)); return; } void test_libappindicator_set_menu (void) { g_test_log_set_fatal_handler (allow_warnings, NULL); AppIndicator * ci = app_indicator_new ("my-id", "my-name", APP_INDICATOR_CATEGORY_APPLICATION_STATUS); g_assert(ci != NULL); GtkMenu * menu = GTK_MENU(gtk_menu_new()); GtkMenuItem * item = GTK_MENU_ITEM(gtk_menu_item_new_with_label("Test Label")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), GTK_WIDGET(item)); gtk_widget_show(GTK_WIDGET(item)); app_indicator_set_menu(ci, menu); g_assert(app_indicator_get_menu(ci) != NULL); GValue serverval = {0}; g_value_init(&serverval, DBUSMENU_TYPE_SERVER); g_object_get_property(G_OBJECT(ci), "dbus-menu-server", &serverval); DbusmenuServer * server = DBUSMENU_SERVER(g_value_get_object(&serverval)); g_assert(server != NULL); GValue rootval = {0}; g_value_init(&rootval, DBUSMENU_TYPE_MENUITEM); g_object_get_property(G_OBJECT(server), DBUSMENU_SERVER_PROP_ROOT_NODE, &rootval); DbusmenuMenuitem * root = DBUSMENU_MENUITEM(g_value_get_object(&rootval)); g_assert(root != NULL); GList * children = dbusmenu_menuitem_get_children(root); g_assert(children != NULL); g_assert(g_list_length(children) == 1); const gchar * label = dbusmenu_menuitem_property_get(DBUSMENU_MENUITEM(children->data), DBUSMENU_MENUITEM_PROP_LABEL); g_assert(label != NULL); g_assert(g_strcmp0(label, "Test Label") == 0); /* Interesting, eh? We need this because we send out events on the bus but they don't come back until the idle is run. So we need those events to clear before removing the object */ while (g_main_context_pending(NULL)) { g_main_context_iteration(NULL, TRUE); } g_object_unref(G_OBJECT(ci)); return; } void label_signals_cb (AppIndicator * appindicator, gchar * label, gchar * guide, gpointer user_data) { gint * label_signals_count = (gint *)user_data; (*label_signals_count)++; return; } void label_signals_check (void) { while (g_main_context_pending(NULL)) { g_main_context_iteration(NULL, TRUE); } return; } void test_libappindicator_label_signals (void) { g_test_log_set_fatal_handler (allow_warnings, NULL); gint label_signals_count = 0; AppIndicator * ci = app_indicator_new ("my-id", "my-name", APP_INDICATOR_CATEGORY_APPLICATION_STATUS); g_assert(ci != NULL); g_assert(app_indicator_get_label(ci) == NULL); g_assert(app_indicator_get_label_guide(ci) == NULL); g_signal_connect(G_OBJECT(ci), APP_INDICATOR_SIGNAL_NEW_LABEL, G_CALLBACK(label_signals_cb), &label_signals_count); /* Shouldn't be a signal as it should be stuck in idle */ app_indicator_set_label(ci, "label", "guide"); g_assert(label_signals_count == 0); /* Should show up after idle processing */ label_signals_check(); g_assert(label_signals_count == 1); /* Shouldn't signal with no change */ label_signals_count = 0; app_indicator_set_label(ci, "label", "guide"); label_signals_check(); g_assert(label_signals_count == 0); /* Change one, we should get one signal */ app_indicator_set_label(ci, "label2", "guide"); label_signals_check(); g_assert(label_signals_count == 1); /* Change several times, one signal */ label_signals_count = 0; app_indicator_set_label(ci, "label1", "guide0"); app_indicator_set_label(ci, "label1", "guide1"); app_indicator_set_label(ci, "label2", "guide2"); app_indicator_set_label(ci, "label3", "guide3"); label_signals_check(); g_assert(label_signals_count == 1); /* Clear should signal too */ label_signals_count = 0; app_indicator_set_label(ci, NULL, NULL); label_signals_check(); g_assert(label_signals_count == 1); return; } void test_libappindicator_desktop_menu (void) { g_test_log_set_fatal_handler (allow_warnings, NULL); AppIndicator * ci = app_indicator_new ("my-id-desktop-menu", "my-name", APP_INDICATOR_CATEGORY_APPLICATION_STATUS); g_assert(ci != NULL); g_assert(app_indicator_get_label(ci) == NULL); g_assert(app_indicator_get_label_guide(ci) == NULL); app_indicator_build_menu_from_desktop(ci, SRCDIR "/test-libappindicator.desktop", "Test Program"); GValue serverval = {0}; g_value_init(&serverval, DBUSMENU_TYPE_SERVER); g_object_get_property(G_OBJECT(ci), "dbus-menu-server", &serverval); DbusmenuServer * server = DBUSMENU_SERVER(g_value_get_object(&serverval)); g_assert(server != NULL); GValue rootval = {0}; g_value_init(&rootval, DBUSMENU_TYPE_MENUITEM); g_object_get_property(G_OBJECT(server), DBUSMENU_SERVER_PROP_ROOT_NODE, &rootval); DbusmenuMenuitem * root = DBUSMENU_MENUITEM(g_value_get_object(&rootval)); g_assert(root != NULL); GList * children = dbusmenu_menuitem_get_children(root); g_assert(children != NULL); g_assert(g_list_length(children) == 3); g_object_unref(G_OBJECT(ci)); return; } void test_libappindicator_desktop_menu_bad (void) { g_test_log_set_fatal_handler (allow_warnings, NULL); AppIndicator * ci = app_indicator_new ("my-id-desktop-menu-bad", "my-name", APP_INDICATOR_CATEGORY_APPLICATION_STATUS); g_assert(ci != NULL); g_assert(app_indicator_get_label(ci) == NULL); g_assert(app_indicator_get_label_guide(ci) == NULL); app_indicator_build_menu_from_desktop(ci, SRCDIR "/test-libappindicator.desktop", "Not Test Program"); GValue serverval = {0}; g_value_init(&serverval, DBUSMENU_TYPE_SERVER); g_object_get_property(G_OBJECT(ci), "dbus-menu-server", &serverval); DbusmenuServer * server = DBUSMENU_SERVER(g_value_get_object(&serverval)); g_assert(server != NULL); GValue rootval = {0}; g_value_init(&rootval, DBUSMENU_TYPE_MENUITEM); g_object_get_property(G_OBJECT(server), DBUSMENU_SERVER_PROP_ROOT_NODE, &rootval); DbusmenuMenuitem * root = DBUSMENU_MENUITEM(g_value_get_object(&rootval)); g_assert(root != NULL); GList * children = dbusmenu_menuitem_get_children(root); g_assert(g_list_length(children) == 0); g_object_unref(G_OBJECT(ci)); return; } void test_libappindicator_props_suite (void) { g_test_add_func ("/indicator-application/libappindicator/init", test_libappindicator_init); g_test_add_func ("/indicator-application/libappindicator/init_props", test_libappindicator_init_with_props); g_test_add_func ("/indicator-application/libappindicator/init_set_props", test_libappindicator_init_set_props); g_test_add_func ("/indicator-application/libappindicator/prop_signals", test_libappindicator_prop_signals); g_test_add_func ("/indicator-application/libappindicator/set_label", test_libappindicator_set_label); g_test_add_func ("/indicator-application/libappindicator/set_menu", test_libappindicator_set_menu); g_test_add_func ("/indicator-application/libappindicator/label_signals", test_libappindicator_label_signals); g_test_add_func ("/indicator-application/libappindicator/desktop_menu", test_libappindicator_desktop_menu); g_test_add_func ("/indicator-application/libappindicator/desktop_menu_bad",test_libappindicator_desktop_menu_bad); return; } gint main (gint argc, gchar * argv[]) { gtk_init(&argc, &argv); g_test_init(&argc, &argv, NULL); /* Test suites */ test_libappindicator_props_suite(); return g_test_run (); } libayatana-appindicator-0.5.93/tests/test-libappindicator-dbus-client.c0000644000000000000000000001723614512163465023134 0ustar /* Tests for the libappindicator library that are over DBus. This is the client side of those tests. 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 #include #include #include #include "test-defines.h" #include "../src/dbus-shared.h" static GMainLoop * mainloop = NULL; static gboolean passed = TRUE; static int propcount = 0; static void check_propcount (void) { if (propcount >= 5) { g_main_loop_quit(mainloop); } return; } static void prop_id_cb (DBusGProxy * proxy, DBusGProxyCall * call, void * data) { propcount++; GError * error = NULL; GValue value = {0}; if (!dbus_g_proxy_end_call(proxy, call, &error, G_TYPE_VALUE, &value, G_TYPE_INVALID)) { g_warning("Getting ID failed: %s", error->message); g_error_free(error); passed = FALSE; check_propcount(); return; } if (g_strcmp0(TEST_ID, g_value_get_string(&value))) { g_debug("Property ID Returned: FAILED"); passed = FALSE; } else { g_debug("Property ID Returned: PASSED"); } check_propcount(); return; } static void prop_category_cb (DBusGProxy * proxy, DBusGProxyCall * call, void * data) { propcount++; GError * error = NULL; GValue value = {0}; if (!dbus_g_proxy_end_call(proxy, call, &error, G_TYPE_VALUE, &value, G_TYPE_INVALID)) { g_warning("Getting category failed: %s", error->message); g_error_free(error); passed = FALSE; check_propcount(); return; } if (g_strcmp0(TEST_CATEGORY_S, g_value_get_string(&value))) { g_debug("Property category Returned: FAILED"); passed = FALSE; } else { g_debug("Property category Returned: PASSED"); } check_propcount(); return; } static void prop_status_cb (DBusGProxy * proxy, DBusGProxyCall * call, void * data) { propcount++; GError * error = NULL; GValue value = {0}; if (!dbus_g_proxy_end_call(proxy, call, &error, G_TYPE_VALUE, &value, G_TYPE_INVALID)) { g_warning("Getting status failed: %s", error->message); g_error_free(error); passed = FALSE; check_propcount(); return; } if (g_strcmp0(TEST_STATE_S, g_value_get_string(&value))) { g_debug("Property status Returned: FAILED"); passed = FALSE; } else { g_debug("Property status Returned: PASSED"); } check_propcount(); return; } static void prop_icon_name_cb (DBusGProxy * proxy, DBusGProxyCall * call, void * data) { propcount++; GError * error = NULL; GValue value = {0}; if (!dbus_g_proxy_end_call(proxy, call, &error, G_TYPE_VALUE, &value, G_TYPE_INVALID)) { g_warning("Getting icon name failed: %s", error->message); g_error_free(error); passed = FALSE; check_propcount(); return; } if (g_strcmp0(TEST_ICON_NAME, g_value_get_string(&value))) { g_debug("Property icon name Returned: FAILED"); passed = FALSE; } else { g_debug("Property icon name Returned: PASSED"); } check_propcount(); return; } static void prop_attention_icon_name_cb (DBusGProxy * proxy, DBusGProxyCall * call, void * data) { propcount++; GError * error = NULL; GValue value = {0}; if (!dbus_g_proxy_end_call(proxy, call, &error, G_TYPE_VALUE, &value, G_TYPE_INVALID)) { g_warning("Getting attention icon name failed: %s", error->message); g_error_free(error); passed = FALSE; check_propcount(); return; } if (g_strcmp0(TEST_ATTENTION_ICON_NAME, g_value_get_string(&value))) { g_debug("Property attention icon name Returned: FAILED"); passed = FALSE; } else { g_debug("Property attention icon name Returned: PASSED"); } check_propcount(); return; } gboolean kill_func (gpointer userdata) { g_main_loop_quit(mainloop); g_warning("Forced to Kill"); passed = FALSE; return FALSE; } static DBusHandlerResult dbus_filter (DBusConnection * connection, DBusMessage * message, void * user_data) { if (dbus_message_is_method_call(message, NOTIFICATION_WATCHER_DBUS_ADDR, "RegisterStatusNotifierItem")) { DBusMessage * reply = dbus_message_new_method_return(message); dbus_connection_send(connection, reply, NULL); dbus_message_unref(reply); return DBUS_HANDLER_RESULT_HANDLED; } return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } gint main (gint argc, gchar * argv[]) { GError * error = NULL; DBusGConnection * session_bus = dbus_g_bus_get(DBUS_BUS_SESSION, &error); if (error != NULL) { g_error("Unable to get session bus: %s", error->message); return 1; } DBusGProxy * bus_proxy = dbus_g_proxy_new_for_name(session_bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); guint nameret = 0; if (!org_freedesktop_DBus_request_name(bus_proxy, NOTIFICATION_WATCHER_DBUS_ADDR, 0, &nameret, &error)) { g_error("Unable to call to request name"); return 1; } if (nameret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { g_error("Unable to get name"); return 1; } dbus_connection_add_filter(dbus_g_connection_get_connection(session_bus), dbus_filter, NULL, NULL); g_usleep(500000); DBusGProxy * props = dbus_g_proxy_new_for_name_owner(session_bus, ":1.2", "/org/ayatana/NotificationItem/my_id", DBUS_INTERFACE_PROPERTIES, &error); if (error != NULL) { g_error("Unable to get property proxy: %s", error->message); return 1; } dbus_g_proxy_begin_call (props, "Get", prop_id_cb, NULL, NULL, G_TYPE_STRING, NOTIFICATION_ITEM_DBUS_IFACE, G_TYPE_STRING, "Id", G_TYPE_INVALID); dbus_g_proxy_begin_call (props, "Get", prop_category_cb, NULL, NULL, G_TYPE_STRING, NOTIFICATION_ITEM_DBUS_IFACE, G_TYPE_STRING, "Category", G_TYPE_INVALID); dbus_g_proxy_begin_call (props, "Get", prop_status_cb, NULL, NULL, G_TYPE_STRING, NOTIFICATION_ITEM_DBUS_IFACE, G_TYPE_STRING, "Status", G_TYPE_INVALID); dbus_g_proxy_begin_call (props, "Get", prop_icon_name_cb, NULL, NULL, G_TYPE_STRING, NOTIFICATION_ITEM_DBUS_IFACE, G_TYPE_STRING, "IconName", G_TYPE_INVALID); dbus_g_proxy_begin_call (props, "Get", prop_attention_icon_name_cb, NULL, NULL, G_TYPE_STRING, NOTIFICATION_ITEM_DBUS_IFACE, G_TYPE_STRING, "AttentionIconName", G_TYPE_INVALID); g_timeout_add_seconds(2, kill_func, NULL); mainloop = g_main_loop_new(NULL, FALSE); g_main_loop_run(mainloop); if (passed) { g_debug("Quiting"); return 0; } else { g_debug("Quiting as we're a failure"); return 1; } return 0; } libayatana-appindicator-0.5.93/tests/test-libappindicator-dbus-server.c0000644000000000000000000000312514512163465023154 0ustar /* Tests for the libappindicator library that are over DBus. This is the server side of those tests. 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 #include "test-defines.h" static GMainLoop * mainloop = NULL; gboolean kill_func (gpointer userdata) { g_main_loop_quit(mainloop); return FALSE; } gint main (gint argc, gchar * argv[]) { gtk_init(&argc, &argv); AppIndicator * ci = app_indicator_new (TEST_ID, TEST_ICON_NAME, TEST_CATEGORY); app_indicator_set_status (ci, TEST_STATE); app_indicator_set_attention_icon (ci, TEST_ATTENTION_ICON_NAME); GtkMenu * menu = GTK_MENU(gtk_menu_new()); GtkMenuItem * item = GTK_MENU_ITEM(gtk_menu_item_new_with_label("Label")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), GTK_WIDGET(item)); app_indicator_set_menu(ci, menu); g_timeout_add_seconds(2, kill_func, NULL); mainloop = g_main_loop_new(NULL, FALSE); g_main_loop_run(mainloop); g_object_unref(G_OBJECT(ci)); g_debug("Quiting"); return 0; } libayatana-appindicator-0.5.93/tests/test-libappindicator.desktop0000644000000000000000000000064514512163465022150 0ustar [Desktop Entry] Name=AppIndicator Test GenericName=Test Comment=This is only a test Exec=/usr/bin/false Terminal=false Type=Application Actions=Short1;Short2;Short3; [Desktop Action Short1] Name=Shortcut 1 Exec=/usr/bin/true OnlyShowIn=Test Program; [Desktop Action Short2] Name=Shortcut 2 Exec=/usr/bin/true OnlyShowIn=Test Program; [Desktop Action Short3] Name=Shortcut 3 Exec=/usr/bin/true OnlyShowIn=Test Program; libayatana-appindicator-0.5.93/tests/test-libappindicator-fallback-item.c0000644000000000000000000001063714512163465023414 0ustar #include #include #include #include #include #define TEST_LIBAPPINDICATOR_FALLBACK_ITEM_TYPE (test_libappindicator_fallback_item_get_type ()) #define TEST_LIBAPPINDICATOR_FALLBACK_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TEST_LIBAPPINDICATOR_FALLBACK_ITEM_TYPE, TestLibappindicatorFallbackItem)) #define TEST_LIBAPPINDICATOR_FALLBACK_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TEST_LIBAPPINDICATOR_FALLBACK_ITEM_TYPE, TestLibappindicatorFallbackItemClass)) #define IS_TEST_LIBAPPINDICATOR_FALLBACK_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TEST_LIBAPPINDICATOR_FALLBACK_ITEM_TYPE)) #define IS_TEST_LIBAPPINDICATOR_FALLBACK_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TEST_LIBAPPINDICATOR_FALLBACK_ITEM_TYPE)) #define TEST_LIBAPPINDICATOR_FALLBACK_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TEST_LIBAPPINDICATOR_FALLBACK_ITEM_TYPE, TestLibappindicatorFallbackItemClass)) typedef struct _TestLibappindicatorFallbackItem TestLibappindicatorFallbackItem; typedef struct _TestLibappindicatorFallbackItemClass TestLibappindicatorFallbackItemClass; struct _TestLibappindicatorFallbackItemClass { AppIndicatorClass parent_class; }; struct _TestLibappindicatorFallbackItem { AppIndicator parent; }; GType test_libappindicator_fallback_item_get_type (void); #define TEST_LIBAPPINDICATOR_FALLBACK_ITEM_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), TEST_LIBAPPINDICATOR_FALLBACK_ITEM_TYPE, TestLibappindicatorFallbackItemPrivate)) static void test_libappindicator_fallback_item_class_init (TestLibappindicatorFallbackItemClass *klass); static void test_libappindicator_fallback_item_init (TestLibappindicatorFallbackItem *self); static GtkStatusIcon * fallback (AppIndicator * indicator); static void unfallback (AppIndicator * indicator, GtkStatusIcon * status_icon); G_DEFINE_TYPE (TestLibappindicatorFallbackItem, test_libappindicator_fallback_item, APP_INDICATOR_TYPE); static void test_libappindicator_fallback_item_class_init (TestLibappindicatorFallbackItemClass *klass) { AppIndicatorClass * aiclass = APP_INDICATOR_CLASS(klass); aiclass->fallback = fallback; aiclass->unfallback = unfallback; } static void test_libappindicator_fallback_item_init (TestLibappindicatorFallbackItem *self) { } GMainLoop * mainloop = NULL; gboolean passed = FALSE; enum { STATE_INIT, STATE_FALLBACK, STATE_UNFALLBACK, STATE_REFALLBACK, STATE_REUNFALLBACK }; gint state = STATE_INIT; static GtkStatusIcon * fallback (AppIndicator * indicator) { g_debug("Fallback"); if (state == STATE_INIT) { state = STATE_FALLBACK; } else if (state == STATE_UNFALLBACK) { state = STATE_REFALLBACK; } else { g_debug("Error, fallback in state: %d", state); passed = FALSE; } return (GtkStatusIcon *)5; } static void unfallback (AppIndicator * indicator, GtkStatusIcon * status_icon) { g_debug("Unfallback"); if (state == STATE_FALLBACK) { state = STATE_UNFALLBACK; } else if (state == STATE_REFALLBACK) { state = STATE_REUNFALLBACK; passed = TRUE; g_main_loop_quit(mainloop); } else { g_debug("Error, unfallback in state: %d", state); passed = FALSE; } return; } gboolean kill_func (gpointer data) { g_debug("Kill Function"); g_main_loop_quit(mainloop); return FALSE; } int main (int argc, char ** argv) { gtk_init(&argc, &argv); GError * error = NULL; DBusGConnection * session_bus = dbus_g_bus_get(DBUS_BUS_SESSION, &error); if (error != NULL) { g_error("Unable to get session bus: %s", error->message); return 1; } DBusGProxy * bus_proxy = dbus_g_proxy_new_for_name(session_bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); guint nameret = 0; if (!org_freedesktop_DBus_request_name(bus_proxy, "org.test", 0, &nameret, NULL)) { g_error("Unable to call to request name"); return 1; } if (nameret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { g_error("Unable to get name"); return 1; } TestLibappindicatorFallbackItem * item = g_object_new(TEST_LIBAPPINDICATOR_FALLBACK_ITEM_TYPE, "id", "test-id", "category", "Other", "icon-name", "bob", NULL); GtkWidget * menu = gtk_menu_new(); app_indicator_set_menu(APP_INDICATOR(item), GTK_MENU(menu)); g_timeout_add_seconds(20, kill_func, NULL); mainloop = g_main_loop_new(NULL, FALSE); g_main_loop_run(mainloop); g_object_unref(G_OBJECT(item)); if (passed) { return 0; } else { return 1; } } libayatana-appindicator-0.5.93/tests/test-libappindicator-fallback-watcher.c0000644000000000000000000000577114512163465024116 0ustar /* This puts the NotificationWatcher on the bus, kinda. Enough to trick the Item into unfalling back. 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 #include #include #include #include "../src/dbus-shared.h" gboolean kill_func (gpointer userdata); static GMainLoop * mainloop = NULL; static DBusHandlerResult dbus_filter (DBusConnection * connection, DBusMessage * message, void * user_data) { if (dbus_message_is_method_call(message, NOTIFICATION_WATCHER_DBUS_ADDR, "RegisterStatusNotifierItem")) { DBusMessage * reply = dbus_message_new_method_return(message); dbus_connection_send(connection, reply, NULL); dbus_message_unref(reply); /* Let the messages get out, but we're done at this point */ g_timeout_add(50, kill_func, NULL); return DBUS_HANDLER_RESULT_HANDLED; } return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } gboolean kill_func (gpointer userdata) { g_main_loop_quit(mainloop); return FALSE; } int main (int argv, char ** argc) { g_debug("Waiting to init."); GError * error = NULL; DBusGConnection * session_bus = dbus_g_bus_get(DBUS_BUS_SESSION, &error); if (error != NULL) { g_error("Unable to get session bus: %s", error->message); return 1; } DBusGProxy * bus_proxy = dbus_g_proxy_new_for_name(session_bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); gboolean has_owner = FALSE; gint owner_count = 0; while (!has_owner && owner_count < 10000) { org_freedesktop_DBus_name_has_owner(bus_proxy, "org.test", &has_owner, NULL); owner_count++; g_usleep(500000); } if (owner_count == 10000) { g_error("Unable to get name owner after 10000 tries"); return 1; } g_usleep(500000); g_debug("Initing"); guint nameret = 0; if (!org_freedesktop_DBus_request_name(bus_proxy, NOTIFICATION_WATCHER_DBUS_ADDR, 0, &nameret, &error)) { g_error("Unable to call to request name"); return 1; } if (nameret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { g_error("Unable to get name"); return 1; } dbus_connection_add_filter(dbus_g_connection_get_connection(session_bus), dbus_filter, NULL, NULL); /* This is the final kill function. It really shouldn't happen unless we get an error. */ g_timeout_add_seconds(20, kill_func, NULL); g_debug("Entering Mainloop"); mainloop = g_main_loop_new(NULL, FALSE); g_main_loop_run(mainloop); g_debug("Exiting"); return 0; } libayatana-appindicator-0.5.93/tests/test-libappindicator-status-client.c0000644000000000000000000000776414512163465023527 0ustar /* Tests for the libappindicator library that are over DBus. This is the client side of those tests. 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 #include #include #include "../src/dbus-shared.h" static GMainLoop * mainloop = NULL; static gboolean passed = TRUE; static gboolean watchdog_hit = TRUE; static gboolean active = FALSE; static guint toggle_count = 0; #define PASSIVE_STR "Passive" #define ACTIVE_STR "Active" #define ATTN_STR "NeedsAttention" static DBusHandlerResult dbus_reg_filter (DBusConnection * connection, DBusMessage * message, void * user_data) { if (dbus_message_is_method_call(message, NOTIFICATION_WATCHER_DBUS_ADDR, "RegisterStatusNotifierItem")) { DBusMessage * reply = dbus_message_new_method_return(message); dbus_connection_send(connection, reply, NULL); dbus_message_unref(reply); return DBUS_HANDLER_RESULT_HANDLED; } return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } static DBusHandlerResult dbus_filter (DBusConnection * connection, DBusMessage * message, void * user_data) { if (!dbus_message_is_signal(message, NOTIFICATION_ITEM_DBUS_IFACE, "NewStatus")) { return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } gchar * string; DBusError derror; dbus_error_init(&derror); if (!dbus_message_get_args(message, &derror, DBUS_TYPE_STRING, &string, DBUS_TYPE_INVALID)) { g_warning("Couldn't get parameters"); dbus_error_free(&derror); return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } watchdog_hit = TRUE; if (g_strcmp0(string, ACTIVE_STR) == 0) { if (active) { g_warning("Got active when already active"); passed = FALSE; return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } active = TRUE; } else { active = FALSE; } toggle_count++; if (toggle_count == 100) { g_main_loop_quit(mainloop); } return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } gboolean kill_func (gpointer userdata) { if (watchdog_hit == FALSE) { g_main_loop_quit(mainloop); g_warning("Forced to Kill"); g_warning("Toggle count: %d", toggle_count); passed = FALSE; return FALSE; } watchdog_hit = FALSE; return TRUE; } gint main (gint argc, gchar * argv[]) { GError * error = NULL; DBusGConnection * session_bus = dbus_g_bus_get(DBUS_BUS_SESSION, &error); if (error != NULL) { g_error("Unable to get session bus: %s", error->message); return 1; } DBusGProxy * bus_proxy = dbus_g_proxy_new_for_name(session_bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); guint nameret = 0; if (!org_freedesktop_DBus_request_name(bus_proxy, NOTIFICATION_WATCHER_DBUS_ADDR, 0, &nameret, &error)) { g_error("Unable to call to request name"); return 1; } if (nameret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { g_error("Unable to get name"); return 1; } dbus_connection_add_filter(dbus_g_connection_get_connection(session_bus), dbus_reg_filter, NULL, NULL); dbus_connection_add_filter(dbus_g_connection_get_connection(session_bus), dbus_filter, NULL, NULL); dbus_bus_add_match(dbus_g_connection_get_connection(session_bus), "type='signal',interface='" NOTIFICATION_ITEM_DBUS_IFACE "',member='NewStatus'", NULL); watchdog_hit = TRUE; g_timeout_add_seconds(20, kill_func, NULL); mainloop = g_main_loop_new(NULL, FALSE); g_main_loop_run(mainloop); if (passed) { g_debug("Quiting"); return 0; } else { g_debug("Quiting as we're a failure"); return 1; } return 0; } libayatana-appindicator-0.5.93/tests/test-libappindicator-status-server.c0000644000000000000000000000452414512163465023546 0ustar /* Tests for the libappindicator library that are over DBus. This is the server side of those tests. 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 #include static GMainLoop * mainloop = NULL; static gboolean active = FALSE; static guint toggle_count = 0; static GDBusConnection * connection = NULL; static gboolean times_up (gpointer unused G_GNUC_UNUSED) { g_dbus_connection_flush_sync (connection, NULL, NULL); g_clear_object (&connection); g_main_loop_quit (mainloop); return G_SOURCE_REMOVE; } gboolean toggle (gpointer userdata) { const AppIndicatorStatus new_status = active ? APP_INDICATOR_STATUS_ATTENTION : APP_INDICATOR_STATUS_ACTIVE; app_indicator_set_status (APP_INDICATOR(userdata), new_status); ++toggle_count; active = !active; if (toggle_count == 100) { g_timeout_add (100, times_up, NULL); return G_SOURCE_REMOVE; } return G_SOURCE_CONTINUE; } gint main (gint argc, gchar * argv[]) { gtk_init(&argc, &argv); g_usleep(100000); connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL); g_debug("DBus Name: %s", g_dbus_connection_get_unique_name (connection)); AppIndicator * ci = app_indicator_new ("my-id", "my-icon-name", APP_INDICATOR_CATEGORY_APPLICATION_STATUS); app_indicator_set_attention_icon (ci, "my-attention-icon"); GtkMenu * menu = GTK_MENU(gtk_menu_new()); GtkMenuItem * item = GTK_MENU_ITEM(gtk_menu_item_new_with_label("Label")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), GTK_WIDGET(item)); app_indicator_set_menu(ci, menu); g_timeout_add(50, toggle, ci); mainloop = g_main_loop_new(NULL, FALSE); g_main_loop_run(mainloop); g_object_unref(G_OBJECT(ci)); g_debug("Quiting"); return 0; } libayatana-appindicator-0.5.93/tests/test-simple-app.c0000644000000000000000000000304614512163465017622 0ustar /* Test that creates a small test app which links with libappindicator. 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 static GMainLoop * mainloop = NULL; int main (int argc, char ** argv) { gtk_init(&argc, &argv); GtkWidget *menu_item = gtk_menu_item_new_with_label("Test"); GtkMenu *menu = GTK_MENU(gtk_menu_new()); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item); gtk_widget_show(menu_item); AppIndicator * ci = app_indicator_new("test-application", "system-shutdown", APP_INDICATOR_CATEGORY_APPLICATION_STATUS); app_indicator_set_status(ci, APP_INDICATOR_STATUS_ACTIVE); app_indicator_set_menu(ci, menu); mainloop = g_main_loop_new(NULL, FALSE); g_main_loop_run(mainloop); g_object_unref(G_OBJECT(ci)); g_object_unref(G_OBJECT(menu)); g_object_unref(G_OBJECT(menu_item)); g_debug("Quiting"); return 0; } libayatana-appindicator-0.5.93/.travis.yml0000644000000000000000000000170714512163465015403 0ustar # vim: set ts=2 sts=2 sw=2 expandtab : dist: bionic 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