old quark gui: openOS is not osx only
[supercollider.git] / SCClassLibrary / QtCollider / QObject.sc
blob1047738f7bf325a7221193a1b28ef96a41487970
1 QMetaObject {
2   var className;
4   *new { arg className;
5     ^super.newCopyArgs(className);
6   }
8   properties {
9     _QMetaObject_Properties
10     ^this.primitiveFailed
11   }
13   methods { arg plain = true, signals = false, slots = true;
14     _QMetaObject_Methods
15     ^this.primitiveFailed
16   }
19 QObject {
20   classvar
21     heap,
22     < closeEvent = 19,
23     < showEvent = 17,
24     < windowActivateEvent = 24,
25     < windowDeactivateEvent = 25,
26     < mouseDownEvent = 2,
27     < mouseUpEvent = 3,
28     < mouseDblClickEvent = 4,
29     < mouseMoveEvent = 5,
30     < mouseOverEvent = 10,
31     < mouseLeaveEvent = 11,
32     < mouseWheelEvent = 31,
33     < keyDownEvent = 6,
34     < keyUpEvent = 7;
36   var qObject, finalizer;
37   var virtualSlots;
39   *qtClass { ^nil }
41   *meta { ^QMetaObject(this.qtClass); }
43   *new { arg argumentArray;
44     var className = this.qtClass;
45     if( className.isNil ) {
46       Error("Qt:" + this.name + "is an abstract class and can not be instantiated.").throw;
47     };
48     ^super.new.initQObject( className, argumentArray );
49   }
51   *heap { ^heap.copy }
53   *initClass {
54       ShutDown.add {
55           heap.do { |x| x.prFinalize; };
56       };
57   }
59   initQObject{ arg className, argumentArray;
60     this.prConstruct( className, argumentArray );
61     heap = heap.add( this );
62     this.connectFunction( 'destroyed()', { heap.remove(this) }, false );
63   }
65   destroy {
66     _QObject_Destroy
67     ^this.primitiveFailed
68   }
70   isValid {
71     _QObject_IsValid
72     ^this.primitiveFailed
73   }
75   parent { arg class;
76     ^this.prGetParent( if( class.notNil ){class.name}{nil} );
77   }
79   children { arg class;
80     ^this.prGetChildren( if( class.notNil ){class.name}{nil} );
81   }
83   setParent { arg parent;
84     _QObject_SetParent
85     ^this.primitiveFailed
86   }
88   properties {
89     _QObject_GetProperties
90     ^this.primitiveFailed
91   }
93   methods { arg plain = true, signals = false, slots = true;
94     _QObject_GetMethods
95     ^this.primitiveFailed
96   }
98   getProperty { arg property;
99     _QObject_GetProperty
100     ^this.primitiveFailed
101   }
103   setProperty { arg property, value, direct=true;
104     _QObject_SetProperty
105     ^this.primitiveFailed
106   }
108   setEventHandler{ arg event, method, direct=false, enabled=true;
109     _QObject_SetEventHandler
110     ^this.primitiveFailed
111   }
113   setEventHandlerEnabled { arg event, enabled=true;
114     _QObject_SetEventHandlerEnabled
115     ^this.primitiveFailed
116   }
118   connectMethod { arg signal, handler, direct=false;
119     _QObject_ConnectMethod
120     ^this.primitiveFailed
121   }
123   disconnectMethod { arg signal, method;
124     _QObject_DisconnectMethod;
125     ^this.primitiveFailed
126   }
128   connectFunction { arg signal, object, synchronous = false;
129     virtualSlots = virtualSlots.add( object );
130     this.prConnectObject( signal, object, synchronous );
131   }
133   disconnectFunction { arg signal, object;
134     virtualSlots.remove( object );
135     this.prDisconnectObject( signal, object );
136   }
138   connectSlot { arg signal, receiver, slot;
139     _QObject_ConnectSlot;
140     ^this.primitiveFailed
141   }
143   invokeMethod { arg method, arguments, synchronous = true;
144     _QObject_InvokeMethod
145     ^this.primitiveFailed
146   }
148   ////////////////////// private //////////////////////////////////
150   prConstruct { arg className, argumentArray;
151     _QObject_New
152     ^this.primitiveFailed;
153   }
155   prConnectObject { arg signal, object, synchronous = false;
156     _QObject_ConnectObject;
157     ^this.primitiveFailed
158   }
160   prDisconnectObject { arg signal, object;
161     _QObject_DisconnectObject;
162     ^this.primitiveFailed
163   }
165   prGetChildren { arg className;
166     _QObject_GetChildren
167     ^this.primitiveFailed
168   }
170   prGetParent { arg className;
171     _QObject_GetParent
172     ^this.primitiveFailed
173   }
175   prFinalize {
176     _QObject_ManuallyFinalize
177     ^this.primitiveFailed
178   }
180   doFunction { arg f ... args; f.performList(\value, this, args); }