CLASS:: StaticText summary:: A view displaying non-editable text categories:: GUI>Views DESCRIPTION:: A view displaying non-editable text CLASSMETHODS:: PRIVATE:: key INSTANCEMETHODS:: SUBSECTION:: Data METHOD:: string The text displayed by the view. argument:: A String. METHOD:: object If link::#-setBoth:: is true, setting this variable also sets link::#-string:: to the value interpreted link::Classes/Object#-asString#as String::. argument:: Any object, typically one which makes sense to display as a string, such as a Float. METHOD:: setBoth A variable stating whether setting link::#-object:: will also set link::#-string::. argument:: A Boolean. SUBSECTION:: Appearance METHOD:: align The alignment of the displayed text. See link::Reference/gui_alignments:: for possible values. METHOD:: font The font used to display the text. argument:: A Font. METHOD:: stringColor The color used to display the text. argument:: A Color. METHOD:: background Setting this variable colors the whole area occupied by the view under the text with the given color. argument:: A Color. EXAMPLES:: subsection:: Basic Example code:: ( w = Window.new.front; a = StaticText(w, Rect(10, 10, 200, 20)); a.string = "Rolof's Rolex"; ) // adjust look , alignment and content a.background=Color.grey; a.align = \center; a.font = Font("Monaco", 11); a.string = "Your Rolex"; :: subsection:: Monitoring Values in a Synth code:: ( w = Window("Frequency Monitor", Rect(200, Window.screenBounds.height-200,300,150)).front; a = StaticText(w, Rect(45, 10, 200, 20)).background_(Color.rand); a.string = " Current Frequency "; Button.new(w, Rect(45, 70, 200, 20)).states_([["close",Color.black,Color.rand]]).action_({w.close}); s.waitForBoot({ b=Bus.new(\control,0,1); q=SynthDef(\Docs_FreqMonitor, {var freq,snd; freq=LFNoise0.ar(2, 400, 650); snd=SinOsc.ar(freq,0,0.2); Out.ar(0,snd); Out.kr(b.index,freq); // output the frequency to a control bus }).play; r= Routine{ { // Set the value of the StaticText to the value in the control bus. // Setting GUI values is asynchronous, so you must use .defer in the system clock. // Also you must check if the window is still open, since Routine will continue for at least // one step after you close the window. b.get( {arg v; {w.isClosed.not.if{ a.string= " Current Frequency: "++v.round(0.01)}; }.defer} ); 0.01.wait; }.loop }.play }); CmdPeriod.doOnce({w.close}); w.onClose={r.stop; q.free; b.free }; //clean up if the window closes ) :: subsection:: Dynamic Text code:: ( w = Window.new.front; w.view.background=Color.white; a = Array.fill(20, {StaticText(w, Rect(w.bounds.extent.x.rand, w.bounds.extent.y.rand, 160, 16)) .string_("Rolof's Rolex".scramble) .align_(\center) .stringColor_(Color.rand) .font_(Font([ "Helvetica-Bold", "Helvetica", "Monaco", "Arial", "Gadget", "MarkerFelt-Thin" ].choose, 11)) }); r = {inf.do{|i| thisThread.randSeed_(1284); a.do{|item| // setting GUI values is asynchronous, so you must use .defer {item.bounds = Rect(5+w.bounds.extent.x.rand * (cos(i*0.01)).abs, w.bounds.extent.y.rand * sin(i*0.01), 160, 20)}.defer; }; 0.15.wait; }}.fork; CmdPeriod.doOnce({w.close}); w.onClose_({r.stop}); ) ::