1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
QCallback : QObject {
var <action;
*qtClass { ^'QtCollider::QcCallback'; }
*new {
|func|
^super.new.action_(func)
}
*newFrom {
|other|
if (other.isKindOf(QCallback)) {
^QCallback(other.action)
} {
^QCallback(other)
}
}
action_{
|newAction|
if (newAction != action) {
this.prOnCalledSignals.do({
|signal|
if (action.notNil) { this.disconnectFunction(signal.asSymbol, action) };
if (newAction.notNil) { this.connectFunction(signal.asSymbol, { |func, v| newAction.(v) }, true) }
});
action = newAction;
}
}
value {
|...args|
action.value(*args)
}
prOnCalledSignals {
^this.methods(false, true, false).select({
|sig|
sig.asString.find("onCalled").notNil
})
}
}
|