forked from SeismicData/asdf_sextant
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstation_tree_widget.py
29 lines (25 loc) · 1.18 KB
/
station_tree_widget.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from PyQt4 import QtGui, QtCore
class StationTreeWidget(QtGui.QTreeWidget):
cellExited = QtCore.pyqtSignal(int, int)
itemExited = QtCore.pyqtSignal(QtGui.QTreeWidgetItem)
def __init__(self, *args, **kwargs):
QtGui.QTreeWidget.__init__(self, *args, **kwargs)
self._last_index = QtCore.QPersistentModelIndex()
self.viewport().installEventFilter(self)
self.setMouseTracking(True)
def eventFilter(self, widget, event):
if widget is self.viewport():
index = self._last_index
if event.type() == QtCore.QEvent.MouseMove:
index = self.indexAt(event.pos())
elif event.type() == QtCore.QEvent.Leave:
index = QtCore.QModelIndex()
if index != self._last_index:
row = self._last_index.row()
column = self._last_index.column()
item = self.itemAt(row, column)
if item is not None:
self.itemExited.emit(item)
self.cellExited.emit(row, column)
self._last_index = QtCore.QPersistentModelIndex(index)
return QtGui.QTreeWidget.eventFilter(self, widget, event)