/* palette.h */ #ifndef MYPALETTE_H #define MYPALETTE_H #include "area.hpp" #include <QTabWidget> #include <QToolBar> #include <QToolButton> #include <QDrag> #include <QMimeData> /* ---------------------------------------------------------------------- */ class MyPalette; class MyPalettePage; class MyPaletteItem; /* ---------------------------------------------------------------------- */ class MyPalette : public QTabWidget { public: explicit MyPalette (QWidget * parent = 0); // virtual ~ MyPalette (); void addPage (QString name, MyPalettePage * page); }; class MyPalettePage : public QToolBar { public: void addItem (QString name, MyPaletteItem * item); }; class MyPaletteItem : public QToolButton { public: void mousePressEvent (QMouseEvent * event); // void mouseMoveEvent (QMouseEvent * event); protected: virtual void setupMimeData (QMimeData * data) { } virtual void setupPixmap (QDrag * drag) { } private: // QPoint dragStartPosition; }; /* ---------------------------------------------------------------------- */ class ColorPaletteItem : public MyPaletteItem { public: ColorPaletteItem () { } ColorPaletteItem (QString s); // ColorPaletteItem (QColor c) { setColor (c); } QColor color () { return value; } void setColor (QColor c) { value = c; setup (); } protected: virtual void setupMimeData (QMimeData * data); virtual void setupPixmap (QDrag * drag); private: QColor value; void setup (); }; /* ---------------------------------------------------------------------- */ class ShapePaletteItem : public MyPaletteItem { protected: virtual void setupMimeData (QMimeData * data); public: virtual QGraphicsItem * createShape () = 0; }; template <class T> class ShapePaletteTemplate : public ShapePaletteItem { public: virtual QGraphicsItem * createShape () { return new T; } }; /* ---------------------------------------------------------------------- */ class AreaPaletteItem : public MyPaletteItem { protected: virtual void setupMimeData (QMimeData * data); public: virtual Area * createArea () = 0; }; template <class T> class AreaPaletteTemplate : public AreaPaletteItem { public: virtual Area * createArea () { return new T; } }; /* ---------------------------------------------------------------------- */ class FieldPaletteItem : public MyPaletteItem { protected: virtual void setupMimeData (QMimeData * data); public: virtual Field * createField () = 0; }; template <class T> class FieldPaletteTemplate : public FieldPaletteItem { public: virtual Field * createField () { return new T; } }; /* ---------------------------------------------------------------------- */ #endif // MYPALETTE_H