/* palette.cc */ #include "palette.h" #include "prop.h" // BoolField, ... #include #include #include #include #include #if QT_VERSION >= 0x040600 #define QT_4_6 #endif /* ---------------------------------------------------------------------- */ void MyPalette::addPage (QString name, MyPalettePage * page) { addTab (page, name); } /* ---------------------------------------------------------------------- */ void MyPalettePage::addItem (QString name, MyPaletteItem * item) { if (name != "") item->setText (name); addWidget (item); } /* ---------------------------------------------------------------------- */ /* void MyPaletteItem::mousePressEvent (QMouseEvent * event) { if (event->button() == Qt::LeftButton) dragStartPosition = event->pos (); } void MyPaletteItem::mouseMoveEvent (QMouseEvent * event) { if (event->button() == Qt::LeftButton ) && (event->pos() - dragStartPosition).manhattanLength() >= QApplication::startDragDistance()) { QDrag * drag = new QDrag (this); QMimeData * mimeData = new QMimeData; // mimeData->setData (mimeType, data); mimeData->setText ("hello"); drag->setMimeData (mimeData); Qt::DropAction dropAction = drag->exec (Qt::CopyAction | Qt::MoveAction); } } */ void MyPaletteItem::mousePressEvent (QMouseEvent * event) { if (event->button() == Qt::LeftButton ) { QDrag * drag = new QDrag (this); QMimeData * mimeData = new QMimeData; setupMimeData (mimeData); drag->setMimeData (mimeData); setupPixmap (drag); Qt::DropAction dropAction = drag->exec (Qt::MoveAction | Qt::CopyAction | Qt::LinkAction); } } /* ---------------------------------------------------------------------- */ ColorPaletteItem::ColorPaletteItem (QString s) { setText (s); setToolTip (s); setColor (QColor (s)); } void ColorPaletteItem::setup () { QPalette p = palette (); p.setColor (QPalette::ButtonText, value); setPalette (p); QPixmap pixmap (12, 12); pixmap.fill (Qt::transparent); QPainter painter (&pixmap); painter.setPen (Qt::NoPen); painter.setBrush (QBrush (value)); painter.drawEllipse (0, 0, 12, 12); painter.end (); setIcon (pixmap); } void ColorPaletteItem::setupMimeData (QMimeData * data) { data->setColorData (value); } void ColorPaletteItem::setupPixmap (QDrag * drag) { QPixmap pixmap (12, 12); pixmap.fill (Qt::transparent); QPainter painter (&pixmap); // painter.translate (15, 15); // painter.setRenderHint (QPainter::Antialiasing); painter.setPen (Qt::NoPen); painter.setBrush (QBrush (value)); painter.drawEllipse (0, 0, 12, 12); painter.end (); // pixmap.setMask (pixmap.createHeuristicMask()); drag->setPixmap (pixmap); drag->setHotSpot (QPoint (6, 6)); } /* ---------------------------------------------------------------------- */ void AreaPaletteItem::setupMimeData (QMimeData * data) { data->setData ("application/x-qview-area", QByteArray ()); } void ShapePaletteItem::setupMimeData (QMimeData * data) { data->setData ("application/x-qview-shape", QByteArray ()); } void FieldPaletteItem::setupMimeData (QMimeData * data) { data->setData ("application/x-qview-field", QByteArray ()); } /* ---------------------------------------------------------------------- */ MyPalette::MyPalette (QWidget* parent) : QTabWidget (parent) { MyPalettePage * page1 = new MyPalettePage; page1->addItem ("area", new AreaPaletteTemplate ); page1->addAction ("sub area"); MyPalettePage * page2 = new MyPalettePage; page2->addAction ("source"); page2->addAction ("target"); MyPalettePage * page3 = new MyPalettePage; page3->addItem ("bool", new FieldPaletteTemplate ); page3->addAction ("enum"); page3->addAction ("int"); page3->addAction ("long"); page3->addAction ("float"); page3->addAction ("double"); page3->addAction ("string"); MyPalettePage * page4 = new MyPalettePage; page4->addAction ("triangle"); page4->addAction ("ellipse"); MyPalettePage * page5 = new MyPalettePage; page5->addItem ("red", new ColorPaletteItem ("red")); page5->addItem ("blue", new ColorPaletteItem ("blue")); page5->addItem ("green", new ColorPaletteItem ("green")); page5->addItem ("yellow", new ColorPaletteItem ("yellow")); page5->addItem ("orange", new ColorPaletteItem ("orange")); this->addPage ("components", page1); this->addPage ("ports", page2); this->addPage ("fields", page3); this->addPage ("shapes", page4); this->addPage ("colors", page5); } /* ---------------------------------------------------------------------- */