diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index e29e2d6889f278aab50002636474ce1442e9ff31..d14c4d04840fba980ff984a50c19ab28031d8777 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -2576,6 +2576,19 @@ bool GitClient::tryLauchingGitK(const QProcessEnvironment &env, return success; } +bool GitClient::launchGitGui(const QString &workingDirectory) { + bool success; + QString gitBinary = gitBinaryPath(&success); + if (success) + success = QProcess::startDetached(gitBinary, QStringList(QLatin1String("gui")), + workingDirectory); + + if (!success) + outputWindow()->appendError(tr("Cannot launch git gui")); + + return success; +} + QString GitClient::gitBinaryPath(bool *ok, QString *errorMessage) const { return settings()->gitBinaryPath(ok, errorMessage); diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index faf39964683e2c3fd26b89ee33f8f3a4f846d4ab..67704aaed6315d3d6cbcea321091adc4bfc3667e 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -295,6 +295,7 @@ public: void launchGitK(const QString &workingDirectory, const QString &fileName); void launchGitK(const QString &workingDirectory) { launchGitK(workingDirectory, QString()); } + bool launchGitGui(const QString &workingDirectory); void launchRepositoryBrowser(const QString &workingDirectory); diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index b7d4976978c79089cdb7557458c5c3d64ce9ebcf..917a47a39ce05241dd2f5f135aa25886125462a9 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -634,6 +634,12 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage) // -------------- gitToolsMenu->addSeparator(globalcontext); + createRepositoryAction(gitToolsMenu, tr("Git Gui"), Core::Id("Git.GitGui"), + globalcontext, true, SLOT(gitGui())); + + // -------------- + gitToolsMenu->addSeparator(globalcontext); + m_repositoryBrowserAction = createRepositoryAction(gitToolsMenu, tr("Repository Browser"), Core::Id("Git.LaunchRepositoryBrowser"), @@ -927,6 +933,13 @@ void GitPlugin::gitkForCurrentFolder() } } +void GitPlugin::gitGui() +{ + const VcsBase::VcsBasePluginState state = currentState(); + QTC_ASSERT(state.hasTopLevel(), return); + m_gitClient->launchGitGui(state.topLevel()); +} + void GitPlugin::startAmendCommit() { startCommit(AmendCommit); diff --git a/src/plugins/git/gitplugin.h b/src/plugins/git/gitplugin.h index 4a70caedeebd5da6556299e91f61def7b27efb0d..5a4663dfdcf92788665a29c36b3381feaf0b22f0 100644 --- a/src/plugins/git/gitplugin.h +++ b/src/plugins/git/gitplugin.h @@ -123,6 +123,7 @@ private slots: void unstageFile(); void gitkForCurrentFile(); void gitkForCurrentFolder(); + void gitGui(); void cleanProject(); void cleanRepository(); void updateSubmodules();