eric7/Plugins/VcsPlugins/vcsPySvn/SvnDialog.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) 2003 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a dialog to show the output of a pysvn action.
8 """
9
10 import pysvn
11
12 from PyQt5.QtCore import Qt
13 from PyQt5.QtWidgets import QDialog, QApplication, QDialogButtonBox
14
15 from .SvnConst import svnNotifyActionMap
16
17 from .SvnDialogMixin import SvnDialogMixin
18 from .Ui_SvnDialog import Ui_SvnDialog
19
20 import Preferences
21
22
23 class SvnDialog(QDialog, SvnDialogMixin, Ui_SvnDialog):
24 """
25 Class implementing a dialog to show the output of a pysvn action.
26 """
27 def __init__(self, text, command, pysvnClient, parent=None, log=""):
28 """
29 Constructor
30
31 @param text text to be shown by the label (string)
32 @param command svn command to be executed (display purposes only)
33 (string)
34 @param pysvnClient reference to the pysvn client object (pysvn.Client)
35 @param parent parent widget (QWidget)
36 @param log optional log message (string)
37 """
38 super().__init__(parent)
39 self.setupUi(self)
40 SvnDialogMixin.__init__(self, log)
41 self.setWindowFlags(Qt.WindowType.Window)
42
43 self.buttonBox.button(
44 QDialogButtonBox.StandardButton.Close).setEnabled(False)
45 self.buttonBox.button(
46 QDialogButtonBox.StandardButton.Cancel).setDefault(True)
47
48 self.outputGroup.setTitle(text)
49 self.errorGroup.hide()
50
51 pysvnClient.callback_cancel = self._clientCancelCallback
52
53 pysvnClient.callback_notify = self._clientNotifyCallback
54 pysvnClient.callback_get_login = self._clientLoginCallback
55 pysvnClient.callback_ssl_server_trust_prompt = (
56 self._clientSslServerTrustPromptCallback
57 )
58 pysvnClient.callback_get_log_message = self._clientLogCallback
59
60 self.__hasAddOrDelete = False
61
62 if command:
63 self.resultbox.append(command)
64 self.resultbox.append('')
65
66 self.show()
67 QApplication.processEvents()
68
69 def _clientNotifyCallback(self, eventDict):
70 """
71 Protected method called by the client to send events.
72
73 @param eventDict dictionary containing the notification event
74 """
75 msg = ""
76 if eventDict["action"] == pysvn.wc_notify_action.update_completed:
77 msg = self.tr("Revision {0}.\n").format(
78 eventDict["revision"].number)
79 elif (
80 eventDict["path"] != "" and
81 eventDict["action"] in svnNotifyActionMap and
82 svnNotifyActionMap[eventDict["action"]] is not None
83 ):
84 mime = (
85 eventDict["mime_type"] == "application/octet-stream" and
86 self.tr(" (binary)") or ""
87 )
88 msg = self.tr("{0} {1}{2}\n").format(
89 self.tr(svnNotifyActionMap[eventDict["action"]]),
90 eventDict["path"],
91 mime)
92 if (
93 '.epj' in eventDict["path"] or
94 '.e4p' in eventDict["path"]
95 ):
96 self.__hasAddOrDelete = True
97 if eventDict["action"] in [pysvn.wc_notify_action.add,
98 pysvn.wc_notify_action.commit_added,
99 pysvn.wc_notify_action.commit_deleted,
100 pysvn.wc_notify_action.delete,
101 pysvn.wc_notify_action.update_add,
102 pysvn.wc_notify_action.update_delete]:
103 self.__hasAddOrDelete = True
104 if msg:
105 self.showMessage(msg)
106
107 def showMessage(self, msg):
108 """
109 Public slot to show a message.
110
111 @param msg message to show (string)
112 """
113 self.resultbox.insertPlainText(msg)
114 self.resultbox.ensureCursorVisible()
115 QApplication.processEvents()
116
117 def showError(self, msg):
118 """
119 Public slot to show an error message.
120
121 @param msg error message to show (string)
122 """
123 self.errorGroup.show()
124 self.errors.insertPlainText(msg)
125 self.errors.ensureCursorVisible()
126 QApplication.processEvents()
127
128 def finish(self):
129 """
130 Public slot called when the process finished or the user pressed the
131 button.
132 """
133 self.buttonBox.button(
134 QDialogButtonBox.StandardButton.Close).setEnabled(True)
135 self.buttonBox.button(
136 QDialogButtonBox.StandardButton.Cancel).setEnabled(False)
137 self.buttonBox.button(
138 QDialogButtonBox.StandardButton.Close).setDefault(True)
139
140 self._cancel()
141
142 if Preferences.getVCS("AutoClose"):
143 self.accept()
144
145 def on_buttonBox_clicked(self, button):
146 """
147 Private slot called by a button of the button box clicked.
148
149 @param button button that was clicked (QAbstractButton)
150 """
151 if button == self.buttonBox.button(
152 QDialogButtonBox.StandardButton.Close
153 ):
154 self.close()
155 elif button == self.buttonBox.button(
156 QDialogButtonBox.StandardButton.Cancel
157 ):
158 self.finish()
159
160 def hasAddOrDelete(self):
161 """
162 Public method to check, if the last action contained an add or delete.
163
164 @return flag indicating the presence of an add or delete (boolean)
165 """
166 return self.__hasAddOrDelete

eric ide

mercurial