src/eric7/Plugins/VcsPlugins/vcsMercurial/PurgeExtension/purge.py

branch
eric7
changeset 9209
b99e7fd55fd3
parent 8881
54e42bc2437a
child 9221
bf71ee032bb4
equal deleted inserted replaced
9208:3fc8dfeb6ebe 9209:b99e7fd55fd3
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2011 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the purge extension interface.
8 """
9
10 from PyQt6.QtWidgets import QDialog
11
12 from ..HgExtension import HgExtension
13 from ..HgDialog import HgDialog
14
15
16 class Purge(HgExtension):
17 """
18 Class implementing the purge extension interface.
19 """
20 def __init__(self, vcs):
21 """
22 Constructor
23
24 @param vcs reference to the Mercurial vcs object
25 """
26 super().__init__(vcs)
27
28 self.purgeListDialog = None
29
30 def shutdown(self):
31 """
32 Public method used to shutdown the purge interface.
33 """
34 if self.purgeListDialog is not None:
35 self.purgeListDialog.close()
36
37 def __getEntries(self, deleteAll):
38 """
39 Private method to get a list of files/directories being purged.
40
41 @param deleteAll flag indicating to delete all files including ignored
42 ones
43 @type bool
44 @return name of the current patch
45 @rtype str
46 """
47 purgeEntries = []
48
49 args = self.vcs.initCommand("purge")
50 args.append("--print")
51 if deleteAll:
52 args.append("--all")
53
54 client = self.vcs.getClient()
55 out, err = client.runcommand(args)
56 if out:
57 purgeEntries = out.strip().split()
58
59 return purgeEntries
60
61 def hgPurge(self, deleteAll=False):
62 """
63 Public method to purge files and directories not tracked by Mercurial.
64
65 @param deleteAll flag indicating to delete all files including ignored
66 ones
67 @type bool
68 """
69 if deleteAll:
70 title = self.tr("Purge All Files")
71 message = self.tr(
72 """Do really want to delete all files not tracked by"""
73 """ Mercurial (including ignored ones)?""")
74 else:
75 title = self.tr("Purge Files")
76 message = self.tr(
77 """Do really want to delete files not tracked by Mercurial?""")
78 entries = self.__getEntries(deleteAll)
79 from UI.DeleteFilesConfirmationDialog import (
80 DeleteFilesConfirmationDialog
81 )
82 dlg = DeleteFilesConfirmationDialog(None, title, message, entries)
83 if dlg.exec() == QDialog.DialogCode.Accepted:
84 args = self.vcs.initCommand("purge")
85 if deleteAll:
86 args.append("--all")
87 args.append("-v")
88
89 dia = HgDialog(title, self.vcs)
90 res = dia.startProcess(args)
91 if res:
92 dia.exec()
93
94 def hgPurgeList(self, deleteAll=False):
95 """
96 Public method to list files and directories not tracked by Mercurial.
97
98 @param deleteAll flag indicating to list all files including ignored
99 ones (boolean)
100 """
101 entries = self.__getEntries(deleteAll)
102 from .HgPurgeListDialog import HgPurgeListDialog
103 self.purgeListDialog = HgPurgeListDialog(entries)
104 self.purgeListDialog.show()

eric ide

mercurial