262 lines
5.4 KiB
Racket
262 lines
5.4 KiB
Racket
#lang scribble/manual
|
|
@(require (for-label racket))
|
|
|
|
@title{PdefGui}
|
|
a line of editing controls for a Pdef, and optionally its envir@section{categories}
|
|
Libraries>JITLib>GUI, Live Coding
|
|
@section{related}
|
|
Classes/PdefAllGui, Classes/TdefGui, Classes/TdefAllGui, Classes/EnvirGui
|
|
|
|
@section{description}
|
|
|
|
|
|
A gui showing the link::Classes/Pdef::'s name, playing state, source state, and envir state. Optionally, its envir can also be edited.
|
|
|
|
@section{subsection}
|
|
First example
|
|
|
|
|
|
@racketblock[
|
|
g = PdefGui(); // make a PdefGui
|
|
g.object = Pdef(\a); // show when a Pdef is put in
|
|
Pdef(\a, Pbind(\note, 12)); // show whether it has a source
|
|
Pdef(\a).play; // show whether playing, stopped, or ended, and pausable
|
|
Pdef(\a).set(\dur, 0.25); // show whether the Pdef has an envir
|
|
g.close;
|
|
|
|
g = PdefGui(Pdef(\a), 3); // with an envirgui for 3 items
|
|
Pdef(\a).set(\lofreq, [1, 10], \str, "someString", \oops, \oneSymbolTooMany);
|
|
Pdef(\a).clear;
|
|
Pdef(\a).envir.clear;
|
|
g.close;
|
|
|
|
( // put it in an existing window - margin is 0@0
|
|
w = Window("my win", Rect(200, 200, 300, 200)).front;
|
|
w.addFlowLayout;
|
|
PdefGui(Pdef(\a), 0, w);
|
|
PdefGui(Pdef(\a), 3, w);
|
|
)
|
|
::
|
|
|
|
]
|
|
@section{subsection}
|
|
Details on the GUI elements
|
|
|
|
@section{definitionList}
|
|
|
|
## name button
|
|
|| when selected, typing the delete key will delete its Pdef.
|
|
## play/stop button
|
|
|| indicates whether the Pdef is playing:
|
|
@section{table}
|
|
|
|
## " >" || if stopped,
|
|
## " _" || if playing and active,
|
|
## " |" || if it is playing, but the stream has ended.
|
|
::
|
|
## pause/resume button
|
|
|| only visible if one can pause or resume the Pdef, i.e. while it is playing.
|
|
@section{table}
|
|
|
|
## "paus" || shown when you can pause it,
|
|
## "rsum" || shown when you can resume it.
|
|
::
|
|
## src button
|
|
|| opens a document to edit the source (function) of the Pdef.
|
|
@section{table}
|
|
|
|
## green || a source exists,
|
|
## white || the source is nil.
|
|
::
|
|
## env button
|
|
|| opens a document to edit the environment of the Pdef, which is where one can keep all variables the Pdef uses for easy access.
|
|
@section{table}
|
|
|
|
## green || the Pdef has an envir,
|
|
## white || the envir is nil.
|
|
::
|
|
::
|
|
|
|
@section{ClassMethods}
|
|
|
|
|
|
@section{subsection}
|
|
Creation Methods
|
|
|
|
@section{method}
|
|
new
|
|
Create a new link::Classes/JITGui:: that will be watching an object and display its state.
|
|
|
|
@section{argument}
|
|
object
|
|
the object to watch
|
|
|
|
@section{argument}
|
|
numItems
|
|
the number of display items to use, e.g. how many fields for text, or how many EZSliders for single-number parameters.
|
|
|
|
@section{argument}
|
|
parent
|
|
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.
|
|
|
|
@section{argument}
|
|
bounds
|
|
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.
|
|
|
|
@section{argument}
|
|
makeSkip
|
|
A flag whether to make a skipjack.
|
|
|
|
@section{argument}
|
|
options
|
|
a list of additional information, e.g. flags about optional buttons. (this is used is some subclasses)
|
|
|
|
@section{InstanceMethods}
|
|
|
|
|
|
@section{method}
|
|
object
|
|
a link::Classes/Pdef::, or nil
|
|
|
|
@section{method}
|
|
numItems
|
|
the number of items in the envirGui
|
|
|
|
@section{method}
|
|
parent
|
|
the parent view
|
|
|
|
@section{method}
|
|
bounds
|
|
the bounds of the link::#-zone::
|
|
|
|
@section{method}
|
|
zone
|
|
the link::Classes/CompositeView:: within which the PdefGui is shown
|
|
|
|
@section{method}
|
|
nameBut, playBut, pauseBut, srcBut, envBut
|
|
the buttons
|
|
|
|
@section{method}
|
|
envirGui
|
|
the gui for the Pdef's envir - nil if numItems is 0.
|
|
|
|
@section{method}
|
|
object
|
|
put an object in the gui.
|
|
|
|
@section{method}
|
|
moveTo
|
|
(if the jitGui is in its own window)
|
|
|
|
move it to some specific location.
|
|
|
|
@section{method}
|
|
clear
|
|
(if the jitGui is in its own window)
|
|
|
|
set the PdefGui's object to nil
|
|
|
|
@section{method}
|
|
close
|
|
(if the jitGui is in its own window)
|
|
|
|
and close its window.
|
|
|
|
@section{subsection}
|
|
Internal methods
|
|
|
|
@section{method}
|
|
srcString
|
|
a compileString that recreates the Pdef.
|
|
|
|
|
|
@racketblock[
|
|
// assume g from above is still there
|
|
g.srcString;
|
|
::
|
|
|
|
]
|
|
@section{method}
|
|
editString
|
|
a compileString that recreates the Pdef's envir at edKey.
|
|
|
|
@section{method}
|
|
editStrings
|
|
a compileString that recreates the Pdef's envir at edKeys.
|
|
|
|
@section{argument}
|
|
edKeys
|
|
Default value is nil.
|
|
|
|
|
|
@racketblock[
|
|
// assume g from above is still there
|
|
g.editString;
|
|
Pdef(\a).set(\foo, \bar);
|
|
g.editString(\foo);
|
|
|
|
g.editStrings;
|
|
::
|
|
|
|
]
|
|
@section{method}
|
|
getUsedKeys
|
|
the keys in use in the envir
|
|
|
|
|
|
@racketblock[
|
|
g.getUsedKeys;
|
|
::
|
|
|
|
]
|
|
@section{method}
|
|
openDoc
|
|
open a document with some strings at some location
|
|
|
|
|
|
@racketblock[
|
|
g.openDoc(g.editStrings);
|
|
::
|
|
|
|
]
|
|
@section{method}
|
|
makeEnvirGui
|
|
make an envirGui within zone - called internally.
|
|
|
|
@section{Examples}
|
|
|
|
|
|
|
|
@racketblock[
|
|
Pdef(\a, Pbind(\freq, Prand((1..16) * 55, inf)));
|
|
Pdef(\a).play;
|
|
t = PdefGui(Pdef(\a), 4);
|
|
Pdef(\a).set(\dur, 0.125, \amp, 0.05);
|
|
|
|
Pdef(\a).stop;
|
|
Pdef(\a).play;
|
|
Pdef(\a).pause;
|
|
Pdef(\a).resume;
|
|
|
|
t.object_(nil);
|
|
t.object_(Pdef(\a));
|
|
|
|
(
|
|
w = Window("put it in a selfmade window").front;
|
|
w.addFlowLayout;
|
|
w.view.decorator.shift(50, 50);
|
|
PdefGui(Pdef(\a), 12, w);
|
|
)
|
|
|
|
Pdef(\b, Pbind(\note, Pxrand((0..7), inf), \dur, 0.125));
|
|
Pdef(\b).play;
|
|
PdefGui(Pdef(\b));
|
|
|
|
// see all Pdefs:
|
|
PdefAllGui(16);
|
|
::
|
|
]
|
|
|
|
|