logplus/ModuleConsole/src/LogModuleConsole.cpp

609 lines
24 KiB
C++
Raw Normal View History

2026-01-16 17:18:41 +08:00
#pragma warning( push ,0)
#include <QDateTime>
#include <QTextEdit>
#include <QAction>
#include <QMenu>
#include <QToolBar>
#include <QMenuBar>
#include <QDockWidget>
#include <QDialog>
#include <QHBoxLayout>
#include <QSplitter>
#include <QObject>
#include <QApplication>
#include <QDebug>
#include <QFileDialog>
#include <QSettings>
#include <QPushButton>
// #include "QtWellSceneManager.h"
#include "LogModuleConsole.h"
#include "GeometryUtils.h"
#include "WorkflowWidget.h"
#include "WorkflowSceneManager.h"
#include "BaseObject.h"
// #include "PaiObject.h"
#include "ObjectID.h"
// #include "ObjProject.h"
// #include "ModuleGraphicsItem.h"
// #include "PaiModuleTree.h"
#include "Module.h"
#include "WorkflowFile.h"
#include "PELibraryModule.h"
#include "ModuleManager.h"
#include "SaveHelper.h"
#include "WellLogWorkflowRunner.h"
#include "VecViewCommand.h"
#include "OSGFramework.h"
// #include "ObjectEvent.h"
// #include "VecWindowCommand.h"
// #include "VecSceneManager.h"
// #include "VecDisplayObjectCommand.h"
#include "ModuleInformation.h"
#include "GeometryUtils.h"
#include "ParameterEditorModel.h"
#include "ModuleTreeDlg.h"
#include "PaiPushButton.h"
// #include "ConsoleOutputWidget.h"
#include "PaiWorkflowTemplateTree.h"
// #include "ObjWelllogINP.h"
// #include "DataTree.h"
#include "logmoduleparamers.h"
#pragma warning( pop )
// using namespace pai::graphics2d;
// using namespace pai;
// using namespace pai::workflow;
// using namespace pai::gui;
// using namespace pai::module;
// using namespace pai::graphics;
#define GetViewCmdID_RunCurrentWorkflow() "{E7FA515B-4AA6-461D-B4B8-CF7700FBC7FF}"
BEGIN_OSGGRAPHICS_NAMESPACE;
CModuleConsole *g_pWorkflowConsole(NULL);
PAI_WORKFLOWVIEW_EXPORT void SetWorkflowConsole( CModuleConsole *pWorkflowConsole )
{
g_pWorkflowConsole = pWorkflowConsole;
// CVecWindow *ptWindow = dynamic_cast<CVecWindow *>(g_pWorkflowConsole);
// if(ptWindow)
// {
// if(ptWindow->m_pBObject) {
// CVecWindowDocument*pWindowDocument = dynamic_cast<CVecWindowDocument*>(ptWindow->m_pBObject->GetVecWindowDocument());
// if(pWindowDocument) {
// if(pWindowDocument->GetVecWindow()&&pWindowDocument->GetVecWindow()->GetSceneManager())
// {
// pWindowDocument->GetVecWindow()->GetSceneManager()->SetNo();
// }
// }
// }
// }
}
PAI_WORKFLOWVIEW_EXPORT CModuleConsole* GetWorkflowConsole()
{
return g_pWorkflowConsole;
}
CModuleConsole::CModuleConsole(bool isSingleWellWindow,QWidget *parent):
// CVecWindow(parent),
m_pVSplitter(NULL),
m_parentFolder(NULL),
m_control(new WorkflowPluginControl(QUuid()))
{
m_SingleWellWindow=isSingleWellWindow;
m_pWorkflowDataModel=NULL;
g_mModuleParamers=NULL;
QWidget::installEventFilter(this);//监听
// connect(&ModuleGraphicsItem::m_EventAgent, SIGNAL(DoubleClick(pai::workflow::CModuleInformation* ,bool)), this,
// SLOT(slotOpenParameterEditor(pai::workflow::CModuleInformation*, bool)));
// connect(&pai::objectmodel::PaiObject::m_EventAgent,
// SIGNAL(PropertyChanged(pai::objectmodel::PaiObject* ,const QString&,const QVariant& )), m_control,
// SLOT(slotOnWorkflowPropertyChanged(pai::objectmodel::PaiObject* ,const QString&,const QVariant& )));
// connect( (const QObject*)( &GetObjectEvent() ),SIGNAL(SetCurrentWorkflowWindow(QObject*)),this,SLOT(slotSetCurrentWorkflowWindow(QObject *)));
// connect( (const QObject*)( &GetObjectEvent() ),SIGNAL(CloseAllWorkflowWindow(QObject *)),this,SLOT(slotCloseAllWorkflowWindow(QObject*)));
}
CModuleConsole::~CModuleConsole()
{
// CDataTree *pDatatree=(CDataTree *)::GetProject()->m_pDataTree;
// CBaseObject *p=NULL;
// if(SystemExiting()) return;
// if(this->GetWorkflowWidget()) {
// CWellLogWorkflowDataModel* pwellWorkflowDataModel=dynamic_cast<CWellLogWorkflowDataModel*>(this->GetWorkflowWidget()->GetWorkflow());
// if(pwellWorkflowDataModel) {
// PaiObject *pP=pwellWorkflowDataModel->GetParent();
// if(pP&&pP->GetParent()) {
// PaiObject *pPp=pP->GetParent();
// if(pP->GetChildrenCount()==1)
// {
// CBaseObject *pB=dynamic_cast<CBaseObject *>(pP);
// if(pDatatree) pDatatree->OnObjectDeleted(pPp,pP);
// ::GetProject()->RemoveIDMap(pB);
// pPp->RemoveChild(pP);
// }
// }
// if(pDatatree) pDatatree->OnObjectDeleted(pP,pwellWorkflowDataModel->GetPaiObject());
// ::GetProject()->RemoveIDMap(pwellWorkflowDataModel);
// // return;
// PaiObject *pPp=pP;
// p=pwellWorkflowDataModel->GetVecWindowDocument();
// if(!p||!p->GetPaiObject()) return;
// pP=p->GetPaiObject()->GetParent();
// if(pDatatree) pDatatree->OnObjectDeleted(pP,p->GetPaiObject());
// ::GetProject()->RemoveIDMap(p);
// p=pwellWorkflowDataModel->GetMWVecWindowDocument();
// ::GetProject()->RemoveIDMap(p);
// pai::objectmodel::PaiWorkflowDataModel* m_pWorkflow;
// std::vector<CModuleInformation*>*moduleinfos =pwellWorkflowDataModel->GetWorkflowFile()->GetModuleInfos();
// if(moduleinfos) moduleinfos->clear();
// // delete pwellWorkflowDataModel;
// // m_PWorkflowWidget=NULL;
// if(pPp) {
// pPp->RemoveChild(pwellWorkflowDataModel);
// }
// m_pBObject=NULL;
// }
// }
// if (NULL !=m_control)
// {
// delete m_control;
// m_control = NULL;
// }
SetWorkflowConsole(NULL);
}
void CModuleConsole::SetWorkflowDataModelParent(CBaseObject * aparentFolder)
{
this->m_parentFolder=aparentFolder;
}
void CModuleConsole::closeEvent(QCloseEvent *event)
{
}
bool CModuleConsole::eventFilter(QObject *watched, QEvent *event)
{
if( watched == this )
{
//窗口停用,变为不活动的窗口
if(QEvent::WindowActivate == event->type())
{
SetWorkflowConsole(this);
return true ;
}
else if(QEvent::WindowDeactivate == event->type())
{
return true ;
}
else return false;
}
return false ;
}
void CModuleConsole::CreateWorkflowDataModel(QUuid id)
{
// //得到数据树上的工作流节点
// CBaseObject *pOSGObject=NULL;
// if(!::GetProject()) return;
// CObjWelllogRound * pObject=::GetProject()->GetCurrentWelllogRound();
// if(pObject) {
// pOSGObject=dynamic_cast<CBaseObject *>(pObject->GetObjectByType(GetClassID_WorkflowFolder(),true));
// if( !pOSGObject)
// {
// pOSGObject = new CObjectFolder( GetClassID_WorkflowFolder() );
// if(pOSGObject)pObject->AddChild( pOSGObject->GetPaiObject() );
// }
// }
// if(!pOSGObject) {
// if(m_parentFolder==NULL)
// {
// pOSGObject = ::GetProject()->GetFolderObjectByClassID(GetClassID_WorkflowFolder(),true);
// }
// else
// pOSGObject=m_parentFolder;
// }
// //新建工作流数据模型
// CWellLogWorkflowDataModel* pNewWorkflowDataModel = new CWellLogWorkflowDataModel(id);
// m_pWorkflowDataModel=pNewWorkflowDataModel;
// pNewWorkflowDataModel->SetIgnoreSyncDB(true);
// pNewWorkflowDataModel->SetSyncabled(false);
// pNewWorkflowDataModel->SetDBID(PaiVirtualObject::GenerateVirtualDBID()); // 为新建的工作流设置虚拟DBID
// pNewWorkflowDataModel->SetModify(true);
// if (pOSGObject&&pOSGObject->GetPaiObject())
// {
// if(pOSGObject->GetPaiObject()->GetTypeID().toString().toUpper()==GetClassID_WorkflowFolder()){
// pNewWorkflowDataModel->SetName(pOSGObject->GetPaiObject()->GetNextChildName("可视解释"));
// this->setWindowIcon(QIcon( ::GetImagePath() + "workflow.png" ));//修正tab页图标
// }
// else{
// PaiObject *pPaiObject=pOSGObject->GetPaiObject();
// if(pPaiObject) {
// if(m_SelectedCompositeMethod!="")
// pNewWorkflowDataModel->SetName(pPaiObject->GetNextChildName(m_SelectedCompositeMethod));
// else
// pNewWorkflowDataModel->SetName(pPaiObject->GetNextChildName(m_SelectModuleName));
// }
// pNewWorkflowDataModel->SetIconName("icon/ModuleOne.png");//修正树上节点图标
// this->setWindowIcon(QIcon( ::GetImagePath() + "icon/ModuleOne.png" ));//修正tab页图标
// }
// pOSGObject->AddChild(pNewWorkflowDataModel);//将工作流数据模型添加到数据树上
// }
// pNewWorkflowDataModel->SetCurrentWellRoundPath(wellRoundpath);
// pNewWorkflowDataModel->SetDefineMothodMode(DefineMothodMode);
// m_pBObject=pNewWorkflowDataModel;
// CreatWorkflowEditor(pNewWorkflowDataModel);
}
// void CModuleConsole::CreatWorkflowEditor(CWellLogWorkflowDataModel * pWorkflowDataModel)
// {
// //新建工作流编辑区
// g_mModuleParamers=new CModuleParamers(this);
// //新建多井对比区
// CVecWindowDocument * pMWWindowDocument = dynamic_cast<CVecWindowDocument*>(pWorkflowDataModel->GetMWVecWindowDocument());
// if(!pMWWindowDocument) {
// return;
// }
// CVecWindow *pMWOSGWindow = CVecWindowCommand::CreateOSGWindow(pMWWindowDocument->GetTypeID() ,false,false,pMWWindowDocument );
// if(!pMWOSGWindow) return;
// pMWWindowDocument->SetIsWorkflowWindow(true);
// CVecDisplayObjectCommand::ActiveOSGWindow( pMWOSGWindow );
// pMWOSGWindow->GetWindowDocument()->SetCheckState((Qt::CheckState)(-1));
// const QIcon icon=QIcon(::GetImagePath() + "icon/ModuleOne.png");
// const QString text="处理方法";
// QAction *pAction1 = new QAction(icon,text,this);
// pMWOSGWindow->GetToolbar()->addAction(pAction1);
// connect(pAction1,SIGNAL(triggered()),this,SLOT(slotModuleOpenOrClose()));
// pWorkflowDataModel->AddChild(pMWWindowDocument);
// GetObjectEvent().OnHideWellSectionWindowItem( pMWWindowDocument );
// m_pVSplitter= new QSplitter(Qt::Horizontal);
// QString wname=pMWWindowDocument->GetName();
// m_pVSplitter->addWidget(pMWOSGWindow);
// m_pVSplitter->addWidget(g_mModuleParamers);
// this->setContentsMargins(0,0,10,0);
// setCentralWidget(m_pVSplitter);
// QList<int> sizes;
// sizes << this->width()<<0;
// m_pVSplitter->setSizes(sizes);//默认隐藏左侧多井图窗口
// }
void CModuleConsole::RunWorkFlow()
{
if(GetWorkflowControl())GetWorkflowControl()->SlotRunWelllogModule();
}
void CModuleConsole::RunWorkFlow(float sdep,float edep)
{
if(GetWorkflowControl())GetWorkflowControl()->SlotRunWelllogModule(sdep,edep);
}
// void CModuleConsole::NewWorkflow(QObject*pObject,QString strTabText)
// {
// ::GetObjectEvent().OnNewWorkflow(pObject,strTabText);
// }
void CModuleConsole::slotSetCurrentWorkflowWindow(QObject * pObject)
{
return;
// CModuleConsole * pWorkflowConsole = dynamic_cast<CModuleConsole*>(pObject);
// if(!pWorkflowConsole) return;
// CVecWindow * pVecWindow = NULL;
// if(pWorkflowConsole->GetVSplitter()) pVecWindow=dynamic_cast<CVecWindow*>(pWorkflowConsole->GetVSplitter()->widget(0));
// if(!pVecWindow) {
// delete pWorkflowConsole;
// return;
// }
// CVecDisplayObjectCommand::ActiveOSGWindow( pVecWindow );
// ::SetWorkflowConsole(pWorkflowConsole);
// return;
}
QVector <QObject *> mliObject;
void CModuleConsole::slotCloseAllWorkflowWindow(QObject * pObject)
{
// if(!pObject) return;
// if(mliObject.indexOf(pObject)>-1) return;
// mliObject.push_back(pObject);
// CModuleConsole *pMC=dynamic_cast<CModuleConsole *>(pObject);
// if(pMC) {
// delete pMC;
// SetWorkflowConsole(NULL);
// return;
// }
// CBaseObject *pBaseObject=dynamic_cast<CBaseObject *>(pObject);
// if(!pBaseObject) return;
// CVecWindowDocument * pWindowDocument = dynamic_cast<CVecWindowDocument*>(pBaseObject->GetVecWindowDocument());
// if(!pWindowDocument) return;
// if(pWindowDocument->HasModified())
// {
// int res = QMessageBox::No;//QMessageBox::information(NULL,QObject::tr("提示"),QObject::tr("是否保存图文件?"),QMessageBox::Yes|QMessageBox::No);
// if(res==QMessageBox::Yes) {
// // slotSaveTemplate(viewCommand,QUuid(),false);
// QString templateName;
// QString strTempPath= ::GetTemplatePath();
// QString OldtemplateName=pWindowDocument->GetTemplateFileName();
// if(OldtemplateName.isEmpty()||
// (!OldtemplateName.isEmpty()&&OldtemplateName.indexOf("template")>-1))
// {
// CObjWell *pWell=(CObjWell *)pWindowDocument->GetCurrentWell();
// QString slf;
// if(pWell) slf=pWell->GetWellFileName();
// QString wellname,path;
// GetWellNameAndPath(slf,wellname,path);
// OldtemplateName=path+"/"+wellname+".tpl";
// strTempPath="";//OldtemplateName;
// QString strTplFilter="单井图文件(*.tpl);;多井图文件(*.mpl)";
// templateName=QFileDialog::getSaveFileName(NULL,QObject::tr("存为图文件"),OldtemplateName,strTplFilter);
// if(templateName.isEmpty()) return;
// }
// else {
// strTempPath="";
// templateName=OldtemplateName;
// }
// pWindowDocument->SaveAsTemplate(strTempPath+templateName);
// pWindowDocument->SetTemplateFileName(strTempPath+templateName);
// }
// }
// if(pWindowDocument->GetIsWorkflowWindow()) {
// CVecWindow *pWindow=pWindowDocument->GetVecWindow();
// if(pWindow) {
// QWidget *pW=dynamic_cast<QWidget *>(pWindow->parent());
// if(pW) {
// QWidget *ppw=pW->parentWidget();
// // QWidget *pppp=ppw->parentWidget();
// CModuleConsole * pWorkflowConsole=dynamic_cast<CModuleConsole *>(ppw);
// if(!pWorkflowConsole) return;
// if(pWorkflowConsole!=this) return;
// delete pWorkflowConsole;
// SetWorkflowConsole(NULL);
// }
// }
// }
return;
}
//两个地方会发起新建的操作:右键菜单[能够拿到当前井和井次],程序主菜单[拿不到当前井和井次]
void _slotCreateNewWorkflow(CVecViewCommand &viewCommand,QUuid viewCommandID,bool bChecked )
{
// QString currentWellRoundPath;
// CBaseObject* pObject= NULL;
// CObjProject *pPrj=::GetProject();
// if(!pPrj) return;
// CBaseObject *pOSGObject=dynamic_cast<CBaseObject*>(pPrj->GetCurrentObject());
// //新建工作流数据模型
// if (pOSGObject)
// {
// CObjWelllogRound* pObjWelllogRound=dynamic_cast<CObjWelllogRound*>(pOSGObject);
// if(pObjWelllogRound) {
// currentWellRoundPath=pObjWelllogRound->GetWellRoundPath();
// }
// else {
// PaiObject *pPaiObject=pOSGObject->GetPaiObject();
// while(pPaiObject)
// {
// CObjWelllogRound* pObjWelllogRound=dynamic_cast<CObjWelllogRound*>(pPaiObject);
// if(pObjWelllogRound) {
// currentWellRoundPath=pObjWelllogRound->GetWellRoundPath();
// pObject=pObjWelllogRound;
// break;
// }
// pPaiObject=pPaiObject->GetParent();
// }
// if(currentWellRoundPath.isEmpty()) {
// AfxMessageBox("请先选中待处理井次!");
// return;
// }
// }
// }
// else {
// AfxMessageBox("请先选中待处理井次!");
// return;
// }
// QString WorkflowModeid;
// CModuleConsole * pWorkflowConsole = new CModuleConsole();
// ::SetWorkflowConsole(pWorkflowConsole);
// pWorkflowConsole->DefineMothodMode=false;
// //如果是从树上发起则没有指定方法id
// //弹出界面选择单方法或者组合方法
// pWorkflowConsole->SetWorkflowDataModelParent(pObject);
// pWorkflowConsole->wellRoundpath=currentWellRoundPath;
// pWorkflowConsole->CreateWorkflowDataModel(GetWindowTypeID_QtMultiWellSection());
// CModuleConsole::NewWorkflow(pWorkflowConsole,pWorkflowConsole->GetWorkflowWidget()->GetWorkflow()->GetName());
// dynamic_cast<CWellLogWorkflowDataModel*>(pWorkflowConsole->GetWorkflowWidget()->GetWorkflow())->SetCurrentModuleID(pWorkflowConsole->GetSelectedModuleClassId());
// WorkflowSceneManager *pWorkflowScene=dynamic_cast<WorkflowSceneManager *>(pWorkflowConsole->GetWorkflowWidget()->GetScene());
// if(!pWorkflowScene) return;
// if(pWorkflowConsole->g_mModuleParamers)
// {
// pWorkflowConsole->GetWorkflowControl()->SetActiveTemplate(pWorkflowConsole->g_mModuleParamers->m_pTemplateTree);
// pWorkflowScene->SetParameterEditor(pWorkflowConsole->g_mModuleParamers->m_pParameterEditor);
// }
// CVecWindow *pOSGWindow = dynamic_cast<CVecWindow*>(pWorkflowConsole->GetVSplitter()->widget(0));
// if(!pOSGWindow) return;
// QList<QUuid> wellList;
// foreach(PaiObject *pPai,pPrj->m_Selects)
// {
// wellList.push_back(pPai->GetID());
// }
// pOSGWindow->InitByWellIds(wellList);
// pWorkflowConsole->GetWorkflowControl()->ApplyTemplate(pOSGWindow);
return;
}
#define GetWindowTypeID_WindowMultiWell() "{DC4ABEB2-B0FC-4A0C-9ED7-77B6BC53B191}"
//两个地方会发起新建的操作:右键菜单[能够拿到当前井和井次],程序主菜单[拿不到当前井和井次]
void _slotCreateNewMultWells(CVecViewCommand &viewCommand,QUuid viewCommandID,bool bChecked )
{
// QString currentWellRoundPath;
// CBaseObject* pObject= NULL;
// CObjProject *pPrj=::GetProject();
// if(!pPrj) return;
// QString WorkflowModeid;
// CModuleConsole * pWorkflowConsole = new CModuleConsole(true);
// ::SetWorkflowConsole(pWorkflowConsole);
// pWorkflowConsole->DefineMothodMode=false;
// //如果是从树上发起则没有指定方法id
// //弹出界面选择单方法或者组合方法
// pWorkflowConsole->SetWorkflowDataModelParent(pObject);
// pWorkflowConsole->wellRoundpath=currentWellRoundPath;
// pWorkflowConsole->CreateWorkflowDataModel(GetWindowTypeID_WindowMultiWell());
// CModuleConsole::NewWorkflow(pWorkflowConsole,pWorkflowConsole->GetWorkflowWidget()->GetWorkflow()->GetName());
// dynamic_cast<CWellLogWorkflowDataModel*>(pWorkflowConsole->GetWorkflowWidget()->GetWorkflow())->SetCurrentModuleID(pWorkflowConsole->GetSelectedModuleClassId());
// WorkflowSceneManager *pWorkflowScene=dynamic_cast<WorkflowSceneManager *>(pWorkflowConsole->GetWorkflowWidget()->GetScene());
// if(!pWorkflowScene) return;
// if(pWorkflowConsole->g_mModuleParamers)
// {
// pWorkflowConsole->GetWorkflowControl()->SetActiveTemplate(pWorkflowConsole->g_mModuleParamers->m_pTemplateTree);
// pWorkflowScene->SetParameterEditor(pWorkflowConsole->g_mModuleParamers->m_pParameterEditor);
// }
// CVecWindow *pOSGWindow = dynamic_cast<CVecWindow*>(pWorkflowConsole->GetVSplitter()->widget(0));
// if(!pOSGWindow) return;
// QList<QUuid> wellList;
// foreach(PaiObject *pPai,pPrj->m_Selects)
// {
// wellList.push_back(pPai->GetID());
// }
// pOSGWindow->InitByWellIds(wellList);
// // pWorkflowConsole->GetWorkflowControl()->ApplyTemplate(pOSGWindow);
return;
}
void CModuleConsole::OpenWorkflow(QObject*pObject,QString strTabText)
{
// CWellLogWorkflowDataModel * pWorkflow = dynamic_cast<CWellLogWorkflowDataModel*>(((CModuleConsole*)pObject)->GetWorkflowWidget()->GetWorkflow());
// if(pWorkflow->IsSingleModuleMode())
// ((QWidget*)pObject)->setWindowIcon(QIcon( ::GetImagePath() + "icon/ModuleOne.png" ));
// else
// ((QWidget*)pObject)->setWindowIcon(QIcon( ::GetImagePath() + "workflow.png" ));
// if(pWorkflow->IsDefineMothodMode())
// ((QWidget*)pObject)->setWindowIcon(QIcon( ::GetImagePath() + "icon/Workflowtemplate.png" ));
// ::GetObjectEvent().OnOpenWorkflowWindow(pObject,strTabText);
}
void CModuleConsole::SaveWorkfow(QAction * pAction)
{
// connect(pAction, SIGNAL(triggered()), m_control, SLOT(slotExportWorkflows()));
}
void CModuleConsole::RunWorkflow(QAction * pAction)
{
// connect(pAction, SIGNAL(triggered()), m_control, SLOT(SlotRunWelllogModule()));
}
void CModuleConsole::SwitchMode()
{
// //切换模式时,判断当前工作流编辑区是否存在工作流模块
// CWellLogWorkflowDataModel * pWorkflow = dynamic_cast<CWellLogWorkflowDataModel*>(::GetWorkflowConsole()->GetWorkflowWidget()->GetWorkflow());
// WorkflowSceneManager *pWorkflowSceneManager = dynamic_cast<WorkflowSceneManager*>(::GetWorkflowConsole()->GetWorkflowWidget()->GetScene());
// if (pWorkflowSceneManager->getSingleMethodFlag())
// {
// ::GetWorkflowConsole()->GetWorkflowWidget()->setMinimumHeight(200);
// ::GetWorkflowConsole()->GetWorkflowWidget()->setMaximumHeight(2000);
// pWorkflowSceneManager->getSingleMethodFlag() = false;
// }
// else
// {
// ::GetWorkflowConsole()->GetWorkflowWidget()->setMinimumHeight(0);
// ::GetWorkflowConsole()->GetWorkflowWidget()->setMaximumHeight(0);
// pWorkflowSceneManager->getSingleMethodFlag() = true;
// }
}
void _slotOpenWorkflow(CVecViewCommand &viewCommand,QUuid id ,bool bChecked )
{
// if(!GetProject()||!GetProject()->m_pDataTree) return;
// CDataTree *pDataTree=(CDataTree *)GetProject()->m_pDataTree;
// CBaseObject * pObject = pDataTree->GetOSGObject(pDataTree->currentItem());
// if(!pObject) return;
// if(!pObject->GetVecWindowDocument()) return;
// CVecWindowDocument * pWindowDocument = dynamic_cast<CVecWindowDocument*>(pObject->GetVecWindowDocument());
// if(pWindowDocument->GetIsWorkflowWindow()) {
// CVecWindow *pWindow=pWindowDocument->GetVecWindow();
// ; if(pWindow) {
// QWidget *pW=dynamic_cast<QWidget *>(pWindow->parent());
// if(pW) {
// QWidget *ppw=pW->parentWidget();
// QWidget *pppp=ppw->parentWidget();
// CModuleConsole * pWorkflowConsole=dynamic_cast<CModuleConsole *>(pppp);
// if(pWorkflowConsole&&pWorkflowConsole->m_pTablWiget) {
// if(pWorkflowConsole->m_pTablWiget->indexOf(pWorkflowConsole)<0) {
// int nIndex = pWorkflowConsole->m_pTablWiget->addTab(pWorkflowConsole, QIcon( ::GetImagePath() + pWindowDocument->GetIconName()),pWindowDocument->GetName());
// pWorkflowConsole->m_pTablWiget->setCurrentIndex( nIndex );
// }
// }
// }
// }
// }
}
void _SlotSaveWorkflow(CVecViewCommand &viewCommand,QUuid /*e*/,bool /*bShow*/ )
{
// ::GetWorkflowConsole()->GetWorkflowControl()->slotExportWorkflows();
}
void _SlotRunWorkflow(CVecViewCommand &viewCommand,QUuid /*e*/,bool /*bShow*/ )
{
// CModuleConsole*pWorkflowConsole=NULL;//::GetWorkflowConsole();
// //if(!pWorkflowConsole)
// {
// CVecWindow *pWindow=CVecWindowCommand::GetCurrentWindow();
// QObject *p=pWindow->parent();
// QObject *pp=NULL;
// if(p) pp=p->parent();
// pWorkflowConsole=dynamic_cast<CModuleConsole*>(pp);
// SetWorkflowConsole(pWorkflowConsole);
// }
// if(!pWorkflowConsole) return;
// pWorkflowConsole->RunWorkFlow();
}
void _SlotApplyTemplate(CVecViewCommand &viewCommand,QUuid /*e*/,bool /*bShow*/ )
{
// QString strTplFilter="单井图文件(*.tpl);;多井图文件(*.mpl)";
// QString strSelectedFileName=QFileDialog::getOpenFileName(NULL,QObject::tr("选择模板"),::GetTemplatePath()+"well",strTplFilter);
// if(strSelectedFileName.trimmed()!="")
// {
// CVecWindow * pVecWindow = dynamic_cast<CVecWindow*>(::GetWorkflowConsole()->GetVSplitter()->widget(0));
// CVecWindowDocument * doc = pVecWindow->GetWindowDocument();
// if(doc != NULL)
// {
// doc->ApplyTemplate( strSelectedFileName );
// pVecWindow->GetSceneManager()->UpdateAll();
// }
// }
}
void _SlotSaveAsTemplate(CVecViewCommand &viewCommand,QUuid /*e*/,bool /*bShow*/)
{
// ::GetWorkflowConsole()->GetWorkflowControl()->slotSaveAsTemplate();
}
void CModuleConsole::slotModuleOpenOrClose()
// CVecViewCommand &viewCommand,QUuid viewCommandID,bool bChecked )
{
SetWorkflowConsole(this);
QList<int> sizes;
if(GetVSplitter()->widget(1)->width()) {
sizes <<width()<<0;
}
else {
sizes <<width()-450<<450;
}
GetVSplitter()->setSizes(sizes);//默认隐藏左侧多井图窗口
}
BEGIN_REGISTER_VIEWCOMMAND()
VIEW_COMMAND_ITEM( GetViewCmdID_CreateNewSingleMethodWorkflow(),"wellsectionwindow.png", L"可视解释", false, false,"",_slotCreateNewWorkflow),
VIEW_COMMAND_ITEM( GetViewCmdID_NewMultiMethodWorkflow(),"multwellsectionwindow.png", L"多井分析", false, false,"",_slotCreateNewMultWells),
// VIEW_COMMAND_ITEM( GetViewCmdID_CreateParamer(),"icon/ModuleOne.png", L"处理方法", false, false,"",slotModuleOpenOrClose),
VIEW_COMMAND_ITEM( GetViewCmdID_OpenWorkflow(),"workflow.png", L"打开", false, false,"",_slotOpenWorkflow),
VIEW_COMMAND_ITEM( GetViewCmdID_SaveWorkflow(), "saveproject.png" , L"保存",false,false,"",_SlotSaveWorkflow ),
VIEW_COMMAND_ITEM( GetViewCmdID_RunWorkflow(), "run.png" , L"处理",false,false,"",_SlotRunWorkflow ),
VIEW_COMMAND_ITEM( GetViewCmdID_RunCurrentWorkflow(), "run.png" , L"处理当前段",false,false,"",_SlotRunWorkflow ),
VIEW_COMMAND_ITEM( GetViewCmdID_ApplyTemplate(),"icon/MethodTemplate.png",L"打开绘图模板",false,false,"",_SlotApplyTemplate ),
VIEW_COMMAND_ITEM( GetViewCmdID_SaveAsTemplate(),"icon/SaveAsTemplate.png",L"存为组合方法",false,false,"",_SlotSaveAsTemplate )
END_REGISTER_VIEWCOMMAND();
END_OSGGRAPHICS_NAMESPACE