QT_BEGIN_NAMESPACE SaveFormAsTemplate::SaveFormAsTemplate(QDesignerFormEditorInterface *core, QDesignerFormWindowInterface *formWindow, QWidget *parent) : QDialog(parent, Qt::Sheet), m_core(core), m_formWindow(formWindow) { ui.setupUi(this); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); ui.templateNameEdit->setText(formWindow->mainContainer()->objectName()); ui.templateNameEdit->selectAll(); ui.templateNameEdit->setFocus(); QStringList paths = QDesignerSettings(m_core).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))); }
QT_BEGIN_NAMESPACE SaveFormAsTemplate::SaveFormAsTemplate(QDesignerFormEditorInterface *core, QDesignerFormWindowInterface *formWindow, QWidget *parent) : QDialog(parent, Qt::Sheet), m_core(core), m_formWindow(formWindow) { typedef void (QComboBox::*QComboIntSignal)(int); ui.setupUi(this); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); ui.templateNameEdit->setText(formWindow->mainContainer()->objectName()); ui.templateNameEdit->selectAll(); ui.templateNameEdit->setFocus(); QStringList paths = QDesignerSettings(m_core).formTemplatePaths(); ui.categoryCombo->addItems(paths); ui.categoryCombo->addItem(tr("Add path...")); m_addPathIndex = ui.categoryCombo->count() - 1; connect(ui.templateNameEdit, &QLineEdit::textChanged, this, &SaveFormAsTemplate::updateOKButton); connect(ui.categoryCombo, static_cast<QComboIntSignal>(&QComboBox::activated), this, &SaveFormAsTemplate::checkToAddPath); }
QWidget *QDesignerAppearanceOptionsPage::createPage(QWidget *parent) { m_widget = new QDesignerAppearanceOptionsWidget(parent); m_initialOptions.fromSettings(QDesignerSettings(m_core)); m_widget->setAppearanceOptions(m_initialOptions); return m_widget; }
void QDesigner::initialize() { // initialize the sub components QStringList files; QString resourceDir = QLibraryInfo::location(QLibraryInfo::TranslationsPath); parseCommandLineArgs(files, resourceDir); QTranslator *translator = new QTranslator(this); QTranslator *qtTranslator = new QTranslator(this); const QString localSysName = QLocale::system().name(); QString translatorFileName = QStringLiteral("designer_"); translatorFileName += localSysName; translator->load(translatorFileName, resourceDir); translatorFileName = QStringLiteral("qt_"); translatorFileName += localSysName; qtTranslator->load(translatorFileName, resourceDir); installTranslator(translator); installTranslator(qtTranslator); if (QLibraryInfo::licensedProducts() == QStringLiteral("Console")) { QMessageBox::information(0, tr("Qt Designer"), tr("This application cannot be used for the Console edition of Qt")); QMetaObject::invokeMethod(this, "quit", Qt::QueuedConnection); return; } m_workbench = new QDesignerWorkbench(); emit initialized(); previousMessageHandler = qInstallMessageHandler(designerMessageHandler); // Warn when loading faulty forms Q_ASSERT(previousMessageHandler); m_suppressNewFormShow = m_workbench->readInBackup(); if (!files.empty()) { const QStringList::const_iterator cend = files.constEnd(); for (QStringList::const_iterator it = files.constBegin(); it != cend; ++it) { // Ensure absolute paths for recent file list to be unique QString fileName = *it; const QFileInfo fi(fileName); if (fi.exists() && fi.isRelative()) fileName = fi.absoluteFilePath(); m_workbench->readInForm(fileName); } } if ( m_workbench->formWindowCount()) m_suppressNewFormShow = true; // Show up error box with parent now if something went wrong if (m_initializationErrors.isEmpty()) { if (!m_suppressNewFormShow && QDesignerSettings(m_workbench->core()).showNewFormOnStartup()) QTimer::singleShot(100, this, SLOT(callCreateForm())); // won't show anything if suppressed } else { showErrorMessageBox(m_initializationErrors); m_initializationErrors.clear(); } }
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; } } const QString origName = m_formWindow->fileName(); // ensure m_formWindow->contents() will convert properly resource paths to relative paths // (relative to template location, not to the current form location) m_formWindow->setFileName(templateFileName); QByteArray ba = m_formWindow->contents().toUtf8(); m_formWindow->setFileName(origName); 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(m_core).setFormTemplatePaths(sl); QDialog::accept(); }
void SaveFormAsTemplate::on_okButton_clicked() { QString templateFileName = ui.categoryCombo->currentText() + QLatin1Char('/') + ui.templateNameEdit->text(); if (!templateFileName.endsWith(QLatin1String(".ui"))) templateFileName.append(QLatin1String(".ui")); QFile file(templateFileName); if (file.exists()) { if (QMessageBox::information(m_formWindow, tr("Template Exists"), tr("A template with the name %1 already exits\n" "Do you want overwrite the template?").arg(ui.templateNameEdit->text()), tr("Overwrite Template"), tr("Cancel"), QString(), 1, 1) == 1) { 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(ui.templateNameEdit->text()).arg(file.errorString()), tr("Try again"), tr("Cancel"), QString(), 0, 1) == 1) { 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(ui.templateNameEdit->text()).arg(file.errorString()), tr("Try again"), tr("Cancel"), QString(), 0, 1) == 1) { 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); accept(); }
void QDesignerFormWindow::closeEvent(QCloseEvent *ev) { if (m_editor->isDirty()) { // Сохраняем автоматически bool ok = workbench()->saveForm(m_editor); ev->setAccepted(ok); m_editor->setDirty(!ok); /* raise(); QMessageBox box(tr("Save Form?"), tr("Do you want to save the changes you made to \"%1\" before closing?") .arg(m_editor->fileName().isEmpty() ? action()->text() : m_editor->fileName()), QMessageBox::Information, QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape, m_editor, Qt::Sheet); box.setButtonText(QMessageBox::Yes, m_editor->fileName().isEmpty() ? tr("Save...") : tr("Save")); box.setButtonText(QMessageBox::No, tr("Don't Save")); switch (box.exec()) { case QMessageBox::Yes: { bool ok = workbench()->saveForm(m_editor); ev->setAccepted(ok); m_editor->setDirty(!ok); break; } case QMessageBox::No: m_editor->setDirty(false); // Not really necessary, but stops problems if we get close again. ev->accept(); break; case QMessageBox::Cancel: ev->ignore(); break; }*/ } if (m_workbench->core()->formWindowManager()->formWindowCount() == 1 && ev->isAccepted() && QDesignerSettings().showNewFormOnStartup()) QTimer::singleShot(200, m_workbench->actionManager(), SLOT(createForm())); // Use timer in case we are quitting. }