1
#include "ExpertDiscoveryTreeWidgets.h"
6
#include <QtGui/QMouseEvent>
15
////////////////////////////////////////////////////////////
16
EDPIPropertyType::EDPIPropertyType(){
19
EDPIPropertyType::~EDPIPropertyType(){
22
//////////////////////////////////////////////////////////////////
23
EDPIProperty::EDPIProperty(const EDPIProperty& rProperty)
30
EDPIProperty::EDPIProperty(QString strName /* ="" */)
34
setType(EDPIPropertyTypeStaticString::getInstance());
38
EDPIProperty::~EDPIProperty() {
42
const EDPIProperty& EDPIProperty::operator =(const EDPIProperty& rProperty) {
43
setType( rProperty.m_pType);
44
setName( rProperty.getName() );
45
if (rProperty.m_pCallback)
46
m_pCallback = rProperty.m_pCallback->clone();
52
QString EDPIProperty::getName() const {
56
void EDPIProperty::setName(QString strName) {
60
QString EDPIProperty::getValue() const {
62
return m_pCallback->call();
65
QString strUndefined = "Undefined";
70
void EDPIProperty::setCallback(ICallback* pCallback)
72
m_pCallback = pCallback;
74
const EDPIPropertyType* EDPIProperty::getType() const
79
void EDPIProperty::setType(EDPIPropertyType* pType)
85
////////////////////////////////////////////////////////////////////////////////////////////////////////
88
EDPIPropertyGroup::EDPIPropertyGroup(QString strName /*=""*/)
93
EDPIPropertyGroup::EDPIPropertyGroup(const EDPIPropertyGroup& rGroup)
98
EDPIPropertyGroup::~EDPIPropertyGroup()
102
const EDPIPropertyGroup& EDPIPropertyGroup::operator=(const EDPIPropertyGroup& rGroup)
104
m_strName = rGroup.getName();
105
m_arProperties = rGroup.m_arProperties;
109
QString EDPIPropertyGroup::getName() const
114
void EDPIPropertyGroup::setName(QString strName)
119
int EDPIPropertyGroup::getPropertiesNumber() const {
120
return m_arProperties.size();
123
EDPIProperty& EDPIPropertyGroup::getProperty(int nProp) {
124
assert( nProp>=0 && nProp<m_arProperties.size());
125
return m_arProperties[nProp];
128
const EDPIProperty& EDPIPropertyGroup::getProperty(int nProp) const {
129
assert( nProp>=0 && nProp<m_arProperties.size());
130
return m_arProperties[nProp];
133
void EDPIPropertyGroup::addProperty(EDPIProperty &rProperty) {
134
m_arProperties.append(rProperty);
137
//////////////////////////////////////////////////////////////////////////////
139
IMPLEMENT_GETINSTANCE(EDPIPropertyTypeStaticString)
141
EDPIPropertyTypeStaticString::EDPIPropertyTypeStaticString()
145
EDPIPropertyTypeStaticString::~EDPIPropertyTypeStaticString()
149
bool EDPIPropertyTypeStaticString::isNumber() const
154
bool EDPIPropertyTypeStaticString::hasEdit() const
159
bool EDPIPropertyTypeStaticString::hasPredefinedValues() const
164
int EDPIPropertyTypeStaticString::getValueNumber() const
169
QString EDPIPropertyTypeStaticString::getValue(int i) const
175
bool EDPIPropertyTypeStaticString::isValidValue(QString strValue) const
180
//////////////////////////////////////////////////////////////////////////////
182
IMPLEMENT_GETINSTANCE(EDPIPropertyTypeString)
184
EDPIPropertyTypeString::EDPIPropertyTypeString()
188
EDPIPropertyTypeString::~EDPIPropertyTypeString()
192
bool EDPIPropertyTypeString::hasEdit() const
197
//////////////////////////////////////////////////////////////////////////
199
IMPLEMENT_GETINSTANCE(EDPIPropertyTypeUnsignedInt)
201
EDPIPropertyTypeUnsignedInt::EDPIPropertyTypeUnsignedInt()
205
EDPIPropertyTypeUnsignedInt::~EDPIPropertyTypeUnsignedInt()
209
bool EDPIPropertyTypeUnsignedInt::isNumber() const
214
bool EDPIPropertyTypeUnsignedInt::hasEdit() const
219
bool EDPIPropertyTypeUnsignedInt::hasPredefinedValues() const
224
int EDPIPropertyTypeUnsignedInt::getValueNumber() const
229
QString EDPIPropertyTypeUnsignedInt::getValue(int i) const
235
bool EDPIPropertyTypeUnsignedInt::isValidValue(QString strValue) const
238
str << strValue.toStdString();
242
if (value>=0 && str.eof())
247
//////////////////////////////////////////////////////////////////////////////
249
IMPLEMENT_GETINSTANCE(EDPIPropertyTypeUnsignedIntWithUnl)
251
EDPIPropertyTypeUnsignedIntWithUnl::EDPIPropertyTypeUnsignedIntWithUnl()
252
: EDPIPropertyTypeListEdit()
254
addValue("Unlimited");
257
EDPIPropertyTypeUnsignedIntWithUnl::~EDPIPropertyTypeUnsignedIntWithUnl()
261
bool EDPIPropertyTypeUnsignedIntWithUnl::isNumber() const
266
bool EDPIPropertyTypeUnsignedIntWithUnl::isValidValue(QString strValue) const
268
int nId = getValueId(strValue);
274
str << strValue.toStdString();
277
if (str.eof() && nValue>=0)
282
//////////////////////////////////////////////////////////////////////////////
284
EDPIPropertyTypeList::EDPIPropertyTypeList()
288
EDPIPropertyTypeList::~EDPIPropertyTypeList()
292
bool EDPIPropertyTypeList::isNumber() const
297
bool EDPIPropertyTypeList::hasEdit() const
302
bool EDPIPropertyTypeList::hasPredefinedValues() const
307
int EDPIPropertyTypeList::getValueNumber() const
309
return m_arValues.size();
312
QString EDPIPropertyTypeList::getValue(int i) const
314
return m_arValues[i];
317
bool EDPIPropertyTypeList::isValidValue(QString strValue) const
319
return getValueId(strValue) >= 0;
323
void EDPIPropertyTypeList::addValue(QString strValue)
325
m_arValues.append(strValue);
328
int EDPIPropertyTypeList::getValueId(QString strValue) const
330
int nValNum = getValueNumber();
331
for (int i=0; i<nValNum; i++) {
332
if (m_arValues[i].compare(strValue,Qt::CaseInsensitive) == 0)
339
//////////////////////////////////////////////////////////////////////////////
341
IMPLEMENT_GETINSTANCE(EDPIPropertyTypeListCSNodeTypes);
343
EDPIPropertyTypeListCSNodeTypes::EDPIPropertyTypeListCSNodeTypes()
345
addValue("Distance");
346
addValue("Repetition");
347
addValue("Interval");
349
addValue("Markup item");
352
//////////////////////////////////////////////////////////////////////////////
354
IMPLEMENT_GETINSTANCE(EDPIPropertyTypeBool);
356
EDPIPropertyTypeBool::EDPIPropertyTypeBool()
362
//////////////////////////////////////////////////////////////////////////////
364
IMPLEMENT_GETINSTANCE(EDPIPropertyTypeDistType);
366
EDPIPropertyTypeDistType::EDPIPropertyTypeDistType()
368
addValue("finish to start");
369
addValue("start to start");
370
addValue("middle to start");
373
////////////////////////////////////////////////////////////
374
EDProjectItem::EDProjectItem():QTreeWidgetItem(), mInf(NULL){
376
sortField = ED_FIELD_UNDEFINED;
377
sortOrd = ED_ORDER_DECREASING;
379
EDProjectItem::~EDProjectItem(){
382
int EDProjectItem::getGroupNumber() const{
383
return m_arGroups.size();
385
EDPIPropertyGroup& EDProjectItem::getGroup(int nGroup){
386
assert(nGroup >=0 && nGroup<getGroupNumber());
387
return m_arGroups[nGroup];
389
const EDPIPropertyGroup& EDProjectItem::getGroup(int nGroup) const{
390
assert(nGroup >=0 && nGroup<getGroupNumber());
391
return m_arGroups[nGroup];
393
int EDProjectItem::addGroup(const EDPIPropertyGroup& rGroup){
394
m_arGroups.append(rGroup);
395
return m_arGroups.size();
397
void EDProjectItem::clearGroups(){
400
EItemType EDProjectItem::getType() const{
404
const EDProjectItem* EDProjectItem::findItemConnectedTo(void *pData) const{
405
if (isConnectedTo(pData))
408
for (int i = 0; i < childCount(); i++){
409
EDProjectItem* item = dynamic_cast<EDProjectItem*>(child(i));
411
const EDProjectItem* cItem = item->findItemConnectedTo(pData);
422
bool EDProjectItem::operator<(const QTreeWidgetItem &other) const{
423
const EDProjectItem* pItem1 = dynamic_cast<const EDProjectItem*>(this);
424
const EDProjectItem* pItem2 = dynamic_cast<const EDProjectItem*>(&other);
426
if(!pItem2 || !pItem1){
427
return QTreeWidgetItem::operator<(other);
429
EItemType type1 = pItem1->getType();
430
EItemType type2 = pItem2->getType();
432
if(sortOrd == ED_ORDER_DECREASING){
434
if (type1 == PIT_CS && type2 == PIT_CS){
435
const EDProjectItem* pItem3;
442
if (type1 == PIT_CS && type2 == PIT_CS){
443
const Signal* pSnl1 = ((EDPICS*) pItem1)->getSignal();
444
const Signal* pSnl2 = ((EDPICS*) pItem2)->getSignal();
446
case ED_FIELD_UNDEFINED: return QTreeWidgetItem::operator<(other);
447
case ED_FIELD_PROBABILITY: return (pSnl1->getPriorProbability()<pSnl2->getPriorProbability());
448
case ED_FIELD_COVERAGE: return (pSnl1->getPriorPosCoverage()<pSnl2->getPriorPosCoverage());
449
case ED_FIELD_FISHER: return (pSnl1->getPriorFisher()<pSnl2->getPriorFisher());
451
default: return pItem1->getName() < pItem2->getName();
454
}else if ( (type1 == PIT_CS_FOLDER || type1 == PIT_CS || type1 == PIT_MRK_ITEM) &&
455
(type2 == PIT_CS_FOLDER || type2 == PIT_CS || type2 == PIT_MRK_ITEM))
457
if ((int)type1 < (int)type2)
460
if ((int)type1 > (int)type2)
463
return pItem1->getName() < pItem2->getName();
465
const EDProjectItem *pParent = dynamic_cast<const EDProjectItem*>(dynamic_cast<const QTreeWidgetItem*>(pItem1)->parent());
466
if (pParent != NULL && pParent->getType() == PIT_CSN_DISTANCE) {
467
return (pParent->child(0) == pItem1) ? true : false;
470
return QTreeWidgetItem::operator<(other);
474
/////////////////////////////////////////////////////////////////////////////////////
476
EDPISequenceRoot::EDPISequenceRoot(ExpertDiscoveryData& edD)
482
EDPISequenceRoot::~EDPISequenceRoot()
486
EItemType EDPISequenceRoot::getType() const {
487
return PIT_SEQUENCEROOT;
490
void EDPISequenceRoot::update(bool bUpdateChildren)
492
QString strName = "Sequences";
496
if (bUpdateChildren) {
499
addChild(new EDPIPosSequenceBase(edData.getPosSeqBase(), edData));
500
addChild(new EDPINegSequenceBase(edData.getNegSeqBase(), edData));
501
//if (pDoc->GetControlSeqBase().getSize() != 0)
502
addChild(new EDPIControlSequenceBase(edData.getConSeqBase(), edData));
508
bool EDPISequenceRoot::isConnectedTo(void *pData) const
513
/////////////////////////////////////////////////////////////////////////////////////
516
EDPISequenceBase::EDPISequenceBase(QString strName, const SequenceBase& rSeqBase, ExpertDiscoveryData& edD)
517
: m_rSeqBase (rSeqBase)
520
//assert(strName != NULL);
525
void EDPISequenceBase::update(bool bUpdateChildren)
530
int nSize = m_rSeqBase.getSize();
532
QString strSize = "Size";
533
QString strGenInfo = "General information";
536
EDPIProperty PropSize(strSize);
537
PropSize.setCallback(new Callback<const DDisc::SequenceBase, int>(&m_rSeqBase, &DDisc::SequenceBase::getSize));
539
EDPIPropertyGroup GenInfo(strGenInfo);
540
GenInfo.addProperty(PropSize);
543
if (bUpdateChildren) {
544
for (int id=0; id<nSize; id++)
545
addChild(new EDPISequence(m_rSeqBase, id, edData));
549
EDPISequenceBase::~EDPISequenceBase()
553
const SequenceBase& EDPISequenceBase::getSequenceBase() const
558
bool EDPISequenceBase::isConnectedTo(void *pData) const
560
return ((void*) &m_rSeqBase) == pData;
563
/////////////////////////////////////////////////////////////////////////////////////
565
EDPIPosSequenceBase::EDPIPosSequenceBase(const SequenceBase& rBase, ExpertDiscoveryData& edD)
566
: EDPISequenceBase("", rBase, edD)
568
QString strPosName = "Positive";
572
EDPIPosSequenceBase::~EDPIPosSequenceBase()
576
void EDPIPosSequenceBase::update(bool bUpdateChildren)
578
EDPISequenceBase::update(bUpdateChildren);
581
EItemType EDPIPosSequenceBase::getType() const
583
return PIT_POSSEQUENCEBASE;
587
/////////////////////////////////////////////////////////////////////////////////////
589
EDPINegSequenceBase::EDPINegSequenceBase(const SequenceBase& rBase, ExpertDiscoveryData& edD)
590
: EDPISequenceBase("", rBase, edD)
592
QString strNegName = "Negative";
596
EDPINegSequenceBase::~EDPINegSequenceBase()
600
void EDPINegSequenceBase::update(bool bUpdateChildren)
602
EDPISequenceBase::update(bUpdateChildren);
605
EItemType EDPINegSequenceBase::getType() const
607
return PIT_NEGSEQUENCEBASE;
610
/////////////////////////////////////////////////////////////////////////////////////
612
EDPIControlSequenceBase::EDPIControlSequenceBase(const SequenceBase& rBase, ExpertDiscoveryData& edD)
613
: EDPISequenceBase("", rBase, edD)
615
QString strControlName = "Control";
616
setName(strControlName);
620
EDPIControlSequenceBase::~EDPIControlSequenceBase()
624
void EDPIControlSequenceBase::update(bool bUpdateChildren)
628
int nSize = m_rSeqBase.getSize();
630
QString strSize = "Size";
631
QString strGenInfo = "General information";
633
EDPIProperty PropSize(strSize);
634
PropSize.setCallback(new Callback<const DDisc::SequenceBase, int>(&m_rSeqBase, &DDisc::SequenceBase::getSize));
635
EDPIPropertyGroup GenInfo(strGenInfo);
636
GenInfo.addProperty(PropSize);
639
if (bUpdateChildren) {
641
for (int id=0; id<nSize; id++)
642
addChild(new EDPIControlSequence(m_rSeqBase, id, edData));
646
EItemType EDPIControlSequenceBase::getType() const
648
return PIT_CONTROLSEQUENCEBASE;
651
////////////////////////////////////////////////////////
653
EDPISequence::EDPISequence(const SequenceBase& rSeqBase, int id, ExpertDiscoveryData& edD)
655
, m_rSeq (rSeqBase.getSequence(id))
659
assert(id>=0 && id<rSeqBase.getSize());
663
void EDPISequence::update(bool bUpdateChildren)
665
setName( m_rSeq.getName().c_str() );
669
QString strName = "Name";
670
QString strLength = "Length";
671
QString strGenInfo = "Sequence info";
672
QString strRecognizationInfo = "Sequence recogn. data";
673
QString strScore = "Score";
674
QString strBound = "Bound";
675
QString strRecResult = "Result";
678
EDPIProperty PropName(strName);
679
EDPIProperty PropSize(strLength);
680
PropName.setCallback(new Callback<const DDisc::Sequence, const std::string>(&m_rSeq, &DDisc::Sequence::getName));
681
PropSize.setCallback(new Callback<const DDisc::Sequence, size_t>(&m_rSeq, &DDisc::Sequence::getSize));
682
EDPIPropertyGroup GenInfo(strGenInfo);
683
GenInfo.addProperty(PropName);
684
GenInfo.addProperty(PropSize);
687
double dScore = m_rSeq.getScore();
688
double dBound = edData.getRecognizationBound();
690
EDPIProperty PropScore(strScore);
691
PropScore.setCallback(new Callback<EDPISequence, QString>(this, &EDPISequence::getScore));
692
EDPIProperty PropBound(strBound);
693
PropBound.setCallback(new Callback<ExpertDiscoveryData, double>(&edData, &ExpertDiscoveryData::getRecognizationBound));
694
EDPIProperty PropResult(strRecResult);
695
PropResult.setCallback(new Callback<EDPISequence, QString>(this, &EDPISequence::getResult));
696
EDPIPropertyGroup RecInfo(strRecognizationInfo);
697
RecInfo.addProperty(PropScore);
698
RecInfo.addProperty(PropBound);
699
RecInfo.addProperty(PropResult);
704
QString EDPISequence::getScore() const
706
if (getType() == PIT_CONTROLSEQUENCE)
708
if (m_rSeq.isHasScore() || edData.updateScore(const_cast<Sequence&>(m_rSeq)))
709
return toString(m_rSeq.getScore());
713
QString EDPISequence::getResult() const
715
if (getType() == PIT_CONTROLSEQUENCE)
718
if ((m_rSeq.isHasScore() || edData.updateScore(const_cast<Sequence&>(m_rSeq))) &&
719
m_rSeq.getScore() > edData.getRecognizationBound())
726
EDPISequence::~EDPISequence()
731
EItemType EDPISequence::getType() const
736
QString EDPISequence::getSequenceCode()
738
return QString::fromStdString(m_rSeq.getSequence());
741
QString EDPISequence::getSequenceName()
743
return QString::fromStdString(m_rSeq.getName());
746
bool EDPISequence::isConnectedTo(void *pData) const
748
return ((void*) &m_rSeq) == pData;
750
////////////////////////////////////////////////////////////
752
const CSFolder* EDPICSDirectory::getFolder() const{
755
void EDPICSDirectory::setFolder(const CSFolder* pFolder){
758
void EDPICSDirectory::update(bool bupdateChildren){
759
if (bupdateChildren) {
762
const CSFolder* pFolder = getFolder();
763
int nSubfolderNum = pFolder->getFolderNumber();
764
for (int nSubfolder=0; nSubfolder<nSubfolderNum; nSubfolder++){
765
EDPICSFolder* nFol = new EDPICSFolder(pFolder->getSubfolder(nSubfolder));
766
addChild(dynamic_cast<EDProjectItem*>(nFol));
770
int nSignalNum = pFolder->getSignalNumber();
771
for (int nSignal=0; nSignal<nSignalNum; nSignal++){
772
EDPICS* nSig = new EDPICS( pFolder->getSignal(nSignal) );
773
addChild(dynamic_cast<EDProjectItem*>(nSig));
779
bool EDPICSDirectory::isConnectedTo(void *pData) const{
780
return ((void*) folder) == pData;
783
////////////////////////////////////////////////
784
EDPICSFolder::EDPICSFolder(const CSFolder *pFolder)
785
: EDPICSDirectory(pFolder){
788
EDPICSFolder::~EDPICSFolder(){
791
EItemType EDPICSFolder::getType() const{
792
return PIT_CS_FOLDER;
794
void EDPICSFolder::update(bool bupdateChildren){
797
QString strName = "Name";
798
QString strEditor = "Editor";
800
EDPIProperty propName(strName);
801
propName.setCallback(new Callback<const CSFolder, QString>(getFolder(), &CSFolder::getName));
802
propName.setType(EDPIPropertyTypeString::getInstance());
804
EDPIPropertyGroup editor(strEditor);
805
editor.addProperty(propName);
808
EDPICSDirectory::update(bupdateChildren);
810
//virtual CExtPopupMenuWnd* CreatePopupMenu(HWND hWndCmdRecieve) const;
811
QString EDPICSFolder::getName() const{
812
return getFolder()->getName();
814
////////////////////////////////////////////////
816
EDPICSRoot::EDPICSRoot(CSFolder& rootF)
817
: EDPICSDirectory(NULL)
823
void EDPICSRoot::update(bool bUpdateChildren)
825
QString strCSRoot = "Complex signals";
828
EDPICSDirectory::update(bUpdateChildren);
831
EDPICSRoot::~EDPICSRoot()
835
EItemType EDPICSRoot::getType() const
841
///////////////////////////////////////////////////
843
EDPICSNode::EDPICSNode(Operation *pOp1)
849
EDPICSNode::~EDPICSNode(){
852
Operation* EDPICSNode::getOperation(){
856
void EDPICSNode::setOperation(Operation *pOp){
859
const Operation* EDPICSNode::getOperation() const{
862
void EDPICSNode::update(bool bupdateChildren){
867
setName("Undefined");
870
setName(QString::fromStdString(pOp->getDescription()));
871
if (bupdateChildren) {
873
int nArgNum = pOp->getArgumentNumber();
874
for (int nArg=0; nArg<nArgNum; nArg++){
875
EDProjectItem* ch = dynamic_cast<EDProjectItem*>(EDPICSNode::createCSN(pOp->getArgument(nArg)));
876
emit si_getMetaInfoBase();
877
ch->setMetainfoBase(getMinfo());
879
if(ch->getType() != PIT_CSN_UNDEFINED){
882
//addChild(dynamic_cast<EDProjectItem*>( EDPICSNode::createCSN( pOp->getArgument(nArg) )));
888
EDPICSNode* EDPICSNode::createCSN( Operation *pOp )
890
if (pOp == NULL) return new EDPICSNUndefined();
891
switch (pOp->getType()) {
892
case OP_DISTANCE : return new EDPICSNDistance(dynamic_cast<OpDistance*>(pOp));
893
case OP_REITERATION : return new EDPICSNRepetition(dynamic_cast<OpReiteration*>(pOp));
894
case OP_INTERVAL : return new EDPICSNInterval(dynamic_cast<OpInterval*>(pOp));
897
TS* pTS = dynamic_cast<TS*>(pOp);
898
if (!pTS->isFromMarking())
899
return new EDPICSNTSWord(pTS);
901
return new EDPICSNTSMrkItem(pTS);
908
bool EDPICSNode::isConnectedTo(void *pData) const{
909
return ((void*) pOp) == pData;
911
const EDProcessedSignal* EDPICSNode::getProcessedSignal(ExpertDiscoveryData& edData){
913
m_pPS = EDProcessedSignal::processSignal(pOp, &edData.getPosSeqBase(), &edData.getNegSeqBase());
915
QString strGenInfo = "General information";
917
EDPIPropertyGroup GenInfo(strGenInfo);
918
EDPIProperty prob("Probability");
919
EDPIProperty posCoverage("Pos. coverage");
920
EDPIProperty negCoverage("Neg. coverage");
921
EDPIProperty fisher("Fisher");
922
//EDPIProperty ul("ul");
924
prob.setCallback(new Callback<EDPICSNode, QString>(this, &EDPICSNode::getProbability));
925
posCoverage.setCallback(new Callback<EDPICSNode, QString>(this, &EDPICSNode::getPosCoverage));
926
negCoverage.setCallback(new Callback<EDPICSNode, QString>(this, &EDPICSNode::getNegCoverage));
927
fisher.setCallback(new Callback<EDPICSNode, QString>(this, &EDPICSNode::getFisher));
928
//ul.setCallback(new Callback<EDPICSNode, QString>(this, &EDPICSNode::getUl));
930
GenInfo.addProperty(prob);
931
GenInfo.addProperty(posCoverage);
932
GenInfo.addProperty(negCoverage);
933
GenInfo.addProperty(fisher);
934
// GenInfo.addProperty(ul);
941
QString EDPICSNode::getProbability() const{
943
return m_pPS->getPropertyValue("Probability");
946
QString EDPICSNode::getFisher() const{
948
return m_pPS->getPropertyValue("Fisher");
951
QString EDPICSNode::getUl() const{
953
return m_pPS->getPropertyValue("Ul");
956
QString EDPICSNode::getPosCoverage() const{
958
return m_pPS->getPropertyValue("Pos. coverage");
961
QString EDPICSNode::getNegCoverage() const{
963
return m_pPS->getPropertyValue("Neg. coverage");
966
QString EDPICSNode::getTypeAsString() const{
968
EDPIPropertyTypeList *pTList = EDPIPropertyTypeListCSNodeTypes::getInstance();
970
case PIT_CSN_UNDEFINED: str = "Undefined"; break;
971
case PIT_CSN_DISTANCE: str = pTList->getValue(EDPIPropertyTypeListCSNodeTypes::DISTANCE); break;
972
case PIT_CSN_REPETITION:str = pTList->getValue(EDPIPropertyTypeListCSNodeTypes::REPETITION); break;
973
case PIT_CSN_INTERVAL: str = pTList->getValue(EDPIPropertyTypeListCSNodeTypes::INTERVAL); break;
974
case PIT_CSN_WORD: str = pTList->getValue(EDPIPropertyTypeListCSNodeTypes::WORD); break;
975
case PIT_CSN_MRK_ITEM: str = pTList->getValue(EDPIPropertyTypeListCSNodeTypes::MRK_ITEM); break;
980
EDPICS::EDPICS(const Signal *pSignal)
981
: EDPICSNode(pSignal->getSignal())
989
EItemType EDPICS::getType() const{
992
const Signal* EDPICS::getSignal() const{
996
void EDPICS::update(bool bupdateChildren){
999
QString strName = "Name";
1000
QString strEditor = "Editor";
1001
QString strDescription = "Description";
1002
QString strPriorParams = "Prior parameter";
1003
QString strPriorProb = "Probability";
1004
QString strPriorFisher = "Fisher criteria";
1005
QString strPriorPosCoverage = "Pos. Coverage";
1006
QString strPriorNegCoverage = "Neg. Coverage";
1009
EDPIProperty PropName(strName);
1010
PropName.setCallback(new Callback<const DDisc::Signal, const std::string>(m_pSignal, &DDisc::Signal::getName));
1011
PropName.setType(EDPIPropertyTypeString::getInstance());
1013
EDPIProperty PropDesc(strDescription);
1014
PropDesc.setCallback(new Callback<const DDisc::Signal, const std::string>(m_pSignal, &DDisc::Signal::getDescription));
1015
PropDesc.setType(EDPIPropertyTypeString::getInstance());
1017
EDPIPropertyGroup Editor(strEditor);
1018
Editor.addProperty(PropName);
1019
Editor.addProperty(PropDesc);
1022
EDPICSNode::update(false);
1023
setName(m_pSignal->getName().c_str());
1025
// if (m_pSignal->isPriorParamsDefined()) {
1026
// EDPIProperty PropPriorProb(strPriorProb);
1027
// PropPriorProb.setCallback(new Callback<EDPICS, QString>(this, &EDPICS::getPriorProbability));
1028
// PropPriorProb.setType(EDPIPropertyTypeStaticString::getInstance());
1030
// EDPIProperty PropPriorPosCoverage(strPriorPosCoverage);
1031
// PropPriorPosCoverage.setCallback(new Callback<EDPICS, QString>(this, &EDPICS::getPriorPosCoverage));
1032
// PropPriorPosCoverage.setType(EDPIPropertyTypeStaticString::getInstance());
1034
// EDPIProperty PropPriorNegCoverage(strPriorNegCoverage);
1035
// PropPriorNegCoverage.setCallback(new Callback<EDPICS, QString>(this, &EDPICS::getPriorNegCoverage));
1036
// PropPriorNegCoverage.setType(EDPIPropertyTypeStaticString::getInstance());
1038
// EDPIProperty PropPriorFisher(strPriorFisher);
1039
// PropPriorFisher.setCallback(new Callback<EDPICS, QString>(this, &EDPICS::getPriorFisher));
1040
// PropPriorFisher.setType(EDPIPropertyTypeStaticString::getInstance());
1042
// EDPIPropertyGroup PriorParams(strPriorParams);
1043
// PriorParams.addProperty(PropPriorProb);
1044
// PriorParams.addProperty(PropPriorFisher);
1045
// PriorParams.addProperty(PropPriorPosCoverage);
1046
// PriorParams.addProperty(PropPriorNegCoverage);
1047
// addGroup(PriorParams);
1050
if (bupdateChildren) {
1052
if (m_pSignal->getSignal() == NULL) {
1053
addChild(dynamic_cast<EDProjectItem*>( new EDPICSNUndefined() ));
1056
EDProjectItem* ch = dynamic_cast<EDProjectItem*>(EDPICSNode::createCSN(m_pSignal->getSignal()));
1057
emit si_getMetaInfoBase();
1058
ch->setMetainfoBase(getMinfo());
1064
bool EDPICS::isConnectedTo(void *pData) const{
1065
return ((void*) m_pSignal) == pData;
1067
//virtual CExtPopupMenuWnd* CreatePopupMenu(HWND hWndCmdRecieve) const;
1068
//virtual bool isSelected() const;
1070
QString EDPICS::getPriorProbability() const{
1072
if (m_pSignal->getPriorProbability() != UNDEFINED_VALUE)
1073
str = str.arg(m_pSignal->getPriorProbability());
1078
QString EDPICS::getPriorFisher() const{
1080
if (m_pSignal->getPriorFisher() != UNDEFINED_VALUE)
1081
str = str.arg(m_pSignal->getPriorFisher());
1086
QString EDPICS::getPriorPosCoverage() const{
1088
if (m_pSignal->getPriorPosCoverage() != UNDEFINED_VALUE)
1089
str = str.arg(m_pSignal->getPriorPosCoverage());
1094
QString EDPICS::getPriorNegCoverage() const{
1096
if (m_pSignal->getPriorNegCoverage() != UNDEFINED_VALUE)
1097
str = str.arg(m_pSignal->getPriorNegCoverage());
1102
////////////////////////////////////////////////////////////
1104
EDPICSNUndefined::EDPICSNUndefined()
1111
void EDPICSNUndefined::update(bool bupdateChildren)
1113
QString strType = "Type";
1114
QString strEditor = "Editor";
1117
EDPIProperty PropType(strType);
1118
PropType.setCallback(new Callback<EDPICSNode, QString>(this, &EDPICSNode::getTypeAsString));
1119
PropType.setType(EDPIPropertyTypeListCSNodeTypes::getInstance());
1120
EDPIPropertyGroup Editor(strEditor);
1121
Editor.addProperty(PropType);
1124
EDPICSNode::update(bupdateChildren);
1127
EDPICSNUndefined::~EDPICSNUndefined()
1131
EItemType EDPICSNUndefined::getType() const
1133
return PIT_CSN_UNDEFINED;
1136
///////////////////////////////////////////////////////////////////////////////////////
1138
EDPICSNDistance::EDPICSNDistance(OpDistance *pOp)
1144
void EDPICSNDistance::update(bool bupdateChildren) {
1147
QString strType = "Type";
1148
QString strFrom = "Distance from";
1149
QString strTo = "Distance to";
1150
QString strEditor = "Editor";
1151
QString strOrder = "Order";
1152
QString strDistanceType = "Distance type";
1155
OpDistance* pOp = dynamic_cast<OpDistance*>(getOperation());
1156
assert(pOp != NULL);
1158
EDPIPropertyTypeList *pTList = EDPIPropertyTypeListCSNodeTypes::getInstance();
1159
EDPIProperty PropType(strType);
1160
PropType.setCallback(new Callback<EDPICSNode, QString>(this, &EDPICSNode::getTypeAsString));
1161
PropType.setType(pTList);
1163
EDPIProperty PropFrom(strFrom);
1164
PropFrom.setCallback(new Callback<EDPICSNDistance, QString>(this, &EDPICSNDistance::getPropFrom));
1165
PropFrom.setType(EDPIPropertyTypeUnsignedInt::getInstance());
1167
EDPIProperty PropTo(strTo);
1168
PropTo.setCallback(new Callback<EDPICSNDistance, QString>(this, &EDPICSNDistance::getPropTo));
1169
PropTo.setType(EDPIPropertyTypeUnsignedIntWithUnl::getInstance());
1171
EDPIProperty PropOrder(strOrder);
1172
PropOrder.setType(EDPIPropertyTypeBool::getInstance());
1173
PropOrder.setCallback(new Callback<EDPICSNDistance, QString>(this, &EDPICSNDistance::getPropOrder));
1175
EDPIProperty PropDistType(strDistanceType);
1176
PropDistType.setType(EDPIPropertyTypeDistType::getInstance());
1177
PropDistType.setCallback(new Callback<EDPICSNDistance, QString>(this, &EDPICSNDistance::getPropDistType));
1179
EDPIPropertyGroup Editor(strEditor);
1180
Editor.addProperty(PropType);
1181
Editor.addProperty(PropDistType);
1182
Editor.addProperty(PropFrom);
1183
Editor.addProperty(PropTo);
1184
Editor.addProperty(PropOrder);
1187
emit si_getMetaInfoBase();
1189
EDPICSNode::update(bupdateChildren);
1192
EDPICSNDistance::~EDPICSNDistance()
1196
EItemType EDPICSNDistance::getType() const
1198
return PIT_CSN_DISTANCE;
1201
QString EDPICSNDistance::getPropDistType() const
1203
const OpDistance* pOp = dynamic_cast<const OpDistance*>(getOperation());
1204
assert(pOp != NULL);
1205
int nType = (int) pOp->getDistanceType();
1206
return EDPIPropertyTypeDistType::getInstance()->getValue(nType);
1209
QString EDPICSNDistance::getPropFrom() const
1211
const OpDistance* pOp = dynamic_cast<const OpDistance*>(getOperation());
1212
assert(pOp != NULL);
1213
return QString("%1").arg(pOp->getDistance().getFrom());
1216
QString EDPICSNDistance::getPropTo() const
1218
const OpDistance* pOp = dynamic_cast<const OpDistance*>(getOperation());
1219
assert(pOp != NULL);
1220
int nTo = pOp->getDistance().getTo();
1222
return EDPIPropertyTypeUnsignedIntWithUnl::getInstance()->getValue(0);
1224
return QString("%1").arg(nTo);
1227
QString EDPICSNDistance::getPropOrder() const
1229
const OpDistance* pOp = dynamic_cast<const OpDistance*>(getOperation());
1230
assert(pOp != NULL);
1231
bool bOrder = pOp->isOrderImportant();
1232
return EDPIPropertyTypeBool::getInstance()->getValue((!bOrder)?EDPIPropertyTypeBool::False : EDPIPropertyTypeBool::True);
1236
///////////////////////////////////////////////////////////////////////////////////////
1238
EDPICSNRepetition::EDPICSNRepetition(OpReiteration *pOp)
1244
void EDPICSNRepetition::update(bool bupdateChildren)
1248
QString strType = "Type";
1249
QString strCountFrom = "Count from";
1250
QString strCountTo = "Count to";
1251
QString strFrom = "Distance from";
1252
QString strTo = "Distance to";
1253
QString strEditor = "Editor";
1254
QString strDistanceType = "Distance type";
1256
OpReiteration* pOp = dynamic_cast<OpReiteration*>(getOperation());
1257
assert(pOp != NULL);
1259
EDPIPropertyTypeList *pTList = EDPIPropertyTypeListCSNodeTypes::getInstance();
1260
EDPIProperty PropType(strType);
1261
PropType.setCallback(new Callback<EDPICSNode, QString>(this, &EDPICSNode::getTypeAsString));
1262
PropType.setType(pTList);
1264
EDPIProperty PropFrom(strFrom);
1265
PropFrom.setCallback(new Callback<EDPICSNRepetition, QString>(this, &EDPICSNRepetition::getPropFrom));
1266
PropFrom.setType(EDPIPropertyTypeUnsignedInt::getInstance());
1268
EDPIProperty PropTo(strTo);
1269
PropTo.setCallback(new Callback<EDPICSNRepetition, QString>(this, &EDPICSNRepetition::getPropTo));
1270
PropTo.setType(EDPIPropertyTypeUnsignedIntWithUnl::getInstance());
1272
EDPIProperty PropDistType(strDistanceType);
1273
PropDistType.setType(EDPIPropertyTypeDistType::getInstance());
1274
PropDistType.setCallback(new Callback<EDPICSNRepetition, QString>(this, &EDPICSNRepetition::getPropDistType));
1275
EDPIProperty PropCountFrom(strCountFrom);
1276
PropCountFrom.setType(EDPIPropertyTypeUnsignedInt::getInstance());
1277
PropCountFrom.setCallback(new Callback<EDPICSNRepetition, QString>(this, &EDPICSNRepetition::getCountFrom));
1279
EDPIProperty PropCountTo(strCountTo);
1280
PropCountTo.setType(EDPIPropertyTypeUnsignedInt::getInstance());
1281
PropCountTo.setCallback(new Callback<EDPICSNRepetition, QString>(this, &EDPICSNRepetition::getCountTo));
1283
EDPIPropertyGroup Editor(strEditor);
1284
Editor.addProperty(PropType);
1285
Editor.addProperty(PropCountFrom);
1286
Editor.addProperty(PropCountTo);
1287
Editor.addProperty(PropDistType);
1288
Editor.addProperty(PropFrom);
1289
Editor.addProperty(PropTo);
1292
emit si_getMetaInfoBase();
1294
EDPICSNode::update(bupdateChildren);
1297
EDPICSNRepetition::~EDPICSNRepetition()
1301
EItemType EDPICSNRepetition::getType() const
1303
return PIT_CSN_REPETITION;
1306
QString EDPICSNRepetition::getPropDistType() const
1308
const OpReiteration* pOp = dynamic_cast<const OpReiteration*>(getOperation());
1309
assert(pOp != NULL);
1310
int nType = (int) pOp->getDistanceType();
1311
return EDPIPropertyTypeDistType::getInstance()->getValue(nType);
1314
QString EDPICSNRepetition::getPropFrom() const
1316
const OpReiteration* pOp = dynamic_cast<const OpReiteration*>(getOperation());
1317
assert(pOp != NULL);
1318
return QString("%1").arg(pOp->getDistance().getFrom());
1321
QString EDPICSNRepetition::getPropTo() const
1323
const OpReiteration* pOp = dynamic_cast<const OpReiteration*>(getOperation());
1324
assert(pOp != NULL);
1325
int nTo = pOp->getDistance().getTo();
1327
return EDPIPropertyTypeUnsignedIntWithUnl::getInstance()->getValue(0);
1329
return QString("%1").arg(nTo);
1332
QString EDPICSNRepetition::getCountFrom() const
1334
const OpReiteration* pOp = dynamic_cast<const OpReiteration*>(getOperation());
1335
assert(pOp != NULL);
1336
return QString("%1").arg(pOp->getCount().getFrom());
1339
QString EDPICSNRepetition::getCountTo() const
1341
const OpReiteration* pOp = dynamic_cast<const OpReiteration*>(getOperation());
1342
assert(pOp != NULL);
1343
return QString("%1").arg(pOp->getCount().getTo());
1347
///////////////////////////////////////////////////////////////////////////////////////
1349
EDPICSNInterval::EDPICSNInterval(OpInterval *pOp)
1355
void EDPICSNInterval::update(bool bupdateChildren)
1359
QString strType = "Type";
1360
QString strFrom = "Distance from";
1361
QString strTo = "Distance to";
1362
QString strEditor = "Editor";
1364
OpInterval* pOp = dynamic_cast<OpInterval*>(getOperation());
1366
EDPIPropertyTypeList *pTList = EDPIPropertyTypeListCSNodeTypes::getInstance();
1367
EDPIProperty PropType(strType);
1368
PropType.setCallback(new Callback<EDPICSNode, QString>(this, &EDPICSNode::getTypeAsString));
1369
PropType.setType(pTList);
1371
EDPIProperty PropFrom(strFrom);
1372
PropFrom.setCallback(new Callback<EDPICSNInterval, QString>(this, &EDPICSNInterval::getPropFrom));
1373
PropFrom.setType(EDPIPropertyTypeUnsignedInt::getInstance());
1375
EDPIProperty PropTo(strTo);
1376
PropTo.setCallback(new Callback<EDPICSNInterval, QString>(this, &EDPICSNInterval::getPropTo));
1377
PropTo.setType(EDPIPropertyTypeUnsignedIntWithUnl::getInstance());
1379
EDPIPropertyGroup Editor(strEditor);
1380
Editor.addProperty(PropType);
1381
Editor.addProperty(PropFrom);
1382
Editor.addProperty(PropTo);
1385
emit si_getMetaInfoBase();
1387
EDPICSNode::update(bupdateChildren);
1391
EDPICSNInterval::~EDPICSNInterval()
1395
EItemType EDPICSNInterval::getType() const
1397
return PIT_CSN_INTERVAL;
1400
QString EDPICSNInterval::getPropFrom() const
1402
const OpInterval* pOp = dynamic_cast<const OpInterval*>(getOperation());
1403
assert(pOp != NULL);
1404
return QString("%1").arg(pOp->getInt().getFrom());
1407
QString EDPICSNInterval::getPropTo() const
1409
const OpInterval* pOp = dynamic_cast<const OpInterval*>(getOperation());
1410
assert(pOp != NULL);
1411
int nTo = pOp->getInt().getTo();
1413
return EDPIPropertyTypeUnsignedIntWithUnl::getInstance()->getValue(0);
1415
return QString("%1").arg(nTo);
1419
///////////////////////////////////////////////////////////////////////////////////////
1421
EDPICSNTSWord::EDPICSNTSWord(TS *pTS)
1427
void EDPICSNTSWord::update(bool bupdateChildren)
1431
QString strType = "Type";
1432
QString strEditor = "Editor";
1433
QString strWord = "Word";
1435
EDPIPropertyTypeList *pTList = EDPIPropertyTypeListCSNodeTypes::getInstance();
1436
EDPIProperty PropType(strType);
1437
PropType.setCallback(new Callback<EDPICSNode, QString>(this, &EDPICSNode::getTypeAsString));
1438
PropType.setType(pTList);
1440
EDPIProperty PropWord(strWord);
1441
PropWord.setType(EDPIPropertyTypeString::getInstance());
1442
PropWord.setCallback(new Callback<EDPICSNTSWord, QString>(this, &EDPICSNTSWord::getPropWord));
1444
EDPIPropertyGroup Editor(strEditor);
1445
Editor.addProperty(PropType);
1446
Editor.addProperty(PropWord);
1449
EDPICSNode::update(bupdateChildren);
1452
EDPICSNTSWord::~EDPICSNTSWord()
1456
EItemType EDPICSNTSWord::getType() const
1458
return PIT_CSN_WORD;
1461
QString EDPICSNTSWord::getPropWord() const
1463
const TS *pTS = dynamic_cast<const TS*>(getOperation());
1464
assert(pTS != NULL);
1465
return pTS->getWord().c_str();
1468
///////////////////////////////////////////////////////////////////////////////////////
1470
EDPICSNTSMrkItem::EDPICSNTSMrkItem(TS *pTS)
1476
void EDPICSNTSMrkItem::update(bool bupdateChildren)
1480
QString strType = "Type";
1481
QString strEditor = "Editor";
1482
QString strFamily = "Family";
1483
QString strSignal = "Signal";
1485
TS *pTS = dynamic_cast<TS*>(getOperation());
1487
EDPIPropertyTypeList *pTList = EDPIPropertyTypeListCSNodeTypes::getInstance();
1488
EDPIProperty PropType(strType);
1489
PropType.setCallback(new Callback<EDPICSNode, QString>(this, &EDPICSNode::getTypeAsString));
1490
PropType.setType(pTList);
1492
emit si_getMetaInfoBase();
1496
const MetaInfoBase& rDesc = *getMinfo();
1497
EDPIPropertyTypeDynamicList *pTFamily = EDPIPropertyTypeDynamicList::getInstance();
1498
int nFamilyNum = rDesc.getFamilyNumber();
1499
for (int i=0; i<nFamilyNum; i++)
1500
pTFamily->addValue(rDesc.getSignalFamily(i).getName().c_str());
1501
EDPIProperty PropFamily(strFamily);
1502
PropFamily.setType(pTFamily);
1503
PropFamily.setCallback(new Callback<EDPICSNTSMrkItem, QString>(this, &EDPICSNTSMrkItem::getPropFamily));
1505
EDPIPropertyTypeDynamicList *pTSignal = EDPIPropertyTypeDynamicList::getInstance();
1507
const Family& rFamily = rDesc.getSignalFamily(pTS->getFamily());
1508
int nSigNum = rFamily.getSignalNumber();
1509
for (int i=0;i<nSigNum; i++)
1510
pTSignal->addValue(rFamily.getMetaInfo(i).getName().c_str());
1515
EDPIProperty PropSignal(strSignal);
1516
PropSignal.setType(pTSignal);
1517
PropSignal.setCallback(new Callback<EDPICSNTSMrkItem, QString>(this, &EDPICSNTSMrkItem::getPropSignal));
1519
EDPIPropertyGroup Editor(strEditor);
1520
Editor.addProperty(PropType);
1521
Editor.addProperty(PropFamily);
1522
Editor.addProperty(PropSignal);
1526
EDPICSNode::update(bupdateChildren);
1529
EDPICSNTSMrkItem::~EDPICSNTSMrkItem()
1533
EItemType EDPICSNTSMrkItem::getType() const
1535
return PIT_CSN_MRK_ITEM;
1538
QString EDPICSNTSMrkItem::getPropFamily() const
1540
const TS *pTS = dynamic_cast<const TS*>(getOperation());
1541
return pTS->getFamily().c_str();
1544
QString EDPICSNTSMrkItem::getPropSignal() const
1546
const TS *pTS = dynamic_cast<const TS*>(getOperation());
1547
return pTS->getName().c_str();
1550
///////////////////////////////////////////////////////////////////////////////////////
1552
EDPIMrkRoot::EDPIMrkRoot()
1558
EDPIMrkRoot::~EDPIMrkRoot()
1562
EItemType EDPIMrkRoot::getType() const
1564
return PIT_MRK_ROOT;
1567
void EDPIMrkRoot::update( bool bUpdateChildren)
1572
void EDPIMrkRoot::updMarkup(const ExpertDiscoveryData& d){
1574
const MetaInfoBase& rDesc = d.getDescriptionBase();
1575
int nFamilyNum = rDesc.getFamilyNumber();
1576
for (int i=0; i<nFamilyNum; i++){
1577
addChild( new EDPIMrkFamily(rDesc.getSignalFamily(i)) );
1582
bool EDPIMrkRoot::isConnectedTo(void *pData) const
1584
//return (pData == (void *)&GlobalgetDocument()->getDescriptionBase());
1589
///////////////////////////////////////////////////////////////////////////////////////
1591
EDPIMrkFamily::EDPIMrkFamily(const Family& rFamily)
1593
, m_rFamily (rFamily)
1598
EDPIMrkFamily::~EDPIMrkFamily()
1602
EItemType EDPIMrkFamily::getType() const
1604
return PIT_MRK_FAMILY;
1607
void EDPIMrkFamily::update(bool bupdateChildren)
1609
QString strName = m_rFamily.getName().c_str();
1612
if (bupdateChildren) {
1614
int nSigNum = m_rFamily.getSignalNumber();
1615
for (int i=0; i<nSigNum; i++)
1616
addChild(dynamic_cast<EDProjectItem*>( new EDPIMrkItem(strName, m_rFamily.getMetaInfo(i)) ));
1620
bool EDPIMrkFamily::isConnectedTo(void *pData) const
1622
return (pData == (void *) &m_rFamily);
1625
///////////////////////////////////////////////////////////////////////////////////////
1627
EDPIMrkItem::EDPIMrkItem(QString strFamilyName, const MetaInfo& rMetaInfo)
1629
, m_rMetaInfo(rMetaInfo)
1632
pTS->setFromMarking(true);
1633
pTS->setName(m_rMetaInfo.getName());
1634
pTS->setFamily(strFamilyName.toStdString());
1637
setName(m_rMetaInfo.getName().c_str());
1640
EDPIMrkItem::~EDPIMrkItem()
1645
EItemType EDPIMrkItem::getType() const
1647
return PIT_MRK_ITEM;
1650
void EDPIMrkItem::update(bool bupdateChildren)
1652
setName( m_rMetaInfo.getName().c_str() );
1653
EDPICSNode::update(true);
1656
bool EDPIMrkItem::isConnectedTo(void *pData) const
1658
return (pData == (void *) &m_rMetaInfo);