This repository has been archived on 2020-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
Files
IndoorMap/mapview/tools/Tools.h
2016-05-24 16:55:19 +02:00

60 lines
1.3 KiB
C++

#ifndef TOOLS_H
#define TOOLS_H
#include <vector>
#include "Tool.h"
/**
* combine several tools under the interface for one tool
*/
class Tools : public Tool {
private:
std::vector<Tool*> tools;
public:
/** add this tool */
void enable(Tool* t) {tools.push_back(t);}
/** remove this tool */
void disable(Tool* t) {tools.erase(std::remove(tools.begin(), tools.end(), t));}
virtual void mousePressEvent(MapView2D* m, QMouseEvent* e) override {
for (Tool* t : tools) {t->mousePressEvent(m, e);}
}
virtual void mouseMoveEvent(MapView2D* m, QMouseEvent* e) override {
for (Tool* t : tools) {t->mouseMoveEvent(m, e);}
}
virtual void mouseReleaseEvent(MapView2D* m, QMouseEvent* e) override {
for (Tool* t : tools) {t->mouseReleaseEvent(m, e);}
}
virtual void wheelEvent(MapView2D* m, QWheelEvent* e) override {
for (Tool* t : tools) {t->wheelEvent(m, e);}
}
virtual void keyPressEvent(MapView2D* m, QKeyEvent* e) override {
for (Tool* t : tools) {t->keyPressEvent(m, e);}
}
virtual void paintBefore(MapView2D* m, Painter& p) override {
for (Tool* t : tools) {t->paintBefore(m, p);}
}
virtual void paintAfter(MapView2D* m, Painter& p) override {
for (Tool* t : tools) {t->paintAfter(m, p);}
}
virtual void layerChange(MapView2D* m) override {
for (Tool* t : tools) {t->layerChange(m);}
}
};
#endif // TOOLS_H