diff options
Diffstat (limited to 'src/entitywidget.h')
-rw-r--r-- | src/entitywidget.h | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/src/entitywidget.h b/src/entitywidget.h new file mode 100644 index 0000000..04a925b --- /dev/null +++ b/src/entitywidget.h @@ -0,0 +1,150 @@ +/* + entitywidget.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_ENTITYWIDGET__ +#define __INCLUDED_EDITOR_ENTITYWIDGET__ + +#include <QWidget> +#include <QList> +#include <QString> + +namespace editor +{ + +/** + * @brief a Widget resembling an entity on the map + * */ +class EntityWidget : public QWidget +{ + Q_OBJECT + +public: + EntityWidget(QWidget *parent = 0); + + /** + * @brief returns the entity label + * */ + inline const QString &label() const { + return entity_label; + } + + /** + * @brief returns the entity name + * */ + inline const QString &name() const { + return entity_name; + } + + /** + * @brief returns the entity radius + * */ + inline const float radius() const { + return entity_radius; + } + + /** + * @brief returns the x, y, or z coordinate of the entity location + * */ + inline const float location(int index) const { + return entity_location[index]; + } + + /** + * @brief returns the properties string + * */ + inline const QString &properties() const { + return entity_properties; + } + +signals: + /** + * @brief this signal is emitted if the entity is clicked with the left mouse button + * */ + void clicked(EntityWidget *entity); + + /** + * @brief this signal is emitted if the entity is dragged + * */ + void dragged(EntityWidget *entity, int x, int y); + +public slots: + + /** + * @brief set the entity name + * */ + void set_label(const QString &label); + + /** + * @brief set the entity label + * */ + void set_name(const QString &name); + + /** + * @brief set the entity radius + * */ + void set_radius(const float radius); + + /** + * @brief set the entity location + * */ + void set_location(const float x, const float y, const float z); + + /** + * @brief set the entity properties string + * */ + void set_properties(const QString &properties); + + /** + * @brief add a property + * */ + void add_property(const QString &key, const QString &value); + + /** + * @brief set the selected state + * */ + void set_selected(const bool selected); + +protected: + /** + * @brief handle draw events + * */ + virtual void paintEvent(QPaintEvent *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); + +private: + bool is_selected; + bool is_dragging; + + QString entity_label; + QString entity_name; + QString entity_type; + + QString entity_properties; + + float entity_location[3]; + float entity_radius; + + QColor entity_color; +}; + +} + +#endif // __INCLUDED_EDITOR_ENTITYWIDGET__ |