Re: Help on GObject Introspection Annotations

Tal Liron <[email protected]>
Newsgroups gmane.comp.gnome.gtk+.general,gmane.comp.gnome.gtk+.devel.general,gmane.comp.gnome.db
Message-ID <[email protected]>
Thanks!

I'll add my own git example to the list:

https://github.com/tliron/pygobject-example

While there are a lot of PyGObject tutorials out there that show
how to use GTK+3, there are none that show the complete loop of
writing your own GObject code in C or Vala specifically for use in
Python. It took me many hours to piece everything together, so I
hope this simple example code will help avoid the pain for others.

In case anybody reading this is in Chicago, I will be presenting
this at the ChiPy meeting on Dec 8th, 2011.

-Tal

On 12/02/2011 03:09 PM, Daniel Espinosa wrote:

I've added CC to gtk-list and gtk-developers in order to make public
these comments. Hope you make the same in the future.

I'm working to add new objects written in Vala for GDA in the
libgda-vala branch if you want to see how to implement a library and
Unit Test in a C library and Autotools.

http://git.gnome.org/browse/libgda

2011/12/2 Tal Liron <[email protected]> :

Thanks, that's good advice. Indeed, the property I am using can also access
a private field, forcing users to use the property API.

One advantage for me in using the property API is that I'm also using Vala.
In Vala, implementing properties is ridiculously easy.

I'm hoping in the future GI will support fields better. The project is
definitely evolving and adding features.

On 12/02/2011 02:32 PM, Daniel Espinosa wrote:

In GdaNumeric, we added accesors to fields in the struct.

I think you have a GObject implementation. Your way is the best: add
properties to access to fields.

GdaNumeric is a struct with some fields easy to modify directly from
Python, like the integer ones, but the string one is not handle by
Python by default because could be very different per case. Then we
added some API to access to struct members (all), and now this struct
is considered opaque.

For new implementations I recomend to hide struct definition in the
*.c and just use in the header:

typedef _MyStruct MyStruct;

This hides internal definition and forces the developer to use the
API. This way GObject Introspection will always make bindings to
modify struct fields as expected by the implementator and makes very
easy to automatically generate GIR files with the required API.

2011/12/2 Tal Liron <[email protected]> :

Thanks!

I solved it in my software by wrapping fields in properties. That way C code
can still access the fields directly, while Python can use set_property().

-Tal

On 12/02/2011 01:18 PM, Daniel Espinosa wrote:

No one have sent any response message.

I've added this annotations to GdaNumeric, but GIR and Vala bindings
make no difference. Both use GdaNumeric, as declared on GDA, as a
GBoxed and use g_boxed_copy and g_boxed_free functions.

May be this help was added but not implemented jet.

2011/12/2 Tal Liron <[email protected]> :

Hello Daniel, and sorry for writing to you directly, but I can't find a way
to respond to an archived message on the mailing list.

Did you ever found a solution to this issue you posted?

https://mail.gnome.org/archives/gtk-list/2011-October/msg00049.html

Thanks!

-Tal

_______________________________________________
gtk-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtk-list
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.