logplus/ModuleConsole/src/LogModuleConsole.cpp
2026-01-16 17:18:41 +08:00

609 lines
24 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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