a whole lotta work!!
- refactoring - completely changed the tooling (adding elements) - better re-use for more stable editing - new elements - ui adjustments - LINT for stair-editing - many more changes
This commit is contained in:
126
mapview/2D/tools/Tools.h
Normal file
126
mapview/2D/tools/Tools.h
Normal file
@@ -0,0 +1,126 @@
|
||||
#ifndef TOOLS_H
|
||||
#define TOOLS_H
|
||||
|
||||
#include <vector>
|
||||
#include "Tool.h"
|
||||
|
||||
/**
|
||||
* combine several tools under the interface for one tool
|
||||
*/
|
||||
class Tools : public QObject { //public Tool {
|
||||
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
|
||||
/** all added tools */
|
||||
std::vector<Tool*> backgroundTools;
|
||||
Tool* mainTool = nullptr;
|
||||
|
||||
|
||||
signals:
|
||||
|
||||
void mainToolChanged();
|
||||
|
||||
void onHelpTextChange(QString str);
|
||||
|
||||
|
||||
public:
|
||||
|
||||
Tools() {
|
||||
;
|
||||
}
|
||||
|
||||
virtual ~Tools() {
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
|
||||
const std::string getName() const {//override {
|
||||
return (mainTool) ? (mainTool->getName()) : ("");
|
||||
}
|
||||
|
||||
|
||||
/** add a new background-helper-tool (ruler, grid, ..) those are always processed! */
|
||||
void addBackground(Tool* t) {
|
||||
backgroundTools.push_back(t);
|
||||
}
|
||||
|
||||
/** remove this tool */
|
||||
void removeBackground(Tool* t) {
|
||||
backgroundTools.erase(std::remove(backgroundTools.begin(), backgroundTools.end(), t));
|
||||
}
|
||||
|
||||
/** set the currently active main tool. there is only one that can be active! (e.g. selector, new wall, new polygon, ..) */
|
||||
void setMain(Tool* t) {
|
||||
if (this->mainTool) {
|
||||
this->mainTool->becomesInactive();
|
||||
disconnect(this->mainTool, &Tool::onHelpTextChange, this, &Tools::onHelpTextChange);
|
||||
}
|
||||
this->mainTool = t;
|
||||
emit mainToolChanged();
|
||||
if (this->mainTool) {
|
||||
connect(this->mainTool, &Tool::onHelpTextChange, this, &Tools::onHelpTextChange);
|
||||
this->mainTool->becomesActive();
|
||||
}
|
||||
}
|
||||
|
||||
/** get the current main tool */
|
||||
Tool* getMain() {
|
||||
return this->mainTool;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
virtual bool mousePressEvent(MapView2D* m, QMouseEvent* e) {//override {
|
||||
if (mainTool) {mainTool->mousePressEvent(m, e);}
|
||||
for (Tool* t : backgroundTools) { if(t->mousePressEvent(m, e)) {return true;} }
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual bool mouseMoveEvent(MapView2D* m, QMouseEvent* e) {//override {
|
||||
if (mainTool) {mainTool->mouseMoveEvent(m, e);}
|
||||
for (Tool* t : backgroundTools) { if(t->mouseMoveEvent(m, e)) {return true;} }
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual bool mouseReleaseEvent(MapView2D* m, QMouseEvent* e) {//override {
|
||||
if (mainTool) {mainTool->mouseReleaseEvent(m, e);}
|
||||
for (Tool* t : backgroundTools) { if(t->mouseReleaseEvent(m, e)) {return true;} }
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual bool wheelEvent(MapView2D* m, QWheelEvent* e) {//override {
|
||||
if (mainTool) {mainTool->wheelEvent(m, e);}
|
||||
for (Tool* t : backgroundTools) { if(t->wheelEvent(m, e)) {return true;} }
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual bool keyPressEvent(MapView2D* m, QKeyEvent* e) {//override {
|
||||
if (mainTool) {mainTool->keyPressEvent(m, e);}
|
||||
for (Tool* t : backgroundTools) { if(t->keyPressEvent(m, e)) {return true;} }
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
virtual void paintBefore(MapView2D* m, Painter& p) {//override {
|
||||
for (Tool* t : backgroundTools) {t->paintBefore(m, p);}
|
||||
if (mainTool) {mainTool->paintBefore(m, p);}
|
||||
}
|
||||
|
||||
virtual void paintAfter(MapView2D* m, Painter& p) {//override {
|
||||
for (Tool* t : backgroundTools) {t->paintAfter(m, p);}
|
||||
if (mainTool) {mainTool->paintAfter(m, p);}
|
||||
}
|
||||
|
||||
virtual void layerChange(MapView2D* m) {//override {
|
||||
for (Tool* t : backgroundTools) {t->layerChange(m);}
|
||||
if (mainTool) {mainTool->layerChange(m);}
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif // TOOLS_H
|
||||
Reference in New Issue
Block a user