예제 #1
1
bool EBTextEdit::writeFile(QString sFileName )
{
    Q_ASSERT(m_FullFileName.size());
    //save or save as?
    if (sFileName.isEmpty())
        sFileName = m_FullFileName;

    QDomDocument xmlDocument; //has to be first because of EditorView::OnlyPlainData reads it
    QFile fileWrite(sFileName);
    QIODevice::OpenMode flags = QFile::WriteOnly | QFile::Text;
    if (m_ViewType == EditorView::OnlyPlainData) {
        QFile fileRead(m_FullFileName); //read always from source/can be the same as fileWrite
        if (!fileRead.open(QFile::ReadOnly| QFile::Text))
            return false;
        QString errotMsg("");
        int iErrorLine(0), iErrorCol(0);
        if ( !xmlDocument.setContent( &fileRead,false, &errotMsg, &iErrorLine, &iErrorCol))
        {
            fileRead.close();
            qCritical()<< "QDomDocument::setContent: " <<  errotMsg << " Line " << iErrorLine << " column: " << iErrorCol;
            return false;
        }
        fileRead.close();
    }
    if (!fileWrite.open(flags))
        return false;

    QTextStream out(&fileWrite);
    QApplication::setOverrideCursor(Qt::WaitCursor);
    if (m_ViewType == EditorView::XmlSource) {
        qDebug() << "file.write(SOURCE): "<< sFileName;
        out << toPlainText();
    } else if (m_ViewType == EditorView::Text) {
        qDebug() << "file.write(DOM): "<< sFileName;
        QDomElement root = xmlDocument.createElement(DataOwnerSingl::XmlKeywords::KEYWORD_ITEM );
        xmlDocument.appendChild( root );


        //actual reading TXT format and saving to QDomDocument
        //1.we divide it to 2 parts - tags and data
        //than we red keyword one by one and if some is missing we use default
        //than we take the data as a rest

        QDomElement tag;
        QTextCursor cursor(document());
        int iDataCursorPosition = document()->end().position(); //default is end of document
        if (!document()->find(DataOwnerSingl::TxtKeywords::KEYWORD_DATA).isNull()) {
            cursor.movePosition(QTextCursor::EndOfWord, QTextCursor::MoveAnchor); //remove txt keyword from selection
            iDataCursorPosition = document()->find(DataOwnerSingl::TxtKeywords::KEYWORD_DATA).position();
            //qDebug() << "First data char:" <<  document()->characterAt(iDataCursorPosition) << "Next data char:" <<  document()->characterAt(iDataCursorPosition+1);
            //\n should be part of TxtKeywords::KEYWORD_DATA but it can be deleted..
            if(document()->characterAt(iDataCursorPosition) == QChar('\r'))
                ++iDataCursorPosition;
            if(document()->characterAt(iDataCursorPosition) == QChar('\n'))
                ++iDataCursorPosition;
        }

        //key = xml, value = txt
        QList< QPair<QString, QString> >::const_iterator i = DataOwnerSingl::XmlKeywords::Keywords.constBegin();
        while (i !=  DataOwnerSingl::XmlKeywords::Keywords.constEnd()) {
            if ((*i).first != DataOwnerSingl::XmlKeywords::KEYWORD_DATA) {
                //tag
                tag = xmlDocument.createElement((*i).first);
                root.appendChild(tag);

                //content (before data)
                QString sText("");
                cursor = document()->find((*i).second);

                if (cursor.position() < iDataCursorPosition ) {
                    //valid record
                    const QTextBlock block = cursor.block();
                    if (block.isValid())
                        sText = block.text();
                    sText.remove(QRegExp("^"+ (*i).second));
                    //qDebug() << "writeFile sText:" << sText;
                }
                //missing or invalid = empty
                QDomText text = xmlDocument.createTextNode(sText);
                tag.appendChild(text);
            }
            ++i;
        }

        tag = xmlDocument.createElement(DataOwnerSingl::XmlKeywords::KEYWORD_DATA);
        root.appendChild(tag);
        //select from iDataCursorPosition till end - if tag is missing it is empty, with \n correction
        cursor.setPosition(iDataCursorPosition, QTextCursor::MoveAnchor);
        cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor);
        QDomCDATASection data = xmlDocument.createCDATASection(cursor.selectedText().replace(QChar(0x2029), QChar('\n')));
        tag.appendChild(data);

        //qDebug()<< "save XML:" << xmlDocument.toString();
        out << xmlDocument.toString();
    } else if (m_ViewType == EditorView::OnlyPlainData) {
        QDomNodeList nodeList = xmlDocument.elementsByTagName(DataOwnerSingl::XmlKeywords::KEYWORD_DATA);
        QDomElement data;
        if (nodeList.isEmpty()) {
            data =  xmlDocument.createElement(DataOwnerSingl::XmlKeywords::KEYWORD_DATA);
            xmlDocument.documentElement().appendChild(data);
        }
        else
        {
            data = nodeList.at(0).toElement();
            data.removeChild(data.childNodes().at(0));
        }
        QDomCDATASection dataText = xmlDocument.createCDATASection("\n" + document()->toPlainText());
        data.appendChild(dataText);
        //qDebug()<< "save XML:" << xmlDocument.toString();
        out << xmlDocument.toString();
    } else
        Q_ASSERT(0);
    fileWrite.close();
    QApplication::restoreOverrideCursor();

    return true;
}
예제 #2
0
void MainWindow::saveSettings() {
    QFile file("settings.xml");
    file.open(QIODevice::WriteOnly | QIODevice::Text);

    QDomDocument doc ("StreamControl");

    QDomElement settingsXML = doc.createElement("settings");
    doc.appendChild(settingsXML);

    QDomElement xsplitPathE = doc.createElement("xsplitPath");
    settingsXML.appendChild(xsplitPathE);

    QDomCDATASection xsplitPathT = doc.createCDATASection(settings["xsplitPath"]);
    xsplitPathE.appendChild(xsplitPathT);

    QDomElement useCDATAE = doc.createElement("useCDATA");
    settingsXML.appendChild(useCDATAE);

    QDomText useCDATAT = doc.createTextNode(settings["useCDATA"]);
    useCDATAE.appendChild(useCDATAT);

    QDomElement gamesE = doc.createElement("games");
    settingsXML.appendChild(gamesE);


    for (int i = 0; i < gameComboBox->count(); ++i) {
        QDomElement gameE = doc.createElement("game");
        gamesE.appendChild(gameE);
        QDomCDATASection gameText = doc.createCDATASection(gameComboBox->itemText(i));
        gameE.appendChild(gameText);
    }

    QDomElement p1E = doc.createElement("player1");
    settingsXML.appendChild(p1E);


    for (int i = 0; i < ui->p1Color->count(); ++i) {
        QDomElement p1colorE = doc.createElement("color");
        p1E.appendChild(p1colorE);
        QDomCDATASection p1CText = doc.createCDATASection(ui->p1Color->itemText(i));
        p1colorE.appendChild(p1CText);
    }

    QDomElement p2E = doc.createElement("player2");
    settingsXML.appendChild(p2E);


    for (int i = 0; i < ui->p2Color->count(); ++i) {
        QDomElement p2colorE = doc.createElement("color");
        p2E.appendChild(p2colorE);
        QDomCDATASection p2CText = doc.createCDATASection(ui->p2Color->itemText(i));
        p2colorE.appendChild(p2CText);
    }

    QTextStream out(&file);
    out.setCodec("UTF-8");
    out << doc.toString();
    file.close();
}
예제 #3
0
bool KisWorkspaceResource::saveToDevice(QIODevice *dev) const
{
    QDomDocument doc;
    QDomElement root = doc.createElement("Workspace");
    root.setAttribute("name", name() );
    root.setAttribute("version", WORKSPACE_VERSION);
    QDomElement state = doc.createElement("state");
    state.appendChild(doc.createCDATASection(m_dockerState.toBase64()));
    root.appendChild(state);

    // Save KisPropertiesConfiguration settings
    QDomElement settings = doc.createElement("settings");
    KisPropertiesConfiguration::toXML(doc, settings);
    root.appendChild(settings);
    doc.appendChild(root);

    QTextStream textStream(dev);
    textStream.setCodec("UTF-8");
    doc.save(textStream, 4);

    KoResource::saveToDevice(dev);

    return true;

}
// <param name="brush_definition">
//     <![CDATA[
//     <Brush type="auto_brush" spacing="0.1" angle="0"> 
//         <MaskGenerator radius="5" ratio="1" type="circle" vfade="0.5" spikes="2" hfade="0.5"/> 
//     </Brush> ]]>
// </param>
void AbrBrushProperties::toXML(QDomDocument& doc, QDomElement& root) const
{
    if (m_brushType != BRUSH_TYPE_COMPUTED){    
        qDebug() << m_brushType << "saved as computed brush...";
    }
    
    QDomDocument d;
    QDomElement e = d.createElement( "Brush" );

    QDomElement shapeElement = d.createElement("MaskGenerator");
    shapeElement.setAttribute("radius", (m_diameter * 0.5)); // radius == diameter / 2
    shapeElement.setAttribute("ratio", m_roundness / 100.0); // roundness in (0..100) to ratio in (0.0..1.0)
    shapeElement.setAttribute("hfade", m_hardness / 100.0); // same here 
    shapeElement.setAttribute("vfade", m_hardness / 100.0); // and here too
    shapeElement.setAttribute("spikes", 2); // just circle so far
    shapeElement.setAttribute("type", "circle"); 
    e.appendChild(shapeElement);

    e.setAttribute("type", "auto_brush");
    e.setAttribute("spacing", m_spacing / 100.0); // spacing from 0..1000 to 
    e.setAttribute("angle", m_angle < 0 ? m_angle + 360.0 : m_angle); // angle from -180..180 to 0..360
    e.setAttribute("randomness", 0);  // default here    
    d.appendChild(e);

    QDomElement elementParam = doc.createElement("param");
    elementParam.setAttribute("name","brush_definition");
    QDomText text = doc.createCDATASection(d.toString());
    elementParam.appendChild(text);
    root.appendChild(elementParam);

}
예제 #5
0
QDomCDATASection QDomDocumentProto::createCDATASection(const QString& data)
{
    QDomDocument *item = qscriptvalue_cast<QDomDocument*>(thisObject());
    if (item)
        return item->createCDATASection(data);
    return QDomCDATASection();
}
예제 #6
0
QDomElement State::toXml(QDomDocument doc) const
{
    QDomElement node = doc.createElement("state");
    node.setAttribute("name", name());
    node.appendChild(doc.createCDATASection(mCode));

    return node;
}
예제 #7
0
void TupRequestBuilder::appendData(QDomDocument &doc, QDomElement &element, const QByteArray &data)
{
    if (!data.isNull() && !data.isEmpty()) {
        QDomElement edata = doc.createElement("data");

        QDomCDATASection cdata = doc.createCDATASection(QString(data.toBase64()));

        edata.appendChild(cdata);
        element.appendChild(edata);
    }
}
예제 #8
0
  // FIXME no error handling.
  QDomDocument writeShaderXml(const Shader & shader) {
    QDomDocument result;
    QDomElement root = result.createElement(XML_ROOT_NAME);
    result.appendChild(root);

    for (int i = 0; i < MAX_CHANNELS; ++i) {
      if (!shader.channelTextures[i].isEmpty()) {
        QDomElement channelElement = result.createElement(XML_CHANNEL);
        channelElement.setAttribute(XML_CHANNEL_ATTR_ID, i);
        channelElement.setAttribute(XML_CHANNEL_ATTR_TYPE, shader.channelTypes[i] == ChannelInputType::CUBEMAP ? "cube" : "tex");
        channelElement.appendChild(result.createTextNode(shader.channelTextures[i]));
        root.appendChild(channelElement);
      }
    }
    root.appendChild(result.createElement(XML_FRAGMENT_SOURCE)).
      appendChild(result.createCDATASection(shader.fragmentSource));
    if (!shader.name.isEmpty()) {
      root.appendChild(result.createElement(XML_NAME)).
        appendChild(result.createCDATASection(shader.name));
    }
    return result;
  }
