diff --git a/src/libs/utils/synchronousprocess.cpp b/src/libs/utils/synchronousprocess.cpp index 3d004be59cc0ddafa7fe89ec0bf0c7dc92d1503a..77a90f9d12a9e8e70b80feb64ac5fdb68bd1ff09 100644 --- a/src/libs/utils/synchronousprocess.cpp +++ b/src/libs/utils/synchronousprocess.cpp @@ -215,6 +215,26 @@ void SynchronousProcess::setEnvironment(const QStringList &e) m_d->m_process.setEnvironment(e); } +void SynchronousProcess::setWorkingDirectory(const QString &workingDirectory) +{ + m_d->m_process.setWorkingDirectory(workingDirectory); +} + +QString SynchronousProcess::workingDirectory() const +{ + return m_d->m_process.workingDirectory(); +} + +QProcess::ProcessChannelMode SynchronousProcess::processChannelMode () const +{ + return m_d->m_process.processChannelMode(); +} + +void SynchronousProcess::setProcessChannelMode(QProcess::ProcessChannelMode m) +{ + m_d->m_process.setProcessChannelMode(m); +} + SynchronousProcessResponse SynchronousProcess::run(const QString &binary, const QStringList &args) { diff --git a/src/libs/utils/synchronousprocess.h b/src/libs/utils/synchronousprocess.h index 7f28a60139d2dbb2f0626751f0a5fa86007ce538..50c3b035181f12c01f109cd916c69bcef18e1cbb 100644 --- a/src/libs/utils/synchronousprocess.h +++ b/src/libs/utils/synchronousprocess.h @@ -99,6 +99,9 @@ public: void setStdOutCodec(QTextCodec *c); QTextCodec *stdOutCodec() const; + QProcess::ProcessChannelMode processChannelMode () const; + void setProcessChannelMode(QProcess::ProcessChannelMode m); + bool stdOutBufferedSignalsEnabled() const; void setStdOutBufferedSignalsEnabled(bool); @@ -108,6 +111,9 @@ public: QStringList environment() const; void setEnvironment(const QStringList &); + void setWorkingDirectory(const QString &workingDirectory); + QString workingDirectory() const; + SynchronousProcessResponse run(const QString &binary, const QStringList &args); // Helpers to find binaries. Do not use it for other path variables diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index 1a6bc88698e88bb86331378eb50c936441cb1932..dad3c37bab240a763f628467dbd6667430f683a8 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -76,25 +76,23 @@ enum { subversionShortTimeOut = 10000 }; // Timeout for submit, update enum { subversionLongTimeOut = 120000 }; -// #pragma mark -- SubversionPlugin - -const char * const SubversionPlugin::SUBVERSION_MENU = "Subversion.Menu"; -const char * const SubversionPlugin::ADD = "Subversion.Add"; -const char * const SubversionPlugin::DELETE_FILE = "Subversion.Delete"; -const char * const SubversionPlugin::REVERT = "Subversion.Revert"; -const char * const SubversionPlugin::SEPARATOR0 = "Subversion.Separator0"; -const char * const SubversionPlugin::DIFF_PROJECT = "Subversion.DiffAll"; -const char * const SubversionPlugin::DIFF_CURRENT = "Subversion.DiffCurrent"; -const char * const SubversionPlugin::SEPARATOR1 = "Subversion.Separator1"; -const char * const SubversionPlugin::COMMIT_ALL = "Subversion.CommitAll"; -const char * const SubversionPlugin::COMMIT_CURRENT = "Subversion.CommitCurrent"; -const char * const SubversionPlugin::SEPARATOR2 = "Subversion.Separator2"; -const char * const SubversionPlugin::FILELOG_CURRENT = "Subversion.FilelogCurrent"; -const char * const SubversionPlugin::ANNOTATE_CURRENT = "Subversion.AnnotateCurrent"; -const char * const SubversionPlugin::SEPARATOR3 = "Subversion.Separator3"; -const char * const SubversionPlugin::STATUS = "Subversion.Status"; -const char * const SubversionPlugin::UPDATE = "Subversion.Update"; -const char * const SubversionPlugin::DESCRIBE = "Subversion.Describe"; +static const char * const CMD_ID_SUBVERSION_MENU = "Subversion.Menu"; +static const char * const CMD_ID_ADD = "Subversion.Add"; +static const char * const CMD_ID_DELETE_FILE = "Subversion.Delete"; +static const char * const CMD_ID_REVERT = "Subversion.Revert"; +static const char * const CMD_ID_SEPARATOR0 = "Subversion.Separator0"; +static const char * const CMD_ID_DIFF_PROJECT = "Subversion.DiffAll"; +static const char * const CMD_ID_DIFF_CURRENT = "Subversion.DiffCurrent"; +static const char * const CMD_ID_SEPARATOR1 = "Subversion.Separator1"; +static const char * const CMD_ID_COMMIT_ALL = "Subversion.CommitAll"; +static const char * const CMD_ID_COMMIT_CURRENT = "Subversion.CommitCurrent"; +static const char * const CMD_ID_SEPARATOR2 = "Subversion.Separator2"; +static const char * const CMD_ID_FILELOG_CURRENT = "Subversion.FilelogCurrent"; +static const char * const CMD_ID_ANNOTATE_CURRENT = "Subversion.AnnotateCurrent"; +static const char * const CMD_ID_SEPARATOR3 = "Subversion.Separator3"; +static const char * const CMD_ID_STATUS = "Subversion.Status"; +static const char * const CMD_ID_UPDATE = "Subversion.Update"; +static const char * const CMD_ID_DESCRIBE = "Subversion.Describe"; static const char *nonInteractiveOptionC = "--non-interactive"; @@ -181,10 +179,7 @@ SubversionPlugin *SubversionPlugin::m_subversionPluginInstance = 0; SubversionPlugin::SubversionPlugin() : m_svnDirectories(svnDirectories()), m_versionControl(0), - m_coreListener(0), - m_settingsPage(0), m_changeTmpFile(0), - m_submitEditorFactory(0), m_subversionOutputWindow(0), m_projectExplorer(0), m_addAction(0), @@ -209,40 +204,6 @@ SubversionPlugin::SubversionPlugin() : SubversionPlugin::~SubversionPlugin() { - if (m_versionControl) { - removeObject(m_versionControl); - delete m_versionControl; - m_versionControl = 0; - } - - if (m_settingsPage) { - removeObject(m_settingsPage); - delete m_settingsPage; - m_settingsPage = 0; - } - if (m_subversionOutputWindow) { - removeObject(m_subversionOutputWindow); - delete m_subversionOutputWindow; - m_subversionOutputWindow = 0; - } - if (m_submitEditorFactory) { - removeObject(m_submitEditorFactory); - delete m_submitEditorFactory; - m_submitEditorFactory = 0; - } - - if (!m_editorFactories.empty()) { - foreach (Core::IEditorFactory* pf, m_editorFactories) - removeObject(pf); - qDeleteAll(m_editorFactories); - m_editorFactories.clear(); - } - - if (m_coreListener) { - removeObject(m_coreListener); - delete m_coreListener; - m_coreListener = 0; - } cleanChangeTmpFile(); } @@ -290,37 +251,30 @@ bool SubversionPlugin::initialize(const QStringList &arguments, QString *errorMe return false; m_versionControl = new SubversionControl(this); - addObject(m_versionControl); + addAutoReleasedObject(m_versionControl); if (QSettings *settings = core->settings()) m_settings.fromSettings(settings); - m_coreListener = new CoreListener(this); - addObject(m_coreListener); + addAutoReleasedObject(new CoreListener(this)); + addAutoReleasedObject(new SettingsPage); - m_settingsPage = new SettingsPage; - addObject(m_settingsPage); - - m_submitEditorFactory = new SubversionSubmitEditorFactory(&submitParameters); - addObject(m_submitEditorFactory); + addAutoReleasedObject(new SubversionSubmitEditorFactory(&submitParameters)); static const char *describeSlot = SLOT(describe(QString,QString)); const int editorCount = sizeof(editorParameters)/sizeof(VCSBase::VCSBaseEditorParameters); - for (int i = 0; i < editorCount; i++) { - m_editorFactories.push_back( - new SubversionEditorFactory(editorParameters + i, this, describeSlot)); - addObject(m_editorFactories.back()); - } + for (int i = 0; i < editorCount; i++) + addAutoReleasedObject(new SubversionEditorFactory(editorParameters + i, this, describeSlot)); m_subversionOutputWindow = new SubversionOutputWindow(this); - addObject(m_subversionOutputWindow); + addAutoReleasedObject(m_subversionOutputWindow); //register actions Core::ActionManager *ami = core->actionManager(); Core::ActionContainer *toolsContainer = ami->actionContainer(M_TOOLS); Core::ActionContainer *subversionMenu = - ami->createMenu(QLatin1String(SUBVERSION_MENU)); + ami->createMenu(QLatin1String(CMD_ID_SUBVERSION_MENU)); subversionMenu->menu()->setTitle(tr("&Subversion")); toolsContainer->addMenu(subversionMenu); if (QAction *ma = subversionMenu->menu()->menuAction()) { @@ -333,7 +287,7 @@ bool SubversionPlugin::initialize(const QStringList &arguments, QString *errorMe Core::Command *command; m_addAction = new Core::Utils::ParameterAction(tr("Add"), tr("Add \"%1\""), Core::Utils::ParameterAction::EnabledWithParameter, this); - command = ami->registerAction(m_addAction, SubversionPlugin::ADD, + command = ami->registerAction(m_addAction, CMD_ID_ADD, globalcontext); command->setAttribute(Core::Command::CA_UpdateText); #ifndef Q_WS_MAC @@ -343,30 +297,30 @@ bool SubversionPlugin::initialize(const QStringList &arguments, QString *errorMe subversionMenu->addAction(command); m_deleteAction = new Core::Utils::ParameterAction(tr("Delete"), tr("Delete \"%1\""), Core::Utils::ParameterAction::EnabledWithParameter, this); - command = ami->registerAction(m_deleteAction, SubversionPlugin::DELETE_FILE, + command = ami->registerAction(m_deleteAction, CMD_ID_DELETE_FILE, globalcontext); command->setAttribute(Core::Command::CA_UpdateText); connect(m_deleteAction, SIGNAL(triggered()), this, SLOT(deleteCurrentFile())); subversionMenu->addAction(command); m_revertAction = new Core::Utils::ParameterAction(tr("Revert"), tr("Revert \"%1\""), Core::Utils::ParameterAction::EnabledWithParameter, this); - command = ami->registerAction(m_revertAction, SubversionPlugin::REVERT, + command = ami->registerAction(m_revertAction, CMD_ID_REVERT, globalcontext); command->setAttribute(Core::Command::CA_UpdateText); connect(m_revertAction, SIGNAL(triggered()), this, SLOT(revertCurrentFile())); subversionMenu->addAction(command); - subversionMenu->addAction(createSeparator(this, ami, SubversionPlugin::SEPARATOR0, globalcontext)); + subversionMenu->addAction(createSeparator(this, ami, CMD_ID_SEPARATOR0, globalcontext)); m_diffProjectAction = new QAction(tr("Diff Project"), this); - command = ami->registerAction(m_diffProjectAction, SubversionPlugin::DIFF_PROJECT, + command = ami->registerAction(m_diffProjectAction, CMD_ID_DIFF_PROJECT, globalcontext); connect(m_diffProjectAction, SIGNAL(triggered()), this, SLOT(diffProject())); subversionMenu->addAction(command); m_diffCurrentAction = new Core::Utils::ParameterAction(tr("Diff Current File"), tr("Diff \"%1\""), Core::Utils::ParameterAction::EnabledWithParameter, this); command = ami->registerAction(m_diffCurrentAction, - SubversionPlugin::DIFF_CURRENT, globalcontext); + CMD_ID_DIFF_CURRENT, globalcontext); command->setAttribute(Core::Command::CA_UpdateText); #ifndef Q_WS_MAC command->setDefaultKeySequence(QKeySequence(tr("Alt+S,Alt+D"))); @@ -374,17 +328,17 @@ bool SubversionPlugin::initialize(const QStringList &arguments, QString *errorMe connect(m_diffCurrentAction, SIGNAL(triggered()), this, SLOT(diffCurrentFile())); subversionMenu->addAction(command); - subversionMenu->addAction(createSeparator(this, ami, SubversionPlugin::SEPARATOR1, globalcontext)); + subversionMenu->addAction(createSeparator(this, ami, CMD_ID_SEPARATOR1, globalcontext)); m_commitAllAction = new QAction(tr("Commit All Files"), this); - command = ami->registerAction(m_commitAllAction, SubversionPlugin::COMMIT_ALL, + command = ami->registerAction(m_commitAllAction, CMD_ID_COMMIT_ALL, globalcontext); connect(m_commitAllAction, SIGNAL(triggered()), this, SLOT(startCommitAll())); subversionMenu->addAction(command); m_commitCurrentAction = new Core::Utils::ParameterAction(tr("Commit Current File"), tr("Commit \"%1\""), Core::Utils::ParameterAction::EnabledWithParameter, this); command = ami->registerAction(m_commitCurrentAction, - SubversionPlugin::COMMIT_CURRENT, globalcontext); + CMD_ID_COMMIT_CURRENT, globalcontext); command->setAttribute(Core::Command::CA_UpdateText); #ifndef Q_WS_MAC command->setDefaultKeySequence(QKeySequence(tr("Alt+S,Alt+C"))); @@ -392,11 +346,11 @@ bool SubversionPlugin::initialize(const QStringList &arguments, QString *errorMe connect(m_commitCurrentAction, SIGNAL(triggered()), this, SLOT(startCommitCurrentFile())); subversionMenu->addAction(command); - subversionMenu->addAction(createSeparator(this, ami, SubversionPlugin::SEPARATOR2, globalcontext)); + subversionMenu->addAction(createSeparator(this, ami, CMD_ID_SEPARATOR2, globalcontext)); m_filelogCurrentAction = new Core::Utils::ParameterAction(tr("Filelog Current File"), tr("Filelog \"%1\""), Core::Utils::ParameterAction::EnabledWithParameter, this); command = ami->registerAction(m_filelogCurrentAction, - SubversionPlugin::FILELOG_CURRENT, globalcontext); + CMD_ID_FILELOG_CURRENT, globalcontext); command->setAttribute(Core::Command::CA_UpdateText); connect(m_filelogCurrentAction, SIGNAL(triggered()), this, SLOT(filelogCurrentFile())); @@ -404,27 +358,27 @@ bool SubversionPlugin::initialize(const QStringList &arguments, QString *errorMe m_annotateCurrentAction = new Core::Utils::ParameterAction(tr("Annotate Current File"), tr("Annotate \"%1\""), Core::Utils::ParameterAction::EnabledWithParameter, this); command = ami->registerAction(m_annotateCurrentAction, - SubversionPlugin::ANNOTATE_CURRENT, globalcontext); + CMD_ID_ANNOTATE_CURRENT, globalcontext); command->setAttribute(Core::Command::CA_UpdateText); connect(m_annotateCurrentAction, SIGNAL(triggered()), this, SLOT(annotateCurrentFile())); subversionMenu->addAction(command); m_describeAction = new QAction(tr("Describe..."), this); - command = ami->registerAction(m_describeAction, SubversionPlugin::DESCRIBE, globalcontext); + command = ami->registerAction(m_describeAction, CMD_ID_DESCRIBE, globalcontext); connect(m_describeAction, SIGNAL(triggered()), this, SLOT(slotDescribe())); subversionMenu->addAction(command); - subversionMenu->addAction(createSeparator(this, ami, SubversionPlugin::SEPARATOR3, globalcontext)); + subversionMenu->addAction(createSeparator(this, ami, CMD_ID_SEPARATOR3, globalcontext)); m_statusAction = new QAction(tr("Project Status"), this); - command = ami->registerAction(m_statusAction, SubversionPlugin::STATUS, + command = ami->registerAction(m_statusAction, CMD_ID_STATUS, globalcontext); connect(m_statusAction, SIGNAL(triggered()), this, SLOT(projectStatus())); subversionMenu->addAction(command); m_updateProjectAction = new QAction(tr("Update Project"), this); - command = ami->registerAction(m_updateProjectAction, SubversionPlugin::UPDATE, globalcontext); + command = ami->registerAction(m_updateProjectAction, CMD_ID_UPDATE, globalcontext); connect(m_updateProjectAction, SIGNAL(triggered()), this, SLOT(updateProject())); subversionMenu->addAction(command); diff --git a/src/plugins/subversion/subversionplugin.h b/src/plugins/subversion/subversionplugin.h index 7467b66d8b1405519f75ceef8fedda159165c3e8..199f419dbfdd3709b69acbdfac5a445e92a6fb76 100644 --- a/src/plugins/subversion/subversionplugin.h +++ b/src/plugins/subversion/subversionplugin.h @@ -32,17 +32,10 @@ #include "subversionsettings.h" -#include <coreplugin/editormanager/ieditorfactory.h> -#include <coreplugin/iversioncontrol.h> -#include <coreplugin/icorelistener.h> #include <coreplugin/icorelistener.h> #include <extensionsystem/iplugin.h> -#include <QtCore/QObject> -#include <QtCore/QProcess> - QT_BEGIN_NAMESPACE -class QFile; class QDir; class QAction; class QTemporaryFile; @@ -50,7 +43,6 @@ class QTextCodec; QT_END_NAMESPACE namespace Core { - class IEditorFactory; class IVersionControl; namespace Utils { class ParameterAction; @@ -64,8 +56,6 @@ namespace ProjectExplorer { namespace Subversion { namespace Internal { -class CoreListener; -class SettingsPage; class SubversionOutputWindow; class SubversionSubmitEditor; @@ -144,13 +134,8 @@ private: SubversionSettings m_settings; Core::IVersionControl *m_versionControl; - CoreListener *m_coreListener; - SettingsPage *m_settingsPage; QTemporaryFile *m_changeTmpFile; - Core::IEditorFactory *m_submitEditorFactory; - QList<Core::IEditorFactory*> m_editorFactories; - SubversionOutputWindow *m_subversionOutputWindow; ProjectExplorer::ProjectExplorerPlugin *m_projectExplorer; @@ -173,24 +158,6 @@ private: QAction *m_submitRedoAction; bool m_submitActionTriggered; - static const char * const SUBVERSION_MENU; - static const char * const ADD; - static const char * const DELETE_FILE; - static const char * const REVERT; - static const char * const SEPARATOR0; - static const char * const DIFF_PROJECT; - static const char * const DIFF_CURRENT; - static const char * const SEPARATOR1; - static const char * const COMMIT_ALL; - static const char * const COMMIT_CURRENT; - static const char * const SEPARATOR2; - static const char * const FILELOG_CURRENT; - static const char * const ANNOTATE_CURRENT; - static const char * const SEPARATOR3; - static const char * const STATUS; - static const char * const UPDATE; - static const char * const DESCRIBE; - static SubversionPlugin *m_subversionPluginInstance; friend class SubversionOutputWindow;