Preferences/ConfigurationDialog.py

changeset 1964
6a6a53f2d086
parent 1791
3e946bfda98a
child 2100
fb16f4650860
equal deleted inserted replaced
1963:9c5b3235abf9 1964:6a6a53f2d086
14 from PyQt4.QtGui import QSizePolicy, QSpacerItem, QWidget, QPixmap, QTreeWidget, \ 14 from PyQt4.QtGui import QSizePolicy, QSpacerItem, QWidget, QPixmap, QTreeWidget, \
15 QStackedWidget, QDialog, QSplitter, QScrollArea, QApplication, QDialogButtonBox, \ 15 QStackedWidget, QDialog, QSplitter, QScrollArea, QApplication, QDialogButtonBox, \
16 QFrame, QMainWindow, QVBoxLayout, QTreeWidgetItem, QLabel 16 QFrame, QMainWindow, QVBoxLayout, QTreeWidgetItem, QLabel
17 17
18 from E5Gui.E5Application import e5App 18 from E5Gui.E5Application import e5App
19 from E5Gui.E5LineEdit import E5LineEdit
20 from E5Gui.E5LineEditButton import E5LineEditButton
19 from E5Gui import E5MessageBox 21 from E5Gui import E5MessageBox
20 22
21 import QScintilla.Lexers 23 import QScintilla.Lexers
22 24
23 import Preferences 25 import Preferences
391 393
392 self.configSplitter = QSplitter(self) 394 self.configSplitter = QSplitter(self)
393 self.configSplitter.setOrientation(Qt.Horizontal) 395 self.configSplitter.setOrientation(Qt.Horizontal)
394 self.configSplitter.setObjectName("configSplitter") 396 self.configSplitter.setObjectName("configSplitter")
395 397
396 self.configList = QTreeWidget(self.configSplitter) 398 self.configListWidget = QWidget(self.configSplitter)
399 self.leftVBoxLayout = QVBoxLayout(self.configListWidget)
400 self.leftVBoxLayout.setMargin(0)
401 self.leftVBoxLayout.setSpacing(0)
402 self.leftVBoxLayout.setObjectName("leftVBoxLayout")
403 self.configListFilter = E5LineEdit(self, self.trUtf8("Enter filter text..."))
404 self.configListFilter.setObjectName("configListFilter")
405 self.leftVBoxLayout.addWidget(self.configListFilter)
406 self.configList = QTreeWidget()
397 self.configList.setObjectName("configList") 407 self.configList.setObjectName("configList")
408 self.leftVBoxLayout.addWidget(self.configList)
409
410 self.__clearButton = E5LineEditButton(self)
411 self.__clearButton.setIcon(UI.PixmapCache.getIcon("clearLeft.png"))
412 self.configListFilter.addWidget(self.__clearButton, E5LineEdit.RightSide)
413 self.__clearButton.setVisible(False)
414 self.__clearButton.clicked[()].connect(self.configListFilter.clear)
415 self.configListFilter.textChanged.connect(self.__filterTextChanged)
398 416
399 self.scrollArea = QScrollArea(self.configSplitter) 417 self.scrollArea = QScrollArea(self.configSplitter)
400 self.scrollArea.setFrameShape(QFrame.NoFrame) 418 self.scrollArea.setFrameShape(QFrame.NoFrame)
401 self.scrollArea.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) 419 self.scrollArea.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
402 self.scrollArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn) 420 self.scrollArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
456 474
457 QMetaObject.connectSlotsByName(self) 475 QMetaObject.connectSlotsByName(self)
458 self.setTabOrder(self.configList, self.configStack) 476 self.setTabOrder(self.configList, self.configStack)
459 477
460 self.configStack.setCurrentWidget(self.emptyPage) 478 self.configStack.setCurrentWidget(self.emptyPage)
479
480 self.configList.setFocus()
481
482 def __filterTextChanged(self, filter):
483 """
484 Private slot to handle a change of the filter.
485
486 @param filter text of the filter line edit (string)
487 """
488 self.__clearButton.setVisible(filter != "")
489
490 self.__filterChildItems(self.configList.invisibleRootItem(), filter)
491
492 def __filterChildItems(self, parent, filter):
493 """
494 Private method to filter child items based on a filter string.
495
496 @param parent reference to the parent item (QTreeWidgetItem)
497 @param filter filter string (string)
498 @return flag indicating a visible child item (boolean)
499 """
500 childVisible = False
501 filter = filter.lower()
502 for index in range(parent.childCount()):
503 itm = parent.child(index)
504 if itm.childCount() > 0:
505 visible = self.__filterChildItems(itm, filter)
506 else:
507 visible = filter == "" or filter in itm.text(0).lower()
508 if visible:
509 childVisible = True
510 itm.setHidden(not visible)
511
512 return childVisible
461 513
462 def __initLexers(self): 514 def __initLexers(self):
463 """ 515 """
464 Private method to initialize the dictionary of preferences lexers. 516 Private method to initialize the dictionary of preferences lexers.
465 """ 517 """

eric ide

mercurial