E5Gui/E5PathPicker.py

changeset 4593
cc745fa6c914
parent 4589
b648ccbdbef9
child 4594
1071d7ec6976
equal deleted inserted replaced
4590:9fdd473c68fb 4593:cc745fa6c914
14 try: 14 try:
15 from enum import Enum 15 from enum import Enum
16 except ImportError: 16 except ImportError:
17 from ThirdParty.enum import Enum 17 from ThirdParty.enum import Enum
18 18
19 from PyQt5.QtCore import pyqtSignal, Qt 19 from PyQt5.QtCore import pyqtSignal, Qt, QFileInfo
20 from PyQt5.QtWidgets import QWidget, QHBoxLayout, QToolButton 20 from PyQt5.QtWidgets import QWidget, QHBoxLayout, QToolButton
21 21
22 from . import E5FileDialog 22 from . import E5FileDialog
23 from .E5LineEdit import E5ClearableLineEdit 23 from .E5LineEdit import E5ClearableLineEdit
24 from .E5Completers import E5FileCompleter, E5DirCompleter 24 from .E5Completers import E5FileCompleter, E5DirCompleter
33 Class implementing the path picker modes. 33 Class implementing the path picker modes.
34 """ 34 """
35 OpenFileMode = 0 35 OpenFileMode = 0
36 OpenFilesMode = 1 36 OpenFilesMode = 1
37 SaveFileMode = 2 37 SaveFileMode = 2
38 DirectoryMode = 3 38 SaveFileEnsureExtensionMode = 3
39 DirectoryMode = 4
39 40
40 # TODO: Refactor the classes using a base class with common functions 41 # TODO: Refactor the classes using a base class with common functions
41 42
42 class E5PathPicker(QWidget): 43 class E5PathPicker(QWidget):
43 """ 44 """
310 @return filter string 311 @return filter string
311 @rtype str 312 @rtype str
312 """ 313 """
313 return self.__filters 314 return self.__filters
314 315
316 def setNameFilters(self, filters):
317 """
318 Public method to set the name filters for the completer.
319
320 @param filter list of file name filters
321 @type list of str
322 """
323 self.__editor.completer().model().setNameFilters(filters)
324
315 def setButtonToolTip(self, tooltip): 325 def setButtonToolTip(self, tooltip):
316 """ 326 """
317 Public method to set the tool button tool tip. 327 Public method to set the tool button tool tip.
318 328
319 @param tooltip text to be set as a tool tip 329 @param tooltip text to be set as a tool tip
358 if not windowTitle: 368 if not windowTitle:
359 if self.__mode == E5PathPickerModes.OpenFileMode: 369 if self.__mode == E5PathPickerModes.OpenFileMode:
360 windowTitle = self.tr("Choose a file to open") 370 windowTitle = self.tr("Choose a file to open")
361 elif self.__mode == E5PathPickerModes.OpenFilesMode: 371 elif self.__mode == E5PathPickerModes.OpenFilesMode:
362 windowTitle = self.tr("Choose files to open") 372 windowTitle = self.tr("Choose files to open")
363 elif self.__mode == E5PathPickerModes.SaveFileMode: 373 elif self.__mode in [
374 E5PathPickerModes.SaveFileMode,
375 E5PathPickerModes.SaveFileEnsureExtensionMode]:
364 windowTitle = self.tr("Choose a file to save") 376 windowTitle = self.tr("Choose a file to save")
365 elif self.__mode == E5PathPickerModes.DirectoryMode: 377 elif self.__mode == E5PathPickerModes.DirectoryMode:
366 windowTitle = self.tr("Choose a directory") 378 windowTitle = self.tr("Choose a directory")
367 379
368 directory = self.__editor.text() 380 directory = self.__editor.text()
397 windowTitle, 409 windowTitle,
398 directory, 410 directory,
399 self.__filters, 411 self.__filters,
400 E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite)) 412 E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite))
401 path = Utilities.toNativeSeparators(path) 413 path = Utilities.toNativeSeparators(path)
414 elif self.__mode == E5PathPickerModes.SaveFileEnsureExtensionMode:
415 path, selectedFilter = E5FileDialog.getSaveFileNameAndFilter(
416 self,
417 windowTitle,
418 directory,
419 self.__filters,
420 None,
421 E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite))
422 path = Utilities.toNativeSeparators(path)
423 if path:
424 ext = QFileInfo(path).suffix()
425 if not ext:
426 ex = selectedFilter.split("(*")[1].split(")")[0]
427 if ex:
428 path += ex
402 elif self.__mode == E5PathPickerModes.DirectoryMode: 429 elif self.__mode == E5PathPickerModes.DirectoryMode:
403 path = E5FileDialog.getExistingDirectory( 430 path = E5FileDialog.getExistingDirectory(
404 self, 431 self,
405 windowTitle, 432 windowTitle,
406 directory, 433 directory,
833 windowTitle, 860 windowTitle,
834 directory, 861 directory,
835 self.__filters, 862 self.__filters,
836 E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite)) 863 E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite))
837 path = Utilities.toNativeSeparators(path) 864 path = Utilities.toNativeSeparators(path)
865 elif self.__mode == E5PathPickerModes.SaveFileEnsureExtensionMode:
866 path, selectedFilter = E5FileDialog.getSaveFileNameAndFilter(
867 self,
868 windowTitle,
869 directory,
870 self.__filters,
871 None,
872 E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite))
873 path = Utilities.toNativeSeparators(path)
874 if path:
875 ext = QFileInfo(path).suffix()
876 if not ext:
877 ex = selectedFilter.split("(*")[1].split(")")[0]
878 if ex:
879 path += ex
838 elif self.__mode == E5PathPickerModes.DirectoryMode: 880 elif self.__mode == E5PathPickerModes.DirectoryMode:
839 path = E5FileDialog.getExistingDirectory( 881 path = E5FileDialog.getExistingDirectory(
840 self, 882 self,
841 windowTitle, 883 windowTitle,
842 directory, 884 directory,

eric ide

mercurial