void BazaarPlugin::showCommitWidget(const QList<VCSBase::VCSBaseClient::StatusItem> &status) { VCSBase::VCSBaseOutputWindow *outputWindow = VCSBase::VCSBaseOutputWindow::instance(); //Once we receive our data release the connection so it can be reused elsewhere disconnect(m_client, SIGNAL(parsedStatus(QList<VCSBase::VCSBaseClient::StatusItem>)), this, SLOT(showCommitWidget(QList<VCSBase::VCSBaseClient::StatusItem>))); if (status.isEmpty()) { outputWindow->appendError(tr("There are no changes to commit.")); return; } deleteCommitLog(); // Open commit log QString changeLogPattern = QDir::tempPath(); if (!changeLogPattern.endsWith(QLatin1Char('/'))) changeLogPattern += QLatin1Char('/'); changeLogPattern += QLatin1String("qtcreator-bzr-XXXXXX.msg"); m_changeLog = new QTemporaryFile(changeLogPattern, this); if (!m_changeLog->open()) { outputWindow->appendError(tr("Unable to generate a temporary file for the commit editor.")); return; } Core::IEditor *editor = m_core->editorManager()->openEditor(m_changeLog->fileName(), Constants::COMMIT_ID, Core::EditorManager::ModeSwitch); if (!editor) { outputWindow->appendError(tr("Unable to create an editor for the commit.")); return; } CommitEditor *commitEditor = qobject_cast<CommitEditor *>(editor); if (!commitEditor) { outputWindow->appendError(tr("Unable to create a commit editor.")); return; } commitEditor->registerActions(m_editorUndo, m_editorRedo, m_editorCommit, m_editorDiff); connect(commitEditor, SIGNAL(diffSelectedFiles(QStringList)), this, SLOT(diffFromEditorSelected(QStringList))); commitEditor->setCheckScriptWorkingDirectory(m_submitRepository); const QString msg = tr("Commit changes for \"%1\"."). arg(QDir::toNativeSeparators(m_submitRepository)); commitEditor->setDisplayName(msg); const BranchInfo branch = m_client->synchronousBranchQuery(m_submitRepository); commitEditor->setFields(m_submitRepository, branch, m_bazaarSettings.stringValue(BazaarSettings::userNameKey), m_bazaarSettings.stringValue(BazaarSettings::userEmailKey), status); }
void MercurialPlugin::showCommitWidget(const QList<QPair<QString, QString> > &status) { VCSBase::VCSBaseOutputWindow *outputWindow = VCSBase::VCSBaseOutputWindow::instance(); //Once we receive our data release the connection so it can be reused elsewhere disconnect(m_client, SIGNAL(parsedStatus(QList<QPair<QString,QString> >)), this, SLOT(showCommitWidget(QList<QPair<QString,QString> >))); if (status.isEmpty()) { outputWindow->appendError(tr("There are no changes to commit.")); return; } deleteCommitLog(); // Open commit log QString changeLogPattern = QDir::tempPath(); if (!changeLogPattern.endsWith(QLatin1Char('/'))) changeLogPattern += QLatin1Char('/'); changeLogPattern += QLatin1String("qtcreator-hg-XXXXXX.msg"); changeLog = new QTemporaryFile(changeLogPattern, this); if (!changeLog->open()) { outputWindow->appendError(tr("Unable to generate a temporary file for the commit editor.")); return; } Core::IEditor *editor = core->editorManager()->openEditor(changeLog->fileName(), QLatin1String(Constants::COMMIT_ID), Core::EditorManager::ModeSwitch); if (!editor) { outputWindow->appendError(tr("Unable to create an editor for the commit.")); return; } QTC_ASSERT(qobject_cast<CommitEditor *>(editor), return) CommitEditor *commitEditor = static_cast<CommitEditor *>(editor); const QString msg = tr("Commit changes for \"%1\"."). arg(QDir::toNativeSeparators(m_submitRepository)); commitEditor->setDisplayName(msg); QString branch = m_client->branchQuerySync(m_submitRepository); commitEditor->setFields(m_submitRepository, branch, mercurialSettings.userName(), mercurialSettings.email(), status); commitEditor->registerActions(editorUndo, editorRedo, editorCommit, editorDiff); connect(commitEditor, SIGNAL(diffSelectedFiles(QStringList)), this, SLOT(diffFromEditorSelected(QStringList))); commitEditor->setCheckScriptWorkingDirectory(m_submitRepository); }
void BazaarPlugin::showCommitWidget(const QList<VcsBase::VcsBaseClient::StatusItem> &status) { VcsBase::VcsBaseOutputWindow *outputWindow = VcsBase::VcsBaseOutputWindow::instance(); //Once we receive our data release the connection so it can be reused elsewhere disconnect(m_client, SIGNAL(parsedStatus(QList<VcsBase::VcsBaseClient::StatusItem>)), this, SLOT(showCommitWidget(QList<VcsBase::VcsBaseClient::StatusItem>))); if (status.isEmpty()) { outputWindow->appendError(tr("There are no changes to commit.")); return; } // Start new temp file Utils::TempFileSaver saver; // Keep the file alive, else it removes self and forgets its name saver.setAutoRemove(false); if (!saver.finalize()) { VcsBase::VcsBaseOutputWindow::instance()->append(saver.errorString()); return; } Core::IEditor *editor = Core::EditorManager::openEditor(saver.fileName(), Constants::COMMIT_ID, Core::EditorManager::ModeSwitch); if (!editor) { outputWindow->appendError(tr("Unable to create an editor for the commit.")); return; } CommitEditor *commitEditor = qobject_cast<CommitEditor *>(editor); if (!commitEditor) { outputWindow->appendError(tr("Unable to create a commit editor.")); return; } commitEditor->registerActions(m_editorUndo, m_editorRedo, m_editorCommit, m_editorDiff); connect(commitEditor, SIGNAL(diffSelectedFiles(QStringList)), this, SLOT(diffFromEditorSelected(QStringList))); commitEditor->setCheckScriptWorkingDirectory(m_submitRepository); const QString msg = tr("Commit changes for \"%1\"."). arg(QDir::toNativeSeparators(m_submitRepository)); commitEditor->setDisplayName(msg); const BranchInfo branch = m_client->synchronousBranchQuery(m_submitRepository); commitEditor->setFields(m_submitRepository, branch, m_bazaarSettings.stringValue(BazaarSettings::userNameKey), m_bazaarSettings.stringValue(BazaarSettings::userEmailKey), status); }
void MercurialPlugin::showCommitWidget(const QList<VcsBaseClient::StatusItem> &status) { //Once we receive our data release the connection so it can be reused elsewhere disconnect(m_client, &MercurialClient::parsedStatus, this, &MercurialPlugin::showCommitWidget); if (status.isEmpty()) { VcsOutputWindow::appendError(tr("There are no changes to commit.")); return; } // Start new temp file TempFileSaver saver; // Keep the file alive, else it removes self and forgets its name saver.setAutoRemove(false); if (!saver.finalize()) { VcsOutputWindow::appendError(saver.errorString()); return; } Core::IEditor *editor = Core::EditorManager::openEditor(saver.fileName(), Constants::COMMIT_ID); if (!editor) { VcsOutputWindow::appendError(tr("Unable to create an editor for the commit.")); return; } QTC_ASSERT(qobject_cast<CommitEditor *>(editor), return); CommitEditor *commitEditor = static_cast<CommitEditor *>(editor); setSubmitEditor(commitEditor); commitEditor->registerActions(editorUndo, editorRedo, editorCommit, editorDiff); connect(commitEditor, &VcsBaseSubmitEditor::diffSelectedFiles, this, &MercurialPlugin::diffFromEditorSelected); commitEditor->setCheckScriptWorkingDirectory(m_submitRepository); const QString msg = tr("Commit changes for \"%1\"."). arg(QDir::toNativeSeparators(m_submitRepository)); commitEditor->document()->setPreferredDisplayName(msg); QString branch = versionControl()->vcsTopic(m_submitRepository); commitEditor->setFields(m_submitRepository, branch, m_client->settings().stringValue(MercurialSettings::userNameKey), m_client->settings().stringValue(MercurialSettings::userEmailKey), status); }