Select Git revision
toolRegister.cpp

BATON Theau authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
toolRegister.cpp 4.46 KiB
#include "toolRegister.h"
namespace ui {
ToolboxRegister::ToolboxRegister(Toolbox * toolbox, ViewManager * manager, const QList<tool::Tool *> & tools)
: _toolbox(toolbox), _viewManager(manager), _currentTool(nullptr), _currentImage(nullptr) {
for(auto & tool : tools) {
this->push_back(QSharedPointer<tool::Tool>(tool));
}
}
void ToolboxRegister::update() {
this->_toolbox->clear();
for(auto & tool : *this) {
this->_toolbox->addItem(tool.get());
}
QObject::connect(this->_toolbox, SIGNAL(itemActivated(QListWidgetItem*)), this, SLOT(updateCurrentTool(QListWidgetItem*)));
QObject::connect(this->_viewManager, SIGNAL(changedView(ImageArea*)), this, SLOT(updateCurrentView(ImageArea*)));
QObject::connect(this->_viewManager, SIGNAL(createdView(ImageArea*)), this, SLOT(updateCurrentView(ImageArea*)));
}
void ToolboxRegister::updateCurrentTool(QListWidgetItem * item) {
if(this->_currentTool != nullptr && this->_currentImage != nullptr) {
QObject::disconnect(this->_currentImage, SIGNAL(mousePressed(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&)), this->_currentTool, SLOT(pressed(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&)));
QObject::disconnect(this->_currentImage, SIGNAL(mouseReleased(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&)), this->_currentTool, SLOT(released(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&)));
QObject::disconnect(this->_currentImage, SIGNAL(mouseMoved(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&,bool)), this->_currentTool, SLOT(moved(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&,bool)));
}
this->_currentTool = dynamic_cast<tool::Tool*>(item);
if(this->_currentTool != nullptr && this->_currentImage != nullptr) {
this->_currentImage->setCursor(QCursor(this->_currentTool->shape()));
QObject::connect(this->_currentImage, SIGNAL(mousePressed(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&)), this->_currentTool, SLOT(pressed(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&)));
QObject::connect(this->_currentImage, SIGNAL(mouseReleased(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&)), this->_currentTool, SLOT(released(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&)));
QObject::connect(this->_currentImage, SIGNAL(mouseMoved(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&,bool)), this->_currentTool, SLOT(moved(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&,bool)));
}
qDebug() << "tool choose";
}
void ToolboxRegister::updateCurrentView(ImageArea * image) {
if(this->_currentTool != nullptr && this->_currentImage != nullptr) {
QObject::disconnect(this->_currentImage, SIGNAL(mousePressed(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&)), this->_currentTool, SLOT(pressed(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&)));
QObject::disconnect(this->_currentImage, SIGNAL(mouseReleased(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&)), this->_currentTool, SLOT(released(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&)));
QObject::disconnect(this->_currentImage, SIGNAL(mouseMoved(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&,bool)), this->_currentTool, SLOT(moved(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&,bool)));
}
this->_currentImage = dynamic_cast<ImageArea *>(image);
if(this->_currentTool != nullptr && this->_currentImage != nullptr) {
this->_currentImage->setCursor(QCursor(this->_currentTool->shape()));
QObject::connect(this->_currentImage, SIGNAL(mousePressed(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&)), this->_currentTool, SLOT(pressed(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&)));
QObject::connect(this->_currentImage, SIGNAL(mouseReleased(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&)), this->_currentTool, SLOT(released(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&)));
QObject::connect(this->_currentImage, SIGNAL(mouseMoved(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&,bool)), this->_currentTool, SLOT(moved(ui::ImageArea&,QImage&,QPoint&,ui::Selection&,QMouseEvent&,bool)));
}
qDebug() << "view changed";
}
}