logplus/ModuleConsole/include/ParameterEditorModel.h

262 lines
9.3 KiB
C
Raw Normal View History

2026-01-16 17:18:41 +08:00
/*
* ParameterEditorModule.h
*
* Created on: 2011-9-16
* Author: dev
*/
#ifndef PAI_FRAME_WORKFLOWVIEW_PARAMETEREDITORMODEL_H
#define PAI_FRAME_WORKFLOWVIEW_PARAMETEREDITORMODEL_H
#include <QAbstractItemModel>
#include <QUuid>
#include "Module.h"
#include "ModuleCheckResult.h"
#include "WorkflowSpecialTypes.h"
#include "ModuleInformation.h"
#include "ParameterValidateThread.h"
class QString;
class QAbstractButton;
namespace pai
{
namespace workflow
{
class CModuleInformation;
}
}
namespace pai {
namespace graphics2d {
//class CParameterItem;
class ParameterProperty;
/**
* @class ParameterEditorModel
* @brief QTreeView所能接受的模型QTreeView界面加载及修改模块参数
*/
class ParameterEditorModel :public QAbstractItemModel
{
Q_OBJECT
public:
bool GetCurrentZone(float &sdep,float &edep);
/**
* @brief
*/
enum ItemDataRole
{
ErrorRole = Qt::UserRole + 1, //错误信息
HDFSFileRole = Qt::UserRole + 2 //HDFSFILEBROWSER或者HDFSFILEEDITOR类型的参数值
};
ParameterEditorModel(QObject *parent=0);
virtual ~ParameterEditorModel();
void FreshDepth(QString strArrayItemID);
/**
* @brief ID
* @param workflowID ID
*/
void SetCurrentWorkflowID(const QUuid &workflowID);
//用于判断是否是组合方法,从而不显示参数区
bool m_CompositeMethod;
void AddCompositeItemp(ParameterProperty* pPP1,pai::module::CParameterItem* pItem,int pos=-1);
// CParameterItem* CreateItem(CModule *current_module,CCompositeParameterItem* pArrayItem,float sdep,float edep);
/**
* @brief
* @param row
* @param column
* @param parent
*/
QModelIndex index(int row,int column,const QModelIndex & parent = QModelIndex()) const;
/**
* @brief
* @param index
*/
QModelIndex parent(const QModelIndex & index) const;
/**
* @brief
* @param index
*/
int rowCount(const QModelIndex & parent = QModelIndex()) const;
/**
* @brief
* @param index
*/
int columnCount(const QModelIndex & parent = QModelIndex()) const;
/**
* @brief
* @param index
* @param role
*/
QVariant data(const QModelIndex & index,int role=Qt::DisplayRole) const;
/**
* @brief QTreeView传来的界面数据设置给定节点索引所携带的参数项数据
* @param index
* @param value QTreeView传来的界面数据
* @param role
*/
virtual bool setData(const QModelIndex & index, const QVariant & value, int role = Qt::EditRole);
/**
* @brief QTreeView表现的一些标志位
* @param index
*/
Qt::ItemFlags flags ( const QModelIndex & index ) const;
/**
* @brief
* @param section
* @param orientation
* @param role
*/
QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const;
public:
void OnZoneValueChanged(QString str);
void ChangeCurrentParam(float depth,float minX,QString ID);
void ChangeMXParam(float depth,float minX,float maxX,QString curvename,int zoneno,int changetype,QString ID);
QModelIndex ChangeExpand(float depth,int zoneno,QString ID);
void AddDepth(float depth,QString ID);
void DeleteDepth(float depth,QString ID);
/**
* @brief
* @param pParameterProperty
*/
QModelIndex IndexFromParameterProperty(ParameterProperty * pParameterProperty) const;
QModelIndex GetIndexByParameterItemID(const QModelIndex& parentIndex,const QString& strItemID);
/**
* @brief m_rootItem为根节点的树形数据结构,QTreeView根据这些数据自动形成节点
* @param pModuleInfo
*/
void BuildItems(pai::workflow::CModuleInformation* pModuleInfo);
CParameterValidateThread * GetValidateThread();
/**
* @brief m_rootItem为根节点的树形数据结构
*/
void clear();
/**
* @brief
*/
workflow::CModuleInformation *GetModuleInformation();
/**
* @brief "KeepOneRow"Array节点
* 使
*/
void HandleDeleteButtons();
/**
* @brief 线
* @param eventSource启动验证的事件源
*/
void StartValidation(ValidateEventSource eventSource = ValidateEventSource_FromParameterItemChanged);
/**
* @brief
* @param categoryIndex
*/
void HandleCategoryVisible(const QModelIndex &categoryIndex);
/**
* @brief Output模块Overwrite Enable Disable
*/
void EnableOverwriteItem();
/**
* @brief
* @param index
*/
ParameterProperty * ParameterPropertyFromIndex(const QModelIndex &index) const;
void SetModuleInfo(pai::workflow::CModuleInformation *pModuleInfo);
signals:
/**
* @brief
* @param
*/
void signalMakeIndexVisible(const QModelIndex &);
//增加或者减少井段参数时触发
void signalZoneValueChanged(QString zone);
void signalOpenModuleParam(pai::workflow::CModuleInformation*);
public slots:
/**
* @brief
*/
void slotOnParameterValidated();
/**
* @brief Add按钮时
* @param pButton Add按钮
*/
void slotOnArrayItemButtonClicked(QAbstractButton * pButton);
/**
* @brief
* @param strDeleteItemID ID
*/
bool slotOnDeleteItem(const QString& strDeleteItemID);
/**
* @brief
* @param strHideShowItemID ID
*/
void slotOnHideShowItem(const QString& strHideShowItemID,bool hide);
/**
* @brief
* @param strHideShowItemID ID
*/
void slotOnHideShowOptionalItem(const QString& strHideShowItemID,bool hide);
//更新井段参数区的下拉框
void slotZoneChanged(int changedtoindex);
public slots:
/**
* @brief MaxEnergy模块层位面的ID
*/
// void slotBuildMaxEnergySurfaceIDs(const QString &layerPickFile);
private:
/**
* @brief 线
*/
// void StopValidation();
public:
/**
* @brief ModelIndex及参数项ID,ID对应的参数项的ModelIndex.
* @param parentIndex ModelIndex
* @param strItemID ID
* @return ID对应的参数项的ModelIndex
*/
void EvaluateInputData(const QModelIndex& index);
signals:
/**
* @brief
* @param[in] pModuleInfo
* @param[in] errorInfo
* @param[in] checkResult
* @param[in] eventSource
*/
void signalExclieChanged(const QString& id);
void signalErrorInfoChanged(pai::workflow::CModuleInformation * pModuleInfo,
bool checkResult,
const pai::module::CModuleCheckResult errorInfo,
ValidateEventSource eventSource);
void signalDataPropertyChanged(const QModelIndex& dataIndex,const QString& strPropertyName,const QVariant& varPropertyValue);
/**
* @brief
* @param backModule
*/
void signalBackModule(pai::workflow::CModuleInformation *backModule);
private:
ParameterProperty *m_rootItem;//树形数据结构根节点,它携带了所有的参数信息并且与界面的树形相对应。
pai::workflow::CModuleInformation *m_pModuleInfo;
QUuid m_workflowID;
public:
QString m_SelectedCompositeMethod;
CParameterValidateThread *m_pValidateThread;
QModelIndex m_currentindex;
};
}
}
#endif