From ecb11f01439fa4c80dd94d3fc0f0316eebe4a717 Mon Sep 17 00:00:00 2001 From: Cody Russell Date: Fri, 8 Jan 2010 16:25:03 -0600 Subject: Watch for changes to label and sensitivity. --- example/simple-client.c | 14 ++++++++++++++ src/libappindicator/app-indicator.c | 26 ++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/example/simple-client.c b/example/simple-client.c index 8ce9fba..b1d9fc2 100644 --- a/example/simple-client.c +++ b/example/simple-client.c @@ -34,6 +34,15 @@ item_clicked_cb (GtkWidget *widget, gpointer data) g_print ("%s clicked!\n", text); } +static void +toggle_sensitivity_cb (GtkWidget *widget, gpointer data) +{ + GtkWidget *target = (GtkWidget *)data; + + gtk_menu_item_set_label (GTK_MENU_ITEM (target), "modified!!"); + gtk_widget_set_sensitive (target, !GTK_WIDGET_IS_SENSITIVE (target)); +} + int main (int argc, char ** argv) { @@ -68,6 +77,11 @@ main (int argc, char ** argv) G_CALLBACK (item_clicked_cb), "3"); gtk_menu_shell_append (GTK_MENU_SHELL (menu), 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); + app_indicator_set_menu (ci, GTK_MENU (menu)); mainloop = g_main_loop_new(NULL, FALSE); diff --git a/src/libappindicator/app-indicator.c b/src/libappindicator/app-indicator.c index ec598db..241d5d3 100644 --- a/src/libappindicator/app-indicator.c +++ b/src/libappindicator/app-indicator.c @@ -681,6 +681,29 @@ menuitem_iterate (GtkWidget *widget, } } +static void +widget_notify_cb (GtkWidget *widget, + GParamSpec *pspec, + gpointer data) +{ + DbusmenuMenuitem *child = (DbusmenuMenuitem *)data; + + g_print ("pspec->name: %s\n", pspec->name); + + if (pspec->name == g_intern_static_string ("sensitive")) + { + dbusmenu_menuitem_property_set_bool (child, + DBUSMENU_MENUITEM_PROP_SENSITIVE, + GTK_WIDGET_IS_SENSITIVE (widget)); + } + else if (pspec->name == g_intern_static_string ("label")) + { + dbusmenu_menuitem_property_set (child, + DBUSMENU_MENUITEM_PROP_LABEL, + gtk_menu_item_get_label (GTK_MENU_ITEM (widget))); + } +} + static void container_iterate (GtkWidget *widget, gpointer data) @@ -768,6 +791,9 @@ container_iterate (GtkWidget *widget, } } + g_signal_connect (widget, "notify", + G_CALLBACK (widget_notify_cb), child); + g_signal_connect (G_OBJECT (child), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK (activate_menuitem), widget); -- cgit v1.2.3 From b56f250d6de2e50a01860353f143e631ddbba55b Mon Sep 17 00:00:00 2001 From: Cody Russell Date: Fri, 8 Jan 2010 16:29:25 -0600 Subject: Remove debugging code. --- src/libappindicator/app-indicator.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/libappindicator/app-indicator.c b/src/libappindicator/app-indicator.c index 241d5d3..ad7eab7 100644 --- a/src/libappindicator/app-indicator.c +++ b/src/libappindicator/app-indicator.c @@ -688,8 +688,6 @@ widget_notify_cb (GtkWidget *widget, { DbusmenuMenuitem *child = (DbusmenuMenuitem *)data; - g_print ("pspec->name: %s\n", pspec->name); - if (pspec->name == g_intern_static_string ("sensitive")) { dbusmenu_menuitem_property_set_bool (child, -- cgit v1.2.3 From 9035e522e29b8741ba2f719ea9f6a5157e792b66 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 11 Jan 2010 16:48:47 -0600 Subject: Switching the metadata to not use #defines --- bindings/mono/libappindicator-api.metadata | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/bindings/mono/libappindicator-api.metadata b/bindings/mono/libappindicator-api.metadata index f019f0a..1537c68 100644 --- a/bindings/mono/libappindicator-api.metadata +++ b/bindings/mono/libappindicator-api.metadata @@ -5,16 +5,16 @@ NewStatus ConnectionChanged NewIcon - ID - Category - AppIndicatorCategory - Status - AppIndicatorStatus - IconName - AttentionIconName - Menu - GtkMenu* - Connected + ID + Category + AppIndicatorCategory + Status + AppIndicatorStatus + IconName + AttentionIconName + Menu + GtkMenu* + Connected SetMenu -- cgit v1.2.3 From bebf56594d9250ca07aaa13370674fa9b47abd89 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 11 Jan 2010 17:09:25 -0600 Subject: Use sed to get rid of the #defines --- bindings/mono/Makefile.am | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/bindings/mono/Makefile.am b/bindings/mono/Makefile.am index dedbeb7..54e0b53 100644 --- a/bindings/mono/Makefile.am +++ b/bindings/mono/Makefile.am @@ -6,6 +6,7 @@ pkgconfig_DATA = appindicator-sharp-0.1.pc TEST = AppIndicator.Test.dll API = libappindicator-api.xml +MIDDLE_API = libappindicator-api.middle RAW_API = libappindicator-api.raw METADATA = libappindicator-api.metadata ASSEMBLY_NAME = appindicator-sharp @@ -33,14 +34,33 @@ test_references = $(GTK_SHARP_LIBS) $(NUNIT_LIBS) -r:$(ASSEMBLY) $(RAW_API): app-indicator.sources.xml $(GAPI_PARSER) app-indicator.sources.xml -$(API): $(METADATA) $(RAW_API) - cp $(srcdir)/$(RAW_API) $(API) - chmod u+w $(API) +$(MIDDLE_API): $(METADATA) $(RAW_API) + cp $(srcdir)/$(RAW_API) $(MIDDLE_API) + chmod u+w $(MIDDLE_API) @if test -n '$(METADATA)'; then \ - echo "$(GAPI_FIXUP) --api=$(API) --metadata=$(srcdir)/$(METADATA)"; \ - $(GAPI_FIXUP) --api=$(API) --metadata=$(srcdir)/$(METADATA); \ + echo "$(GAPI_FIXUP) --api=$(MIDDLE_API) --metadata=$(srcdir)/$(METADATA)"; \ + $(GAPI_FIXUP) --api=$(MIDDLE_API) --metadata=$(srcdir)/$(METADATA); \ fi +$(API): $(MIDDLE_API) Makefile.am + sed -e "s|PROP_ID_S|ID|" \ + -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|IconName|" \ + -e "s|PROP_ICON_NAME_S|icon-name|" \ + -e "s|PROP_ATTENTION_ICON_NAME_S|AttentionIconName|" \ + -e "s|PROP_ATTENTION_ICON_NAME_S|attention-icon-name|" \ + -e "s|PROP_ICON_THEME_PATH_S|IconThemePath|" \ + -e "s|PROP_ICON_THEME_PATH_S|icon-theme-path|" \ + -e "s|PROP_MENU_S|Menu|" \ + -e "s|PROP_MENU_S|menu|" \ + -e "s|PROP_CONNECTED_S|Connected|" \ + -e "s|PROP_CONNECTED_S|connected|" \ + $< > $@ + api_includes = $(GTK_SHARP_CFLAGS) generated-stamp: $(API) -- cgit v1.2.3 From 9c04a328f97257e951b382262a0c38f4438d46b3 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 11 Jan 2010 18:05:57 -0600 Subject: Adding in customs support --- bindings/mono/Makefile.am | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/bindings/mono/Makefile.am b/bindings/mono/Makefile.am index 54e0b53..d8a0222 100644 --- a/bindings/mono/Makefile.am +++ b/bindings/mono/Makefile.am @@ -24,13 +24,17 @@ EXTRA_DIST = \ appindicator-sharp.dll.config.in \ app-indicator.sources.xml \ $(ASSEMBLY_NAME).snk \ - $(TEST_SOURCES) + $(TEST_SOURCES) \ + $(customs) GACUTIL_FLAGS="-package $(ASSEMBLY_NAME) -root $(DESTDIR)$(prefix)/lib" references = $(GTK_SHARP_LIBS) test_references = $(GTK_SHARP_LIBS) $(NUNIT_LIBS) -r:$(ASSEMBLY) +customs = myfile.custom +build_customs = $(addprefix $(srcdir)/, $(customs)) + $(RAW_API): app-indicator.sources.xml $(GAPI_PARSER) app-indicator.sources.xml @@ -63,9 +67,10 @@ $(API): $(MIDDLE_API) Makefile.am api_includes = $(GTK_SHARP_CFLAGS) -generated-stamp: $(API) +generated-stamp: $(API) $(build_customs) rm -f generated/* && \ $(GAPI_CODEGEN) --generate $(API) $(api_includes) \ + --customdir=$(srcdir) \ --outdir=generated --assembly-name=$(ASSEMBLY_NAME) \ && touch generated-stamp -- cgit v1.2.3 From af45b19e657e5652c534d8019e1f6a374cbfcc4d Mon Sep 17 00:00:00 2001 From: Cody Russell Date: Mon, 11 Jan 2010 22:59:17 -0600 Subject: Mono binding fixes. --- bindings/mono/ApplicationIndicator.custom | 26 ++++++++++++++++++++++++++ bindings/mono/Makefile.am | 21 +++++++++++++-------- bindings/mono/libappindicator-api.metadata | 14 +++++++------- 3 files changed, 46 insertions(+), 15 deletions(-) create mode 100644 bindings/mono/ApplicationIndicator.custom diff --git a/bindings/mono/ApplicationIndicator.custom b/bindings/mono/ApplicationIndicator.custom new file mode 100644 index 0000000..11d16a8 --- /dev/null +++ b/bindings/mono/ApplicationIndicator.custom @@ -0,0 +1,26 @@ +[DllImport ("libappindicator.so.0")] +static extern int app_indicator_get_status (IntPtr i); + +[DllImport ("libappindicator.so.0")] +static extern int app_indicator_get_category (IntPtr i); + +[DllImport ("libappindicator.so.0")] +static extern void app_indicator_set_status (IntPtr i, int s); + + [GLib.Property ("status")] + public Status Status { + get { + return (Status) app_indicator_get_status (Handle); + } + + set { + app_indicator_set_status (Handle, (int) value); + } + } + + [GLib.Property ("category")] + public Category Category { + get { + return (Category) app_indicator_get_category (Handle); + } + } \ No newline at end of file diff --git a/bindings/mono/Makefile.am b/bindings/mono/Makefile.am index 54e0b53..eb6545b 100644 --- a/bindings/mono/Makefile.am +++ b/bindings/mono/Makefile.am @@ -17,13 +17,15 @@ assembly_DATA = $(TARGET) CLEANFILES = $(ASSEMBLY) $(ASSEMBLY).mdb generated-stamp generated/*.cs $(API) $(RAW_API) $(TEST) DISTCLEANFILES = $(ASSEMBLY).config TEST_SOURCES = TestIndicator.cs -EXTRA_DIST = \ - $(RAW_API) \ - $(METADATA) \ - appindicator-sharp-0.1.pc.in \ - appindicator-sharp.dll.config.in \ - app-indicator.sources.xml \ - $(ASSEMBLY_NAME).snk \ +customs = ApplicationIndicator.custom +EXTRA_DIST = \ + $(RAW_API) \ + $(METADATA) \ + appindicator-sharp-0.1.pc.in \ + appindicator-sharp.dll.config.in \ + app-indicator.sources.xml \ + $(ASSEMBLY_NAME).snk \ + $(customs) \ $(TEST_SOURCES) GACUTIL_FLAGS="-package $(ASSEMBLY_NAME) -root $(DESTDIR)$(prefix)/lib" @@ -63,9 +65,12 @@ $(API): $(MIDDLE_API) Makefile.am api_includes = $(GTK_SHARP_CFLAGS) -generated-stamp: $(API) +build_customs = $(addprefix $(srcdir)/, $(customs)) + +generated-stamp: $(API) $(build_customs) rm -f generated/* && \ $(GAPI_CODEGEN) --generate $(API) $(api_includes) \ + --customdir=$(srcdir) \ --outdir=generated --assembly-name=$(ASSEMBLY_NAME) \ && touch generated-stamp diff --git a/bindings/mono/libappindicator-api.metadata b/bindings/mono/libappindicator-api.metadata index 1537c68..86f0f26 100644 --- a/bindings/mono/libappindicator-api.metadata +++ b/bindings/mono/libappindicator-api.metadata @@ -6,26 +6,26 @@ ConnectionChanged NewIcon ID - Category - AppIndicatorCategory - Status - AppIndicatorStatus + + + + IconName AttentionIconName Menu GtkMenu* Connected SetMenu - + - + - + -- cgit v1.2.3 From f46676355e7a2a18b5ed2d590a5b4c258041b6fd Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 11 Jan 2010 23:13:00 -0600 Subject: Removing the middle API stuff and cleaning up Makefile --- bindings/mono/Makefile.am | 33 +++++---------------------------- 1 file changed, 5 insertions(+), 28 deletions(-) diff --git a/bindings/mono/Makefile.am b/bindings/mono/Makefile.am index dbefc6d..2aef088 100644 --- a/bindings/mono/Makefile.am +++ b/bindings/mono/Makefile.am @@ -6,7 +6,6 @@ pkgconfig_DATA = appindicator-sharp-0.1.pc TEST = AppIndicator.Test.dll API = libappindicator-api.xml -MIDDLE_API = libappindicator-api.middle RAW_API = libappindicator-api.raw METADATA = libappindicator-api.metadata ASSEMBLY_NAME = appindicator-sharp @@ -33,39 +32,17 @@ GACUTIL_FLAGS="-package $(ASSEMBLY_NAME) -root $(DESTDIR)$(prefix)/lib" references = $(GTK_SHARP_LIBS) test_references = $(GTK_SHARP_LIBS) $(NUNIT_LIBS) -r:$(ASSEMBLY) -customs = myfile.custom -build_customs = $(addprefix $(srcdir)/, $(customs)) - $(RAW_API): app-indicator.sources.xml $(GAPI_PARSER) app-indicator.sources.xml -$(MIDDLE_API): $(METADATA) $(RAW_API) - cp $(srcdir)/$(RAW_API) $(MIDDLE_API) - chmod u+w $(MIDDLE_API) +$(API): $(METADATA) $(RAW_API) + cp $(srcdir)/$(RAW_API) $(API) + chmod u+w $(API) @if test -n '$(METADATA)'; then \ - echo "$(GAPI_FIXUP) --api=$(MIDDLE_API) --metadata=$(srcdir)/$(METADATA)"; \ - $(GAPI_FIXUP) --api=$(MIDDLE_API) --metadata=$(srcdir)/$(METADATA); \ + echo "$(GAPI_FIXUP) --api=$(API) --metadata=$(srcdir)/$(METADATA)"; \ + $(GAPI_FIXUP) --api=$(API) --metadata=$(srcdir)/$(METADATA); \ fi -$(API): $(MIDDLE_API) Makefile.am - sed -e "s|PROP_ID_S|ID|" \ - -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|IconName|" \ - -e "s|PROP_ICON_NAME_S|icon-name|" \ - -e "s|PROP_ATTENTION_ICON_NAME_S|AttentionIconName|" \ - -e "s|PROP_ATTENTION_ICON_NAME_S|attention-icon-name|" \ - -e "s|PROP_ICON_THEME_PATH_S|IconThemePath|" \ - -e "s|PROP_ICON_THEME_PATH_S|icon-theme-path|" \ - -e "s|PROP_MENU_S|Menu|" \ - -e "s|PROP_MENU_S|menu|" \ - -e "s|PROP_CONNECTED_S|Connected|" \ - -e "s|PROP_CONNECTED_S|connected|" \ - $< > $@ - api_includes = $(GTK_SHARP_CFLAGS) build_customs = $(addprefix $(srcdir)/, $(customs)) -- cgit v1.2.3