609 lines
24 KiB
C++
609 lines
24 KiB
C++
#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
|