SCAlert
part of wslib
An alert window class
Note: not yet SwingOSC compatible
SCAlert( "Are you alerted now?", [ "No", "Yes" ] );
creation:
SCAlert( string, buttons, actions, color, background, iconName, border )
string : a string containing the message to be displayed. You can use $\n characters in it as well
buttons : an Array containing the names of the buttons. It can also contain SCButton states.
buttons defaults to [ "cancel", "ok" ]
actions : an Array containing a function for each button
color : the color of the border stripe around the window and the icon. Defaults to Color.red.alpha_(0.75)
background : the background color of the window. Defaults to white
iconName : the name of the icon to be displayed from DrawIcon. Defaults to 'warning'
border : Should the window have a border? Defaults to true
SCAlert also listens to key strokes. If you type a letter it will find the button of which the name starts with that letter and hit it (just like in most alert windows).
(
SCAlert( "What do you want to hear now?\n
type 'n' for nothing, 's' for a sine wave
and 'p' for a pulse",
[ "nothing", ["sine wave", Color.red(0.2)], "pulse" ], // buttons
[ nil,
{ { Env.sine(0.25, 0.25).kr(2) * SinOsc.ar(440) }.play; },
{ { Env.sine(0.25, 0.25).kr(2) * Pulse.ar(440) }.play; } ], // actions
Color.blue(0.2),
iconName: 'sign_$?' );
);
class vars:
modal
if true (default) runs all SCAlerts in modal mode (see SCModalWindow)
elements of the SCAlert:
buttons
An Array of button states for each button
buttonViews
An Array containing all SCButton objects
window
The SCWindow itself
string / string_
actions / actions_
color / color_
background / background_
iconName / iconName_
actions, Colors and iconName can all be changed after creation
onCloseIndex / onCloseIndex_
the index of the button action which is eveluated when the SCAlert window is closed using it's close box.
Defaults to -1, which means that none of the actions is used.
(
a = SCAlert( "hello!" );
a.color = Color.green(0.2);
b = Task({
var i = 0;
loop {
{ a.iconName = ("wait_" ++ (i = i+(1/16))).asSymbol; }.defer;
0.1.wait;
};
}).start;
a.actions = [ { b.stop }, { b.stop } ];
a.onCloseIndex = 0;
)
buttonClosesWindow / buttonClosesWindow_
defaults to true, if false the window is not closed when one of the butons is hit.
buttonLabel ( index ) / buttonLabel_ ( index, newLabel )
changes the name of the button at index
focus ( index )
sets the focus to the button at index
enable ( index ) / disable ( index )
enables or disables the button at index
(
a = SCAlert( "try out these buttons", ["cancel", "disable me", "change text"] );
a.buttonClosesWindow_( false );
a.actions_( [
{ a.window.close }, // cancel closes the window
{ a.disable( 1 ); },
{ a.string_( "text changed" ); // first hit changes text
a.buttonLabel_( 2, "ok" );
a.actions[2] = { a.window.close; } // next hit closes window
} ] );
)
hit
hits the currently focused button