Corrected the remote file dialog with respect to selection of a directory.
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1
|
# -*- coding: utf-8 -*- |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3
|
# Copyright (c) 2024 Detlev Offenbach <detlev@die-offenbachs.de> |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4
|
# |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7
|
Module implementing a file dialog showing the file system of the eric-ide server. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10
|
import enum |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11
|
import fnmatch |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12
|
import re |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13
|
|
10561
be23a662d709
Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
14
|
from PyQt6.QtCore import QLocale, QPoint, Qt, pyqtSlot |
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15
|
from PyQt6.QtWidgets import ( |
10561
be23a662d709
Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
16
|
QAbstractItemView, |
be23a662d709
Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
17
|
QCompleter, |
be23a662d709
Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
18
|
QDialog, |
be23a662d709
Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
19
|
QInputDialog, |
be23a662d709
Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
20
|
QLineEdit, |
be23a662d709
Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
21
|
QMenu, |
be23a662d709
Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
22
|
QTreeWidgetItem, |
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25
|
from eric7.EricGui import EricPixmapCache |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26
|
from eric7.EricGui.EricFileIconProvider import EricFileIconProvider |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27
|
from eric7.EricWidgets import EricMessageBox |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28
|
from eric7.EricWidgets.EricApplication import ericApp |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29
|
from eric7.Globals import dataString |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30
|
from eric7.SystemUtilities import FileSystemUtilities |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32
|
from .Ui_EricServerFileDialog import Ui_EricServerFileDialog |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35
|
class AcceptMode(enum.Enum): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37
|
Class defining the dialog accept modes. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38
|
""" |
10561
be23a662d709
Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
39
|
|
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40
|
AcceptOpen = 0 |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41
|
AcceptSave = 1 |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44
|
class FileMode(enum.Enum): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46
|
Class defining what the user may select in the file dialog. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47
|
""" |
10561
be23a662d709
Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
48
|
|
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49
|
AnyFile = 0 |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50
|
ExistingFile = 1 |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51
|
Directory = 2 |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52
|
ExistingFiles = 3 |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53
|
|
10561
be23a662d709
Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
54
|
|
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55
|
class EricServerFileDialog(QDialog, Ui_EricServerFileDialog): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57
|
Class implementing a file dialog showing the file system of the eric-ide server. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60
|
IsDirectoryRole = Qt.ItemDataRole.UserRole |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61
|
|
10561
be23a662d709
Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
62
|
def __init__(self, parent=None, caption="", directory="", filter=""): # noqa: M132 |
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64
|
Constructor |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66
|
@param parent reference to the parent widget (defaults to None) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67
|
@type QWidget (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68
|
@param caption dialog title (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70
|
@param directory initial directory (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72
|
@param filter Qt file filter string (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75
|
super().__init__(parent) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76
|
self.setupUi(self) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78
|
# finish UI setup |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79
|
self.backButton.setIcon(EricPixmapCache.getIcon("1leftarrow")) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80
|
self.forwardButton.setIcon(EricPixmapCache.getIcon("1rightarrow")) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81
|
self.upButton.setIcon(EricPixmapCache.getIcon("1uparrow")) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82
|
self.newDirButton.setIcon(EricPixmapCache.getIcon("dirNew")) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83
|
self.reloadButton.setIcon(EricPixmapCache.getIcon("reload")) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84
|
self.cancelButton.setIcon(EricPixmapCache.getIcon("dialog-cancel")) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86
|
self.setWindowTitle(caption) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88
|
self.__iconProvider = EricFileIconProvider() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90
|
self.__nameCompleter = QCompleter() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91
|
self.__nameCompleter.setModel(self.listing.model()) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92
|
self.__nameCompleter.setCompletionColumn(0) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93
|
self.__nameCompleter.activated.connect(self.__nameCompleterActivated) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94
|
self.nameEdit.setCompleter(self.__nameCompleter) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96
|
self.__contextMenu = QMenu(self) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98
|
self.__fsInterface = ericApp().getObject("EricServer").getServiceInterface( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99
|
"FileSystem" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102
|
# set some default values |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103
|
self.__fileMode = FileMode.ExistingFile |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104
|
self.__dirsOnly = False |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105
|
self.__acceptMode = AcceptMode.AcceptOpen |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106
|
self.__showHidden = False |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107
|
self.__sep = "/" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108
|
self.__filters = [] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110
|
self.__history = [] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111
|
self.__currentHistoryIndex = -1 # empty history |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112
|
self.__updateHistoryButtons() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114
|
self.__filenameCache = [] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115
|
self.__directoryCache = [] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116
|
self.__selectedDirectory = None |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118
|
self.setNameFilters(filter.split(";;")) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120
|
self.reloadButton.clicked.connect(self.__reload) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121
|
self.cancelButton.clicked.connect(self.reject) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123
|
self.treeCombo.currentTextChanged.connect(self.setDirectory) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125
|
self.setDirectory(FileSystemUtilities.plainFileName(directory)) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127
|
def acceptMode(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129
|
Public method to get the accept mode of the dialog. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131
|
@return accept mode |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132
|
@rtype AcceptMode |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134
|
return self.__acceptMode |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136
|
def setAcceptMode(self, mode): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138
|
Public method to set the accept mode of the dialog. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140
|
@param mode accept mode |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141
|
@type AcceptMode |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143
|
self.__acceptMode = mode |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145
|
self.__updateOkButton() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147
|
def fileMode(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149
|
Public method to get the current file mode of the dialog. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151
|
@return file mode |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152
|
@rtype FileMode |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154
|
return self.__fileMode |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156
|
def setFileMode(self, mode): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158
|
Public method to set the file mode of the dialog. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160
|
@param mode file mode |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161
|
@type FileMode |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163
|
self.__fileMode = mode |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165
|
self.listing.clearSelection() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166
|
if mode == FileMode.ExistingFiles: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167
|
self.listing.setSelectionMode( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168
|
QAbstractItemView.SelectionMode.ExtendedSelection |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171
|
self.listing.setSelectionMode( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172
|
QAbstractItemView.SelectionMode.SingleSelection |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174
|
|
10590
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
175
|
if mode == FileMode.Directory: |
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
176
|
self.setNameFilters([self.tr("Directories")]) |
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
177
|
|
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178
|
self.__updateOkButton() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180
|
def setNameFilters(self, filters): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182
|
Public method to set the list of file/directory name filters. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184
|
@param filters list of filter expressions |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185
|
("filter_name (pattern1 ... patternN)") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186
|
@type list of str |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187
|
""" |
10590
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
188
|
self.__filters = [] |
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
189
|
for f in filters: |
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
190
|
if " (" in f and ")" in f: |
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
191
|
self.__filters.append(f.split(" (", 1)[1].split(")", 1)[0].split()) |
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
192
|
elif f: |
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
193
|
self.__filters.append(f) |
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195
|
self.filterCombo.clear() |
10590
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
196
|
self.filterCombo.addItems([f for f in filters if f]) |
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197
|
|
10561
be23a662d709
Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
198
|
def setNameFilter(self, filter): # noqa: M132 |
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200
|
Public method to set the current name filter. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202
|
@param filter filter text to make current |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203
|
@type str |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
204
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205
|
self.filterCombo.setCurrentText(filter) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207
|
def setDirectoriesOnly(self, dirsOnly): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209
|
Public method to set a flag to just show directories. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211
|
@param dirsOnly flag indicating to just show directories |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
212
|
@type bool |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214
|
self.__dirsOnly = dirsOnly |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216
|
filters = self.__filters[self.filterCombo.currentIndex()] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217
|
self.__filterList(filters) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
219
|
def __addToHistory(self, entry): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221
|
Private method to add a directory to the history list. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223
|
@param entry name of the directory to be added |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
224
|
@type str |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226
|
try: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227
|
# is in the history already? |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
228
|
index = self.__history.index(entry) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229
|
self.__currentHistoryIndex = index |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
230
|
except ValueError: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
231
|
# new entry |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
232
|
self.__history.append(entry) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
233
|
self.__currentHistoryIndex = len(self.__history) - 1 |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
235
|
self.__updateHistoryButtons() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
236
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
237
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
238
|
def __updateHistoryButtons(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
239
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
240
|
Private method to update the enabled state of the back and forward buttons. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
242
|
if not self.__history: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243
|
self.backButton.setEnabled(False) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244
|
self.forwardButton.setEnabled(False) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
245
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
246
|
self.backButton.setEnabled(self.__currentHistoryIndex > 0) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
247
|
self.forwardButton.setEnabled( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
248
|
self.__currentHistoryIndex < len(self.__history) - 1 |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
249
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
252
|
def on_backButton_clicked(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
253
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
254
|
Private slot to move back in history of visited directories. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
255
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
256
|
self.setDirectory(self.__history[self.__currentHistoryIndex - 1]) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
257
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
258
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
259
|
def on_forwardButton_clicked(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
260
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
261
|
Private slot to move forward in history of visited directories. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
262
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
263
|
self.setDirectory(self.__history[self.__currentHistoryIndex + 1]) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
264
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
265
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
266
|
def __updateUpButton(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
267
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
268
|
Private slot to update the enabled state of the 'Up' button. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
269
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
270
|
self.upButton.setEnabled( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
271
|
self.treeCombo.currentIndex() < self.treeCombo.count() - 1 |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
272
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
273
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
274
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
275
|
def on_upButton_clicked(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
276
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
277
|
Private slot to move up one level in the hierarchy. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
278
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
279
|
self.treeCombo.setCurrentIndex(self.treeCombo.currentIndex() + 1) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
280
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
281
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
282
|
def on_newDirButton_clicked(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
283
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
284
|
Private slot to create a new directory. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
285
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
286
|
newDir, ok = QInputDialog.getText( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
287
|
self, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
288
|
self.tr("New Directory"), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
289
|
self.tr("Enter the name for the new directory:"), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
290
|
QLineEdit.EchoMode.Normal, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
291
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
292
|
if ok and newDir: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
293
|
if newDir in self.__directoryCache or newDir in self.__filenameCache: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
294
|
EricMessageBox.warning( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
295
|
self, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
296
|
self.tr("New Directory"), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
297
|
self.tr( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
298
|
"<p>A file or directory with the name <b>{0}</b> exists" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
299
|
" already. Aborting...</p>" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
300
|
).format(newDir), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
301
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
302
|
return |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
303
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
304
|
ok, error = self.__fsInterface.mkdir(self.__getFullPath(newDir)) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
305
|
if ok: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
306
|
# refresh |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
307
|
self.__reload() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
308
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
309
|
EricMessageBox.critical( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
310
|
self, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
311
|
self.tr("New Directory"), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
312
|
self.tr( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
313
|
"<p>The directory <b>{0}</b> could not be created.</p>" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
314
|
"<p>Reason: {1}</p>" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
315
|
).format( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
316
|
self.__getFullPath(newDir), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
317
|
error if error else self.tr("Unknown"), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
318
|
), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
319
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
320
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
321
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
322
|
def __reload(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
323
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
324
|
Private slot to reload the directory listing. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
325
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
326
|
self.setDirectory(self.treeCombo.currentText()) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
327
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
328
|
@pyqtSlot(QTreeWidgetItem, int) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
329
|
def on_listing_itemActivated(self, item, column): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
330
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
331
|
Private slot to handle the activation of an item in the list. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
332
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
333
|
@param item reference to the activated item |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
334
|
@type QTreeWidgetItem |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
335
|
@param column column number (unused) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
336
|
@type int |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
337
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
338
|
if ( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
339
|
item.data(0, EricServerFileDialog.IsDirectoryRole) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
340
|
): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
341
|
self.setDirectory(self.__getFullPath(item.text(0))) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
342
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
343
|
self.accept() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
344
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
345
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
346
|
def on_listing_itemSelectionChanged(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
347
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
348
|
Private slot to handle the selection of listed items. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
349
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
350
|
for itm in self.listing.selectedItems(): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
351
|
if itm.data(0, EricServerFileDialog.IsDirectoryRole): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
352
|
self.__selectedDirectory = itm.text(0) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
353
|
break |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
354
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
355
|
self.__selectedDirectory = None |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
356
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
357
|
selected = [] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
358
|
for itm in self.listing.selectedItems(): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
359
|
isDir = itm.data(0, EricServerFileDialog.IsDirectoryRole) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
360
|
if self.__fileMode == FileMode.Directory and isDir: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
361
|
selected.append(itm.text(0)) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
362
|
elif not isDir: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
363
|
selected.append(itm.text(0)) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
364
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
365
|
if len(selected) == 1: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
366
|
self.nameEdit.setText(selected[0]) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
367
|
elif len(selected) > 1: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
368
|
self.nameEdit.setText( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
369
|
'"{0}"'.format('" "'.join(selected)) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
370
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
371
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
372
|
self.__updateOkButton() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
373
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
374
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
375
|
def __nameCompleterActivated(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
376
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
377
|
Private slot handling the activation of the completer. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
378
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
379
|
if self.okButton.isEnabled(): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
380
|
self.okButton.animateClick() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
381
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
382
|
@pyqtSlot(str) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
383
|
def on_nameEdit_textChanged(self, name): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
384
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
385
|
Private slot handling the editing of a file or directory name. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
386
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
387
|
@param name current text of the name edit |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
388
|
@type str |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
389
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
390
|
self.listing.clearSelection() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
391
|
items = self.listing.findItems(name, Qt.MatchFlag.MatchExactly) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
392
|
for itm in items: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
393
|
itm.setSelected(True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
394
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
395
|
self.__updateOkButton() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
396
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
397
|
def __getNames(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
398
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
399
|
Private method to get the selected names list. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
400
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
401
|
@return list containing the selected names |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
402
|
@rtype list of str |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
403
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
404
|
namesStr = self.nameEdit.text() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
405
|
if namesStr.startswith('"'): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
406
|
namesStr = namesStr[1:] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
407
|
if namesStr.endswith('"'): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
408
|
namesStr = namesStr[:-1] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
409
|
names = re.split(r'"\s+"', namesStr) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
410
|
return names |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
411
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
412
|
def __getFullPath(self, name): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
413
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
414
|
Private method to get the full path for a given file or directory name. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
415
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
416
|
@param name name of the file or directory |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
417
|
@type str |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
418
|
@return full path of the file or directory |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
419
|
@rtype str |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
420
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
421
|
return "{0}{1}{2}".format(self.treeCombo.currentText(), self.__sep, name) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
422
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
423
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
424
|
def __updateOkButton(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
425
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
426
|
Private slot to set the 'OK' button state, icon and label. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
427
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
428
|
# 1. adjust icon and label |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
429
|
if ( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
430
|
self.__acceptMode == AcceptMode.AcceptOpen |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
431
|
or self.__selectedDirectory is not None |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
432
|
): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
433
|
self.okButton.setIcon(EricPixmapCache.getIcon("dialog-ok")) |
10590
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
434
|
if self.__fileMode != FileMode.Directory: |
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
435
|
self.okButton.setText(self.tr("Open")) |
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
436
|
else: |
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
437
|
self.okButton.setText(self.tr("Choose")) |
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
438
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
439
|
self.okButton.setIcon(EricPixmapCache.getIcon("fileSave")) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
440
|
self.okButton.setText(self.tr("Save")) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
441
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
442
|
# 2. adjust enabled state |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
443
|
if self.__selectedDirectory and self.__fileMode != FileMode.Directory: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
444
|
self.okButton.setEnabled(True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
445
|
elif self.__fileMode == FileMode.AnyFile: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
446
|
self.okButton.setEnabled(bool(self.nameEdit.text())) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
447
|
elif self.__fileMode == FileMode.ExistingFile: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
448
|
self.okButton.setEnabled( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
449
|
self.nameEdit.text() in self.__filenameCache |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
450
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
451
|
elif self.__fileMode == FileMode.ExistingFiles: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
452
|
names = self.__getNames() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
453
|
self.okButton.setEnabled( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
454
|
all(n in self.__filenameCache for n in names) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
455
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
456
|
elif self.__fileMode == FileMode.Directory: |
10590
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
457
|
self.okButton.setEnabled(True) |
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
458
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
459
|
self.okButton.setEnabled(False) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
460
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
461
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
462
|
def on_okButton_clicked(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
463
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
464
|
Private slot handling the press of the OK button. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
465
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
466
|
if self.__selectedDirectory and self.__fileMode != FileMode.Directory: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
467
|
self.setDirectory(self.__getFullPath(self.__selectedDirectory)) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
468
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
469
|
self.accept() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
470
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
471
|
@pyqtSlot(int) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
472
|
def on_filterCombo_currentIndexChanged(self, index): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
473
|
""" |
10561
be23a662d709
Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
474
|
Private slot handling the selection of a new file filter.. |
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
475
|
|
10561
be23a662d709
Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
476
|
@param index index of the selected entry |
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
477
|
@type int |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
478
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
479
|
filters = self.__filters[index] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
480
|
self.__filterList(filters) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
481
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
482
|
@pyqtSlot(str) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
483
|
def setDirectory(self, directory): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
484
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
485
|
Public slot to set the current directory and populate the tree list. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
486
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
487
|
@param directory directory to be set as current. An empty directory sets the |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
488
|
server's current directory. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
489
|
@type str |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
490
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
491
|
self.__filenameCache.clear() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
492
|
self.__directoryCache.clear() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
493
|
|
10548
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
494
|
try: |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
495
|
directory, sep, dirListing = self.__fsInterface.listdir(directory) |
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
496
|
|
10548
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
497
|
self.__sep = sep |
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
498
|
|
10548
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
499
|
# 1. populate the directory tree combo box |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
500
|
self.treeCombo.blockSignals(True) |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
501
|
self.treeCombo.clear() |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
502
|
if len(directory) > 1 and directory.endswith(sep): |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
503
|
directory = directory[:-1] |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
504
|
if len(directory) > 2 and directory[1] == ":": |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
505
|
# starts with a Windows drive letter |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
506
|
directory = directory[2:] |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
507
|
directoryParts = directory.split(sep) |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
508
|
while directoryParts: |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
509
|
if directoryParts[-1]: |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
510
|
self.treeCombo.addItem(sep.join(directoryParts)) |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
511
|
directoryParts.pop() |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
512
|
self.treeCombo.addItem(sep) |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
513
|
self.treeCombo.blockSignals(False) |
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
514
|
|
10548
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
515
|
# 2. populate the directory listing |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
516
|
self.listing.clear() |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
517
|
for dirEntry in sorted( |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
518
|
dirListing, |
10561
be23a662d709
Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
519
|
key=lambda d: ( |
be23a662d709
Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
520
|
" " + d['name'].lower() if d["is_dir"] else d["name"].lower() |
be23a662d709
Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
521
|
), |
10548
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
522
|
): |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
523
|
if dirEntry["is_dir"]: |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
524
|
type_ = self.tr("Directory") |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
525
|
iconName = "dirClosed" |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
526
|
sizeStr = "" |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
527
|
self.__directoryCache.append(dirEntry["name"]) |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
528
|
else: |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
529
|
type_ = self.tr("File") |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
530
|
iconName = self.__iconProvider.fileIconName(dirEntry["name"]) |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
531
|
sizeStr = dataString(dirEntry["size"], QLocale.system()) |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
532
|
self.__filenameCache.append(dirEntry["name"]) |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
533
|
itm = QTreeWidgetItem( |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
534
|
self.listing, |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
535
|
[dirEntry["name"], sizeStr, type_, dirEntry["mtime"]] |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
536
|
) |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
537
|
itm.setIcon(0, EricPixmapCache.getIcon(iconName)) |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
538
|
itm.setTextAlignment(1, Qt.AlignmentFlag.AlignRight) |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
539
|
itm.setTextAlignment(2, Qt.AlignmentFlag.AlignHCenter) |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
540
|
itm.setData(0, EricServerFileDialog.IsDirectoryRole, dirEntry["is_dir"]) |
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
541
|
|
10590
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
542
|
currentFilterIndex = self.filterCombo.currentIndex() |
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
543
|
filters = ( |
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
544
|
[] if currentFilterIndex == -1 else self.__filters[currentFilterIndex] |
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
545
|
) |
10548
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
546
|
self.__filterList(filters) |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
547
|
|
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
548
|
# 3. add the directory to the history |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
549
|
self.__addToHistory(directory) |
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
550
|
|
10548
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
551
|
except OSError as err: |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
552
|
EricMessageBox.critical( |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
553
|
self, |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
554
|
self.tr("Remote Directory Listung"), |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
555
|
self.tr( |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
556
|
"<p>The directory <b>{0}</b> could not be listed due to an error" |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
557
|
" reported by the eric-ide server.</p><p>Reason: {1}</p>" |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
558
|
).format(directory, str(err)), |
d3e21f44887b
Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
559
|
) |
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
560
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
561
|
# 4. update some dependent states |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
562
|
self.nameEdit.clear() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
563
|
self.__updateUpButton() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
564
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
565
|
@pyqtSlot(QPoint) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
566
|
def on_listing_customContextMenuRequested(self, pos): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
567
|
""" |
10561
be23a662d709
Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
568
|
Private slot to show a context menu. |
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
569
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
570
|
@param pos mouse pointer position to show the menu at |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
571
|
@type QPoint |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
572
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
573
|
self.__contextMenu.clear() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
574
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
575
|
itm = self.listing.itemAt(pos) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
576
|
if itm is not None: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
577
|
self.__contextMenu.addAction( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
578
|
self.tr("Rename"), lambda: self.__renameItem(itm) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
579
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
580
|
self.__contextMenu.addAction( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
581
|
self.tr("Delete"), lambda: self.__deleteItem(itm) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
582
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
583
|
self.__contextMenu.addSeparator() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
584
|
act = self.__contextMenu.addAction(self.tr("Show Hidden Files")) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
585
|
act.setCheckable(True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
586
|
act.setChecked(self.__showHidden) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
587
|
act.toggled.connect(self.__showHiddenToggled) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
588
|
self.__contextMenu.addAction( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
589
|
self.tr("New Directory"), self.on_newDirButton_clicked |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
590
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
591
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
592
|
self.__contextMenu.popup(self.listing.mapToGlobal(pos)) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
593
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
594
|
@pyqtSlot(QTreeWidgetItem) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
595
|
def __renameItem(self, item): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
596
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
597
|
Private slot to rename the given file/directory item. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
598
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
599
|
@param item reference to the item to be renamed |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
600
|
@type QTreeWidgetItem |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
601
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
602
|
title = ( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
603
|
self.tr("Rename Directory") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
604
|
if item.data(0, EricServerFileDialog.IsDirectoryRole) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
605
|
else self.tr("Rename File") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
606
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
607
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
608
|
newName, ok = QInputDialog.getText( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
609
|
self, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
610
|
title, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
611
|
self.tr("<p>Enter the new name <b>{0}</b>:</p>").format(item.text(0)), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
612
|
QLineEdit.EchoMode.Normal, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
613
|
item.text(0), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
614
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
615
|
if ok and newName: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
616
|
if newName in self.__directoryCache or newName in self.__filenameCache: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
617
|
EricMessageBox.warning( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
618
|
self, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
619
|
title, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
620
|
self.tr( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
621
|
"<p>A file or directory with the name <b>{0}</b> exists" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
622
|
" already. Aborting...</p>" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
623
|
).format(newName), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
624
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
625
|
return |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
626
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
627
|
ok, error = self.__fsInterface.replace( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
628
|
self.__getFullPath(item.text(0)), self.__getFullPath(newName) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
629
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
630
|
if ok: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
631
|
# refresh |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
632
|
self.__reload() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
633
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
634
|
EricMessageBox.critical( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
635
|
self, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
636
|
title, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
637
|
self.tr( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
638
|
"<p>The renaming operation failed.</p>" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
639
|
"<p>Reason: {0}</p>" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
640
|
).format(error if error else self.tr("Unknown")), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
641
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
642
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
643
|
@pyqtSlot(QTreeWidgetItem) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
644
|
def __deleteItem(self, item): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
645
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
646
|
Private slot to delete the given file/directory item. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
647
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
648
|
@param item reference to the item to be deleted |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
649
|
@type QTreeWidgetItem |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
650
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
651
|
isDir = item.data(0, EricServerFileDialog.IsDirectoryRole) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
652
|
if isDir: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
653
|
title = self.tr("Delete Directory") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
654
|
itemType = self.tr("directory") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
655
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
656
|
title = self.tr("Delete File") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
657
|
itemType = self.tr("file") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
658
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
659
|
yes = EricMessageBox.yesNo( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
660
|
self, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
661
|
title, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
662
|
self.tr("Shall the selected {0} really be deleted?").format(itemType), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
663
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
664
|
if yes: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
665
|
ok, error = ( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
666
|
self.__fsInterface.rmdir(self.__getFullPath(item.text(0))) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
667
|
if isDir |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
668
|
else self.__fsInterface.remove(self.__getFullPath(item.text(0))) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
669
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
670
|
if ok: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
671
|
# refresh |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
672
|
self.__reload() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
673
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
674
|
EricMessageBox.critical( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
675
|
self, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
676
|
title, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
677
|
self.tr( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
678
|
"<p>The deletion operation failed.</p>" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
679
|
"<p>Reason: {0}</p>" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
680
|
).format(error if error else self.tr("Unknown")), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
681
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
682
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
683
|
@pyqtSlot(bool) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
684
|
def __showHiddenToggled(self, on): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
685
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
686
|
Private slot to handle toggling the display of hidden files/directories. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
687
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
688
|
@param on flag indicating to show hidden files and directories |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
689
|
@type bool |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
690
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
691
|
self.__showHidden = on |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
692
|
filters = self.__filters[self.filterCombo.currentIndex()] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
693
|
self.__filterList(filters) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
694
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
695
|
def selectedFiles(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
696
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
697
|
Public method to get the selected files or the current viewport path. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
698
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
699
|
@return selected files or current viewport path |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
700
|
@rtype str |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
701
|
""" |
10590
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
702
|
if self.__fileMode == FileMode.Directory and not self.nameEdit.text(): |
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
703
|
return [self.treeCombo.currentText()] |
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
704
|
else: |
e7fe32611a80
Corrected the remote file dialog with respect to selection of a directory.
Detlev Offenbach <detlev@die-offenbachs.de>
diff
changeset
|
705
|
return [self.__getFullPath(n) for n in self.__getNames()] |
10539
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
706
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
707
|
def selectedNameFilter(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
708
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
709
|
Public method to get the selected name filter. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
710
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
711
|
@return selected name filter |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
712
|
@rtype str |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
713
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
714
|
return self.filterCombo.currentText() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
715
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
716
|
def __isHidden(self, name): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
717
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
718
|
Private method to check, if the given name is indicating a hidden file or |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
719
|
directory. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
720
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
721
|
@param name name of the file or directory |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
722
|
@type str |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
723
|
@return flag indicating a hidden file or directory |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
724
|
@rtype bool |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
725
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
726
|
return name.startswith(".") or name.endswith("~") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
727
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
728
|
def __filterList(self, filters): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
729
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
730
|
Private method to filter the files and directories list based on the given |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
731
|
filters and whether hidden files/directories should be shown. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
732
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
733
|
@param filters list of filter patterns (only applied to files |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
734
|
@type list of str |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
735
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
736
|
self.listing.clearSelection() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
737
|
for row in range(self.listing.topLevelItemCount()): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
738
|
itm = self.listing.topLevelItem(row) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
739
|
name = itm.text(0) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
740
|
if ( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
741
|
self.__dirsOnly |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
742
|
and not itm.data(0, EricServerFileDialog.IsDirectoryRole) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
743
|
): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
744
|
itm.setHidden(True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
745
|
elif not self.__showHidden and self.__isHidden(name): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
746
|
# applies to files and directories |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
747
|
itm.setHidden(True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
748
|
elif not itm.data(0, EricServerFileDialog.IsDirectoryRole): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
749
|
# it is a file item, apply the filter |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
750
|
itm.setHidden(not any(fnmatch.fnmatch(name, pat) for pat in filters)) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
751
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
752
|
itm.setHidden(False) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
753
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
754
|
# resize the columns |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
755
|
for column in range(4): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
756
|
self.listing.resizeColumnToContents(column) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
757
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
758
|
########################################################################### |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
759
|
## Module functions mimicing the interface of EricFileDialog/QFileDialog |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
760
|
########################################################################### |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
761
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
762
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
763
|
def getOpenFileName( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
764
|
parent=None, caption="", directory="", filterStr="", initialFilter="", |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
765
|
withRemote=True |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
766
|
): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
767
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
768
|
Module function to get the name of a file for opening it. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
769
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
770
|
@param parent parent widget of the dialog (defaults to None) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
771
|
@type QWidget (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
772
|
@param caption window title of the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
773
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
774
|
@param directory working directory of the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
775
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
776
|
@param filterStr filter string for the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
777
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
778
|
@param initialFilter initial filter for the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
779
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
780
|
@param withRemote flag indicating to create the file names with the remote |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
781
|
indicator (defaults to True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
782
|
@type bool (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
783
|
@return name of file to be opened |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
784
|
@rtype str |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
785
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
786
|
return getOpenFileNameAndFilter( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
787
|
parent, caption, directory, filterStr, initialFilter, withRemote |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
788
|
)[0] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
789
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
790
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
791
|
def getOpenFileNameAndFilter( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
792
|
parent=None, caption="", directory="", filterStr="", initialFilter="", |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
793
|
withRemote=True |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
794
|
): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
795
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
796
|
Module function to get the name of a file for opening it and the selected |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
797
|
file name filter. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
798
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
799
|
@param parent parent widget of the dialog (defaults to None) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
800
|
@type QWidget (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
801
|
@param caption window title of the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
802
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
803
|
@param directory working directory of the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
804
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
805
|
@param filterStr filter string for the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
806
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
807
|
@param initialFilter initial filter for the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
808
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
809
|
@param withRemote flag indicating to create the file names with the remote |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
810
|
indicator (defaults to True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
811
|
@type bool (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
812
|
@return tuple containing the list of file names to be opened and the |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
813
|
selected file name filter |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
814
|
@rtype tuple of (list of str, str) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
815
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
816
|
dlg = EricServerFileDialog( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
817
|
parent=parent, caption=caption, directory=directory, filter=filterStr |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
818
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
819
|
dlg.setFileMode(FileMode.ExistingFile) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
820
|
dlg.setNameFilter(initialFilter) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
821
|
if dlg.exec() == QDialog.DialogCode.Accepted: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
822
|
if withRemote: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
823
|
fileName = FileSystemUtilities.remoteFileName(dlg.selectedFiles()[0]) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
824
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
825
|
fileName = dlg.selectedFiles()[0] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
826
|
selectedFilter = dlg.selectedNameFilter() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
827
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
828
|
fileName = "" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
829
|
selectedFilter = "" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
830
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
831
|
return fileName, selectedFilter |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
832
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
833
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
834
|
def getOpenFileNames( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
835
|
parent=None, caption="", directory="", filterStr="", initialFilter="", |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
836
|
withRemote=True |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
837
|
): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
838
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
839
|
Module function to get a list of names of files for opening. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
840
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
841
|
@param parent parent widget of the dialog (defaults to None) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
842
|
@type QWidget (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
843
|
@param caption window title of the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
844
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
845
|
@param directory working directory of the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
846
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
847
|
@param filterStr filter string for the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
848
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
849
|
@param initialFilter initial filter for the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
850
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
851
|
@param withRemote flag indicating to create the file names with the remote |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
852
|
indicator (defaults to True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
853
|
@type bool (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
854
|
@return list of file names to be opened |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
855
|
@rtype list of str |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
856
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
857
|
return getOpenFileNamesAndFilter( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
858
|
parent, caption, directory, filterStr, initialFilter, withRemote |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
859
|
)[0] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
860
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
861
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
862
|
def getOpenFileNamesAndFilter( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
863
|
parent=None, caption="", directory="", filterStr="", initialFilter="", |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
864
|
withRemote=True |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
865
|
): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
866
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
867
|
Module function to get a list of names of files for opening and the |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
868
|
selected file name filter. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
869
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
870
|
@param parent parent widget of the dialog (defaults to None) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
871
|
@type QWidget (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
872
|
@param caption window title of the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
873
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
874
|
@param directory working directory of the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
875
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
876
|
@param filterStr filter string for the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
877
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
878
|
@param initialFilter initial filter for the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
879
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
880
|
@param withRemote flag indicating to create the file names with the remote |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
881
|
indicator (defaults to True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
882
|
@type bool (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
883
|
@return tuple containing the list of file names to be opened and the |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
884
|
selected file name filter |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
885
|
@rtype tuple of (list of str, str) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
886
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
887
|
dlg = EricServerFileDialog( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
888
|
parent=parent, caption=caption, directory=directory, filter=filterStr |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
889
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
890
|
dlg.setFileMode(FileMode.ExistingFiles) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
891
|
dlg.setNameFilter(initialFilter) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
892
|
if dlg.exec() == QDialog.DialogCode.Accepted: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
893
|
if withRemote: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
894
|
filesList = [ |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
895
|
FileSystemUtilities.remoteFileName(f) for f in dlg.selectedFiles() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
896
|
] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
897
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
898
|
filesList = dlg.selectedFiles() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
899
|
selectedFilter = dlg.selectedNameFilter() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
900
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
901
|
filesList = [] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
902
|
selectedFilter = "" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
903
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
904
|
return filesList, selectedFilter |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
905
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
906
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
907
|
def getSaveFileName( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
908
|
parent=None, caption="", directory="", filterStr="", initialFilter="", |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
909
|
withRemote=True |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
910
|
): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
911
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
912
|
Module function to get the name of a file for saving. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
913
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
914
|
@param parent parent widget of the dialog (defaults to None) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
915
|
@type QWidget (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
916
|
@param caption window title of the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
917
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
918
|
@param directory working directory of the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
919
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
920
|
@param filterStr filter string for the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
921
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
922
|
@param initialFilter initial filter for the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
923
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
924
|
@param withRemote flag indicating to create the file names with the remote |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
925
|
indicator (defaults to True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
926
|
@type bool (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
927
|
@return name of file to be saved |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
928
|
@rtype str |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
929
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
930
|
return getSaveFileNameAndFilter( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
931
|
parent, caption, directory, filterStr, initialFilter, withRemote |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
932
|
)[0] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
933
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
934
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
935
|
def getSaveFileNameAndFilter( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
936
|
parent=None, caption="", directory="", filterStr="", initialFilter="", |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
937
|
withRemote=True |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
938
|
): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
939
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
940
|
Module function to get the name of a file for saving and the selected file name |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
941
|
filter. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
942
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
943
|
@param parent parent widget of the dialog (defaults to None) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
944
|
@type QWidget (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
945
|
@param caption window title of the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
946
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
947
|
@param directory working directory of the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
948
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
949
|
@param filterStr filter string for the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
950
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
951
|
@param initialFilter initial filter for the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
952
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
953
|
@param withRemote flag indicating to create the file names with the remote |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
954
|
indicator (defaults to True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
955
|
@type bool (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
956
|
@return name of file to be saved and selected filte |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
957
|
@rtype tuple of (str, str) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
958
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
959
|
dlg = EricServerFileDialog( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
960
|
parent=parent, caption=caption, directory=directory, filter=filterStr |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
961
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
962
|
dlg.setFileMode(FileMode.AnyFile) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
963
|
dlg.setNameFilter(initialFilter) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
964
|
if dlg.exec() == QDialog.DialogCode.Accepted: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
965
|
if withRemote: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
966
|
fileName = FileSystemUtilities.remoteFileName(dlg.selectedFiles()[0]) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
967
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
968
|
fileName = dlg.selectedFiles()[0] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
969
|
selectedFilter = dlg.selectedNameFilter() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
970
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
971
|
fileName = "" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
972
|
selectedFilter = "" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
973
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
974
|
return fileName, selectedFilter |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
975
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
976
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
977
|
def getExistingDirectory( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
978
|
parent=None, caption="", directory="", dirsOnly=True, withRemote=True |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
979
|
): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
980
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
981
|
Module function to get the name of a directory. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
982
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
983
|
@param parent parent widget of the dialog (defaults to None) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
984
|
@type QWidget (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
985
|
@param caption window title of the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
986
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
987
|
@param directory working directory of the dialog (defaults to "") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
988
|
@type str (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
989
|
@param dirsOnly flag indicating to just show directories (defaults to True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
990
|
@type bool (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
991
|
@param withRemote flag indicating to create the file names with the remote |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
992
|
indicator (defaults to True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
993
|
@type bool (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
994
|
@return name of selected directory |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
995
|
@rtype str |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
996
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
997
|
dlg = EricServerFileDialog(parent=parent, caption=caption, directory=directory) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
998
|
dlg.setFileMode(FileMode.Directory) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
999
|
dlg.setDirectoriesOnly(dirsOnly) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1000
|
if dlg.exec() == QDialog.DialogCode.Accepted: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1001
|
if withRemote: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1002
|
dirName = FileSystemUtilities.remoteFileName(dlg.selectedFiles()[0]) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1003
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1004
|
dirName = dlg.selectedFiles()[0] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1005
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1006
|
dirName = "" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1007
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1008
|
return dirName |