add HMI dynamic property setting
This commit is contained in:
parent
789ba990d4
commit
4203022e3a
|
|
@ -62,6 +62,7 @@ set(H_HEADER_FILES
|
||||||
include/enhancedToolBar.h
|
include/enhancedToolBar.h
|
||||||
include/configToolBar.h
|
include/configToolBar.h
|
||||||
include/draggableToolButton.h
|
include/draggableToolButton.h
|
||||||
|
include/runtimeDialog.h
|
||||||
|
|
||||||
common/include/tools.h
|
common/include/tools.h
|
||||||
common/include/httpInterface.h
|
common/include/httpInterface.h
|
||||||
|
|
@ -104,6 +105,7 @@ set(CPP_SOURCE_FILES
|
||||||
source/enhancedToolBar.cpp
|
source/enhancedToolBar.cpp
|
||||||
source/configToolBar.cpp
|
source/configToolBar.cpp
|
||||||
source/draggableToolButton.cpp
|
source/draggableToolButton.cpp
|
||||||
|
source/runtimeDialog.cpp
|
||||||
|
|
||||||
common/source/httpInterface.cpp
|
common/source/httpInterface.cpp
|
||||||
common/source/tools.cpp
|
common/source/tools.cpp
|
||||||
|
|
|
||||||
|
|
@ -49,8 +49,10 @@ set(DIAGRAMCAVAS_HEADER_FILES
|
||||||
include/bayMeasureDlg.h
|
include/bayMeasureDlg.h
|
||||||
include/basePropertyProxy.h
|
include/basePropertyProxy.h
|
||||||
include/basePannelPropertyProxy.h
|
include/basePannelPropertyProxy.h
|
||||||
|
include/baseItemPropertyProxy.h
|
||||||
include/dataSourceDlg.h
|
include/dataSourceDlg.h
|
||||||
include/createHMIdlg.h
|
include/createHMIdlg.h
|
||||||
|
include/propertyDialog.h
|
||||||
include/graphicsDataModel/baseModel.h
|
include/graphicsDataModel/baseModel.h
|
||||||
include/graphicsDataModel/fixedPortsModel.h
|
include/graphicsDataModel/fixedPortsModel.h
|
||||||
include/graphicsItem/graphicsItemGroup.h
|
include/graphicsItem/graphicsItemGroup.h
|
||||||
|
|
@ -179,8 +181,10 @@ set(DIAGRAMCAVAS_SOURCE_FILES
|
||||||
source/bayMeasureDlg.cpp
|
source/bayMeasureDlg.cpp
|
||||||
source/basePropertyProxy.cpp
|
source/basePropertyProxy.cpp
|
||||||
source/basePannelPropertyProxy.cpp
|
source/basePannelPropertyProxy.cpp
|
||||||
|
source/baseItemPropertyProxy.cpp
|
||||||
source/dataSourceDlg.cpp
|
source/dataSourceDlg.cpp
|
||||||
source/createHMIdlg.cpp
|
source/createHMIdlg.cpp
|
||||||
|
source/propertyDialog.cpp
|
||||||
source/graphicsDataModel/baseModel.cpp
|
source/graphicsDataModel/baseModel.cpp
|
||||||
source/graphicsDataModel/fixedPortsModel.cpp
|
source/graphicsDataModel/fixedPortsModel.cpp
|
||||||
source/graphicsItem/graphicsItemGroup.cpp
|
source/graphicsItem/graphicsItemGroup.cpp
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
#ifndef BASEITEMPROPERTYPROXY_H
|
||||||
|
#define BASEITEMPROPERTYPROXY_H
|
||||||
|
/****************************
|
||||||
|
* item属性代理基类
|
||||||
|
* *************************/
|
||||||
|
#include <QUuid>
|
||||||
|
#include "basePropertyProxy.h"
|
||||||
|
|
||||||
|
class GraphicsFunctionModelItem;
|
||||||
|
class FixedPortsModel;
|
||||||
|
|
||||||
|
class BaseItemPropertyProxy : public BasePropertyProxy {
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
Q_PROPERTY(QString Name READ getName WRITE setName)
|
||||||
|
Q_PROPERTY(QMap<QString,double> Property READ getMap WRITE setMap)
|
||||||
|
public:
|
||||||
|
BaseItemPropertyProxy(GraphicsFunctionModelItem*);
|
||||||
|
~BaseItemPropertyProxy();
|
||||||
|
public:
|
||||||
|
virtual QString getName() const;
|
||||||
|
virtual void setName(QString);
|
||||||
|
virtual QMap<QString,double> getMap();
|
||||||
|
virtual void setMap(QMap<QString,double>);
|
||||||
|
protected:
|
||||||
|
GraphicsFunctionModelItem* _pItem;
|
||||||
|
FixedPortsModel* _pControl;
|
||||||
|
};
|
||||||
|
#endif //BASEITEMPROPERTYPROXY_H
|
||||||
|
|
@ -30,6 +30,8 @@ class DataSourceDlg;
|
||||||
class CreateHMIdlg;
|
class CreateHMIdlg;
|
||||||
class PluginManager;
|
class PluginManager;
|
||||||
class PluginItemFactory;
|
class PluginItemFactory;
|
||||||
|
class QDetailsView;
|
||||||
|
class PropertyDlg;
|
||||||
|
|
||||||
class DIAGRAM_DESIGNER_PUBLIC DiagramCavas : public QMdiArea
|
class DIAGRAM_DESIGNER_PUBLIC DiagramCavas : public QMdiArea
|
||||||
{
|
{
|
||||||
|
|
@ -49,6 +51,10 @@ public:
|
||||||
QMap<QString,PluginTypeInfo> getPluginShapeInfo() {return m_pluginInfo;}
|
QMap<QString,PluginTypeInfo> getPluginShapeInfo() {return m_pluginInfo;}
|
||||||
public:
|
public:
|
||||||
void initial();
|
void initial();
|
||||||
|
void setCurMode(int nMode);
|
||||||
|
int getCurMode(){return _curMode;}
|
||||||
|
void showPropertyDlg(); //加载运行时属性栏
|
||||||
|
void hidePropertyDlg();
|
||||||
signals:
|
signals:
|
||||||
void prepareUpdateItems(QList<HierarchyItem>,bool refresh);
|
void prepareUpdateItems(QList<HierarchyItem>,bool refresh);
|
||||||
void prepareSelectItems(QList<HierarchyItem>);
|
void prepareSelectItems(QList<HierarchyItem>);
|
||||||
|
|
@ -122,6 +128,8 @@ private:
|
||||||
|
|
||||||
bool loadPluginConfig(const QString&); //载入插件配置文件
|
bool loadPluginConfig(const QString&); //载入插件配置文件
|
||||||
bool parsePluginConfig(const QJsonObject& root); //解析插件配置文件
|
bool parsePluginConfig(const QJsonObject& root); //解析插件配置文件
|
||||||
|
|
||||||
|
void addShortcuts(); //快捷键
|
||||||
private:
|
private:
|
||||||
QMap<QString,QPair<MonitorPanel*,QMdiSubWindow*>> m_mapMonitorPanel; //监控时panel
|
QMap<QString,QPair<MonitorPanel*,QMdiSubWindow*>> m_mapMonitorPanel; //监控时panel
|
||||||
int _pageIndex;
|
int _pageIndex;
|
||||||
|
|
@ -133,10 +141,13 @@ private:
|
||||||
StructDataPreviewDlg* _structDataPreviewDlg;
|
StructDataPreviewDlg* _structDataPreviewDlg;
|
||||||
ExtraPropertyManager* _extraPropertyManager;
|
ExtraPropertyManager* _extraPropertyManager;
|
||||||
CreateHMIdlg* _createHMIDlg;
|
CreateHMIdlg* _createHMIDlg;
|
||||||
|
QDetailsView* _pPropertyPage; //属性页
|
||||||
|
PropertyDlg* _pPropertyDlg; //存放属性页dlg
|
||||||
|
|
||||||
PluginManager* m_pluginManager; //插件管理类
|
PluginManager* m_pluginManager; //插件管理类
|
||||||
PluginItemFactory* m_itemFactory; //插件图元工厂类
|
PluginItemFactory* m_itemFactory; //插件图元工厂类
|
||||||
QMap<QString,PluginTypeInfo> m_pluginInfo; //插件对照信息
|
QMap<QString,PluginTypeInfo> m_pluginInfo; //插件对照信息
|
||||||
|
int _curMode = 0; //当前运行模式 0编辑1运行
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
#include "graphicsItem/graphicsBaseItem.h"
|
#include "graphicsItem/graphicsBaseItem.h"
|
||||||
|
|
||||||
|
class BaseItemPropertyProxy;
|
||||||
|
|
||||||
class GraphicsFunctionModelItem : public GraphicsProjectModelItem //功能模item
|
class GraphicsFunctionModelItem : public GraphicsProjectModelItem //功能模item
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
@ -12,10 +14,15 @@ public:
|
||||||
GraphicsFunctionModelItem(QGraphicsItem *parent);
|
GraphicsFunctionModelItem(QGraphicsItem *parent);
|
||||||
virtual ~GraphicsFunctionModelItem();
|
virtual ~GraphicsFunctionModelItem();
|
||||||
|
|
||||||
QMap<QString,bool> getMap();
|
QMap<QString,bool> getMap(); //bool值为数据源指针类型
|
||||||
void setMap(QMap<QString,bool>);
|
void setMap(QMap<QString,bool>);
|
||||||
|
|
||||||
|
void setPropertyProxy(BaseItemPropertyProxy* p) {_pPropertyProxy = p;}
|
||||||
|
BaseItemPropertyProxy* getPropertyProxy() {return _pPropertyProxy;}
|
||||||
protected:
|
protected:
|
||||||
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
|
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
|
||||||
|
protected:
|
||||||
|
BaseItemPropertyProxy* _pPropertyProxy; //属性页代理
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -239,6 +239,7 @@ public:
|
||||||
virtual void setDynamicLayoutRadius(qreal radius);
|
virtual void setDynamicLayoutRadius(qreal radius);
|
||||||
virtual QMap<QString,HandleText*> getDynamicText() {return m_mapDynamicText;}
|
virtual QMap<QString,HandleText*> getDynamicText() {return m_mapDynamicText;}
|
||||||
void setHandle(FixedPortsModel* p){_pHandle = p;}
|
void setHandle(FixedPortsModel* p){_pHandle = p;}
|
||||||
|
FixedPortsModel* getHandle() {return _pHandle;}
|
||||||
virtual void img_1_selected(QString sMeta,QString sModel,QByteArray img){};
|
virtual void img_1_selected(QString sMeta,QString sModel,QByteArray img){};
|
||||||
virtual void img_2_selected(QString sMeta,QString sModel,QByteArray img){};
|
virtual void img_2_selected(QString sMeta,QString sModel,QByteArray img){};
|
||||||
virtual void img_3_selected(QString sMeta,QString sModel,QByteArray img){};
|
virtual void img_3_selected(QString sMeta,QString sModel,QByteArray img){};
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
#ifndef PROPERTYDLG_H
|
||||||
|
#define PROPERTYDLG_H
|
||||||
|
/*********存放属性栏的窗口(运行时)*******/
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
|
class PropertyDlg : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
PropertyDlg(QWidget *parent = nullptr);
|
||||||
|
~PropertyDlg();
|
||||||
|
|
||||||
|
void setContent(QWidget* content);
|
||||||
|
void removeContent(QWidget* content);
|
||||||
|
private:
|
||||||
|
QVBoxLayout* _layout;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,51 @@
|
||||||
|
#include "baseItemPropertyProxy.h"
|
||||||
|
#include "graphicsItem/functionModelItem/graphicsFunctionModelItem.h"
|
||||||
|
#include "graphicsDataModel/fixedPortsModel.h"
|
||||||
|
#include "baseProperty.h"
|
||||||
|
|
||||||
|
BaseItemPropertyProxy::BaseItemPropertyProxy(GraphicsFunctionModelItem* pItem)
|
||||||
|
: BasePropertyProxy(pItem)
|
||||||
|
,_pItem(pItem)
|
||||||
|
,_pControl(nullptr)
|
||||||
|
{
|
||||||
|
_pControl= _pItem->getHandle();
|
||||||
|
}
|
||||||
|
|
||||||
|
BaseItemPropertyProxy::~BaseItemPropertyProxy()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString BaseItemPropertyProxy::getName() const
|
||||||
|
{
|
||||||
|
|
||||||
|
return _pItem->getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BaseItemPropertyProxy::setName(QString str)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
QMap<QString,double> BaseItemPropertyProxy::getMap()
|
||||||
|
{
|
||||||
|
QUuid uid = _pItem->getProperty()->uuid();
|
||||||
|
QMap<QString,double> map;
|
||||||
|
if(_pControl){
|
||||||
|
auto pPara = _pControl->getMonitorPara();
|
||||||
|
auto lstInfo = pPara.value(uid);
|
||||||
|
if(!lstInfo.isEmpty()){
|
||||||
|
for(auto &info:lstInfo){
|
||||||
|
if(info.bSelected)
|
||||||
|
map[info.sName] = info.mapValue.size()?info.mapValue.last():0; //取最新的值
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BaseItemPropertyProxy::setMap(QMap<QString,double>)
|
||||||
|
{
|
||||||
|
//todo:接口修改参量
|
||||||
|
}
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
#include <QLibrary>
|
#include <QLibrary>
|
||||||
#include <QMetaMethod>
|
#include <QMetaMethod>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
#include <QShortcut>
|
||||||
#include "monitorPanel.h"
|
#include "monitorPanel.h"
|
||||||
#include "diagramCavas.h"
|
#include "diagramCavas.h"
|
||||||
#include "dataBase.h"
|
#include "dataBase.h"
|
||||||
|
|
@ -32,6 +33,8 @@
|
||||||
#include "propertyType/dataSourceType.h"
|
#include "propertyType/dataSourceType.h"
|
||||||
|
|
||||||
#include "basePannelPropertyProxy.h"
|
#include "basePannelPropertyProxy.h"
|
||||||
|
#include "QDetailsView.h"
|
||||||
|
#include "propertyDialog.h"
|
||||||
|
|
||||||
DiagramCavas::DiagramCavas(QWidget *parent)
|
DiagramCavas::DiagramCavas(QWidget *parent)
|
||||||
: QMdiArea(parent)
|
: QMdiArea(parent)
|
||||||
|
|
@ -44,6 +47,8 @@ DiagramCavas::DiagramCavas(QWidget *parent)
|
||||||
,_createHMIDlg(nullptr)
|
,_createHMIDlg(nullptr)
|
||||||
,m_pluginManager(nullptr)
|
,m_pluginManager(nullptr)
|
||||||
,m_itemFactory(nullptr)
|
,m_itemFactory(nullptr)
|
||||||
|
,_pPropertyPage(nullptr)
|
||||||
|
,_pPropertyDlg(nullptr)
|
||||||
{
|
{
|
||||||
_pageIndex = 0;
|
_pageIndex = 0;
|
||||||
}
|
}
|
||||||
|
|
@ -168,6 +173,54 @@ void DiagramCavas::initial()
|
||||||
QString pluginsDir = QApplication::applicationDirPath() + "/plugins";
|
QString pluginsDir = QApplication::applicationDirPath() + "/plugins";
|
||||||
m_pluginManager->addPluginDirectory(pluginsDir);
|
m_pluginManager->addPluginDirectory(pluginsDir);
|
||||||
m_pluginManager->loadAllPlugins(pluginsDir);
|
m_pluginManager->loadAllPlugins(pluginsDir);
|
||||||
|
|
||||||
|
_pPropertyDlg = new PropertyDlg(parentWidget());
|
||||||
|
_pPropertyDlg->hide();
|
||||||
|
addShortcuts();
|
||||||
|
//setViewMode(QMdiArea::TabbedView);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DiagramCavas::setCurMode(int nMode)
|
||||||
|
{
|
||||||
|
_curMode = nMode;
|
||||||
|
if(_curMode == 1){ //运行模式下
|
||||||
|
showPropertyDlg();
|
||||||
|
//setViewMode(QMdiArea::SubWindowView);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
hidePropertyDlg();
|
||||||
|
//setViewMode(QMdiArea::TabbedView);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DiagramCavas::showPropertyDlg()
|
||||||
|
{
|
||||||
|
if(_pPropertyPage == nullptr){ //未被初始化
|
||||||
|
_pPropertyPage = new QDetailsView();
|
||||||
|
_pPropertyPage->setObject(new QObject(this));
|
||||||
|
}
|
||||||
|
_pPropertyDlg->setContent(_pPropertyPage);
|
||||||
|
_pPropertyDlg->show();
|
||||||
|
|
||||||
|
QScreen *screen = QGuiApplication::screenAt(parentWidget()->geometry().center());
|
||||||
|
if (!screen) {
|
||||||
|
screen = QGuiApplication::primaryScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
QRect screenGeometry = screen->geometry();
|
||||||
|
QRect dialogRect = _pPropertyDlg->geometry();
|
||||||
|
|
||||||
|
// 计算位置:水平靠右,垂直居中
|
||||||
|
int x = screenGeometry.right() - dialogRect.width() - 10; // 留10像素边距
|
||||||
|
int y = screenGeometry.center().y() - dialogRect.height() / 2;
|
||||||
|
|
||||||
|
_pPropertyDlg->move(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DiagramCavas::hidePropertyDlg()
|
||||||
|
{
|
||||||
|
_pPropertyDlg->removeContent(_pPropertyPage);
|
||||||
|
_pPropertyDlg->hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramCavas::onSignal_addDrawingPanel(PowerEntity* pItem,DiagramMode mode,QString parent)
|
void DiagramCavas::onSignal_addDrawingPanel(PowerEntity* pItem,DiagramMode mode,QString parent)
|
||||||
|
|
@ -536,6 +589,20 @@ bool DiagramCavas::parsePluginConfig(const QJsonObject& root)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DiagramCavas::addShortcuts()
|
||||||
|
{
|
||||||
|
QShortcut* toggleProp = new QShortcut(QKeySequence("Ctrl+P"), this);
|
||||||
|
connect(toggleProp, &QShortcut::activated, [this]() {
|
||||||
|
if(_pPropertyDlg->isVisible()){
|
||||||
|
hidePropertyDlg();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if(_curMode == 1)
|
||||||
|
showPropertyDlg();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
void DiagramCavas::resizeEvent(QResizeEvent* event)
|
void DiagramCavas::resizeEvent(QResizeEvent* event)
|
||||||
{
|
{
|
||||||
if(_cornerButton)
|
if(_cornerButton)
|
||||||
|
|
@ -544,8 +611,13 @@ void DiagramCavas::resizeEvent(QResizeEvent* event)
|
||||||
|
|
||||||
void DiagramCavas::onTargetSelected(QObject* obj)
|
void DiagramCavas::onTargetSelected(QObject* obj)
|
||||||
{
|
{
|
||||||
if(obj)
|
if(obj){
|
||||||
emit selectTarget(obj);
|
if(_curMode == 0)
|
||||||
|
emit selectTarget(obj);
|
||||||
|
else
|
||||||
|
_pPropertyPage->setObject(obj);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
/****************************************************/
|
/****************************************************/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@
|
||||||
#include "graphicsItem/handleText.h"
|
#include "graphicsItem/handleText.h"
|
||||||
#include "bayMeasureDlg.h"
|
#include "bayMeasureDlg.h"
|
||||||
#include "basePannelPropertyProxy.h"
|
#include "basePannelPropertyProxy.h"
|
||||||
|
#include "baseItemPropertyProxy.h"
|
||||||
#include "common/core_model/types.h"
|
#include "common/core_model/types.h"
|
||||||
#include "graphicsItem/pluginSvgItemWrapper.h"
|
#include "graphicsItem/pluginSvgItemWrapper.h"
|
||||||
|
|
||||||
|
|
@ -775,6 +776,8 @@ QString FixedPortsModel::addNodeItem(QUuid id,QPointF pos,double width,double he
|
||||||
item->bindProperty(pro); //绑定模型
|
item->bindProperty(pro); //绑定模型
|
||||||
item->updateByProperty(); //使用模型更新自身
|
item->updateByProperty(); //使用模型更新自身
|
||||||
item->setHandle(this);
|
item->setHandle(this);
|
||||||
|
auto pProxy = new BaseItemPropertyProxy(item); //设置运行时属性代理
|
||||||
|
item->setPropertyProxy(pProxy);
|
||||||
_nodeItem.insert(id,item);
|
_nodeItem.insert(id,item);
|
||||||
//connect(item,&GraphicsFunctionModelItem::ifExist,this,&FixedPortsModel::onSignal_ifExits);
|
//connect(item,&GraphicsFunctionModelItem::ifExist,this,&FixedPortsModel::onSignal_ifExits);
|
||||||
connect(item,&GraphicsBaseItem::itemRotated,this,[this](GraphicsBaseItem* pBase){
|
connect(item,&GraphicsBaseItem::itemRotated,this,[this](GraphicsBaseItem* pBase){
|
||||||
|
|
@ -951,6 +954,7 @@ QString FixedPortsModel::addConnectLline(QUuid lineId,QUuid srcId,QUuid destId,Q
|
||||||
ElectricFunctionModelConnectLineItem* pItem = new ElectricFunctionModelConnectLineItem();
|
ElectricFunctionModelConnectLineItem* pItem = new ElectricFunctionModelConnectLineItem();
|
||||||
pItem->setItemId(lineId);
|
pItem->setItemId(lineId);
|
||||||
pItem->setItemType(GIT_link);
|
pItem->setItemType(GIT_link);
|
||||||
|
pItem->setHandle(this);
|
||||||
_scene->addItem(pItem);
|
_scene->addItem(pItem);
|
||||||
|
|
||||||
ItemPort* ptSrc = src->getPortById(srcPort.toString());
|
ItemPort* ptSrc = src->getPortById(srcPort.toString());
|
||||||
|
|
@ -973,6 +977,8 @@ QString FixedPortsModel::addConnectLline(QUuid lineId,QUuid srcId,QUuid destId,Q
|
||||||
pPro->setConnection(Connection(srcId,srcPort,srcType,srcPos,destId,destPort,destType,destPos));
|
pPro->setConnection(Connection(srcId,srcPort,srcType,srcPos,destId,destPort,destType,destPos));
|
||||||
ptDest->setConnect(pItem);
|
ptDest->setConnect(pItem);
|
||||||
|
|
||||||
|
auto pProxy = new BaseItemPropertyProxy(pItem); //设置运行时属性代理
|
||||||
|
pItem->setPropertyProxy(pProxy);
|
||||||
addNodeItem(pItem->itemId(),pItem);
|
addNodeItem(pItem->itemId(),pItem);
|
||||||
pItem->bindProperty(pPro);
|
pItem->bindProperty(pPro);
|
||||||
}
|
}
|
||||||
|
|
@ -1725,7 +1731,9 @@ void FixedPortsModel::onDataTimerOut()
|
||||||
void FixedPortsModel::onSelectionChanged()
|
void FixedPortsModel::onSelectionChanged()
|
||||||
{
|
{
|
||||||
QList<QGraphicsItem*> selectedItems = _scene->selectedItems();
|
QList<QGraphicsItem*> selectedItems = _scene->selectedItems();
|
||||||
if(_cavas){
|
if(_cavas){
|
||||||
|
int nMode = _cavas->getCurMode();
|
||||||
|
if(nMode == 0){
|
||||||
if(selectedItems.count() != 1) {
|
if(selectedItems.count() != 1) {
|
||||||
if(_widget)
|
if(_widget)
|
||||||
_cavas->onTargetSelected(_widget->getPropertyProxy());
|
_cavas->onTargetSelected(_widget->getPropertyProxy());
|
||||||
|
|
@ -1733,6 +1741,16 @@ void FixedPortsModel::onSelectionChanged()
|
||||||
}
|
}
|
||||||
GraphicsBaseItem *item = static_cast<GraphicsBaseItem*>(selectedItems.first());
|
GraphicsBaseItem *item = static_cast<GraphicsBaseItem*>(selectedItems.first());
|
||||||
_cavas->onTargetSelected(item);
|
_cavas->onTargetSelected(item);
|
||||||
|
}
|
||||||
|
else if(nMode == 1){
|
||||||
|
if(selectedItems.count() != 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
GraphicsFunctionModelItem *item = static_cast<GraphicsFunctionModelItem*>(selectedItems.first());
|
||||||
|
if(item){
|
||||||
|
_cavas->onTargetSelected(item->getPropertyProxy());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
#include "graphicsItem/functionModelItem/graphicsFunctionModelItem.h"
|
#include "graphicsItem/functionModelItem/graphicsFunctionModelItem.h"
|
||||||
#include "baseProperty.h"
|
#include "baseProperty.h"
|
||||||
#include "graphicsDataModel/fixedPortsModel.h"
|
#include "graphicsDataModel/fixedPortsModel.h"
|
||||||
|
#include "baseItemPropertyProxy.h"
|
||||||
|
|
||||||
GraphicsFunctionModelItem::GraphicsFunctionModelItem(QGraphicsItem *parent)
|
GraphicsFunctionModelItem::GraphicsFunctionModelItem(QGraphicsItem *parent)
|
||||||
: GraphicsProjectModelItem(parent)
|
: GraphicsProjectModelItem(parent)
|
||||||
|
,_pPropertyProxy(nullptr)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
#include "propertyDialog.h"
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
#include <QKeyEvent>
|
||||||
|
|
||||||
|
PropertyDlg::PropertyDlg(QWidget *parent)
|
||||||
|
: QDialog(parent)
|
||||||
|
{
|
||||||
|
setWindowTitle("属性显示");
|
||||||
|
setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint );
|
||||||
|
_layout = new QVBoxLayout(this);
|
||||||
|
_layout->setContentsMargins(0, 0, 0, 0);
|
||||||
|
setMinimumSize(300, 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PropertyDlg::~PropertyDlg()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void PropertyDlg::setContent(QWidget* content)
|
||||||
|
{
|
||||||
|
if(content)
|
||||||
|
_layout->addWidget(content);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PropertyDlg::removeContent(QWidget* content)
|
||||||
|
{
|
||||||
|
if(content)
|
||||||
|
_layout->removeWidget(content);
|
||||||
|
}
|
||||||
|
|
@ -22,6 +22,7 @@ class DiagramView;
|
||||||
class MonitorItemsDlg;
|
class MonitorItemsDlg;
|
||||||
class MonitorPagesDlg;
|
class MonitorPagesDlg;
|
||||||
class QDetailsView;
|
class QDetailsView;
|
||||||
|
class RuntimeDialog;
|
||||||
|
|
||||||
class CMainWindow : public QMainWindow
|
class CMainWindow : public QMainWindow
|
||||||
{
|
{
|
||||||
|
|
@ -38,7 +39,7 @@ protected:
|
||||||
private:
|
private:
|
||||||
void initializeDockUi();
|
void initializeDockUi();
|
||||||
void initializeAction();
|
void initializeAction();
|
||||||
|
void refreshLayout();
|
||||||
private slots:
|
private slots:
|
||||||
void onAction_zoomIn();
|
void onAction_zoomIn();
|
||||||
void onAction_zoomOut();
|
void onAction_zoomOut();
|
||||||
|
|
@ -53,7 +54,7 @@ private slots:
|
||||||
void onCavasItemSelected(QObject*);
|
void onCavasItemSelected(QObject*);
|
||||||
public:
|
public:
|
||||||
GraphicElementsPanel* graphicsElementsPanel() const;
|
GraphicElementsPanel* graphicsElementsPanel() const;
|
||||||
|
void setMode(int nMode = 0); //切换模式
|
||||||
private:
|
private:
|
||||||
QAction* SavePerspectiveAction = nullptr;
|
QAction* SavePerspectiveAction = nullptr;
|
||||||
QWidgetAction* PerspectiveListAction = nullptr;
|
QWidgetAction* PerspectiveListAction = nullptr;
|
||||||
|
|
@ -75,5 +76,7 @@ private:
|
||||||
QDockWidget* m_pPropertyEditorDock;
|
QDockWidget* m_pPropertyEditorDock;
|
||||||
QDetailsView* m_pPropertiesEditorView;
|
QDetailsView* m_pPropertiesEditorView;
|
||||||
QAction* _pActMonitor;
|
QAction* _pActMonitor;
|
||||||
|
int _nMode = 0; //0编辑1运行
|
||||||
|
RuntimeDialog* m_pRuntimeDlg;
|
||||||
};
|
};
|
||||||
#endif // MAINWINDOW_H
|
#endif // MAINWINDOW_H
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
#ifndef RUNTIMEDIALOG_H
|
||||||
|
#define RUNTIMEDIALOG_H
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
|
// 运行时对话框
|
||||||
|
class RuntimeDialog : public QDialog {
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
RuntimeDialog(QWidget* parent = nullptr);
|
||||||
|
|
||||||
|
void setContent(QWidget* content);
|
||||||
|
signals:
|
||||||
|
void exitRuntime();
|
||||||
|
protected:
|
||||||
|
void keyPressEvent(QKeyEvent* event) override;
|
||||||
|
private:
|
||||||
|
QVBoxLayout* _layout;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif //RUNTIMEDIALOG_H
|
||||||
|
|
@ -45,9 +45,9 @@ void EnhancedToolBar::addTool(const QString &toolType, const QString &toolName,
|
||||||
m_buttons[toolType] = button;
|
m_buttons[toolType] = button;
|
||||||
|
|
||||||
// 如果没有当前工具,设置第一个为当前
|
// 如果没有当前工具,设置第一个为当前
|
||||||
if (m_currentTool.isEmpty()) {
|
/*if (m_currentTool.isEmpty()) {
|
||||||
setCurrentTool(toolType);
|
setCurrentTool(toolType);
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnhancedToolBar::onToolButtonClicked()
|
void EnhancedToolBar::onToolButtonClicked()
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@
|
||||||
#include "QDetailsView.h"
|
#include "QDetailsView.h"
|
||||||
#include "baseDockWidget.h"
|
#include "baseDockWidget.h"
|
||||||
#include "configToolBar.h"
|
#include "configToolBar.h"
|
||||||
|
#include "runtimeDialog.h"
|
||||||
|
|
||||||
#include "QDetailsView.h"
|
#include "QDetailsView.h"
|
||||||
|
|
||||||
|
|
@ -44,6 +45,7 @@ CMainWindow::CMainWindow(QWidget *parent)
|
||||||
m_pPropertiesEditorView = nullptr;
|
m_pPropertiesEditorView = nullptr;
|
||||||
_pActMonitor = nullptr;
|
_pActMonitor = nullptr;
|
||||||
m_pPropertyEditorDock = nullptr;
|
m_pPropertyEditorDock = nullptr;
|
||||||
|
m_pRuntimeDlg = nullptr;
|
||||||
|
|
||||||
qRegisterMetaType<PropertyStateInfo>("PropertyStateInfo");
|
qRegisterMetaType<PropertyStateInfo>("PropertyStateInfo");
|
||||||
initializeDockUi();
|
initializeDockUi();
|
||||||
|
|
@ -134,6 +136,12 @@ void CMainWindow::initializeDockUi()
|
||||||
this->setCentralWidget(m_pDiagramCavas);
|
this->setCentralWidget(m_pDiagramCavas);
|
||||||
connect(m_pElectricElementsBox,&ElectricElementsBox::addEletricItem,m_pDiagramCavas,&DiagramCavas::onSignal_addGraphicsItem);
|
connect(m_pElectricElementsBox,&ElectricElementsBox::addEletricItem,m_pDiagramCavas,&DiagramCavas::onSignal_addGraphicsItem);
|
||||||
|
|
||||||
|
m_pRuntimeDlg = new RuntimeDialog(this);
|
||||||
|
m_pRuntimeDlg->hide();
|
||||||
|
connect(m_pRuntimeDlg,&RuntimeDialog::exitRuntime,this,[&](){
|
||||||
|
setMode(0);
|
||||||
|
});
|
||||||
|
|
||||||
connect(&ProjectModelManager::instance(),&ProjectModelManager::modelChange,m_pElectricElementsBox,&ElectricElementsBox::onSignal_modelChanged);
|
connect(&ProjectModelManager::instance(),&ProjectModelManager::modelChange,m_pElectricElementsBox,&ElectricElementsBox::onSignal_modelChanged);
|
||||||
|
|
||||||
m_pPropertiesEditorView = new QDetailsView();
|
m_pPropertiesEditorView = new QDetailsView();
|
||||||
|
|
@ -202,7 +210,11 @@ void CMainWindow::initializeAction()
|
||||||
QAction* actNewEditor = ui->menuFile->addAction(QString::fromWCharArray(L"新建组态"));
|
QAction* actNewEditor = ui->menuFile->addAction(QString::fromWCharArray(L"新建组态"));
|
||||||
|
|
||||||
QAction* actRun = ui->menuMode->addAction(QString::fromWCharArray(L"运行"));
|
QAction* actRun = ui->menuMode->addAction(QString::fromWCharArray(L"运行"));
|
||||||
connect(actRun,&QAction::triggered,m_pDiagramCavas,&DiagramCavas::onSignal_runPage);
|
actRun->setShortcut(QKeySequence(Qt::Key_F5));
|
||||||
|
//connect(actRun,&QAction::triggered,m_pDiagramCavas,&DiagramCavas::onSignal_runPage);
|
||||||
|
connect(actRun,&QAction::triggered,this,[&](){
|
||||||
|
setMode(1);
|
||||||
|
});
|
||||||
|
|
||||||
QAction* actEditBay = ui->menuProject->addAction(QString::fromWCharArray(L"管理间隔"));
|
QAction* actEditBay = ui->menuProject->addAction(QString::fromWCharArray(L"管理间隔"));
|
||||||
connect(actEditBay,&QAction::triggered,this,&CMainWindow::onAction_editBay);
|
connect(actEditBay,&QAction::triggered,this,&CMainWindow::onAction_editBay);
|
||||||
|
|
@ -235,6 +247,20 @@ void CMainWindow::initializeAction()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CMainWindow::refreshLayout()
|
||||||
|
{
|
||||||
|
if(_nMode == 0){ //编辑模式
|
||||||
|
m_pRuntimeDlg->hide();
|
||||||
|
this->show();
|
||||||
|
this->setCentralWidget(m_pDiagramCavas);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
this->hide();
|
||||||
|
m_pRuntimeDlg->setContent(m_pDiagramCavas);
|
||||||
|
m_pRuntimeDlg->showMaximized();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CMainWindow::onAction_zoomIn()
|
void CMainWindow::onAction_zoomIn()
|
||||||
{
|
{
|
||||||
//m_pDrawingPanel->grahpicsViewZoomIn();
|
//m_pDrawingPanel->grahpicsViewZoomIn();
|
||||||
|
|
@ -327,4 +353,16 @@ GraphicElementsPanel* CMainWindow::graphicsElementsPanel() const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CMainWindow::setMode(int nMode)
|
||||||
|
{
|
||||||
|
if(_nMode != nMode){
|
||||||
|
_nMode = nMode;
|
||||||
|
m_pPropertyEditorDock->setWidget(nullptr);
|
||||||
|
m_pDiagramCavas->setCurMode(nMode);
|
||||||
|
}
|
||||||
|
if(_nMode == 0){
|
||||||
|
m_pPropertyEditorDock->setWidget(m_pPropertiesEditorView); //属性页设置回主界面
|
||||||
|
}
|
||||||
|
refreshLayout();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
#include "runtimeDialog.h"
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
#include <QKeyEvent>
|
||||||
|
|
||||||
|
RuntimeDialog::RuntimeDialog(QWidget *parent)
|
||||||
|
: QDialog(parent,Qt::FramelessWindowHint)
|
||||||
|
{
|
||||||
|
_layout = new QVBoxLayout(this);
|
||||||
|
_layout->setContentsMargins(0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RuntimeDialog::keyPressEvent(QKeyEvent* event) {
|
||||||
|
if (event->key() == Qt::Key_Escape) {
|
||||||
|
emit exitRuntime();
|
||||||
|
hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void RuntimeDialog::setContent(QWidget* content)
|
||||||
|
{
|
||||||
|
if(content)
|
||||||
|
_layout->addWidget(content);
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue