/* public domain Bastiaan Veelo */ import dcouple.connect; import dcouple.release; import dcouple.signalslot; /** Example class illustrating dcouple signals and slots * based on Qt's example at * http://doc.trolltech.com/3.3/signalsandslots.html * */ class hasSignalsAndSlots : SignalSlotManager { mixin SignalSlotManagement; ~this() { deleteSignals(); deleteSlots(); } } class Foo : hasSignalsAndSlots //SignalSlotManager { // mixin SignalSlotManagement; Signal!(int) valueChanged; Slot!(int) changeValue; private int val; this() { valueChanged = new Signal!(int)(this); changeValue = new Slot!(int)(this, &value); } /*~this() { deleteSignals(); deleteSlots(); }*/ int value() { return val; } void value(int v) { if (val != v) { val = v; valueChanged.emit(v); } } } import std.stdio; int main() { writefln("Compiled with ", dcoupleVersion() ); Foo a = new Foo; Foo b = new Foo; connect(a.valueChanged, b.changeValue); writefln(a.value," ",b.value); b.value = 11; writefln(a.value," ",b.value); a.value = 79; writefln(a.value," ",b.value); delete b; a.value = 100; writefln(a.value); return 0; }