eric7/Plugins/VcsPlugins/vcsMercurial/RebaseExtension/ProjectHelper.py

branch
eric7
changeset 8312
800c432b34c8
parent 8218
7c09585bd960
child 8318
962bce857696
equal deleted inserted replaced
8311:4e8b98454baa 8312:800c432b34c8
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2011 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the rebase extension project helper.
8 """
9
10 from PyQt5.QtWidgets import QMenu
11
12 from E5Gui.E5Action import E5Action
13 from E5Gui import E5MessageBox
14
15 from ..HgExtensionProjectHelper import HgExtensionProjectHelper
16
17 import UI.PixmapCache
18
19
20 class RebaseProjectHelper(HgExtensionProjectHelper):
21 """
22 Class implementing the rebase extension project helper.
23 """
24 def __init__(self):
25 """
26 Constructor
27 """
28 super().__init__()
29
30 def initActions(self):
31 """
32 Public method to generate the action objects.
33 """
34 self.hgRebaseAct = E5Action(
35 self.tr('Rebase Changesets'),
36 UI.PixmapCache.getIcon("vcsRebase"),
37 self.tr('Rebase Changesets'),
38 0, 0, self, 'mercurial_rebase')
39 self.hgRebaseAct.setStatusTip(self.tr(
40 'Rebase changesets to another branch'
41 ))
42 self.hgRebaseAct.setWhatsThis(self.tr(
43 """<b>Rebase Changesets</b>"""
44 """<p>This rebases changesets to another branch.</p>"""
45 ))
46 self.hgRebaseAct.triggered.connect(self.__hgRebase)
47 self.actions.append(self.hgRebaseAct)
48
49 self.hgRebaseContinueAct = E5Action(
50 self.tr('Continue Rebase Session'),
51 self.tr('Continue Rebase Session'),
52 0, 0, self, 'mercurial_rebase_continue')
53 self.hgRebaseContinueAct.setStatusTip(self.tr(
54 'Continue the last rebase session after repair'
55 ))
56 self.hgRebaseContinueAct.setWhatsThis(self.tr(
57 """<b>Continue Rebase Session</b>"""
58 """<p>This continues the last rebase session after repair.</p>"""
59 ))
60 self.hgRebaseContinueAct.triggered.connect(self.__hgRebaseContinue)
61 self.actions.append(self.hgRebaseContinueAct)
62
63 self.hgRebaseAbortAct = E5Action(
64 self.tr('Abort Rebase Session'),
65 self.tr('Abort Rebase Session'),
66 0, 0, self, 'mercurial_rebase_abort')
67 self.hgRebaseAbortAct.setStatusTip(self.tr(
68 'Abort the last rebase session'
69 ))
70 self.hgRebaseAbortAct.setWhatsThis(self.tr(
71 """<b>Abort Rebase Session</b>"""
72 """<p>This aborts the last rebase session.</p>"""
73 ))
74 self.hgRebaseAbortAct.triggered.connect(self.__hgRebaseAbort)
75 self.actions.append(self.hgRebaseAbortAct)
76
77 def initMenu(self, mainMenu):
78 """
79 Public method to generate the extension menu.
80
81 @param mainMenu reference to the main menu (QMenu)
82 @return populated menu (QMenu)
83 """
84 menu = QMenu(self.menuTitle(), mainMenu)
85 menu.setIcon(UI.PixmapCache.getIcon("vcsRebase"))
86 menu.setTearOffEnabled(True)
87
88 menu.addAction(self.hgRebaseAct)
89 menu.addAction(self.hgRebaseContinueAct)
90 menu.addAction(self.hgRebaseAbortAct)
91
92 return menu
93
94 def menuTitle(self):
95 """
96 Public method to get the menu title.
97
98 @return title of the menu (string)
99 """
100 return self.tr("Rebase")
101
102 def __hgRebase(self):
103 """
104 Private slot used to rebase changesets to another branch.
105 """
106 shouldReopen = self.vcs.getExtensionObject("rebase").hgRebase()
107 if shouldReopen:
108 res = E5MessageBox.yesNo(
109 None,
110 self.tr("Rebase Changesets"),
111 self.tr("""The project should be reread. Do this now?"""),
112 yesDefault=True)
113 if res:
114 self.project.reopenProject()
115
116 def __hgRebaseContinue(self):
117 """
118 Private slot used to continue the last rebase session after repair.
119 """
120 shouldReopen = self.vcs.getExtensionObject("rebase").hgRebaseContinue()
121 if shouldReopen:
122 res = E5MessageBox.yesNo(
123 None,
124 self.tr("Rebase Changesets (Continue)"),
125 self.tr("""The project should be reread. Do this now?"""),
126 yesDefault=True)
127 if res:
128 self.project.reopenProject()
129
130 def __hgRebaseAbort(self):
131 """
132 Private slot used to abort the last rebase session.
133 """
134 shouldReopen = self.vcs.getExtensionObject("rebase").hgRebaseAbort()
135 if shouldReopen:
136 res = E5MessageBox.yesNo(
137 None,
138 self.tr("Rebase Changesets (Abort)"),
139 self.tr("""The project should be reread. Do this now?"""),
140 yesDefault=True)
141 if res:
142 self.project.reopenProject()

eric ide

mercurial