tools/linguist/lupdate/ui.cpp
changeset 37 758a864f9613
parent 18 2f34d5167611
equal deleted inserted replaced
36:ef0373b55136 37:758a864f9613
    41 
    41 
    42 #include "lupdate.h"
    42 #include "lupdate.h"
    43 
    43 
    44 #include <translator.h>
    44 #include <translator.h>
    45 
    45 
       
    46 #include <QtCore/QCoreApplication>
    46 #include <QtCore/QDebug>
    47 #include <QtCore/QDebug>
    47 #include <QtCore/QFile>
    48 #include <QtCore/QFile>
    48 #include <QtCore/QString>
    49 #include <QtCore/QString>
    49 
    50 
    50 #include <QtXml/QXmlAttributes>
    51 #include <QtXml/QXmlAttributes>
    52 #include <QtXml/QXmlLocator>
    53 #include <QtXml/QXmlLocator>
    53 #include <QtXml/QXmlParseException>
    54 #include <QtXml/QXmlParseException>
    54 
    55 
    55 
    56 
    56 QT_BEGIN_NAMESPACE
    57 QT_BEGIN_NAMESPACE
       
    58 
       
    59 class LU {
       
    60     Q_DECLARE_TR_FUNCTIONS(LUpdate)
       
    61 };
    57 
    62 
    58 class UiReader : public QXmlDefaultHandler
    63 class UiReader : public QXmlDefaultHandler
    59 {
    64 {
    60 public:
    65 public:
    61     UiReader(Translator &translator, ConversionData &cd)
    66     UiReader(Translator &translator, ConversionData &cd)
   150     return true;
   155     return true;
   151 }
   156 }
   152 
   157 
   153 bool UiReader::fatalError(const QXmlParseException &exception)
   158 bool UiReader::fatalError(const QXmlParseException &exception)
   154 {
   159 {
   155     QString msg;
   160     QString msg = LU::tr("XML error: Parse error at line %1, column %2 (%3).")
   156     msg.sprintf("XML error: Parse error at line %d, column %d (%s).",
   161         .arg(exception.lineNumber()).arg(exception.columnNumber())
   157                  exception.lineNumber(), exception.columnNumber(),
   162         .arg(exception.message());
   158                  exception.message().toLatin1().data());
   163     m_cd.appendError(msg);
   159     m_cd.appendError(msg); 
       
   160     return false;
   164     return false;
   161 }
   165 }
   162 
   166 
   163 void UiReader::flush()
   167 void UiReader::flush()
   164 {
   168 {
   179 bool loadUI(Translator &translator, const QString &filename, ConversionData &cd)
   183 bool loadUI(Translator &translator, const QString &filename, ConversionData &cd)
   180 {
   184 {
   181     cd.m_sourceFileName = filename;
   185     cd.m_sourceFileName = filename;
   182     QFile file(filename);
   186     QFile file(filename);
   183     if (!file.open(QIODevice::ReadOnly)) {
   187     if (!file.open(QIODevice::ReadOnly)) {
   184         cd.appendError(QString::fromLatin1("Cannot open %1: %2")
   188         cd.appendError(LU::tr("Cannot open %1: %2").arg(filename, file.errorString()));
   185             .arg(filename, file.errorString()));
       
   186         return false;
   189         return false;
   187     }
   190     }
   188     QXmlInputSource in(&file);
   191     QXmlInputSource in(&file);
   189     QXmlSimpleReader reader;
   192     QXmlSimpleReader reader;
   190     reader.setFeature(QLatin1String("http://xml.org/sax/features/namespaces"), false);
   193     reader.setFeature(QLatin1String("http://xml.org/sax/features/namespaces"), false);
   194     UiReader handler(translator, cd);
   197     UiReader handler(translator, cd);
   195     reader.setContentHandler(&handler);
   198     reader.setContentHandler(&handler);
   196     reader.setErrorHandler(&handler);
   199     reader.setErrorHandler(&handler);
   197     bool result = reader.parse(in);
   200     bool result = reader.parse(in);
   198     if (!result)
   201     if (!result)
   199         cd.appendError(QLatin1String("Parse error in UI file"));
   202         cd.appendError(LU::tr("Parse error in UI file"));
   200     reader.setContentHandler(0);
   203     reader.setContentHandler(0);
   201     reader.setErrorHandler(0);
   204     reader.setErrorHandler(0);
   202     return result;
   205     return result;
   203 }
   206 }
   204 
   207