diff options
author | Ted Gould <ted@gould.cx> | 2010-01-11 23:39:11 -0600 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2010-01-11 23:39:11 -0600 |
commit | e04e32f8be96d34f2986684a00d19a6bdd9486ac (patch) | |
tree | e7d92ecd300a406165bbb17922456ac5e487473f | |
parent | e979943578891555904bfad9f452ed9c6c7aadda (diff) | |
parent | d6ae58e1a529666b0284373469a5032d0cbb2d9a (diff) | |
download | ayatana-indicator-application-e04e32f8be96d34f2986684a00d19a6bdd9486ac.tar.gz ayatana-indicator-application-e04e32f8be96d34f2986684a00d19a6bdd9486ac.tar.bz2 ayatana-indicator-application-e04e32f8be96d34f2986684a00d19a6bdd9486ac.zip |
Fixes for the mono bindings to make the properties work with enums and the #define'd string names.
-rw-r--r-- | bindings/mono/ApplicationIndicator.custom | 26 | ||||
-rw-r--r-- | bindings/mono/Makefile.am | 51 | ||||
-rw-r--r-- | bindings/mono/libappindicator-api.metadata | 26 |
3 files changed, 77 insertions, 26 deletions
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 dedbeb7..eb6545b 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 @@ -16,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" @@ -33,19 +36,41 @@ 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) +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 f019f0a..86f0f26 100644 --- a/bindings/mono/libappindicator-api.metadata +++ b/bindings/mono/libappindicator-api.metadata @@ -5,27 +5,27 @@ <attr path="/api/namespace/object[@cname='AppIndicator']/signal[@field_name='new_status']" name="name">NewStatus</attr> <attr path="/api/namespace/object[@cname='AppIndicator']/signal[@field_name='connection_changed']" name="name">ConnectionChanged</attr> <attr path="/api/namespace/object[@cname='AppIndicator']/signal[@field_name='new_icon']" name="name">NewIcon</attr> - <attr path="/api/namespace/object[@cname='AppIndicator']/property[@cname='PROP_ID_S']" name="name">ID</attr> - <attr path="/api/namespace/object[@cname='AppIndicator']/property[@cname='PROP_CATEGORY_S']" name="name">Category</attr> - <attr path="/api/namespace/object[@cname='AppIndicator']/property[@cname='PROP_CATEGORY_S']" name="type">AppIndicatorCategory</attr> - <attr path="/api/namespace/object[@cname='AppIndicator']/property[@cname='PROP_STATUS_S']" name="name">Status</attr> - <attr path="/api/namespace/object[@cname='AppIndicator']/property[@cname='PROP_STATUS_S']" name="type">AppIndicatorStatus</attr> - <attr path="/api/namespace/object[@cname='AppIndicator']/property[@cname='PROP_ICON_NAME_S']" name="name">IconName</attr> - <attr path="/api/namespace/object[@cname='AppIndicator']/property[@cname='PROP_ATTENTION_ICON_NAME_S']" name="name">AttentionIconName</attr> - <attr path="/api/namespace/object[@cname='AppIndicator']/property[@cname='PROP_MENU_S']" name="name">Menu</attr> - <attr path="/api/namespace/object[@cname='AppIndicator']/property[@cname='PROP_MENU_S']" name="type">GtkMenu*</attr> - <attr path="/api/namespace/object[@cname='AppIndicator']/property[@cname='PROP_CONNECTED_S']" name="name">Connected</attr> + <attr path="/api/namespace/object[@cname='AppIndicator']/property[@cname='id']" name="name">ID</attr> + <attr path="/api/namespace/object[@cname='AppIndicator']/property[@cname='PROP_CATEGORY_S']" name="hidden"></attr> + <attr path="/api/namespace/object[@cname='AppIndicator']/property[@cname='PROP_CATEGORY_S']" name="hidden"></attr> + <attr path="/api/namespace/object[@cname='AppIndicator']/property[@cname='PROP_STATUS_S']" name="hidden"></attr> + <attr path="/api/namespace/object[@cname='AppIndicator']/property[@cname='PROP_STATUS_S']" name="hidden"></attr> + <attr path="/api/namespace/object[@cname='AppIndicator']/property[@cname='icon-name']" name="name">IconName</attr> + <attr path="/api/namespace/object[@cname='AppIndicator']/property[@cname='attention-icon-name']" name="name">AttentionIconName</attr> + <attr path="/api/namespace/object[@cname='AppIndicator']/property[@cname='menu']" name="name">Menu</attr> + <attr path="/api/namespace/object[@cname='AppIndicator']/property[@cname='menu']" name="type">GtkMenu*</attr> + <attr path="/api/namespace/object[@cname='AppIndicator']/property[@cname='connected']" name="name">Connected</attr> <attr path="/api/namespace/object[@cname='AppIndicator']/method[@name='SetMenu']" name="name">SetMenu</attr> - + <remove-node path="/api/namespace/object/method[@cname='app_indicator_get_id']" /> <remove-node path="/api/namespace/object/method[@cname='app_indicator_get_status']" /> <remove-node path="/api/namespace/object/method[@cname='app_indicator_get_icon']" /> <remove-node path="/api/namespace/object/method[@cname='app_indicator_get_category']" /> <remove-node path="/api/namespace/object/method[@cname='app_indicator_get_attention_icon']" /> - + <remove-node path="/api/namespace/object/method[@cname='app_indicator_set_id']" /> <remove-node path="/api/namespace/object/method[@cname='app_indicator_set_status']" /> <remove-node path="/api/namespace/object/method[@cname='app_indicator_set_icon']" /> <remove-node path="/api/namespace/object/method[@cname='app_indicator_set_category']" /> - <remove-node path="/api/namespace/object/method[@cname='app_indicator_set_attention_icon']" /> + <remove-node path="/api/namespace/object/method[@cname='app_indicator_set_attention_icon']" /> </metadata> |