Added help for Pen and updated some other docs
[supercollider.git] / HelpSource / Classes / SimpleController.schelp
blob79e05478bdb3486b96db06378b6f9c260e813e27
1 CLASS:: SimpleController
2 summary:: Controller according to the model-view-controller (M-V-C) paradigm
3 categories:: Core
4 related:: Classes/Object
6 DESCRIPTION::
8 SimpleController can be used as a controller according to the model-view-controller (M-V-C) paradigm. It provides an
9 link::Class/IdentityDictionary:: of actions, which are called whenever the attached model sends a notification by
10 calling changed.
13 CLASSMETHODS::
15 METHOD:: new
16 Creates a SimpleController instance with the model to be observed.
18 argument:: model
19 An object of any class
22 INSTANCEMETHODS::
24 private:: init, update
26 METHOD:: put
28 argument:: what
29 Register an action, which is called when the model invokes changed(what, moreArgs).
31 argument:: action
33 Action to register.
36 METHOD:: remove
38 Remove a registered action.
40 argument:: action
42 Action to remove
44 EXAMPLES::
46 code::
48 var controller, model, view;
50 model = Ref(0.5);
51 controller = SimpleController(model);
52 controller.put(\value,
53         {|theChanger, what, moreArgs|
54                 view.value_(theChanger.value);
55         });
57 view = Slider(Window("slider", Rect(100, 100, 330, 38)).front, Rect(5, 5, 320, 20));
58 view.onClose_{controller.remove};
60 // run a routine to change the model's value:
62         100.do{
63                 model.value_(1.0.rand.postln).changed(\value);
64                 0.5.wait;
65         }
66 }.play(AppClock)