19 #include <QDataStream>
24 #include <QXmlStreamReader>
27 #if QT_VERSION < 0x050000
28 #define QStringLiteral QString
32 : m_entryname(entryname), m_xmldescr(xmldescr)
34 drag->setMimeData(
this);
39 QDataStream dataStream(&itemData, QIODevice::WriteOnly);
40 dataStream << xmldescr;
41 setData(
"bornagain/widget", itemData);
44 drag->setHotSpot(QPoint(drag->pixmap().width() / 2, drag->pixmap().height() / 2));
49 QXmlStreamReader reader(xmldescr);
51 bool widget_found =
false;
52 while (!reader.atEnd()) {
53 if (reader.readNext() == QXmlStreamReader::StartElement) {
54 const QStringRef
name = reader.name();
56 reader.raiseError(
"Unexpected element <" +
name.toString() +
">");
60 reader.raiseError(
"Unexpected element <" +
name.toString() +
">");
63 if (reader.hasError()) {
64 QString errorMessage = tr(
"A parse error occurred at line %1, column %2 of the XML code "
65 "specified for the widget %3: %4\n%5")
66 .arg(reader.lineNumber())
67 .arg(reader.columnNumber())
69 .arg(reader.errorString())
71 std::cout <<
"DesignerMimeData::read_xmldescr() -> Error during parse." << std::endl;
72 std::cout << errorMessage.toStdString() << std::endl;
79 for (
const QXmlStreamAttribute& attribute : reader.attributes()) {
80 QStringRef
name = attribute.name();
81 if (
name ==
"class") {
85 reader.raiseError(
"Unexpected attribute " +
name.toString());
87 reader.skipCurrentElement();
94 if (xmldescr.size() == 0)
95 return Qt::IgnoreAction;
97 QDrag* drag =
new QDrag(dragSource);
101 const Qt::DropAction executedAction = drag->exec(Qt::CopyAction);
103 return executedAction;
Defines class DesignerHelper.
Defines class DesignerMimeData.
static QPixmap getMimePixmap(const QString &name)
returns Mime pixmap for givew IView name
Mime data for use with SampleDesigner drag and drop operations.
void read_xmldescr(const QString &xmldescr)
QPixmap getPixmap(const QString &name)
void read_widget(QXmlStreamReader &reader)
DesignerMimeData(const QString &name, const QString &xmldescr, QDrag *drag)
static Qt::DropAction execDrag(const QString &name, const QString &xmldescr, QWidget *dragSource)
Execute a drag and drop operation.
QString const & name(EShape k)