示例#1
0
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();
  }
}
示例#2
0
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;
}