Re: table widget: expanding



On Thu, May 04, 2006 at 11:12:32PM +0200, Felix Kater wrote:
my table widget simply contains a label (first row) and a scrolled window (second row). I need the scrolled 
window (with a large drawing area inside) to expand. However, it doesn't.

To achieve this I assume I need to do two things: tell the table to expand itself to the maximum, and tell 
it to expand the second row only (the scrolled window) and not the first (the label).

Please see the attached example, I hope it does what you
need.

The various expansion options are nicely explained in the
tutorial, namely here:
http://www.gtk.org/tutorial/x383.html
and here:
http://www.gtk.org/tutorial/x409.html

Yeti


--
Anonyms eat their boogers.


========================================================================
#include <gtk/gtk.h>

static gboolean
expose(GtkWidget *widget, GdkEventExpose *event)
{
    gdk_draw_line(widget->window,
                  widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
                  0, 0, widget->allocation.width, widget->allocation.height);
    gdk_draw_line(widget->window,
                  widget->style->fg_gc[GTK_WIDGET_STATE(widget)],
                  0, widget->allocation.height, widget->allocation.width, 0);
    return FALSE;
}

int
main(int argc, char *argv[])
{
    GtkWidget *window, *darea, *table, *label, *scwin, *vbox, *whatever;

    gtk_init(&argc, &argv);

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "Expansion");
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

    vbox = gtk_vbox_new(FALSE, 0);
    gtk_container_add(GTK_CONTAINER(window), vbox);

    table = gtk_table_new(2, 1, FALSE);
    gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, TRUE, 0);

    label = gtk_label_new("A label in the table, does not expand vertically");
    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
    gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1,
                     GTK_EXPAND | GTK_FILL, 0, 0, 0);

    darea = gtk_drawing_area_new();
    g_signal_connect(darea, "expose-event", G_CALLBACK(expose), NULL);

    scwin = gtk_scrolled_window_new(NULL, NULL);
    gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scwin),
                                        GTK_SHADOW_NONE);
    gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scwin), darea);
    gtk_table_attach(GTK_TABLE(table), scwin, 0, 1, 1, 2,
                     GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);

    whatever = gtk_entry_new();
    gtk_entry_set_text(GTK_ENTRY(whatever), "This entry is not in the table "
                       "and does not expand either");
    gtk_box_pack_start(GTK_BOX(vbox), whatever, FALSE, FALSE, 0);

    gtk_widget_show_all(window);
    gtk_main();

    return 0;
}



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