sclang: ServerShmInterface - try to avoid multiple destructor calls
[supercollider.git] / HelpSource / Classes / QLineLayout.schelp
blob42940c12597b8909d74dd82bdb66ac6170728fc8
1 CLASS:: QLineLayout
2 summary:: Superclass of layouts that distribute views in a line
3 categories:: GUI>Layout
4 related:: Guides/GUI-Layout-Management
6 DESCRIPTION::
7 The two subclasses - QHLayout and QVLayout - distribute views in a horizontal or vertical line, respectively.
9 subsection:: Fine tuning
11 Each item can be assigned a stretch factor and an alignment flag to fine tune how its size and position are managed. This can be done at layout link::#*new#construction::, when an item is added with link::#-add:: method or for an already contained item with link::#-setStretch:: and link::#-setAlignment:: methods.
13 Stretch factor only affects distribution in the direction of the layout (vertical or horizontal). All items have a stretch factor of 0 by default, so only their own preferences will determine space distribution. As soon as an item is assigned a stretch factor higher than 0, the space will be redistributed according to proportions of stretch factors.
15 subsection:: Leaving empty space
17 An empty space with an arbitrary stretch factor may be inserted using nil in place of an item in combination with the stretch factor. Similarily, an empty space of fixed size may be inserted using an integer in place of an item. See link::#*new#constructor:: and link::#-add:: for details.
20 CLASSMETHODS::
22 PRIVATE:: layoutClass
23 PRIVATE:: parse
25 METHOD:: new
27 Create a QLineLayout and immediately fill it with items given as arguments.
29 argument:: items
30 A sequence of items that the layout will distribute in the given order. An item can be a QView, a QLayout, nil (for stretchable empty space) or an Integer (for fixed-size empty space). You can assign stretch factor and/or alignment to an item by wrapping it into an array, followed by pairs of ('stretch', factor) and/or ('align', flag). 'stretch' and 'align' may be abbreviated with 's' and 'a'. Simplified syntax for placing key-value pairs into an array comes handy. If the item is nil only the stretch parameter will have effect; if the item is an integer none of the parameters will have any effect. For example:
32 code::
33 w = Window.new;
34 w.layout = QVLayout(
35         [Button().states_([["Foo"]]), stretch:1, align:\bottomLeft],
36         20,
37         [TextView().string_("Bar\nBar\nBar\n"), s:3],
38         [nil, s:1]
40 w.front;
44 INSTANCEMETHODS::
46 METHOD:: add
47 Add an item to the right or the bottom end of the line, for QHLayout and QVLayout respectively.
49 argument:: item
50 The item can be a QView, a QLayout, an Integer (specifying amount in pixels of empty space) or nil (for stretchable empty space). If the item is nil the align argument will have no effect; if the item is an Integer none of the other arguments will have any effect.
52 argument:: stretch
53 An integer stretch factor.
55 argument:: align
56 A symbol expressing the alignment.
59 METHOD:: setStretch
60 Set stretch factor of an item contained in the layout.
62 argument:: item
63 A QView or QLayout managed by the layout.
65 argument:: stretch
66 An integer stretch factor.
69 METHOD:: setStretchAt
70 Set stretch factor of an item contained in the layout at given index.
72 argument:: index
73 An integer position of an item in the layout.
75 argument:: stretch
76 An integer stretch factor.
79 METHOD:: setAlignment
80 Set alignment of an item contained in the layout.
82 argument:: item
83 A QView or a QLayout managed by the layout.
85 argument:: align
86 A symbol expressing the alignment.
89 METHOD:: setAlignmentAt
90 Set alignment of an item contained in the layout at given index.
92 argument:: index
93 An integer position of an item in the layout.
95 argument:: align
96 A symbol expressing the alignment.
98 EXAMPLES::
100 Try resizing the window created by the following code.
102 code::
103 w = Window.new;
104 w.layout = QVLayout(
105         QTextView(),
106         QHLayout(
107                 QButton().states_([["Foo"]]),
108                 [QTextField().string_("Bar"), stretch:1],
109                 [QTextField().string_("BarBarBar"), stretch:4]
110         )
112 w.front;