eric7/WebBrowser/GreaseMonkey/GreaseMonkeyConfiguration/GreaseMonkeyConfigurationListWidget.py

branch
eric7
changeset 8312
800c432b34c8
parent 8218
7c09585bd960
child 8318
962bce857696
equal deleted inserted replaced
8311:4e8b98454baa 8312:800c432b34c8
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2012 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a special list widget for GreaseMonkey scripts.
8 """
9
10 from PyQt5.QtCore import pyqtSignal, QRect
11 from PyQt5.QtWidgets import QListWidget, QListWidgetItem
12
13 from .GreaseMonkeyConfigurationListDelegate import (
14 GreaseMonkeyConfigurationListDelegate
15 )
16
17
18 class GreaseMonkeyConfigurationListWidget(QListWidget):
19 """
20 Class implementing a special list widget for GreaseMonkey scripts.
21
22 @signal removeItemRequested(item) emitted to indicate an item removal
23 request (QListWidgetItem)
24 """
25 removeItemRequested = pyqtSignal(QListWidgetItem)
26
27 def __init__(self, parent=None):
28 """
29 Constructor
30
31 @param parent reference to the parent widget (QWidget)
32 """
33 super().__init__(parent)
34
35 self.__delegate = GreaseMonkeyConfigurationListDelegate(self)
36 self.setItemDelegate(self.__delegate)
37
38 def __containsRemoveIcon(self, pos):
39 """
40 Private method to check, if the given position is inside the remove
41 icon.
42
43 @param pos position to check for (QPoint)
44 @return flag indicating success (boolean)
45 """
46 itm = self.itemAt(pos)
47 if itm is None:
48 return False
49
50 rect = self.visualItemRect(itm)
51 iconSize = GreaseMonkeyConfigurationListDelegate.RemoveIconSize
52 removeIconXPos = rect.right() - self.__delegate.padding() - iconSize
53 center = rect.height() // 2 + rect.top()
54 removeIconYPos = center - iconSize // 2
55
56 removeIconRect = QRect(removeIconXPos, removeIconYPos,
57 iconSize, iconSize)
58 return removeIconRect.contains(pos)
59
60 def mousePressEvent(self, evt):
61 """
62 Protected method handling presses of mouse buttons.
63
64 @param evt mouse press event (QMouseEvent)
65 """
66 if self.__containsRemoveIcon(evt.pos()):
67 self.removeItemRequested.emit(self.itemAt(evt.pos()))
68 return
69
70 super().mousePressEvent(evt)
71
72 def mouseDoubleClickEvent(self, evt):
73 """
74 Protected method handling mouse double click events.
75
76 @param evt mouse press event (QMouseEvent)
77 """
78 if self.__containsRemoveIcon(evt.pos()):
79 self.removeItemRequested.emit(self.itemAt(evt.pos()))
80 return
81
82 super().mouseDoubleClickEvent(
83 evt)

eric ide

mercurial