diff --git a/openlp/core/lib/searchedit.py b/openlp/core/lib/searchedit.py index f9383792a..b4069d9f8 100644 --- a/openlp/core/lib/searchedit.py +++ b/openlp/core/lib/searchedit.py @@ -47,34 +47,33 @@ class SearchEdit(QtGui.QLineEdit): Constructor. """ QtGui.QLineEdit.__init__(self, parent) - self._currentSearchType = -1 - self.clearButton = QtGui.QToolButton(self) - self.clearButton.setIcon(build_icon(u':/system/clear_shortcut.png')) - self.clearButton.setCursor(QtCore.Qt.ArrowCursor) - self.clearButton.setStyleSheet( - u'QToolButton { border: none; padding: 0px; }') - self.clearButton.resize(18, 18) - self.clearButton.hide() - QtCore.QObject.connect(self.clearButton, QtCore.SIGNAL(u'clicked()'), self._onClearButtonClicked) - QtCore.QObject.connect(self, QtCore.SIGNAL(u'textChanged(const QString&)'), self._onSearchEditTextChanged) - self._updateStyleSheet() + self._current_search_type = -1 + self.clear_button = QtGui.QToolButton(self) + self.clear_button.setIcon(build_icon(u':/system/clear_shortcut.png')) + self.clear_button.setCursor(QtCore.Qt.ArrowCursor) + self.clear_button.setStyleSheet(u'QToolButton { border: none; padding: 0px; }') + self.clear_button.resize(18, 18) + self.clear_button.hide() + QtCore.QObject.connect(self.clear_button, QtCore.SIGNAL(u'clicked()'), self._on_clear_button_clicked) + QtCore.QObject.connect(self, QtCore.SIGNAL(u'textChanged(const QString&)'), self._on_search_edit_text_changed) + self._update_style_sheet() self.setAcceptDrops(False) - def _updateStyleSheet(self): + def _update_style_sheet(self): """ - Internal method to update the stylesheet depending on which widgets are - available and visible. + Internal method to update the stylesheet depending on which widgets are available and visible. """ - frameWidth = self.style().pixelMetric(QtGui.QStyle.PM_DefaultFrameWidth) - rightPadding = self.clearButton.width() + frameWidth - if hasattr(self, u'menuButton'): - leftPadding = self.menuButton.width() - self.setStyleSheet(u'QLineEdit { padding-left: %spx; padding-right: %spx; } ' % (leftPadding, rightPadding)) + frame_width = self.style().pixelMetric(QtGui.QStyle.PM_DefaultFrameWidth) + right_padding = self.clear_button.width() + frame_width + if hasattr(self, u'menu_button'): + left_padding = self.menu_button.width() + stylesheet = u'QLineEdit { padding-left: %spx; padding-right: %spx; } ' % (left_padding, right_padding) else: - self.setStyleSheet(u'QLineEdit { padding-right: %spx; } ' % rightPadding) + stylesheet = u'QLineEdit { padding-right: %spx; } ' % right_padding + self.setStyleSheet(stylesheet) msz = self.minimumSizeHint() - self.setMinimumSize(max(msz.width(), self.clearButton.width() + (frameWidth * 2) + 2), - max(msz.height(), self.clearButton.height() + (frameWidth * 2) + 2)) + self.setMinimumSize(max(msz.width(), self.clear_button.width() + (frame_width * 2) + 2), + max(msz.height(), self.clear_button.height() + (frame_width * 2) + 2)) def resizeEvent(self, event): """ @@ -83,19 +82,19 @@ class SearchEdit(QtGui.QLineEdit): ``event`` The event that happened. """ - size = self.clearButton.size() - frameWidth = self.style().pixelMetric(QtGui.QStyle.PM_DefaultFrameWidth) - self.clearButton.move(self.rect().right() - frameWidth - size.width(), + size = self.clear_button.size() + frame_width = self.style().pixelMetric(QtGui.QStyle.PM_DefaultFrameWidth) + self.clear_button.move(self.rect().right() - frame_width - size.width(), (self.rect().bottom() + 1 - size.height()) / 2) - if hasattr(self, u'menuButton'): - size = self.menuButton.size() - self.menuButton.move(self.rect().left() + frameWidth + 2, (self.rect().bottom() + 1 - size.height()) / 2) + if hasattr(self, u'menu_button'): + size = self.menu_button.size() + self.menu_button.move(self.rect().left() + frame_width + 2, (self.rect().bottom() + 1 - size.height()) / 2) def currentSearchType(self): """ Readonly property to return the current search type. """ - return self._currentSearchType + return self._current_search_type def setCurrentSearchType(self, identifier): """ @@ -104,30 +103,28 @@ class SearchEdit(QtGui.QLineEdit): ``identifier`` The search type identifier (int). """ - menu = self.menuButton.menu() + menu = self.menu_button.menu() for action in menu.actions(): if identifier == action.data(): - # setPlaceholderText has been implemented in Qt 4.7 and in at - # least PyQt 4.9 (I am not sure, if it was implemented in - # PyQt 4.8). + # setPlaceholderText has been implemented in Qt 4.7 and in at least PyQt 4.9 (I am not sure, if it was + # implemented in PyQt 4.8). try: - self.setPlaceholderText(action.placeholderText) + self.setPlaceholderText(action.placeholder_text) except AttributeError: pass - self.menuButton.setDefaultAction(action) - self._currentSearchType = identifier + self.menu_button.setDefaultAction(action) + self._current_search_type = identifier self.emit(QtCore.SIGNAL(u'searchTypeChanged(int)'), identifier) return True def setSearchTypes(self, items): """ - A list of tuples to be used in the search type menu. The first item in - the list will be preselected as the default. + A list of tuples to be used in the search type menu. The first item in the list will be preselected as the + default. ``items`` - The list of tuples to use. The tuples should contain an integer - identifier, an icon (QIcon instance or string) and a title for the - item in the menu. In short, they should look like this:: + The list of tuples to use. The tuples should contain an integer identifier, an icon (QIcon instance or + string) and a title for the item in the menu. In short, they should look like this:: (, , , <place holder text>) @@ -142,63 +139,58 @@ class SearchEdit(QtGui.QLineEdit): menu = QtGui.QMenu(self) first = None for identifier, icon, title, placeholder in items: - action = create_widget_action(menu, text=title, icon=icon, - data=identifier, triggers=self._onMenuActionTriggered) - action.placeholderText = placeholder + action = create_widget_action( + menu, text=title, icon=icon, data=identifier, triggers=self._onMenuActionTriggered) + action.placeholder_text = placeholder if first is None: first = action - self._currentSearchType = identifier - if not hasattr(self, u'menuButton'): - self.menuButton = QtGui.QToolButton(self) - self.menuButton.setIcon(build_icon(u':/system/clear_shortcut.png')) - self.menuButton.setCursor(QtCore.Qt.ArrowCursor) - self.menuButton.setPopupMode(QtGui.QToolButton.InstantPopup) - self.menuButton.setStyleSheet( - u'QToolButton { border: none; padding: 0px 10px 0px 0px; }') - self.menuButton.resize(QtCore.QSize(28, 18)) - self.menuButton.setMenu(menu) - self.menuButton.setDefaultAction(first) - self.menuButton.show() - self._updateStyleSheet() + self._current_search_type = identifier + if not hasattr(self, u'menu_button'): + self.menu_button = QtGui.QToolButton(self) + self.menu_button.setIcon(build_icon(u':/system/clear_shortcut.png')) + self.menu_button.setCursor(QtCore.Qt.ArrowCursor) + self.menu_button.setPopupMode(QtGui.QToolButton.InstantPopup) + self.menu_button.setStyleSheet(u'QToolButton { border: none; padding: 0px 10px 0px 0px; }') + self.menu_button.resize(QtCore.QSize(28, 18)) + self.menu_button.setMenu(menu) + self.menu_button.setDefaultAction(first) + self.menu_button.show() + self._update_style_sheet() - def _onSearchEditTextChanged(self, text): + def _on_search_edit_text_changed(self, text): """ - Internally implemented slot to react to when the text in the line edit - has changed so that we can show or hide the clear button. + Internally implemented slot to react to when the text in the line edit has changed so that we can show or hide + the clear button. ``text`` - A :class:`~PyQt4.QtCore.QString` instance which represents the text - in the line edit. + A :class:`~PyQt4.QtCore.QString` instance which represents the text in the line edit. """ - self.clearButton.setVisible(bool(text)) + self.clear_button.setVisible(bool(text)) - def _onClearButtonClicked(self): + def _on_clear_button_clicked(self): """ - Internally implemented slot to react to the clear button being clicked - to clear the line edit. Once it has cleared the line edit, it emits the - ``cleared()`` signal so that an application can react to the clearing - of the line edit. + Internally implemented slot to react to the clear button being clicked to clear the line edit. Once it has + cleared the line edit, it emits the ``cleared()`` signal so that an application can react to the clearing of the + line edit. """ self.clear() self.emit(QtCore.SIGNAL(u'cleared()')) def _onMenuActionTriggered(self): """ - Internally implemented slot to react to the select of one of the search - types in the menu. Once it has set the correct action on the button, - and set the current search type (using the list of identifiers provided - by the developer), the ``searchTypeChanged(int)`` signal is emitted - with the identifier. + Internally implemented slot to react to the select of one of the search types in the menu. Once it has set the + correct action on the button, and set the current search type (using the list of identifiers provided by the + developer), the ``searchTypeChanged(int)`` signal is emitted with the identifier. """ sender = self.sender() - for action in self.menuButton.menu().actions(): + for action in self.menu_button.menu().actions(): action.setChecked(False) - self.menuButton.setDefaultAction(sender) - self._currentSearchType = sender.data() - # setPlaceholderText has been implemented in Qt 4.7 and in at least + self.menu_button.setDefaultAction(sender) + self._current_search_type = sender.data() + # setplaceholder_text has been implemented in Qt 4.7 and in at least # PyQt 4.9 (I am not sure, if it was implemented in PyQt 4.8). try: - self.setPlaceholderText(self.menuButton.defaultAction().placeholderText) + self.setPlaceholderText(self.menu_button.defaultAction().placeholder_text) except AttributeError: pass - self.emit(QtCore.SIGNAL(u'searchTypeChanged(int)'), self._currentSearchType) + self.emit(QtCore.SIGNAL(u'searchTypeChanged(int)'), self._current_search_type)