⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uic.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
字号:
/******************************************************************************** Copyright (C) 1992-2006 Trolltech ASA. All rights reserved.**** This file is part of the tools applications of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include "uic.h"#include "ui4.h"#include "driver.h"#include "option.h"#include "treewalker.h"#include "validator.h"#include "writeincludes.h"#include "writedeclaration.h"#include <QDomDocument>#include <QFileInfo>#include <QRegExp>#include <QTextStream>#if defined Q_WS_WIN#include <qt_windows.h>#endifUic::Uic(Driver *d)     : drv(d),       out(d->output()),       opt(d->option()),       info(d),       cWidgetsInfo(d),       externalPix(true){}Uic::~Uic(){}bool Uic::printDependencies(){    QString fileName = opt.inputFile;    QFile f;    if (fileName.isEmpty())        f.open(stdin, QIODevice::ReadOnly);    else {        f.setFileName(fileName);        if (!f.open(QIODevice::ReadOnly))            return false;    }    QDomDocument doc;                        // ### generalize. share more code with the other tools!    if (!doc.setContent(&f))        return false;    QDomElement root = doc.firstChild().toElement();    DomUI *ui = new DomUI();    ui->read(root);    double version = ui->attributeVersion().toDouble();    if (version < 4.0) {        delete ui;        fprintf(stderr, "uic: File generated with too old version of Qt Designer\n");        return false;    }    if (DomIncludes *includes = ui->elementIncludes()) {        foreach (DomInclude *incl, includes->elementInclude()) {            QString file = incl->text();            if (file.isEmpty())                continue;            fprintf(stdout, "%s\n", file.toLocal8Bit().constData());        }    }    if (DomCustomWidgets *customWidgets = ui->elementCustomWidgets()) {        foreach (DomCustomWidget *customWidget, customWidgets->elementCustomWidget()) {            if (DomHeader *header = customWidget->elementHeader()) {                QString file = header->text();                if (file.isEmpty())                    continue;                fprintf(stdout, "%s\n", file.toLocal8Bit().constData());            }        }    }    delete ui;    return true;}void Uic::writeCopyrightHeader(DomUI *ui){    QString comment = ui->elementComment();    if (comment.size())        out << "/*\n" << comment << "\n*/\n\n";}bool Uic::write(QIODevice *in){    QDomDocument doc;    if (!doc.setContent(in))        return false;    QDomElement root = doc.firstChild().toElement();    DomUI *ui = new DomUI();    ui->read(root);    double version = ui->attributeVersion().toDouble();    if (version < 4.0) {        delete ui;        fprintf(stderr, "uic: File generated with too old version of Qt Designer\n");        return false;    }    bool rtn = write(ui);    delete ui;    return rtn;}bool Uic::write(DomUI *ui){    if (!ui || !ui->elementWidget())        return false;    if (opt.copyrightHeader)        writeCopyrightHeader(ui);    if (opt.headerProtection) {        writeHeaderProtectionStart();        out << "\n";    }    pixFunction = ui->elementPixmapFunction();    if (pixFunction == QLatin1String("QPixmap::fromMimeSource"))        pixFunction = QLatin1String("qPixmapFromMimeSource");    externalPix = ui->elementImages() == 0;    info.acceptUI(ui);    cWidgetsInfo.acceptUI(ui);    WriteIncludes(this).acceptUI(ui);    Validator(this).acceptUI(ui);    WriteDeclaration(this).acceptUI(ui);    if (opt.headerProtection)        writeHeaderProtectionEnd();    return true;}void Uic::writeHeaderProtectionStart(){    QString h = drv->headerFileName();    out << "#ifndef " << h << "\n"        << "#define " << h << "\n";}void Uic::writeHeaderProtectionEnd(){    QString h = drv->headerFileName();    out << "#endif // " << h << "\n";}bool Uic::isMainWindow(const QString &className) const{    return customWidgetsInfo()->extends(className, QLatin1String("Q3MainWindow"))        || customWidgetsInfo()->extends(className, QLatin1String("QMainWindow"));}bool Uic::isToolBar(const QString &className) const{    return customWidgetsInfo()->extends(className, QLatin1String("Q3ToolBar"))        || customWidgetsInfo()->extends(className, QLatin1String("QToolBar"));}bool Uic::isButton(const QString &className) const{    return customWidgetsInfo()->extends(className, QLatin1String("QRadioButton"))        || customWidgetsInfo()->extends(className, QLatin1String("QToolButton"))        || customWidgetsInfo()->extends(className, QLatin1String("QCheckBox"))        || customWidgetsInfo()->extends(className, QLatin1String("QPushButton"));}bool Uic::isContainer(const QString &className) const{    return customWidgetsInfo()->extends(className, QLatin1String("QStackedWidget"))        || customWidgetsInfo()->extends(className, QLatin1String("QToolBox"))        || customWidgetsInfo()->extends(className, QLatin1String("QTabWidget"));}bool Uic::isStatusBar(const QString &className) const{    return customWidgetsInfo()->extends(className, QLatin1String("QStatusBar"));}bool Uic::isMenuBar(const QString &className) const{    return customWidgetsInfo()->extends(className, QLatin1String("QMenuBar"));}bool Uic::isMenu(const QString &className) const{    return customWidgetsInfo()->extends(className, QLatin1String("QMenu"))        || customWidgetsInfo()->extends(className, QLatin1String("QPopupMenu"));}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -