#ifndef CSV_WIDGET_SCENETOOL_H
#define CSV_WIDGET_SCENETOOL_H

#include "pushbutton.hpp"

class QMouseEvent;
class QObject;
class QPoint;

namespace CSVWidget
{
    class SceneToolbar;

    ///< \brief Tool base class
    class SceneTool : public PushButton
    {
        Q_OBJECT

    public:
        SceneTool(SceneToolbar* parent, Type type = Type_TopMode);

        virtual void showPanel(const QPoint& position) = 0;

        /// This function will only called for buttons of type Type_TopAction. The default
        /// implementation is empty.
        virtual void activate();

    protected:
        void mouseReleaseEvent(QMouseEvent* event) override;

    private slots:

        void openRequest();
    };
}

#endif
