# Copyright (c) 2009 - 2016, UChicago Argonne, LLC.
# See LICENSE file for details.
'''
event filters for certain MVC widgets such as QListView
'''
import os
from PyQt4 import QtCore
NAVIGATOR_KEYS = (QtCore.Qt.Key_Down, QtCore.Qt.Key_Up)
[docs]class ArrowKeysEventFilter(QtCore.QObject):
'''
watches for ArrowUp and ArrowDown (navigator keys) to change selection in QtCore.QAbstractListModel
'''
[docs] def eventFilter(self, listView, event):
'''
custom event filter
'''
if event.type() == QtCore.QEvent.KeyPress:
if event.key() in NAVIGATOR_KEYS:
prev = listView.currentIndex()
listView.keyPressEvent(event)
curr = listView.currentIndex()
parent = listView.parent().parent() # FIXME: fragile!
parent.selectModelByIndex(curr, prev)
return True
return False