Re: How to put widget in CUSTOM GtkContainer

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

 



AlannY wrote:
> Hi there, my name is Alan and I have some troubles with GtkContainer.
> 
> It's about 2 days, I already have spent trying to solve it, but I (i 
> guess) can't.
> 
> I'm writing a program, which looks like:
> +-----------------------------+
> | Main Window (GtkWindow)     |
> | +-------------------------+ |
> | | My custom widget        | |
> | | +---------------------+ | |
> | | | GtkButton           | | |
> | | +---------------------+ | |
> | +-------------------------+ |
> +-----------------------------+
> 
> I need some approach to place a GtkButton in my custom widget. I found 
> (from GTK+ sources) that GtkTreeView, GtkNotebook (and others) inherits 
> from GtkContainer . So, I decide to inherit my widget not from 
> GtkWidget, but from GtkContainer.
> 
> typedef struct _Grid            Grid;
> typedef struct _GridClass       GridClass;
> 
> struct _Grid
> {
>    GtkContainer parent;
> };
> 
> struct _GridClass
> {
>    GtkContainerClass parent_class;
> };
> 
> And my _get_type function looks like:
> 
> GtkType
> grid_get_type ()
> {
>    static GtkType grid_type = 0;
> 
>    if (!grid_type)
>      {
>        const GTypeInfo object_info =
>        {
> 	sizeof (GtkContainerClass),
> 	NULL,
>          NULL,
> 	(GClassInitFunc) grid_class_init,

That still isn't the whole code! What does grid_class_init() do? Attach 
both the whole grid header and source file to the email.

> 	NULL,
> 	NULL,
> 	sizeof (Grid),
> 	0,
> 	(GInstanceInitFunc) grid_init,
> 	NULL,
>        };
> 
>        grid_type = g_type_register_static (GTK_TYPE_CONTAINER, 
> g_intern_static_string ("Grid"), &object_info, 0);
>      }
> 
>    return grid_type;
> }
> 
> The main feature of this function is GTK_TYPE_CONTAINER ;-) You see ;-)
> 
> Next in my program, I'm creating my widget (grid) with that:
> 
> [...]
> grid = grid_new ();
> gtk_container_add (GTK_CONTAINER (window), grid);
> [...]
> 
> So, my problem starts here: at _new() function. I want to create 
> GtkButton and place it in my widget.
> 
> GtkWidget*
> grid_new ()
> {
>    Grid *grid;
> 
>    grid = g_object_new (grid_get_type (), NULL);
> 
>    button = gtk_button_new_with_label ("Test");
>    gtk_widget_set_parent (button, GTK_WIDGET (grid));
>    gtk_widget_show (button);
> 
>    return GTK_WIDGET (grid);
> }
> 
> Everything right and works without errors ;-) But nothing happens. I 
> can't see a GtkButton ;-)
> 
> How to solve it? I need some way for "draw" (expose) GtkButton in my 
> custom widget ;-) How to do it?
> 
> P.S. I extremely think, that I just forgot something. But there are no 
> tutorials about it ;-) "Information vacuum", so I decide to ask in 
> mailing-lists.
> P.P.S. Only information about custom widget creation is a GTK sources, 
> but (even with it) I can't solve my problem. ;-)
> P.P.P.S. Also, I really want to understand how GtkBox works ;-)

And stop creating new threads... This is your third thread in 
gtk-app-devel where you ask the same question.

tom

_______________________________________________
gtk-list mailing list
gtk-list@xxxxxxxxx
http://mail.gnome.org/mailman/listinfo/gtk-list

[Index of Archives]     [Touch Screen Library]     [GIMP Users]     [Gnome]     [KDE]     [Yosemite News]     [Steve's Art]

  Powered by Linux