VcsBasePlugin Class

(VcsBase::VcsBasePlugin)

The VcsBasePlugin class is the base class for all version control plugins. More...

Header: #include <VcsBasePlugin>
Inherits: ExtensionSystem::IPlugin

Public Functions

const VcsBasePluginState &currentState() const
Core::IVersionControl *versionControl() const

Static Public Members

QString findRepositoryForDirectory(const QString &dir, const QString &checkFile)
bool isSshPromptConfigured()
Utils::SynchronousProcessResponse runVcs(const QString &workingDir, const Utils::FileName &binary, const QStringList &arguments, int timeOutS, unsigned flags = 0, QTextCodec *outputCodec = 0, const QProcessEnvironment &env = QProcessEnvironment())
void setProcessEnvironment(QProcessEnvironment *e, bool forceCLocale, const QString &sshPasswordPrompt = sshPrompt())
void setSource(Core::IDocument *document, const QString &source)
QString source(Core::IDocument *document)
QString sshPrompt()

Protected Types

enum ActionState { NoVcsEnabled, OtherVcsEnabled, VcsEnabled }

Protected Functions

VcsBasePlugin()
void createRepository()
bool enableMenuAction(ActionState as, QAction *in) const
void initializeVcs(Core::IVersionControl *vc, const Core::Context &context)
void promptToDeleteCurrentFile()
bool raiseSubmitEditor() const
void setSubmitEditor(VcsBaseSubmitEditor *submitEditor)
VcsBaseSubmitEditor *submitEditor() const
virtual bool submitEditorAboutToClose() = 0
virtual void updateActions(ActionState as) = 0

Additional Inherited Members

Detailed Description

The VcsBasePlugin class is the base class for all version control plugins.

The plugin connects to the relevant change signals in Qt Creator and calls the virtual updateActions() for the plugins to update their menu actions according to the new state. This is done centrally to avoid single plugins repeatedly invoking searches/QFileInfo on files, etc.

Independently, there are accessors for current patch files, which return a file name if the current file could be a patch file which could be applied and a repository exists.

If current file/project are managed by different version controls, the project is discarded and only the current file is taken into account, allowing to do a diff also when the project of a file is not opened.

When triggering an action, a copy of the state should be made to keep it, as it may rapidly change due to context changes, etc.

The class also detects the VCS plugin submit editor closing and calls the virtual submitEditorAboutToClose() to trigger the submit process.

Member Type Documentation

enum VcsBasePlugin::ActionState

Member Function Documentation

[protected] VcsBasePlugin::VcsBasePlugin()

Default constructs an instance of VcsBasePlugin.

[protected] void VcsBasePlugin::createRepository()

const VcsBasePluginState &VcsBasePlugin::currentState() const

[protected] bool VcsBasePlugin::enableMenuAction(ActionState as, QAction *in) const

[static] QString VcsBasePlugin::findRepositoryForDirectory(const QString &dir, const QString &checkFile)

[protected] void VcsBasePlugin::initializeVcs(Core::IVersionControl *vc, const Core::Context &context)

[static] bool VcsBasePlugin::isSshPromptConfigured()

[protected] void VcsBasePlugin::promptToDeleteCurrentFile()

[protected] bool VcsBasePlugin::raiseSubmitEditor() const

[static] Utils::SynchronousProcessResponse VcsBasePlugin::runVcs(const QString &workingDir, const Utils::FileName &binary, const QStringList &arguments, int timeOutS, unsigned flags = 0, QTextCodec *outputCodec = 0, const QProcessEnvironment &env = QProcessEnvironment())

[static] void VcsBasePlugin::setProcessEnvironment(QProcessEnvironment *e, bool forceCLocale, const QString &sshPasswordPrompt = sshPrompt())

[static] void VcsBasePlugin::setSource(Core::IDocument *document, const QString &source)

See also source().

[protected] void VcsBasePlugin::setSubmitEditor(VcsBaseSubmitEditor *submitEditor)

See also submitEditor().

[static] QString VcsBasePlugin::source(Core::IDocument *document)

See also setSource().

[static] QString VcsBasePlugin::sshPrompt()

[protected] VcsBaseSubmitEditor *VcsBasePlugin::submitEditor() const

See also setSubmitEditor().

[pure virtual protected] bool VcsBasePlugin::submitEditorAboutToClose()

[pure virtual protected] void VcsBasePlugin::updateActions(ActionState as)

Core::IVersionControl *VcsBasePlugin::versionControl() const