linux: shared memory interface - link with librt
[supercollider.git] / HelpSource / Classes / PdefGui.schelp
blob00a9242f43fde226a6103b6b8dc66d4db3b4c34c
1 class:: PdefGui
2 summary:: a line of editing controls for a Pdef, and optionally its envir
3 categories:: Libraries>JITLib>GUI
4 related:: Classes/PdefAllGui, Classes/TdefGui, Classes/TdefAllGui
6 description::
8 A gui showing the link::Classes/Pdef::'s name, playing state, source state, and envir state. Optionally, its envir can also be edited.
10 subsection::First example
12 code::
13 g = PdefGui();                  // make a PdefGui
14 g.object = Pdef(\a);            // show when a Pdef is put in
15 Pdef(\a, Pbind(\note, 12));     // show whether it has a source
16 Pdef(\a).play;                  // show whether playing, stopped, or ended, and pausable
17 Pdef(\a).set(\dur, 0.25);       // show whether the Pdef has an envir
18 g.close;
20 g = PdefGui(Pdef(\a), 3);       // with an envirgui for 3 items
21 Pdef(\a).set(\lofreq, [1, 10], \str, "someString", \oops, \oneSymbolTooMany);
22 Pdef(\a).clear;
23 Pdef(\a).envir.clear;
24 g.close;
26 (                               // put it in an existing window - margin is 0@0
27 w = Window("my win", Rect(200, 200, 300, 200)).front;
28 w.addFlowLayout;
29 PdefGui(Pdef(\a), 0, w);
30 PdefGui(Pdef(\a), 3, w);
34 subsection::Details on the GUI elements
36 definitionList::
37 ## name button
38 || when selected, typing the delete key will delete its Pdef.
39 ## play/stop button
40 || indicates whether the Pdef is playing:
41 table::
42 ## " >" || if stopped,
43 ## " _" || if playing and active,
44 ## " |" || if it is playing, but the stream has ended.
46 ## pause/resume button
47 || only visible if one can pause or resume the Pdef, i.e. while it is playing.
48 table::
49 ## "paus" || shown when you can pause it,
50 ## "rsum" || shown when you can resume it.
52 ## src button
53 || opens a document to edit the source (function) of the Pdef.
54 table::
55 ## green || a source exists,
56 ## white || the source is nil.
58 ## env button
59 || opens a document to edit the environment of the Pdef, which is where one can keep all variables the Pdef uses for easy access.
60 table::
61 ## green || the Pdef has an envir,
62 ## white || the envir is nil.
66 ClassMethods::
68 subsection::Creation Methods
70 method::new
71 Create a new link::Classes/JITGui:: that will be watching an object and display its state.
73 argument::object
74 the object to watch
76 argument::numItems
77 the number of display items to use, e.g. how many fields for text, or how many EZSliders for single-number parameters.
79 argument::parent
80 a parent view on which to display. If nil, a new window is created; strong::parent:: can also be an existing window or a composite view.
82 argument::bounds
83 a desired size and position where to display a JITGui. can be nil, a link::Classes/Point::, or a link::Classes/Rect::. JITGuis know their minimum size ( strong::minSize:: ), and if bounds is nil, minSize is used. if bounds is a link::Classes/Point:: or link::Classes/Rect::, it will be set to at least minSize. With a rect one can also supply a position where to display. If a point,shown size is the maximum of bounds and minSize.
85 argument::makeSkip
86 A flag whether to make a skipjack.
88 argument::options
89 a list of additional information, e.g. flags about optional buttons. (this is used is some subclasses)
91 InstanceMethods::
93 method::object
94 a link::Classes/Pdef::, or nil
96 method::numItems
97 the number of items in the envirGui
99 method::parent
100 the parent view
102 method::bounds
103 the bounds of the link::#-zone::
105 method::zone
106 the link::Classes/CompositeView:: within which the PdefGui is shown
108 method::nameBut, playBut, pauseBut, srcBut, envBut
109 the buttons
111 method::envirGui
112 the gui for the Pdef's envir - nil if numItems is 0.
114 method::object
115 put an object in the gui.
117 method::moveTo
118 (if the jitGui is in its own window)
120 move it to some specific location.
122 method::clear
123 (if the jitGui is in its own window)
125 set the PdefGui's object to nil
127 method::close
128 (if the jitGui is in its own window)
130 and close its window.
132 subsection::Internal methods
134 method::srcString
135 a compileString that recreates the Pdef.
137 code::
138 // assume g from above is still there
139 g.srcString;
142 method::editString
143 a compileString that recreates the Pdef's envir at edKey.
145 method::editStrings
146 a compileString that recreates the Pdef's envir at edKeys.
148 argument::edKey
149 Default value is nil.
151 code::
152 // assume g from above is still there
153 g.editString;
154 Pdef(\a).set(\foo, \bar);
155 g.editString(\foo);
157 g.editStrings;
160 method::getUsedKeys
161 the keys in use in the envir
163 code::
164 g.getUsedKeys;
167 method::openDoc
168 open a document with some strings at some location
170 code::
171 g.openDoc(g.editStrings);
174 method::makeEnvirGui
175 make an envirGui within zone - called internally.
177 Examples::
179 code::
180 Pdef(\a, Pbind(\freq, Prand((1..16) * 55, inf)));
181 Pdef(\a).play;
182 t = PdefGui(Pdef(\a), 4);
183 Pdef(\a).set(\dur, 0.125, \amp, 0.05);
185 Pdef(\a).stop;
186 Pdef(\a).play;
187 Pdef(\a).pause;
188 Pdef(\a).resume;
190 t.object_(nil);
191 t.object_(Pdef(\a));
194 w = Window("put it in a selfmade window").front;
195 w.addFlowLayout;
196 w.view.decorator.shift(50, 50);
197 PdefGui(Pdef(\a), 12, w);
200 Pdef(\b, Pbind(\note, Pxrand((0..7), inf), \dur, 0.125));
201 Pdef(\b).play;
202 PdefGui(Pdef(\b));
204         // see all Pdefs:
205 PdefAllGui(16);