|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "iWxToolBar.h"
|
|
|
|
|
|
|
|
|
|
|
|
namespace Ui {
|
|
|
|
|
|
class iWxRibbon;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
class QMenu;
|
|
|
|
|
|
|
|
|
|
|
|
class I_GUI_RIBBON_EXPORT iWxRibbon : public iWxToolBar
|
|
|
|
|
|
{
|
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
// 如果自行传入sXmlName(文件名,不带后缀),且bToolbarExt为true,则为ToolBar扩展模式
|
|
|
|
|
|
explicit iWxRibbon(QString sXmlName = "", \
|
|
|
|
|
|
QWidget *parent = 0);
|
|
|
|
|
|
~iWxRibbon();
|
|
|
|
|
|
|
|
|
|
|
|
void initUI();
|
|
|
|
|
|
|
|
|
|
|
|
// 类Wps文件模式定制
|
|
|
|
|
|
void setWpsLike(bool b);
|
|
|
|
|
|
|
|
|
|
|
|
// 返回部分指针变量
|
|
|
|
|
|
QVector<QAction*>* getMenuActions();
|
|
|
|
|
|
|
|
|
|
|
|
//ZXF202409得到按钮(为了更新按钮的子项例如窗口个数管理)
|
|
|
|
|
|
QWidget* getSubCtrl(QString sID);
|
|
|
|
|
|
|
|
|
|
|
|
//更新按钮(主要是子项)
|
|
|
|
|
|
bool refreshSubCtrl(QString sID, QStringList listSubWnds, QVector<bool> vecShows);
|
|
|
|
|
|
|
|
|
|
|
|
// 最近打开
|
|
|
|
|
|
bool refreshRecentProjects(QString& sPath); //最近打开
|
|
|
|
|
|
bool fillUIOfRecentProjects(); //更新最近打开菜单项
|
|
|
|
|
|
bool removeFromRecentProjects(QString sUrl);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
// paint
|
|
|
|
|
|
virtual void paintEvent(QPaintEvent *);
|
|
|
|
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
|
|
|
|
|
|
|
|
void on_tabWxMain_tabCloseRequested(int index);
|
|
|
|
|
|
void on_tabWxMain_currentChanged(int index);
|
|
|
|
|
|
void on_tabWxMain_customContextMenuRequested(const QPoint &pos);
|
|
|
|
|
|
|
|
|
|
|
|
void slotMenuItemClicked(); //文件菜单Item
|
|
|
|
|
|
|
|
|
|
|
|
void slotTabItemDoubleClicked(int n);
|
|
|
|
|
|
void slotTabItemActivated(int n);
|
|
|
|
|
|
|
|
|
|
|
|
void slotFileClicked(); //File
|
|
|
|
|
|
|
|
|
|
|
|
void slotOpentRecent();
|
|
|
|
|
|
|
|
|
|
|
|
signals:
|
|
|
|
|
|
|
|
|
|
|
|
/// @title File按钮信号触发
|
|
|
|
|
|
void sigRibbonFileActivated();
|
|
|
|
|
|
|
|
|
|
|
|
/// @title Ribbon文件菜单信号触发
|
|
|
|
|
|
/// @param sID菜单ID
|
|
|
|
|
|
/// @param sName菜单名称
|
|
|
|
|
|
void sigRibbonFileMenuClicked(QString sID, QString sName);
|
|
|
|
|
|
|
|
|
|
|
|
/// @title 触发信号由外界处理最近文档
|
|
|
|
|
|
void sigFileRecentActivated(QString sUrl);
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 某一Tab被激活,指的Ribbon最顶级的Tab,比如,数据管理、数据编辑、处理解释等等
|
|
|
|
|
|
/// @param pTab
|
|
|
|
|
|
void sigRibbonTabActivated(iRibbonXmlTab* pTab);
|
|
|
|
|
|
|
|
|
|
|
|
// 20190425
|
|
|
|
|
|
// 允许外界对FileMenu进行调整
|
|
|
|
|
|
// 触发此信号时,pMenu已经填入xml中配置的菜单项
|
|
|
|
|
|
void sigAdjustFileMenu(QMenu*& pMenu);
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
|
|
// load Xml And Ini
|
|
|
|
|
|
void loadIniInfos();
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化
|
|
|
|
|
|
void initUI_TabWx();
|
|
|
|
|
|
void initUI_Menu(QMenu*& pMenu);
|
|
|
|
|
|
|
|
|
|
|
|
// 切换正常模式和简缩模式
|
|
|
|
|
|
virtual void swapTabMode(); //
|
|
|
|
|
|
|
|
|
|
|
|
// 绘制Logo
|
|
|
|
|
|
void drawAppInfo(QPainter* painter);
|
|
|
|
|
|
|
|
|
|
|
|
// 获取当前Tab页中的所有Group的宽度
|
|
|
|
|
|
int getCurTabValidWidth();
|
|
|
|
|
|
|
|
|
|
|
|
// 虚拟按钮的响应
|
|
|
|
|
|
// 如果返回true,则不再触发信号,否则触发
|
|
|
|
|
|
virtual bool runByVirtualBtn();
|
|
|
|
|
|
|
|
|
|
|
|
virtual bool dealwithCmdSubBy(iRibbonXmlCmd* pCmd, QToolButton*& pBtn);
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
|
|
Ui::iWxRibbon *ui;
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
// 简缩模式相关
|
|
|
|
|
|
bool m_bSimple;
|
|
|
|
|
|
int m_nLastSel;
|
|
|
|
|
|
|
|
|
|
|
|
// 类Wps文件模式定制
|
|
|
|
|
|
bool m_bWpsLike;
|
|
|
|
|
|
|
|
|
|
|
|
// 模块相关,从ini中读取出来
|
|
|
|
|
|
QString m_sIcon;
|
|
|
|
|
|
QString m_sAppDescCN;
|
|
|
|
|
|
QString m_sAppDescEN;
|
|
|
|
|
|
|
|
|
|
|
|
// 所有的控件
|
|
|
|
|
|
QVector<QAction*> m_vecMenuActions;
|
|
|
|
|
|
|
|
|
|
|
|
// 最近打开项目
|
|
|
|
|
|
enum { MaxRecentProjects = 5 };
|
|
|
|
|
|
QAction* m_oRecentProjectActs[MaxRecentProjects];
|
|
|
|
|
|
QStringList m_listRencentProjects;
|
|
|
|
|
|
QMenu* m_pMenuRecent;
|
|
|
|
|
|
};
|