bool NewForm::openTemplate(QString *ptrToErrorMessage) { const QString contents = m_newFormWidget->currentTemplate(ptrToErrorMessage); if (contents.isEmpty()) return false; // Write to temporary file and open QString tempPattern = QDir::tempPath(); if (!tempPattern.endsWith(QDir::separator())) // platform-dependant tempPattern += QDir::separator(); tempPattern += QStringLiteral("XXXXXX.ui"); QTemporaryFile tempFormFile(tempPattern); tempFormFile.setAutoRemove(true); if (!tempFormFile.open()) { *ptrToErrorMessage = tr("A temporary form file could not be created in %1.").arg(QDir::tempPath()); return false; } const QString tempFormFileName = tempFormFile.fileName(); tempFormFile.write(contents.toUtf8()); if (!tempFormFile.flush()) { *ptrToErrorMessage = tr("The temporary form file %1 could not be written.").arg(tempFormFileName); return false; } tempFormFile.close(); return m_workbench->openTemplate(tempFormFileName, m_fileName, ptrToErrorMessage); }
bool CodeDialog::generateCode(const QDesignerFormWindowInterface *fw, QString *code, QString *errorMessage) { // Generate temporary file name similar to form file name // (for header guards) QString tempPattern = QDir::tempPath(); if (!tempPattern.endsWith(QDir::separator())) // platform-dependant tempPattern += QDir::separator(); const QString fileName = fw->fileName(); if (fileName.isEmpty()) { tempPattern += QLatin1String("designer"); } else { tempPattern += QFileInfo(fileName).baseName(); } tempPattern += QLatin1String("XXXXXX.ui"); // Write to temp file QTemporaryFile tempFormFile(tempPattern); tempFormFile.setAutoRemove(true); if (!tempFormFile.open()) { *errorMessage = tr("A temporary form file could not be created in %1.").arg(QDir::tempPath()); return false; } const QString tempFormFileName = tempFormFile.fileName(); tempFormFile.write(fw->contents().toUtf8()); if (!tempFormFile.flush()) { *errorMessage = tr("The temporary form file %1 could not be written.").arg(tempFormFileName); return false; } tempFormFile.close(); // Run uic QByteArray rc; if (!runUIC(tempFormFileName, UIC_GenerateCode, rc, *errorMessage)) return false; *code = QString::fromUtf8(rc); return true; }