adds missing Qt support for viewExtensions (.horz .vert .comp .flow .deepDo .asFlowView)
[supercollider.git] / SCClassLibrary / QtCollider / QSlider.sc
blob642d7ac2365ed693a33205e9aab3644a8bf2ebd3
1 QSlider : QAbstractStepValue {
2   //compatibility stuff:
3   var <orientation;
4   var <> thumbSize;
6   *qtClass { ^"QcSlider" }
8   *new { arg parent, bounds;
9     ^super.new( parent, bounds ).initQSlider( bounds );
10   }
12   value {
13     ^this.getProperty( \value );
14   }
16   value_ { arg argVal;
17     this.setProperty( \value, argVal );
18   }
20   valueAction_ { arg val;
21     this.value_(val);
22     action.value(this);
23   }
25   knobColor {
26     ^this.palette.buttonColor;
27   }
29   knobColor_ { arg color;
30     this.setProperty( \palette, this.palette.buttonColor_(color) );
31   }
33   initQSlider { arg bounds;
34     var r;
35     if( bounds.notNil ) {
36       r = bounds.asRect;
37       if( r.width > r.height ) {
38         this.orientation_( \horizontal );
39       } {
40         this.orientation_( \vertical );
41       }
42     }
43   }
45   pixelStep {
46     // FIXME for now we are using step instead
47     ^this.step;
48   }
50   orientation_ { arg aSymbol;
51     orientation = aSymbol;
52     this.setProperty( \orientation, QOrientation(aSymbol) );
53   }
55   defaultKeyDownAction {  arg char, modifiers, unicode, keycode;
56     var scale = this.getScale( modifiers );
57     switch( char,
58       $r, { this.valueAction = 1.0.rand },
59       $n, { this.valueAction = 0.0 },
60       $x, { this.valueAction = 1.0 },
61       $c, { this.valueAction = 0.5 },
62       {
63         switch( keycode,
64           16r5d, { this.increment(scale) },
65           16r1000013, { this.increment(scale) },
66           16r1000014, { this.increment(scale) },
67           16r5b, { this.decrement(scale) },
68           16r1000015, { this.decrement(scale) },
69           16r1000012, { this.decrement(scale) },
70           { ^this; } // if unhandled, let Qt process the event
71         );
72         this.doAction;
73       }
74     );
75     ^true; // accept the event and stop its processing
76   }
78   defaultGetDrag { ^this.value; }
79   defaultCanReceiveDrag { ^QView.currentDrag.isNumber; }
80   defaultReceiveDrag {
81     this.valueAction = QView.currentDrag;
82   }