Forgot a help fix: Drag a dock's title bar, not divider, to reposition
[supercollider.git] / HelpSource / Classes / VLayoutView.schelp
blob1eb7f4cfa86e05ebe51cea6a555085d31b223941
1 class:: VLayoutView
2 redirect:: implClass
3 summary:: A container view that arranges its children vertically
4 categories:: GUI>Views
5 related:: Classes/HLayoutView, Classes/CompositeView
7 DESCRIPTION::
9 note::
10 In Qt GUI, this class has been rendered strong::obsolete:: by a special set of layout classes; they are easier to use and more flexible. See link::Classes/VLayout:: for an equivalent to this class, and link::Guides/GUI-Layout-Management:: for a general description of the Qt layout system.
13 VLayoutView can be a parent to other views, and it automatically arranges its child views in vertical order, expanding their width to its own bounds. Only the height of the children is relevant.
15 When arranging its children, VLayoutView takes the values of their 'minHeight' and 'maxHeight' properties into account. This is useful when a child's link::Classes/View#-resize#resize:: mode is set to 4, 5, or 6. See link::#examples:: below.
17 VLayoutView inherits some useful formatting methods from its superclasses.
19 note::
20 VLayoutView is designed mainly for grouping and placing widgets. While you can set it to accept key presses, it does not accept mouse clicks or drags.
23 CLASSMETHODS::
24 PRIVATE:: key
26 EXAMPLES::
28 code::
30 q = 10;
31 w = Window.new;
33 v = VLayoutView(w,Rect(10,10,300,300));
35 Array.fill(q,{ arg i;
36     Slider(v,Rect(0,0,75,20)).value_(i / q)
37 });
39 w.front
42 // show the area of the view.
43 v.background_(Color.rand) // The sliders automatically expand to the optimal width
47 Stretching the layout view; Slider height is fixed:
49 code::
51 q = 10;
52 w = Window.new;
54 v = VLayoutView(w,Rect(10,10,300,300));
55 v.background_(Color.rand);
56 v.resize = 5; // elastic
57 Array.fill(q,{ arg i;
58     var s;
59     s = Slider(v,Rect(0,0,55,20));// The bounds.width are irrelevant here. They expand to the optimal width
60     s.value = i / q;
61     s
62 });
63 StaticText(v, Rect(0,0,55,20)).background_(Color.rand).string_("Some Example Text").align_(\center);
64 w.front
68 Stretching the layout view and the contents; if all the contents are elastic, the heights of the contents are perfectly divided up. In this example, the StaticText is not elastic in order to preserve its height.
70 code::
72 q = 10;
73 w = Window.new;
75 v = VLayoutView(w,Rect(10,10,300,300));
76 v.background_(Color.rand);
77 v.resize = 5; // elastic
78 Array.fill(q,{ arg i;
79     var s;
80     s = Slider(v,Rect(0,0,75,20));
81     s.resize = 5; // elastic
82     s.value = i / q;
83     s
84 });
85 StaticText(v, Rect(0,0,55,40))
86     .background_(Color.rand).string_("Some Example Text")
87     .align_(\center);
89 w.front
93 Mixed stretching modes:
94 code::
96 q = 5;
97 w = Window.new;
99 v = VLayoutView(w,Rect(10,10,300,300));
100 v.resize = 5; // elastic
101 v.background_(Color.grey);
102 Array.fill(q,{ arg i;
103     var s;
104     s = Slider(v,Rect(0,0,75,20)).background_(Color.rand);
105     s.value = i / 5;
106     if(i < 2,{
107         s.resize = 5; // some elastic
108         s.setProperty(\minHeight,20);
109     },{
110         s.resize = 1; // some not elastic
111     });
112     s
114 StaticText(v, Rect(0,0,55,20)).background_(Color.rand).string_("Some Example Text").align_(\center);
116 w.front
120 Set minimum heights; beware that if the layout view height is smaller than the combined height of all the contents, things might disappear when you try to handle them with the mouse:
122 code::
124 q = 5;
125 w = Window.new;
127 v = VLayoutView(w,Rect(10,10,300,300));
128 v.resize = 5; // elastic
129 v.background_(Color.grey);
130 Array.fill(q,{ arg i;
131     var s;
132     s = Slider(v,Rect(0,0,75,20)).background_(Color.blue.alpha_(0.2));
133     s.value = i / 5;
134     s.resize = 5;
135     s.setProperty(\minHeight,20);
136     s.setProperty(\maxHeight,40);
137     s
139 w.front
143 Spacing:
145 code::
147 q = 10;
148 w = Window.new;
150 v = VLayoutView(w,Rect(10,10,300,300));
151 v.setProperty(\spacing,0);
153 Array.fill(q,{
154     Slider(v,Rect(0,0,75,20))
157 w.front
162 Nesting: use VLayoutView and HLayoutView in combination:
163 code::
165 q = 10;
166 w = Window.new("nesting",Rect(30,30,400,700));
168 v = VLayoutView(w,Rect(10,10,300,600));
170 v.background = Color.rand;
172 Array.fill(q,{ arg i;
173     Slider(v,Rect(0,0,75,20)).value_(i / q)
176 StaticText(v, Rect(0,0,55,20)).background_(Color.rand).string_("Some Example Text").align_(\center);
178 h = HLayoutView(v,Rect(10,10,300,300));
180 Array.fill(q,{ arg i;
181     Slider(h,Rect(0,0,20,70)).value_(i / q)
183 h.background = Color.rand;
185 w.front