E5Gui/E5PathPicker.py

changeset 4594
1071d7ec6976
parent 4593
cc745fa6c914
child 4597
46be8d9c4dd8
equal deleted inserted replaced
4593:cc745fa6c914 4594:1071d7ec6976
35 OpenFileMode = 0 35 OpenFileMode = 0
36 OpenFilesMode = 1 36 OpenFilesMode = 1
37 SaveFileMode = 2 37 SaveFileMode = 2
38 SaveFileEnsureExtensionMode = 3 38 SaveFileEnsureExtensionMode = 3
39 DirectoryMode = 4 39 DirectoryMode = 4
40 NoMode = 100
40 41
41 # TODO: Refactor the classes using a base class with common functions 42 # TODO: Refactor the classes using a base class with common functions
42 43
43 class E5PathPicker(QWidget): 44 class E5PathPicker(QWidget):
44 """ 45 """
48 @signal textChanged(path) emitted when the entered path has changed 49 @signal textChanged(path) emitted when the entered path has changed
49 @signal pathSelected(path) emitted after a path has been selected via the 50 @signal pathSelected(path) emitted after a path has been selected via the
50 file dialog 51 file dialog
51 @signal aboutToShowPathPickerDialog emitted before the file dialog is shown 52 @signal aboutToShowPathPickerDialog emitted before the file dialog is shown
52 """ 53 """
53 DefaultMode = E5PathPickerModes.OpenFileMode 54 DefaultMode = E5PathPickerModes.NoMode
54 55
55 textChanged = pyqtSignal(str) 56 textChanged = pyqtSignal(str)
56 pathSelected = pyqtSignal(str) 57 pathSelected = pyqtSignal(str)
57 aboutToShowPathPickerDialog = pyqtSignal() 58 aboutToShowPathPickerDialog = pyqtSignal()
58 59
89 90
90 self.__button.clicked.connect(self.__showPathPickerDialog) 91 self.__button.clicked.connect(self.__showPathPickerDialog)
91 self.__editor.textChanged.connect(self.textChanged) 92 self.__editor.textChanged.connect(self.textChanged)
92 93
93 self.setFocusProxy(self.__editor) 94 self.setFocusProxy(self.__editor)
95 self.__button.setEnabled(self.__mode != E5PathPickerModes.NoMode)
94 96
95 def setMode(self, mode): 97 def setMode(self, mode):
96 """ 98 """
97 Public method to set the path picker mode. 99 Public method to set the path picker mode.
98 100
107 if mode != oldMode: 109 if mode != oldMode:
108 # Remove current completer 110 # Remove current completer
109 self.__editor.setCompleter(None) 111 self.__editor.setCompleter(None)
110 self.__completer = None 112 self.__completer = None
111 113
112 # Set a new completer 114 if mode != E5PathPickerModes.NoMode:
113 if mode == E5PathPickerModes.DirectoryMode: 115 # Set a new completer
114 self.__completer = E5DirCompleter(self.__editor) 116 if mode == E5PathPickerModes.DirectoryMode:
115 else: 117 self.__completer = E5DirCompleter(self.__editor)
116 self.__completer = E5FileCompleter(self.__editor) 118 else:
117 119 self.__completer = E5FileCompleter(self.__editor)
118 # set inactive text 120
119 if mode == E5PathPickerModes.OpenFilesMode: 121 # set inactive text
120 self.__editor.setInactiveText( 122 if mode == E5PathPickerModes.OpenFilesMode:
121 self.tr("Enter Path Names separated by ';'")) 123 self.__editor.setInactiveText(
122 else: 124 self.tr("Enter Path Names separated by ';'"))
123 self.__editor.setInactiveText( 125 else:
124 self.tr("Enter Path Name")) 126 self.__editor.setInactiveText(
127 self.tr("Enter Path Name"))
128 self.__button.setEnabled(self.__mode != E5PathPickerModes.NoMode)
125 129
126 def mode(self): 130 def mode(self):
127 """ 131 """
128 Public method to get the path picker mode. 132 Public method to get the path picker mode.
129 133
360 364
361 def __showPathPickerDialog(self): 365 def __showPathPickerDialog(self):
362 """ 366 """
363 Private slot to show the path picker dialog. 367 Private slot to show the path picker dialog.
364 """ 368 """
369 if self.__mode == E5PathPickerModes.NoMode:
370 return
371
365 self.aboutToShowPathPickerDialog.emit() 372 self.aboutToShowPathPickerDialog.emit()
366 373
367 windowTitle = self.__windowTitle 374 windowTitle = self.__windowTitle
368 if not windowTitle: 375 if not windowTitle:
369 if self.__mode == E5PathPickerModes.OpenFileMode: 376 if self.__mode == E5PathPickerModes.OpenFileMode:
449 @signal editTextChanged(path) emitted when the entered path has changed 456 @signal editTextChanged(path) emitted when the entered path has changed
450 @signal pathSelected(path) emitted after a path has been selected via the 457 @signal pathSelected(path) emitted after a path has been selected via the
451 file dialog 458 file dialog
452 @signal aboutToShowPathPickerDialog emitted before the file dialog is shown 459 @signal aboutToShowPathPickerDialog emitted before the file dialog is shown
453 """ 460 """
454 DefaultMode = E5PathPickerModes.OpenFileMode 461 DefaultMode = E5PathPickerModes.NoMode
455 462
456 editTextChanged = pyqtSignal(str) 463 editTextChanged = pyqtSignal(str)
457 pathSelected = pyqtSignal(str) 464 pathSelected = pyqtSignal(str)
458 aboutToShowPathPickerDialog = pyqtSignal() 465 aboutToShowPathPickerDialog = pyqtSignal()
459 466
490 497
491 self.__button.clicked.connect(self.__showPathPickerDialog) 498 self.__button.clicked.connect(self.__showPathPickerDialog)
492 self.__editor.editTextChanged.connect(self.editTextChanged) 499 self.__editor.editTextChanged.connect(self.editTextChanged)
493 500
494 self.setFocusProxy(self.__editor) 501 self.setFocusProxy(self.__editor)
502 self.__button.setEnabled(self.__mode != E5PathPickerModes.NoMode)
495 503
496 def setMode(self, mode): 504 def setMode(self, mode):
497 """ 505 """
498 Public method to set the path picker mode. 506 Public method to set the path picker mode.
499 507
508 if mode != oldMode: 516 if mode != oldMode:
509 # Remove current completer 517 # Remove current completer
510 self.__editor.setCompleter(None) 518 self.__editor.setCompleter(None)
511 self.__completer = None 519 self.__completer = None
512 520
513 # Set a new completer 521 if mode != E5PathPickerModes.NoMode:
514 if mode == E5PathPickerModes.DirectoryMode: 522 # Set a new completer
515 self.__completer = E5DirCompleter(self.__editor) 523 if mode == E5PathPickerModes.DirectoryMode:
516 else: 524 self.__completer = E5DirCompleter(self.__editor)
517 self.__completer = E5FileCompleter(self.__editor) 525 else:
518 526 self.__completer = E5FileCompleter(self.__editor)
519 # set inactive text 527
520 if mode == E5PathPickerModes.OpenFilesMode: 528 # set inactive text
521 self.__editor.setInactiveText( 529 if mode == E5PathPickerModes.OpenFilesMode:
522 self.tr("Enter Path Names separated by ';'")) 530 self.__editor.setInactiveText(
523 else: 531 self.tr("Enter Path Names separated by ';'"))
524 self.__editor.setInactiveText( 532 else:
525 self.tr("Enter Path Name")) 533 self.__editor.setInactiveText(
534 self.tr("Enter Path Name"))
535 self.__button.setEnabled(self.__mode != E5PathPickerModes.NoMode)
526 536
527 def mode(self): 537 def mode(self):
528 """ 538 """
529 Public method to get the path picker mode. 539 Public method to get the path picker mode.
530 540
813 823
814 def __showPathPickerDialog(self): 824 def __showPathPickerDialog(self):
815 """ 825 """
816 Private slot to show the path picker dialog. 826 Private slot to show the path picker dialog.
817 """ 827 """
828 if self.__mode == E5PathPickerModes.NoMode:
829 return
830
818 self.aboutToShowPathPickerDialog.emit() 831 self.aboutToShowPathPickerDialog.emit()
819 832
820 windowTitle = self.__windowTitle 833 windowTitle = self.__windowTitle
821 if not windowTitle: 834 if not windowTitle:
822 if self.__mode == E5PathPickerModes.OpenFileMode: 835 if self.__mode == E5PathPickerModes.OpenFileMode:

eric ide

mercurial