QFileDevice::FileError App::loadXML(const QString &fileName) { QFile::FileError retval = QFile::NoError; if (fileName.isEmpty() == true) return QFile::OpenError; QXmlStreamReader *doc = QLCFile::getXMLReader(fileName); if (doc == NULL || doc->device() == NULL || doc->hasError()) { qWarning() << Q_FUNC_INFO << "Unable to read from" << fileName; return QFile::ReadError; } while (!doc->atEnd()) { if (doc->readNext() == QXmlStreamReader::DTD) break; } if (doc->hasError()) { QLCFile::releaseXMLReader(doc); return QFile::ResourceError; } /* Set the workspace path before loading the new XML. In this way local files can be loaded even if the workspace file has been moved */ m_doc->setWorkspacePath(QFileInfo(fileName).absolutePath()); if (doc->dtdName() == KXMLQLCWorkspace) { if (loadXML(*doc) == false) { retval = QFile::ReadError; } else { setFileName(fileName); m_doc->resetModified(); retval = QFile::NoError; } } else { retval = QFile::ReadError; qWarning() << Q_FUNC_INFO << fileName << "is not a workspace file"; } QLCFile::releaseXMLReader(doc); return retval; }
QFile::FileError QLCFixtureDef::loadXML(const QString& fileName) { QFile::FileError error = QFile::NoError; if (fileName.isEmpty() == true) return QFile::OpenError; QXmlStreamReader *doc = QLCFile::getXMLReader(fileName); if (doc == NULL || doc->device() == NULL || doc->hasError()) { qWarning() << Q_FUNC_INFO << "Unable to read from" << fileName; return QFile::ReadError; } while (!doc->atEnd()) { if (doc->readNext() == QXmlStreamReader::DTD) break; } if (doc->hasError()) { QLCFile::releaseXMLReader(doc); return QFile::ResourceError; } if (doc->dtdName() == KXMLQLCFixtureDefDocument) { // qDebug() << Q_FUNC_INFO << "Loading " << fileName; if (loadXML(*doc) == true) error = QFile::NoError; else { qWarning() << fileName << QString("%1\nLine %2, column %3") .arg(doc->errorString()) .arg(doc->lineNumber()) .arg(doc->columnNumber()); error = QFile::ReadError; } } else { error = QFile::ReadError; qWarning() << Q_FUNC_INFO << fileName << "is not a fixture definition file"; } QLCFile::releaseXMLReader(doc); return error; }
QFileDevice::FileError App::loadXML(const QString &fileName) { QFile::FileError retval = QFile::NoError; if (fileName.isEmpty() == true) return QFile::OpenError; QXmlStreamReader *doc = QLCFile::getXMLReader(fileName); if (doc == NULL || doc->device() == NULL || doc->hasError()) { qWarning() << Q_FUNC_INFO << "Unable to read from" << fileName; return QFile::ReadError; } while (!doc->atEnd()) { if (doc->readNext() == QXmlStreamReader::DTD) break; } if (doc->hasError()) { QLCFile::releaseXMLReader(doc); return QFile::ResourceError; } if (doc->dtdName() == KXMLQLCWorkspace) { if (loadXML(*doc) == false) { retval = QFile::ReadError; } else { setFileName(fileName); m_doc->resetModified(); retval = QFile::NoError; } } else { retval = QFile::ReadError; qWarning() << Q_FUNC_INFO << fileName << "is not a workspace file"; } QLCFile::releaseXMLReader(doc); return retval; }
bool ImportManager::loadWorkspace(const QString &fileName) { QString localFilename = fileName; if (localFilename.startsWith("file:")) localFilename = QUrl(fileName).toLocalFile(); bool retval = false; if (localFilename.isEmpty() == true) return false; QXmlStreamReader *doc = QLCFile::getXMLReader(localFilename); if (doc == NULL || doc->device() == NULL || doc->hasError()) { qWarning() << Q_FUNC_INFO << "Unable to read from" << localFilename; return false; } while (!doc->atEnd()) { if (doc->readNext() == QXmlStreamReader::DTD) break; } if (doc->hasError()) { QLCFile::releaseXMLReader(doc); return false; } m_importDoc->clearContents(); /* Set the workspace path before loading the new XML. In this way local files can be loaded even if the workspace file has been moved */ m_importDoc->setWorkspacePath(QFileInfo(localFilename).absolutePath()); if (doc->dtdName() == KXMLQLCWorkspace) { retval = loadXML(*doc); } else { qWarning() << Q_FUNC_INFO << localFilename << "is not a workspace file"; } QLCFile::releaseXMLReader(doc); return retval; }
QFileDevice::FileError ColorFilters::loadXML(const QString &fileName) { QFile::FileError error = QFile::NoError; if (fileName.isEmpty() == true) return QFile::OpenError; QXmlStreamReader *doc = QLCFile::getXMLReader(fileName); if (doc == nullptr || doc->device() == nullptr || doc->hasError()) { qWarning() << Q_FUNC_INFO << "Unable to read from" << fileName; return QFile::ReadError; } while (!doc->atEnd()) { if (doc->readNext() == QXmlStreamReader::DTD) break; } if (doc->hasError()) { QLCFile::releaseXMLReader(doc); return QFile::ResourceError; } if (doc->dtdName() == KXMLColorFilters) { if (doc->readNextStartElement() == false) return QFile::ResourceError; if (doc->name() == KXMLColorFilters) { int count = 0; while (doc->readNextStartElement()) { if (doc->name() == KXMLColorFiltersColor) { ColorInfo cInfo; QXmlStreamAttributes attrs = doc->attributes(); if (attrs.hasAttribute(KXMLColorFiltersName)) cInfo.m_name = attrs.value(KXMLColorFiltersName).toString(); if (attrs.hasAttribute(KXMLColorFiltersRGB)) cInfo.m_rgb = QColor(attrs.value(KXMLColorFiltersRGB).toString()); if (attrs.hasAttribute(KXMLColorFiltersWAUV)) cInfo.m_wauv = QColor(attrs.value(KXMLColorFiltersWAUV).toString()); if (cInfo.m_name.isEmpty() == false && (cInfo.m_rgb.isValid() || cInfo.m_wauv.isValid())) m_filterList.append(cInfo); doc->skipCurrentElement(); count++; } else if (doc->name() == KXMLColorFiltersName) { m_name = doc->readElementText(); } else if (doc->name() == KXMLQLCCreator) { /* Ignore this block */ doc->skipCurrentElement(); } else { qWarning() << Q_FUNC_INFO << "Unknown ColorFilters tag:" << doc->name(); doc->skipCurrentElement(); } } qDebug() << count << "filters loaded"; } } m_path = fileName; QLCFile::releaseXMLReader(doc); return error; }
bool QLCFixtureDefCache::loadMap(const QDir &dir) { qDebug() << Q_FUNC_INFO << dir.path(); if (dir.exists() == false || dir.isReadable() == false) return false; QString mapPath(dir.absoluteFilePath(FIXTURES_MAP_NAME)); if (mapPath.isEmpty() == true) return false; // cache the map path to be used when composing the fixture // definition absolute path m_mapAbsolutePath = dir.absolutePath(); QXmlStreamReader *doc = QLCFile::getXMLReader(mapPath); if (doc == NULL || doc->device() == NULL || doc->hasError()) { qWarning() << Q_FUNC_INFO << "Unable to read from" << mapPath; return false; } while (!doc->atEnd()) { if (doc->readNext() == QXmlStreamReader::DTD) break; } if (doc->hasError()) { QLCFile::releaseXMLReader(doc); return false; } // make sure the doc type is FixtureMap if (doc->dtdName() != KXMLQLCFixtureMap) { qWarning() << Q_FUNC_INFO << mapPath << "is not a fixture map file"; QLCFile::releaseXMLReader(doc); return false; } if (doc->readNextStartElement() == false) { QLCFile::releaseXMLReader(doc); return false; } // make sure the root tag is FixtureMap if (doc->name() != KXMLQLCFixtureMap) { qWarning() << Q_FUNC_INFO << mapPath << "is not a fixture map file"; QLCFile::releaseXMLReader(doc); return false; } int fxCount = 0; QString manufacturer = ""; while (doc->readNextStartElement()) { if (doc->name() == "M") { if (doc->attributes().hasAttribute("n")) { manufacturer = doc->attributes().value("n").toString(); fxCount += loadMapManufacturer(doc, manufacturer); } } else { qWarning() << Q_FUNC_INFO << "Unknown Fixture Map tag: " << doc->name(); doc->skipCurrentElement(); } } qDebug() << fxCount << "fixtures found in map"; #if 0 /* Attempt to read all files not in FixtureMap */ QStringList definitionPaths; // Gather a list of manufacturers QListIterator <QLCFixtureDef*> mfit(m_defs); while (mfit.hasNext() == true) definitionPaths << mfit.next()->definitionSourceFile(); QStringListIterator it(dir.entryList()); while (it.hasNext() == true) { QString path(dir.absoluteFilePath(it.next())); if (definitionPaths.contains(path)) continue; qWarning() << path << "not in" << FIXTURES_MAP_NAME; if (path.toLower().endsWith(KExtFixture) == true) loadQXF(path); else if (path.toLower().endsWith(KExtAvolitesFixture) == true) loadD4(path); else qWarning() << Q_FUNC_INFO << "Unrecognized fixture extension:" << path; } #endif return true; }