linux: shared memory interface - link with librt
[supercollider.git] / HelpSource / Classes / CmdPeriod.schelp
blob8c51718858e4cb2d0dd80291deea5b7635c43441
1 class:: CmdPeriod
2 summary:: register objects to be cleared when Cmd-. is pressed
3 related:: Classes/ShutDown, Classes/ServerQuit
4 categories:: Control
6 description::
8 CmdPeriod allows you to register objects to perform an action when the user presses Cmd-. These objects must implement a method called strong::-cmdPeriod:: which performs the necessary tasks. (You can add such a method in your custom classes.) Note that since link::Classes/Function:: implements strong::-cmdPeriod:: as a synonym for strong::-value::, it is possible to register any function (and thus any arbitrary code) for evaluation when Cmd-. is pressed.
10 ClassMethods::
12 method::add
13 Registers an object to be cleared when Cmd-. is pressed. This object will stay registered until it is explicitly removed, and will thus respond to additional presses of Cmd-.
15 method::remove
16 Removes an object that was previously registered.
18 method::removeAll
19 Removes all objects that have been registered.
21 method::doOnce
22 Registers an object to be evaluated once, and then unregistered.
24 method::objects
25 Get or set the list of objects that are called when CmdPeriod is evaluated.
27 method::era
28 The number of times CmdPeriod has been called since startup.
30 Examples::
32 code::
34 f = {"foo".postln };
35 g = {"bar".postln };
36 CmdPeriod.add(f);
37 CmdPeriod.add(g);
40 // Now press Cmd-.
42 CmdPeriod.remove(g);
44 // Now press Cmd-. Only f executes
46 CmdPeriod.remove(f); // must explicitly cleanup
49 // Now press Cmd-.
51 CmdPeriod.add(g); // one object is added only once.
52 CmdPeriod.add(g); // one object is added only once.
55 // Now press Cmd-.
57 // remove it again.
58 CmdPeriod.remove(g);
61 // note that often you want to automatically remove the function once it is evaluated
62 // instead of
64 f = { "foo".postln; CmdPeriod.remove(f) };
65 CmdPeriod.add(f);
67 // you can write:
69 CmdPeriod.doOnce { "foo".postln }
71 // a typical example:
73 w = Window.new("close on cmd-.").front;
74 CmdPeriod.doOnce { w.close };
78 // in some cases you might need to defer the function by a short amount of time
79 a = { Synth(\default)};
80 a.value;
81 CmdPeriod.add({{a.value}.defer(0.01)});
83 // remove all
84 CmdPeriod.removeAll