eric6/Helpviewer/GreaseMonkey/GreaseMonkeyConfiguration/GreaseMonkeyConfigurationListDelegate.py

branch
maintenance
changeset 7286
7eb04391adf7
parent 7226
babe80d84a3e
parent 7285
1ff497f33f31
child 7287
1c17f2191bdd
--- a/eric6/Helpviewer/GreaseMonkey/GreaseMonkeyConfiguration/GreaseMonkeyConfigurationListDelegate.py	Mon Sep 09 18:52:08 2019 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,197 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing a delegate for the special list widget for GreaseMonkey
-scripts.
-"""
-
-from __future__ import unicode_literals
-
-from PyQt5.QtCore import Qt, QSize, QRect
-from PyQt5.QtGui import QFontMetrics, QPalette, QFont
-from PyQt5.QtWidgets import QStyle, QStyledItemDelegate, QApplication
-
-from Globals import qVersionTuple
-
-if qVersionTuple() >= (5, 0, 0):
-    from PyQt5.QtWidgets import QStyleOptionViewItem
-else:
-    from PyQt5.QtWidgets import QStyleOptionViewItemV4 as QStyleOptionViewItem
-
-import UI.PixmapCache
-import Globals
-
-
-class GreaseMonkeyConfigurationListDelegate(QStyledItemDelegate):
-    """
-    Class implementing a delegate for the special list widget for GreaseMonkey
-    scripts.
-    """
-    IconSize = 32
-    RemoveIconSize = 16
-    CheckBoxSize = 18
-    MinPadding = 5
-    ItemWidth = 200
-    
-    def __init__(self, parent=None):
-        """
-        Constructor
-        
-        @param parent reference to the parent object (QObject)
-        """
-        super(GreaseMonkeyConfigurationListDelegate, self).__init__(parent)
-        
-        self.__removePixmap = \
-            UI.PixmapCache.getIcon("greaseMonkeyTrash.png").pixmap(
-                GreaseMonkeyConfigurationListDelegate.RemoveIconSize)
-        self.__rowHeight = 0
-        self.__padding = 0
-    
-    def padding(self):
-        """
-        Public method to get the padding used.
-        
-        @return padding used (integer)
-        """
-        return self.__padding
-    
-    def paint(self, painter, option, index):
-        """
-        Public method to paint the specified list item.
-        
-        @param painter painter object to paint to (QPainter)
-        @param option style option used for painting (QStyleOptionViewItem)
-        @param index model index of the item (QModelIndex)
-        """
-        opt = QStyleOptionViewItem(option)
-        self.initStyleOption(opt, index)
-        
-        widget = opt.widget
-        style = widget.style() if widget is not None else QApplication.style()
-        height = opt.rect.height()
-        center = height // 2 + opt.rect.top()
-        
-        # Prepare title font
-        titleFont = QFont(opt.font)
-        titleFont.setBold(True)
-        titleFont.setPointSize(titleFont.pointSize() + 1)
-        
-        titleMetrics = QFontMetrics(titleFont)
-        if Globals.isWindowsPlatform():
-            colorRole = QPalette.Text
-        else:
-            colorRole = QPalette.HighlightedText \
-                if opt.state & QStyle.State_Selected else QPalette.Text
-        
-        leftPos = self.__padding
-        rightPos = opt.rect.right() - self.__padding - \
-            GreaseMonkeyConfigurationListDelegate.RemoveIconSize
-        
-        # Draw background
-        style.drawPrimitive(QStyle.PE_PanelItemViewItem, opt, painter, widget)
-        
-        # Draw checkbox
-        checkBoxYPos = center - \
-            GreaseMonkeyConfigurationListDelegate.CheckBoxSize // 2
-        opt2 = QStyleOptionViewItem(opt)
-        if opt2.checkState == Qt.Checked:
-            opt2.state |= QStyle.State_On
-        else:
-            opt2.state |= QStyle.State_Off
-        styleCheckBoxRect = style.subElementRect(
-            QStyle.SE_ViewItemCheckIndicator, opt2, widget)
-        opt2.rect = QRect(
-            leftPos, checkBoxYPos,
-            styleCheckBoxRect.width(), styleCheckBoxRect.height())
-        style.drawPrimitive(QStyle.PE_IndicatorViewItemCheck, opt2, painter,
-                            widget)
-        leftPos = opt2.rect.right() + self.__padding
-        
-        # Draw icon
-        iconYPos = center - GreaseMonkeyConfigurationListDelegate.IconSize // 2
-        iconRect = QRect(leftPos, iconYPos,
-                         GreaseMonkeyConfigurationListDelegate.IconSize,
-                         GreaseMonkeyConfigurationListDelegate.IconSize)
-        pixmap = index.data(Qt.DecorationRole).pixmap(
-            GreaseMonkeyConfigurationListDelegate.IconSize)
-        painter.drawPixmap(iconRect, pixmap)
-        leftPos = iconRect.right() + self.__padding
-        
-        # Draw script name
-        name = index.data(Qt.DisplayRole)
-        leftTitleEdge = leftPos + 2
-        rightTitleEdge = rightPos - self.__padding
-        leftPosForVersion = titleMetrics.width(name) + self.__padding
-        nameRect = QRect(leftTitleEdge, opt.rect.top() + self.__padding,
-                         rightTitleEdge - leftTitleEdge, titleMetrics.height())
-        painter.setFont(titleFont)
-        style.drawItemText(painter, nameRect, Qt.AlignLeft, opt.palette, True,
-                           name, colorRole)
-        
-        # Draw version
-        version = index.data(Qt.UserRole)
-        versionRect = QRect(
-            nameRect.x() + leftPosForVersion, nameRect.y(),
-            rightTitleEdge - leftTitleEdge, titleMetrics.height())
-        versionFont = titleFont
-        painter.setFont(versionFont)
-        style.drawItemText(painter, versionRect, Qt.AlignLeft, opt.palette,
-                           True, version, colorRole)
-        
-        # Draw description
-        infoYPos = nameRect.bottom() + opt.fontMetrics.leading()
-        infoRect = QRect(
-            nameRect.x(), infoYPos,
-            nameRect.width(), opt.fontMetrics.height())
-        info = opt.fontMetrics.elidedText(
-            index.data(Qt.UserRole + 1), Qt.ElideRight, infoRect.width())
-        painter.setFont(opt.font)
-        style.drawItemText(painter, infoRect, Qt.AlignLeft | Qt.TextSingleLine,
-                           opt.palette, True, info, colorRole)
-        
-        # Draw remove button
-        removeIconYPos = center - \
-            GreaseMonkeyConfigurationListDelegate.RemoveIconSize // 2
-        removeIconRect = QRect(
-            rightPos, removeIconYPos,
-            GreaseMonkeyConfigurationListDelegate.RemoveIconSize,
-            GreaseMonkeyConfigurationListDelegate.RemoveIconSize)
-        painter.drawPixmap(removeIconRect, self.__removePixmap)
-    
-    def sizeHint(self, option, index):
-        """
-        Public method to get a size hint for the specified list item.
-        
-        @param option style option used for painting (QStyleOptionViewItem)
-        @param index model index of the item (QModelIndex)
-        @return size hint (QSize)
-        """
-        if not self.__rowHeight:
-            opt = QStyleOptionViewItem(option)
-            self.initStyleOption(opt, index)
-            
-            widget = opt.widget
-            style = widget.style() if widget is not None \
-                else QApplication.style()
-            padding = style.pixelMetric(QStyle.PM_FocusFrameHMargin) + 1
-            
-            titleFont = opt.font
-            titleFont.setBold(True)
-            titleFont.setPointSize(titleFont.pointSize() + 1)
-            
-            self.__padding = padding \
-                if padding > GreaseMonkeyConfigurationListDelegate.MinPadding \
-                else GreaseMonkeyConfigurationListDelegate.MinPadding
-            
-            titleMetrics = QFontMetrics(titleFont)
-            
-            self.__rowHeight = 2 * self.__padding + \
-                opt.fontMetrics.leading() + \
-                opt.fontMetrics.height() + \
-                titleMetrics.height()
-        
-        return QSize(GreaseMonkeyConfigurationListDelegate.ItemWidth,
-                     self.__rowHeight)

eric ide

mercurial