EZText is a wrapper class which creates an (optional) StaticText, and a TextField. The value is displayed as a compileString in the text field for editing.
If the parent is nil
, then EZText will create its own Window. See EZGui for more options.
parent |
The parent view or window. If the parent is nil, then EZText will create its own Window, and place it conveniently on the screen if the bounds are a Point. If the bounds are a Rect, then the Rect determines the window bounds. |
bounds | |
label |
The label. Default value is |
action |
A Function called when the value changes. The function is passed the EZText instance as its argument. |
initVal |
The value to initialize the EZText with. |
initAction |
A Boolean indicating whether the action function should be called when setting the initial value. The default is false. |
labelWidth |
Number of pixels width for the label. The default is 60. In the |
textWidth |
Number of pixels width for the number box. The default is 45. In |
labelHeight |
Default is 20. |
layout |
|
gap |
A Point. By default, the view tries to get its parent's gap, otherwise it defaults to |
margin |
A Point. This will inset the bounds occupied by the subviews of view. |
Example:
(
w = Window("EZText", Rect(300, 300, 260, 60)).front;
g = EZText( w, // parent
250@50, // bounds
"testing", // label
{ |ez| (ez.value.asString ++" is the value of " ++ ez).postln }, // action
[1, 2, 3], // initValue
true // initAction
);
g.setColors(Color.grey,Color.white);
);
// Simplest version, no parent view, so a window is created
(
g = EZText(label:" test ");
g.action_({ |ez| (ez.value.asString ++" is the value of " ++ ez).postln });
);
(
g = EZText(bounds: Rect( 100, 200, 150, 50), label:" test ", layout: \vert);
g.action_({ |ez| (ez.value.asString ++" is the value of " ++ ez).postln });
);
The contained views can be accessed via the EZText instance variables: labelView
, textField
.
Returns the textField.
A Function to be evaluated when the value changes. Typical use is to type in a new value, and interpret it by hitting the evaluation shortcut. The first argument to the function will be the EZText.
Gets/sets the value of the ezText. Does not perform the action.
inval |
Any object. |
Sets the value and performs the action.
val |
Any object. |
Performs the action.
stringBackground |
An instance of Color. The |
stringColor |
An instance of Color. The |
textBackground |
An instance of Color. The |
textStringColor |
An instance of Color. The |
textNormalColor |
An instance of Color. The |
textTypingColor |
An instance of Color. The |
background |
An instance of Color. The |
xxxxxxxxxx
// Simplest version
( // basic use
w=Window("ez", Rect(300, 300, 300, 50)).front;
g=EZText(w, 290@40," test ", textWidth: 220,layout:\horz);
g.setColors(Color.grey,Color.white);
);
// lots of textFields on one window
(
w=Window.new.front;
w.view.decorator=FlowLayout(w.view.bounds);
w.view.decorator.gap=2@2;
40.do{
g=EZText(w, 170@16," test ", textWidth: 120,layout:\horz);
g.setColors(Color.grey, Color.white, Color.grey(0.8));
};
);
// click these parentheses to see three variants
(
m=nil;
m=2@2; //comment for no margin
/////////////////
/// Layout \horz
( // with label
g=EZText(nil, 170@20," freq ", textWidth:120,layout:\horz,margin:m);
g.setColors(Color.grey,Color.white,background: Color.grey(0.7));
g.window.bounds = g.window.bounds.moveBy(-180,50);
);
( // no label. use window name as label
g=EZText(nil, 120@20, layout:\horz,margin:m);
g.setColors(Color.grey,Color.white,background: Color.grey(0.7));
g.window.bounds = g.window.bounds.moveBy(-180, -90);
g.window.name="Freq";
);
/////////////////
/// Layout \vert
( // all features
g=EZText(nil, 120@60," freq ", textWidth: 120,layout: \vert, margin:m);
g.setColors(Color.grey,Color.white,background: Color.grey(0.7));
g.window.bounds = g.window.bounds.moveBy(100,50);
);
)
// Simplest sound example
(
Tdef(\text).set(\note, [0, 2, 7], \dur, { [0.1, 0.2].choose });
w = Window("EZTexts", Rect(200, 400, 304, 120)).front;
w.addFlowLayout;
TdefGui(Tdef(\text), 0, w);
Tdef(\text).envir.keysValuesDo { |k, v|
EZText(w, Rect(0,0,300,40), k, { |ez|
Tdef(\text).envir.put(*[k, ez.value].postcs);
}, v);
};
Tdef(\text, { |ev|
var mydur;
loop {
mydur = ev.dur;
(note: ev.note, dur: mydur).postln.play;
mydur.wait;
}
}).play;
)
// type these or similar functions into dur and note fields and evaluate:
{ [0.1, 0.2, 0.3].choose }
{ [ 0, 2, 7, 10 ].scramble.keep(rrand(0, 4)) }