Re: Interaction between GTK+ and C++
- From: Jeff Franks <jcfranks tpg com au>
- To: Brian Hanley <brian hanley flextrade com>
- Cc: GTK App Dev List <gtk-app-devel-list gnome org>, GTKmm List <gtkmm-list gnome org>
- Subject: Re: Interaction between GTK+ and C++
- Date: Wed, 09 Feb 2005 14:37:27 +0000
Brian Hanley wrote:
Hi,
Has anyone tried to wrap GTK+ in C++ without using GTKmm?
Yes, I have.
That is, making calls to GTK’s C-language API from C++ objects?
If so, has anyone documented the paradigms/techniques/gotchas,
or published sample code?
This CVS link contains the object code you are interested in, in
<gfc/glib/object.[cc, hh]>
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/gfc/gfccore
This CVS link contains the GTK GUI code
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/gfc/gfcui
Specifically, how does one manage the lifespan of interdependent
widgets and C++ objects? Is it feasible to have both event-driven
GTK callbacks which reference C++ objects and externally-driven
calls to the C++ objects which reference these same widgets?
How does one manage the lifespan of such objects and widgets?
The correct way is to let GTK manage the life span of your C++ object.
When GTK notifys you that the wrapped C object has been destroyed you
call delete on its C++ wrapper. Have a look at the G::Object constuctor
and the G::Object::destroy_notify function in <gfc/glib/object.[cc, hh]>.
For example, an instance "obj" of class "MyWrapper" contains
a pointer to a widget "widg", and the address of "obj" has
been passed as a user-data argument to a GTK signal handler
for "widg".
How might one manage the lifespans of "obj" and "widg" given
that someone could both (i) call "delete" on "obj", and
(ii) call "gtk_widget_destroy" on "widg"?
Is it just a bad idea to try to mix event-driven code with
external triggers?
It's not possible to answer your questions in just a few lines because
the answers are not simple. You should find what your looking for though
at the CVS links above. If you have any questions about my code, just
ask me. I hope you have a good reason for wanting to write your own C++
wrapper for GTK+ because I can assure you, it will take a lot of
committent and a lot of hours, and a lot hours, and a lot hours...
Regards,
Jeff.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]