DiagramDesigner/diagramCavas/source/util/selectorManager.cpp

94 lines
3.8 KiB
C++
Raw Normal View History

2024-12-03 20:07:25 +08:00
#include "util/selectorManager.h"
#include "util/creatingSelector.h"
#include "util/movingSelector.h"
#include "util/subMovingSelector.h"
#include "util/linkMovingSelector.h"
2024-12-03 20:07:25 +08:00
#include "util/rotationSelector.h"
#include "util/scalingSelector.h"
#include "util/editingSelector.h"
#include "util/connectingSelector.h"
2025-02-06 16:36:50 +08:00
SelectorManager::SelectorManager(FixedPortsModel* model,QObject *parent)
: _graphModel(model)
,QObject(parent)
2024-12-03 20:07:25 +08:00
{
//创建所有的selector
2025-02-06 16:36:50 +08:00
BaseSelector* baseSelector = new BaseSelector(model,this);
2024-12-03 20:07:25 +08:00
connect(baseSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
m_vecSelectors.push_back(baseSelector);
2025-02-06 16:36:50 +08:00
CreatingSelector* creatingSelector = new CreatingSelector(model,this);
2024-12-03 20:07:25 +08:00
connect(creatingSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
m_vecSelectors.push_back(creatingSelector);
2025-02-06 16:36:50 +08:00
MovingSelector* movingSelector = new MovingSelector(model,this);
2024-12-03 20:07:25 +08:00
connect(movingSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
m_vecSelectors.push_back(movingSelector);
2025-02-06 16:36:50 +08:00
SubMovingSelector* subMovSelector = new SubMovingSelector(model,this);
connect(subMovSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
m_vecSelectors.push_back(subMovSelector);
2025-02-06 16:36:50 +08:00
LinkMovingSelector* linkMovSelector = new LinkMovingSelector(model,this);
connect(linkMovSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
m_vecSelectors.push_back(linkMovSelector);
2025-02-06 16:36:50 +08:00
RotationSelector* rotationSelector = new RotationSelector(model,this);
2024-12-03 20:07:25 +08:00
connect(rotationSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
m_vecSelectors.push_back(rotationSelector);
2025-02-06 16:36:50 +08:00
ScalingSelector* scalingSelector = new ScalingSelector(model,this);
2024-12-03 20:07:25 +08:00
connect(scalingSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
m_vecSelectors.push_back(scalingSelector);
2025-02-06 16:36:50 +08:00
EditingSelector* editingSelector = new EditingSelector(model,this);
2024-12-03 20:07:25 +08:00
connect(editingSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
m_vecSelectors.push_back(editingSelector);
2025-02-06 16:36:50 +08:00
ConnectingSelector* connectingSelector = new ConnectingSelector(model,this);
2024-12-03 20:07:25 +08:00
connect(connectingSelector, SIGNAL(setWorkingSelector(SelectorType)), this, SLOT(onSignal_setWorkingSelector(SelectorType)));
m_vecSelectors.push_back(connectingSelector);
m_curSelector = ST_base;
}
SelectorManager::~SelectorManager()
{
//析构所有的selector因为是通过基类指针析构所以基类的析构函数必须为虚函数
// for(auto it = m_vecSelectors.begin(); it != m_vecSelectors.end(); it++)
// delete (*it);
}
BaseSelector* SelectorManager::getWorkingSelector()
{
for(auto it = m_vecSelectors.begin(); it != m_vecSelectors.end(); it++)
{
if((*it)->getSelectorType()==m_curSelector)
{
return (*it);
}
}
return nullptr;
}
2025-03-28 18:08:21 +08:00
void SelectorManager::setDrawGraphicsItem(modelStateInfo& info)
2024-12-03 20:07:25 +08:00
{
for(auto it = m_vecSelectors.begin(); it != m_vecSelectors.end(); it++)
{
if((*it)->getSelectorType()==ST_cerating)
{
CreatingSelector* creatingSelector = dynamic_cast<CreatingSelector*>(*it);
2025-03-28 18:08:21 +08:00
creatingSelector->setCreatingItem(info);
2024-12-03 20:07:25 +08:00
}
}
}
2024-12-07 17:24:36 +08:00
void SelectorManager::setName(const QString& str)
{
for(auto iter:m_vecSelectors)
{
iter->setSceneName(str);
}
}
2024-12-03 20:07:25 +08:00
void SelectorManager::onSignal_setWorkingSelector(SelectorType s)
{
setWorkingSelector(s);
}