/* mapwidget.h This file is part of the Project::OSiRiON world editor and is distributed under the terms and conditions of the GNU General Public License version 2 */ #ifndef __INCLUDED_EDITOR_MAPWIDGET__ #define __INCLUDED_EDITOR_MAPWIDGET__ #include #include namespace editor { class EntityWidget; /** * @brief MapWidget shows the zone map with the blue grid line * */ class MapWidget : public QWidget { Q_OBJECT public: MapWidget(QWidget *parent = 0); /** * @brief add an entity to the map * */ EntityWidget *addEntity(); protected: /** * @brief handle draw events * */ virtual void paintEvent(QPaintEvent *event); /** * @brief handle resize events * */ virtual void resizeEvent(QResizeEvent *event); /** * @brief handle mouse button press events * */ virtual void mousePressEvent(QMouseEvent *event); /** * @brief handle mouse button press events * */ virtual void mouseReleaseEvent(QMouseEvent *event); /** * @brief handle mouse move press events * */ virtual void mouseMoveEvent(QMouseEvent *event); /** * @brief handle mousewheel events * */ virtual void wheelEvent(QWheelEvent *event); /** * @brief handle keypress events * */ virtual void keyPressEvent(QKeyEvent *event); signals: /** * @brief the selected() signal is emitted if an entity on the map is selected * */ void selected(EntityWidget *entity); public slots: /** * @brief move and resize child widgets * This should be called whenever a child location on the map has changed. * */ void resizeChildren(); private slots: /** * @brief called when an entity on the map has been clicked * */ void select(EntityWidget *entity); /** * @brief clear current selection * */ void deselect(); /** * @brief entity is dragged * */ void dragEntity(EntityWidget *entity, int x, int y); private: int mapwidget_zoom; int dragstart_x; int dragstart_y; int center_x; int center_y; bool is_dragging; QList mapwidget_enties; }; } #endif // __INCLUDED_EDITOR_MAPWIDGET__