--- a/eric7/E5Gui/EricLineEditButton.py Sat May 22 19:52:34 2021 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,97 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2010 - 2021 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module implementing a button class to be used with EricLineEdit. -""" - -from PyQt6.QtCore import Qt, QPoint, QPointF -from PyQt6.QtGui import QPainter, QPainterPath -from PyQt6.QtWidgets import QAbstractButton - - -# TODO: Get rid of this -class EricLineEditButton(QAbstractButton): - """ - Class implementing a button to be used with EricLineEdit. - """ - def __init__(self, parent=None): - """ - Constructor - - @param parent reference to the parent widget (QWidget) - """ - super().__init__(parent) - - self.__menu = None - self.__image = None - - self.setFocusPolicy(Qt.FocusPolicy.NoFocus) - self.setCursor(Qt.CursorShape.ArrowCursor) - self.setMinimumSize(16, 16) - - self.clicked.connect(self.__clicked) - - def setMenu(self, menu): - """ - Public method to set the button menu. - - @param menu reference to the menu (QMenu) - """ - self.__menu = menu - self.update() - - def menu(self): - """ - Public method to get a reference to the menu. - - @return reference to the associated menu (QMenu) - """ - return self.__menu - - def setIcon(self, icon): - """ - Public method to set the button icon. - - @param icon icon to be set (QIcon) - """ - if icon.isNull(): - self.__image = None - else: - self.__image = icon.pixmap(16, 16).toImage() - super().setIcon(icon) - - def __clicked(self): - """ - Private slot to handle a button click. - """ - if self.__menu: - pos = self.mapToGlobal(QPoint(0, self.height())) - self.__menu.exec(pos) - - def paintEvent(self, evt): - """ - Protected method handling a paint event. - - @param evt reference to the paint event (QPaintEvent) - """ - painter = QPainter(self) - - if self.__image is not None and not self.__image.isNull(): - x = (self.width() - self.__image.width()) // 2 - 1 - y = (self.height() - self.__image.height()) // 2 - 1 - painter.drawImage(x, y, self.__image) - - if self.__menu is not None: - triagPath = QPainterPath() - startPos = QPointF(self.width() - 5, self.height() - 3) - triagPath.moveTo(startPos) - triagPath.lineTo(startPos.x() + 4, startPos.y()) - triagPath.lineTo(startPos.x() + 2, startPos.y() + 2) - triagPath.closeSubpath() - painter.setPen(Qt.GlobalColor.black) - painter.setBrush(Qt.GlobalColor.black) - painter.setRenderHint(QPainter.RenderHint.Antialiasing, False) - painter.drawPath(triagPath)