WoodHacker said:
Reid said:
WoodHacker wrote:
Reid Thompson wrote:
On Fri, 2006-10-20 at 03:35 +0900, WoodHacker wrote:
I'm new to Ruby/Gtk and find it, so far, exactly what I want for a GUI.
However, I have one problem that I can't seem to figure out and that
has to do with setting sizes of widgets. For example, I want to
create a status bar with four display areas. I can use an HBox for
the container and use four status bars for the info. Works great.
I can set the first three to be small for position data and the fourth
one to be long for general messages. Done all the time. (there may
be a better way to do this, but it works)
However, if the user resizes the main window, the statusbars stretch in
all directions, including height. I want only the last area to
stretch and it only in width. Setting height and width_requests seem
to only affect shrinking the window.
I'm having the same problem with my menubar - it stretches in height
when the window is resized. There has to be an easy fix to this, but
so far it eludes me.
Bill
http://ruby-gnome2.sourceforge.jp/hiki.cgi?Gtk::Box
see section on child props
In the statusbar code, I'm using pack_start as defined in the section
you quote. And I get the
status boxes to remain stable in the x direction. In other words, the
first three boxes stay in their fixed size and the fourth one enlarges.
The problem is with the y direction. All the boxes grow in the y
direction. This also happens with my menubar. And I believe the
menubar doesn't allow you to use pack - it wants append, which gives
you no control at all.
what are the values of:
|query_child_packing(child)|
<
http://ruby-gnome2.sourceforge.jp/hiki.cgi?Gtk::Box#query_child_packing>
Returns information about how child is packed into box.
I should have said:
I get false, false, 0, 1 (start) fror the first three and true, true,
0, 1(start) for the last one.
* Returns: [expand, fill, padding, pack_type]
A glade file that gives the effect that you want ( i believe -->
resizing the main window does not affect the size of the status bars in
cell 1 and 2 either way, the status bar in cell 3 will expand in
direction X)
A window with a 3x3 table.
row 3's cells each contain an Hbox
cell 1 and 2's Hbox's have explicitly set Height an Width
each hbox contains a status bar
properties of the hbox control the expansion of the cell see the packing
settings for the boxes below
<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
<!DOCTYPE glade-interface SYSTEM "
http://glade.gnome.org/glade-2.0.dtd">
<glade-interface>
<widget class="GtkWindow" id="window1">
<property name="visible">True</property>
<property name="title" translatable="yes">window1</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="decorated">True</property>
<property name="skip_taskbar_hint">False</property>
<property name="skip_pager_hint">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<property name="focus_on_map">True</property>
<property name="urgency_hint">False</property>
<child>
<widget class="GtkTable" id="table1">
<property name="visible">True</property>
<property name="n_rows">3</property>
<property name="n_columns">3</property>
<property name="homogeneous">False</property>
<property name="row_spacing">0</property>
<property name="column_spacing">0</property>
<child>
<widget class="GtkHBox" id="hbox2">
<property name="width_request">103</property>
<property name="height_request">16</property>
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkStatusbar" id="statusbar2">
<property name="visible">True</property>
<property name="has_resize_grip">True</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox1">
<property name="width_request">103</property>
<property name="height_request">16</property>
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkStatusbar" id="statusbar1">
<property name="visible">True</property>
<property name="has_resize_grip">True</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox3">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkStatusbar" id="statusbar3">
<property name="visible">True</property>
<property name="has_resize_grip">True</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="y_options"></property>
</packing>
</child>
</widget>
</child>
</widget>
</glade-interface>