Added Extra key events to SlideController

This commit is contained in:
Tim Bentley 2010-02-03 18:29:02 +00:00
parent b5a4178ca7
commit 1164ab9beb
2 changed files with 51 additions and 6 deletions

View File

@ -227,6 +227,8 @@ class ServiceManager(QtGui.QWidget):
QtCore.SIGNAL(u'remote_edit_clear'), self.onRemoteEditClear)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'presentation types'), self.onPresentationTypes)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'servicemanager_next_item'), self.nextItem)
# Last little bits of setting up
self.config = PluginConfig(u'ServiceManager')
self.servicePath = self.config.get_data_path()
@ -236,12 +238,29 @@ class ServiceManager(QtGui.QWidget):
def onPresentationTypes(self, presentation_types):
self.presentation_types = presentation_types
def nextItem(self):
"""
Called by the SlideController to select the
next service item
"""
selected = self.ServiceManagerList.selectedItems()[0]
lookFor = 0
serviceIterator = QtGui.QTreeWidgetItemIterator(self.ServiceManagerList)
while serviceIterator.value():
if lookFor == 1 and serviceIterator.value().parent() is None:
self.ServiceManagerList.setCurrentItem(serviceIterator.value())
self.makeLive()
return
if serviceIterator.value() == selected:
lookFor = 1
serviceIterator += 1
def onMoveSelectionUp(self):
"""
Moves the selection up the window
Called by the up arrow
"""
serviceIterator = QTreeWidgetItemIterator(self.ServiceManagerList)
serviceIterator = QtGui.QTreeWidgetItemIterator(self.ServiceManagerList)
tempItem = None
setLastItem = False
while serviceIterator:
@ -266,7 +285,7 @@ class ServiceManager(QtGui.QWidget):
Moves the selection down the window
Called by the down arrow
"""
serviceIterator = QTreeWidgetItemIterator(self.ServiceManagerList)
serviceIterator = QtGui.QTreeWidgetItemIterator(self.ServiceManagerList)
firstItem = serviceIterator
setSelected = False
while serviceIterator:

View File

@ -41,6 +41,11 @@ class SlideList(QtGui.QTableWidget):
def __init__(self, parent=None, name=None):
QtGui.QTableWidget.__init__(self, parent.Controller)
self.parent = parent
self.hotkey_map = {QtCore.Qt.Key_Return: 'servicemanager_next_item',
QtCore.Qt.Key_Space: 'live_slidecontroller_next_noloop',
QtCore.Qt.Key_Enter: 'live_slidecontroller_next_noloop',
QtCore.Qt.Key_0: 'servicemanager_next_item',
QtCore.Qt.Key_Backspace: 'live_slidecontroller_previous_noloop'}
def keyPressEvent(self, event):
if type(event) == QtGui.QKeyEvent:
@ -57,6 +62,9 @@ class SlideList(QtGui.QTableWidget):
elif event.key() == QtCore.Qt.Key_PageDown:
self.parent.onSlideSelectedLast()
event.accept()
elif event.key() in self.hotkey_map:
Receiver.send_message(self.hotkey_map[event.key()]);
event.accept()
event.ignore()
else:
event.ignore()
@ -277,6 +285,11 @@ class SlideController(QtGui.QWidget):
QtCore.SIGNAL(u'%s_next' % prefix), self.onSlideSelectedNext)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'%s_previous' % prefix), self.onSlideSelectedPrevious)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'%s_next_noloop' % prefix), self.onSlideSelectedNextNoloop)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'%s_previous_noloop' % prefix),
self.onSlideSelectedPreviousNoloop)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'%s_last' % prefix), self.onSlideSelectedLast)
QtCore.QObject.connect(Receiver.get_receiver(),
@ -561,7 +574,10 @@ class SlideController(QtGui.QWidget):
rect.y(), rect.width(), rect.height())
self.SlidePreview.setPixmap(winimg)
def onSlideSelectedNext(self):
def onSlideSelectedNextNoloop(self):
self.onSlideSelectedNext(False)
def onSlideSelectedNext(self, loop=True):
"""
Go to the next slide.
"""
@ -574,11 +590,18 @@ class SlideController(QtGui.QWidget):
else:
row = self.PreviewListWidget.currentRow() + 1
if row == self.PreviewListWidget.rowCount():
row = 0
if loop:
row = 0
else:
Receiver.send_message('servicemanager_next_item')
return
self.PreviewListWidget.selectRow(row)
self.onSlideSelected()
def onSlideSelectedPrevious(self):
def onSlideSelectedPreviousNoloop(self):
self.onSlideSelectedPrevious(False)
def onSlideSelectedPrevious(self, loop=True):
"""
Go to the previous slide.
"""
@ -591,7 +614,10 @@ class SlideController(QtGui.QWidget):
else:
row = self.PreviewListWidget.currentRow() - 1
if row == -1:
row = self.PreviewListWidget.rowCount() - 1
if loop:
row = self.PreviewListWidget.rowCount() - 1
else:
row = 0
self.PreviewListWidget.selectRow(row)
self.onSlideSelected()