add project model icon manager
This commit is contained in:
parent
8e968e7845
commit
20814d00a6
|
|
@ -19,8 +19,8 @@ const int g_dEditorItem_Height = 80;
|
|||
|
||||
const int g_nEditorBus_Height = 10;
|
||||
|
||||
const int g_nVDiagramSpacing = 50;
|
||||
const int g_nHDiagramSpacing = 50;
|
||||
const int g_nVDiagramSpacing = 80;
|
||||
const int g_nHDiagramSpacing = 80;
|
||||
|
||||
//Q_NAMESPACE
|
||||
enum GraphicsItemType
|
||||
|
|
@ -38,16 +38,18 @@ enum GraphicsItemType
|
|||
GIT_link= QGraphicsItem::UserType + 53,
|
||||
GIT_ctItem= QGraphicsItem::UserType + 54,
|
||||
GIT_ctGroup= QGraphicsItem::UserType + 55,
|
||||
GIT_ES= QGraphicsItem::UserType + 56,
|
||||
GIT_DS= QGraphicsItem::UserType + 57,
|
||||
GIT_FES= QGraphicsItem::UserType + 58,
|
||||
GIT_DTEDS= QGraphicsItem::UserType + 59,
|
||||
GIT_PI= QGraphicsItem::UserType + 60,
|
||||
GIT_LA= QGraphicsItem::UserType + 61,
|
||||
GIT_cableTer= QGraphicsItem::UserType + 62,
|
||||
GIT_cableEnd= QGraphicsItem::UserType + 63,
|
||||
GIT_2wTransformer= QGraphicsItem::UserType + 64,
|
||||
GIT_3wTransformer= QGraphicsItem::UserType + 65,
|
||||
GIT_ptItem= QGraphicsItem::UserType + 56,
|
||||
GIT_ptGroup= QGraphicsItem::UserType + 57,
|
||||
GIT_ES= QGraphicsItem::UserType + 58,
|
||||
GIT_DS= QGraphicsItem::UserType + 59,
|
||||
GIT_FES= QGraphicsItem::UserType + 60,
|
||||
GIT_DTEDS= QGraphicsItem::UserType + 61,
|
||||
GIT_PI= QGraphicsItem::UserType + 62,
|
||||
GIT_LA= QGraphicsItem::UserType + 63,
|
||||
GIT_cableTer= QGraphicsItem::UserType + 64,
|
||||
GIT_cableEnd= QGraphicsItem::UserType + 65,
|
||||
GIT_2wTransformer= QGraphicsItem::UserType + 66,
|
||||
GIT_3wTransformer= QGraphicsItem::UserType + 67,
|
||||
GIT_node= QGraphicsItem::UserType + 79,
|
||||
GIT_bay= QGraphicsItem::UserType + 80, //间隔
|
||||
//======================================
|
||||
|
|
@ -233,6 +235,7 @@ struct projectModelSetting //工程模设定类,如图标
|
|||
{
|
||||
QString modelName; //工程模名
|
||||
QMap<QString,QByteArray> mapSvg; //存放选择的svg图片
|
||||
QMap<QString,QByteArray> mapUsedSvg; //存放使用的svg
|
||||
};
|
||||
|
||||
/*struct baseModelSelectManger
|
||||
|
|
@ -287,6 +290,7 @@ struct PropertyModel //工程模
|
|||
{
|
||||
PropertyModel copy;
|
||||
copy.mapProperty = mapProperty;
|
||||
copy.nType = nType;
|
||||
copy.pBase = deepCloneModel(pBase);
|
||||
copy.pSelect = deepCloneModel(pSelect);
|
||||
copy.formerMeta = formerMeta;
|
||||
|
|
|
|||
|
|
@ -23,6 +23,8 @@ set(DIAGRAMCAVAS_HEADER_FILES
|
|||
include/bayManagerContentDlg.h
|
||||
include/measureSettingDlg.h
|
||||
include/projectModelSetting.h
|
||||
include/projectIconSetting.h
|
||||
include/projectIconSelectionDlg.h
|
||||
include/projectDiagramNameInput.h
|
||||
include/diagramEditor/editPanel.h
|
||||
include/diagramEditor/editView.h
|
||||
|
|
@ -70,6 +72,8 @@ set(DIAGRAMCAVAS_HEADER_FILES
|
|||
include/graphicsItem/electricSvgGroup.h
|
||||
include/graphicsItem/electricSvgGroupCT.h
|
||||
include/graphicsItem/electricSvgItemCT.h
|
||||
include/graphicsItem/electricSvgGroupPT.h
|
||||
include/graphicsItem/electricSvgItemPT.h
|
||||
include/graphicsItem/electricSvgItemES.h
|
||||
include/graphicsItem/electricSvgItemDS.h
|
||||
include/graphicsItem/electricSvgItemFES.h
|
||||
|
|
@ -125,6 +129,8 @@ set(DIAGRAMCAVAS_SOURCE_FILES
|
|||
source/bayManagerContentDlg.cpp
|
||||
source/measureSettingDlg.cpp
|
||||
source/projectModelSetting.cpp
|
||||
source/projectIconSetting.cpp
|
||||
source/projectIconSelectionDlg.cpp
|
||||
source/projectDiagramNameInput.cpp
|
||||
source/diagramEditor/editPanel.cpp
|
||||
source/diagramEditor/editView.cpp
|
||||
|
|
@ -172,6 +178,8 @@ set(DIAGRAMCAVAS_SOURCE_FILES
|
|||
source/graphicsItem/electricSvgGroup.cpp
|
||||
source/graphicsItem/electricSvgGroupCT.cpp
|
||||
source/graphicsItem/electricSvgItemCT.cpp
|
||||
source/graphicsItem/electricSvgGroupPT.cpp
|
||||
source/graphicsItem/electricSvgItemPT.cpp
|
||||
source/graphicsItem/electricSvgItemES.cpp
|
||||
source/graphicsItem/electricSvgItemDS.cpp
|
||||
source/graphicsItem/electricSvgItemFES.cpp
|
||||
|
|
@ -223,6 +231,7 @@ set(UI_FILES
|
|||
ui/diagramEditorTransDetailSettingDlg.ui
|
||||
ui/diagramEditorTransDetailAddDlg.ui
|
||||
ui/confirmEditorDlg.ui
|
||||
ui/projectIconSetting.ui
|
||||
)
|
||||
|
||||
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ namespace Ui { class baseInfoDlg; }
|
|||
QT_END_NAMESPACE
|
||||
|
||||
class QButtonGroup;
|
||||
class ItemPropertyDlg;
|
||||
|
||||
class BaseInfoDlg : public BaseContentDlg
|
||||
{
|
||||
|
|
@ -17,12 +18,18 @@ public:
|
|||
BaseInfoDlg(QWidget *parent = nullptr);
|
||||
~BaseInfoDlg();
|
||||
|
||||
void initial();
|
||||
|
||||
virtual void createGroupView(groupStateInfo);
|
||||
virtual QMap<QString,propertyStateInfo> getPropertyValue(BaseProperty* = nullptr);
|
||||
virtual void setPropertyValue(QVariant);
|
||||
void setParentDlg(ItemPropertyDlg* p) {_parentDlg = p;}
|
||||
public slots:
|
||||
void onIconManagerClicked();
|
||||
private:
|
||||
Ui::baseInfoDlg *ui;
|
||||
QButtonGroup* _stateGroup;
|
||||
ItemPropertyDlg* _parentDlg;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ public slots:
|
|||
void onSignl_openCurrentBay();
|
||||
private:
|
||||
void removePanel(PowerEntity*);
|
||||
void autoSetModelName(GraphicsBaseModelItem*); //如果此页的工程模已被设置,将projectName更新到item
|
||||
private:
|
||||
QMap<QString,QPair<DrawingPanel*,QMdiSubWindow*>> m_mapDrawPanel;
|
||||
int _pageIndex;
|
||||
|
|
|
|||
|
|
@ -59,7 +59,8 @@ public:
|
|||
void generateItemByModel(QStandardItemModel* pModel,int nFrom = 0,QPoint delta = QPoint(0,0)); //0间隔1变压器
|
||||
QList<DiagramEditorComponentInfo> generateItemByInfo(QMap<QString,DiagramEditorRouteInfo> mapRoute,QMap<QString,DiagramEditorComponentInfo> mapCompo,QPointF delta = QPointF(0,0)); //根据data生成item
|
||||
void generateOutConnection(QList<DiagramEditorComponentInfo>,int nTypeTransCon,int nPos = 0); //生成外部连接(手动bind的连接) nTypeTransCon变压器连线类型,1中性点连接2外部连接,nPos中性点连接时的位置
|
||||
QRectF updateTarget(QMap<QString,DiagramEditorRouteInfo>&,QMap<QString,DiagramEditorComponentInfo>&,int nLayout,int nSource,bool regenerate = true,bool saveToModel = true); //更新位置 nLayout主次朝向:8421,8421 上下左右,上下左右 nSource:0间隔1变压器 regenerate重新生成标志 saveToModel:生成到模型或map
|
||||
QRectF updateTarget(QMap<QString,DiagramEditorRouteInfo>&,QMap<QString,DiagramEditorComponentInfo>&,int nLayout,int nSource,bool saveToModel = true); //更新位置 nLayout主次朝向:8421,8421 上下左右,上下左右 nSource:0间隔1变压器 regenerate重新生成标志 saveToModel:生成到模型或map
|
||||
void clearCompoDir(QMap<QString,DiagramEditorRouteInfo>&,QMap<QString,DiagramEditorComponentInfo>&,int nSource); //清空component中的dir(updateTarget前调用)
|
||||
private:
|
||||
void bulidAndLinkComponent(QList<DiagramEditorComponentInfo>,QMap<QString,DiagramEditorComponentInfo>); //生成并连接线路上的设备 lst,mapComponents(从map中获取正确数据)
|
||||
//DiagramEditorComponentInfo getCompoDataFromName(const QString&,QMap<QString,DiagramEditorComponentInfo>); //根据名称获取数据
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ struct Connection;
|
|||
class PowerEntity;
|
||||
class ElectricConnectLineItem;
|
||||
class ProjectModelSetting;
|
||||
class ProjectIconSetting;
|
||||
class ElectricBayItem;
|
||||
class GraphicsNonStandardItem;
|
||||
class BayProperty;
|
||||
|
|
@ -64,6 +65,8 @@ public:
|
|||
bool isItemValid(GraphicsProjectModelItem*); //判断item是否可以连接
|
||||
|
||||
void insertProjectModelName(QString,QString); //插入工程模类型(生成工程模时调用)
|
||||
void showProjectIconSettingDlg(GraphicsProjectModelItem*); //显示工程模图标设置(设置使用图标)
|
||||
void updateItemIcon(QString sMeta,QString sModel); //更新指定模型的图标
|
||||
/********************baseModel相关**********************/
|
||||
QMap<QUuid,GraphicsBaseModelItem*>& allBaseItems(); //获取所有基模对象
|
||||
QVector<Connection> allBaseConnections();
|
||||
|
|
@ -124,6 +127,7 @@ private:
|
|||
QMap<QString,modelStateInfo> _modelStateInfo; //模型结构信息
|
||||
QMap<QString,modelDataInfo> _modelDataInfo; //模型数据信息
|
||||
ProjectModelSetting* m_proModelSettingDlg;
|
||||
ProjectIconSetting* m_projectIconSettingDlg;
|
||||
BayManagerDlg* m_pBayManager;
|
||||
public:
|
||||
static bool _dataInitialised;
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ public:
|
|||
void resize(int,double, double, const QPointF&);
|
||||
void updateCoordinate();
|
||||
void move(const QPointF&);
|
||||
virtual void loadSvg(const QByteArray& data);
|
||||
virtual void addSvgItem(ElectricSvgItem* item);
|
||||
virtual void updateMapSvg(QMap<QString,QByteArray> map); //工程模property不含图片,额外存储
|
||||
|
||||
protected:
|
||||
virtual QPainterPath shape();
|
||||
|
|
@ -24,7 +24,7 @@ protected:
|
|||
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
|
||||
protected:
|
||||
QRectF m_lastBoudingRect; //记录上一时刻的boundingRect
|
||||
QByteArray m_curSvg; //当前存储的svg
|
||||
QMap<QString,QByteArray> m_mapSvg;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ class ElectricSvgGroupCT :public ElectricSvgGroup
|
|||
public:
|
||||
ElectricSvgGroupCT(const QRect &rect,QGraphicsItem *parent = 0);
|
||||
virtual ~ElectricSvgGroupCT();
|
||||
virtual void setupFinish(int nType,int nSize) override;
|
||||
virtual void setupFinish(QVariant) override;
|
||||
virtual void updateItem() override;
|
||||
void setCtType(int n){_nType = n;}
|
||||
void setCtSize(int n){_nSize = n;}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
#ifndef ELECTRICSVGGROUPPT_H
|
||||
#define ELECTRICSVGGROUPPT_H
|
||||
|
||||
#include "graphicsItem/electricSvgGroup.h"
|
||||
|
||||
class ElectricSvgGroupPT :public ElectricSvgGroup
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
ElectricSvgGroupPT(const QRect &rect,QGraphicsItem *parent = 0);
|
||||
virtual ~ElectricSvgGroupPT();
|
||||
virtual void setupFinish(QVariant) override;
|
||||
virtual void updateItem() override;
|
||||
virtual void updateLayout() override;
|
||||
QList<int>& getLstType() {return m_lstType;}
|
||||
protected:
|
||||
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) override;
|
||||
protected:
|
||||
QList<int> m_lstType; //绕组类型 1星型 0三角
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -13,8 +13,9 @@ public:
|
|||
void resize(int,double, double, const QPointF&);
|
||||
void updateCoordinate();
|
||||
void move(const QPointF&);
|
||||
virtual void loadSvg(const QByteArray& data);
|
||||
|
||||
virtual void loadSvg(){};
|
||||
virtual void loadSvg(QByteArray); //第二种load直接加载图片
|
||||
virtual void updateMapSvg(QMap<QString,QByteArray> map);
|
||||
protected:
|
||||
virtual QPainterPath shape();
|
||||
virtual void editShape(int, const QPointF&);
|
||||
|
|
@ -22,7 +23,7 @@ protected:
|
|||
protected:
|
||||
QRectF m_lastBoudingRect; //记录上一时刻的boundingRect
|
||||
QSvgRenderer* m_pRender;
|
||||
|
||||
QMap<QString,QByteArray> m_mapSvg;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
#ifndef ELECTRICSVGITEMPT_H
|
||||
#define ELECTRICSVGITEMPT_H
|
||||
|
||||
#include "electricSvgItem.h"
|
||||
|
||||
class ElectricSvgItemPT :public ElectricSvgItem
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
ElectricSvgItemPT(const QRect &rect,QGraphicsItem *parent = 0);
|
||||
virtual ~ElectricSvgItemPT();
|
||||
void setItemType(int n){_itemType = n;}
|
||||
protected:
|
||||
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
|
||||
|
||||
int _itemType = 0; //1星型 0三角
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -12,8 +12,6 @@ public:
|
|||
ElectricSvgItemRect(const QRect &rect, bool genNewPort = true,QGraphicsItem *parent = 0);
|
||||
virtual ~ElectricSvgItemRect();
|
||||
|
||||
//virtual void updateByProperty();
|
||||
|
||||
protected:
|
||||
virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
|
||||
private:
|
||||
|
|
|
|||
|
|
@ -556,7 +556,7 @@ public:
|
|||
virtual void updateConnectData(); //更新连接关系数据
|
||||
virtual void setModelName(QString sName){_modelName = sName;}
|
||||
virtual QString getModelName() const {return _modelName;}
|
||||
virtual void setupFinish(int nType,int nSize){} //设置完成后调用(如ct,pt)
|
||||
virtual void setupFinish(QVariant){} //设置完成后调用(如ct,pt)
|
||||
virtual void updateItem(){}; //更新自身(如ct,pt)
|
||||
virtual void updateTerPos(); //ct,pt等item大小变动后重新计算端点位置
|
||||
protected:
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ public:
|
|||
void showDlg(modelDataInfo,QUuid,GraphicsProjectModelItem*); //显示属性页面
|
||||
void setModelController(FixedPortsModel* p) {_curModelController = p;}
|
||||
auto getModelController() {return _curModelController;}
|
||||
auto getCurItem() {return _curItem;}
|
||||
public slots:
|
||||
void onOkClicked();
|
||||
void onCancelClicked();
|
||||
|
|
|
|||
|
|
@ -46,7 +46,10 @@ public:
|
|||
if(pTer == nullptr){ //BaseModel中不存在则拷贝
|
||||
double dX = terminal->getPerX();
|
||||
double dY = terminal->getPerY();
|
||||
TopologyManager::instance().createTerminal(m_id,terminal->type(),terminal->name(),terminal->relativePosition(),terminal->id(),ModelFunctionType::BaseModel,dX,dY);
|
||||
auto newTer = TopologyManager::instance().createTerminal(m_id,terminal->type(),terminal->name(),terminal->relativePosition(),terminal->id(),ModelFunctionType::BaseModel,dX,dY);
|
||||
if(newTer){
|
||||
newTer->setPortLocate(terminal->getPortLocate());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,8 @@ enum class TerminalType {
|
|||
PowerOutput,
|
||||
PowerConnect,
|
||||
ControlSignal,
|
||||
ProtectiveGround
|
||||
ProtectiveGround,
|
||||
NewTral
|
||||
};
|
||||
|
||||
class PowerTerminal : public QObject {
|
||||
|
|
@ -50,6 +51,8 @@ public:
|
|||
double getPerX() {return m_dPerX;}
|
||||
void setPerY(double d) {m_dPerY = d;}
|
||||
double getPerY() {return m_dPerY;}
|
||||
void setPortLocate(int n) {m_portLocate = n;}
|
||||
int getPortLocate() {return m_portLocate;}
|
||||
signals:
|
||||
void positionChanged(const QPointF& newPosition);
|
||||
|
||||
|
|
@ -62,6 +65,7 @@ private:
|
|||
QString m_generateBy; //被哪个Terminal生成
|
||||
double m_dPerX = 0.0; //横向百分比位置
|
||||
double m_dPerY = 0.0; //纵向百分比位置
|
||||
int m_portLocate = 0; //所处位置(上下左右)
|
||||
|
||||
};
|
||||
#endif //POWERTERMINAL_H
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
#ifndef PROJECTICONSELECTIONDLG_H
|
||||
#define PROJECTICONSELECTIONDLG_H
|
||||
|
||||
#include <QDialog>
|
||||
#include <QListWidget>
|
||||
#include <QVBoxLayout>
|
||||
#include <QDialogButtonBox>
|
||||
|
||||
class ProjectIconSelectionDlg : public QDialog {
|
||||
Q_OBJECT
|
||||
public:
|
||||
ProjectIconSelectionDlg(const QMap<QString,QByteArray>,QWidget* parent = nullptr);
|
||||
QByteArray selectedSVG() const;
|
||||
|
||||
private:
|
||||
QListWidget* listWidget;
|
||||
QMap<QString,QByteArray> svgMap;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
#ifndef PROJECTICONSETTING_H
|
||||
#define PROJECTICONSETTING_H
|
||||
|
||||
/*********工程模使用的图标设置*********/
|
||||
#include <QDialog>
|
||||
|
||||
class FixedPortsModel;
|
||||
class GraphicsProjectModelItem;
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
namespace Ui { class projectIconSetting; }
|
||||
QT_END_NAMESPACE
|
||||
|
||||
class ProjectIconSetting : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
ProjectIconSetting(QWidget *parent = nullptr);
|
||||
~ProjectIconSetting();
|
||||
|
||||
void showDlg(GraphicsProjectModelItem*);
|
||||
void initial();
|
||||
void addItems(QMap<QString,QByteArray>);
|
||||
void selectImage(int row);
|
||||
void setController(FixedPortsModel* p){_controller = p;}
|
||||
public slots:
|
||||
void onOkClicked();
|
||||
void onCellClicked(int row,int col);
|
||||
private:
|
||||
Ui::projectIconSetting *ui;
|
||||
QSize _iconSize;
|
||||
FixedPortsModel* _controller;
|
||||
QString _sMetaModel;
|
||||
QString _sModel;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -6,17 +6,20 @@
|
|||
#include "global.h"
|
||||
#include "baseProperty.h"
|
||||
#include "basePropertyManager.h"
|
||||
#include "itemPropertyDlg.h"
|
||||
#include <QButtonGroup>
|
||||
|
||||
BaseInfoDlg::BaseInfoDlg(QWidget *parent)
|
||||
: BaseContentDlg(parent)
|
||||
, ui(new Ui::baseInfoDlg)
|
||||
,_parentDlg(nullptr)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
_stateGroup = new QButtonGroup(this);
|
||||
_stateGroup->addButton(ui->rb_inService,1);
|
||||
_stateGroup->addButton(ui->rb_outService,0);
|
||||
_stateGroup->setExclusive(true);
|
||||
initial();
|
||||
}
|
||||
|
||||
BaseInfoDlg::~BaseInfoDlg()
|
||||
|
|
@ -24,6 +27,11 @@ BaseInfoDlg::~BaseInfoDlg()
|
|||
delete ui;
|
||||
}
|
||||
|
||||
void BaseInfoDlg::initial()
|
||||
{
|
||||
connect(ui->btn_icon,&QPushButton::clicked,this,&BaseInfoDlg::onIconManagerClicked);
|
||||
}
|
||||
|
||||
void BaseInfoDlg::createGroupView(groupStateInfo infos)
|
||||
{
|
||||
QList<gridInfo> lstGrid = DataBase::GetInstance()->getAllGrid();
|
||||
|
|
@ -152,3 +160,10 @@ void BaseInfoDlg::setPropertyValue(QVariant var)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
void BaseInfoDlg::onIconManagerClicked()
|
||||
{
|
||||
if(_parentDlg){
|
||||
_parentDlg->getModelController()->showProjectIconSettingDlg(_parentDlg->getCurItem());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ ElectricBaseModelPortItem::ElectricBaseModelPortItem(const ElectricBaseModelPort
|
|||
setHandleVisible(false);
|
||||
setFunctionHandleIfShow(false);
|
||||
setFunctionHandleEnaable(false);
|
||||
setPos(obj.pos());
|
||||
}
|
||||
|
||||
ElectricBaseModelPortItem* ElectricBaseModelPortItem::clone() const
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ ElectricBaseModelSvgItem::ElectricBaseModelSvgItem(const ElectricBaseModelSvgIte
|
|||
m_lastBoudingRect = obj.m_lastBoudingRect;
|
||||
m_icon = obj.m_icon;
|
||||
m_pRender = new QSvgRenderer(m_icon);
|
||||
setRotation(obj.rotation());
|
||||
}
|
||||
|
||||
ElectricBaseModelSvgItem* ElectricBaseModelSvgItem::clone() const
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
#include "topologyManager.h"
|
||||
#include "powerEntity.h"
|
||||
#include "diagramEditor/diagramEditorWizard.h"
|
||||
//#include "componentIconManager.h"
|
||||
#include "projectModelManager.h"
|
||||
#include "baseProperty.h"
|
||||
#include "diagramEditor/editPanel.h"
|
||||
#include "graphicsDataModel/diagramEditorModel.h"
|
||||
|
|
@ -110,10 +110,18 @@ void DiagramCavas::onSignal_savePage()
|
|||
case QMessageBox::Save: //todo:已存在更新
|
||||
{
|
||||
QMap<QUuid,GraphicsProjectModelItem*> map = pPanel->getModelController()->allItems();
|
||||
QList<QString> updatedModel; //更新过图标的模型
|
||||
for(auto pItem:map)
|
||||
{
|
||||
BaseProperty* pData = dynamic_cast<BaseProperty*>(pItem->getProperty());
|
||||
if(pData){
|
||||
QString sMeta = pData->metaModelName();
|
||||
QString sModel = pData->modelName();
|
||||
if(!updatedModel.contains(sModel)){
|
||||
ProjectModelManager::instance().updateSetting(sMeta,sModel); //更新使用的图标数据
|
||||
updatedModel.append(sModel);
|
||||
}
|
||||
|
||||
if(pItem->itemChanged() || pData->dataChanged())
|
||||
{
|
||||
pItem->updateConnectData(); //更新连接状态
|
||||
|
|
@ -340,6 +348,21 @@ void DiagramCavas::removePanel(PowerEntity* pEntity)
|
|||
}
|
||||
}
|
||||
|
||||
void DiagramCavas::autoSetModelName(GraphicsBaseModelItem* pItem)
|
||||
{
|
||||
ModelProperty* p = pItem->getProperty();
|
||||
BaseModelProperty* pro = dynamic_cast<BaseModelProperty*>(p);
|
||||
if(pro){
|
||||
QString sMeta = pro->metaModelName();
|
||||
QString sModel = sMeta+"_"+_curPage;
|
||||
bool exist = ProjectModelManager::instance().getData()[sMeta].contains(sModel);
|
||||
if(exist){
|
||||
pro->setModelName(sModel);
|
||||
pro->getModelProperty().modelSetting.modelName = sModel;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DiagramCavas::onCreateTestBaseModelDiagram()
|
||||
{
|
||||
PowerEntity* pEntity;
|
||||
|
|
@ -424,6 +447,7 @@ void DiagramCavas::onSignal_wizardFinished(QString sName,QMap<QUuid,GraphicsBase
|
|||
cloneItem->setPos(pItem->pos());
|
||||
pPanel->getModelController()->addBaseItem(cloneItem->itemId(),cloneItem);
|
||||
pPro->setDataChanged(true);
|
||||
autoSetModelName(cloneItem);
|
||||
|
||||
if(pPro->type() != 8){
|
||||
PowerEntity* pEntity = TopologyManager::instance().findEntity(pPro->uuid().toString(),ModelFunctionType::BaseModel);
|
||||
|
|
|
|||
|
|
@ -256,7 +256,8 @@ void DiagramEditorBayDetailSettingDlg::onOkClicked()
|
|||
else if(nLayout == 1){ //横,右下
|
||||
nDir = 14;
|
||||
}
|
||||
QRectF recBounding = getModel()->updateTarget(_curBayInfo.mapRoute,_curBayInfo.mapComponent,nDir,0,true,false);
|
||||
getModel()->clearCompoDir(_curBayInfo.mapRoute,_curBayInfo.mapComponent,0);
|
||||
QRectF recBounding = getModel()->updateTarget(_curBayInfo.mapRoute,_curBayInfo.mapComponent,nDir,0,false);
|
||||
if(_curOperateObj->getRecSize().isEmpty())
|
||||
_curOperateObj->setRecSize(recBounding);
|
||||
_curOperateObj->setBayInfo(_curBayInfo);
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ void DiagramEditorBayPreviewDlg::showDlg(int nLayout)
|
|||
else if(nLayout == 1){ //横,右下
|
||||
nDir = 14;
|
||||
}
|
||||
_pParent->getModel()->clearCompoDir(_pParent->getBayInfo().mapRoute,_pParent->getBayInfo().mapComponent,0);
|
||||
_pParent->getModel()->updateTarget(_pParent->getBayInfo().mapRoute,_pParent->getBayInfo().mapComponent,nDir,0);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ void DiagramEditorPreviewDlg::initial()
|
|||
_pScene = new EditPreviewScene(this);
|
||||
_pScene->setSceneRect(_pParent->getScene()->sceneRect()); //使用父窗口scene大小
|
||||
_pView->setScene(_pScene);
|
||||
_pView->centerOn(QPointF(0,0));
|
||||
}
|
||||
|
||||
void DiagramEditorPreviewDlg::showDlg()
|
||||
|
|
|
|||
|
|
@ -275,11 +275,19 @@ void DiagramEditorTransDetailSettingDlg::onOkClicked()
|
|||
QRectF rec2;
|
||||
QRectF rec3;
|
||||
QRectF result;
|
||||
|
||||
if(_transInfo.mapNeutral.contains(0))
|
||||
getModel()->clearCompoDir(_transInfo.mapNeutral[0].mapRoute,_transInfo.mapComponent,1);
|
||||
if(_transInfo.mapNeutral.contains(1))
|
||||
getModel()->clearCompoDir(_transInfo.mapNeutral[1].mapRoute,_transInfo.mapComponent,1);
|
||||
if(_transInfo.mapNeutral.contains(2))
|
||||
getModel()->clearCompoDir(_transInfo.mapNeutral[2].mapRoute,_transInfo.mapComponent,1);
|
||||
|
||||
if(_transInfo.mapNeutral.contains(0)){
|
||||
QPointF delta = QPointF(100,-25);
|
||||
_transInfo.mapNeutral[0].nType = 0;
|
||||
_transInfo.mapNeutral[0].delPoint = delta;
|
||||
rec1 = getModel()->updateTarget(_transInfo.mapNeutral[0].mapRoute,_transInfo.mapComponent,18,1,true,false); //1右2上
|
||||
rec1 = getModel()->updateTarget(_transInfo.mapNeutral[0].mapRoute,_transInfo.mapComponent,14,1,false); //1右2下
|
||||
rec1.translate(delta); //相对trans偏移
|
||||
result = result.united(rec1);
|
||||
}
|
||||
|
|
@ -287,7 +295,7 @@ void DiagramEditorTransDetailSettingDlg::onOkClicked()
|
|||
QPointF delta = QPointF(-150,0);
|
||||
_transInfo.mapNeutral[1].nType = 1;
|
||||
_transInfo.mapNeutral[1].delPoint = delta;
|
||||
rec2 = getModel()->updateTarget(_transInfo.mapNeutral[1].mapRoute,_transInfo.mapComponent,14,1,true,false); //1右2下
|
||||
rec2 = getModel()->updateTarget(_transInfo.mapNeutral[1].mapRoute,_transInfo.mapComponent,24,1,false); //1左2下
|
||||
rec2.translate(delta);
|
||||
result = result.united(rec2);
|
||||
}
|
||||
|
|
@ -295,7 +303,7 @@ void DiagramEditorTransDetailSettingDlg::onOkClicked()
|
|||
QPointF delta = QPointF(100,25);
|
||||
_transInfo.mapNeutral[2].nType = 2;
|
||||
_transInfo.mapNeutral[2].delPoint = delta;
|
||||
rec3 = getModel()->updateTarget(_transInfo.mapNeutral[2].mapRoute,_transInfo.mapComponent,24,1,true,false); //1左2下
|
||||
rec3 = getModel()->updateTarget(_transInfo.mapNeutral[2].mapRoute,_transInfo.mapComponent,14,1,false); //1右2下
|
||||
rec3.translate(delta);
|
||||
result = result.united(rec3);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,11 +44,19 @@ void DiagramEditorTransPreviewDlg::showDlg(int nType)
|
|||
void DiagramEditorTransPreviewDlg::updateModelData(int nType)
|
||||
{
|
||||
if(nType == 0 || nType == 1 || nType == 2){
|
||||
_pParent->getModel()->clearCompoDir(_pParent->getTransInfo().mapNeutral[nType].mapRoute,_pParent->getTransInfo().mapComponent,1);
|
||||
if(nType == 0 || nType == 2)
|
||||
_pParent->getModel()->updateTarget(_pParent->getTransInfo().mapNeutral[nType].mapRoute,_pParent->getTransInfo().mapComponent,14,1); //1右2下
|
||||
else if(nType == 1)
|
||||
_pParent->getModel()->updateTarget(_pParent->getTransInfo().mapNeutral[nType].mapRoute,_pParent->getTransInfo().mapComponent,24,1); //1左2下
|
||||
}
|
||||
else if(nType == 3){ //整个变压器
|
||||
_pParent->getModel()->updateTarget(_pParent->getTransInfo().mapNeutral[0].mapRoute,_pParent->getTransInfo().mapComponent,18,1); //1右2上
|
||||
_pParent->getModel()->updateTarget(_pParent->getTransInfo().mapNeutral[1].mapRoute,_pParent->getTransInfo().mapComponent,14,1); //1右2下
|
||||
_pParent->getModel()->updateTarget(_pParent->getTransInfo().mapNeutral[2].mapRoute,_pParent->getTransInfo().mapComponent,24,1); //1左2下
|
||||
_pParent->getModel()->clearCompoDir(_pParent->getTransInfo().mapNeutral[0].mapRoute,_pParent->getTransInfo().mapComponent,1);
|
||||
_pParent->getModel()->clearCompoDir(_pParent->getTransInfo().mapNeutral[1].mapRoute,_pParent->getTransInfo().mapComponent,1);
|
||||
_pParent->getModel()->clearCompoDir(_pParent->getTransInfo().mapNeutral[2].mapRoute,_pParent->getTransInfo().mapComponent,1);
|
||||
|
||||
_pParent->getModel()->updateTarget(_pParent->getTransInfo().mapNeutral[0].mapRoute,_pParent->getTransInfo().mapComponent,14,1); //1右2下
|
||||
_pParent->getModel()->updateTarget(_pParent->getTransInfo().mapNeutral[1].mapRoute,_pParent->getTransInfo().mapComponent,24,1); //1左2下
|
||||
_pParent->getModel()->updateTarget(_pParent->getTransInfo().mapNeutral[2].mapRoute,_pParent->getTransInfo().mapComponent,14,1); //1右2下
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,11 +28,16 @@ void BaseModel::createTopoTerminalsByItem(GraphicsBaseItem* pItem,ModelFunctionT
|
|||
case T_lineInOut:
|
||||
terType = TerminalType::PowerConnect;
|
||||
break;
|
||||
case T_newTral:
|
||||
terType = TerminalType::NewTral;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
QPointF f = port->pos();
|
||||
TopologyManager::instance().createTerminal(pEntity->id(),terType,"",port->pos(),port->getId(),funType);
|
||||
auto pTer = TopologyManager::instance().createTerminal(pEntity->id(),terType,"",port->pos(),port->getId(),funType);
|
||||
if(pTer)
|
||||
pTer->setPortLocate(port->portPos());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -241,7 +246,177 @@ template<typename TypeLine> void BaseModel::establishConnection(GraphicsBaseItem
|
|||
else
|
||||
{
|
||||
QMap<QString,ItemPort*> mapSrc = pSrc->getPorts();
|
||||
QMap<QString,ItemPort*> mapDest = pDest->getPorts();
|
||||
pSrcPort = nullptr;
|
||||
pDestPort = nullptr;
|
||||
|
||||
if(nMode == 1){ //连接中性点
|
||||
if(nTypeSrc == 15 || nTypeSrc == 16){ //src是变压器中性点
|
||||
for(auto& port:mapSrc) //连接中性点
|
||||
{
|
||||
int nTpe = port->getType();
|
||||
int nPos = port->portPos();
|
||||
if(nTpe == T_newTral){
|
||||
if(nParam == 0){
|
||||
if(nPos == P_top){
|
||||
pSrcPort = port;
|
||||
}
|
||||
}
|
||||
else if(nParam == 1){
|
||||
if(nPos == P_left || nPos == P_right){
|
||||
pSrcPort = port;
|
||||
}
|
||||
}
|
||||
else if(nParam == 2){
|
||||
if(nPos == P_down){
|
||||
pSrcPort = port;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(auto& port:mapDest)
|
||||
{
|
||||
if(port->getType() == T_lineIn)
|
||||
{
|
||||
pDestPort = port;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(nTypeDest == 15 || nTypeDest == 16){ //dest是变压器中性点
|
||||
|
||||
for(auto& port:mapSrc)
|
||||
{
|
||||
if(port->getType() == T_lineIn) //始终从中性点出
|
||||
{
|
||||
pSrcPort = port;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for(auto& port:mapDest) //连接中性点
|
||||
{
|
||||
int nTpe = port->getType();
|
||||
int nPos = port->portPos();
|
||||
if(nTpe == T_newTral){
|
||||
if(nParam == 0){
|
||||
if(nPos == P_top){
|
||||
pDestPort = port;
|
||||
}
|
||||
}
|
||||
else if(nParam == 1){
|
||||
if(nPos == P_left || nPos == P_right){
|
||||
pDestPort = port;
|
||||
}
|
||||
}
|
||||
else if(nParam == 2){
|
||||
if(nPos == P_down){
|
||||
pDestPort = port;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(nMode == 2){ //连接变压器
|
||||
if(nTypeSrc == 15 || nTypeSrc == 16){ //src是变压器
|
||||
for(auto& port:mapSrc)
|
||||
{
|
||||
int nTpe = port->getType();
|
||||
int nPos = port->portPos();
|
||||
if(nTpe != T_newTral){
|
||||
if(nParam == 0){
|
||||
if(nPos == P_top){
|
||||
pSrcPort = port;
|
||||
}
|
||||
}
|
||||
else if(nParam == 1){
|
||||
if(nPos == P_left || nPos == P_right){
|
||||
pSrcPort = port;
|
||||
}
|
||||
}
|
||||
else if(nParam == 2){
|
||||
if(nPos == P_down){
|
||||
pSrcPort = port;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int transType = 0;
|
||||
if(pSrcPort){
|
||||
transType = pSrcPort->getType();
|
||||
}
|
||||
for(auto& port:mapDest) //根据变压器端点选择连接端点类型
|
||||
{
|
||||
if(transType == T_lineOut)
|
||||
{
|
||||
if(port->getType() == T_lineIn)
|
||||
{
|
||||
pDestPort = port;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(port->getType() == T_lineOut)
|
||||
{
|
||||
pDestPort = port;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(nTypeDest == 15 || nTypeDest == 16){ //dest是变压器
|
||||
|
||||
for(auto& port:mapDest)
|
||||
{
|
||||
int nTpe = port->getType();
|
||||
int nPos = port->portPos();
|
||||
if(nTpe != T_newTral){
|
||||
if(nParam == 0){
|
||||
if(nPos == P_top){
|
||||
pDestPort = port;
|
||||
}
|
||||
}
|
||||
else if(nParam == 1){
|
||||
if(nPos == P_left || nPos == P_right){
|
||||
pDestPort = port;
|
||||
}
|
||||
}
|
||||
else if(nParam == 2){
|
||||
if(nPos == P_down){
|
||||
pDestPort = port;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int transType = 0;
|
||||
if(pDestPort){
|
||||
transType = pDestPort->getType();
|
||||
}
|
||||
for(auto& port:mapSrc) //根据变压器端点选择连接端点类型
|
||||
{
|
||||
if(transType == T_lineOut)
|
||||
{
|
||||
if(port->getType() == T_lineIn)
|
||||
{
|
||||
pSrcPort = port;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(port->getType() == T_lineOut)
|
||||
{
|
||||
pSrcPort = port;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
for(auto& port:mapSrc)
|
||||
{
|
||||
if(port->getType() == T_lineOut)
|
||||
|
|
@ -251,8 +426,6 @@ template<typename TypeLine> void BaseModel::establishConnection(GraphicsBaseItem
|
|||
}
|
||||
}
|
||||
|
||||
QMap<QString,ItemPort*> mapDest = pDest->getPorts();
|
||||
pDestPort = nullptr;
|
||||
for(auto& port:mapDest)
|
||||
{
|
||||
if(port->getType() == T_lineIn)
|
||||
|
|
@ -262,6 +435,7 @@ template<typename TypeLine> void BaseModel::establishConnection(GraphicsBaseItem
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(pSrcPort && pDestPort)
|
||||
{
|
||||
QPointF srcPortPos = pSrcPort->scenePos();
|
||||
|
|
|
|||
|
|
@ -18,6 +18,9 @@
|
|||
#include "diagramEditor/diagramEditorWizard.h"
|
||||
#include "diagramEditor/diagramEditorStructContainer.h"
|
||||
|
||||
int g_nCompoWidth = 50; //元件默认宽度(计算布局使用)
|
||||
int g_nCompoHeight = 50;
|
||||
|
||||
DiagramEditorModel::DiagramEditorModel()
|
||||
:_pCurBayRoute(nullptr)
|
||||
,_pCurBayComponent(nullptr)
|
||||
|
|
@ -115,11 +118,16 @@ void DiagramEditorModel::createTopoTerminalsByItem(GraphicsBaseItem* pItem,Model
|
|||
case T_lineInOut:
|
||||
terType = TerminalType::PowerConnect;
|
||||
break;
|
||||
case T_newTral:
|
||||
terType = TerminalType::NewTral;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
QPointF f = port->pos();
|
||||
TopologyManager::instance().createTerminal(pEntity->id(),terType,"",port->pos(),port->getId(),funType,port->getXPercent(),port->getYPercent());
|
||||
auto pTer = TopologyManager::instance().createTerminal(pEntity->id(),terType,"",port->pos(),port->getId(),funType,port->getXPercent(),port->getYPercent());
|
||||
if(pTer)
|
||||
pTer->setPortLocate(port->portPos());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -347,15 +355,20 @@ void DiagramEditorModel::generateTempTrans(int nType,DiagramEditorTransformerBlo
|
|||
if(typ == TransformerType::twoWinding){
|
||||
generateItemByModel(_pCurTransLRoutes.value(0),1,QPoint(100,-25));
|
||||
generateItemByModel(_pCurTransLRoutes.value(2),1,QPoint(100,25));
|
||||
if(pInfo.mapNeutral.contains(0))
|
||||
pInfo.mapNeutral[0].delPoint = QPoint(100,-25);
|
||||
if(pInfo.mapNeutral.contains(2))
|
||||
pInfo.mapNeutral[2].delPoint = QPoint(100,25);
|
||||
}
|
||||
else if(typ == TransformerType::threeWinding){
|
||||
generateItemByModel(_pCurTransLRoutes.value(0),1,QPoint(100,-25));
|
||||
generateItemByModel(_pCurTransLRoutes.value(1),1,QPoint(-150,0));
|
||||
generateItemByModel(_pCurTransLRoutes.value(2),1,QPoint(100,25));
|
||||
if(pInfo.mapNeutral.contains(0))
|
||||
pInfo.mapNeutral[0].delPoint = QPoint(100,-25);
|
||||
if(pInfo.mapNeutral.contains(1))
|
||||
pInfo.mapNeutral[1].delPoint = QPoint(-150,0);
|
||||
if(pInfo.mapNeutral.contains(2))
|
||||
pInfo.mapNeutral[2].delPoint = QPoint(100,25);
|
||||
}
|
||||
|
||||
|
|
@ -646,7 +659,7 @@ void DiagramEditorModel::calculateBlockPos()
|
|||
pCon->setMidUpY(deltaY);
|
||||
pCon->setMidDownY(deltaY+50);
|
||||
pCon->setStartX(dDeltaX);
|
||||
dDeltaX += pCon->getWidth();
|
||||
dDeltaX += pCon->getWidth()+100;
|
||||
|
||||
//计算container中block中心点的位置
|
||||
auto mapBlocks = pCon->getBlockMap();
|
||||
|
|
@ -820,10 +833,12 @@ void DiagramEditorModel::refreshConnection()
|
|||
auto pFromData = pFromItem->getProperty();
|
||||
auto pToData = pToItem->getProperty();
|
||||
if(pFromData->type() == 1){ //from是母线
|
||||
pFromItem->movePort(fromTerId,pFromItem->mapFromScene(calculateBusPortPos(pFromItem,pToItem)));
|
||||
QPointF p = calculateBusPortPos(pFromItem,pToItem);
|
||||
pFromItem->movePort(fromTerId,pFromItem->mapFromScene(p));
|
||||
}
|
||||
else if(pToData->type() == 1){ //to是母线
|
||||
pToItem->movePort(toTerId,pToItem->mapFromScene(calculateBusPortPos(pToItem,pFromItem)));
|
||||
QPointF p = calculateBusPortPos(pToItem,pFromItem);
|
||||
pToItem->movePort(toTerId,pToItem->mapFromScene(p));
|
||||
}
|
||||
|
||||
auto portsFrom = pFromItem->getPorts();
|
||||
|
|
@ -835,6 +850,15 @@ void DiagramEditorModel::refreshConnection()
|
|||
pLine->setStartPoint(pFrom->scenePos());
|
||||
pLine->setEndPoint(pTo->scenePos());
|
||||
pLine->calculatePath();
|
||||
|
||||
PowerTerminal* pTopoFrom = TopologyManager::instance().getTerminal(fromTerId,ModelFunctionType::EditorModel);
|
||||
PowerTerminal* pTopoTo = TopologyManager::instance().getTerminal(toTerId,ModelFunctionType::EditorModel);
|
||||
if(pTopoFrom && pTopoTo){
|
||||
QPointF p1 = pFrom->pos();
|
||||
QPointF p2 = pTo->pos();
|
||||
pTopoFrom->setRelativePosition(p1);
|
||||
pTopoTo->setRelativePosition(p2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1059,14 +1083,8 @@ void DiagramEditorModel::generateOutConnection(QList<DiagramEditorComponentInfo>
|
|||
}
|
||||
}
|
||||
|
||||
QRectF DiagramEditorModel::updateTarget(QMap<QString,DiagramEditorRouteInfo>& data,QMap<QString,DiagramEditorComponentInfo>& compos,int nLayout,int nSource,bool regenerate,bool saveToModel)
|
||||
void DiagramEditorModel::clearCompoDir(QMap<QString,DiagramEditorRouteInfo>& data,QMap<QString,DiagramEditorComponentInfo>& compos,int nSource)
|
||||
{
|
||||
QRectF recBounding; //包含所有元件的矩形
|
||||
auto& mapRoute = data;
|
||||
QString sMainRoute;
|
||||
|
||||
if(regenerate){ //清空方位数据
|
||||
if(saveToModel){
|
||||
for(auto &routeInfo:data){
|
||||
routeInfo.lstOrder.clear();
|
||||
routeInfo.lstReverse.clear();
|
||||
|
|
@ -1081,10 +1099,13 @@ QRectF DiagramEditorModel::updateTarget(QMap<QString,DiagramEditorRouteInfo>& da
|
|||
pItemName->setData(0,Qt::UserRole+5); //旋转
|
||||
}
|
||||
}
|
||||
|
||||
for(auto &compoInfo:compos){
|
||||
compoInfo.nUsedDirection = 0;
|
||||
compoInfo.nRotate = 0;
|
||||
}
|
||||
}
|
||||
else{
|
||||
for(auto &routeInfo:data){
|
||||
/*for(auto &routeInfo:data){
|
||||
routeInfo.lstOrder.clear();
|
||||
routeInfo.lstReverse.clear();
|
||||
for(auto &compo:routeInfo.lstCompo){
|
||||
|
|
@ -1095,11 +1116,15 @@ QRectF DiagramEditorModel::updateTarget(QMap<QString,DiagramEditorRouteInfo>& da
|
|||
for(auto &compoInfo:compos){
|
||||
compoInfo.nUsedDirection = 0;
|
||||
compoInfo.nRotate = 0;
|
||||
//compoInfo.deltaPos = QPoint(0,0);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
QRectF DiagramEditorModel::updateTarget(QMap<QString,DiagramEditorRouteInfo>& data,QMap<QString,DiagramEditorComponentInfo>& compos,int nLayout,int nSource,bool saveToModel)
|
||||
{
|
||||
QRectF recBounding; //包含所有元件的矩形
|
||||
auto& mapRoute = data;
|
||||
QString sMainRoute;
|
||||
|
||||
bool hasMain = false;
|
||||
for(auto& route:mapRoute){
|
||||
if(route.bMainRoute == true){
|
||||
|
|
@ -2123,15 +2148,15 @@ QRectF DiagramEditorModel::updateTarget(QMap<QString,DiagramEditorRouteInfo>& da
|
|||
|
||||
if(!points.empty()){
|
||||
qreal minX = points[0].x();
|
||||
qreal maxX = points[0].x();
|
||||
qreal maxX = points[0].x()+g_nCompoWidth;
|
||||
qreal minY = points[0].y();
|
||||
qreal maxY = points[0].y();
|
||||
qreal maxY = points[0].y()+g_nCompoHeight;
|
||||
|
||||
for (const QPointF& point : points) {
|
||||
minX = qMin(minX, point.x());
|
||||
maxX = qMax(maxX, point.x());
|
||||
maxX = qMax(maxX, point.x()+g_nCompoWidth);
|
||||
minY = qMin(minY, point.y());
|
||||
maxY = qMax(maxY, point.y());
|
||||
maxY = qMax(maxY, point.y()+g_nCompoHeight);
|
||||
}
|
||||
|
||||
recBounding = QRectF(QPointF(minX, minY), QPointF(maxX, maxY));
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
#include "graphicsItem/electricConnectLineItem.h"
|
||||
#include "graphicsItem/electricPortItem.h"
|
||||
#include "graphicsItem/electricSvgGroupCT.h"
|
||||
#include "graphicsItem/electricSvgGroupPT.h"
|
||||
#include "graphicsItem/electricSvgItemDS.h"
|
||||
#include "graphicsItem/electricSvgItemES.h"
|
||||
#include "graphicsItem/electricSvgItemFES.h"
|
||||
|
|
@ -39,6 +40,7 @@
|
|||
#include "projectModelSetting.h"
|
||||
#include "bayManagerDlg.h"
|
||||
#include "projectModelManager.h"
|
||||
#include "projectIconSetting.h"
|
||||
#include "global.h"
|
||||
|
||||
bool FixedPortsModel::_dataInitialised = false;
|
||||
|
|
@ -49,6 +51,7 @@ FixedPortsModel::FixedPortsModel(PowerEntity* pEntity)
|
|||
,_Interface(nullptr)
|
||||
,_pEntity(pEntity)
|
||||
,m_proModelSettingDlg(nullptr)
|
||||
,m_projectIconSettingDlg(nullptr)
|
||||
,m_pBayManager(nullptr)
|
||||
{
|
||||
_cavas = nullptr;
|
||||
|
|
@ -156,7 +159,7 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
svg = DataBase::GetInstance()->ModelType()[3].icon;
|
||||
}
|
||||
else{
|
||||
svg = model.modelSetting.mapSvg.first();
|
||||
svg = ProjectModelManager::instance().getData()[sMeta][sProModel].modelSetting.mapUsedSvg["cb"];
|
||||
}
|
||||
|
||||
if(width == 0 && height == 0){
|
||||
|
|
@ -168,21 +171,11 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
dY = height;
|
||||
}
|
||||
|
||||
auto pCb = new ElectricSvgItemRect(QRect(0, 0, dX, dY),false);
|
||||
auto pCb = new ElectricSvgItemRect(QRect(-dX*0.5, -dY*0.5, dX, dY),false);
|
||||
pCb->setItemType(GIT_itemRect);
|
||||
pCb->loadSvg(svg);
|
||||
item = pCb;
|
||||
QJsonArray portArr = pro->context()["port"].toArray();
|
||||
/*for(QJsonValueRef portJson:portArr)
|
||||
{
|
||||
QJsonObject portObj = portJson.toObject();
|
||||
QString portId = portObj["portId"].toString();
|
||||
int x = portObj["x"].toInt();
|
||||
int y = portObj["y"].toInt();
|
||||
HandleType tye = HandleType(portObj["portType"].toInt());
|
||||
PortPos locate = PortPos(portObj["locate"].toInt());
|
||||
item->addPort(P_const,QPointF(x,y),portId,tye,locate);
|
||||
}*/
|
||||
addPortsToItem_json(P_const,portArr,item);
|
||||
}
|
||||
else if(type == GIT_node)
|
||||
|
|
@ -192,14 +185,6 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
item = pNode;
|
||||
|
||||
QJsonArray portArr = pro->context()["port"].toArray();
|
||||
/*for(QJsonValueRef portJson:portArr)
|
||||
{
|
||||
QJsonObject portObj = portJson.toObject();
|
||||
QString portId = portObj["portId"].toString();
|
||||
int x = portObj["x"].toInt();
|
||||
int y = portObj["y"].toInt();
|
||||
item->addPort(p_movable,QPointF(x,y),portId);
|
||||
}*/
|
||||
addPortsToItem_json(p_movable,portArr,item);
|
||||
}
|
||||
else if(type == GIT_bus)
|
||||
|
|
@ -210,7 +195,7 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
svg = DataBase::GetInstance()->ModelType()[1].icon;
|
||||
}
|
||||
else{
|
||||
svg = model.modelSetting.mapSvg.first();
|
||||
svg = ProjectModelManager::instance().getData()[sMeta][sProModel].modelSetting.mapUsedSvg["bus"];
|
||||
}
|
||||
|
||||
if(width == 0 && height == 0){
|
||||
|
|
@ -258,9 +243,8 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
dY = height;
|
||||
}
|
||||
|
||||
auto pCt = new ElectricSvgGroupCT(QRect(0, 0, dX, dY));
|
||||
auto pCt = new ElectricSvgGroupCT(QRect(-dX*0.5, -dY*0.5, dX, dY));
|
||||
pCt->setItemType(GIT_ctGroup);
|
||||
pCt->loadSvg(svg);
|
||||
item = pCt;
|
||||
QJsonArray portArr = pro->context()["port"].toArray();
|
||||
|
||||
|
|
@ -274,7 +258,7 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
svg = DataBase::GetInstance()->ModelType()[7].icon;
|
||||
}
|
||||
else{
|
||||
svg = model.modelSetting.mapSvg.first();
|
||||
svg = ProjectModelManager::instance().getData()[sMeta][sProModel].modelSetting.mapUsedSvg["ds"];
|
||||
}
|
||||
|
||||
if(width == 0 && height == 0){
|
||||
|
|
@ -286,7 +270,7 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
dY = height;
|
||||
}
|
||||
|
||||
auto pDs = new ElectricSvgItemDS(QRect(0, 0, dX, dY));
|
||||
auto pDs = new ElectricSvgItemDS(QRect(-dX*0.5, -dY*0.5, dX, dY));
|
||||
pDs->setItemType(GIT_DS);
|
||||
pDs->loadSvg(svg);
|
||||
item = pDs;
|
||||
|
|
@ -302,7 +286,7 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
svg = DataBase::GetInstance()->ModelType()[8].icon;
|
||||
}
|
||||
else{
|
||||
svg = model.modelSetting.mapSvg.first();
|
||||
svg = ProjectModelManager::instance().getData()[sMeta][sProModel].modelSetting.mapUsedSvg["es"];
|
||||
}
|
||||
|
||||
if(width == 0 && height == 0){
|
||||
|
|
@ -314,7 +298,7 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
dY = height;
|
||||
}
|
||||
|
||||
auto pEs = new ElectricSvgItemES(QRect(0, 0, dX, dY));
|
||||
auto pEs = new ElectricSvgItemES(QRect(-dX*0.5, -dY*0.5, dX, dY));
|
||||
pEs->setItemType(GIT_ES);
|
||||
pEs->loadSvg(svg);
|
||||
item = pEs;
|
||||
|
|
@ -330,7 +314,7 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
svg = DataBase::GetInstance()->ModelType()[9].icon;
|
||||
}
|
||||
else{
|
||||
svg = model.modelSetting.mapSvg.first();
|
||||
svg = ProjectModelManager::instance().getData()[sMeta][sProModel].modelSetting.mapUsedSvg["fes"];
|
||||
}
|
||||
|
||||
if(width == 0 && height == 0){
|
||||
|
|
@ -342,7 +326,7 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
dY = height;
|
||||
}
|
||||
|
||||
auto pFes = new ElectricSvgItemFES(QRect(0, 0, dX, dY));
|
||||
auto pFes = new ElectricSvgItemFES(QRect(-dX*0.5, -dY*0.5, dX, dY));
|
||||
pFes->setItemType(GIT_FES);
|
||||
pFes->loadSvg(svg);
|
||||
item = pFes;
|
||||
|
|
@ -358,7 +342,7 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
svg = DataBase::GetInstance()->ModelType()[10].icon;
|
||||
}
|
||||
else{
|
||||
svg = model.modelSetting.mapSvg.first();
|
||||
svg = ProjectModelManager::instance().getData()[sMeta][sProModel].modelSetting.mapUsedSvg["dteds"];
|
||||
}
|
||||
|
||||
if(width == 0 && height == 0){
|
||||
|
|
@ -370,7 +354,7 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
dY = height;
|
||||
}
|
||||
|
||||
auto pDteds = new ElectricSvgItemDTEDS(QRect(0, 0, dX, dY));
|
||||
auto pDteds = new ElectricSvgItemDTEDS(QRect(-dX*0.5, -dY*0.5, dX, dY));
|
||||
pDteds->setItemType(GIT_DTEDS);
|
||||
pDteds->loadSvg(svg);
|
||||
item = pDteds;
|
||||
|
|
@ -386,7 +370,7 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
svg = DataBase::GetInstance()->ModelType()[11].icon;
|
||||
}
|
||||
else{
|
||||
svg = model.modelSetting.mapSvg.first();
|
||||
svg = ProjectModelManager::instance().getData()[sMeta][sProModel].modelSetting.mapUsedSvg["potential_indicator"];
|
||||
}
|
||||
|
||||
if(width == 0 && height == 0){
|
||||
|
|
@ -398,7 +382,7 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
dY = height;
|
||||
}
|
||||
|
||||
auto pPi = new ElectricSvgItemPI(QRect(0, 0, dX, dY));
|
||||
auto pPi = new ElectricSvgItemPI(QRect(-dX*0.5, -dY*0.5, dX, dY));
|
||||
pPi->setItemType(GIT_PI);
|
||||
pPi->loadSvg(svg);
|
||||
item = pPi;
|
||||
|
|
@ -414,7 +398,7 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
svg = DataBase::GetInstance()->ModelType()[12].icon;
|
||||
}
|
||||
else{
|
||||
svg = model.modelSetting.mapSvg.first();
|
||||
svg = ProjectModelManager::instance().getData()[sMeta][sProModel].modelSetting.mapUsedSvg["lightning_arrester"];
|
||||
}
|
||||
|
||||
if(width == 0 && height == 0){
|
||||
|
|
@ -426,7 +410,7 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
dY = height;
|
||||
}
|
||||
|
||||
auto pLa = new ElectricSvgItemLA(QRect(0, 0, dX, dY));
|
||||
auto pLa = new ElectricSvgItemLA(QRect(-dX*0.5, -dY*0.5, dX, dY));
|
||||
pLa->setItemType(GIT_LA);
|
||||
pLa->loadSvg(svg);
|
||||
item = pLa;
|
||||
|
|
@ -442,7 +426,7 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
svg = DataBase::GetInstance()->ModelType()[13].icon;
|
||||
}
|
||||
else{
|
||||
svg = model.modelSetting.mapSvg.first();
|
||||
svg = ProjectModelManager::instance().getData()[sMeta][sProModel].modelSetting.mapUsedSvg["cable_termination"];
|
||||
}
|
||||
|
||||
if(width == 0 && height == 0){
|
||||
|
|
@ -454,7 +438,7 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
dY = height;
|
||||
}
|
||||
|
||||
auto pCt = new ElectricSvgItemCableTer(QRect(0, 0, dX, dY));
|
||||
auto pCt = new ElectricSvgItemCableTer(QRect(-dX*0.5, -dY*0.5, dX, dY));
|
||||
pCt->setItemType(GIT_cableTer);
|
||||
pCt->loadSvg(svg);
|
||||
item = pCt;
|
||||
|
|
@ -470,7 +454,7 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
svg = DataBase::GetInstance()->ModelType()[14].icon;
|
||||
}
|
||||
else{
|
||||
svg = model.modelSetting.mapSvg.first();
|
||||
svg = ProjectModelManager::instance().getData()[sMeta][sProModel].modelSetting.mapUsedSvg["cable_end"];
|
||||
}
|
||||
|
||||
if(width == 0 && height == 0){
|
||||
|
|
@ -482,7 +466,7 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
dY = height;
|
||||
}
|
||||
|
||||
auto pCe = new ElectricSvgItemCableEnd(QRect(0, 0, dX, dY));
|
||||
auto pCe = new ElectricSvgItemCableEnd(QRect(-dX*0.5, -dY*0.5, dX, dY));
|
||||
pCe->setItemType(GIT_cableEnd);
|
||||
pCe->loadSvg(svg);
|
||||
item = pCe;
|
||||
|
|
@ -490,7 +474,62 @@ void FixedPortsModel::addNodeItem(QUuid id/*,int type*/,QPointF pos,double width
|
|||
|
||||
addPortsToItem_json(P_const,portArr,item);
|
||||
}
|
||||
else if(type == GIT_2wTransformer)
|
||||
{
|
||||
PropertyModel model = ProjectModelManager::instance().getData()[sMeta][sProModel];
|
||||
QByteArray svg;
|
||||
if(model.modelSetting.mapSvg.isEmpty()){
|
||||
svg = DataBase::GetInstance()->ModelType()[15].icon;
|
||||
}
|
||||
else{
|
||||
svg = ProjectModelManager::instance().getData()[sMeta][sProModel].modelSetting.mapUsedSvg["transformer_2w"];
|
||||
}
|
||||
|
||||
if(width == 0 && height == 0){
|
||||
dX = 100;
|
||||
dY = 100;
|
||||
}
|
||||
else{
|
||||
dX = width;
|
||||
dY = height;
|
||||
}
|
||||
|
||||
auto p2w = new ElectricSvgItem2wTransformer(QRect(-dX*0.5, -dY*0.5, dX, dY));
|
||||
p2w->setItemType(GIT_2wTransformer);
|
||||
p2w->loadSvg(svg);
|
||||
item = p2w;
|
||||
QJsonArray portArr = pro->context()["port"].toArray();
|
||||
|
||||
addPortsToItem_json(P_const,portArr,item);
|
||||
}
|
||||
else if(type == GIT_3wTransformer)
|
||||
{
|
||||
PropertyModel model = ProjectModelManager::instance().getData()[sMeta][sProModel];
|
||||
QByteArray svg;
|
||||
if(model.modelSetting.mapSvg.isEmpty()){
|
||||
svg = DataBase::GetInstance()->ModelType()[15].icon;
|
||||
}
|
||||
else{
|
||||
svg = ProjectModelManager::instance().getData()[sMeta][sProModel].modelSetting.mapUsedSvg["transformer_3w"];
|
||||
}
|
||||
|
||||
if(width == 0 && height == 0){
|
||||
dX = 100;
|
||||
dY = 100;
|
||||
}
|
||||
else{
|
||||
dX = width;
|
||||
dY = height;
|
||||
}
|
||||
|
||||
auto p3w = new ElectricSvgItem3wTransformer(QRect(-dX*0.5, -dY*0.5, dX, dY));
|
||||
p3w->setItemType(GIT_3wTransformer);
|
||||
p3w->loadSvg(svg);
|
||||
item = p3w;
|
||||
QJsonArray portArr = pro->context()["port"].toArray();
|
||||
|
||||
addPortsToItem_json(P_const,portArr,item);
|
||||
}
|
||||
if(item)
|
||||
{
|
||||
item->setItemId(id);
|
||||
|
|
@ -974,6 +1013,9 @@ void FixedPortsModel::onSignal_generateDiagram(const QString& sName)
|
|||
for(auto& item:_baseItem){
|
||||
BaseModelProperty* pBase = dynamic_cast<BaseModelProperty*>(item->getProperty());
|
||||
if(pBase){
|
||||
int nType = pBase->type();
|
||||
if(nType == 0) //为节点等无属性对象时跳过
|
||||
continue;
|
||||
QString sModel = pBase->getModelProperty().modelSetting.modelName;
|
||||
if(sModel.isEmpty()){
|
||||
lstInfo.append(pBase->name());
|
||||
|
|
@ -1023,8 +1065,8 @@ void FixedPortsModel::addPortsToItem_json(PortState sta,QJsonArray jArr,Graphics
|
|||
{
|
||||
QJsonObject portObj = portJson.toObject();
|
||||
QString portId = portObj["portId"].toString();
|
||||
int x = portObj["x"].toInt();
|
||||
int y = portObj["y"].toInt();
|
||||
double x = portObj["x"].toDouble();
|
||||
double y = portObj["y"].toDouble();
|
||||
if(sta == P_const){
|
||||
HandleType tye = HandleType(portObj["portType"].toInt());
|
||||
PortPos locate = PortPos(portObj["locate"].toInt());
|
||||
|
|
@ -1151,10 +1193,15 @@ void FixedPortsModel::createTopoTerminalsByData(PowerEntity* pParent,QJsonObject
|
|||
case T_lineInOut:
|
||||
terType = TerminalType::PowerConnect;
|
||||
break;
|
||||
case T_newTral:
|
||||
terType = TerminalType::NewTral;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
TopologyManager::instance().createTerminal(pParent->id(),terType,"",QPointF(x,y),portId,funType);
|
||||
auto pTer = TopologyManager::instance().createTerminal(pParent->id(),terType,"",QPointF(x,y),portId,funType);
|
||||
if(pTer)
|
||||
pTer->setPortLocate(locate);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1171,6 +1218,35 @@ void FixedPortsModel::insertProjectModelName(QString uuid,QString name)
|
|||
if(!_projectModelName.contains(uuid))
|
||||
_projectModelName.insert(uuid,name);
|
||||
}
|
||||
|
||||
void FixedPortsModel::showProjectIconSettingDlg(GraphicsProjectModelItem* pItem)
|
||||
{
|
||||
if(m_projectIconSettingDlg == nullptr)
|
||||
{
|
||||
m_projectIconSettingDlg = new ProjectIconSetting(_widget);
|
||||
m_projectIconSettingDlg->setController(this);
|
||||
}
|
||||
m_projectIconSettingDlg->showDlg(pItem);
|
||||
}
|
||||
|
||||
void FixedPortsModel::updateItemIcon(QString sMeta,QString sModel)
|
||||
{
|
||||
for(auto &pItem:_nodeItem){
|
||||
auto pro = pItem->getProperty();
|
||||
QString sMe = pro->metaModelName();
|
||||
QString sMo = pro->modelName();
|
||||
if(sMeta == sMe && sModel == sMo){
|
||||
auto pI = dynamic_cast<ElectricSvgItem*>(pItem);
|
||||
auto pG = dynamic_cast<ElectricSvgGroup*>(pItem);
|
||||
if(pI){
|
||||
pI->updateMapSvg(ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg);
|
||||
}
|
||||
if(pG){
|
||||
pG->updateMapSvg(ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/*********************baseModel**********************/
|
||||
|
||||
QMap<QUuid,GraphicsBaseModelItem*>& FixedPortsModel::allBaseItems()
|
||||
|
|
@ -1308,6 +1384,9 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
GraphicsBaseModelItem* pBaseItem = _baseItem.value(pBase->uuid());
|
||||
pPro->setSourceItemId(pBaseItem->itemId().toString()); //设置被哪个对象生成
|
||||
pPro->setMetaModelName(pBase->metaModelName()); //传递基模名
|
||||
|
||||
QString sMeta = pBase->metaModelName();
|
||||
QString sModel = pBase->modelName();
|
||||
int type = pBase->graphicsType();
|
||||
if(type == GIT_baseNode)
|
||||
{
|
||||
|
|
@ -1324,8 +1403,10 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
else{
|
||||
svg = pBase->getModelProperty().modelSetting.mapSvg.first();
|
||||
}
|
||||
ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg["bus"] = svg; //初始化使用的图标
|
||||
QRectF rec = pBaseItem->boundingRect();
|
||||
auto pBus = new ElectricSvgItemBus(rec.toRect());
|
||||
pBus->updateMapSvg(ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg);
|
||||
pBus->loadSvg(svg);
|
||||
pProItem = pBus;
|
||||
pProItem->setItemType(GIT_bus);
|
||||
|
|
@ -1339,8 +1420,10 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
else{
|
||||
svg = pBase->getModelProperty().modelSetting.mapSvg.first();
|
||||
}
|
||||
ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg["cb"] = svg;
|
||||
QRectF rec = pBaseItem->boundingRect();
|
||||
auto pBreaker = new ElectricSvgItemRect(rec.toRect());
|
||||
pBreaker->updateMapSvg(ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg);
|
||||
pBreaker->loadSvg(svg);
|
||||
pProItem = pBreaker;
|
||||
pProItem->setItemType(GIT_itemRect);
|
||||
|
|
@ -1354,14 +1437,35 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
else{
|
||||
svg = pBase->getModelProperty().modelSetting.mapSvg.first();
|
||||
}
|
||||
ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg["ct"] = svg;
|
||||
ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg["zsct"] = svg;
|
||||
QRectF rec = pBaseItem->boundingRect();
|
||||
auto pCtGroup = new ElectricSvgGroupCT(rec.toRect());
|
||||
pCtGroup->updateMapSvg(ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg);
|
||||
pCtGroup->setGroupType(1);
|
||||
pCtGroup->setLayout(1);
|
||||
pCtGroup->loadSvg(svg);
|
||||
pProItem = pCtGroup;
|
||||
pProItem->setItemType(GIT_ctGroup);
|
||||
}
|
||||
else if(type == GIT_basePT)
|
||||
{
|
||||
QByteArray svg;
|
||||
if(pBase->getModelProperty().modelSetting.mapSvg.isEmpty()){
|
||||
svg = DataBase::GetInstance()->ModelType()[6].icon;
|
||||
}
|
||||
else{
|
||||
svg = pBase->getModelProperty().modelSetting.mapSvg.first();
|
||||
}
|
||||
ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg["y"] = svg;
|
||||
ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg["z"] = svg;
|
||||
QRectF rec = pBaseItem->boundingRect();
|
||||
auto pPtGroup = new ElectricSvgGroupPT(rec.toRect());
|
||||
pPtGroup->updateMapSvg(ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg);
|
||||
pPtGroup->setGroupType(1);
|
||||
pPtGroup->setLayout(1);
|
||||
pProItem = pPtGroup;
|
||||
pProItem->setItemType(GIT_ctGroup);
|
||||
}
|
||||
else if(type == GIT_baseES)
|
||||
{
|
||||
QByteArray svg;
|
||||
|
|
@ -1371,8 +1475,10 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
else{
|
||||
svg = pBase->getModelProperty().modelSetting.mapSvg.first();
|
||||
}
|
||||
ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg["es"] = svg;
|
||||
QRectF rec = pBaseItem->boundingRect();
|
||||
auto pEs = new ElectricSvgItemES(rec.toRect());
|
||||
pEs->updateMapSvg(ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg);
|
||||
pEs->loadSvg(svg);
|
||||
pProItem = pEs;
|
||||
pProItem->setItemType(GIT_ES);
|
||||
|
|
@ -1386,6 +1492,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
else{
|
||||
svg = pBase->getModelProperty().modelSetting.mapSvg.first();
|
||||
}
|
||||
ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg["ds"] = svg;
|
||||
QRectF rec = pBaseItem->boundingRect();
|
||||
auto pDs = new ElectricSvgItemDS(rec.toRect());
|
||||
pDs->loadSvg(svg);
|
||||
|
|
@ -1401,6 +1508,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
else{
|
||||
svg = pBase->getModelProperty().modelSetting.mapSvg.first();
|
||||
}
|
||||
ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg["fes"] = svg;
|
||||
QRectF rec = pBaseItem->boundingRect();
|
||||
auto pFes = new ElectricSvgItemFES(rec.toRect());
|
||||
pFes->loadSvg(svg);
|
||||
|
|
@ -1416,6 +1524,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
else{
|
||||
svg = pBase->getModelProperty().modelSetting.mapSvg.first();
|
||||
}
|
||||
ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg["dteds"] = svg;
|
||||
QRectF rec = pBaseItem->boundingRect();
|
||||
auto pDteds = new ElectricSvgItemDTEDS(rec.toRect());
|
||||
pDteds->loadSvg(svg);
|
||||
|
|
@ -1431,6 +1540,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
else{
|
||||
svg = pBase->getModelProperty().modelSetting.mapSvg.first();
|
||||
}
|
||||
ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg["potential_indicator"] = svg;
|
||||
QRectF rec = pBaseItem->boundingRect();
|
||||
auto pPi = new ElectricSvgItemPI(rec.toRect());
|
||||
pPi->loadSvg(svg);
|
||||
|
|
@ -1446,6 +1556,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
else{
|
||||
svg = pBase->getModelProperty().modelSetting.mapSvg.first();
|
||||
}
|
||||
ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg["lightning_arrester"] = svg;
|
||||
QRectF rec = pBaseItem->boundingRect();
|
||||
auto pLa = new ElectricSvgItemLA(rec.toRect());
|
||||
pLa->loadSvg(svg);
|
||||
|
|
@ -1461,6 +1572,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
else{
|
||||
svg = pBase->getModelProperty().modelSetting.mapSvg.first();
|
||||
}
|
||||
ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg["cable_termination"] = svg;
|
||||
QRectF rec = pBaseItem->boundingRect();
|
||||
auto pCt = new ElectricSvgItemCableTer(rec.toRect());
|
||||
pCt->loadSvg(svg);
|
||||
|
|
@ -1476,6 +1588,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
else{
|
||||
svg = pBase->getModelProperty().modelSetting.mapSvg.first();
|
||||
}
|
||||
ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg["cable_end"] = svg;
|
||||
QRectF rec = pBaseItem->boundingRect();
|
||||
auto pCe = new ElectricSvgItemCableEnd(rec.toRect());
|
||||
pCe->loadSvg(svg);
|
||||
|
|
@ -1491,6 +1604,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
else{
|
||||
svg = pBase->getModelProperty().modelSetting.mapSvg.first();
|
||||
}
|
||||
ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg["transformer_2w"] = svg;
|
||||
QRectF rec = pBaseItem->boundingRect();
|
||||
auto p2w = new ElectricSvgItem2wTransformer(rec.toRect());
|
||||
p2w->loadSvg(svg);
|
||||
|
|
@ -1506,6 +1620,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
else{
|
||||
svg = pBase->getModelProperty().modelSetting.mapSvg.first();
|
||||
}
|
||||
ProjectModelManager::instance().getData()[sMeta][sModel].modelSetting.mapUsedSvg["transformer_3w"] = svg;
|
||||
QRectF rec = pBaseItem->boundingRect();
|
||||
auto p3w = new ElectricSvgItem3wTransformer(rec.toRect());
|
||||
p3w->loadSvg(svg);
|
||||
|
|
@ -1522,6 +1637,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
|
||||
if(pBase->graphicsType() != GIT_baseLine) //非连接线对象
|
||||
{
|
||||
if(pProItem){
|
||||
PowerEntity* pEntity = TopologyManager::instance().createEntity(EntityType::Component,pPro->uuid().toString(),pBase->name());
|
||||
QList<PowerTerminal*> lstBase = TopologyManager::instance().getTerminalsForEntity(pBase->uuid().toString(),ModelFunctionType::BaseModel); //获取基模的逻辑点
|
||||
for(auto& baseTer:lstBase)
|
||||
|
|
@ -1529,7 +1645,8 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
QUuid uid = QUuid::createUuid();
|
||||
double dPerX = baseTer->getPerX();
|
||||
double dPerY = baseTer->getPerY();
|
||||
PowerTerminal* proTer = TopologyManager::instance().createTerminal(pEntity->id(),baseTer->type(),"",baseTer->relativePosition(),uid.toString(),ModelFunctionType::ProjectModel,dPerX,dPerY);
|
||||
QPointF pRelaPos = baseTer->relativePosition();
|
||||
PowerTerminal* proTer = TopologyManager::instance().createTerminal(pEntity->id(),baseTer->type(),"",pRelaPos,uid.toString(),ModelFunctionType::ProjectModel,dPerX,dPerY);
|
||||
proTer->setGenerateBy(baseTer->id());
|
||||
if(proTer->type() == TerminalType::PowerConnect)
|
||||
{
|
||||
|
|
@ -1537,6 +1654,11 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
ItemPort* pPort = pProItem->getPortById(proTer->id());
|
||||
pPort->setSourcePortId(baseTer->id());
|
||||
}
|
||||
else if(proTer->type() == TerminalType::NewTral){
|
||||
pProItem->addPort(P_const,proTer->relativePosition(),proTer->id(),T_newTral,PortPos(baseTer->getPortLocate()));
|
||||
ItemPort* pPort = pProItem->getPortById(proTer->id());
|
||||
pPort->setSourcePortId(baseTer->id());
|
||||
}
|
||||
else if(proTer->type() == TerminalType::PowerInput || proTer->type() == TerminalType::PowerOutput)
|
||||
{
|
||||
HandleType typ;
|
||||
|
|
@ -1547,8 +1669,8 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
typ = T_lineOut;
|
||||
}
|
||||
QPointF pos = proTer->relativePosition();
|
||||
PortPos locate;
|
||||
if(pos.x() < 0)
|
||||
PortPos locate = PortPos(baseTer->getPortLocate());
|
||||
/*if(pos.x() < 0)
|
||||
{
|
||||
locate = P_left;
|
||||
}
|
||||
|
|
@ -1563,7 +1685,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
else if(pos.y() < 0)
|
||||
{
|
||||
locate = P_top;
|
||||
}
|
||||
}*/
|
||||
pProItem->addPort(P_const,pos,proTer->id(),typ,locate,dPerX,dPerY);
|
||||
|
||||
ItemPort* pPort = pProItem->getPortById(proTer->id());
|
||||
|
|
@ -1582,6 +1704,7 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
//pProItem->setModelName(sModel);
|
||||
pPanel->getModelController()->addNodeItem(QUuid(pEntity->id()),pProItem);
|
||||
}
|
||||
}
|
||||
else //连接线对象
|
||||
{
|
||||
PowerConnection* pCon = TopologyManager::instance().connection(pBase->uuid().toString(),ModelFunctionType::BaseModel);
|
||||
|
|
@ -1675,8 +1798,11 @@ void FixedPortsModel::addProjectItemByBaseData(DrawingPanel* pPanel,GraphicsBase
|
|||
pPro->setConnection(Connection(QUuid(proFromItemId),QUuid(proFromTerId),proFromType,proFromPos,QUuid(proToItemId),QUuid(proToTerId),proToType,proToPos));
|
||||
}
|
||||
}
|
||||
QString sModel = pBase->getModelProperty().modelSetting.modelName;
|
||||
//QString sModel = pBase->getModelProperty().modelSetting.modelName;
|
||||
if(pProItem){
|
||||
pProItem->setModelName(sModel);
|
||||
pProItem->setRotation(pItem->rotation());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -102,28 +102,15 @@ void ElectricSvgGroup::move(const QPointF& point)
|
|||
moveBy(point.x(), point.y());
|
||||
}
|
||||
|
||||
void ElectricSvgGroup::loadSvg(const QByteArray& data)
|
||||
void ElectricSvgGroup::updateMapSvg(QMap<QString,QByteArray> map)
|
||||
{
|
||||
if(_groupType == 0){ //联合
|
||||
|
||||
}
|
||||
else if(_groupType == 1){ //聚合
|
||||
m_curSvg = data; //保存图片到组
|
||||
for(auto pItem:m_childItems){
|
||||
auto pSvg = dynamic_cast<ElectricSvgItem*>(pItem);
|
||||
if(pSvg){
|
||||
pSvg->loadSvg(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
m_mapSvg = map;
|
||||
}
|
||||
|
||||
void ElectricSvgGroup::addSvgItem(ElectricSvgItem* item)
|
||||
{
|
||||
item->setParentItem(this); // 关键:设置父项
|
||||
m_childItems.append(item);
|
||||
if(!m_curSvg.isEmpty())
|
||||
item->loadSvg(m_curSvg);
|
||||
updateLayout();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,10 +23,13 @@ ElectricSvgGroupCT::~ElectricSvgGroupCT()
|
|||
|
||||
}
|
||||
|
||||
void ElectricSvgGroupCT::setupFinish(int nType,int nSize)
|
||||
void ElectricSvgGroupCT::setupFinish(QVariant var)
|
||||
{
|
||||
_nType = nType;
|
||||
_nSize = nSize;
|
||||
if(var.canConvert<QPair<int,int>>()){
|
||||
QPair<int,int> pair = var.value<QPair<int,int>>();
|
||||
_nType = pair.first;
|
||||
_nSize = pair.second;
|
||||
}
|
||||
updateItem();
|
||||
}
|
||||
|
||||
|
|
@ -56,6 +59,7 @@ void ElectricSvgGroupCT::updateItem()
|
|||
ElectricSvgItemCT* p = new ElectricSvgItemCT(rec);
|
||||
p->setItemType(_nType);
|
||||
p->setMoveable(false);
|
||||
p->loadSvg(m_mapSvg["ct"]);
|
||||
addSvgItem(p);
|
||||
}
|
||||
}
|
||||
|
|
@ -63,6 +67,7 @@ void ElectricSvgGroupCT::updateItem()
|
|||
ElectricSvgItemCT* p = new ElectricSvgItemCT(rec);
|
||||
p->setItemType(_nType);
|
||||
p->setMoveable(false);
|
||||
p->loadSvg(m_mapSvg["zsct"]);
|
||||
addSvgItem(p);
|
||||
}
|
||||
updateTerPos();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,140 @@
|
|||
#include "graphicsItem/electricSvgGroupPT.h"
|
||||
#include "graphicsItem/electricSvgItemPT.h"
|
||||
#include "global.h"
|
||||
|
||||
#include <QPainter>
|
||||
#include <QStyleOption>
|
||||
#include <QGraphicsScene>
|
||||
#include <QGraphicsView>
|
||||
|
||||
ElectricSvgGroupPT::ElectricSvgGroupPT(const QRect &rect, QGraphicsItem *parent)
|
||||
: ElectricSvgGroup(rect,parent)
|
||||
{
|
||||
setHandleIfShow(H_textCaption,false);
|
||||
setHandleVisible(false);
|
||||
setFunctionHandleIfShow(false);
|
||||
setFunctionHandleEnaable(false);
|
||||
}
|
||||
|
||||
ElectricSvgGroupPT::~ElectricSvgGroupPT()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void ElectricSvgGroupPT::setupFinish(QVariant var)
|
||||
{
|
||||
if(var.canConvert<QList<int>>()){
|
||||
QList<int> lst = var.value<QList<int>>();
|
||||
m_lstType = lst;
|
||||
}
|
||||
updateItem();
|
||||
}
|
||||
|
||||
void ElectricSvgGroupPT::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
|
||||
{
|
||||
ElectricSvgGroup::paint(painter,option,widget);
|
||||
|
||||
if(m_childItems.isEmpty()){ //无对象时绘制提示框
|
||||
QPen pen(Qt::lightGray);
|
||||
pen.setStyle(Qt::DotLine);
|
||||
painter->setPen(pen);
|
||||
painter->drawRect(m_boundingRect);
|
||||
}
|
||||
}
|
||||
|
||||
void ElectricSvgGroupPT::updateItem()
|
||||
{
|
||||
for(auto pItem:m_childItems){
|
||||
delete pItem;
|
||||
}
|
||||
m_childItems.clear();
|
||||
|
||||
QRect rec(0,0,30,30);
|
||||
for(int i = 0;i < m_lstType.size();++i){
|
||||
|
||||
ElectricSvgItemPT* p = new ElectricSvgItemPT(rec);
|
||||
if(m_lstType[i] == 1){
|
||||
p->loadSvg(m_mapSvg["y"]);
|
||||
p->setItemType(1);
|
||||
}
|
||||
else{
|
||||
p->loadSvg(m_mapSvg["z"]);
|
||||
p->setItemType(0);
|
||||
}
|
||||
p->setMoveable(false);
|
||||
addSvgItem(p);
|
||||
}
|
||||
updateTerPos();
|
||||
}
|
||||
|
||||
void ElectricSvgGroupPT::updateLayout()
|
||||
{
|
||||
if (m_childItems.isEmpty()) return;
|
||||
|
||||
// 获取所有子项
|
||||
//QList<QGraphicsItem*> children = childItems();
|
||||
int n = m_childItems.size();
|
||||
|
||||
if (n == 0) return;
|
||||
|
||||
// 中心点
|
||||
QPointF center(0, 0); // 假设以当前item的坐标系中心为布局中心
|
||||
|
||||
// 圆的半径(假设所有子项大小相同)
|
||||
qreal radius = m_childItems.first()->boundingRect().width()*0.5; // 根据需要调整
|
||||
|
||||
// 布局半径(子项中心到布局中心的距离)
|
||||
qreal layoutRadius = radius * 1; // 根据需要调整
|
||||
|
||||
switch(n) {
|
||||
case 1:
|
||||
// 单个子项放在中心
|
||||
m_childItems[0]->setPos(center);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
// 两个子项上下排列
|
||||
m_childItems[0]->setPos(center.x(), center.y() - layoutRadius);
|
||||
m_childItems[1]->setPos(center.x(), center.y() + layoutRadius);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
// 三个子项三角形排列
|
||||
for (int i = 0; i < 3; ++i) {
|
||||
qreal angle = 2 * M_PI * i / 3 - M_PI / 2; // 从顶部开始
|
||||
m_childItems[i]->setPos(center.x() + layoutRadius * cos(angle),
|
||||
center.y() + layoutRadius * sin(angle));
|
||||
}
|
||||
break;
|
||||
|
||||
case 4:
|
||||
// 四个子项正方形排列
|
||||
for (int i = 0; i < 4; ++i) {
|
||||
qreal angle = 2 * M_PI * i / 4 - M_PI / 4; // 从右上角开始
|
||||
m_childItems[i]->setPos(center.x() + layoutRadius * cos(angle),
|
||||
center.y() + layoutRadius * sin(angle));
|
||||
}
|
||||
break;
|
||||
|
||||
case 5:
|
||||
// 五个子项五角星排列
|
||||
for (int i = 0; i < 5; ++i) {
|
||||
qreal angle = 2 * M_PI * i / 5 - M_PI / 2; // 从顶部开始
|
||||
m_childItems[i]->setPos(center.x() + layoutRadius * cos(angle),
|
||||
center.y() + layoutRadius * sin(angle));
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
// 对于多于5个的情况,使用圆形排列
|
||||
for (int i = 0; i < n; ++i) {
|
||||
qreal angle = 2 * M_PI * i / n;
|
||||
m_childItems[i]->setPos(center.x() + layoutRadius * cos(angle),
|
||||
center.y() + layoutRadius * sin(angle));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
updateBoundRect();
|
||||
}
|
||||
|
||||
|
|
@ -113,9 +113,14 @@ void ElectricSvgItem::move(const QPointF& point)
|
|||
moveBy(point.x(), point.y());
|
||||
}
|
||||
|
||||
void ElectricSvgItem::loadSvg(const QByteArray& data)
|
||||
void ElectricSvgItem::loadSvg(QByteArray b)
|
||||
{
|
||||
m_pRender = new QSvgRenderer(data);
|
||||
m_pRender = new QSvgRenderer(b);
|
||||
}
|
||||
|
||||
void ElectricSvgItem::updateMapSvg(QMap<QString,QByteArray> map)
|
||||
{
|
||||
m_mapSvg = map;
|
||||
}
|
||||
|
||||
void ElectricSvgItem::editShape(int nHandle,const QPointF& ptMouse)
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
#include "graphicsItem/itemPort.h"
|
||||
#include "graphicsItem/electricConnectLineItem.h"
|
||||
|
||||
#include <QSvgRenderer>
|
||||
#include <QPainter>
|
||||
#include <QStyleOption>
|
||||
#include <QJsonArray>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,30 @@
|
|||
#include "graphicsItem/electricSvgItemPT.h"
|
||||
#include "global.h"
|
||||
|
||||
#include <QSvgRenderer>
|
||||
#include <QPainter>
|
||||
#include <QStyleOption>
|
||||
#include <QGraphicsScene>
|
||||
#include <QGraphicsView>
|
||||
|
||||
ElectricSvgItemPT::ElectricSvgItemPT(const QRect &rect, QGraphicsItem *parent)
|
||||
: ElectricSvgItem(rect,parent)
|
||||
{
|
||||
setFlag(QGraphicsItem::ItemIsSelectable, false);
|
||||
setFlag(QGraphicsItem::ItemIsFocusable, false);
|
||||
setAcceptedMouseButtons(Qt::NoButton);
|
||||
}
|
||||
|
||||
ElectricSvgItemPT::~ElectricSvgItemPT()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void ElectricSvgItemPT::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
|
||||
{
|
||||
if (!m_pRender || !m_pRender->isValid())
|
||||
return;
|
||||
m_pRender->render(painter, m_boundingRect);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
#include "graphicsItem/itemPort.h"
|
||||
#include "global.h"
|
||||
|
||||
#include <QSvgRenderer>
|
||||
#include <QPainter>
|
||||
#include <QStyleOption>
|
||||
#include <QGraphicsScene>
|
||||
|
|
@ -32,7 +33,6 @@ ElectricSvgItemRect::~ElectricSvgItemRect()
|
|||
|
||||
}
|
||||
|
||||
|
||||
void ElectricSvgItemRect::updateHandles()
|
||||
{
|
||||
ElectricSvgItem::updateHandles();
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ ItemPropertyDlg::ItemPropertyDlg(QWidget *parent)
|
|||
,_curModelController(nullptr)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
|
||||
this->setWindowFlags(Qt::FramelessWindowHint |Qt::WindowStaysOnTopHint | windowFlags());
|
||||
initial();
|
||||
}
|
||||
|
||||
|
|
@ -88,8 +88,7 @@ void ItemPropertyDlg::onOkClicked()
|
|||
if(!mapPro.empty())
|
||||
DataManager::instance().updateModelData(_curModel,curUuid_,iter.key(),mapPro);
|
||||
|
||||
|
||||
if(nType == 4){ //ct
|
||||
if(nType == 4 && iter.key() == "base_extend"){ //ct
|
||||
int nCtSize = 0; //ct设置的个数
|
||||
int nCtType = 0; //ct类型 1三相0零相
|
||||
if(mapPro.contains("ct_winding")){
|
||||
|
|
@ -105,11 +104,34 @@ void ItemPropertyDlg::onOkClicked()
|
|||
nCtType = val.defaultValue.toInt();
|
||||
}
|
||||
|
||||
if(_curItem){
|
||||
_curItem->setupFinish(nCtType,nCtSize);
|
||||
QPair<int,int> pair(nCtType,nCtSize);
|
||||
QVariant var = QVariant::fromValue(pair);
|
||||
_curItem->setupFinish(var);
|
||||
}
|
||||
else if(nType == 5 && iter.key() == "base_extend"){ //pt
|
||||
QList<int> lst; //二次绕组接法
|
||||
if(mapPro.contains("pt_sec_winding")){
|
||||
propertyStateInfo val = mapPro.value("pt_sec_winding");
|
||||
QJsonObject obj = val.defaultValue.toJsonObject();
|
||||
QJsonArray arr = obj["winding"].toArray();
|
||||
for (QJsonValueRef jsonObj : arr)
|
||||
{
|
||||
QJsonObject node = jsonObj.toObject();
|
||||
QString sWinding = node["windingConnectionMethod"].toString();
|
||||
if(sWinding == "Y"){
|
||||
lst.append(1);
|
||||
}
|
||||
else{
|
||||
lst.append(0);
|
||||
}
|
||||
}
|
||||
|
||||
QVariant var = QVariant::fromValue(lst);
|
||||
_curItem->setupFinish(var);
|
||||
}
|
||||
}
|
||||
}
|
||||
_curItem = nullptr;
|
||||
hide();
|
||||
}
|
||||
|
||||
|
|
@ -152,7 +174,9 @@ void ItemPropertyDlg::createGroupView(const QString& str)
|
|||
BaseContentDlg* contentDlg = nullptr;
|
||||
BaseProperty* pPro = BasePropertyManager::instance().findEntityData(curUuid_);
|
||||
if(str == QString("component") || str == QString::fromWCharArray(L"基本信息")){
|
||||
contentDlg = new BaseInfoDlg(ui->stackedWidget);
|
||||
auto pDlg = new BaseInfoDlg(ui->stackedWidget);
|
||||
pDlg->setParentDlg(this);
|
||||
contentDlg = pDlg;
|
||||
}
|
||||
else if(str == "base_extend" || str == QString::fromWCharArray(L"扩展信息")){
|
||||
if(pPro->type() == 4)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,54 @@
|
|||
#include "projectIconSelectionDlg.h"
|
||||
#include <QSvgRenderer>
|
||||
#include <QPainter>
|
||||
#include <QPixmap>
|
||||
|
||||
ProjectIconSelectionDlg::ProjectIconSelectionDlg(const QMap<QString,QByteArray> mapSvg,QWidget* parent)
|
||||
: QDialog(parent),svgMap(mapSvg)
|
||||
{
|
||||
|
||||
this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint| windowFlags());
|
||||
setWindowTitle("选择SVG图标");
|
||||
resize(400, 300);
|
||||
|
||||
QVBoxLayout* layout = new QVBoxLayout(this);
|
||||
|
||||
listWidget = new QListWidget(this);
|
||||
listWidget->setIconSize(QSize(32, 32));
|
||||
listWidget->setViewMode(QListWidget::IconMode);
|
||||
listWidget->setResizeMode(QListWidget::Adjust);
|
||||
listWidget->setStyleSheet(
|
||||
"QListWidget::item:selected {"
|
||||
" background: #4e72b8;"
|
||||
" color: palette(HighlightedText);"
|
||||
"}"
|
||||
);
|
||||
|
||||
for (auto& svgData : svgMap) {
|
||||
QSvgRenderer renderer(svgData);
|
||||
QPixmap pixmap(32, 32);
|
||||
pixmap.fill(Qt::white);
|
||||
QPainter painter(&pixmap);
|
||||
renderer.render(&painter);
|
||||
|
||||
QListWidgetItem* item = new QListWidgetItem(QIcon(pixmap), "");
|
||||
item->setData(Qt::UserRole, svgData);
|
||||
listWidget->addItem(item);
|
||||
}
|
||||
|
||||
QDialogButtonBox* buttonBox = new QDialogButtonBox(
|
||||
QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
|
||||
|
||||
layout->addWidget(listWidget);
|
||||
layout->addWidget(buttonBox);
|
||||
|
||||
connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
|
||||
connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
|
||||
}
|
||||
|
||||
QByteArray ProjectIconSelectionDlg::selectedSVG() const {
|
||||
if (listWidget->currentItem()) {
|
||||
return listWidget->currentItem()->data(Qt::UserRole).toByteArray();
|
||||
}
|
||||
return QByteArray();
|
||||
}
|
||||
|
|
@ -0,0 +1,139 @@
|
|||
#include "projectIconSetting.h"
|
||||
#include "ui_projectIconSetting.h"
|
||||
#include "graphicsDataModel/fixedPortsModel.h"
|
||||
#include "projectIconSelectionDlg.h"
|
||||
#include "graphicsItem/graphicsBaseItem.h"
|
||||
#include "baseProperty.h"
|
||||
#include "projectModelManager.h"
|
||||
#include <QSvgRenderer>
|
||||
#include <QPainter>
|
||||
|
||||
ProjectIconSetting::ProjectIconSetting(QWidget *parent)
|
||||
: QDialog(parent)
|
||||
, ui(new Ui::projectIconSetting)
|
||||
,_controller(nullptr)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | windowFlags());
|
||||
initial();
|
||||
}
|
||||
|
||||
ProjectIconSetting::~ProjectIconSetting()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void ProjectIconSetting::showDlg(GraphicsProjectModelItem* pItem)
|
||||
{
|
||||
ui->tableWidget->clear();
|
||||
ui->tableWidget->setRowCount(0);
|
||||
show();
|
||||
ModelProperty* p = pItem->getProperty();
|
||||
BaseProperty* pro = dynamic_cast<BaseProperty*>(p);
|
||||
if(pro)
|
||||
{
|
||||
QString sName = pro->name();
|
||||
QString sMetaModel = pro->metaModelName();
|
||||
QString sModel = pro->modelName();
|
||||
_sMetaModel = sMetaModel;
|
||||
_sModel = sModel;
|
||||
|
||||
bool bExist = ProjectModelManager::instance().ifProjectExsit(sModel);
|
||||
if(bExist){
|
||||
auto mapUsed = ProjectModelManager::instance().getData()[sMetaModel][sModel].modelSetting.mapUsedSvg;
|
||||
addItems(mapUsed);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ProjectIconSetting::initial()
|
||||
{
|
||||
QStringList headerText;
|
||||
headerText<<"类别"<<"图标";
|
||||
ui->tableWidget->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||
ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectItems);
|
||||
ui->tableWidget->setColumnCount(headerText.count());
|
||||
ui->tableWidget->setHorizontalHeaderLabels(headerText);
|
||||
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||
|
||||
connect(ui->tableWidget, &QTableWidget::cellClicked, this, &ProjectIconSetting::onCellClicked);
|
||||
connect(ui->btn_ok,&QPushButton::clicked,this,&ProjectIconSetting::onOkClicked);
|
||||
_iconSize = QSize(32,32);
|
||||
}
|
||||
|
||||
void ProjectIconSetting::addItems(QMap<QString,QByteArray> mapSvg)
|
||||
{
|
||||
for(auto iter = mapSvg.begin();iter != mapSvg.end();++iter){
|
||||
int row = ui->tableWidget->rowCount();
|
||||
ui->tableWidget->insertRow(row);
|
||||
|
||||
QTableWidgetItem* tagItem = new QTableWidgetItem(iter.key());
|
||||
ui->tableWidget->setItem(row, 0, tagItem);
|
||||
|
||||
QTableWidgetItem* iconItem = new QTableWidgetItem();
|
||||
ui->tableWidget->setItem(row, 1, iconItem);
|
||||
QByteArray arr = iter.value();
|
||||
iconItem->setData(Qt::UserRole, arr);
|
||||
if(!arr.isEmpty()){
|
||||
QSvgRenderer renderer(arr);
|
||||
|
||||
// 创建目标大小的pixmap
|
||||
QPixmap pixmap(_iconSize);
|
||||
//pixmap.fill(Qt::transparent); // 透明背景
|
||||
|
||||
// 创建画家并在pixmap上绘制SVG
|
||||
QPainter painter(&pixmap);
|
||||
renderer.render(&painter, pixmap.rect());
|
||||
|
||||
iconItem->setIcon(pixmap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ProjectIconSetting::selectImage(int row)
|
||||
{
|
||||
if(!_sMetaModel.isEmpty() && !_sModel.isEmpty()){
|
||||
auto mapAllSvg = ProjectModelManager::instance().getData()[_sMetaModel][_sModel].modelSetting.mapSvg;
|
||||
ProjectIconSelectionDlg dialog(mapAllSvg, this);
|
||||
if (dialog.exec() == QDialog::Accepted) {
|
||||
QByteArray selectedSVG = dialog.selectedSVG();
|
||||
if (!selectedSVG.isEmpty()) {
|
||||
QSvgRenderer renderer(selectedSVG);
|
||||
QPixmap pixmap(32, 32);
|
||||
pixmap.fill(Qt::transparent);
|
||||
QPainter painter(&pixmap);
|
||||
renderer.render(&painter);
|
||||
|
||||
ui->tableWidget->item(row, 1)->setIcon(QIcon(pixmap));
|
||||
// 如果需要保存原始SVG数据,可以这样:
|
||||
ui->tableWidget->item(row, 1)->setData(Qt::UserRole, selectedSVG);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ProjectIconSetting::onOkClicked()
|
||||
{
|
||||
QMap<QString,QByteArray> mapUsedSvg;
|
||||
for (int row = 0; row < ui->tableWidget->rowCount(); ++row) {
|
||||
QTableWidgetItem *itemTag = ui->tableWidget->item(row, 0);
|
||||
if (itemTag) {
|
||||
QTableWidgetItem *itemSvg = ui->tableWidget->item(row, 1);
|
||||
if(itemSvg){
|
||||
QByteArray svg = itemSvg->data(Qt::UserRole).toByteArray();
|
||||
mapUsedSvg.insert(itemTag->text(),svg);
|
||||
}
|
||||
}
|
||||
}
|
||||
ProjectModelManager::instance().getData()[_sMetaModel][_sModel].modelSetting.mapUsedSvg = mapUsedSvg;
|
||||
_controller->updateItemIcon(_sMetaModel,_sModel);
|
||||
hide();
|
||||
}
|
||||
|
||||
void ProjectIconSetting::onCellClicked(int row,int col)
|
||||
{
|
||||
if (col == 1) { // 如果是按钮列
|
||||
selectImage(row);
|
||||
}
|
||||
}
|
||||
|
|
@ -50,6 +50,12 @@ void ProjectModelSetting::initial()
|
|||
/*QRegularExpression regExp("[a-zA-Z0-9]+");
|
||||
QRegularExpressionValidator *validator = new QRegularExpressionValidator(regExp, this);
|
||||
ui->le_saveAs->setValidator(validator);*/
|
||||
ui->listWidget_icon->setStyleSheet(
|
||||
"QListWidget::item:selected {"
|
||||
" background: #4e72b8;"
|
||||
" color: palette(HighlightedText);"
|
||||
"}"
|
||||
);
|
||||
}
|
||||
|
||||
void ProjectModelSetting::loadPicture()
|
||||
|
|
@ -65,7 +71,9 @@ void ProjectModelSetting::loadPicture()
|
|||
for(int i=0;i<files.size();i++)
|
||||
{
|
||||
QString sPath = path+files.at(i);
|
||||
QListWidgetItem *newitem=new QListWidgetItem(QIcon(QPixmap(sPath).scaled(100, 100)),files.at(i));
|
||||
QPixmap pixmap(sPath);
|
||||
pixmap.fill(Qt::transparent);
|
||||
QListWidgetItem *newitem=new QListWidgetItem(QIcon(pixmap.scaled(100, 100)),files.at(i));
|
||||
QFile file(sPath);
|
||||
if (!file.open(QIODevice::ReadOnly)) {
|
||||
LOG_WARN("File", QString("%1 svgfile open failed").arg(sPath));
|
||||
|
|
@ -84,16 +92,24 @@ void ProjectModelSetting::loadPicture()
|
|||
|
||||
void ProjectModelSetting::setSelectedItems(QStringList lst)
|
||||
{
|
||||
QList<QListWidgetItem*> lstItem = ui->listWidget_icon->findItems(lst.first(),Qt::MatchExactly);
|
||||
/*QList<QListWidgetItem*> lstItem = ui->listWidget_icon->findItems(lst.first(),Qt::MatchExactly);
|
||||
if(!lstItem.empty())
|
||||
{
|
||||
ui->listWidget_icon->setCurrentItem(lstItem.first());
|
||||
}*/
|
||||
|
||||
foreach(const QString &name, lst) {
|
||||
QList<QListWidgetItem*> items = ui->listWidget_icon->findItems(name, Qt::MatchExactly);
|
||||
foreach(QListWidgetItem* item, items) {
|
||||
item->setSelected(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ProjectModelSetting::showDlg(GraphicsBaseModelItem* srcNode)
|
||||
{
|
||||
show();
|
||||
ui->label_infoIcon->clear();
|
||||
ui->treeView_base->setModel(nullptr);
|
||||
ui->treeView_sub->setModel(nullptr);
|
||||
ModelProperty* p = srcNode->getProperty();
|
||||
|
|
@ -181,14 +197,19 @@ void ProjectModelSetting::onCancelClicked()
|
|||
void ProjectModelSetting::onSelectClicked()
|
||||
{
|
||||
QList<QListWidgetItem*> items = ui->listWidget_icon->selectedItems();
|
||||
QStringList lst;
|
||||
for(auto& item:items)
|
||||
{
|
||||
if(!_curItemData->getModelProperty().modelSetting.mapSvg.contains(item->text()))
|
||||
{
|
||||
QByteArray data = item->data(Qt::UserRole + 1).toByteArray();
|
||||
_curItemData->getModelProperty().modelSetting.mapSvg.insert(item->text(),data);
|
||||
ui->label_infoIcon->setText("当前选择:"+item->text());
|
||||
}
|
||||
lst.append(item->text());
|
||||
}
|
||||
|
||||
if(!lst.isEmpty()){
|
||||
ui->label_infoIcon->setText("当前选择:"+lst.join(","));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -337,10 +358,10 @@ void ProjectModelSetting::onSaveClicked()
|
|||
if(pro){
|
||||
if(pro->metaModelName() == _curItemData->metaModelName()){ //将相同基模item的工程模名称都置为相同(改一个全变)
|
||||
pro->setModelName(sModel);
|
||||
pro->getModelProperty().modelSetting.modelName = sModel;
|
||||
}
|
||||
}
|
||||
}
|
||||
//_controller->getScene()->update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,19 +37,10 @@
|
|||
<property name="verticalSpacing">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<item row="0" column="0" colspan="11">
|
||||
<widget class="QLabel" name="label_title">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">border:4px double dark;</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
<item row="6" column="10">
|
||||
<widget class="QLineEdit" name="le_idx_2">
|
||||
<property name="readOnly">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
@ -60,149 +51,6 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1" colspan="6">
|
||||
<widget class="QLineEdit" name="le_uuid">
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="7" rowspan="2" colspan="4">
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">border:2px dashed black;
|
||||
border-radius:5px;</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>TAG</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1" colspan="2">
|
||||
<widget class="QLineEdit" name="le_tag">
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>命名空间</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1" colspan="6">
|
||||
<widget class="QLineEdit" name="le_nameSpace">
|
||||
<property name="readOnly">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="7">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>名称</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="8" colspan="3">
|
||||
<widget class="QLineEdit" name="le_name">
|
||||
<property name="readOnly">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>标签</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1" colspan="2">
|
||||
<widget class="QLineEdit" name="le_label">
|
||||
<property name="readOnly">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="3">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string>注释</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="4" colspan="7">
|
||||
<widget class="QLineEdit" name="le_description">
|
||||
<property name="readOnly">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>电网</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1" colspan="2">
|
||||
<widget class="QComboBox" name="cb_grid"/>
|
||||
</item>
|
||||
<item row="5" column="3">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string>区域</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="4" colspan="3">
|
||||
<widget class="QComboBox" name="cb_zone"/>
|
||||
</item>
|
||||
<item row="5" column="7">
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="text">
|
||||
<string>子站</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="8" colspan="3">
|
||||
<widget class="QComboBox" name="cb_station"/>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="label_10">
|
||||
<property name="text">
|
||||
<string>间隔名称</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1" colspan="6">
|
||||
<widget class="QLineEdit" name="le_bayName">
|
||||
<property name="readOnly">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="7">
|
||||
<widget class="QLabel" name="label_11">
|
||||
<property name="text">
|
||||
<string>序号</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="8">
|
||||
<widget class="QLineEdit" name="le_idx_1">
|
||||
<property name="readOnly">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="9">
|
||||
<widget class="QLabel" name="label_12">
|
||||
<property name="maximumSize">
|
||||
|
|
@ -219,17 +67,115 @@ border-radius:5px;</string>
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="10">
|
||||
<widget class="QLineEdit" name="le_idx_2">
|
||||
<item row="1" column="1" colspan="6">
|
||||
<widget class="QLineEdit" name="le_uuid">
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>标签</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="label_10">
|
||||
<property name="text">
|
||||
<string>间隔名称</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="8">
|
||||
<widget class="QLineEdit" name="le_idx_1">
|
||||
<property name="readOnly">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<widget class="QLabel" name="label_13">
|
||||
<item row="8" column="2" colspan="2">
|
||||
<widget class="QRadioButton" name="rb_outService">
|
||||
<property name="text">
|
||||
<string>联结 从</string>
|
||||
<string>OUT 服役外</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="4" colspan="3">
|
||||
<widget class="QComboBox" name="cb_zone"/>
|
||||
</item>
|
||||
<item row="5" column="3">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string>区域</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="7">
|
||||
<widget class="QLabel" name="label_11">
|
||||
<property name="text">
|
||||
<string>序号</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1" colspan="6">
|
||||
<widget class="QLineEdit" name="le_nameSpace">
|
||||
<property name="readOnly">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="7" rowspan="2" colspan="4">
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">border:2px dashed black;
|
||||
border-radius:5px;</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="7">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>名称</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="8" colspan="3">
|
||||
<widget class="QComboBox" name="cb_station"/>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>电网</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1" colspan="6">
|
||||
<widget class="QLineEdit" name="le_bayName">
|
||||
<property name="readOnly">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1" colspan="2">
|
||||
<widget class="QLineEdit" name="le_label">
|
||||
<property name="readOnly">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0">
|
||||
<widget class="QLabel" name="label_15">
|
||||
<property name="text">
|
||||
<string>服役状态</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="7">
|
||||
<widget class="QLabel" name="label_16">
|
||||
<property name="text">
|
||||
<string>状态</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
@ -240,6 +186,13 @@ border-radius:5px;</string>
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="4" colspan="7">
|
||||
<widget class="QLineEdit" name="le_description">
|
||||
<property name="readOnly">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="5">
|
||||
<widget class="QLabel" name="label_14">
|
||||
<property name="sizePolicy">
|
||||
|
|
@ -262,38 +215,17 @@ border-radius:5px;</string>
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="6" colspan="5">
|
||||
<widget class="QLineEdit" name="le_to">
|
||||
<item row="2" column="1" colspan="2">
|
||||
<widget class="QLineEdit" name="le_tag">
|
||||
<property name="readOnly">
|
||||
<bool>false</bool>
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0">
|
||||
<widget class="QLabel" name="label_15">
|
||||
<item row="5" column="7">
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="text">
|
||||
<string>服役状态</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="1">
|
||||
<widget class="QRadioButton" name="rb_inService">
|
||||
<property name="text">
|
||||
<string>IN 服役中</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="2" colspan="2">
|
||||
<widget class="QRadioButton" name="rb_outService">
|
||||
<property name="text">
|
||||
<string>OUT 服役外</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="7">
|
||||
<widget class="QLabel" name="label_16">
|
||||
<property name="text">
|
||||
<string>状态</string>
|
||||
<string>子站</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
@ -304,8 +236,83 @@ border-radius:5px;</string>
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="1" colspan="10">
|
||||
<widget class="QPushButton" name="pushButton">
|
||||
<item row="4" column="3">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string>注释</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>TAG</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="1" colspan="10">
|
||||
<widget class="QWidget" name="widget_runTime" native="true">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">border:1px dashed black;</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>命名空间</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<widget class="QLabel" name="label_13">
|
||||
<property name="text">
|
||||
<string>联结 从</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="6" colspan="5">
|
||||
<widget class="QLineEdit" name="le_to">
|
||||
<property name="readOnly">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1" colspan="2">
|
||||
<widget class="QComboBox" name="cb_grid"/>
|
||||
</item>
|
||||
<item row="8" column="1">
|
||||
<widget class="QRadioButton" name="rb_inService">
|
||||
<property name="text">
|
||||
<string>IN 服役中</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="8" colspan="3">
|
||||
<widget class="QLineEdit" name="le_name">
|
||||
<property name="readOnly">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="11">
|
||||
<widget class="QLabel" name="label_title">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">border:4px double dark;</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="1" colspan="4">
|
||||
<widget class="QPushButton" name="btn_equip">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
|
|
@ -325,10 +332,24 @@ border-radius:5px;</string>
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="1" colspan="10">
|
||||
<widget class="QWidget" name="widget_runTime" native="true">
|
||||
<item row="9" column="6" colspan="5">
|
||||
<widget class="QPushButton" name="btn_icon">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>30</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>12</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">border:1px dashed black;</string>
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>图标库</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,139 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>projectIconSetting</class>
|
||||
<widget class="QDialog" name="projectIconSetting">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>441</width>
|
||||
<height>324</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>12</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Dialog</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>21</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>21</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color: rgb(180, 180, 180);</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>12</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">color: rgb(0, 0, 0);</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>工程模图标设置</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTableWidget" name="tableWidget"/>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btn_ok">
|
||||
<property name="text">
|
||||
<string>确定</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
|
@ -266,6 +266,9 @@ color: rgb(8, 8, 8);</string>
|
|||
<property name="dragDropMode">
|
||||
<enum>QAbstractItemView::DragDropMode::DragDrop</enum>
|
||||
</property>
|
||||
<property name="selectionMode">
|
||||
<enum>QAbstractItemView::SelectionMode::ExtendedSelection</enum>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
|
|
|
|||
|
|
@ -270,7 +270,9 @@ void ProjectModelManager::updateSetting(const QString& sMeta,const QString& sPro
|
|||
{
|
||||
QJsonObject object;
|
||||
QJsonArray arr;
|
||||
QJsonArray arrUsed;
|
||||
QMap<QString,QByteArray> mapSvg = m_mapTotalData[sMeta][sProject].modelSetting.mapSvg;
|
||||
QMap<QString,QByteArray> mapUsedSvg = m_mapTotalData[sMeta][sProject].modelSetting.mapUsedSvg;
|
||||
|
||||
for(auto iter = mapSvg.begin();iter != mapSvg.end();++iter)
|
||||
{
|
||||
|
|
@ -281,6 +283,15 @@ void ProjectModelManager::updateSetting(const QString& sMeta,const QString& sPro
|
|||
}
|
||||
object["picture"] = arr;
|
||||
|
||||
for(auto iter = mapUsedSvg.begin();iter != mapUsedSvg.end();++iter)
|
||||
{
|
||||
QJsonObject obj;
|
||||
obj["name"] = iter.key();
|
||||
obj["data"] = QString::fromUtf8(iter.value());
|
||||
arrUsed.push_back(obj);
|
||||
}
|
||||
object["usingPicture"] = arrUsed;
|
||||
|
||||
QJsonObject jsVal = DataBase::GetInstance()->getProjectSetting(sMeta,sProject);
|
||||
if(jsVal.empty()){
|
||||
DataBase::GetInstance()->insertProjectSetting(sMeta,sProject,object);
|
||||
|
|
@ -823,5 +834,14 @@ projectModelSetting ProjectModelManager::getModelSetting(const QString& sMeta,co
|
|||
QByteArray bData = QByteArray::fromHex(node["data"].toString().toUtf8());
|
||||
setting.mapSvg.insert(sName,bData);
|
||||
}
|
||||
|
||||
QJsonArray arrUsed = obj["usingPicture"].toArray();
|
||||
for (QJsonValueRef jsonObj : arrUsed)
|
||||
{
|
||||
QJsonObject node = jsonObj.toObject();
|
||||
QString sName = node["name"].toString();
|
||||
QByteArray bData = QByteArray::fromHex(node["data"].toString().toUtf8());
|
||||
setting.mapUsedSvg.insert(sName,bData);
|
||||
}
|
||||
return setting;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue