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/mGui/mGuiSysManager/iWxWelcome.h

180 lines
4.4 KiB
C++

#pragma once
#include "iDlgBase.h"
#include "mModuleDefines.h"
#include "mGuiSysManager_global.h"
class QListWidgetItem;
class ZxDataProject;
class iRibbonXmlGroup;
namespace Ui {
class iWxWelcome;
}
// 选择并打开项目对话框
class M_GUI_SYSMANAGER_EXPORT iWxWelcome : public iDlgBase
{
Q_OBJECT
public:
enum ButtonMode
{
BM_Active = 0, //当前选择的状态
BM_LastActive, //上次选用的状态
BM_Inactive, //未选择
BM_Others, //比如More按钮
BM_Unknown
};
explicit iWxWelcome(MainWindowOption o, QWidget *parent = 0);
~iWxWelcome();
// 初始化
virtual void initUI();
// 获取项目路径相关
QString getProjectName(); //项目名称
QString getProjDir(QString sProjName = ""); //项目路径
QString getProjParentDir(); //项目所在的上一级路径
QString getProjFullPath(QString sProjName = ""); //全
// 按钮的状态
void refrsheButtonStates();
// 调用模式
void runProjNew();
bool runProjOpen();
bool _runProjOpen(QString sProjName);
void runProjSketch();
void runProjSaveAs();
void runProjDel(QString sProjName = "");
bool redirectAndOpen(QString sDir, QString sProjName, bool bDbMode);
// 默认工作路径
static QString getLastPrjWorkDir();
// 左侧按钮相关
void setXmlFileGroup(iRibbonXmlGroup* p);
void changeLeft2Mode(bool bReorgUi = true);
signals:
// 判断是否enable
void sigBtnEnabled(QString sName, int nID, bool& bEnabled);
// 选定后即将打开
void sigProjSelected(QString sDir, QString sProj, bool& bOk);
// 获取当前打开的Project的全路径
void sigGetCurProjFullpath(QString& s);
// 删除工区后的最近打开项目的刷新
void sigProjDeleted(QString sPath);
// 获取当前的Project
void sigGetCurProject(ZxDataProject*&);
// 切换视窗
void sigChange2Main();
// 命令传递
void sigAction2Main(QString sAction, bool& bExecuted);
protected:
// 初始化一些配置参数
void initSbCtrls();
// 设置左侧按钮
void initLayoutLeft();
// 设置最近项目Groupbox
void initGbxCurrentProjs();
void changeProjBtnMode(QPushButton* pBtn, ButtonMode bm);
void activeProjBtn(QPushButton* pBtn);
// 获取井数
int getWellNumOfProj(QString& sUrl);
// 默认工作路径
QStringList getRecentDirs();
void changeRecentDirs(QString sDir);
// 刷新相应列表
void refreshCurrentProjs(); //当前目录下所有项目
void refreshRecentProjs(); //最近打开的项目
void refreshRecentDirs(); //最近打开的目录
QStringList getProjBaseNames(QString sDir);
QString getProjTips(QString sBaseName);
bool removeFromRecentProjects(QString sUrl);
bool removeFromRecentDirs(QString sDir);
// 重新布局当前目录的所有的项目
void relayoutCurrentProjs();
// 更新系统配置
void copySysConfigs(QString& sUrl);
private slots:
// 左侧按钮统一响应
void slotLeftBtnTriggered();
// 当前目录下的工区响应
void slotProjBtnTriggered();
// 右键菜单(比如删除)
void slotPromptContextMenu(const QPoint &pos);
// 右键菜单响应
void slotMenuActionTriggered();
// 路径
void on_btnBrowseDir_clicked();
// 刷新
void on_btnRefreshCurProjects_clicked();
void on_btnRefreshProjects_clicked();
void on_btnRefreshDirs_clicked();
// 路径Chaged
void on_tbxDir_textChanged(const QString &arg1);
// 当前项目切换
void on_listWxRecentProjs_itemDoubleClicked(QListWidgetItem *item);
void on_listWxRecentDirs_itemDoubleClicked(QListWidgetItem *item);
// Home
void on_btnHome_clicked();
// 最近个数控制
void on_cbxRecentNum_clicked();
void on_sbRecentNum_valueChanged(int arg1);
// 布局个数
void on_sbMaxRow_valueChanged(int arg1);
void on_sbMaxCol_valueChanged(int arg1);
void on_cbxSortBy_currentIndexChanged(int index);
private:
Ui::iWxWelcome *ui;
QGridLayout* m_pGridLayout;
QMenu* m_pMenu;
QStringList m_listRencentDirs;
// 左侧按钮相关
MainWindowOption m_oMwo;
iRibbonXmlGroup* m_pXmlFileGroup;
QVector<QPushButton*> m_vecLeftBtns;
QVector<QFrame*> m_vecLeftLines;
QPushButton* m_pBtnCurProj;
QMap<QPushButton*, QLabel*> m_mapBtnLbls;
};