bool BazaarPlugin::submitEditorAboutToClose(VCSBase::VCSBaseSubmitEditor *submitEditor) { if (!m_changeLog) return true; Core::IFile *editorFile = submitEditor->file(); const CommitEditor *commitEditor = qobject_cast<const CommitEditor *>(submitEditor); if (!editorFile || !commitEditor) return true; bool dummyPrompt = m_bazaarSettings.boolValue(BazaarSettings::promptOnSubmitKey); const VCSBase::VCSBaseSubmitEditor::PromptSubmitResult response = commitEditor->promptSubmit(tr("Close Commit Editor"), tr("Do you want to commit the changes?"), tr("Message check failed. Do you want to proceed?"), &dummyPrompt, dummyPrompt); switch (response) { case VCSBase::VCSBaseSubmitEditor::SubmitCanceled: return false; case VCSBase::VCSBaseSubmitEditor::SubmitDiscarded: deleteCommitLog(); return true; default: break; } QStringList files = commitEditor->checkedFiles(); if (!files.empty()) { //save the commit message if (!m_core->fileManager()->saveFile(editorFile)) return false; //rewrite entries of the form 'file => newfile' to 'newfile' because //this would mess the commit command for (QStringList::iterator iFile = files.begin(); iFile != files.end(); ++iFile) { const QStringList parts = iFile->split(" => ", QString::SkipEmptyParts); if (!parts.isEmpty()) *iFile = parts.last(); } const BazaarCommitWidget *commitWidget = commitEditor->commitWidget(); QStringList extraOptions; // Author if (!commitWidget->committer().isEmpty()) extraOptions.append(QLatin1String("--author=") + commitWidget->committer()); // Fixed bugs foreach (const QString &fix, commitWidget->fixedBugs()) { if (!fix.isEmpty()) extraOptions << QLatin1String("--fixes") << fix; } // Whether local commit or not if (commitWidget->isLocalOptionEnabled()) extraOptions += QLatin1String("--local"); m_client->commit(m_submitRepository, files, editorFile->fileName(), extraOptions); } return true; }
void Manager::gotoLocations(const QList<QVariant> &list) { QSet<SymbolLocation> locations = Utils::roleToLocations(list); if (locations.count() == 0) return; QString fileName; int line = 0; int column = 0; bool currentPositionAvailable = false; // what is open now? Core::IEditor *editor = Core::EditorManager::instance()->currentEditor(); if (editor) { // get current file name Core::IFile *file = editor->file(); if (file) fileName = file->fileName(); // if text file - what is current position? TextEditor::ITextEditor *textEditor = qobject_cast<TextEditor::ITextEditor *>(editor); if (textEditor) { // there is open currently text editor int position = textEditor->position(); textEditor->convertPosition(position, &line, &column); currentPositionAvailable = true; } } // if there is something open - try to check, is it currently activated symbol? if (currentPositionAvailable) { SymbolLocation current(fileName, line, column); QSet<SymbolLocation>::const_iterator it = locations.find(current); QSet<SymbolLocation>::const_iterator end = locations.constEnd(); // is it known location? if (it != end) { // found - do one additional step ++it; if (it == end) it = locations.begin(); const SymbolLocation &found = *it; gotoLocation(found.fileName(), found.line(), found.column()); return; } } // no success - open first item in the list const SymbolLocation loc = *locations.constBegin(); gotoLocation(loc.fileName(), loc.line(), loc.column()); }
bool BazaarPlugin::submitEditorAboutToClose(VCSBase::VCSBaseSubmitEditor *submitEditor) { if (!m_changeLog) return true; Core::IFile *editorFile = submitEditor->file(); const CommitEditor *commitEditor = qobject_cast<const CommitEditor *>(submitEditor); if (!editorFile || !commitEditor) return true; bool dummyPrompt = m_bazaarSettings.prompt(); const VCSBase::VCSBaseSubmitEditor::PromptSubmitResult response = commitEditor->promptSubmit(tr("Close Commit Editor"), tr("Do you want to commit the changes?"), tr("Message check failed. Do you want to proceed?"), &dummyPrompt, m_bazaarSettings.prompt()); switch (response) { case VCSBase::VCSBaseSubmitEditor::SubmitCanceled: return false; case VCSBase::VCSBaseSubmitEditor::SubmitDiscarded: deleteCommitLog(); return true; default: break; } const QStringList files = commitEditor->checkedFiles(); if (!files.empty()) { //save the commit message m_core->fileManager()->blockFileChange(editorFile); editorFile->save(); m_core->fileManager()->unblockFileChange(editorFile); const BazaarCommitWidget* commitWidget = commitEditor->commitWidget(); BazaarClient::ExtraCommandOptions extraOptions; extraOptions[BazaarClient::AuthorCommitOptionId] = commitWidget->committer(); extraOptions[BazaarClient::FixesCommitOptionId] = commitWidget->fixedBugs(); extraOptions[BazaarClient::LocalCommitOptionId] = commitWidget->isLocalOptionEnabled(); m_client->commit(m_submitRepository, files, editorFile->fileName(), extraOptions); } return true; }
bool MercurialPlugin::submitEditorAboutToClose(VCSBase::VCSBaseSubmitEditor *submitEditor) { if (!changeLog) return true; Core::IFile *editorFile = submitEditor->file(); CommitEditor *commitEditor = qobject_cast<CommitEditor *>(submitEditor); if (!editorFile || !commitEditor) return true; bool dummyPrompt = mercurialSettings.prompt(); const VCSBase::VCSBaseSubmitEditor::PromptSubmitResult response = commitEditor->promptSubmit(tr("Close Commit Editor"), tr("Do you want to commit the changes?"), tr("Message check failed. Do you want to proceed?"), &dummyPrompt, mercurialSettings.prompt()); switch (response) { case VCSBase::VCSBaseSubmitEditor::SubmitCanceled: return false; case VCSBase::VCSBaseSubmitEditor::SubmitDiscarded: deleteCommitLog(); return true; default: break; } const QStringList files = commitEditor->checkedFiles(); if (!files.empty()) { //save the commit message if (!core->fileManager()->saveFile(editorFile)) return false; QStringList extraOptions; if (!commitEditor->committerInfo().isEmpty()) extraOptions << QLatin1String("-u") << commitEditor->committerInfo(); m_client->commit(m_submitRepository, files, editorFile->fileName(), extraOptions); } return true; }