From 6312cc18e2e2d9a3a1d4146ad94e22a87e66d6e0 Mon Sep 17 00:00:00 2001 From: Petar Perisin <petar.perisin@gmail.com> Date: Thu, 4 Jul 2013 01:03:53 +0200 Subject: [PATCH] Git - added ability to launch git gui Change-Id: I65ed3e0408e43e354a289bbbd385aec2e254746c Reviewed-by: Orgad Shaneh <orgads@gmail.com> --- src/plugins/git/gitclient.cpp | 13 +++++++++++++ src/plugins/git/gitclient.h | 1 + src/plugins/git/gitplugin.cpp | 13 +++++++++++++ src/plugins/git/gitplugin.h | 1 + 4 files changed, 28 insertions(+) diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index e29e2d6889f..d14c4d04840 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 faf39964683..67704aaed63 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 b7d4976978c..917a47a39ce 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 4a70caedeeb..5a4663dfdcf 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(); -- GitLab