deprecate SCViewHolder-layRight
[supercollider.git] / SCClassLibrary / Common / GUI / ViewRedirect.sc
blob89f3980fd838afb673df81fd505efcf96ee6a72e
1 ViewRedirect { // Abstract class
3         classvar <>redirectQueries = false;
5         *implScheme{
6                 ^GUI.scheme
7         }
9         *implClass {
10                 ^GUI.scheme.perform(this.key)
11         }
12         *key { ^\viewRedirect }
13         *new { arg parent, bounds;
14                 var     impl;
15                 if ( this.implScheme.notNil ){
16                         if((impl = this.implClass).notNil) {
17                                 ^impl.new(parent, bounds)
18                         } {
19                                 MethodError("ViewRedirect is an abstract class and should not be instantiated directly. *new method not valid.", this).throw;}
20                 }{
21                         ("No GUI scheme active: " + this.key ++ ".new" + parent ).warn;
22                 }
23         }
24         *browse { ^ClassBrowser(this.implClass ?? { ViewRedirect }) }
25         *doesNotUnderstand{|selector ... args|
26                 var     impl;
27                 if ( this.implScheme.notNil ){
28                         if((impl = this.implClass).notNil) {
29                                 ^impl.perform(selector, *args)
30                         } {
31                                 DoesNotUnderstandError(this, selector, args).throw;
32                         }
33                 }{
34                         ("No GUI scheme active: " + selector + args ).warn;
35                 }
36         }
37         *classRedirect { ^redirectQueries.if({this.implClass ? this}, this)}
40 Window : ViewRedirect {
41         *key { ^\window }
42         *new { arg name = "panel", bounds, resizable = true, border = true, server, scroll = false;
43                 ^this.implClass.new(name, bounds, resizable, border, server, scroll)
44         }
47 CompositeView : ViewRedirect { *key { ^\compositeView }}
48 ScrollView : ViewRedirect { *key { ^\scrollView }}
49 HLayoutView : ViewRedirect { *key { ^\hLayoutView }}
50 VLayoutView : ViewRedirect { *key { ^\vLayoutView }}
52 Slider : ViewRedirect { *key { ^\slider }}
54 //Knob : SCSlider {
55 //}
57 //Font : ViewRedirect { *key { ^\font }}
58 Pen : ViewRedirect { *key { ^\pen }}
60 Stethoscope : ViewRedirect {
61         *new {  arg server, numChannels = 2, index, bufsize = 4096, zoom, rate, view, bufnum;
62                 index = index.asControlInput;
63                 ^this.implClass.new(server, numChannels, index, bufsize, zoom, rate, view, bufnum)
64         }
65         *key { ^\stethoscope }
68 ScopeView : ViewRedirect { *key { ^\scopeView }}
69 FreqScopeView : ViewRedirect { *key { ^\freqScopeView }} // redirects to FreqScope
71 FreqScope : ViewRedirect { // redirects to FreqScopeWindow
72         *new { arg width=512, height=300, busNum=0, scopeColor, bgColor;
73                 busNum = busNum.asControlInput;
74                 ^this.implClass.new(width, height, busNum, scopeColor)
75         }
76         *key { ^\freqScope }
79 Dialog : ViewRedirect { *key { ^\dialog }}
80 View : ViewRedirect { *key { ^\view }}
82 RangeSlider : ViewRedirect { *key { ^\rangeSlider }}
83 Slider2D : ViewRedirect { *key { ^\slider2D }}
84 TabletSlider2D : ViewRedirect { *key { ^\tabletSlider2D }}
85 Button : ViewRedirect { *key { ^\button }}
87 PopUpMenu : ViewRedirect { *key { ^\popUpMenu }}
88 StaticText : ViewRedirect { *key { ^\staticText }}
89 NumberBox : ViewRedirect { *key { ^\numberBox }}
90 ListView : ViewRedirect { *key { ^\listView }}
92 DragSource : ViewRedirect { *key { ^\dragSource }}
93 DragSink : ViewRedirect { *key { ^\dragSink }}
94 DragBoth : ViewRedirect { *key { ^\dragBoth }}
96 UserView : ViewRedirect { *key { ^\userView }}
97 MultiSliderView : ViewRedirect { *key { ^\multiSliderView }}
98 EnvelopeView : ViewRedirect { *key { ^\envelopeView }}
100 TextField : ViewRedirect  { *key { ^\textField }}
103 TabletView : ViewRedirect { *key { ^\tabletView }}
104 SoundFileView : ViewRedirect { *key { ^\soundFileView }}
105 MovieView : ViewRedirect { *key { ^\movieView }}
106 TextView : ViewRedirect  {      *key { ^\textView }}
108 Font : ViewRedirect  {
109         *key { ^\font }
110         *findFirstAvailable { |fontNames, action|
111                 Routine {
112                         fontNames.do { |name|
113                                 if(this.availableFonts.any(_.contains(name))) {
114                                         action.value(name);
115                                         nil.alwaysYield;
116                                 }
117                         }
118                 }.play(AppClock)
122 Knob : ViewRedirect  {  *key { ^\knob }}
124 LevelIndicator : ViewRedirect  {        *key { ^\levelIndicator }}
126 Image : ViewRedirect { *key { ^\image }}
128 WebView : ViewRedirect { *key { ^\webView }}
130 CheckBox : ViewRedirect { *key { ^\checkBox }}
132 TreeView : ViewRedirect { *key { ^\treeView }}
134 LayoutRedirect : ViewRedirect {
135         *new { arg ... args;
136                 ^this.implClass.new(*args);
137         }
140 HLayout : LayoutRedirect { *key { ^\hLayout }}
141 VLayout : LayoutRedirect { *key { ^\vLayout }}
142 GridLayout : LayoutRedirect { *key { ^\gridLayout }}