src/eric7/Plugins/VcsPlugins/vcsMercurial/FastexportExtension/ProjectHelper.py

Tue, 03 Dec 2024 14:21:36 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 03 Dec 2024 14:21:36 +0100
branch
eric7
changeset 11075
282fc28b44ee
child 11081
7391035e7bc9
permissions
-rw-r--r--

Mercurial Interface
- Added support for the `fastexport` extension.

11075
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2025 Detlev Offenbach <detlev@die-offenbachs.de>
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the fastexport extension project helper.
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 from PyQt6.QtCore import pyqtSlot
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 from PyQt6.QtWidgets import QMenu
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 from eric7.EricGui.EricAction import EricAction
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 from ..HgExtensionProjectHelper import HgExtensionProjectHelper
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 class FastexportProjectHelper(HgExtensionProjectHelper):
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 """
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 Class implementing the fastexport extension project helper.
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 """
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 def __init__(self):
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 Constructor
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 super().__init__()
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 def initActions(self):
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 """
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 Public method to generate the action objects.
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 """
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 self.hgFastexportAct = EricAction(
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 self.tr("Export to git"),
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 self.tr("Export to git"),
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 0,
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 0,
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 self,
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 "mercurial_fastexport",
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 )
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 self.hgFastexportAct.setStatusTip(
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 self.tr("Export the repository as git fast-import stream.")
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 )
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 self.hgFastexportAct.setWhatsThis(
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 self.tr(
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 """<b>Export to git</b>"""
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 """<p>This exports the repository as a git fast-import stream.</p>"""
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 )
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 )
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 self.hgFastexportAct.triggered.connect(self.__hgFastexport)
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.actions.append(self.hgFastexportAct)
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 def initMenu(self, mainMenu):
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 """
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 Public method to generate the extension menu.
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 @param mainMenu reference to the main menu
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 @type QMenu
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 @return populated menu
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 @rtype QMenu
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 """
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 menu = QMenu(self.menuTitle(), mainMenu)
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 menu.setTearOffEnabled(True)
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 menu.addAction(self.hgFastexportAct)
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 return menu
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 def menuTitle(self):
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 """
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 Public method to get the menu title.
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 @return title of the menu
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 @rtype str
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 """
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 return self.tr("Fastexport")
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 @pyqtSlot()
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 def __hgFastexport(self):
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 """
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 Private slot used to generate a git fast-import file.
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 """
282fc28b44ee Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 self.vcs.getExtensionObject("fastexport").hgFastexport()

eric ide

mercurial