void windowManager::openNewImage() { const bool warnToSave = !originalImage_.isNull(); const QString file = ::getNewImageFileName(activeWindow(), warnToSave); if (!file.isEmpty()) { const QImage newImage(file); if (newImage.isNull()) { const QList<QByteArray> formats = QImageWriter::supportedImageFormats(); QString supportedTypes; for (QList<QByteArray>::const_iterator it = formats.begin(), end = formats.end(); it != end; ++it) { supportedTypes += (*it).data() + QString(", "); } supportedTypes.chop(2); const QString errorString = "Unable to load " + file + ";\nplease make sure " + "your image is one of the supported types:\n" + supportedTypes; QMessageBox::warning(NULL, "Image load failed", errorString); return; } QFile fileDevice(file); fileDevice.open(QIODevice::ReadOnly); QByteArray byteArray(fileDevice.readAll()); const QString imageName = QFileInfo(file).fileName(); reset(newImage, byteArray, imageName); setProjectVersion(programVersion_); ::showAndRaise(colorChooser_.window()); colorChooser_.window()->setNewImage(newImage); colorChooser_.window()->setWindowTitle(getWindowTitle()); startOriginalImageColorCount(); } }
bool Syntax::load(QString file) { if(xmlSyntaxFileName==file) return true; else xmlSyntaxFileName=file; printf("[Syntax::load] Loading syntax\n"); QXmlStreamReader xml; QStack <QString> stack; QFile fileDevice(file); if (!fileDevice.open(QFile::ReadOnly | QFile::Text)) { printf("Error al abrir el archivo\n"); return false; } highlightingRules.clear(); highlightingBlockRules.clear(); highlightingBracketsRules.clear(); xml.setDevice(&fileDevice); QMap <QString,QString> values; QVector<QString> xmlMainItems; xmlMainItems << "item" << "block" << "bracket"; int ruleOrder=0; while (!xml.atEnd()) { QXmlStreamReader::TokenType tokenType=xml.readNext(); switch(tokenType) { case QXmlStreamReader::StartElement: if(xml.name()!="syntax") { if( xmlMainItems.contains(xml.name().toString()) ) stack.push(xml.name().toString()); else values[xml.name().toString()]=xml.readElementText().trimmed(); } break; case QXmlStreamReader::EndElement: if(stack.isEmpty()) break; QString name=stack.top(); if(name==xml.name()) stack.pop(); if(stack.isEmpty()) { QTextCharFormat format; if(values.contains("bold") && values["bold"]=="true") format.setFontWeight(QFont::Bold); if(values.contains("underline") && values["underline"]=="true") format.setFontUnderline(true); if(values.contains("italic") && values["italic"]=="true") format.setFontItalic(true); if(values.contains("foreground")) format.setForeground(QBrush(QColor(values["foreground"]))); if(values.contains("background")) format.setBackground(QBrush(QColor(values["background"]))); if(name=="item") { HighlightingRule rule; rule.format=format; rule.pattern=QRegExp(values["pattern"]); rule.ruleOrder=ruleOrder++; highlightingRules.append(rule); values.clear(); } else if(name=="block" || name=="bracket") { HighlightingBlockRule rule; rule.format=format; rule.startPattern=QRegExp(values["startPattern"]); rule.endPattern=QRegExp(values["endPattern"]); rule.ruleOrder=ruleOrder++; if(name=="block") highlightingBlockRules.append(rule); else highlightingBracketsRules.append(rule); //Bracket rule values.clear(); } } break; } } if (xml.hasError()) { // do error handling printf("Error %s: %ld:%ld %s\n", file.toLocal8Bit().data(), xml.lineNumber(), xml.columnNumber(), xml.errorString().toLocal8Bit().data() ); return false; } return true; }