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

193 lines
5.0 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 "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();
// 当新建/删除井或者成果时,刷新
// 针对当前打开的工区
void freshWellRstAbouts(bool bWell, \
QStringList& listTags, \
TreeNodeCmd o);
// 获取项目路径相关
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 bDbClickMode);
bool simuBtnMore(QPushButton* pBtn, QString sDir, QString sProjName, bool bDbClickMode);
// 默认工作路径
static QString getLastPrjWorkDir();
// 左侧按钮相关
void setXmlFileGroup(iRibbonXmlGroup* p);
void changeLeft2Mode(bool bReorgUi = true);
// 这是由主菜单Ribbon触发的按钮,比如新建项目、打开项目,需要做的一些事情
// MainFrame可能已经做过一些事情了,在此之后,WelCome需要做什么,比如刷新状态等
bool dealwithRibbons(QString sAction) { return false; }
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;
QPushButton* m_pBtnMore;
QMap<QPushButton*, QLabel*> m_mapBtnLbls;
};