void PaletteTreeWidget::addItemType(const PaletteElement &data, QTreeWidgetItem *parent) { QTreeWidgetItem *leaf = new QTreeWidgetItem; DraggableElement *element = new DraggableElement(mMainWindow, data, mPaletteTree.iconsView(), *mEditorManager); mElementsSet.insert(data); mPaletteElements.insert(data.id(), element); mPaletteItems.insert(data.id(), leaf); parent->addChild(leaf); setItemWidget(leaf, 0, element); }
void PaletteTreeWidgets::addTopItemType(const PaletteElement &data, QTreeWidget *tree) { QTreeWidgetItem *item = new QTreeWidgetItem; DraggableElement *element = new DraggableElement(*mMainWindow, data, mParentPalette->iconsView(), *mEditorManager); mPaletteElements.insert(data.id(), element); tree->addTopLevelItem(item); tree->setItemWidget(item, 0, element); }
DraggableElement::DraggableElement( MainWindow &mainWindow , const PaletteElement &data , bool iconsOnly , const EditorManagerInterface &editorManagerProxy , QWidget *parent ) : QWidget(parent) , mData(data) , mEditorManagerProxy(editorManagerProxy) , mMainWindow(mainWindow) { QHBoxLayout *layout = new QHBoxLayout(this); layout->setContentsMargins(0, 4, 0, 4); const int size = iconsOnly ? 50 : 30; mLabel = new QLabel(this); mLabel->setPixmap(mData.icon().pixmap(size - 2, size - 2)); layout->addWidget(mLabel); if (!iconsOnly) { QLabel *text = new QLabel(this); text->setText(mData.name()); layout->addWidget(text); layout->addStretch(); } setLayout(layout); QString description = mData.description(); if (!description.isEmpty()) { const QString rawGesture = mEditorManagerProxy.mouseGesture(data.id()); if (!rawGesture.isEmpty() && qReal::SettingsManager::value("gesturesEnabled").toBool()) { const QSize size(gestureTipSize, gestureTipSize); gestures::GesturePainter painter(rawGesture, Qt::white, Qt::blue, gestureTipSize); const QPixmap gesture = painter.pixmap(size, QIcon::Mode::Normal, QIcon::State::Off); QByteArray byteArray; QBuffer buffer(&byteArray); gesture.save(&buffer, "PNG"); const QString gestureDescription = tr("Mouse gesture"); description += QString("<br><table><tr><td valign='middle'>%1: </td>"\ "<td><img src=\"data:image/png;base64,%2\"/></td></tr></table>") .arg(gestureDescription, QString(byteArray.toBase64())); } setToolTip(QString("<body>%1</body>").arg(description)); } setCursor(Qt::OpenHandCursor); setAttribute(Qt::WA_AcceptTouchEvents); setObjectName(mData.name()); }