예제 #9
0
ContactListModelSelection::ContactListModelSelection(QList<ContactListItemProxy*> items)
	: QMimeData()
	, mimeData_(0)
{
	QDomDocument doc;
	QDomElement root = doc.createElement("items");
	root.setAttribute("version", "2.0");
	doc.appendChild(root);

	// TODO: maybe also embed a random instance-specific token to
	// prevent drag'n'drop with other running Psi instances?

	QStringList jids;

	foreach(ContactListItemProxy* itemProxy, items) {
		Q_ASSERT(itemProxy);

		PsiContact* contact = 0;
		ContactListNestedGroup* group = 0;
		ContactListAccountGroup* account = 0;
		if ((contact = dynamic_cast<PsiContact*>(itemProxy->item()))) {
			QDomElement tag = textTag(&doc, "contact", contact->jid().full());
			tag.setAttribute("account", contact->account()->id());
			tag.setAttribute("group", itemProxy->parent() ? itemProxy->parent()->fullName() : "");
			root.appendChild(tag);

			jids << contact->jid().full();
		}
		else if ((account = dynamic_cast<ContactListAccountGroup*>(itemProxy->item()))) {
			QDomElement tag = doc.createElement("account");
			tag.setAttribute("id", account->account()->id());
			root.appendChild(tag);

			jids << account->displayName();
		}
		else if ((group = dynamic_cast<ContactListNestedGroup*>(itemProxy->item()))) {
			// if group->fullName() consists only of whitespace when we'll try
			// to read it back we'll get an empty string, so we're using CDATA
			// QDomElement tag = textTag(&doc, "group", group->fullName());
			QDomElement tag = doc.createElement("group");
			QDomText text = doc.createCDATASection(TextUtil::escape(group->fullName()));
			tag.appendChild(text);

			root.appendChild(tag);

			jids << group->fullName();
		}
		else {
			qWarning("ContactListModelSelection::ContactListModelSelection(): Unable to serialize %d, unsupported type", itemProxy->item()->type());
		}
	}
예제 #10
0
void KoProperties::save(QDomElement &root) const
{
    QDomDocument doc = root.ownerDocument();
    QMap<QString, QVariant>::Iterator it;
    for (it = d->properties.begin(); it != d->properties.end(); ++it) {
        QDomElement e = doc.createElement("property");
        e.setAttribute("name", QString(it.key().toLatin1()));
        QVariant v = it.value();
        e.setAttribute("type", v.typeName());

        QByteArray bytes;
        QDataStream out(&bytes, QIODevice::WriteOnly);
        out << v;
        QDomText text = doc.createCDATASection(QString::fromLatin1(bytes, bytes.size()));
        e.appendChild(text);
        root.appendChild(e);
    }
}
예제 #11
0
int XmlNotes::saveNotes()
{
    //DEBUG_FUNC_NAME
    QDomDocument sdoc;
    QDomElement root = sdoc.createElement("notes");
    root.setAttribute("version", m_version);
    sdoc.appendChild(root);
    QMapIterator<QString, QString> i(notesType);
    while(i.hasNext()) {
        i.next();
        const QString id = i.key();
        if(id.isEmpty())
            continue;
        QDomElement tag = sdoc.createElement("note");
        tag.setAttribute("title", notesTitle.value(id));
        tag.setAttribute("type", notesType.value(id));
        tag.setAttribute("id", id);
        root.appendChild(tag);
        QDomElement data = sdoc.createElement("data");
        QDomCDATASection text = sdoc.createCDATASection(notesData.value(id));
        data.appendChild(text);
        tag.appendChild(data);
        QDomElement ref = sdoc.createElement("ref");
        QMap<QString, QString> map = notesRef.value(id);
        QMapIterator<QString, QString> i(map);
        while(i.hasNext()) {
            i.next();
            QDomElement e = sdoc.createElement(i.key());
            QDomText t = doc.createTextNode(i.value());
            e.appendChild(t);
            ref.appendChild(e);
        }
        tag.appendChild(ref);
    }
    QFile file(m_fileName);
    if(!file.open(QIODevice::WriteOnly | QIODevice::Text))
        return 1;
    const int IndentSize = 4;
    QTextStream out(&file);
    sdoc.save(out, IndentSize);
    file.close();
    doc = sdoc;
    return 0;
}
예제 #12
0
파일: FolderShape.cpp 프로젝트: KDE/koffice
QDomDocument FolderShape::save() const
{
    QDomDocument doc;
    QDomElement element = doc.createElement("book");
    doc.appendChild(element);
    foreach (KShape *child, shapes()) {
        IconShape *ic = dynamic_cast<IconShape*>(child);
        if (ic) {
            ic->save(element);
            continue;
        }
        ClipboardProxyShape *proxy = dynamic_cast<ClipboardProxyShape*>(child);
        if (proxy) {
            QDomElement clipboard = doc.createElement("clipboard");
            element.appendChild(clipboard);
            QDomText text = doc.createCDATASection( QString::fromAscii( proxy->clipboardData(), proxy->clipboardData().size() ) );
            clipboard.appendChild(text);
            continue;
        }
    }
예제 #13
0
// KOffice-1.3 format
QDomElement KoDocumentInfoAbout::save( QDomDocument& doc )
{
    saveParameters();
    QDomElement e = doc.createElement( "about" );

    QDomElement t = doc.createElement( "abstract" );
    e.appendChild( t );
    t.appendChild( doc.createCDATASection( m_abstract ) );

    t = doc.createElement( "title" );
    e.appendChild( t );
    t.appendChild( doc.createTextNode( m_title ) );

    t = doc.createElement( "keyword" );
    e.appendChild( t );
    t.appendChild( doc.createTextNode( m_keywords ) );

    t = doc.createElement( "subject" );
    e.appendChild( t );
    t.appendChild( doc.createTextNode( m_subject ) );

    t = doc.createElement( "initial-creator" );
    e.appendChild( t );
    t.appendChild( doc.createTextNode( m_initialCreator ) );

    t = doc.createElement( "editing-cycles" );
    e.appendChild( t );
    t.appendChild( doc.createTextNode( QString::number( m_editingCycles ) ) );

    t = doc.createElement( "creation-date" );
    e.appendChild( t );
    t.appendChild( doc.createTextNode( m_creationDate.toString( Qt::ISODate ) ) );

    t = doc.createElement( "date" );
    e.appendChild( t );
    t.appendChild( doc.createTextNode( m_modificationDate.toString( Qt::ISODate ) ) );
    return e;
}
예제 #14
0
/**
 * Creates an XML representation of the view, which can be used for storing the
 * model's data in a file.
 * The representation is rooted at a <QueryView> element, which holds a <Query>
 * element for the query information, a <Columns> element with a list of
 * columns, and a <LocationList> element that describes the list or tree of
 * locations.
 * @param  doc    The XML document object to use
 * @return The root element of the view's representation
 */
QDomElement QueryView::toXML(QDomDocument& doc) const
{
	// Create an element for storing the view.
	QDomElement viewElem = doc.createElement("QueryView");
	viewElem.setAttribute("name", windowTitle());
	viewElem.setAttribute("type", QString::number(type_));

	// Store query information.
	QDomElement queryElem = doc.createElement("Query");
	queryElem.setAttribute("type", QString::number(query_.type_));
	queryElem.setAttribute("flags", QString::number(query_.flags_));
	queryElem.appendChild(doc.createCDATASection(query_.pattern_));
	viewElem.appendChild(queryElem);

	// Create a "Columns" element.
	QDomElement colsElem = doc.createElement("Columns");
	viewElem.appendChild(colsElem);

	// Add an element for each column.
	foreach (Location::Fields field, model()->columns()) {
		QDomElement colElem = doc.createElement("Column");
		colElem.setAttribute("field", QString::number(field));
		colsElem.appendChild(colElem);
	}
예제 #15
0
void MainWindow::saveData()
{
    QFile file(settings["xsplitPath"] + "streamcontrol.xml");
    file.open(QIODevice::WriteOnly | QIODevice::Text);

    QDomDocument doc ("StreamControl");

    QDomElement items = doc.createElement("items");
    doc.appendChild(items);


    QDateTime current = QDateTime::currentDateTime();
    uint timestamp_t = current.toTime_t();

    QDomElement timestamp = doc.createElement("timestamp");
    items.appendChild(timestamp);

    QDomText timestampt = doc.createTextNode(QString::number(timestamp_t));;
    timestamp.appendChild(timestampt);

    QDomElement pName1 = doc.createElement("pName1");
    items.appendChild(pName1);

    if (useCDATA) {
        QDomCDATASection pName1t = doc.createCDATASection(ui->pName1->text());
        pName1.appendChild(pName1t);
    } else {
        QDomText pName1t = doc.createTextNode(ui->pName1->text());
        pName1.appendChild(pName1t);
    }

    QDomElement pScore1 = doc.createElement("pScore1");
    items.appendChild(pScore1);

    QDomText pScore1t = doc.createTextNode(ui->pScore1->text());
    pScore1.appendChild(pScore1t);



    QDomElement pName2 = doc.createElement("pName2");
    items.appendChild(pName2);

    if (useCDATA) {
        QDomCDATASection pName2t = doc.createCDATASection(ui->pName2->text());
        pName2.appendChild(pName2t);
    } else {
        QDomText pName2t = doc.createTextNode(ui->pName2->text());
        pName2.appendChild(pName2t);
    }

    QDomElement pScore2 = doc.createElement("pScore2");
    items.appendChild(pScore2);

    QDomText pScore2t = doc.createTextNode(ui->pScore2->text());
    pScore2.appendChild(pScore2t);



    QDomElement rounds = doc.createElement("rounds");
    items.appendChild(rounds);

    QDomText roundst = doc.createTextNode(ui->rounds->text());
    rounds.appendChild(roundst);

    QDomElement srText = doc.createElement("srText");
    items.appendChild(srText);

    if (useCDATA) {
        QDomCDATASection srTextt = doc.createCDATASection(ui->srText->text());
        srText.appendChild(srTextt);
    } else {
        QDomText srTextt = doc.createTextNode(ui->srText->text());
        srText.appendChild(srTextt);
    }


    QDomElement cTitle1 = doc.createElement("cTitle1");
    items.appendChild(cTitle1);

    if (useCDATA) {
        QDomCDATASection cTitle1t = doc.createCDATASection(ui->cTitle1->text());
        cTitle1.appendChild(cTitle1t);
    } else {
        QDomText cTitle1t = doc.createTextNode(ui->cTitle1->text());
        cTitle1.appendChild(cTitle1t);
    }



    QDomElement cTitle2 = doc.createElement("cTitle2");
    items.appendChild(cTitle2);

    if (useCDATA) {
        QDomCDATASection cTitle2t = doc.createCDATASection(ui->cTitle2->text());
        cTitle2.appendChild(cTitle2t);
    } else {
        QDomText cTitle2t = doc.createTextNode(ui->cTitle2->text());
        cTitle2.appendChild(cTitle2t);
    }



    QDomElement mText1 = doc.createElement("mText1");
    items.appendChild(mText1);

    if (useCDATA) {
        QDomCDATASection mText1t = doc.createCDATASection(ui->mText1->text());
        mText1.appendChild(mText1t);
    } else {
        QDomText mText1t = doc.createTextNode(ui->mText1->text());
        mText1.appendChild(mText1t);
    }


    
    QDomElement mText2 = doc.createElement("mText2");
    items.appendChild(mText2);

    if (useCDATA) {
        QDomCDATASection mText2t = doc.createCDATASection(ui->mText2->text());
        mText2.appendChild(mText2t);
    } else {
        QDomText mText2t = doc.createTextNode(ui->mText2->text());
        mText2.appendChild(mText2t);
    }



    QDomElement mText3 = doc.createElement("mText3");
    items.appendChild(mText3);

    if (useCDATA) {
        QDomCDATASection mText3t = doc.createCDATASection(ui->mText3->text());
        mText3.appendChild(mText3t);
    } else {
        QDomText mText3t = doc.createTextNode(ui->mText3->text());
        mText3.appendChild(mText3t);
    }



    QDomElement mText4 = doc.createElement("mText4");
    items.appendChild(mText4);

    if (useCDATA) {
        QDomCDATASection mText4t = doc.createCDATASection(ui->mText4->text());
        mText4.appendChild(mText4t);
    } else {
        QDomText mText4t = doc.createTextNode(ui->mText4->text());
        mText4.appendChild(mText4t);
    }


    QDomElement gameE = doc.createElement("game");
    items.appendChild(gameE);

    if (useCDATA) {
        QDomCDATASection gameT = doc.createCDATASection(gameComboBox->currentText());
        gameE.appendChild(gameT);
    } else {
        QDomText gameT = doc.createTextNode(gameComboBox->currentText());
        gameE.appendChild(gameT);
    }

    QDomElement p1cE = doc.createElement("p1c");
    items.appendChild(p1cE);

    if (useCDATA) {
        QDomCDATASection p1cT = doc.createCDATASection(ui->p1Color->currentText());
        p1cE.appendChild(p1cT);
    } else {
        QDomText p1cT = doc.createTextNode(ui->p1Color->currentText());
        p1cE.appendChild(p1cT);
    }

    QDomElement p2cE = doc.createElement("p2c");
    items.appendChild(p2cE);

    if (useCDATA) {
        QDomCDATASection p2cT = doc.createCDATASection(ui->p2Color->currentText());
        p2cE.appendChild(p2cT);
    } else {
        QDomText p2cT = doc.createTextNode(ui->p2Color->currentText());
        p2cE.appendChild(p2cT);
    }


    QTextStream out(&file);
    out.setCodec("UTF-8");
    out << doc.toString();
    file.close();

}
예제 #16
0
QDomElement Validity::saveXML(QDomDocument& doc, const ValueConverter *converter) const
{
    QDomElement validityElement = doc.createElement("validity");

    QDomElement param = doc.createElement("param");
    param.setAttribute("cond", (int)d->cond);
    param.setAttribute("action", (int)d->action);
    param.setAttribute("allow", (int)d->restriction);
    param.setAttribute("valmin", converter->asString(d->minValue).asString());
    param.setAttribute("valmax", converter->asString(d->maxValue).asString());
    param.setAttribute("displaymessage", d->displayMessage);
    param.setAttribute("displayvalidationinformation", d->displayValidationInformation);
    param.setAttribute("allowemptycell", d->allowEmptyCell);
    if (!d->listValidity.isEmpty())
        param.setAttribute("listvalidity", d->listValidity.join(";"));
    validityElement.appendChild(param);
    QDomElement titleElement = doc.createElement("title");
    titleElement.appendChild(doc.createTextNode(d->title));
    validityElement.appendChild(titleElement);
    QDomElement messageElement = doc.createElement("message");
    messageElement.appendChild(doc.createCDATASection(d->message));
    validityElement.appendChild(messageElement);

    QDomElement inputTitle = doc.createElement("inputtitle");
    inputTitle.appendChild(doc.createTextNode(d->titleInfo));
    validityElement.appendChild(inputTitle);

    QDomElement inputMessage = doc.createElement("inputmessage");
    inputMessage.appendChild(doc.createTextNode(d->messageInfo));
    validityElement.appendChild(inputMessage);



    QString tmp;
    if (d->restriction == Time) {
        QDomElement timeMinElement = doc.createElement("timemin");
        tmp = converter->asString(d->minValue).asString();
        timeMinElement.appendChild(doc.createTextNode(tmp));
        validityElement.appendChild(timeMinElement);

        if (d->cond == Conditional::Between || d->cond == Conditional::Different) {
            QDomElement timeMaxElement = doc.createElement("timemax");
            tmp = converter->asString(d->maxValue).asString();
            timeMaxElement.appendChild(doc.createTextNode(tmp));
            validityElement.appendChild(timeMaxElement);
        }
    }

    if (d->restriction == Date) {
        QDomElement dateMinElement = doc.createElement("datemin");
        const QDate minDate = d->minValue.asDate(converter->settings());
        QString tmp("%1/%2/%3");
        tmp = tmp.arg(minDate.year()).arg(minDate.month()).arg(minDate.day());
        dateMinElement.appendChild(doc.createTextNode(tmp));
        validityElement.appendChild(dateMinElement);

        if (d->cond == Conditional::Between || d->cond == Conditional::Different) {
            QDomElement dateMaxElement = doc.createElement("datemax");
            const QDate maxDate = d->maxValue.asDate(converter->settings());
            QString tmp("%1/%2/%3");
            tmp = tmp.arg(maxDate.year()).arg(maxDate.month()).arg(maxDate.day());
            dateMaxElement.appendChild(doc.createTextNode(tmp));
            validityElement.appendChild(dateMaxElement);
        }
    }
    return validityElement;
}
예제 #17
0
/**
 * Recursively transforms the location hierarchy stored in the model to an XML
 * sub-tree.
 * The XML representation of locations is composed of a <LocationList> element
 * holding a list of <Location> elements. For a tree model, <Location> elements
 * may in turn hold a <LocationList> sub-element, and so on.
 * @param  doc        The XML document object to use
 * @param  parentElem XML element under which new location elements should be
 *                    created
 * @param  index      The source index to store (along with its children)
 */
void LocationView::locationToXML(QDomDocument& doc, QDomElement& parentElem,
                                 const QModelIndex& index) const
{
	QDomElement elem;

	if (index.isValid()) {
		// A non-root index.
		// Translate the index into a location information structure.
		Location loc;
		if (!locationModel()->locationFromIndex(index, loc))
			return;

		// Create an XML element for the location.
		elem = doc.createElement("Location");
		parentElem.appendChild(elem);

		// Add a text node for each structure member.
		const QList<Location::Fields>& colList = locationModel()->columns();
		foreach (Location::Fields field, colList) {
			QString name;
			QDomNode node;

			switch (field) {
			case Location::File:
				name = "File";
				node = doc.createTextNode(loc.file_);
				break;

			case Location::Line:
				name = "Line";
				node = doc.createTextNode(QString::number(loc.line_));
				break;

			case Location::Column:
				name = "Column";
				node = doc.createTextNode(QString::number(loc.column_));
				break;

			case Location::TagName:
				name = "TagName";
				node = doc.createTextNode(loc.tag_.name_);
				break;

			case Location::TagType:
				name = "TagType";
				node = doc.createTextNode(QString::number(loc.tag_.type_));
				break;

			case Location::Scope:
				name = "Scope";
				node = doc.createTextNode(loc.tag_.scope_);
				break;

			case Location::Text:
				name = "Text";
				node = doc.createCDATASection(loc.text_);
				break;
			}

			QDomElement child = doc.createElement(name);
			child.appendChild(node);
			elem.appendChild(child);
		}
예제 #18
0
  QDomElement getServiceElement( QDomDocument &doc, const QgsProject *project )
  {
    //Service element
    QDomElement serviceElem = doc.createElement( QStringLiteral( "Service" ) );

    //Service name
    QDomElement nameElem = doc.createElement( QStringLiteral( "name" ) );
    QDomText nameText = doc.createTextNode( "WCS" );
    nameElem.appendChild( nameText );
    serviceElem.appendChild( nameElem );

    QString title = QgsServerProjectUtils::owsServiceTitle( *project );
    if ( !title.isEmpty() )
    {
      QDomElement titleElem = doc.createElement( QStringLiteral( "label" ) );
      QDomText titleText = doc.createTextNode( title );
      titleElem.appendChild( titleText );
      serviceElem.appendChild( titleElem );
    }

    QString abstract = QgsServerProjectUtils::owsServiceAbstract( *project );
    if ( !abstract.isEmpty() )
    {
      QDomElement abstractElem = doc.createElement( QStringLiteral( "description" ) );
      QDomText abstractText = doc.createCDATASection( abstract );
      abstractElem.appendChild( abstractText );
      serviceElem.appendChild( abstractElem );
    }

    QStringList keywords = QgsServerProjectUtils::owsServiceKeywords( *project );
    if ( !keywords.isEmpty() )
    {
      QDomElement keywordsElem = doc.createElement( QStringLiteral( "keywords" ) );
      for ( int i = 0; i < keywords.size(); ++i )
      {
        QDomElement keywordElem = doc.createElement( QStringLiteral( "keyword" ) );
        QDomText keywordText = doc.createTextNode( keywords.at( i ) );
        keywordElem.appendChild( keywordText );
        keywordsElem.appendChild( keywordElem );
      }
      serviceElem.appendChild( keywordsElem );
    }


    QString contactPerson = QgsServerProjectUtils::owsServiceContactPerson( *project );
    QString contactOrganization = QgsServerProjectUtils::owsServiceContactOrganization( *project );
    QString contactPosition = QgsServerProjectUtils::owsServiceContactPosition( *project );
    QString contactMail = QgsServerProjectUtils::owsServiceContactMail( *project );
    QString contactPhone = QgsServerProjectUtils::owsServiceContactPhone( *project );
    QString onlineResource = QgsServerProjectUtils::owsServiceOnlineResource( *project );
    if ( !contactPerson.isEmpty() ||
         !contactOrganization.isEmpty() ||
         !contactPosition.isEmpty() ||
         !contactMail.isEmpty() ||
         !contactPhone.isEmpty() ||
         !onlineResource.isEmpty() )
    {
      QDomElement responsiblePartyElem = doc.createElement( QStringLiteral( "responsibleParty" ) );
      if ( !contactPerson.isEmpty() )
      {
        QDomElement contactPersonElem = doc.createElement( QStringLiteral( "individualName" ) );
        QDomText contactPersonText = doc.createTextNode( contactPerson );
        contactPersonElem.appendChild( contactPersonText );
        responsiblePartyElem.appendChild( contactPersonElem );
      }
      if ( !contactOrganization.isEmpty() )
      {
        QDomElement contactOrganizationElem = doc.createElement( QStringLiteral( "organisationName" ) );
        QDomText contactOrganizationText = doc.createTextNode( contactOrganization );
        contactOrganizationElem.appendChild( contactOrganizationText );
        responsiblePartyElem.appendChild( contactOrganizationElem );
      }
      if ( !contactPosition.isEmpty() )
      {
        QDomElement contactPositionElem = doc.createElement( QStringLiteral( "positionName" ) );
        QDomText contactPositionText = doc.createTextNode( contactPosition );
        contactPositionElem.appendChild( contactPositionText );
        responsiblePartyElem.appendChild( contactPositionElem );
      }
      if ( !contactMail.isEmpty() ||
           !contactPhone.isEmpty() ||
           !onlineResource.isEmpty() )
      {
        QDomElement contactInfoElem = doc.createElement( QStringLiteral( "contactInfo" ) );
        if ( !contactMail.isEmpty() )
        {
          QDomElement contactAddressElem = doc.createElement( QStringLiteral( "address" ) );
          QDomElement contactAddressMailElem = doc.createElement( QStringLiteral( "electronicMailAddress" ) );
          QDomText contactAddressMailText = doc.createTextNode( contactMail );
          contactAddressMailElem.appendChild( contactAddressMailText );
          contactAddressElem.appendChild( contactAddressMailElem );
          contactInfoElem.appendChild( contactAddressElem );
        }
        if ( !contactPhone.isEmpty() )
        {
          QDomElement contactPhoneElem = doc.createElement( QStringLiteral( "phone" ) );
          QDomElement contactVoiceElem = doc.createElement( QStringLiteral( "voice" ) );
          QDomText contactVoiceText = doc.createTextNode( contactPhone );
          contactVoiceElem.appendChild( contactVoiceText );
          contactPhoneElem.appendChild( contactVoiceElem );
          contactInfoElem.appendChild( contactPhoneElem );
        }
        if ( !onlineResource.isEmpty() )
        {
          QDomElement onlineResourceElem = doc.createElement( QStringLiteral( "onlineResource" ) );
          onlineResourceElem.setAttribute( QStringLiteral( "xmlns:xlink" ), QStringLiteral( "http://www.w3.org/1999/xlink" ) );
          onlineResourceElem.setAttribute( QStringLiteral( "xlink:type" ), QStringLiteral( "simple" ) );
          onlineResourceElem.setAttribute( QStringLiteral( "xlink:href" ), onlineResource );
          contactInfoElem.appendChild( onlineResourceElem );
        }
        responsiblePartyElem.appendChild( contactInfoElem );
      }
      serviceElem.appendChild( responsiblePartyElem );
    }

    QDomElement feesElem = doc.createElement( QStringLiteral( "fees" ) );
    QDomText feesText = doc.createTextNode( QStringLiteral( "None" ) ); // default value if fees are unknown
    QString fees = QgsServerProjectUtils::owsServiceFees( *project );
    if ( !fees.isEmpty() )
    {
      feesText = doc.createTextNode( fees );
    }
    feesElem.appendChild( feesText );
    serviceElem.appendChild( feesElem );

    QDomElement accessConstraintsElem = doc.createElement( QStringLiteral( "accessConstraints" ) );
    QDomText accessConstraintsText = doc.createTextNode( QStringLiteral( "None" ) ); // default value if access constraints are unknown
    QString accessConstraints = QgsServerProjectUtils::owsServiceAccessConstraints( *project );
    if ( !accessConstraints.isEmpty() )
    {
      accessConstraintsText = doc.createTextNode( accessConstraints );
    }
    accessConstraintsElem.appendChild( accessConstraintsText );
    serviceElem.appendChild( accessConstraintsElem );

    //End
    return serviceElem;
  }
// this implementation will be re-coded.
void CircuitDomDocumentExporter::exportCircuitTo(Circuit * _circuit, QIODevice * _device) {
    if (_circuit && _device){
        QDomDocument doc;
        QDomElement rootElement = doc.createElement("xml");
        QDomElement circuitElement = doc.createElement("circuit");
        
        QDomElement circuitUUIDElement = doc.createElement("uuid");
        circuitUUIDElement.appendChild(doc.createCDATASection(_circuit->getUUID()));
        circuitElement.appendChild(circuitUUIDElement);
        
        for (QMap<QString, Circuit::Object*>::const_iterator iter = _circuit->getObjectMap().begin(); iter != _circuit->getObjectMap().end(); ++iter) {
            Circuit::Object* obj = *iter;
            QDomElement circuitObjectElement = doc.createElement("object");
            QDomElement circuitObjectUUIDElement = doc.createElement("uuid");
            QDomElement circuitObjectTypeElement = doc.createElement("type");
            circuitObjectUUIDElement.appendChild(doc.createCDATASection(obj->getUUID()));

            circuitObjectElement.appendChild(circuitObjectUUIDElement);
            circuitObjectElement.appendChild(circuitObjectTypeElement);

            QString objType("OBJECT");
            if (obj->getType() == Circuit::Object::NODE) {
                objType = "NODE";
                Circuit::Node* node = static_cast<Circuit::Node*>(obj);
                
                //coordinate
                QDomElement circuitNodeXElement = doc.createElement("x");
                QDomElement circuitNodeYElement = doc.createElement("y");
                QDomElement circuitNodeZElement = doc.createElement("z");
                circuitNodeXElement.appendChild(doc.createCDATASection(QString("%1").arg(node->getX())));
                circuitNodeYElement.appendChild(doc.createCDATASection(QString("%1").arg(node->getY())));
                circuitNodeZElement.appendChild(doc.createCDATASection(QString("%1").arg(node->getZ())));
                circuitObjectElement.appendChild(circuitNodeXElement);
                circuitObjectElement.appendChild(circuitNodeYElement);
                circuitObjectElement.appendChild(circuitNodeZElement);
                
                //connections
                QDomElement circuitNodeConnectionsElement = doc.createElement("connections");
                for(QList<QString>::const_iterator iter = node->connectionList().begin();iter != node->connectionList().end();++iter) {
                    QDomElement circuitNodeConnectionsUUIDElement = doc.createElement("uuid");
                    circuitNodeConnectionsUUIDElement.appendChild(doc.createCDATASection(*iter));
                    circuitNodeConnectionsElement.appendChild(circuitNodeConnectionsUUIDElement);
                }
                circuitObjectElement.appendChild(circuitNodeConnectionsElement);
            }
            if (obj->getType() == Circuit::Object::ELEMENT) {
                objType = "ELEMENT";
                Circuit::Element* element = static_cast<Circuit::Element*>(obj);

                //coordinate
                QDomElement circuitElementXElement = doc.createElement("x");
                QDomElement circuitElementYElement = doc.createElement("y");
                QDomElement circuitElementZElement = doc.createElement("z");
                circuitElementXElement.appendChild(doc.createCDATASection(QString("%1").arg(element->getX())));
                circuitElementYElement.appendChild(doc.createCDATASection(QString("%1").arg(element->getY())));
                circuitElementZElement.appendChild(doc.createCDATASection(QString("%1").arg(element->getZ())));
                circuitObjectElement.appendChild(circuitElementXElement);
                circuitObjectElement.appendChild(circuitElementYElement);
                circuitObjectElement.appendChild(circuitElementZElement);
                
                //connections
                QDomElement circuitElementConnectionsElement = doc.createElement("connections");
                for(QList<QString>::const_iterator iter = element->connectionList().begin();iter != element->connectionList().end();++iter) {
                    QDomElement circuitElementConnectionsUUIDElement = doc.createElement("uuid");
                    circuitElementConnectionsUUIDElement.appendChild(doc.createCDATASection(*iter));
                    circuitElementConnectionsElement.appendChild(circuitElementConnectionsUUIDElement);
                }
                circuitObjectElement.appendChild(circuitElementConnectionsElement);
            }
            if (obj->getType() == Circuit::Object::CONNECTION) {
                objType = "CONNECTION";
                Circuit::Connection* connection = static_cast<Circuit::Connection*>(obj);
                
                //objects
                QDomElement circuitConnectionObjectsElement = doc.createElement("objects");
                for(QList<QString>::const_iterator iter = connection->objectList().begin();iter != connection->objectList().end();++iter) {
                    QDomElement circuitConnectionObjectsUUIDElement = doc.createElement("uuid");
                    circuitConnectionObjectsUUIDElement.appendChild(doc.createCDATASection(*iter));
                    circuitConnectionObjectsElement.appendChild(circuitConnectionObjectsUUIDElement);
                }
                circuitObjectElement.appendChild(circuitConnectionObjectsElement);
            }
            circuitObjectTypeElement.appendChild(doc.createCDATASection(objType));
            circuitElement.appendChild(circuitObjectElement);
        }
        
        rootElement.appendChild(circuitElement);
        doc.appendChild(rootElement);

        QTextStream out(_device);
        out << doc;
    }
}
예제 #20
0
  QDomElement getServiceElement( QDomDocument &doc, const QgsProject *project )
  {
    //Service element
    QDomElement serviceElem = doc.createElement( QStringLiteral( "Service" ) );

    //Service name
    QDomElement nameElem = doc.createElement( QStringLiteral( "Name" ) );
    QDomText nameText = doc.createTextNode( "WFS" );
    nameElem.appendChild( nameText );
    serviceElem.appendChild( nameElem );

    QString title = QgsServerProjectUtils::owsServiceTitle( *project );
    if ( !title.isEmpty() )
    {
      QDomElement titleElem = doc.createElement( QStringLiteral( "Title" ) );
      QDomText titleText = doc.createTextNode( title );
      titleElem.appendChild( titleText );
      serviceElem.appendChild( titleElem );
    }

    QString abstract = QgsServerProjectUtils::owsServiceAbstract( *project );
    if ( !abstract.isEmpty() )
    {
      QDomElement abstractElem = doc.createElement( QStringLiteral( "Abstract" ) );
      QDomText abstractText = doc.createCDATASection( abstract );
      abstractElem.appendChild( abstractText );
      serviceElem.appendChild( abstractElem );
    }

    QStringList keywords = QgsServerProjectUtils::owsServiceKeywords( *project );
    if ( !keywords.isEmpty() && !keywords.join( QStringLiteral( ", " ) ).isEmpty() )
    {
      QDomElement keywordsElem = doc.createElement( QStringLiteral( "Keywords" ) );
      QDomText keywordsText = doc.createTextNode( keywords.join( QStringLiteral( ", " ) ) );
      keywordsElem.appendChild( keywordsText );
      serviceElem.appendChild( keywordsElem );
    }

    QDomElement onlineResourceElem = doc.createElement( QStringLiteral( "OnlineResource" ) );
    QString onlineResource = QgsServerProjectUtils::owsServiceOnlineResource( *project );
    if ( !onlineResource.isEmpty() )
    {
      QDomText onlineResourceText = doc.createTextNode( onlineResource );
      onlineResourceElem.appendChild( onlineResourceText );
    }
    serviceElem.appendChild( onlineResourceElem );

    QString fees = QgsServerProjectUtils::owsServiceFees( *project );
    if ( !fees.isEmpty() )
    {
      QDomElement feesElem = doc.createElement( QStringLiteral( "Fees" ) );
      QDomText feesText = doc.createTextNode( fees );
      feesElem.appendChild( feesText );
      serviceElem.appendChild( feesElem );
    }

    QString accessConstraints = QgsServerProjectUtils::owsServiceAccessConstraints( *project );
    if ( !accessConstraints.isEmpty() )
    {
      QDomElement accessConstraintsElem = doc.createElement( QStringLiteral( "AccessConstraints" ) );
      QDomText accessConstraintsText = doc.createTextNode( accessConstraints );
      accessConstraintsElem.appendChild( accessConstraintsText );
      serviceElem.appendChild( accessConstraintsElem );
    }

    return serviceElem;

  }
예제 #21
0
/**
\todo document this function
*/
QDomElement GCF::UpdateInfo::toDomElement(QDomDocument doc, bool forThisSystem) const
{
    QDomElement updateE = doc.createElement("Update");

    QDomElement nameE = doc.createElement("Name");
    nameE.appendChild( doc.createTextNode(d->name) );
    updateE.appendChild(nameE);

    QDomElement titleE = doc.createElement("Title");
    titleE.appendChild( doc.createTextNode(d->title) );
    updateE.appendChild(titleE);

    QDomElement sourceE = doc.createElement("Source");
    sourceE.appendChild( doc.createTextNode(d->source) );
    updateE.appendChild(sourceE);

    QDomElement iconE = doc.createElement("Icon");
    iconE.appendChild( doc.createTextNode(d->iconUrl.toString()) );
    updateE.appendChild(iconE);

    QDomElement typeE = doc.createElement("Type");
    typeE.appendChild( doc.createTextNode(d->type) );
    updateE.appendChild(typeE);

    QDomElement forceInstallE = doc.createElement("ForceInstall");
    forceInstallE.appendChild( doc.createTextNode( QVariant(d->forceInstall).toString() ) );
    updateE.appendChild(forceInstallE);

    QDomElement descE = doc.createElement("Description");
    descE.appendChild( doc.createCDATASection(d->description) );
    updateE.appendChild(descE);

    QDomElement releaseE = doc.createElement("Release");
    releaseE.appendChild( doc.createTextNode(d->release.toString()) );
    updateE.appendChild(releaseE);

    QDomElement versionE = doc.createElement("Version");
    versionE.appendChild( doc.createTextNode(d->version) );
    updateE.appendChild(versionE);

    QList<UpdateFileInfo> ufiList;
    if( forThisSystem )
    {
        UpdateFileInfo fileInfo = updateFileForThisSystem();
        ufiList.append(fileInfo);
    }
    else
        ufiList = d->updateFiles;

    for(int j=0; j<ufiList.count(); j++)
    {
        UpdateFileInfo ufi = ufiList[j];
        QDomElement updateFileE = doc.createElement("UpdateFile");
        updateE.appendChild(updateFileE);

        updateFileE.setAttribute("OS", ufi.OS);
        updateFileE.setAttribute("Arch", ufi.Arch);
        updateFileE.appendChild( doc.createTextNode(ufi.UpdateFileURL.toString()) );
    }

    const QList<UpdateInfo>& deps = d->dependencies;
    for(int j=0; j<deps.count(); j++)
    {
        UpdateInfo dep = deps[j];
        QString depStr = QString("%1 [%2]").arg( dep.name() ).arg( dep.version() );

        QDomElement dependsOnE = doc.createElement("DependsOn");
        dependsOnE.appendChild( doc.createTextNode(depStr) );
        updateE.appendChild(dependsOnE);
    }

    return updateE;
}