--- a/UI/SearchWidget.py Thu Apr 20 20:09:53 2017 +0200 +++ b/UI/SearchWidget.py Fri Apr 21 19:39:31 2017 +0200 @@ -12,12 +12,10 @@ from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt from PyQt5.QtWidgets import QWidget, QSpacerItem, QSizePolicy -from .Ui_SearchWidget import Ui_SearchWidget - import UI.PixmapCache -class SearchWidget(QWidget, Ui_SearchWidget): +class SearchWidget(QWidget): """ Class implementing the search box for the shell, terminal and log viewer. @@ -29,7 +27,7 @@ searchNext = pyqtSignal(str, bool, bool) searchPrevious = pyqtSignal(str, bool, bool) - def __init__(self, mainWindow, parent=None, spacer=True): + def __init__(self, mainWindow, parent=None, spacer=True, showLine=False): """ Constructor @@ -37,31 +35,43 @@ @param parent reference to the parent widget (QWidget) @param spacer flag indicating to add a vertical spacer to the main layout (boolean) + @param showLine flag indicating to show all widget in one row (boolean) """ super(SearchWidget, self).__init__(parent) - self.setupUi(self) - if spacer: - spacerItem = QSpacerItem( - 20, 1, QSizePolicy.Minimum, QSizePolicy.Expanding) - self.verticalLayout.addItem(spacerItem) + + if showLine: + from .Ui_SearchWidgetLine import Ui_SearchWidgetLine + self.__ui = Ui_SearchWidgetLine() else: - # change the size policy of the search combo if the spacer is not - # wanted, i.e. it is below the to be searched widget - sizePolicy = self.findtextCombo.sizePolicy() - sizePolicy.setHorizontalPolicy(QSizePolicy.Expanding) - self.findtextCombo.setSizePolicy(sizePolicy) + from .Ui_SearchWidget import Ui_SearchWidget + self.__ui = Ui_SearchWidget() + self.__ui.setupUi(self) + if not showLine: + if spacer: + spacerItem = QSpacerItem( + 20, 1, QSizePolicy.Minimum, QSizePolicy.Expanding) + self.__ui.verticalLayout.addItem(spacerItem) + else: + # change the size policy of the search combo if the spacer is + # not wanted, i.e. it is below the to be searched widget + sizePolicy = self.__ui.findtextCombo.sizePolicy() + sizePolicy.setHorizontalPolicy(QSizePolicy.Expanding) + self.__ui.findtextCombo.setSizePolicy(sizePolicy) self.__mainWindow = mainWindow self.__findBackwards = True - self.closeButton.setIcon(UI.PixmapCache.getIcon("close.png")) - self.findPrevButton.setIcon(UI.PixmapCache.getIcon("1leftarrow.png")) - self.findNextButton.setIcon(UI.PixmapCache.getIcon("1rightarrow.png")) + self.__ui.closeButton.setIcon( + UI.PixmapCache.getIcon("close.png")) + self.__ui.findPrevButton.setIcon( + UI.PixmapCache.getIcon("1leftarrow.png")) + self.__ui.findNextButton.setIcon( + UI.PixmapCache.getIcon("1rightarrow.png")) self.findHistory = [] - self.findtextCombo.setCompleter(None) - self.findtextCombo.lineEdit().returnPressed.connect( + self.__ui.findtextCombo.setCompleter(None) + self.__ui.findtextCombo.lineEdit().returnPressed.connect( self.__findByReturnPressed) msh = self.minimumSizeHint() @@ -90,7 +100,11 @@ """ Private slot to find the next occurrence. """ - txt = self.findtextCombo.currentText() + txt = self.__ui.findtextCombo.currentText() + if not txt and not self.isVisible(): + self.showFind() + return + self.__findBackwards = False # This moves any previous occurrence of this statement to the head @@ -98,20 +112,24 @@ if txt in self.findHistory: self.findHistory.remove(txt) self.findHistory.insert(0, txt) - self.findtextCombo.clear() - self.findtextCombo.addItems(self.findHistory) + self.__ui.findtextCombo.clear() + self.__ui.findtextCombo.addItems(self.findHistory) self.searchNext.emit( txt, - self.caseCheckBox.isChecked(), - self.wordCheckBox.isChecked()) + self.__ui.caseCheckBox.isChecked(), + self.__ui.wordCheckBox.isChecked()) @pyqtSlot() def on_findPrevButton_clicked(self): """ Private slot to find the previous occurrence. """ - txt = self.findtextCombo.currentText() + txt = self.__ui.findtextCombo.currentText() + if not txt and not self.isVisible(): + self.showFind() + return + self.__findBackwards = True # This moves any previous occurrence of this statement to the head @@ -119,13 +137,13 @@ if txt in self.findHistory: self.findHistory.remove(txt) self.findHistory.insert(0, txt) - self.findtextCombo.clear() - self.findtextCombo.addItems(self.findHistory) + self.__ui.findtextCombo.clear() + self.__ui.findtextCombo.addItems(self.findHistory) self.searchPrevious.emit( txt, - self.caseCheckBox.isChecked(), - self.wordCheckBox.isChecked()) + self.__ui.caseCheckBox.isChecked(), + self.__ui.wordCheckBox.isChecked()) @pyqtSlot(str) def on_findtextCombo_editTextChanged(self, txt): @@ -142,8 +160,8 @@ @param enabled flag indicating the state (boolean) """ - self.findPrevButton.setEnabled(enabled) - self.findNextButton.setEnabled(enabled) + self.__ui.findPrevButton.setEnabled(enabled) + self.__ui.findNextButton.setEnabled(enabled) def __findByReturnPressed(self): """ @@ -161,10 +179,10 @@ @param txt text to be shown in the combo (string) """ - self.findtextCombo.clear() - self.findtextCombo.addItems(self.findHistory) - self.findtextCombo.setEditText(txt) - self.findtextCombo.setFocus() + self.__ui.findtextCombo.clear() + self.__ui.findtextCombo.addItems(self.findHistory) + self.__ui.findtextCombo.setEditText(txt) + self.__ui.findtextCombo.setFocus() self.__setSearchButtons(txt != "") @@ -177,8 +195,8 @@ @param found flag indicating success (boolean) """ if found: - self.statusLabel.clear() + self.__ui.statusLabel.clear() else: - txt = self.findtextCombo.currentText() - self.statusLabel.setText( + txt = self.__ui.findtextCombo.currentText() + self.__ui.statusLabel.setText( self.tr("'{0}' was not found.").format(txt))