Sat, 22 May 2021 18:51:46 +0200
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
# -*- 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)