Merge pull request #506 from andrewcsmith/patch-2
[supercollider.git] / HelpSource / Classes / HLayoutView.schelp
blob98a0b7cf152006b295eb7748af2d57c0e78e3fec
1 class:: HLayoutView
2 redirect:: implClass
3 summary:: A container view that arranges its children horizontally
4 categories:: GUI>Views
5 related:: Classes/VLayoutView, 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/HLayout:: for an equivalent to this class, and link::Guides/GUI-Layout-Management:: for a general description of the Qt layout system.
13 HLayoutView can be a parent to other views, and it automatically arranges its child views in horizontal order, expanding their height to its own bounds. Only the width of the children is relevant.
15 When arranging its children, HLayoutView takes the values of their 'minWidth' and 'maxWidth' properties into account. This is useful when a child's link::Classes/View#-resize#resize:: mode is set to 2, 5, or 8. See link::#examples:: below.
17 HLayoutView inherits some useful formatting methods from its superclasses.
19 note::
20 HLayoutView 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 Child view height fills the HLayoutView automatically:
30 code::
32 q = 10;
33 w = Window.new;
35 h = HLayoutView(w,Rect(0,0,300,300));
37 Array.fill(q,{ arg i;
38     Slider(h,Rect(0,0,20,75)).value_(i / q)
39 });
40 h.background_(Color.rand);
42 w.front
46 Stretching the layout view; Slider height fills the View automatically:
48 code::
50 q = 8;
51 w = Window.new;
53 h = HLayoutView(w,Rect(0,0,300,300));
54 h.background = Color.rand;
55 h.resize = 5; // elastic
57 Array.fill(q,{ arg i;
58     var s;
59     s = Slider(h,Rect(0,0,20,75)).background_(Color.grey.alpha_(0.4));
60     s.value = i / q;
61     s
62 });
63 StaticText(h, Rect(0,0,105,20)).background_(Color.rand).string_(" Some Example\n Text");
64 w.front
68 Stretching the layout view and the contents; if all the contents are elastic, the widths of the contents are perfectly divided up. In this example, the StaticText is not elastic in order to preserve its width:
70 code::
72 q = 10;
73 w = Window.new;
75 h = HLayoutView(w,Rect(0,0,300,300));
76 h.resize = 5; // elastic
77 h.background = Color.rand;
79 Array.fill(q,{ arg i;
80     var s;
81     s = Slider(h,Rect(0,0,20,75));
82     s.resize = 5; // elastic
83     s.value = i / q;
84     s
85 });
86 StaticText(h, Rect(0,0,105,20)).background_(Color.rand).string_(" Some Example\n Text");
88 w.front
92 Setting minWidth on contents; beware that if the layout view width is smaller than the combined width of all the contents, things might disappear when you try to handle them with the mouse:
94 code::
96 q = 5;
97 w = Window.new;
99 h = HLayoutView(w,Rect(0,0,300,300));
100 h.background = Color.rand;
101 h.resize = 5; // elastic
103 Array.fill(q,{ arg i;
104     var s;
105     s = Slider(h,Rect(0,0,20,75));
106     s.value = i / 5;
107     if(i < 2,{
108         s.resize = 5; // some elastic
109         s.setProperty(\minWidth,20);
110     },{
111         s.resize = 1; // some not elastic
112     });
113     s
115 StaticText(h, Rect(0,0,105,20)).background_(Color.rand).string_(" Some Example\n Text");
117 w.front
121 code::
123 q = 5;
124 w = Window.new;
126 h = HLayoutView(w,Rect(0,0,300,300));
127 h.resize = 5; // elastic
128 h.background = Color.rand;
129 Array.fill(q,{ arg i;
130     var s;
131     s = Slider(h,Rect(0,0,20,75));
132     s.value = i / 5;
133     s.resize = 5;
134     s.setProperty(\minWidth,20);
135     s.setProperty(\maxWidth,40);
136     s
139 w.front
143 Text flows:
145 code::
147 q = 5;
148 w = Window.new;
150 h = HLayoutView(w,Rect(0,0,300,300));
151 h.resize = 5; // elastic
153 Array.fill(q,{ arg i;
154     var s;
155     s =     StaticText(h,120@20).string_("Some short text which wraps around");
157     s.resize = 5;
158     s.setProperty(\minWidth,10);
159     s.setProperty(\maxWidth,120);
161     // not working
162     s.setProperty(\maxHeight,10);
163     s.setProperty(\minHeight,10);
165     s.background = Color.white;
166     s
169 w.front
173 Spacing:
175 code::
177 q = 10;
178 w = Window.new;
180 h = HLayoutView(w,Rect(0,0,300,300));
181 h.setProperty(\spacing,0);
183 Array.fill(q,{
184     Slider(h,Rect(0,0,20,75))
187 w.front