/* * @file WorkflowWidget.cpp */ #include "WorkflowWidget.h" #include #include #include #include #include #include #include #include #include // #include "ObjectModelService.h" // #include "IProject.h" // #include "PluginManager.h" // #include "PaiWorkflowDataModel.h" // #include "GeneralWorkflowScene.h" #include "WorkflowGraphicsView.h" #include "WorkflowConst.h" // #include "SaveHelper.h" // using namespace pai::gui; using namespace pai::objectmodel; using namespace pai::graphics2d; WorkflowWidget::WorkflowWidget(pai::objectmodel::PaiWorkflowDataModel *pWorkflow, QWidget *pParent, bool jobRelated) : QWidget(pParent) { m_JobRelated = jobRelated; m_ID = QUuid::createUuid(); m_pWorkflow = pWorkflow; QVBoxLayout * v_lyt = new QVBoxLayout(); v_lyt->setContentsMargins(0, 0, 0, 0); v_lyt->setSpacing(0); m_pSceneManager = NULL; // m_pGraphicsView = new pai::graphics2d::WorkflowGraphicsView(NULL, this); // v_lyt->addWidget(m_pGraphicsView); this->setLayout(v_lyt); m_pSelectedExtension.clear(); } WorkflowWidget::~WorkflowWidget() { // if (m_pWorkflow != NULL) // { // GetObjectModelService()->GetObjectLockManager()->UnlockObject(m_pWorkflow->GetDBID(), m_LockID); // } //defect 32589 先释放场景,才能释放m_pWorkflow,不然可能导致崩溃 if(m_pSceneManager) { delete m_pSceneManager; m_pSceneManager = NULL; } // //对于可编辑工作流,需要自己维护 // if(!m_JobRelated && m_pWorkflow &&!(m_pWorkflow->IsTemplate())) // { // delete m_pWorkflow; // m_pWorkflow = NULL; // } } QUuid WorkflowWidget::GetID() const { return m_ID; } void WorkflowWidget::EnableMultiSelect(bool enable) { // if(m_pSceneManager) // { // m_pSceneManager->EnableMultiSelect(m_pGraphicsView,enable); // } } // void WorkflowWidget::SetWorkflow(pai::objectmodel::PaiWorkflowDataModel *wf, bool bNeedReload, bool bJobRelated) // { // //清空场景 // if(m_pSceneManager) // { // m_pSceneManager->Clear(); // } // //更新工作流模型 // if (wf != NULL && bNeedReload == true) // { // wf->ReloadDataModuel(); // } // if (m_pWorkflow != NULL && !m_LockID.isNull()) // { // GetObjectModelService()->GetObjectLockManager()->UnlockObject(m_pWorkflow->GetDBID(), m_LockID); // } // if(!bJobRelated) // { // //如果当前的工作流为空defect 32742 // if(!m_pWorkflow) // { // //传过来的wf不是数据树上的 // if(wf && !wf->GetParent()) // { // m_pWorkflow = wf; // } // } // else // { // if(wf) // { // //传过来的wf不是数据树上的 // if(!wf->GetParent()) // { // if(wf != m_pWorkflow) // { // //当对象不是工作流模板时,释放之前的m_pWorkflow,defact 37228 // if(!m_pWorkflow->IsTemplate()) // { // delete m_pWorkflow; // m_pWorkflow = NULL; // } // } // //赋值新的workflow // m_pWorkflow = wf; // } // else // { // m_pWorkflow->SetDBID(wf->GetDBID()); // m_pWorkflow->SetID(wf->GetID()); // m_pWorkflow->ReloadDataModuel(); // //可以发送事件 // m_pWorkflow->SetEventEnabled(true); // m_pWorkflow->SetModify(false); // } // } // else // { // //当对象不是工作流模板时,释放之前的m_pWorkflow,defact 37228 // if(!m_pWorkflow->IsTemplate()) // { // delete m_pWorkflow; // m_pWorkflow = NULL; // } // } // } // } // else // { // m_pWorkflow = wf; // } // if (m_pWorkflow != NULL) // { // if (!bJobRelated) // { // m_LockID = GetObjectModelService()->GetObjectLockManager()->LockObject(m_pWorkflow->GetDBID(), // PaiObjectLock(m_pWorkflow->GetDBID(), PaiObjectLock::EDIT_LOCK, tr("Workflow is editting"))); // } // //重置模块图元 // if(m_pSceneManager != NULL) // { // m_pSceneManager->AddWorkflow(m_pWorkflow, bJobRelated); // } // } // if (bNeedReload == true) // { // if(m_pSceneManager != NULL) // { // m_pSceneManager->ExpandSceneRect(); // } // } // } pai::graphics2d::GeneralWorkflowScene* WorkflowWidget::GetScene() const { return m_pSceneManager; } pai::objectmodel::PaiWorkflowDataModel* WorkflowWidget::GetWorkflow() const { return m_pWorkflow; } QGraphicsView * WorkflowWidget::GetGrapicsView() const { return m_pGraphicsView; } void WorkflowWidget::mouseReleaseEvent(QMouseEvent * e) { if (e->button() == Qt::RightButton) { QMenu menu; menu.addAction("SeisView the input data", this, SLOT(slotSeisViewTheInputData())); menu.exec(QCursor::pos()); } } void WorkflowWidget::SetJobPrgsInfo() { // if(m_pSceneManager != NULL) // { // m_pSceneManager->SetJobPrgsInfo(); // } } void WorkflowWidget::SetInteractive(bool bAllowed) { // pai::graphics2d::WorkflowGraphicsView * pWorkflwoGraphicsView = dynamic_cast(m_pGraphicsView); // if (pWorkflwoGraphicsView != NULL) // pWorkflwoGraphicsView->SetScenceReadOnly(!bAllowed); } void WorkflowWidget::SetSelectedExtension(const QString &areaName, const QString extensionID) { m_pSelectedExtension.remove(areaName); m_pSelectedExtension.insert(areaName, extensionID); } void WorkflowWidget::GetSelectedExtensions(QMap &selectedMap) { selectedMap = m_pSelectedExtension; } void WorkflowWidget::ClearSelectedExtensions() { m_pSelectedExtension.clear(); } void WorkflowWidget::UpdateWorkflowLock(long long dbid) { // if (m_pWorkflow != NULL && !m_LockID.isNull()) // { // //if (GetObjectModelService()->GetObjectLockManager()->UnlockObject(dbid, m_LockID)) // //TODO aiya validate this // GetObjectModelService()->GetObjectLockManager()->UnlockObject(dbid, m_LockID); // { // m_LockID = GetObjectModelService()->GetObjectLockManager()->LockObject(m_pWorkflow->GetDBID(), // PaiObjectLock(m_pWorkflow->GetDBID(), PaiObjectLock::EDIT_LOCK, tr("Workflow is editting"))); // } // } } void WorkflowWidget::SetScene(pai::graphics2d::GeneralWorkflowScene* pScene) { if(!pScene) { return; } //目前一个GraphicsView对应一个scene //如果设置过就不再设置 // if(!m_pSceneManager) // { // m_pSceneManager = pScene; // m_pGraphicsView->setScene(m_pSceneManager); // //m_pSceneManager->SetSubToolBarName(m_ID + g_szStyleToolBarName); // SetWorkflow(m_pWorkflow, false, m_JobRelated); // m_pSceneManager->SetWorkflowWidget(this); // } }