Helpviewer/GreaseMonkey/GreaseMonkeyConfiguration/GreaseMonkeyConfigurationListWidget.py

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

eric ide

mercurial