UI/SearchWidget.py

changeset 5710
b5809b948010
parent 5389
9b1c800daff3
child 6048
82ad8ec9548c
diff -r f81d0eca2c62 -r b5809b948010 UI/SearchWidget.py
--- 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))

eric ide

mercurial