You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
489 lines
9.1 KiB
C++
489 lines
9.1 KiB
C++
|
5 years ago
|
#include "QParamDlg.h"
|
||
|
|
#include "colossusbase.h"
|
||
|
|
|
||
|
|
#pragma execution_character_set("utf-8")
|
||
|
|
|
||
|
|
|
||
|
|
QParamDlg::QParamDlg(QWidget *parent)
|
||
|
|
: QDialog(parent)//, m_valueCombox(this)
|
||
|
|
{
|
||
|
|
ui.setupUi(this);
|
||
|
|
|
||
|
|
m_pTask = NULL;
|
||
|
|
m_pAlgo = NULL;
|
||
|
|
m_type = PARAM_IN;
|
||
|
|
|
||
|
|
setWindowIcon(QIcon(":/img/resource/app.png"));
|
||
|
|
ui.pushButton->setShortcut(QKeySequence::InsertParagraphSeparator);
|
||
|
|
connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(OnOk()));
|
||
|
|
connect(ui.pushButton_2, SIGNAL(clicked()), this, SLOT(OnCancel()));
|
||
|
|
|
||
|
|
// m_valueCombox.setGeometry(QRect(100, 120, 171, 20));
|
||
|
|
// m_valueCombox.setHidden(true);
|
||
|
|
|
||
|
|
connect(ui.comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(OnChangeParamType()));
|
||
|
|
connect(ui.comboBox_2, SIGNAL(currentIndexChanged(int)), this, SLOT(OnChangeAlgo()));
|
||
|
|
|
||
|
|
connect(ui.m_pbROISet, SIGNAL(clicked()), this, SLOT(OnShowRoiDlg()));
|
||
|
|
//Qt::WindowFlags flags;// = Qt::Dialog;
|
||
|
|
//flags |= Qt::WindowMinMaxButtonsHint;
|
||
|
|
//flags |= Qt::WindowCloseButtonHint;
|
||
|
|
//setWindowFlags(flags);
|
||
|
|
}
|
||
|
|
|
||
|
|
QParamDlg::~QParamDlg()
|
||
|
|
{
|
||
|
|
}
|
||
|
|
|
||
|
|
bool QParamDlg::Initialize(IDetectorEngine* lpDE, IDetectorTask* lpTask, IDetectorAlgorithm* lpAlgo, EM_ParamDialogType type)
|
||
|
|
{
|
||
|
|
if (!lpDE || !lpTask || !lpAlgo)
|
||
|
|
return false;
|
||
|
|
|
||
|
|
m_pDE = lpDE;
|
||
|
|
m_pTask = lpTask;
|
||
|
|
m_pAlgo = lpAlgo;
|
||
|
|
m_type = type;
|
||
|
|
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
bool QParamDlg::InitGraphView()
|
||
|
|
{
|
||
|
|
if (!ui.comboBox)
|
||
|
|
return false;
|
||
|
|
|
||
|
|
ui.comboBox->clear();
|
||
|
|
for (int i = 0; i < LP_MAX_ALGO_PARAM_NUM; i++)
|
||
|
|
{
|
||
|
|
ui.comboBox->insertItem(i, AlgoParamName[i]);
|
||
|
|
}
|
||
|
|
|
||
|
|
ui.comboBox->setEditable(false);
|
||
|
|
disconnect(ui.comboBox_2, SIGNAL(currentIndexChanged(int)), 0, 0);
|
||
|
|
ui.comboBox_2->clear();
|
||
|
|
ui.comboBox_3->clear();
|
||
|
|
|
||
|
|
ui.comboBox_2->insertItem(0, "None", LP_DETECTOR_INVALID_ID);
|
||
|
|
int nAlgoCount = m_pTask->EnumAlgorithm(NULL, 0);
|
||
|
|
if (nAlgoCount > 0)
|
||
|
|
{
|
||
|
|
IDetectorAlgorithm** lppAlgo = new IDetectorAlgorithm*[nAlgoCount];
|
||
|
|
nAlgoCount = m_pTask->EnumAlgorithm(lppAlgo, nAlgoCount);
|
||
|
|
for (int i = 0; i < nAlgoCount; i++)
|
||
|
|
{
|
||
|
|
if (lppAlgo[i] && lppAlgo[i]->GetID() != m_pAlgo->GetID())
|
||
|
|
{
|
||
|
|
ui.comboBox_2->insertItem(i + 1, lppAlgo[i]->GetAlgorithmInfo()->strName, lppAlgo[i]->GetID());
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
delete[] lppAlgo;
|
||
|
|
}
|
||
|
|
|
||
|
|
ui.comboBox_2->setCurrentIndex(0);
|
||
|
|
ui.comboBox_3->setCurrentIndex(0);
|
||
|
|
connect(ui.comboBox_2, SIGNAL(currentIndexChanged(int)), this, SLOT(OnChangeAlgo()));
|
||
|
|
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
void QParamDlg::CleanUp()
|
||
|
|
{
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
PLP_ALGORITHM_PARAM QParamDlg::ShowParamDlg(PLP_ALGORITHM_PARAM pParam)
|
||
|
|
{
|
||
|
|
if (pParam)
|
||
|
|
{
|
||
|
|
ui.lineEdit->setText(pParam->strName);
|
||
|
|
ui.comboBox->setCurrentIndex(GetTypeIndex(pParam->type));
|
||
|
|
_ParamType = pParam->type;
|
||
|
|
|
||
|
|
int a = ui.comboBox_2->findData(pParam->nSrcAlgoID);
|
||
|
|
int algoID = ui.comboBox_2->findData(pParam->nSrcAlgoID);
|
||
|
|
ui.comboBox_2->setCurrentIndex(algoID > 0 ? algoID : 0);
|
||
|
|
|
||
|
|
InitValueCtrl(pParam->type, pParam);
|
||
|
|
QString str = QString("%1").arg(pParam->strDescription);
|
||
|
|
ui.lineEdit_3->setText(str);
|
||
|
|
|
||
|
|
ui.checkBox->setChecked(pParam->bIsSave);
|
||
|
|
ui.checkBox_2->setChecked(pParam->bIsLock);
|
||
|
|
|
||
|
|
int srcParmID = ui.comboBox_3->findData(pParam->nSrcParamID);
|
||
|
|
ui.comboBox_3->setCurrentIndex(srcParmID > 0 ? srcParmID : 0);
|
||
|
|
if (pParam->type == LP_ROI)
|
||
|
|
m_tRoiData = pParam->value.value<LP_DETECTOR_ROI_DATA>();
|
||
|
|
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
ui.lineEdit->clear();
|
||
|
|
ui.lineEdit_2->clear();
|
||
|
|
ui.comboBox->setCurrentIndex(0);
|
||
|
|
ui.comboBox_2->setCurrentIndex(0);
|
||
|
|
ui.comboBox_3->setCurrentIndex(0);
|
||
|
|
ui.lineEdit_3->clear();
|
||
|
|
//m_valueCombox.clear();
|
||
|
|
ui.checkBox->setChecked(false);
|
||
|
|
ui.checkBox_2->setChecked(false);
|
||
|
|
|
||
|
|
m_tRoiData.img.release();
|
||
|
|
m_tRoiData.records.clear();
|
||
|
|
}
|
||
|
|
|
||
|
|
QDesktopWidget* desktop = QApplication::desktop();//
|
||
|
|
move((desktop->width() - this->width()) / 2, (desktop->height() - this->height()) / 2);
|
||
|
|
if (this->exec() == QDialog::Accepted)
|
||
|
|
{
|
||
|
|
SystemStateInfo::bParamStateFlag = true;
|
||
|
|
LP_ALGORITHM_PARAM tParam;
|
||
|
|
tParam.strName = ui.lineEdit->text();
|
||
|
|
tParam.type = (AlgoParamType)ui.comboBox->currentIndex();
|
||
|
|
tParam.nSrcAlgoID = ui.comboBox_2->currentData().toInt();
|
||
|
|
tParam.nSrcParamID = ui.comboBox_3->currentData().toInt();
|
||
|
|
tParam.value = GetCtrlValue(tParam.type);
|
||
|
|
tParam.strDescription = ui.lineEdit_3->text();
|
||
|
|
tParam.bIsSave = ui.checkBox->isChecked();
|
||
|
|
tParam.bIsLock = ui.checkBox_2->isChecked();
|
||
|
|
|
||
|
|
|
||
|
|
if (pParam)
|
||
|
|
{
|
||
|
|
pParam->strName = tParam.strName;
|
||
|
|
pParam->type = tParam.type;
|
||
|
|
pParam->nSrcAlgoID = tParam.nSrcAlgoID;
|
||
|
|
pParam->nSrcParamID = tParam.nSrcParamID;
|
||
|
|
pParam->value = tParam.value;
|
||
|
|
pParam->strDescription = tParam.strDescription;
|
||
|
|
pParam->bIsSave = tParam.bIsSave;
|
||
|
|
pParam->bIsLock = tParam.bIsLock;
|
||
|
|
return pParam;
|
||
|
|
}
|
||
|
|
|
||
|
|
PLP_ALGORITHM_PARAM pNewParam = NULL;
|
||
|
|
if (m_type == PARAM_IN)
|
||
|
|
pNewParam = m_pAlgo->AddParam(&tParam);
|
||
|
|
else if (m_type == PARAM_OUT)
|
||
|
|
pNewParam = m_pAlgo->AddOutParam(&tParam);
|
||
|
|
|
||
|
|
if (pNewParam)
|
||
|
|
{
|
||
|
|
return pNewParam;
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
return NULL;
|
||
|
|
}
|
||
|
|
|
||
|
|
int QParamDlg::GetTypeIndex(AlgoParamType type)
|
||
|
|
{
|
||
|
|
return type;
|
||
|
|
|
||
|
|
int nIndex;
|
||
|
|
switch (type)
|
||
|
|
{
|
||
|
|
case LP_INT:
|
||
|
|
{
|
||
|
|
nIndex = 0;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_BOOLEAN:
|
||
|
|
{
|
||
|
|
nIndex = 1;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_STRING:
|
||
|
|
{
|
||
|
|
nIndex = 2;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_DOUBLE:
|
||
|
|
{
|
||
|
|
nIndex = 3;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_IMAGE:
|
||
|
|
{
|
||
|
|
nIndex = 4;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_POINT:
|
||
|
|
{
|
||
|
|
nIndex = 5;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_POINTF:
|
||
|
|
{
|
||
|
|
nIndex = 6;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_RECT:
|
||
|
|
{
|
||
|
|
nIndex = 7;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_RECTF:
|
||
|
|
{
|
||
|
|
nIndex = 8;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_ROI:
|
||
|
|
{
|
||
|
|
nIndex = 9;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_MAT:
|
||
|
|
{
|
||
|
|
nIndex = 10;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_LIST_INT:
|
||
|
|
{
|
||
|
|
nIndex = 11;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_LIST_BOOLEAN:
|
||
|
|
{
|
||
|
|
nIndex = 12;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_LIST_STRING:
|
||
|
|
{
|
||
|
|
nIndex = 13;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_LIST_DOUBLE:
|
||
|
|
{
|
||
|
|
nIndex = 14;
|
||
|
|
}
|
||
|
|
case LP_USER:
|
||
|
|
{
|
||
|
|
nIndex = 15;
|
||
|
|
}
|
||
|
|
|
||
|
|
default:
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
|
||
|
|
return nIndex;
|
||
|
|
}
|
||
|
|
|
||
|
|
void QParamDlg::InitValueCtrl(AlgoParamType type, PLP_ALGORITHM_PARAM pParam)
|
||
|
|
{
|
||
|
|
switch (type)
|
||
|
|
{
|
||
|
|
case LP_INT:
|
||
|
|
{
|
||
|
|
ui.lineEdit_2->setHidden(false);
|
||
|
|
ui.label_2->setHidden(false);
|
||
|
|
ui.m_pbROISet->setHidden(true);
|
||
|
|
//m_valueCombox.setHidden(true);
|
||
|
|
if (pParam)
|
||
|
|
{
|
||
|
|
ui.lineEdit_2->setText(pParam->value.toString());
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_BOOLEAN:
|
||
|
|
{
|
||
|
|
ui.label_2->setHidden(true);
|
||
|
|
ui.lineEdit_2->setHidden(true);
|
||
|
|
ui.m_pbROISet->setHidden(true);
|
||
|
|
//m_valueCombox.setHidden(false);
|
||
|
|
//m_valueCombox.clear();
|
||
|
|
//m_valueCombox.insertItem(0, "FALSE");
|
||
|
|
//m_valueCombox.insertItem(1, "TRUE");
|
||
|
|
//if (pParam)
|
||
|
|
// m_valueCombox.setCurrentIndex(pParam->value.toBool());
|
||
|
|
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_STRING:
|
||
|
|
//{
|
||
|
|
// ui->lineEdit_2->setHidden(false);
|
||
|
|
// m_valueCombox.setHidden(true);
|
||
|
|
// m_roiButton.setHidden(true);
|
||
|
|
// break;
|
||
|
|
//}
|
||
|
|
case LP_DOUBLE:
|
||
|
|
{
|
||
|
|
ui.label_2->setHidden(false);
|
||
|
|
ui.lineEdit_2->setHidden(false);
|
||
|
|
//m_valueCombox.setHidden(true);
|
||
|
|
ui.m_pbROISet->setHidden(true);
|
||
|
|
if (pParam)
|
||
|
|
{
|
||
|
|
ui.lineEdit_2->setText(pParam->value.toString());
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_IMAGE:
|
||
|
|
{
|
||
|
|
ui.label_2->setHidden(false);
|
||
|
|
ui.lineEdit_2->setHidden(false);
|
||
|
|
//m_valueCombox.setHidden(true);
|
||
|
|
ui.m_pbROISet->setHidden(true);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_POINT:
|
||
|
|
{
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_POINTF:
|
||
|
|
{
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_RECT:
|
||
|
|
{
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_RECTF:
|
||
|
|
{
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_ROI:
|
||
|
|
{
|
||
|
|
ui.label_2->setHidden(true);
|
||
|
|
//m_valueCombox.setHidden(true);
|
||
|
|
ui.lineEdit_2->setHidden(true);
|
||
|
|
ui.m_pbROISet->setHidden(false);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_MAT:
|
||
|
|
{
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
|
||
|
|
default:
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
QVariant QParamDlg::GetCtrlValue(AlgoParamType type)
|
||
|
|
{
|
||
|
|
switch (type)
|
||
|
|
{
|
||
|
|
case LP_INT:
|
||
|
|
{
|
||
|
|
return ui.lineEdit_2->text();
|
||
|
|
}
|
||
|
|
case LP_BOOLEAN:
|
||
|
|
{
|
||
|
|
//return m_valueCombox.currentIndex();
|
||
|
|
}
|
||
|
|
case LP_STRING:
|
||
|
|
{
|
||
|
|
return ui.lineEdit_2->text();
|
||
|
|
}
|
||
|
|
case LP_DOUBLE:
|
||
|
|
{
|
||
|
|
return ui.lineEdit_2->text().toDouble();
|
||
|
|
}
|
||
|
|
case LP_IMAGE:
|
||
|
|
{
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_POINT:
|
||
|
|
{
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_POINTF:
|
||
|
|
{
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_RECT:
|
||
|
|
{
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_RECTF:
|
||
|
|
{
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case LP_ROI:
|
||
|
|
{
|
||
|
|
QVariant value;
|
||
|
|
value.setValue(m_tRoiData);
|
||
|
|
return value;
|
||
|
|
}
|
||
|
|
case LP_MAT:
|
||
|
|
{
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
default:
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
return NULL;
|
||
|
|
}
|
||
|
|
|
||
|
|
bool QParamDlg::OnOk()
|
||
|
|
{
|
||
|
|
QDialog::accept();
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
bool QParamDlg::OnCancel()
|
||
|
|
{
|
||
|
|
QDialog::reject();
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
bool QParamDlg::OnChangeParamType()
|
||
|
|
{
|
||
|
|
AlgoParamType type = (AlgoParamType)ui.comboBox->currentIndex();
|
||
|
|
InitValueCtrl(type, NULL);
|
||
|
|
_ParamType = type;
|
||
|
|
OnChangeAlgo();
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
bool QParamDlg::OnChangeAlgo()
|
||
|
|
{
|
||
|
|
ui.comboBox_3->clear();
|
||
|
|
ui.comboBox_3->insertItem(0, "None", LP_DETECTOR_INVALID_ID);
|
||
|
|
QVariant v = ui.comboBox_2->currentData();
|
||
|
|
IDetectorAlgorithm* pAlgo = m_pTask->GetAlgorithm(ui.comboBox_2->currentData().toInt());
|
||
|
|
if (pAlgo)
|
||
|
|
{
|
||
|
|
int nCount = pAlgo->EnumOutParam(NULL, 0);
|
||
|
|
if (nCount > 0)
|
||
|
|
{
|
||
|
|
LP_ALGORITHM_PARAM** lppParam = new LP_ALGORITHM_PARAM*[nCount];
|
||
|
|
nCount = pAlgo->EnumOutParam(lppParam, nCount);
|
||
|
|
int nComBoxIndex = 0;
|
||
|
|
for (int i = 0; i < nCount; i++)
|
||
|
|
{
|
||
|
|
if (lppParam[i])
|
||
|
|
{
|
||
|
|
QString str = lppParam[i]->strName;
|
||
|
|
int ID = lppParam[i]->nID;
|
||
|
|
if (lppParam[i]->type == _ParamType)
|
||
|
|
{
|
||
|
|
ui.comboBox_3->insertItem(nComBoxIndex + 1, lppParam[i]->strName, lppParam[i]->nID);
|
||
|
|
nComBoxIndex++;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
bool QParamDlg::OnShowRoiDlg()
|
||
|
|
{
|
||
|
|
// if (!m_tRoiDlg.Initialize(m_pDE, m_pAlgo, m_pTask))
|
||
|
|
// return false;
|
||
|
|
// m_tRoiData.img = m_pTask->GetTaskInfo()->templateImg;
|
||
|
|
// m_tRoiData = m_tRoiDlg.ShowRoiDlg(m_tRoiData);
|
||
|
|
|
||
|
|
|
||
|
|
return true;
|
||
|
|
}
|