saveformastemplate.cpp

来自「奇趣公司比较新的qt/emd版本」· C++ 代码 · 共 146 行

CPP
146
字号
/******************************************************************************** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.**** This file is part of the Qt Designer 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://trolltech.com/products/qt/licenses/licensing/opensource/**** If you are unsure which license is appropriate for your use, please** review the following information:** http://trolltech.com/products/qt/licenses/licensing/licensingoverview** or contact the sales department at sales@trolltech.com.**** In addition, as a special exception, Trolltech gives you certain** additional rights. These rights are described in the Trolltech GPL** Exception version 1.0, which can be found at** http://www.trolltech.com/products/qt/gplexception/ and in the file** GPL_EXCEPTION.txt in this package.**** In addition, as a special exception, Trolltech, as the sole copyright** holder for Qt Designer, grants users of the Qt/Eclipse Integration** plug-in the right for the Qt/Eclipse Integration to link to** functionality provided by Qt Designer and its related libraries.**** Trolltech reserves all rights not expressly granted herein.**** 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 "saveformastemplate.h"#include "qdesigner_settings.h"#include "preferencesdialog.h"#include <QtCore/QFile>#include <QtGui/QFileDialog>#include <QtGui/QMessageBox>#include <QtGui/QPushButton>#include <QtDesigner/abstractformwindow.h>SaveFormAsTemplate::SaveFormAsTemplate(QDesignerFormWindowInterface *formWindow, QWidget *parent)    : QDialog(parent, Qt::Sheet),      m_formWindow(formWindow){    ui.setupUi(this);    setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);    ui.templateNameEdit->setText(formWindow->mainContainer()->objectName());    ui.templateNameEdit->selectAll();    ui.templateNameEdit->setFocus();    QDesignerSettings settings;    QStringList paths = settings.formTemplatePaths();    ui.categoryCombo->addItems(paths);    ui.categoryCombo->addItem(tr("Add path..."));    m_addPathIndex = ui.categoryCombo->count() - 1;    connect(ui.templateNameEdit, SIGNAL(textChanged(QString)),            this, SLOT(updateOKButton(QString)));    connect(ui.categoryCombo, SIGNAL(activated(int)), this, SLOT(checkToAddPath(int)));}SaveFormAsTemplate::~SaveFormAsTemplate(){}void SaveFormAsTemplate::accept(){    QString templateFileName = ui.categoryCombo->currentText();    templateFileName += QLatin1Char('/');    const QString name = ui.templateNameEdit->text();    templateFileName +=  name;    const QString extension = QLatin1String(".ui");    if (!templateFileName.endsWith(extension))        templateFileName.append(extension);    QFile file(templateFileName);    if (file.exists()) {        QMessageBox msgBox(QMessageBox::Information, tr("Template Exists"),                        tr("A template with the name %1 already exists.\n"                           "Do you want overwrite the template?").arg(name), QMessageBox::Cancel, m_formWindow);        msgBox.setDefaultButton(QMessageBox::Cancel);        QPushButton *overwriteButton = msgBox.addButton(tr("Overwrite Template"), QMessageBox::AcceptRole);        msgBox.exec();        if (msgBox.clickedButton() != overwriteButton)            return;    }    while (!file.open(QFile::WriteOnly)) {        if (QMessageBox::information(m_formWindow, tr("Open Error"),            tr("There was an error opening template %1 for writing. Reason: %2").arg(name).arg(file.errorString()),            QMessageBox::Retry|QMessageBox::Cancel, QMessageBox::Cancel) == QMessageBox::Cancel) {            return;        }    }    QByteArray ba = m_formWindow->contents().toUtf8();    while (file.write(ba) != ba.size()) {        if (QMessageBox::information(m_formWindow, tr("Write Error"),            tr("There was an error writing the template %1 to disk. Reason: %2").arg(name).arg(file.errorString()),            QMessageBox::Retry|QMessageBox::Cancel, QMessageBox::Cancel) == QMessageBox::Cancel) {                file.close();                file.remove();                return;            }            file.reset();    }    // update the list of places too...    QStringList sl;    for (int i = 0; i < m_addPathIndex; ++i)        sl << ui.categoryCombo->itemText(i);    QDesignerSettings().setFormTemplatePaths(sl);    QDialog::accept();}void SaveFormAsTemplate::updateOKButton(const QString &str){    QPushButton *okButton = ui.buttonBox->button(QDialogButtonBox::Ok);    okButton->setEnabled(!str.isEmpty());}void SaveFormAsTemplate::checkToAddPath(int itemIndex){    if (itemIndex != m_addPathIndex)        return;    const QString dir = PreferencesDialog::chooseTemplatePath(this);    if (dir.isEmpty()) {        ui.categoryCombo->setCurrentIndex(0);        return;    }    ui.categoryCombo->insertItem(m_addPathIndex, dir);    ui.categoryCombo->setCurrentIndex(m_addPathIndex);    ++m_addPathIndex;}

⌨️ 快捷键说明

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