2024-12-03 20:07:25 +08:00
|
|
|
|
#include "util/selectorManager.h"
|
|
|
|
|
|
#include "util/creatingSelector.h"
|
|
|
|
|
|
#include "util/movingSelector.h"
|
2024-12-13 18:08:00 +08:00
|
|
|
|
#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);
|
2024-12-13 18:08:00 +08:00
|
|
|
|
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);
|
2024-12-13 18:08:00 +08:00
|
|
|
|
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);
|
|
|
|
|
|
}
|
|
|
|
|
|
|