Index: sources/main.h =================================================================== diff -u -r95c671ab7037af055db551456a719ff67bf10262 -r634824d6fce314971aa236e508024bd154562c9d --- sources/main.h (.../main.h) (revision 95c671ab7037af055db551456a719ff67bf10262) +++ sources/main.h (.../main.h) (revision 634824d6fce314971aa236e508024bd154562c9d) @@ -51,38 +51,47 @@ //--------------------------------------------------------------------------------// //--------------------------------------------------------------------------------// #define DEBUG_PROPERTY_CHANGED(vVARIABLE) //qDebug() << "#" << #vVARIABLE << v##vVARIABLE; -#define PROPERTY_BASE(vTYPE , vVARIABLE , vDEFVALUE, vALWAYSEMIT, vSIGNAL) \ - Q_PROPERTY(vTYPE vVARIABLE \ - READ vVARIABLE \ - WRITE vVARIABLE \ - NOTIFY vVARIABLE##vSIGNAL) \ - Q_SIGNALS: \ - void vVARIABLE##vSIGNAL \ - ( const vTYPE & v##vVARIABLE ); \ - private: \ - vTYPE _##vVARIABLE = vDEFVALUE; \ - vTYPE vVARIABLE () const { \ - return _##vVARIABLE ; \ - } \ - void vVARIABLE ( const vTYPE & v##vVARIABLE ) { \ - static bool init = false; \ - if ( vALWAYSEMIT \ - || ! init \ - || _##vVARIABLE != v##vVARIABLE ) { \ - DEBUG_PROPERTY_CHANGED(vVARIABLE) \ - init = true; \ - _##vVARIABLE = v##vVARIABLE; \ - emit vVARIABLE##vSIGNAL( _##vVARIABLE ); \ - } \ +//--------------------------------------------------------------------------------// +#define PROPERTY_SLOT( vTYPE , vVARIABLE ) \ + void vVARIABLE ( const vTYPE & v##vVARIABLE ) { \ + static bool init = false; \ + if ( !init || _##vVARIABLE != v##vVARIABLE ) { \ + DEBUG_PROPERTY_CHANGED(vVARIABLE) \ + init = true; \ + _##vVARIABLE = v##vVARIABLE; \ + emit vVARIABLE##Changed( _##vVARIABLE ); \ + } \ } //--------------------------------------------------------------------------------// -#define PROPERTY( vTYPE , vVARIABLE , vDEFVALUE ) \ - PROPERTY_BASE(vTYPE , vVARIABLE , vDEFVALUE, false, Changed ) +#define TRIGGER_SLOT( vTYPE , vVARIABLE ) \ + void vVARIABLE ( const vTYPE & v##vVARIABLE ) { \ + DEBUG_PROPERTY_CHANGED(vVARIABLE) \ + _##vVARIABLE = v##vVARIABLE; \ + emit vVARIABLE##Triggered( _##vVARIABLE ); \ + } //--------------------------------------------------------------------------------// -#define TRIGGER( vTYPE , vVARIABLE, vDEFVALUE ) \ - PROPERTY_BASE(vTYPE , vVARIABLE , vDEFVALUE, true , Triggered ) +#define PROPERTY_BASE(vTYPE , vVARIABLE , vDEFVALUE, vSIGNAL) \ + Q_PROPERTY( vTYPE vVARIABLE \ + READ vVARIABLE \ + WRITE vVARIABLE \ + NOTIFY vVARIABLE##vSIGNAL) \ + Q_SIGNALS: \ + void vVARIABLE##vSIGNAL( const vTYPE & v##vVARIABLE ); \ + private: \ + vTYPE _##vVARIABLE = vDEFVALUE; \ + vTYPE vVARIABLE () const { \ + return _##vVARIABLE ; \ + } //--------------------------------------------------------------------------------// +#define PROPERTY( vTYPE , vVARIABLE , vDEFVALUE ) \ + PROPERTY_BASE( vTYPE , vVARIABLE , vDEFVALUE , Changed ) \ + PROPERTY_SLOT( vTYPE , vVARIABLE) //--------------------------------------------------------------------------------// +#define TRIGGER( vTYPE , vVARIABLE , vDEFVALUE ) \ + PROPERTY_BASE( vTYPE , vVARIABLE , vDEFVALUE , Triggered) \ + TRIGGER_SLOT( vTYPE , vVARIABLE) +//--------------------------------------------------------------------------------// +//--------------------------------------------------------------------------------// #define ACTION_METHOD_BRIDGE_CONNECTION(vMETHOD, vSOURCE, vTYPE) \ connect(&vSOURCE, SIGNAL(did##vMETHOD(const vTYPE &)), \ this , SLOT( on##vMETHOD(const vTYPE &)));