Re: Displaying simple HTML in gtkmm app



On Friday 25 March 2005 06:03, John Taber wrote:
> Chris,
>
> On Thursday 24 March 2005 16:01, you wrote:
> > What more do you want to know?
>
> Please realize some of us are application developers coming from other non
> programming disciplines so for me, a couple of code lines are worth a
> thousand words - here is the example of where I was working from
>
> > > > gtkhtml *cview;
> > > > Gtk::Frame *mmview = new Gtk::Frame();
> > > > mmview->wrap(cview);
> > > > mmview->...... // whatever gtkhtml method
> >
> > Pass a pointer to the GTK+ object to be wrapped as the argument to
> > Glib::wrap(), and Glib::wrap() returns a pointer to the resulting wrapped
> > gtkmm object.
>
> so trying to apply what you indicate here I come up with this:
> gtkhtml *cview;
> Gtk::Frame *mmview = Glib::wrap(cview);
> mmview->...... // whatever gtkhtml method
>
> does this look right ? I just picked out Frame - not sure how to pick a
> gtkmm object to wrap into.  Also, I wonder if I first have to instantiate
> the gtkmm object like:
> Gtk::Frame *mmview = new Gtk::Frame();
> mmview = Glib::wrap(cview);
>
> thks John

John,

This will not work.  You can only wrap a GTK+ object to provide the 
corresponding gtkmm object.  Thus a GtkFrame object wraps to a Gtk::Frame 
object, a GtkLable object wraps to a Gtk::Label object, and so on, so your 
code above won't work (it should fail to compile).

An example is this:
#include <gtk/gtkframe.h>
#include <gtkmm/frame.h>
GtkWidget* frame = gtk_frame_new(0);
Gtk::Frame* wrapped_frame = Glib::wrap(GTK_FRAME(frame));

wrapped_frame is now pointing to a standard Gtk::Frame object.  You can get 
back to the underlying C object from it (as with any other gtkmm object) with 
wrapped_frame->gobj();

I do not really know anything about gtkhtml, but I do not think there is a 
corresponding gtkmm-compatible C++ class wrapping it, so your approach will 
not work.  If you need to put a gtkhtml object in a gtkmm container, the best 
bet would probably be to put it in the equivalent GTK+ container first 
(assuming that that is possible with gtkhtml and GTK+), and wrap the GTK+ 
container to form the equivalent gtkmm container.  You can put the gtkmm 
container anywhere in gtkmm which excepts that container type.

The disadvantage is that you will have to learn some GTK+ coding to do it (but 
that will come in handy anyway).

Good luck!

Chris



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]