Re: Reverse-wrapping gtkmm widgets to gtk+ (for glade3)
- From: Murray Cumming <murrayc murrayc com>
- To: Alexander Brinkman <a brinkman marin nl>
- Cc: gtkmm-list gnome org
- Subject: Re: Reverse-wrapping gtkmm widgets to gtk+ (for glade3)
- Date: Fri, 17 Nov 2006 17:59:03 +0100
On Fri, 2006-11-17 at 17:50 +0100, Alexander Brinkman wrote:
> On Fri, 2006-11-17 at 15:14 +0100, Murray Cumming wrote:
> > > Having looked at Glade3 and its custom widget support I would very much
> > > like to use it.
> >
> > Can you point us at any documentation on this API. For instance, how
> > would someone go about making custom GTK+ widgets available for use in
> > Glade.
>
> http://glade.gnome.org/docs/index.html
>
> The first chapter is about adding your custom widgets to glade. It is
> actually very simple if your widgets only use properties for settings,
> in that case you only need to create an xml file (catalog) with
> information about the widgets (nothing more than a name, really) and
> the .so which must be loaded.
>
> Of course for runtime loading with libglade the widgets in the .so need
> to be known with Glib before they can be used. This can be done with an
> init function which get_type()'s all the widgets.
>
> > I suspect that something might be possible, though the gtkmm widget
> > would probably need to register its own GType (not too difficult), and
> > to get the full benefit of Glade we would need to define some GObject
> > properties for the gtkmm widget.
>
> Indeed, registering your own GType is not too difficult (adding
> Glib::OBjectBase("mywidget") to the constructor does it. However, for
> Gtkmm custom widgets libglade still instantiates a widget of the parent
> type. I assume the reason for this is that Gtkmm does not provide a full
> Gtk+ gobj for my custom widgets;
It should if you have used Glib::OBjectBase("mywidget") and that init
function is being called to register that type. However, I'm not sure
how we would register that type easily in the init function without
instantiating the widget.
> which is understandable, but very
> inconvenient when interacting with C-only libraries such as
> glade/libglade.
>
> > > If this is not possible at the moment is any work on this being done to
> > > get it in Gtkmm? This is especially important because in Glade3 the
> > > custom widget facility is marked deprecated, only for Gtkmm widgets
> > > there is no alternative since it would seem we cannot let glade/libglade
> > > to instantiate Gtkmm custom widgets!
> >
> > Don't forget get_widget_derived(). It does most of what you probably
> > want - you just won't see the derived widget's specific appearance in
> > Glade.
>
> Ah, yes that is very true if the widgets only differ a bit from standard
> widgets. For widgets that are derived from a drawingarea it becomes a
> bit more frustrating as the appearance in glade will be a lot of grey,
> empty frames.
>
> Furthermore your must still exactly know in your application which
> widgets in the glade file resemble your own custom widget types. At the
> moment I'm working on an application which dynamically loads glade files
> and automatically connects the found widgets to a backend with update
> functions. We only know their names, types and function at runtime. At
> the moment when I see a Gtk::Label in the glade file, it could actually
> be a Gtk::Label, or perhaps a custom derived type of a Gtk::Label. With
> only get_widget_derived() I cannot know for sure; the custom widget type
> information needs to be in the glade file to get it fully working. With
> the (in glade3) deprecated custom widget type this is working, but as it
> is deprecated another method of equal capabilities is required. The new
> custom widget handling in glade3 looks as if it can provide all of this,
> and more (finally we have the possibility to have custom widgets
> functional inside glade). But at the moment only for C-Gtk widgets, not
> Gtkmm without a _lot_ of glue code...
>
> Brgds,
> Alexander Brinkman.
--
Murray Cumming
murrayc murrayc com
www.murrayc.com
www.openismus.com
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]