supernova: fix for small audio vector sizes
[supercollider.git] / HelpSource / Guides / EmacsGUI.schelp
blob0bc8163dd4e51a1fa230b72ddf9a4b416e96c602
1 title:: Emacs GUI
2 summary:: Emacs user interfaces
3 categories:: Frontends
5 The Emacs interface actually has some nice options for user interfaces as well. Here are some examples:
6 code::
7 // create a buffer:
8 p = EmacsBuffer.new;
10 // show the buffer:
11 p.front;
13 // create a key action for the buffer:
15 p.defineKey( "hello", { "hey there".postln; } );
17 // type hello on the window and look at the postbuffer
18 p.front;
20 p.defineKey( "hey there", { "hello".postln; } );
22 // type hey there and look at the postbuffer
23 p.front;
25 // put some text in the buffer:
27 p.insert( "this is a really interesting text to read in the buffer" );
28 p.front;
30 // make a newline:
32 p.newline;
34 // make a button:
36 p.button( [ "on", "off", "in between" ], { |v| v.postln; } );
37 p.front;
39 // make a button with a different look:
40 p.button( [ "on", "off", "in between" ], { |v| v.postln; }, "******", "+++++" );
41 p.front;
43 // create a close button:
44 p.closeButton;
45 // clicking it will close the buffer!
47 p = EmacsBuffer.new;
49 p.editableField( "write something here", "like this?", { |v| v.postln; } );
50 p.front;
52 // moving the cursor around in the buffer:
53 p.gotoBob; // beginning
54 p.gotoEob; // end
55 p.goto( 5 ); // go to fifth position
57 // making it a sclang-mode buffer to write code in:
58 Emacs.evalLispExpression( p.use( [ 'sclang-mode' ] ).asLispString );
60 // close it:
61 p.free;
65 p = EmacsBuffer.new; // args: name
66 p.front;
68 // making a number box
69 n = EmacsNumber.new( p, "number box", [0,5].asSpec, { |v| v.postln; } ); // args: buffer, tag/label, spec, action
70 p.front;
72 // making a button:
73 x = EmacsButton( p, [ "on", "off", "in between" ], { |v| v.postln; }, "******", "+++++" );
74 // args: buffer, states, action, prefix, suffix
75 p.front;
77 t = EmacsText( p, "hello", 30 ); // args: buffer, string, size, align
78 p.front;
80 p.newline;
81 t = EmacsText( p, "helloooo", 30, \right ); // args: buffer, string, size, align
83 p.newline;
84 e = EmacsEditableField( p, "edit field", "edit me" ).action_( { |v| v.postln; } );
85 p.front;
87 b = EmacsPushButton( p, "hello" ).action_( { "do it".postln; } );
88 p.front;
90 // you can disable things:
92 b.enabled_( false );
93 p.front;
96 And last but not least, it provides a class browser:
97 code::
98 EmacsClassBrowser.new( EmacsBuffer );