示例#1
0
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);
}
示例#2
0
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);
}
示例#3
0
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:&nbsp;&nbsp;&nbsp;</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());
}