src/eric7/VCS/__init__.py

branch
eric7
changeset 9209
b99e7fd55fd3
parent 8881
54e42bc2437a
child 9221
bf71ee032bb4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/VCS/__init__.py	Thu Jul 07 11:23:56 2022 +0200
@@ -0,0 +1,71 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2002 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the general part of the interface to version control
+systems.
+
+The general part of the VCS interface defines classes to implement common
+dialogs. These are a dialog to enter command options, a dialog to display
+some repository information and an abstract base class. The individual
+interfaces have to be subclasses of this base class.
+"""
+
+from EricWidgets.EricApplication import ericApp
+
+######################################################################
+## Below is the factory function to instantiate the appropriate
+## vcs object depending on the project settings.
+######################################################################
+
+
+def factory(vcs):
+    """
+    Modul factory function to generate the right vcs object.
+    
+    @param vcs name of the VCS system to be used (string)
+    @return the instantiated VCS object
+    """
+    pluginManager = ericApp().getObject("PluginManager")
+    if pluginManager is None:
+        # that should not happen
+        vc = None
+    
+    vc = pluginManager.getPluginObject("version_control", vcs,
+                                       maybeActive=True)
+    if vc is None:
+        # try alternative vcs interfaces assuming, that there is a common
+        # indicator for the alternatives
+        for vcsData in pluginManager.getVcsSystemIndicators().values():
+            for vcsSystem, _vcsSystemDisplay in vcsData:
+                if vcsSystem == vcs and len(vcsData) > 1:
+                    for vcsSystem, _vcsSystemDisplay in vcsData:
+                        if vcsSystem != vcs:
+                            vc = pluginManager.getPluginObject(
+                                "version_control", vcsSystem, maybeActive=True)
+                            if vc is not None:
+                                return vc
+    
+    return vc
+
+
+VcsBasicHelperSingleton = None
+
+
+def getBasicHelper(project):
+    """
+    Module function to get a reference to the basic project helper singleton.
+    
+    @param project reference to the project object (Project)
+    @return reference to the basic VCS project helper singleton
+        (VcsProjectHelper)
+    """
+    global VcsBasicHelperSingleton
+    
+    if VcsBasicHelperSingleton is None:
+        from .ProjectHelper import VcsProjectHelper
+        VcsBasicHelperSingleton = VcsProjectHelper(None, project)
+    
+    return VcsBasicHelperSingleton

eric ide

mercurial