You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWATI/Include/iBase/iPlugin/ZxMainWindow.h

153 lines
5.5 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#pragma once
#include <QMainWindow>
#include "iPlugin_global.h"
class iJobRun;
class iSubWnd;
class iSubWndBaseAF;
class ZxObjWmPoint;
class ZxTabWidget;
class ZxMdiSubWindow;
class iWxRunOptionIPR;
class iDockBaseWx;
class TreeWxMain;
class iWxDesign;
// 为外部引用xMainWindow主窗体部分接口而单独封装
// 原本想通过虚接口类实现但由于QObject缘故虚接口类
// 不便实现信号槽机制,故只能封装该类进行实现
class I_PLUGIN_EXPORT ZxMainWindow : public QMainWindow
{
public:
ZxMainWindow(QWidget* parent = 0);
~ZxMainWindow();
public:
/// @brief 检验是否具有正式授权
/// @param bPromptLicenseDlg 在不具备授权的时候,是否弹出授权对话框
virtual bool checkLicensed(bool bPromptLicenseDlg = false) = 0;
/// @brief 返回当前所有JobRun的数组指针
virtual QVector<iJobRun*>* getVecJoRunPtrs() = 0;
/// @brief 返回iWxRunOptionIPR窗体指针该函数接口为权宜之计慎用后续可能需要删除
virtual iWxRunOptionIPR* getWxIprOptionPtr() = 0;
// 左侧工区树
// enum DockTreeMode
// {
// DTM_Da = 0, //数据
// DTM_Jb = 1, //Jobs
// DTM_Rs = 2 //成果
// };
/// @brief 获取左侧DockWx指针
/// @param n (in) 0数据树 1Jobs树 2成果树
/// @note 注1由于宏定义及依赖关系问题暂时用int而非enum枚举作为参数类型
/// 注2对于WTAI来讲目前Dock其实均为子类型iDockWellExplorer
virtual iDockBaseWx* getLeftDockWx(int n) = 0;
/// @brief 获取左侧树型控件指针
/// @param n (in) 0数据树 1Jobs树 2成果树
/// @note 注1由于宏定义及依赖关系问题暂时用int而非enum枚举作为参数类型
/// 注2获取指针之后可以根据需要各自转换为如下三种子类类型
/// TreeWxMainDa* / TreeWxMainJb* / TreeWxMainRs*
virtual TreeWxMain* getLeftTreeWx(int n) = 0;
/// @brief 获取指定窗体Wnd对应的TabWx
/// @param p某窗体
virtual ZxTabWidget* getTabWxOfSubWnd(iSubWnd* p) = 0;
/// @brief 获取当前Mdi对应的TabWx
/// @param p某MdiSubWindow如果p为空则是当前激活的
virtual ZxTabWidget* getTabWxOf(ZxMdiSubWindow* p = NULL) = 0;
/// @brief 获取当前MdiChild
virtual ZxMdiSubWindow* getCurMdiChild() = 0;
/// @brief 获取当前TabWidget
virtual ZxTabWidget* getCurTabWx() = 0;
/// @brief 获取当前SubWnd
virtual iSubWnd* getCurSubWnd() = 0;
/// @brief 其它方创建的DockWx与主窗口显示Detach通常在析构时
virtual bool detachOuterDockWx(iDockBaseWx* pDockWx) = 0;
public slots:
/// @brief 主窗口创建一个新的窗体,由iWxRunOptionStd/iWxRunOptionIPR之后的窗体触发
/// @param p (out)待创建的指针
/// @note 举例:流动段选择确定之后,右键弹出,创建 下一个 流动段分析窗口
virtual void slotCreateNextSubWnd(iSubWndBaseAF*& p) = 0;
/// @brief 激活,由iWxRunOptionStd/iWxIprRunOptio之后的窗体触发
/// @param p (in)待激活窗体
virtual void slotActivateSubWnd(iSubWnd*& p) = 0;
/// @brief 当压力流量数据更改时触发主要是PF一旦保存之后
/// 提供给其它相关的SubWnd一种刷新机制
virtual void slotCacheDataCodePF(QString sCode) = 0;
/// @brief 成果保存时申请创建RstWnd
/// @param (out) b:是否已经成功创建
/// @note:①如果成功创建则会同步生成RstUtils等成果必须内容
/// ②如果成功创建则会把创建结果设置给SubWnd即信号触发者
virtual void slotCreateRstWndForSubWnd(bool& b) = 0;
/// @brief 在外部触发关闭或者显示左侧工区数据树全部所有的Dock
virtual void slotLeftTreeDocksVisible(bool bVisible) = 0;
/// @brief 刷新Ribbon按钮状态这是更新所有按钮
/// @param list可以为id也可以为name
/// @note 如果list为空则指的是Ribbon全部否则仅仅刷新指定的Btn
virtual void slotFreshRnStates(QStringList list) = 0;
/// @brief 获取井位图信息
virtual void slotGetWmInfos(QVector<ZxObjWmPoint*>&) = 0;
/// @brief Lpr点收集了,右键响应
virtual void slotLprPointPQ(QVector<QPointF>& vec) = 0;
/// @brief 获取当前主窗口有多少窗口
virtual void slotGetAllWnds(QMap<QString, iSubWnd*>& map, ZxTabWidget* pTabWx) = 0;
/// @brief 刷新井相关
virtual void slotFreshWellBasics() = 0;
/// @brief SubWndData表格右键删除时触发
virtual void slotSwdDataDelObjs(QStringList& listKeys, QString& sTable, QString& sError) = 0;
/// @brief 控制所在的MDI视图
virtual void slotMdiChildShow(int) = 0;
/// @brief 获取所有MDI
virtual void slotGetAllMdis(QVector<ZxMdiSubWindow*>&) = 0;
/// @brief 在SubWnd中创建Dock并且显示至主窗体之中,该Dock由SubWnd进行管理
/// @param pDockWx (in) Dock指针
/// @param areaDefault(in) 默认布局区域
virtual void slotAppendDock2Main(iDockBaseWx* pDockWx, \
Qt::DockWidgetArea areaDefault = Qt::LeftDockWidgetArea) = 0;
public slots:
// 线程控制
/// @brief 在算法执行时显示隐藏进度条相关
virtual void slotShowProgressAbout(bool bVisible) = 0;
/// @brief 线程暂停
virtual void slotThreadPause() = 0;
/// @brief 线程结束
virtual void slotThreadQuit() = 0;
signals:
};