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

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

eric ide

mercurial