Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py

branch
Py2 comp.
changeset 3484
645c12de6b0c
parent 3178
f25fc1364c88
parent 3434
9b874ca09bb3
child 3515
1b8381afe38f
equal deleted inserted replaced
3456:96232974dcdb 3484:645c12de6b0c
45 from .FetchExtension.ProjectHelper import FetchProjectHelper 45 from .FetchExtension.ProjectHelper import FetchProjectHelper
46 from .PurgeExtension.ProjectHelper import PurgeProjectHelper 46 from .PurgeExtension.ProjectHelper import PurgeProjectHelper
47 from .GpgExtension.ProjectHelper import GpgProjectHelper 47 from .GpgExtension.ProjectHelper import GpgProjectHelper
48 from .TransplantExtension.ProjectHelper import TransplantProjectHelper 48 from .TransplantExtension.ProjectHelper import TransplantProjectHelper
49 from .RebaseExtension.ProjectHelper import RebaseProjectHelper 49 from .RebaseExtension.ProjectHelper import RebaseProjectHelper
50 from .ShelveExtension.ProjectHelper import ShelveProjectHelper
51 from .LargefilesExtension.ProjectHelper import LargefilesProjectHelper
50 self.__extensions = { 52 self.__extensions = {
51 "bookmarks": BookmarksProjectHelper(), 53 "bookmarks": BookmarksProjectHelper(),
52 "mq": QueuesProjectHelper(), 54 "mq": QueuesProjectHelper(),
53 "fetch": FetchProjectHelper(), 55 "fetch": FetchProjectHelper(),
54 "purge": PurgeProjectHelper(), 56 "purge": PurgeProjectHelper(),
55 "gpg": GpgProjectHelper(), 57 "gpg": GpgProjectHelper(),
56 "transplant": TransplantProjectHelper(), 58 "transplant": TransplantProjectHelper(),
57 "rebase": RebaseProjectHelper(), 59 "rebase": RebaseProjectHelper(),
60 "shelve": ShelveProjectHelper(),
61 "largefiles": LargefilesProjectHelper(),
58 } 62 }
59 63
60 self.__extensionMenuTitles = {} 64 self.__extensionMenuTitles = {}
61 for extension in self.__extensions: 65 for extension in self.__extensions:
62 self.__extensionMenuTitles[ 66 self.__extensionMenuTitles[
72 self.vcs = vcsObject 76 self.vcs = vcsObject
73 self.project = projectObject 77 self.project = projectObject
74 78
75 for extension in self.__extensions.values(): 79 for extension in self.__extensions.values():
76 extension.setObjects(vcsObject, projectObject) 80 extension.setObjects(vcsObject, projectObject)
81
82 self.vcs.iniFileChanged.connect(self.__checkActions)
77 83
78 def getProject(self): 84 def getProject(self):
79 """ 85 """
80 Public method to get a reference to the project object. 86 Public method to get a reference to the project object.
81 87
97 def initActions(self): 103 def initActions(self):
98 """ 104 """
99 Public method to generate the action objects. 105 Public method to generate the action objects.
100 """ 106 """
101 self.vcsNewAct = E5Action( 107 self.vcsNewAct = E5Action(
102 self.trUtf8('New from repository'), 108 self.tr('New from repository'),
103 UI.PixmapCache.getIcon("vcsCheckout.png"), 109 UI.PixmapCache.getIcon("vcsCheckout.png"),
104 self.trUtf8('&New from repository...'), 0, 0, 110 self.tr('&New from repository...'), 0, 0,
105 self, 'mercurial_new') 111 self, 'mercurial_new')
106 self.vcsNewAct.setStatusTip(self.trUtf8( 112 self.vcsNewAct.setStatusTip(self.tr(
107 'Create (clone) a new project from a Mercurial repository' 113 'Create (clone) a new project from a Mercurial repository'
108 )) 114 ))
109 self.vcsNewAct.setWhatsThis(self.trUtf8( 115 self.vcsNewAct.setWhatsThis(self.tr(
110 """<b>New from repository</b>""" 116 """<b>New from repository</b>"""
111 """<p>This creates (clones) a new local project from """ 117 """<p>This creates (clones) a new local project from """
112 """a Mercurial repository.</p>""" 118 """a Mercurial repository.</p>"""
113 )) 119 ))
114 self.vcsNewAct.triggered[()].connect(self._vcsCheckout) 120 self.vcsNewAct.triggered.connect(self._vcsCheckout)
115 self.actions.append(self.vcsNewAct) 121 self.actions.append(self.vcsNewAct)
116 122
117 self.hgIncomingAct = E5Action( 123 self.hgIncomingAct = E5Action(
118 self.trUtf8('Show incoming log'), 124 self.tr('Show incoming log'),
119 UI.PixmapCache.getIcon("vcsUpdate.png"), 125 UI.PixmapCache.getIcon("vcsUpdate.png"),
120 self.trUtf8('Show incoming log'), 126 self.tr('Show incoming log'),
121 0, 0, self, 'mercurial_incoming') 127 0, 0, self, 'mercurial_incoming')
122 self.hgIncomingAct.setStatusTip(self.trUtf8( 128 self.hgIncomingAct.setStatusTip(self.tr(
123 'Show the log of incoming changes' 129 'Show the log of incoming changes'
124 )) 130 ))
125 self.hgIncomingAct.setWhatsThis(self.trUtf8( 131 self.hgIncomingAct.setWhatsThis(self.tr(
126 """<b>Show incoming log</b>""" 132 """<b>Show incoming log</b>"""
127 """<p>This shows the log of changes coming into the""" 133 """<p>This shows the log of changes coming into the"""
128 """ repository.</p>""" 134 """ repository.</p>"""
129 )) 135 ))
130 self.hgIncomingAct.triggered[()].connect(self.__hgIncoming) 136 self.hgIncomingAct.triggered.connect(self.__hgIncoming)
131 self.actions.append(self.hgIncomingAct) 137 self.actions.append(self.hgIncomingAct)
132 138
133 self.hgPullAct = E5Action( 139 self.hgPullAct = E5Action(
134 self.trUtf8('Pull changes'), 140 self.tr('Pull changes'),
135 UI.PixmapCache.getIcon("vcsUpdate.png"), 141 UI.PixmapCache.getIcon("vcsUpdate.png"),
136 self.trUtf8('Pull changes'), 142 self.tr('Pull changes'),
137 0, 0, self, 'mercurial_pull') 143 0, 0, self, 'mercurial_pull')
138 self.hgPullAct.setStatusTip(self.trUtf8( 144 self.hgPullAct.setStatusTip(self.tr(
139 'Pull changes from a remote repository' 145 'Pull changes from a remote repository'
140 )) 146 ))
141 self.hgPullAct.setWhatsThis(self.trUtf8( 147 self.hgPullAct.setWhatsThis(self.tr(
142 """<b>Pull changes</b>""" 148 """<b>Pull changes</b>"""
143 """<p>This pulls changes from a remote repository into the """ 149 """<p>This pulls changes from a remote repository into the """
144 """local repository.</p>""" 150 """local repository.</p>"""
145 )) 151 ))
146 self.hgPullAct.triggered[()].connect(self.__hgPull) 152 self.hgPullAct.triggered.connect(self.__hgPull)
147 self.actions.append(self.hgPullAct) 153 self.actions.append(self.hgPullAct)
148 154
149 self.vcsUpdateAct = E5Action( 155 self.vcsUpdateAct = E5Action(
150 self.trUtf8('Update from repository'), 156 self.tr('Update from repository'),
151 UI.PixmapCache.getIcon("vcsUpdate.png"), 157 UI.PixmapCache.getIcon("vcsUpdate.png"),
152 self.trUtf8('&Update from repository'), 0, 0, self, 158 self.tr('&Update from repository'), 0, 0, self,
153 'mercurial_update') 159 'mercurial_update')
154 self.vcsUpdateAct.setStatusTip(self.trUtf8( 160 self.vcsUpdateAct.setStatusTip(self.tr(
155 'Update the local project from the Mercurial repository' 161 'Update the local project from the Mercurial repository'
156 )) 162 ))
157 self.vcsUpdateAct.setWhatsThis(self.trUtf8( 163 self.vcsUpdateAct.setWhatsThis(self.tr(
158 """<b>Update from repository</b>""" 164 """<b>Update from repository</b>"""
159 """<p>This updates the local project from the Mercurial""" 165 """<p>This updates the local project from the Mercurial"""
160 """ repository.</p>""" 166 """ repository.</p>"""
161 )) 167 ))
162 self.vcsUpdateAct.triggered[()].connect(self._vcsUpdate) 168 self.vcsUpdateAct.triggered.connect(self._vcsUpdate)
163 self.actions.append(self.vcsUpdateAct) 169 self.actions.append(self.vcsUpdateAct)
164 170
165 self.vcsCommitAct = E5Action( 171 self.vcsCommitAct = E5Action(
166 self.trUtf8('Commit changes to repository'), 172 self.tr('Commit changes to repository'),
167 UI.PixmapCache.getIcon("vcsCommit.png"), 173 UI.PixmapCache.getIcon("vcsCommit.png"),
168 self.trUtf8('&Commit changes to repository...'), 0, 0, self, 174 self.tr('&Commit changes to repository...'), 0, 0, self,
169 'mercurial_commit') 175 'mercurial_commit')
170 self.vcsCommitAct.setStatusTip(self.trUtf8( 176 self.vcsCommitAct.setStatusTip(self.tr(
171 'Commit changes to the local project to the Mercurial repository' 177 'Commit changes to the local project to the Mercurial repository'
172 )) 178 ))
173 self.vcsCommitAct.setWhatsThis(self.trUtf8( 179 self.vcsCommitAct.setWhatsThis(self.tr(
174 """<b>Commit changes to repository</b>""" 180 """<b>Commit changes to repository</b>"""
175 """<p>This commits changes to the local project to the """ 181 """<p>This commits changes to the local project to the """
176 """Mercurial repository.</p>""" 182 """Mercurial repository.</p>"""
177 )) 183 ))
178 self.vcsCommitAct.triggered[()].connect(self._vcsCommit) 184 self.vcsCommitAct.triggered.connect(self._vcsCommit)
179 self.actions.append(self.vcsCommitAct) 185 self.actions.append(self.vcsCommitAct)
180 186
181 self.hgOutgoingAct = E5Action( 187 self.hgOutgoingAct = E5Action(
182 self.trUtf8('Show outgoing log'), 188 self.tr('Show outgoing log'),
183 UI.PixmapCache.getIcon("vcsCommit.png"), 189 UI.PixmapCache.getIcon("vcsCommit.png"),
184 self.trUtf8('Show outgoing log'), 190 self.tr('Show outgoing log'),
185 0, 0, self, 'mercurial_outgoing') 191 0, 0, self, 'mercurial_outgoing')
186 self.hgOutgoingAct.setStatusTip(self.trUtf8( 192 self.hgOutgoingAct.setStatusTip(self.tr(
187 'Show the log of outgoing changes' 193 'Show the log of outgoing changes'
188 )) 194 ))
189 self.hgOutgoingAct.setWhatsThis(self.trUtf8( 195 self.hgOutgoingAct.setWhatsThis(self.tr(
190 """<b>Show outgoing log</b>""" 196 """<b>Show outgoing log</b>"""
191 """<p>This shows the log of changes outgoing out of the""" 197 """<p>This shows the log of changes outgoing out of the"""
192 """ repository.</p>""" 198 """ repository.</p>"""
193 )) 199 ))
194 self.hgOutgoingAct.triggered[()].connect(self.__hgOutgoing) 200 self.hgOutgoingAct.triggered.connect(self.__hgOutgoing)
195 self.actions.append(self.hgOutgoingAct) 201 self.actions.append(self.hgOutgoingAct)
196 202
197 self.hgPushAct = E5Action( 203 self.hgPushAct = E5Action(
198 self.trUtf8('Push changes'), 204 self.tr('Push changes'),
199 UI.PixmapCache.getIcon("vcsCommit.png"), 205 UI.PixmapCache.getIcon("vcsCommit.png"),
200 self.trUtf8('Push changes'), 206 self.tr('Push changes'),
201 0, 0, self, 'mercurial_push') 207 0, 0, self, 'mercurial_push')
202 self.hgPushAct.setStatusTip(self.trUtf8( 208 self.hgPushAct.setStatusTip(self.tr(
203 'Push changes to a remote repository' 209 'Push changes to a remote repository'
204 )) 210 ))
205 self.hgPushAct.setWhatsThis(self.trUtf8( 211 self.hgPushAct.setWhatsThis(self.tr(
206 """<b>Push changes</b>""" 212 """<b>Push changes</b>"""
207 """<p>This pushes changes from the local repository to a """ 213 """<p>This pushes changes from the local repository to a """
208 """remote repository.</p>""" 214 """remote repository.</p>"""
209 )) 215 ))
210 self.hgPushAct.triggered[()].connect(self.__hgPush) 216 self.hgPushAct.triggered.connect(self.__hgPush)
211 self.actions.append(self.hgPushAct) 217 self.actions.append(self.hgPushAct)
212 218
213 self.hgPushForcedAct = E5Action( 219 self.hgPushForcedAct = E5Action(
214 self.trUtf8('Push changes (force)'), 220 self.tr('Push changes (force)'),
215 UI.PixmapCache.getIcon("vcsCommit.png"), 221 UI.PixmapCache.getIcon("vcsCommit.png"),
216 self.trUtf8('Push changes (force)'), 222 self.tr('Push changes (force)'),
217 0, 0, self, 'mercurial_push_forced') 223 0, 0, self, 'mercurial_push_forced')
218 self.hgPushForcedAct.setStatusTip(self.trUtf8( 224 self.hgPushForcedAct.setStatusTip(self.tr(
219 'Push changes to a remote repository with force option' 225 'Push changes to a remote repository with force option'
220 )) 226 ))
221 self.hgPushForcedAct.setWhatsThis(self.trUtf8( 227 self.hgPushForcedAct.setWhatsThis(self.tr(
222 """<b>Push changes (force)</b>""" 228 """<b>Push changes (force)</b>"""
223 """<p>This pushes changes from the local repository to a """ 229 """<p>This pushes changes from the local repository to a """
224 """remote repository using the 'force' option.</p>""" 230 """remote repository using the 'force' option.</p>"""
225 )) 231 ))
226 self.hgPushForcedAct.triggered[()].connect(self.__hgPushForced) 232 self.hgPushForcedAct.triggered.connect(self.__hgPushForced)
227 self.actions.append(self.hgPushForcedAct) 233 self.actions.append(self.hgPushForcedAct)
228 234
229 self.vcsExportAct = E5Action( 235 self.vcsExportAct = E5Action(
230 self.trUtf8('Export from repository'), 236 self.tr('Export from repository'),
231 UI.PixmapCache.getIcon("vcsExport.png"), 237 UI.PixmapCache.getIcon("vcsExport.png"),
232 self.trUtf8('&Export from repository...'), 238 self.tr('&Export from repository...'),
233 0, 0, self, 'mercurial_export_repo') 239 0, 0, self, 'mercurial_export_repo')
234 self.vcsExportAct.setStatusTip(self.trUtf8( 240 self.vcsExportAct.setStatusTip(self.tr(
235 'Export a project from the repository' 241 'Export a project from the repository'
236 )) 242 ))
237 self.vcsExportAct.setWhatsThis(self.trUtf8( 243 self.vcsExportAct.setWhatsThis(self.tr(
238 """<b>Export from repository</b>""" 244 """<b>Export from repository</b>"""
239 """<p>This exports a project from the repository.</p>""" 245 """<p>This exports a project from the repository.</p>"""
240 )) 246 ))
241 self.vcsExportAct.triggered[()].connect(self._vcsExport) 247 self.vcsExportAct.triggered.connect(self._vcsExport)
242 self.actions.append(self.vcsExportAct) 248 self.actions.append(self.vcsExportAct)
243 249
244 self.vcsLogAct = E5Action( 250 self.vcsLogAct = E5Action(
245 self.trUtf8('Show log'), 251 self.tr('Show log'),
246 UI.PixmapCache.getIcon("vcsLog.png"), 252 UI.PixmapCache.getIcon("vcsLog.png"),
247 self.trUtf8('Show &log'), 253 self.tr('Show &log'),
248 0, 0, self, 'mercurial_log') 254 0, 0, self, 'mercurial_log')
249 self.vcsLogAct.setStatusTip(self.trUtf8( 255 self.vcsLogAct.setStatusTip(self.tr(
250 'Show the log of the local project' 256 'Show the log of the local project'
251 )) 257 ))
252 self.vcsLogAct.setWhatsThis(self.trUtf8( 258 self.vcsLogAct.setWhatsThis(self.tr(
253 """<b>Show log</b>""" 259 """<b>Show log</b>"""
254 """<p>This shows the log of the local project.</p>""" 260 """<p>This shows the log of the local project.</p>"""
255 )) 261 ))
256 self.vcsLogAct.triggered[()].connect(self._vcsLog) 262 self.vcsLogAct.triggered.connect(self._vcsLog)
257 self.actions.append(self.vcsLogAct) 263 self.actions.append(self.vcsLogAct)
258 264
259 self.hgLogBrowserAct = E5Action( 265 self.hgLogBrowserAct = E5Action(
260 self.trUtf8('Show log browser'), 266 self.tr('Show log browser'),
261 UI.PixmapCache.getIcon("vcsLog.png"), 267 UI.PixmapCache.getIcon("vcsLog.png"),
262 self.trUtf8('Show log browser'), 268 self.tr('Show log browser'),
263 0, 0, self, 'mercurial_log_browser') 269 0, 0, self, 'mercurial_log_browser')
264 self.hgLogBrowserAct.setStatusTip(self.trUtf8( 270 self.hgLogBrowserAct.setStatusTip(self.tr(
265 'Show a dialog to browse the log of the local project' 271 'Show a dialog to browse the log of the local project'
266 )) 272 ))
267 self.hgLogBrowserAct.setWhatsThis(self.trUtf8( 273 self.hgLogBrowserAct.setWhatsThis(self.tr(
268 """<b>Show log browser</b>""" 274 """<b>Show log browser</b>"""
269 """<p>This shows a dialog to browse the log of the local""" 275 """<p>This shows a dialog to browse the log of the local"""
270 """ project. A limited number of entries is shown first.""" 276 """ project. A limited number of entries is shown first."""
271 """ More can be retrieved later on.</p>""" 277 """ More can be retrieved later on.</p>"""
272 )) 278 ))
273 self.hgLogBrowserAct.triggered[()].connect(self.__hgLogBrowser) 279 self.hgLogBrowserAct.triggered.connect(self._vcsLogBrowser)
274 self.actions.append(self.hgLogBrowserAct) 280 self.actions.append(self.hgLogBrowserAct)
275 281
276 self.vcsDiffAct = E5Action( 282 self.vcsDiffAct = E5Action(
277 self.trUtf8('Show difference'), 283 self.tr('Show difference'),
278 UI.PixmapCache.getIcon("vcsDiff.png"), 284 UI.PixmapCache.getIcon("vcsDiff.png"),
279 self.trUtf8('Show &difference'), 285 self.tr('Show &difference'),
280 0, 0, self, 'mercurial_diff') 286 0, 0, self, 'mercurial_diff')
281 self.vcsDiffAct.setStatusTip(self.trUtf8( 287 self.vcsDiffAct.setStatusTip(self.tr(
282 'Show the difference of the local project to the repository' 288 'Show the difference of the local project to the repository'
283 )) 289 ))
284 self.vcsDiffAct.setWhatsThis(self.trUtf8( 290 self.vcsDiffAct.setWhatsThis(self.tr(
285 """<b>Show difference</b>""" 291 """<b>Show difference</b>"""
286 """<p>This shows the difference of the local project to the""" 292 """<p>This shows the difference of the local project to the"""
287 """ repository.</p>""" 293 """ repository.</p>"""
288 )) 294 ))
289 self.vcsDiffAct.triggered[()].connect(self._vcsDiff) 295 self.vcsDiffAct.triggered.connect(self._vcsDiff)
290 self.actions.append(self.vcsDiffAct) 296 self.actions.append(self.vcsDiffAct)
291 297
292 self.hgExtDiffAct = E5Action( 298 self.hgExtDiffAct = E5Action(
293 self.trUtf8('Show difference (extended)'), 299 self.tr('Show difference (extended)'),
294 UI.PixmapCache.getIcon("vcsDiff.png"), 300 UI.PixmapCache.getIcon("vcsDiff.png"),
295 self.trUtf8('Show difference (extended)'), 301 self.tr('Show difference (extended)'),
296 0, 0, self, 'mercurial_extendeddiff') 302 0, 0, self, 'mercurial_extendeddiff')
297 self.hgExtDiffAct.setStatusTip(self.trUtf8( 303 self.hgExtDiffAct.setStatusTip(self.tr(
298 'Show the difference of revisions of the project to the repository' 304 'Show the difference of revisions of the project to the repository'
299 )) 305 ))
300 self.hgExtDiffAct.setWhatsThis(self.trUtf8( 306 self.hgExtDiffAct.setWhatsThis(self.tr(
301 """<b>Show difference (extended)</b>""" 307 """<b>Show difference (extended)</b>"""
302 """<p>This shows the difference of selectable revisions of the""" 308 """<p>This shows the difference of selectable revisions of the"""
303 """ project.</p>""" 309 """ project.</p>"""
304 )) 310 ))
305 self.hgExtDiffAct.triggered[()].connect(self.__hgExtendedDiff) 311 self.hgExtDiffAct.triggered.connect(self.__hgExtendedDiff)
306 self.actions.append(self.hgExtDiffAct) 312 self.actions.append(self.hgExtDiffAct)
307 313
308 self.vcsStatusAct = E5Action( 314 self.vcsStatusAct = E5Action(
309 self.trUtf8('Show status'), 315 self.tr('Show status'),
310 UI.PixmapCache.getIcon("vcsStatus.png"), 316 UI.PixmapCache.getIcon("vcsStatus.png"),
311 self.trUtf8('Show &status...'), 317 self.tr('Show &status...'),
312 0, 0, self, 'mercurial_status') 318 0, 0, self, 'mercurial_status')
313 self.vcsStatusAct.setStatusTip(self.trUtf8( 319 self.vcsStatusAct.setStatusTip(self.tr(
314 'Show the status of the local project' 320 'Show the status of the local project'
315 )) 321 ))
316 self.vcsStatusAct.setWhatsThis(self.trUtf8( 322 self.vcsStatusAct.setWhatsThis(self.tr(
317 """<b>Show status</b>""" 323 """<b>Show status</b>"""
318 """<p>This shows the status of the local project.</p>""" 324 """<p>This shows the status of the local project.</p>"""
319 )) 325 ))
320 self.vcsStatusAct.triggered[()].connect(self._vcsStatus) 326 self.vcsStatusAct.triggered.connect(self._vcsStatus)
321 self.actions.append(self.vcsStatusAct) 327 self.actions.append(self.vcsStatusAct)
322 328
323 self.hgSummaryAct = E5Action( 329 self.hgSummaryAct = E5Action(
324 self.trUtf8('Show Summary'), 330 self.tr('Show Summary'),
325 UI.PixmapCache.getIcon("vcsSummary.png"), 331 UI.PixmapCache.getIcon("vcsSummary.png"),
326 self.trUtf8('Show summary...'), 332 self.tr('Show summary...'),
327 0, 0, self, 'mercurial_summary') 333 0, 0, self, 'mercurial_summary')
328 self.hgSummaryAct.setStatusTip(self.trUtf8( 334 self.hgSummaryAct.setStatusTip(self.tr(
329 'Show summary information of the working directory status' 335 'Show summary information of the working directory status'
330 )) 336 ))
331 self.hgSummaryAct.setWhatsThis(self.trUtf8( 337 self.hgSummaryAct.setWhatsThis(self.tr(
332 """<b>Show summary</b>""" 338 """<b>Show summary</b>"""
333 """<p>This shows some summary information of the working""" 339 """<p>This shows some summary information of the working"""
334 """ directory status.</p>""" 340 """ directory status.</p>"""
335 )) 341 ))
336 self.hgSummaryAct.triggered[()].connect(self.__hgSummary) 342 self.hgSummaryAct.triggered.connect(self.__hgSummary)
337 self.actions.append(self.hgSummaryAct) 343 self.actions.append(self.hgSummaryAct)
338 344
339 self.hgHeadsAct = E5Action( 345 self.hgHeadsAct = E5Action(
340 self.trUtf8('Show heads'), 346 self.tr('Show heads'),
341 self.trUtf8('Show heads'), 347 self.tr('Show heads'),
342 0, 0, self, 'mercurial_heads') 348 0, 0, self, 'mercurial_heads')
343 self.hgHeadsAct.setStatusTip(self.trUtf8( 349 self.hgHeadsAct.setStatusTip(self.tr(
344 'Show the heads of the repository' 350 'Show the heads of the repository'
345 )) 351 ))
346 self.hgHeadsAct.setWhatsThis(self.trUtf8( 352 self.hgHeadsAct.setWhatsThis(self.tr(
347 """<b>Show heads</b>""" 353 """<b>Show heads</b>"""
348 """<p>This shows the heads of the repository.</p>""" 354 """<p>This shows the heads of the repository.</p>"""
349 )) 355 ))
350 self.hgHeadsAct.triggered[()].connect(self.__hgHeads) 356 self.hgHeadsAct.triggered.connect(self.__hgHeads)
351 self.actions.append(self.hgHeadsAct) 357 self.actions.append(self.hgHeadsAct)
352 358
353 self.hgParentsAct = E5Action( 359 self.hgParentsAct = E5Action(
354 self.trUtf8('Show parents'), 360 self.tr('Show parents'),
355 self.trUtf8('Show parents'), 361 self.tr('Show parents'),
356 0, 0, self, 'mercurial_parents') 362 0, 0, self, 'mercurial_parents')
357 self.hgParentsAct.setStatusTip(self.trUtf8( 363 self.hgParentsAct.setStatusTip(self.tr(
358 'Show the parents of the repository' 364 'Show the parents of the repository'
359 )) 365 ))
360 self.hgParentsAct.setWhatsThis(self.trUtf8( 366 self.hgParentsAct.setWhatsThis(self.tr(
361 """<b>Show parents</b>""" 367 """<b>Show parents</b>"""
362 """<p>This shows the parents of the repository.</p>""" 368 """<p>This shows the parents of the repository.</p>"""
363 )) 369 ))
364 self.hgParentsAct.triggered[()].connect(self.__hgParents) 370 self.hgParentsAct.triggered.connect(self.__hgParents)
365 self.actions.append(self.hgParentsAct) 371 self.actions.append(self.hgParentsAct)
366 372
367 self.hgTipAct = E5Action( 373 self.hgTipAct = E5Action(
368 self.trUtf8('Show tip'), 374 self.tr('Show tip'),
369 self.trUtf8('Show tip'), 375 self.tr('Show tip'),
370 0, 0, self, 'mercurial_tip') 376 0, 0, self, 'mercurial_tip')
371 self.hgTipAct.setStatusTip(self.trUtf8( 377 self.hgTipAct.setStatusTip(self.tr(
372 'Show the tip of the repository' 378 'Show the tip of the repository'
373 )) 379 ))
374 self.hgTipAct.setWhatsThis(self.trUtf8( 380 self.hgTipAct.setWhatsThis(self.tr(
375 """<b>Show tip</b>""" 381 """<b>Show tip</b>"""
376 """<p>This shows the tip of the repository.</p>""" 382 """<p>This shows the tip of the repository.</p>"""
377 )) 383 ))
378 self.hgTipAct.triggered[()].connect(self.__hgTip) 384 self.hgTipAct.triggered.connect(self.__hgTip)
379 self.actions.append(self.hgTipAct) 385 self.actions.append(self.hgTipAct)
380 386
381 self.vcsRevertAct = E5Action( 387 self.vcsRevertAct = E5Action(
382 self.trUtf8('Revert changes'), 388 self.tr('Revert changes'),
383 UI.PixmapCache.getIcon("vcsRevert.png"), 389 UI.PixmapCache.getIcon("vcsRevert.png"),
384 self.trUtf8('Re&vert changes'), 390 self.tr('Re&vert changes'),
385 0, 0, self, 'mercurial_revert') 391 0, 0, self, 'mercurial_revert')
386 self.vcsRevertAct.setStatusTip(self.trUtf8( 392 self.vcsRevertAct.setStatusTip(self.tr(
387 'Revert all changes made to the local project' 393 'Revert all changes made to the local project'
388 )) 394 ))
389 self.vcsRevertAct.setWhatsThis(self.trUtf8( 395 self.vcsRevertAct.setWhatsThis(self.tr(
390 """<b>Revert changes</b>""" 396 """<b>Revert changes</b>"""
391 """<p>This reverts all changes made to the local project.</p>""" 397 """<p>This reverts all changes made to the local project.</p>"""
392 )) 398 ))
393 self.vcsRevertAct.triggered[()].connect(self.__hgRevert) 399 self.vcsRevertAct.triggered.connect(self.__hgRevert)
394 self.actions.append(self.vcsRevertAct) 400 self.actions.append(self.vcsRevertAct)
395 401
396 self.vcsMergeAct = E5Action( 402 self.vcsMergeAct = E5Action(
397 self.trUtf8('Merge'), 403 self.tr('Merge'),
398 UI.PixmapCache.getIcon("vcsMerge.png"), 404 UI.PixmapCache.getIcon("vcsMerge.png"),
399 self.trUtf8('Mer&ge changes...'), 405 self.tr('Mer&ge changes...'),
400 0, 0, self, 'mercurial_merge') 406 0, 0, self, 'mercurial_merge')
401 self.vcsMergeAct.setStatusTip(self.trUtf8( 407 self.vcsMergeAct.setStatusTip(self.tr(
402 'Merge changes of a revision into the local project' 408 'Merge changes of a revision into the local project'
403 )) 409 ))
404 self.vcsMergeAct.setWhatsThis(self.trUtf8( 410 self.vcsMergeAct.setWhatsThis(self.tr(
405 """<b>Merge</b>""" 411 """<b>Merge</b>"""
406 """<p>This merges changes of a revision into the local""" 412 """<p>This merges changes of a revision into the local"""
407 """ project.</p>""" 413 """ project.</p>"""
408 )) 414 ))
409 self.vcsMergeAct.triggered[()].connect(self._vcsMerge) 415 self.vcsMergeAct.triggered.connect(self._vcsMerge)
410 self.actions.append(self.vcsMergeAct) 416 self.actions.append(self.vcsMergeAct)
411 417
412 self.vcsResolveAct = E5Action( 418 self.vcsResolveAct = E5Action(
413 self.trUtf8('Conflicts resolved'), 419 self.tr('Conflicts resolved'),
414 self.trUtf8('Con&flicts resolved'), 420 self.tr('Con&flicts resolved'),
415 0, 0, self, 'mercurial_resolve') 421 0, 0, self, 'mercurial_resolve')
416 self.vcsResolveAct.setStatusTip(self.trUtf8( 422 self.vcsResolveAct.setStatusTip(self.tr(
417 'Mark all conflicts of the local project as resolved' 423 'Mark all conflicts of the local project as resolved'
418 )) 424 ))
419 self.vcsResolveAct.setWhatsThis(self.trUtf8( 425 self.vcsResolveAct.setWhatsThis(self.tr(
420 """<b>Conflicts resolved</b>""" 426 """<b>Conflicts resolved</b>"""
421 """<p>This marks all conflicts of the local project as""" 427 """<p>This marks all conflicts of the local project as"""
422 """ resolved.</p>""" 428 """ resolved.</p>"""
423 )) 429 ))
424 self.vcsResolveAct.triggered[()].connect(self.__hgResolve) 430 self.vcsResolveAct.triggered.connect(self.__hgResolve)
425 self.actions.append(self.vcsResolveAct) 431 self.actions.append(self.vcsResolveAct)
426 432
427 self.vcsTagAct = E5Action( 433 self.vcsTagAct = E5Action(
428 self.trUtf8('Tag in repository'), 434 self.tr('Tag in repository'),
429 UI.PixmapCache.getIcon("vcsTag.png"), 435 UI.PixmapCache.getIcon("vcsTag.png"),
430 self.trUtf8('&Tag in repository...'), 436 self.tr('&Tag in repository...'),
431 0, 0, self, 'mercurial_tag') 437 0, 0, self, 'mercurial_tag')
432 self.vcsTagAct.setStatusTip(self.trUtf8( 438 self.vcsTagAct.setStatusTip(self.tr(
433 'Tag the local project in the repository' 439 'Tag the local project in the repository'
434 )) 440 ))
435 self.vcsTagAct.setWhatsThis(self.trUtf8( 441 self.vcsTagAct.setWhatsThis(self.tr(
436 """<b>Tag in repository</b>""" 442 """<b>Tag in repository</b>"""
437 """<p>This tags the local project in the repository.</p>""" 443 """<p>This tags the local project in the repository.</p>"""
438 )) 444 ))
439 self.vcsTagAct.triggered[()].connect(self._vcsTag) 445 self.vcsTagAct.triggered.connect(self._vcsTag)
440 self.actions.append(self.vcsTagAct) 446 self.actions.append(self.vcsTagAct)
441 447
442 self.hgTagListAct = E5Action( 448 self.hgTagListAct = E5Action(
443 self.trUtf8('List tags'), 449 self.tr('List tags'),
444 self.trUtf8('List tags...'), 450 self.tr('List tags...'),
445 0, 0, self, 'mercurial_list_tags') 451 0, 0, self, 'mercurial_list_tags')
446 self.hgTagListAct.setStatusTip(self.trUtf8( 452 self.hgTagListAct.setStatusTip(self.tr(
447 'List tags of the project' 453 'List tags of the project'
448 )) 454 ))
449 self.hgTagListAct.setWhatsThis(self.trUtf8( 455 self.hgTagListAct.setWhatsThis(self.tr(
450 """<b>List tags</b>""" 456 """<b>List tags</b>"""
451 """<p>This lists the tags of the project.</p>""" 457 """<p>This lists the tags of the project.</p>"""
452 )) 458 ))
453 self.hgTagListAct.triggered[()].connect(self.__hgTagList) 459 self.hgTagListAct.triggered.connect(self.__hgTagList)
454 self.actions.append(self.hgTagListAct) 460 self.actions.append(self.hgTagListAct)
455 461
456 self.hgBranchListAct = E5Action( 462 self.hgBranchListAct = E5Action(
457 self.trUtf8('List branches'), 463 self.tr('List branches'),
458 self.trUtf8('List branches...'), 464 self.tr('List branches...'),
459 0, 0, self, 'mercurial_list_branches') 465 0, 0, self, 'mercurial_list_branches')
460 self.hgBranchListAct.setStatusTip(self.trUtf8( 466 self.hgBranchListAct.setStatusTip(self.tr(
461 'List branches of the project' 467 'List branches of the project'
462 )) 468 ))
463 self.hgBranchListAct.setWhatsThis(self.trUtf8( 469 self.hgBranchListAct.setWhatsThis(self.tr(
464 """<b>List branches</b>""" 470 """<b>List branches</b>"""
465 """<p>This lists the branches of the project.</p>""" 471 """<p>This lists the branches of the project.</p>"""
466 )) 472 ))
467 self.hgBranchListAct.triggered[()].connect(self.__hgBranchList) 473 self.hgBranchListAct.triggered.connect(self.__hgBranchList)
468 self.actions.append(self.hgBranchListAct) 474 self.actions.append(self.hgBranchListAct)
469 475
470 self.hgBranchAct = E5Action( 476 self.hgBranchAct = E5Action(
471 self.trUtf8('Create branch'), 477 self.tr('Create branch'),
472 UI.PixmapCache.getIcon("vcsBranch.png"), 478 UI.PixmapCache.getIcon("vcsBranch.png"),
473 self.trUtf8('Create &branch...'), 479 self.tr('Create &branch...'),
474 0, 0, self, 'mercurial_branch') 480 0, 0, self, 'mercurial_branch')
475 self.hgBranchAct.setStatusTip(self.trUtf8( 481 self.hgBranchAct.setStatusTip(self.tr(
476 'Create a new branch for the local project in the repository' 482 'Create a new branch for the local project in the repository'
477 )) 483 ))
478 self.hgBranchAct.setWhatsThis(self.trUtf8( 484 self.hgBranchAct.setWhatsThis(self.tr(
479 """<b>Create branch</b>""" 485 """<b>Create branch</b>"""
480 """<p>This creates a new branch for the local project """ 486 """<p>This creates a new branch for the local project """
481 """in the repository.</p>""" 487 """in the repository.</p>"""
482 )) 488 ))
483 self.hgBranchAct.triggered[()].connect(self.__hgBranch) 489 self.hgBranchAct.triggered.connect(self.__hgBranch)
484 self.actions.append(self.hgBranchAct) 490 self.actions.append(self.hgBranchAct)
485 491
486 self.hgPushBranchAct = E5Action( 492 self.hgPushBranchAct = E5Action(
487 self.trUtf8('Push new branch'), 493 self.tr('Push new branch'),
488 self.trUtf8('Push new branch'), 494 self.tr('Push new branch'),
489 0, 0, self, 'mercurial_push_branch') 495 0, 0, self, 'mercurial_push_branch')
490 self.hgPushBranchAct.setStatusTip(self.trUtf8( 496 self.hgPushBranchAct.setStatusTip(self.tr(
491 'Push the current branch of the local project as a new named' 497 'Push the current branch of the local project as a new named'
492 ' branch' 498 ' branch'
493 )) 499 ))
494 self.hgPushBranchAct.setWhatsThis(self.trUtf8( 500 self.hgPushBranchAct.setWhatsThis(self.tr(
495 """<b>Push new branch</b>""" 501 """<b>Push new branch</b>"""
496 """<p>This pushes the current branch of the local project""" 502 """<p>This pushes the current branch of the local project"""
497 """ as a new named branch.</p>""" 503 """ as a new named branch.</p>"""
498 )) 504 ))
499 self.hgPushBranchAct.triggered[()].connect(self.__hgPushNewBranch) 505 self.hgPushBranchAct.triggered.connect(self.__hgPushNewBranch)
500 self.actions.append(self.hgPushBranchAct) 506 self.actions.append(self.hgPushBranchAct)
501 507
502 self.hgCloseBranchAct = E5Action( 508 self.hgCloseBranchAct = E5Action(
503 self.trUtf8('Close branch'), 509 self.tr('Close branch'),
504 self.trUtf8('Close branch'), 510 self.tr('Close branch'),
505 0, 0, self, 'mercurial_close_branch') 511 0, 0, self, 'mercurial_close_branch')
506 self.hgCloseBranchAct.setStatusTip(self.trUtf8( 512 self.hgCloseBranchAct.setStatusTip(self.tr(
507 'Close the current branch of the local project' 513 'Close the current branch of the local project'
508 )) 514 ))
509 self.hgCloseBranchAct.setWhatsThis(self.trUtf8( 515 self.hgCloseBranchAct.setWhatsThis(self.tr(
510 """<b>Close branch</b>""" 516 """<b>Close branch</b>"""
511 """<p>This closes the current branch of the local project.</p>""" 517 """<p>This closes the current branch of the local project.</p>"""
512 )) 518 ))
513 self.hgCloseBranchAct.triggered[()].connect(self.__hgCloseBranch) 519 self.hgCloseBranchAct.triggered.connect(self.__hgCloseBranch)
514 self.actions.append(self.hgCloseBranchAct) 520 self.actions.append(self.hgCloseBranchAct)
515 521
516 self.hgShowBranchAct = E5Action( 522 self.hgShowBranchAct = E5Action(
517 self.trUtf8('Show current branch'), 523 self.tr('Show current branch'),
518 self.trUtf8('Show current branch'), 524 self.tr('Show current branch'),
519 0, 0, self, 'mercurial_show_branch') 525 0, 0, self, 'mercurial_show_branch')
520 self.hgShowBranchAct.setStatusTip(self.trUtf8( 526 self.hgShowBranchAct.setStatusTip(self.tr(
521 'Show the current branch of the project' 527 'Show the current branch of the project'
522 )) 528 ))
523 self.hgShowBranchAct.setWhatsThis(self.trUtf8( 529 self.hgShowBranchAct.setWhatsThis(self.tr(
524 """<b>Show current branch</b>""" 530 """<b>Show current branch</b>"""
525 """<p>This shows the current branch of the project.</p>""" 531 """<p>This shows the current branch of the project.</p>"""
526 )) 532 ))
527 self.hgShowBranchAct.triggered[()].connect(self.__hgShowBranch) 533 self.hgShowBranchAct.triggered.connect(self.__hgShowBranch)
528 self.actions.append(self.hgShowBranchAct) 534 self.actions.append(self.hgShowBranchAct)
529 535
530 self.vcsSwitchAct = E5Action( 536 self.vcsSwitchAct = E5Action(
531 self.trUtf8('Switch'), 537 self.tr('Switch'),
532 UI.PixmapCache.getIcon("vcsSwitch.png"), 538 UI.PixmapCache.getIcon("vcsSwitch.png"),
533 self.trUtf8('S&witch...'), 539 self.tr('S&witch...'),
534 0, 0, self, 'mercurial_switch') 540 0, 0, self, 'mercurial_switch')
535 self.vcsSwitchAct.setStatusTip(self.trUtf8( 541 self.vcsSwitchAct.setStatusTip(self.tr(
536 'Switch the working directory to another revision' 542 'Switch the working directory to another revision'
537 )) 543 ))
538 self.vcsSwitchAct.setWhatsThis(self.trUtf8( 544 self.vcsSwitchAct.setWhatsThis(self.tr(
539 """<b>Switch</b>""" 545 """<b>Switch</b>"""
540 """<p>This switches the working directory to another""" 546 """<p>This switches the working directory to another"""
541 """ revision.</p>""" 547 """ revision.</p>"""
542 )) 548 ))
543 self.vcsSwitchAct.triggered[()].connect(self._vcsSwitch) 549 self.vcsSwitchAct.triggered.connect(self._vcsSwitch)
544 self.actions.append(self.vcsSwitchAct) 550 self.actions.append(self.vcsSwitchAct)
545 551
546 self.vcsCleanupAct = E5Action( 552 self.vcsCleanupAct = E5Action(
547 self.trUtf8('Cleanup'), 553 self.tr('Cleanup'),
548 self.trUtf8('Cleanu&p'), 554 self.tr('Cleanu&p'),
549 0, 0, self, 'mercurial_cleanup') 555 0, 0, self, 'mercurial_cleanup')
550 self.vcsCleanupAct.setStatusTip(self.trUtf8( 556 self.vcsCleanupAct.setStatusTip(self.tr(
551 'Cleanup the local project' 557 'Cleanup the local project'
552 )) 558 ))
553 self.vcsCleanupAct.setWhatsThis(self.trUtf8( 559 self.vcsCleanupAct.setWhatsThis(self.tr(
554 """<b>Cleanup</b>""" 560 """<b>Cleanup</b>"""
555 """<p>This performs a cleanup of the local project.</p>""" 561 """<p>This performs a cleanup of the local project.</p>"""
556 )) 562 ))
557 self.vcsCleanupAct.triggered[()].connect(self._vcsCleanup) 563 self.vcsCleanupAct.triggered.connect(self._vcsCleanup)
558 self.actions.append(self.vcsCleanupAct) 564 self.actions.append(self.vcsCleanupAct)
559 565
560 self.vcsCommandAct = E5Action( 566 self.vcsCommandAct = E5Action(
561 self.trUtf8('Execute command'), 567 self.tr('Execute command'),
562 self.trUtf8('E&xecute command...'), 568 self.tr('E&xecute command...'),
563 0, 0, self, 'mercurial_command') 569 0, 0, self, 'mercurial_command')
564 self.vcsCommandAct.setStatusTip(self.trUtf8( 570 self.vcsCommandAct.setStatusTip(self.tr(
565 'Execute an arbitrary Mercurial command' 571 'Execute an arbitrary Mercurial command'
566 )) 572 ))
567 self.vcsCommandAct.setWhatsThis(self.trUtf8( 573 self.vcsCommandAct.setWhatsThis(self.tr(
568 """<b>Execute command</b>""" 574 """<b>Execute command</b>"""
569 """<p>This opens a dialog to enter an arbitrary Mercurial""" 575 """<p>This opens a dialog to enter an arbitrary Mercurial"""
570 """ command.</p>""" 576 """ command.</p>"""
571 )) 577 ))
572 self.vcsCommandAct.triggered[()].connect(self._vcsCommand) 578 self.vcsCommandAct.triggered.connect(self._vcsCommand)
573 self.actions.append(self.vcsCommandAct) 579 self.actions.append(self.vcsCommandAct)
574 580
575 self.vcsPropsAct = E5Action(
576 self.trUtf8('Command options'),
577 self.trUtf8('Command &options...'), 0, 0, self,
578 'mercurial_options')
579 self.vcsPropsAct.setStatusTip(self.trUtf8(
580 'Show the Mercurial command options'))
581 self.vcsPropsAct.setWhatsThis(self.trUtf8(
582 """<b>Command options...</b>"""
583 """<p>This shows a dialog to edit the Mercurial command"""
584 """ options.</p>"""
585 ))
586 self.vcsPropsAct.triggered[()].connect(self._vcsCommandOptions)
587 self.actions.append(self.vcsPropsAct)
588
589 self.hgConfigAct = E5Action( 581 self.hgConfigAct = E5Action(
590 self.trUtf8('Configure'), 582 self.tr('Configure'),
591 self.trUtf8('Configure...'), 583 self.tr('Configure...'),
592 0, 0, self, 'mercurial_configure') 584 0, 0, self, 'mercurial_configure')
593 self.hgConfigAct.setStatusTip(self.trUtf8( 585 self.hgConfigAct.setStatusTip(self.tr(
594 'Show the configuration dialog with the Mercurial page selected' 586 'Show the configuration dialog with the Mercurial page selected'
595 )) 587 ))
596 self.hgConfigAct.setWhatsThis(self.trUtf8( 588 self.hgConfigAct.setWhatsThis(self.tr(
597 """<b>Configure</b>""" 589 """<b>Configure</b>"""
598 """<p>Show the configuration dialog with the Mercurial page""" 590 """<p>Show the configuration dialog with the Mercurial page"""
599 """ selected.</p>""" 591 """ selected.</p>"""
600 )) 592 ))
601 self.hgConfigAct.triggered[()].connect(self.__hgConfigure) 593 self.hgConfigAct.triggered.connect(self.__hgConfigure)
602 self.actions.append(self.hgConfigAct) 594 self.actions.append(self.hgConfigAct)
603 595
604 self.hgEditUserConfigAct = E5Action( 596 self.hgEditUserConfigAct = E5Action(
605 self.trUtf8('Edit user configuration'), 597 self.tr('Edit user configuration'),
606 self.trUtf8('Edit user configuration...'), 598 self.tr('Edit user configuration...'),
607 0, 0, self, 'mercurial_user_configure') 599 0, 0, self, 'mercurial_user_configure')
608 self.hgEditUserConfigAct.setStatusTip(self.trUtf8( 600 self.hgEditUserConfigAct.setStatusTip(self.tr(
609 'Show an editor to edit the user configuration file' 601 'Show an editor to edit the user configuration file'
610 )) 602 ))
611 self.hgEditUserConfigAct.setWhatsThis(self.trUtf8( 603 self.hgEditUserConfigAct.setWhatsThis(self.tr(
612 """<b>Edit user configuration</b>""" 604 """<b>Edit user configuration</b>"""
613 """<p>Show an editor to edit the user configuration file.</p>""" 605 """<p>Show an editor to edit the user configuration file.</p>"""
614 )) 606 ))
615 self.hgEditUserConfigAct.triggered[()].connect(self.__hgEditUserConfig) 607 self.hgEditUserConfigAct.triggered.connect(self.__hgEditUserConfig)
616 self.actions.append(self.hgEditUserConfigAct) 608 self.actions.append(self.hgEditUserConfigAct)
617 609
618 self.hgRepoConfigAct = E5Action( 610 self.hgRepoConfigAct = E5Action(
619 self.trUtf8('Edit repository configuration'), 611 self.tr('Edit repository configuration'),
620 self.trUtf8('Edit repository configuration...'), 612 self.tr('Edit repository configuration...'),
621 0, 0, self, 'mercurial_repo_configure') 613 0, 0, self, 'mercurial_repo_configure')
622 self.hgRepoConfigAct.setStatusTip(self.trUtf8( 614 self.hgRepoConfigAct.setStatusTip(self.tr(
623 'Show an editor to edit the repository configuration file' 615 'Show an editor to edit the repository configuration file'
624 )) 616 ))
625 self.hgRepoConfigAct.setWhatsThis(self.trUtf8( 617 self.hgRepoConfigAct.setWhatsThis(self.tr(
626 """<b>Edit repository configuration</b>""" 618 """<b>Edit repository configuration</b>"""
627 """<p>Show an editor to edit the repository configuration""" 619 """<p>Show an editor to edit the repository configuration"""
628 """ file.</p>""" 620 """ file.</p>"""
629 )) 621 ))
630 self.hgRepoConfigAct.triggered[()].connect(self.__hgEditRepoConfig) 622 self.hgRepoConfigAct.triggered.connect(self.__hgEditRepoConfig)
631 self.actions.append(self.hgRepoConfigAct) 623 self.actions.append(self.hgRepoConfigAct)
632 624
633 self.hgShowConfigAct = E5Action( 625 self.hgShowConfigAct = E5Action(
634 self.trUtf8('Show combined configuration settings'), 626 self.tr('Show combined configuration settings'),
635 self.trUtf8('Show combined configuration settings...'), 627 self.tr('Show combined configuration settings...'),
636 0, 0, self, 'mercurial_show_config') 628 0, 0, self, 'mercurial_show_config')
637 self.hgShowConfigAct.setStatusTip(self.trUtf8( 629 self.hgShowConfigAct.setStatusTip(self.tr(
638 'Show the combined configuration settings from all configuration' 630 'Show the combined configuration settings from all configuration'
639 ' files' 631 ' files'
640 )) 632 ))
641 self.hgShowConfigAct.setWhatsThis(self.trUtf8( 633 self.hgShowConfigAct.setWhatsThis(self.tr(
642 """<b>Show combined configuration settings</b>""" 634 """<b>Show combined configuration settings</b>"""
643 """<p>This shows the combined configuration settings""" 635 """<p>This shows the combined configuration settings"""
644 """ from all configuration files.</p>""" 636 """ from all configuration files.</p>"""
645 )) 637 ))
646 self.hgShowConfigAct.triggered[()].connect(self.__hgShowConfig) 638 self.hgShowConfigAct.triggered.connect(self.__hgShowConfig)
647 self.actions.append(self.hgShowConfigAct) 639 self.actions.append(self.hgShowConfigAct)
648 640
649 self.hgShowPathsAct = E5Action( 641 self.hgShowPathsAct = E5Action(
650 self.trUtf8('Show paths'), 642 self.tr('Show paths'),
651 self.trUtf8('Show paths...'), 643 self.tr('Show paths...'),
652 0, 0, self, 'mercurial_show_paths') 644 0, 0, self, 'mercurial_show_paths')
653 self.hgShowPathsAct.setStatusTip(self.trUtf8( 645 self.hgShowPathsAct.setStatusTip(self.tr(
654 'Show the aliases for remote repositories' 646 'Show the aliases for remote repositories'
655 )) 647 ))
656 self.hgShowPathsAct.setWhatsThis(self.trUtf8( 648 self.hgShowPathsAct.setWhatsThis(self.tr(
657 """<b>Show paths</b>""" 649 """<b>Show paths</b>"""
658 """<p>This shows the aliases for remote repositories.</p>""" 650 """<p>This shows the aliases for remote repositories.</p>"""
659 )) 651 ))
660 self.hgShowPathsAct.triggered[()].connect(self.__hgShowPaths) 652 self.hgShowPathsAct.triggered.connect(self.__hgShowPaths)
661 self.actions.append(self.hgShowPathsAct) 653 self.actions.append(self.hgShowPathsAct)
662 654
663 self.hgVerifyAct = E5Action( 655 self.hgVerifyAct = E5Action(
664 self.trUtf8('Verify repository'), 656 self.tr('Verify repository'),
665 self.trUtf8('Verify repository...'), 657 self.tr('Verify repository...'),
666 0, 0, self, 'mercurial_verify') 658 0, 0, self, 'mercurial_verify')
667 self.hgVerifyAct.setStatusTip(self.trUtf8( 659 self.hgVerifyAct.setStatusTip(self.tr(
668 'Verify the integrity of the repository' 660 'Verify the integrity of the repository'
669 )) 661 ))
670 self.hgVerifyAct.setWhatsThis(self.trUtf8( 662 self.hgVerifyAct.setWhatsThis(self.tr(
671 """<b>Verify repository</b>""" 663 """<b>Verify repository</b>"""
672 """<p>This verifies the integrity of the repository.</p>""" 664 """<p>This verifies the integrity of the repository.</p>"""
673 )) 665 ))
674 self.hgVerifyAct.triggered[()].connect(self.__hgVerify) 666 self.hgVerifyAct.triggered.connect(self.__hgVerify)
675 self.actions.append(self.hgVerifyAct) 667 self.actions.append(self.hgVerifyAct)
676 668
677 self.hgRecoverAct = E5Action( 669 self.hgRecoverAct = E5Action(
678 self.trUtf8('Recover'), 670 self.tr('Recover'),
679 self.trUtf8('Recover...'), 671 self.tr('Recover...'),
680 0, 0, self, 'mercurial_recover') 672 0, 0, self, 'mercurial_recover')
681 self.hgRecoverAct.setStatusTip(self.trUtf8( 673 self.hgRecoverAct.setStatusTip(self.tr(
682 'Recover from an interrupted transaction' 674 'Recover from an interrupted transaction'
683 )) 675 ))
684 self.hgRecoverAct.setWhatsThis(self.trUtf8( 676 self.hgRecoverAct.setWhatsThis(self.tr(
685 """<b>Recover</b>""" 677 """<b>Recover</b>"""
686 """<p>This recovers from an interrupted transaction.</p>""" 678 """<p>This recovers from an interrupted transaction.</p>"""
687 )) 679 ))
688 self.hgRecoverAct.triggered[()].connect(self.__hgRecover) 680 self.hgRecoverAct.triggered.connect(self.__hgRecover)
689 self.actions.append(self.hgRecoverAct) 681 self.actions.append(self.hgRecoverAct)
690 682
691 self.hgIdentifyAct = E5Action( 683 self.hgIdentifyAct = E5Action(
692 self.trUtf8('Identify'), 684 self.tr('Identify'),
693 self.trUtf8('Identify...'), 685 self.tr('Identify...'),
694 0, 0, self, 'mercurial_identify') 686 0, 0, self, 'mercurial_identify')
695 self.hgIdentifyAct.setStatusTip(self.trUtf8( 687 self.hgIdentifyAct.setStatusTip(self.tr(
696 'Identify the project directory' 688 'Identify the project directory'
697 )) 689 ))
698 self.hgIdentifyAct.setWhatsThis(self.trUtf8( 690 self.hgIdentifyAct.setWhatsThis(self.tr(
699 """<b>Identify</b>""" 691 """<b>Identify</b>"""
700 """<p>This identifies the project directory.</p>""" 692 """<p>This identifies the project directory.</p>"""
701 )) 693 ))
702 self.hgIdentifyAct.triggered[()].connect(self.__hgIdentify) 694 self.hgIdentifyAct.triggered.connect(self.__hgIdentify)
703 self.actions.append(self.hgIdentifyAct) 695 self.actions.append(self.hgIdentifyAct)
704 696
705 self.hgCreateIgnoreAct = E5Action( 697 self.hgCreateIgnoreAct = E5Action(
706 self.trUtf8('Create .hgignore'), 698 self.tr('Create .hgignore'),
707 self.trUtf8('Create .hgignore'), 699 self.tr('Create .hgignore'),
708 0, 0, self, 'mercurial_create ignore') 700 0, 0, self, 'mercurial_create ignore')
709 self.hgCreateIgnoreAct.setStatusTip(self.trUtf8( 701 self.hgCreateIgnoreAct.setStatusTip(self.tr(
710 'Create a .hgignore file with default values' 702 'Create a .hgignore file with default values'
711 )) 703 ))
712 self.hgCreateIgnoreAct.setWhatsThis(self.trUtf8( 704 self.hgCreateIgnoreAct.setWhatsThis(self.tr(
713 """<b>Create .hgignore</b>""" 705 """<b>Create .hgignore</b>"""
714 """<p>This creates a .hgignore file with default values.</p>""" 706 """<p>This creates a .hgignore file with default values.</p>"""
715 )) 707 ))
716 self.hgCreateIgnoreAct.triggered[()].connect(self.__hgCreateIgnore) 708 self.hgCreateIgnoreAct.triggered.connect(self.__hgCreateIgnore)
717 self.actions.append(self.hgCreateIgnoreAct) 709 self.actions.append(self.hgCreateIgnoreAct)
718 710
719 self.hgBundleAct = E5Action( 711 self.hgBundleAct = E5Action(
720 self.trUtf8('Create changegroup'), 712 self.tr('Create changegroup'),
721 self.trUtf8('Create changegroup...'), 713 self.tr('Create changegroup...'),
722 0, 0, self, 'mercurial_bundle') 714 0, 0, self, 'mercurial_bundle')
723 self.hgBundleAct.setStatusTip(self.trUtf8( 715 self.hgBundleAct.setStatusTip(self.tr(
724 'Create changegroup file collecting changesets' 716 'Create changegroup file collecting changesets'
725 )) 717 ))
726 self.hgBundleAct.setWhatsThis(self.trUtf8( 718 self.hgBundleAct.setWhatsThis(self.tr(
727 """<b>Create changegroup</b>""" 719 """<b>Create changegroup</b>"""
728 """<p>This creates a changegroup file collecting selected""" 720 """<p>This creates a changegroup file collecting selected"""
729 """ changesets (hg bundle).</p>""" 721 """ changesets (hg bundle).</p>"""
730 )) 722 ))
731 self.hgBundleAct.triggered[()].connect(self.__hgBundle) 723 self.hgBundleAct.triggered.connect(self.__hgBundle)
732 self.actions.append(self.hgBundleAct) 724 self.actions.append(self.hgBundleAct)
733 725
734 self.hgPreviewBundleAct = E5Action( 726 self.hgPreviewBundleAct = E5Action(
735 self.trUtf8('Preview changegroup'), 727 self.tr('Preview changegroup'),
736 self.trUtf8('Preview changegroup...'), 728 self.tr('Preview changegroup...'),
737 0, 0, self, 'mercurial_preview_bundle') 729 0, 0, self, 'mercurial_preview_bundle')
738 self.hgPreviewBundleAct.setStatusTip(self.trUtf8( 730 self.hgPreviewBundleAct.setStatusTip(self.tr(
739 'Preview a changegroup file containing a collection of changesets' 731 'Preview a changegroup file containing a collection of changesets'
740 )) 732 ))
741 self.hgPreviewBundleAct.setWhatsThis(self.trUtf8( 733 self.hgPreviewBundleAct.setWhatsThis(self.tr(
742 """<b>Preview changegroup</b>""" 734 """<b>Preview changegroup</b>"""
743 """<p>This previews a changegroup file containing a collection""" 735 """<p>This previews a changegroup file containing a collection"""
744 """ of changesets.</p>""" 736 """ of changesets.</p>"""
745 )) 737 ))
746 self.hgPreviewBundleAct.triggered[()].connect(self.__hgPreviewBundle) 738 self.hgPreviewBundleAct.triggered.connect(self.__hgPreviewBundle)
747 self.actions.append(self.hgPreviewBundleAct) 739 self.actions.append(self.hgPreviewBundleAct)
748 740
749 self.hgIdentifyBundleAct = E5Action(
750 self.trUtf8('Identify changegroup'),
751 self.trUtf8('Identify changegroup...'),
752 0, 0, self, 'mercurial_identify_bundle')
753 self.hgIdentifyBundleAct.setStatusTip(self.trUtf8(
754 'Identify a changegroup file containing a collection of changesets'
755 ))
756 self.hgIdentifyBundleAct.setWhatsThis(self.trUtf8(
757 """<b>Identify changegroup</b>"""
758 """<p>This identifies a changegroup file containing a"""
759 """ collection of changesets.</p>"""
760 ))
761 self.hgIdentifyBundleAct.triggered[()].connect(self.__hgIdentifyBundle)
762 self.actions.append(self.hgIdentifyBundleAct)
763
764 self.hgUnbundleAct = E5Action( 741 self.hgUnbundleAct = E5Action(
765 self.trUtf8('Apply changegroups'), 742 self.tr('Apply changegroups'),
766 self.trUtf8('Apply changegroups...'), 743 self.tr('Apply changegroups...'),
767 0, 0, self, 'mercurial_unbundle') 744 0, 0, self, 'mercurial_unbundle')
768 self.hgUnbundleAct.setStatusTip(self.trUtf8( 745 self.hgUnbundleAct.setStatusTip(self.tr(
769 'Apply one or several changegroup files' 746 'Apply one or several changegroup files'
770 )) 747 ))
771 self.hgUnbundleAct.setWhatsThis(self.trUtf8( 748 self.hgUnbundleAct.setWhatsThis(self.tr(
772 """<b>Apply changegroups</b>""" 749 """<b>Apply changegroups</b>"""
773 """<p>This applies one or several changegroup files generated by""" 750 """<p>This applies one or several changegroup files generated by"""
774 """ the 'Create changegroup' action (hg unbundle).</p>""" 751 """ the 'Create changegroup' action (hg unbundle).</p>"""
775 )) 752 ))
776 self.hgUnbundleAct.triggered[()].connect(self.__hgUnbundle) 753 self.hgUnbundleAct.triggered.connect(self.__hgUnbundle)
777 self.actions.append(self.hgUnbundleAct) 754 self.actions.append(self.hgUnbundleAct)
778 755
779 self.hgBisectGoodAct = E5Action( 756 self.hgBisectGoodAct = E5Action(
780 self.trUtf8('Mark as "good"'), 757 self.tr('Mark as "good"'),
781 self.trUtf8('Mark as "good"...'), 758 self.tr('Mark as "good"...'),
782 0, 0, self, 'mercurial_bisect_good') 759 0, 0, self, 'mercurial_bisect_good')
783 self.hgBisectGoodAct.setStatusTip(self.trUtf8( 760 self.hgBisectGoodAct.setStatusTip(self.tr(
784 'Mark a selectable changeset as good' 761 'Mark a selectable changeset as good'
785 )) 762 ))
786 self.hgBisectGoodAct.setWhatsThis(self.trUtf8( 763 self.hgBisectGoodAct.setWhatsThis(self.tr(
787 """<b>Mark as good</b>""" 764 """<b>Mark as good</b>"""
788 """<p>This marks a selectable changeset as good.</p>""" 765 """<p>This marks a selectable changeset as good.</p>"""
789 )) 766 ))
790 self.hgBisectGoodAct.triggered[()].connect(self.__hgBisectGood) 767 self.hgBisectGoodAct.triggered.connect(self.__hgBisectGood)
791 self.actions.append(self.hgBisectGoodAct) 768 self.actions.append(self.hgBisectGoodAct)
792 769
793 self.hgBisectBadAct = E5Action( 770 self.hgBisectBadAct = E5Action(
794 self.trUtf8('Mark as "bad"'), 771 self.tr('Mark as "bad"'),
795 self.trUtf8('Mark as "bad"...'), 772 self.tr('Mark as "bad"...'),
796 0, 0, self, 'mercurial_bisect_bad') 773 0, 0, self, 'mercurial_bisect_bad')
797 self.hgBisectBadAct.setStatusTip(self.trUtf8( 774 self.hgBisectBadAct.setStatusTip(self.tr(
798 'Mark a selectable changeset as bad' 775 'Mark a selectable changeset as bad'
799 )) 776 ))
800 self.hgBisectBadAct.setWhatsThis(self.trUtf8( 777 self.hgBisectBadAct.setWhatsThis(self.tr(
801 """<b>Mark as bad</b>""" 778 """<b>Mark as bad</b>"""
802 """<p>This marks a selectable changeset as bad.</p>""" 779 """<p>This marks a selectable changeset as bad.</p>"""
803 )) 780 ))
804 self.hgBisectBadAct.triggered[()].connect(self.__hgBisectBad) 781 self.hgBisectBadAct.triggered.connect(self.__hgBisectBad)
805 self.actions.append(self.hgBisectBadAct) 782 self.actions.append(self.hgBisectBadAct)
806 783
807 self.hgBisectSkipAct = E5Action( 784 self.hgBisectSkipAct = E5Action(
808 self.trUtf8('Skip'), 785 self.tr('Skip'),
809 self.trUtf8('Skip...'), 786 self.tr('Skip...'),
810 0, 0, self, 'mercurial_bisect_skip') 787 0, 0, self, 'mercurial_bisect_skip')
811 self.hgBisectSkipAct.setStatusTip(self.trUtf8( 788 self.hgBisectSkipAct.setStatusTip(self.tr(
812 'Skip a selectable changeset' 789 'Skip a selectable changeset'
813 )) 790 ))
814 self.hgBisectSkipAct.setWhatsThis(self.trUtf8( 791 self.hgBisectSkipAct.setWhatsThis(self.tr(
815 """<b>Skip</b>""" 792 """<b>Skip</b>"""
816 """<p>This skips a selectable changeset.</p>""" 793 """<p>This skips a selectable changeset.</p>"""
817 )) 794 ))
818 self.hgBisectSkipAct.triggered[()].connect(self.__hgBisectSkip) 795 self.hgBisectSkipAct.triggered.connect(self.__hgBisectSkip)
819 self.actions.append(self.hgBisectSkipAct) 796 self.actions.append(self.hgBisectSkipAct)
820 797
821 self.hgBisectResetAct = E5Action( 798 self.hgBisectResetAct = E5Action(
822 self.trUtf8('Reset'), 799 self.tr('Reset'),
823 self.trUtf8('Reset'), 800 self.tr('Reset'),
824 0, 0, self, 'mercurial_bisect_reset') 801 0, 0, self, 'mercurial_bisect_reset')
825 self.hgBisectResetAct.setStatusTip(self.trUtf8( 802 self.hgBisectResetAct.setStatusTip(self.tr(
826 'Reset the bisect search data' 803 'Reset the bisect search data'
827 )) 804 ))
828 self.hgBisectResetAct.setWhatsThis(self.trUtf8( 805 self.hgBisectResetAct.setWhatsThis(self.tr(
829 """<b>Reset</b>""" 806 """<b>Reset</b>"""
830 """<p>This resets the bisect search data.</p>""" 807 """<p>This resets the bisect search data.</p>"""
831 )) 808 ))
832 self.hgBisectResetAct.triggered[()].connect(self.__hgBisectReset) 809 self.hgBisectResetAct.triggered.connect(self.__hgBisectReset)
833 self.actions.append(self.hgBisectResetAct) 810 self.actions.append(self.hgBisectResetAct)
834 811
835 self.hgBackoutAct = E5Action( 812 self.hgBackoutAct = E5Action(
836 self.trUtf8('Back out changeset'), 813 self.tr('Back out changeset'),
837 self.trUtf8('Back out changeset'), 814 self.tr('Back out changeset'),
838 0, 0, self, 'mercurial_backout') 815 0, 0, self, 'mercurial_backout')
839 self.hgBackoutAct.setStatusTip(self.trUtf8( 816 self.hgBackoutAct.setStatusTip(self.tr(
840 'Back out changes of an earlier changeset' 817 'Back out changes of an earlier changeset'
841 )) 818 ))
842 self.hgBackoutAct.setWhatsThis(self.trUtf8( 819 self.hgBackoutAct.setWhatsThis(self.tr(
843 """<b>Back out changeset</b>""" 820 """<b>Back out changeset</b>"""
844 """<p>This backs out changes of an earlier changeset.</p>""" 821 """<p>This backs out changes of an earlier changeset.</p>"""
845 )) 822 ))
846 self.hgBackoutAct.triggered[()].connect(self.__hgBackout) 823 self.hgBackoutAct.triggered.connect(self.__hgBackout)
847 self.actions.append(self.hgBackoutAct) 824 self.actions.append(self.hgBackoutAct)
848 825
849 self.hgRollbackAct = E5Action( 826 self.hgRollbackAct = E5Action(
850 self.trUtf8('Rollback last transaction'), 827 self.tr('Rollback last transaction'),
851 self.trUtf8('Rollback last transaction'), 828 self.tr('Rollback last transaction'),
852 0, 0, self, 'mercurial_rollback') 829 0, 0, self, 'mercurial_rollback')
853 self.hgRollbackAct.setStatusTip(self.trUtf8( 830 self.hgRollbackAct.setStatusTip(self.tr(
854 'Rollback the last transaction' 831 'Rollback the last transaction'
855 )) 832 ))
856 self.hgRollbackAct.setWhatsThis(self.trUtf8( 833 self.hgRollbackAct.setWhatsThis(self.tr(
857 """<b>Rollback last transaction</b>""" 834 """<b>Rollback last transaction</b>"""
858 """<p>This performs a rollback of the last transaction.""" 835 """<p>This performs a rollback of the last transaction."""
859 """ Transactions are used to encapsulate the effects of all""" 836 """ Transactions are used to encapsulate the effects of all"""
860 """ commands that create new changesets or propagate existing""" 837 """ commands that create new changesets or propagate existing"""
861 """ changesets into a repository. For example, the following""" 838 """ changesets into a repository. For example, the following"""
868 """<li>unbundle</li>""" 845 """<li>unbundle</li>"""
869 """</ul>""" 846 """</ul>"""
870 """</p><p><strong>This command is dangerous. Please use with""" 847 """</p><p><strong>This command is dangerous. Please use with"""
871 """ care. </strong></p>""" 848 """ care. </strong></p>"""
872 )) 849 ))
873 self.hgRollbackAct.triggered[()].connect(self.__hgRollback) 850 self.hgRollbackAct.triggered.connect(self.__hgRollback)
874 self.actions.append(self.hgRollbackAct) 851 self.actions.append(self.hgRollbackAct)
875 852
876 self.hgServeAct = E5Action( 853 self.hgServeAct = E5Action(
877 self.trUtf8('Serve project repository'), 854 self.tr('Serve project repository'),
878 self.trUtf8('Serve project repository...'), 855 self.tr('Serve project repository...'),
879 0, 0, self, 'mercurial_serve') 856 0, 0, self, 'mercurial_serve')
880 self.hgServeAct.setStatusTip(self.trUtf8( 857 self.hgServeAct.setStatusTip(self.tr(
881 'Serve the project repository' 858 'Serve the project repository'
882 )) 859 ))
883 self.hgServeAct.setWhatsThis(self.trUtf8( 860 self.hgServeAct.setWhatsThis(self.tr(
884 """<b>Serve project repository</b>""" 861 """<b>Serve project repository</b>"""
885 """<p>This serves the project repository.</p>""" 862 """<p>This serves the project repository.</p>"""
886 )) 863 ))
887 self.hgServeAct.triggered[()].connect(self.__hgServe) 864 self.hgServeAct.triggered.connect(self.__hgServe)
888 self.actions.append(self.hgServeAct) 865 self.actions.append(self.hgServeAct)
889 866
890 self.hgImportAct = E5Action( 867 self.hgImportAct = E5Action(
891 self.trUtf8('Import Patch'), 868 self.tr('Import Patch'),
892 self.trUtf8('Import Patch...'), 869 self.tr('Import Patch...'),
893 0, 0, self, 'mercurial_import') 870 0, 0, self, 'mercurial_import')
894 self.hgImportAct.setStatusTip(self.trUtf8( 871 self.hgImportAct.setStatusTip(self.tr(
895 'Import a patch from a patch file' 872 'Import a patch from a patch file'
896 )) 873 ))
897 self.hgImportAct.setWhatsThis(self.trUtf8( 874 self.hgImportAct.setWhatsThis(self.tr(
898 """<b>Import Patch</b>""" 875 """<b>Import Patch</b>"""
899 """<p>This imports a patch from a patch file into the""" 876 """<p>This imports a patch from a patch file into the"""
900 """ project.</p>""" 877 """ project.</p>"""
901 )) 878 ))
902 self.hgImportAct.triggered[()].connect(self.__hgImport) 879 self.hgImportAct.triggered.connect(self.__hgImport)
903 self.actions.append(self.hgImportAct) 880 self.actions.append(self.hgImportAct)
904 881
905 self.hgExportAct = E5Action( 882 self.hgExportAct = E5Action(
906 self.trUtf8('Export Patches'), 883 self.tr('Export Patches'),
907 self.trUtf8('Export Patches...'), 884 self.tr('Export Patches...'),
908 0, 0, self, 'mercurial_export') 885 0, 0, self, 'mercurial_export')
909 self.hgExportAct.setStatusTip(self.trUtf8( 886 self.hgExportAct.setStatusTip(self.tr(
910 'Export revisions to patch files' 887 'Export revisions to patch files'
911 )) 888 ))
912 self.hgExportAct.setWhatsThis(self.trUtf8( 889 self.hgExportAct.setWhatsThis(self.tr(
913 """<b>Export Patches</b>""" 890 """<b>Export Patches</b>"""
914 """<p>This exports revisions of the project to patch files.</p>""" 891 """<p>This exports revisions of the project to patch files.</p>"""
915 )) 892 ))
916 self.hgExportAct.triggered[()].connect(self.__hgExport) 893 self.hgExportAct.triggered.connect(self.__hgExport)
917 self.actions.append(self.hgExportAct) 894 self.actions.append(self.hgExportAct)
918 895
919 self.hgPhaseAct = E5Action( 896 self.hgPhaseAct = E5Action(
920 self.trUtf8('Change Phase'), 897 self.tr('Change Phase'),
921 self.trUtf8('Change Phase...'), 898 self.tr('Change Phase...'),
922 0, 0, self, 'mercurial_change_phase') 899 0, 0, self, 'mercurial_change_phase')
923 self.hgPhaseAct.setStatusTip(self.trUtf8( 900 self.hgPhaseAct.setStatusTip(self.tr(
924 'Change the phase of revisions' 901 'Change the phase of revisions'
925 )) 902 ))
926 self.hgPhaseAct.setWhatsThis(self.trUtf8( 903 self.hgPhaseAct.setWhatsThis(self.tr(
927 """<b>Change Phase</b>""" 904 """<b>Change Phase</b>"""
928 """<p>This changes the phase of revisions.</p>""" 905 """<p>This changes the phase of revisions.</p>"""
929 )) 906 ))
930 self.hgPhaseAct.triggered[()].connect(self.__hgPhase) 907 self.hgPhaseAct.triggered.connect(self.__hgPhase)
931 self.actions.append(self.hgPhaseAct) 908 self.actions.append(self.hgPhaseAct)
932 909
933 self.hgGraftAct = E5Action( 910 self.hgGraftAct = E5Action(
934 self.trUtf8('Copy Changesets'), 911 self.tr('Copy Changesets'),
935 UI.PixmapCache.getIcon("vcsGraft.png"), 912 UI.PixmapCache.getIcon("vcsGraft.png"),
936 self.trUtf8('Copy Changesets'), 913 self.tr('Copy Changesets'),
937 0, 0, self, 'mercurial_graft') 914 0, 0, self, 'mercurial_graft')
938 self.hgGraftAct.setStatusTip(self.trUtf8( 915 self.hgGraftAct.setStatusTip(self.tr(
939 'Copies changesets from another branch' 916 'Copies changesets from another branch'
940 )) 917 ))
941 self.hgGraftAct.setWhatsThis(self.trUtf8( 918 self.hgGraftAct.setWhatsThis(self.tr(
942 """<b>Copy Changesets</b>""" 919 """<b>Copy Changesets</b>"""
943 """<p>This copies changesets from another branch on top of the""" 920 """<p>This copies changesets from another branch on top of the"""
944 """ current working directory with the user, date and""" 921 """ current working directory with the user, date and"""
945 """ description of the original changeset.</p>""" 922 """ description of the original changeset.</p>"""
946 )) 923 ))
947 self.hgGraftAct.triggered[()].connect(self.__hgGraft) 924 self.hgGraftAct.triggered.connect(self.__hgGraft)
948 self.actions.append(self.hgGraftAct) 925 self.actions.append(self.hgGraftAct)
949 926
950 self.hgGraftContinueAct = E5Action( 927 self.hgGraftContinueAct = E5Action(
951 self.trUtf8('Continue Copying Session'), 928 self.tr('Continue Copying Session'),
952 self.trUtf8('Continue Copying Session'), 929 self.tr('Continue Copying Session'),
953 0, 0, self, 'mercurial_graft_continue') 930 0, 0, self, 'mercurial_graft_continue')
954 self.hgGraftContinueAct.setStatusTip(self.trUtf8( 931 self.hgGraftContinueAct.setStatusTip(self.tr(
955 'Continue the last copying session after conflicts were resolved' 932 'Continue the last copying session after conflicts were resolved'
956 )) 933 ))
957 self.hgGraftContinueAct.setWhatsThis(self.trUtf8( 934 self.hgGraftContinueAct.setWhatsThis(self.tr(
958 """<b>Continue Copying Session</b>""" 935 """<b>Continue Copying Session</b>"""
959 """<p>This continues the last copying session after conflicts""" 936 """<p>This continues the last copying session after conflicts"""
960 """ were resolved.</p>""" 937 """ were resolved.</p>"""
961 )) 938 ))
962 self.hgGraftContinueAct.triggered[()].connect(self.__hgGraftContinue) 939 self.hgGraftContinueAct.triggered.connect(self.__hgGraftContinue)
963 self.actions.append(self.hgGraftContinueAct) 940 self.actions.append(self.hgGraftContinueAct)
964 941
965 self.hgAddSubrepoAct = E5Action( 942 self.hgAddSubrepoAct = E5Action(
966 self.trUtf8('Add'), 943 self.tr('Add'),
967 UI.PixmapCache.getIcon("vcsAdd.png"), 944 UI.PixmapCache.getIcon("vcsAdd.png"),
968 self.trUtf8('Add...'), 945 self.tr('Add...'),
969 0, 0, self, 'mercurial_add_subrepo') 946 0, 0, self, 'mercurial_add_subrepo')
970 self.hgAddSubrepoAct.setStatusTip(self.trUtf8( 947 self.hgAddSubrepoAct.setStatusTip(self.tr(
971 'Add a sub-repository' 948 'Add a sub-repository'
972 )) 949 ))
973 self.hgAddSubrepoAct.setWhatsThis(self.trUtf8( 950 self.hgAddSubrepoAct.setWhatsThis(self.tr(
974 """<b>Add...</b>""" 951 """<b>Add...</b>"""
975 """<p>Add a sub-repository to the project.</p>""" 952 """<p>Add a sub-repository to the project.</p>"""
976 )) 953 ))
977 self.hgAddSubrepoAct.triggered[()].connect(self.__hgAddSubrepository) 954 self.hgAddSubrepoAct.triggered.connect(self.__hgAddSubrepository)
978 self.actions.append(self.hgAddSubrepoAct) 955 self.actions.append(self.hgAddSubrepoAct)
979 956
980 self.hgRemoveSubreposAct = E5Action( 957 self.hgRemoveSubreposAct = E5Action(
981 self.trUtf8('Remove'), 958 self.tr('Remove'),
982 UI.PixmapCache.getIcon("vcsRemove.png"), 959 UI.PixmapCache.getIcon("vcsRemove.png"),
983 self.trUtf8('Remove...'), 960 self.tr('Remove...'),
984 0, 0, self, 'mercurial_remove_subrepos') 961 0, 0, self, 'mercurial_remove_subrepos')
985 self.hgRemoveSubreposAct.setStatusTip(self.trUtf8( 962 self.hgRemoveSubreposAct.setStatusTip(self.tr(
986 'Remove sub-repositories' 963 'Remove sub-repositories'
987 )) 964 ))
988 self.hgRemoveSubreposAct.setWhatsThis(self.trUtf8( 965 self.hgRemoveSubreposAct.setWhatsThis(self.tr(
989 """<b>Remove...</b>""" 966 """<b>Remove...</b>"""
990 """<p>Remove sub-repositories from the project.</p>""" 967 """<p>Remove sub-repositories from the project.</p>"""
991 )) 968 ))
992 self.hgRemoveSubreposAct.triggered[()].connect( 969 self.hgRemoveSubreposAct.triggered.connect(
993 self.__hgRemoveSubrepositories) 970 self.__hgRemoveSubrepositories)
994 self.actions.append(self.hgRemoveSubreposAct) 971 self.actions.append(self.hgRemoveSubreposAct)
995 972
996 self.hgArchiveAct = E5Action( 973 self.hgArchiveAct = E5Action(
997 self.trUtf8('Create unversioned archive'), 974 self.tr('Create unversioned archive'),
998 UI.PixmapCache.getIcon("vcsExport.png"), 975 UI.PixmapCache.getIcon("vcsExport.png"),
999 self.trUtf8('Create unversioned archive...'), 976 self.tr('Create unversioned archive...'),
1000 0, 0, self, 'mercurial_archive') 977 0, 0, self, 'mercurial_archive')
1001 self.hgArchiveAct.setStatusTip(self.trUtf8( 978 self.hgArchiveAct.setStatusTip(self.tr(
1002 'Create an unversioned archive from the repository' 979 'Create an unversioned archive from the repository'
1003 )) 980 ))
1004 self.hgArchiveAct.setWhatsThis(self.trUtf8( 981 self.hgArchiveAct.setWhatsThis(self.tr(
1005 """<b>Create unversioned archive...</b>""" 982 """<b>Create unversioned archive...</b>"""
1006 """<p>This creates an unversioned archive from the""" 983 """<p>This creates an unversioned archive from the"""
1007 """ repository.</p>""" 984 """ repository.</p>"""
1008 )) 985 ))
1009 self.hgArchiveAct.triggered[()].connect(self.__hgArchive) 986 self.hgArchiveAct.triggered.connect(self.__hgArchive)
1010 self.actions.append(self.hgArchiveAct) 987 self.actions.append(self.hgArchiveAct)
1011 988
989 def __checkActions(self):
990 """
991 Private slot to set the enabled status of actions.
992 """
993 self.hgPullAct.setEnabled(self.vcs.canPull())
994 self.hgIncomingAct.setEnabled(self.vcs.canPull())
995
996 self.hgPushAct.setEnabled(self.vcs.canPush())
997 self.hgPushBranchAct.setEnabled(self.vcs.canPush())
998 self.hgPushForcedAct.setEnabled(self.vcs.canPush())
999 self.hgOutgoingAct.setEnabled(self.vcs.canPush())
1000
1012 def initMenu(self, menu): 1001 def initMenu(self, menu):
1013 """ 1002 """
1014 Public method to generate the VCS menu. 1003 Public method to generate the VCS menu.
1015 1004
1016 @param menu reference to the menu to be populated (QMenu) 1005 @param menu reference to the menu to be populated (QMenu)
1017 """ 1006 """
1018 menu.clear() 1007 menu.clear()
1019 1008
1020 self.subMenus = [] 1009 self.subMenus = []
1021 1010
1022 adminMenu = QMenu(self.trUtf8("Repository Administration"), menu) 1011 adminMenu = QMenu(self.tr("Administration"), menu)
1023 adminMenu.setTearOffEnabled(True) 1012 adminMenu.setTearOffEnabled(True)
1024 adminMenu.addAction(self.hgHeadsAct) 1013 adminMenu.addAction(self.hgHeadsAct)
1025 adminMenu.addAction(self.hgParentsAct) 1014 adminMenu.addAction(self.hgParentsAct)
1026 adminMenu.addAction(self.hgTipAct) 1015 adminMenu.addAction(self.hgTipAct)
1027 adminMenu.addAction(self.hgShowBranchAct) 1016 adminMenu.addAction(self.hgShowBranchAct)
1040 adminMenu.addAction(self.hgRollbackAct) 1029 adminMenu.addAction(self.hgRollbackAct)
1041 adminMenu.addSeparator() 1030 adminMenu.addSeparator()
1042 adminMenu.addAction(self.hgVerifyAct) 1031 adminMenu.addAction(self.hgVerifyAct)
1043 self.subMenus.append(adminMenu) 1032 self.subMenus.append(adminMenu)
1044 1033
1045 specialsMenu = QMenu(self.trUtf8("Specials"), menu) 1034 specialsMenu = QMenu(self.tr("Specials"), menu)
1046 specialsMenu.setTearOffEnabled(True) 1035 specialsMenu.setTearOffEnabled(True)
1047 specialsMenu.addAction(self.hgArchiveAct) 1036 specialsMenu.addAction(self.hgArchiveAct)
1048 specialsMenu.addSeparator() 1037 specialsMenu.addSeparator()
1049 specialsMenu.addAction(self.hgPushForcedAct) 1038 specialsMenu.addAction(self.hgPushForcedAct)
1050 specialsMenu.addSeparator() 1039 specialsMenu.addSeparator()
1051 specialsMenu.addAction(self.hgServeAct) 1040 specialsMenu.addAction(self.hgServeAct)
1052 self.subMenus.append(specialsMenu) 1041 self.subMenus.append(specialsMenu)
1053 1042
1054 bundleMenu = QMenu(self.trUtf8("Changegroup Management"), menu) 1043 bundleMenu = QMenu(self.tr("Changegroup Management"), menu)
1055 bundleMenu.setTearOffEnabled(True) 1044 bundleMenu.setTearOffEnabled(True)
1056 bundleMenu.addAction(self.hgBundleAct) 1045 bundleMenu.addAction(self.hgBundleAct)
1057 bundleMenu.addAction(self.hgIdentifyBundleAct)
1058 bundleMenu.addAction(self.hgPreviewBundleAct) 1046 bundleMenu.addAction(self.hgPreviewBundleAct)
1059 bundleMenu.addAction(self.hgUnbundleAct) 1047 bundleMenu.addAction(self.hgUnbundleAct)
1060 self.subMenus.append(bundleMenu) 1048 self.subMenus.append(bundleMenu)
1061 1049
1062 patchMenu = QMenu(self.trUtf8("Patch Management"), menu) 1050 patchMenu = QMenu(self.tr("Patch Management"), menu)
1063 patchMenu.setTearOffEnabled(True) 1051 patchMenu.setTearOffEnabled(True)
1064 patchMenu.addAction(self.hgImportAct) 1052 patchMenu.addAction(self.hgImportAct)
1065 patchMenu.addAction(self.hgExportAct) 1053 patchMenu.addAction(self.hgExportAct)
1066 self.subMenus.append(patchMenu) 1054 self.subMenus.append(patchMenu)
1067 1055
1068 bisectMenu = QMenu(self.trUtf8("Bisect"), menu) 1056 bisectMenu = QMenu(self.tr("Bisect"), menu)
1069 bisectMenu.setTearOffEnabled(True) 1057 bisectMenu.setTearOffEnabled(True)
1070 bisectMenu.addAction(self.hgBisectGoodAct) 1058 bisectMenu.addAction(self.hgBisectGoodAct)
1071 bisectMenu.addAction(self.hgBisectBadAct) 1059 bisectMenu.addAction(self.hgBisectBadAct)
1072 bisectMenu.addAction(self.hgBisectSkipAct) 1060 bisectMenu.addAction(self.hgBisectSkipAct)
1073 bisectMenu.addAction(self.hgBisectResetAct) 1061 bisectMenu.addAction(self.hgBisectResetAct)
1074 self.subMenus.append(bisectMenu) 1062 self.subMenus.append(bisectMenu)
1075 1063
1076 self.__extensionsMenu = QMenu(self.trUtf8("Extensions"), menu) 1064 self.__extensionsMenu = QMenu(self.tr("Extensions"), menu)
1077 self.__extensionsMenu.setTearOffEnabled(True) 1065 self.__extensionsMenu.setTearOffEnabled(True)
1078 self.__extensionsMenu.aboutToShow.connect(self.__showExtensionMenu) 1066 self.__extensionsMenu.aboutToShow.connect(self.__showExtensionMenu)
1079 self.extensionMenus = {} 1067 self.extensionMenus = {}
1080 for extensionMenuTitle in sorted(self.__extensionMenuTitles): 1068 for extensionMenuTitle in sorted(self.__extensionMenuTitles):
1081 extensionName = self.__extensionMenuTitles[extensionMenuTitle] 1069 extensionName = self.__extensionMenuTitles[extensionMenuTitle]
1083 self.__extensions[extensionName].initMenu( 1071 self.__extensions[extensionName].initMenu(
1084 self.__extensionsMenu)) 1072 self.__extensionsMenu))
1085 self.vcs.activeExtensionsChanged.connect(self.__showExtensionMenu) 1073 self.vcs.activeExtensionsChanged.connect(self.__showExtensionMenu)
1086 1074
1087 if self.vcs.version >= (2, 0): 1075 if self.vcs.version >= (2, 0):
1088 graftMenu = QMenu(self.trUtf8("Graft"), menu) 1076 graftMenu = QMenu(self.tr("Graft"), menu)
1089 graftMenu.setIcon(UI.PixmapCache.getIcon("vcsGraft.png")) 1077 graftMenu.setIcon(UI.PixmapCache.getIcon("vcsGraft.png"))
1090 graftMenu.setTearOffEnabled(True) 1078 graftMenu.setTearOffEnabled(True)
1091 graftMenu.addAction(self.hgGraftAct) 1079 graftMenu.addAction(self.hgGraftAct)
1092 graftMenu.addAction(self.hgGraftContinueAct) 1080 graftMenu.addAction(self.hgGraftContinueAct)
1093 else: 1081 else:
1094 graftMenu = None 1082 graftMenu = None
1095 1083
1096 if self.vcs.version >= (1, 8): 1084 if self.vcs.version >= (1, 8):
1097 subrepoMenu = QMenu(self.trUtf8("Sub-Repository"), menu) 1085 subrepoMenu = QMenu(self.tr("Sub-Repository"), menu)
1098 subrepoMenu.setTearOffEnabled(True) 1086 subrepoMenu.setTearOffEnabled(True)
1099 subrepoMenu.addAction(self.hgAddSubrepoAct) 1087 subrepoMenu.addAction(self.hgAddSubrepoAct)
1100 subrepoMenu.addAction(self.hgRemoveSubreposAct) 1088 subrepoMenu.addAction(self.hgRemoveSubreposAct)
1101 else: 1089 else:
1102 subrepoMenu = None 1090 subrepoMenu = None
1166 menu.addAction(self.vcsCommandAct) 1154 menu.addAction(self.vcsCommandAct)
1167 menu.addSeparator() 1155 menu.addSeparator()
1168 menu.addMenu(adminMenu) 1156 menu.addMenu(adminMenu)
1169 menu.addMenu(specialsMenu) 1157 menu.addMenu(specialsMenu)
1170 menu.addSeparator() 1158 menu.addSeparator()
1171 menu.addAction(self.vcsPropsAct)
1172 menu.addSeparator()
1173 menu.addAction(self.hgEditUserConfigAct) 1159 menu.addAction(self.hgEditUserConfigAct)
1174 menu.addAction(self.hgConfigAct) 1160 menu.addAction(self.hgConfigAct)
1175 1161
1162 def showMenu(self):
1163 """
1164 Public slot called before the vcs menu is shown.
1165 """
1166 super(HgProjectHelper, self).showMenu()
1167
1168 self.__checkActions()
1169
1176 def shutdown(self): 1170 def shutdown(self):
1177 """ 1171 """
1178 Public method to perform shutdown actions. 1172 Public method to perform shutdown actions.
1179 """ 1173 """
1180 self.vcs.activeExtensionsChanged.disconnect(self.__showExtensionMenu) 1174 self.vcs.activeExtensionsChanged.disconnect(self.__showExtensionMenu)
1175 self.vcs.iniFileChanged.disconnect(self.__checkActions)
1181 1176
1182 # close torn off sub menus 1177 # close torn off sub menus
1183 for menu in self.subMenus: 1178 for menu in self.subMenus:
1184 if menu.isTearOffMenuVisible(): 1179 if menu.isTearOffMenuVisible():
1185 menu.hideTearOffMenu() 1180 menu.hideTearOffMenu()
1186 1181
1187 # close torn off extension menus 1182 # close torn off extension menus
1188 for extensionName in self.extensionMenus: 1183 for extensionName in self.extensionMenus:
1184 self.__extensions[extensionName].shutdown()
1189 menu = self.extensionMenus[extensionName].menu() 1185 menu = self.extensionMenus[extensionName].menu()
1190 if menu.isTearOffMenuVisible(): 1186 if menu.isTearOffMenuVisible():
1191 menu.hideTearOffMenu() 1187 menu.hideTearOffMenu()
1192 1188
1193 if self.__extensionsMenu.isTearOffMenuVisible(): 1189 if self.__extensionsMenu.isTearOffMenuVisible():
1209 """ 1205 """
1210 Private slot used to perform a hg diff with the selection of revisions. 1206 Private slot used to perform a hg diff with the selection of revisions.
1211 """ 1207 """
1212 self.vcs.hgExtendedDiff(self.project.ppath) 1208 self.vcs.hgExtendedDiff(self.project.ppath)
1213 1209
1214 def __hgLogBrowser(self):
1215 """
1216 Private slot used to browse the log of the current project.
1217 """
1218 self.vcs.hgLogBrowser(self.project.ppath)
1219
1220 def __hgIncoming(self): 1210 def __hgIncoming(self):
1221 """ 1211 """
1222 Private slot used to show the log of changes coming into the 1212 Private slot used to show the log of changes coming into the
1223 repository. 1213 repository.
1224 """ 1214 """
1237 """ 1227 """
1238 shouldReopen = self.vcs.hgPull(self.project.ppath) 1228 shouldReopen = self.vcs.hgPull(self.project.ppath)
1239 if shouldReopen: 1229 if shouldReopen:
1240 res = E5MessageBox.yesNo( 1230 res = E5MessageBox.yesNo(
1241 self.parent(), 1231 self.parent(),
1242 self.trUtf8("Pull"), 1232 self.tr("Pull"),
1243 self.trUtf8("""The project should be reread. Do this now?"""), 1233 self.tr("""The project should be reread. Do this now?"""),
1244 yesDefault=True) 1234 yesDefault=True)
1245 if res: 1235 if res:
1246 self.project.reopenProject() 1236 self.project.reopenProject()
1247 1237
1248 def __hgPush(self): 1238 def __hgPush(self):
1386 """ 1376 """
1387 Private slot used to preview a changegroup file. 1377 Private slot used to preview a changegroup file.
1388 """ 1378 """
1389 self.vcs.hgPreviewBundle(self.project.ppath) 1379 self.vcs.hgPreviewBundle(self.project.ppath)
1390 1380
1391 def __hgIdentifyBundle(self):
1392 """
1393 Private slot used to identify a changegroup file.
1394 """
1395 self.vcs.hgIdentifyBundle(self.project.ppath)
1396
1397 def __hgUnbundle(self): 1381 def __hgUnbundle(self):
1398 """ 1382 """
1399 Private slot used to apply changegroup files. 1383 Private slot used to apply changegroup files.
1400 """ 1384 """
1401 shouldReopen = self.vcs.hgUnbundle(self.project.ppath) 1385 shouldReopen = self.vcs.hgUnbundle(self.project.ppath)
1402 if shouldReopen: 1386 if shouldReopen:
1403 res = E5MessageBox.yesNo( 1387 res = E5MessageBox.yesNo(
1404 self.parent(), 1388 self.parent(),
1405 self.trUtf8("Apply changegroups"), 1389 self.tr("Apply changegroups"),
1406 self.trUtf8("""The project should be reread. Do this now?"""), 1390 self.tr("""The project should be reread. Do this now?"""),
1407 yesDefault=True) 1391 yesDefault=True)
1408 if res: 1392 if res:
1409 self.project.reopenProject() 1393 self.project.reopenProject()
1410 1394
1411 def __hgBisectGood(self): 1395 def __hgBisectGood(self):
1456 """ 1440 """
1457 shouldReopen = self.vcs.hgImport(self.project.ppath) 1441 shouldReopen = self.vcs.hgImport(self.project.ppath)
1458 if shouldReopen: 1442 if shouldReopen:
1459 res = E5MessageBox.yesNo( 1443 res = E5MessageBox.yesNo(
1460 self.parent(), 1444 self.parent(),
1461 self.trUtf8("Import Patch"), 1445 self.tr("Import Patch"),
1462 self.trUtf8("""The project should be reread. Do this now?"""), 1446 self.tr("""The project should be reread. Do this now?"""),
1463 yesDefault=True) 1447 yesDefault=True)
1464 if res: 1448 if res:
1465 self.project.reopenProject() 1449 self.project.reopenProject()
1466 1450
1467 def __hgExport(self): 1451 def __hgExport(self):
1476 """ 1460 """
1477 shouldReopen = self.vcs.hgRevert(self.project.ppath) 1461 shouldReopen = self.vcs.hgRevert(self.project.ppath)
1478 if shouldReopen: 1462 if shouldReopen:
1479 res = E5MessageBox.yesNo( 1463 res = E5MessageBox.yesNo(
1480 self.parent(), 1464 self.parent(),
1481 self.trUtf8("Revert Changes"), 1465 self.tr("Revert Changes"),
1482 self.trUtf8("""The project should be reread. Do this now?"""), 1466 self.tr("""The project should be reread. Do this now?"""),
1483 yesDefault=True) 1467 yesDefault=True)
1484 if res: 1468 if res:
1485 self.project.reopenProject() 1469 self.project.reopenProject()
1486 1470
1487 def __hgPhase(self): 1471 def __hgPhase(self):
1496 """ 1480 """
1497 shouldReopen = self.vcs.hgGraft(self.project.getProjectPath()) 1481 shouldReopen = self.vcs.hgGraft(self.project.getProjectPath())
1498 if shouldReopen: 1482 if shouldReopen:
1499 res = E5MessageBox.yesNo( 1483 res = E5MessageBox.yesNo(
1500 None, 1484 None,
1501 self.trUtf8("Copy Changesets"), 1485 self.tr("Copy Changesets"),
1502 self.trUtf8("""The project should be reread. Do this now?"""), 1486 self.tr("""The project should be reread. Do this now?"""),
1503 yesDefault=True) 1487 yesDefault=True)
1504 if res: 1488 if res:
1505 self.project.reopenProject() 1489 self.project.reopenProject()
1506 1490
1507 def __hgGraftContinue(self): 1491 def __hgGraftContinue(self):
1511 """ 1495 """
1512 shouldReopen = self.vcs.hgGraftContinue(self.project.getProjectPath()) 1496 shouldReopen = self.vcs.hgGraftContinue(self.project.getProjectPath())
1513 if shouldReopen: 1497 if shouldReopen:
1514 res = E5MessageBox.yesNo( 1498 res = E5MessageBox.yesNo(
1515 None, 1499 None,
1516 self.trUtf8("Copy Changesets (Continue)"), 1500 self.tr("Copy Changesets (Continue)"),
1517 self.trUtf8("""The project should be reread. Do this now?"""), 1501 self.tr("""The project should be reread. Do this now?"""),
1518 yesDefault=True) 1502 yesDefault=True)
1519 if res: 1503 if res:
1520 self.project.reopenProject() 1504 self.project.reopenProject()
1521 1505
1522 def __hgAddSubrepository(self): 1506 def __hgAddSubrepository(self):

eric ide

mercurial