Add some docstrings and rename some methods for clarity.

This commit is contained in:
Patrick Zimmermann 2013-04-23 19:12:08 +02:00
parent 1c2a5b5156
commit 145a1aedcb
2 changed files with 36 additions and 24 deletions

View File

@ -27,7 +27,8 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Temple Place, Suite 330, Boston, MA 02111-1307 USA #
############################################################################### ###############################################################################
""" """
The :mod:`slidecontroller` module contains the most important part of OpenLP - the slide controller The :mod:`listpreviewwidget` is a widget that lists the slides in the slide controller.
It is based on a QTableWidget but represents its contents in list form.
""" """
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
@ -37,6 +38,11 @@ from openlp.core.lib import ImageSource, Registry, ServiceItem
class ListPreviewWidget(QtGui.QTableWidget): class ListPreviewWidget(QtGui.QTableWidget):
def __init__(self, parent, screen_ratio): def __init__(self, parent, screen_ratio):
"""
Initializes the widget to default state.
An empty ServiceItem is used per default.
One needs to call replace_service_manager_item() to make this widget display something.
"""
super(QtGui.QTableWidget, self).__init__(parent) super(QtGui.QTableWidget, self).__init__(parent)
self.service_item = ServiceItem() self.service_item = ServiceItem()
self.screen_ratio = screen_ratio self.screen_ratio = screen_ratio
@ -59,7 +65,7 @@ class ListPreviewWidget(QtGui.QTableWidget):
def __recalculate_layout(self): def __recalculate_layout(self):
""" """
Recalculates the layout of the table widget. It will set height and width Recalculates the layout of the table widget. It will set height and width
of the table cells. QTableWidget does not adapt the cells to the widget size at all. of the table cells. QTableWidget does not adapt the cells to the widget size on its own.
""" """
self.setColumnWidth(0, self.viewport().width()) self.setColumnWidth(0, self.viewport().width())
if self.service_item: if self.service_item:
@ -81,7 +87,7 @@ class ListPreviewWidget(QtGui.QTableWidget):
self.screen_ratio = screen_ratio self.screen_ratio = screen_ratio
self.__recalculate_layout() self.__recalculate_layout()
def replace_service_manager_item(self, service_item, width, slide): def replace_service_manager_item(self, service_item, width, slideNumber):
""" """
Replaces the current preview items with the ones in service_item. Replaces the current preview items with the ones in service_item.
Displays the given slide. Displays the given slide.
@ -93,7 +99,7 @@ class ListPreviewWidget(QtGui.QTableWidget):
row = 0 row = 0
text = [] text = []
for framenumber, frame in enumerate(self.service_item.get_frames()): for framenumber, frame in enumerate(self.service_item.get_frames()):
self.setRowCount(self.rowCount() + 1) self.setRowCount(self.slide_count() + 1)
item = QtGui.QTableWidgetItem() item = QtGui.QTableWidgetItem()
slideHeight = 0 slideHeight = 0
if self.service_item.is_text(): if self.service_item.is_text():
@ -130,28 +136,34 @@ class ListPreviewWidget(QtGui.QTableWidget):
self.resizeRowsToContents() self.resizeRowsToContents()
self.setColumnWidth(0, self.viewport().width()) self.setColumnWidth(0, self.viewport().width())
self.setFocus() self.setFocus()
self.change_slide(slide) self.change_slide(slideNumber)
def change_slide(self, slide): def change_slide(self, slide):
""" """
Switches to the given row. Switches to the given row.
""" """
if slide >= self.rowCount(): if slide >= self.slide_count():
slide = self.rowCount() - 1 slide = self.slide_count() - 1
#Scroll to next item if possible. #Scroll to next item if possible.
if slide + 1 < self.rowCount(): if slide + 1 < self.slide_count():
self.scrollToItem(self.item(slide + 1, 0)) self.scrollToItem(self.item(slide + 1, 0))
self.selectRow(slide) self.selectRow(slide)
def currentRow(self): def current_slide_number(self):
"""
Returns the position of the currently active item. Will return -1 if the widget is empty.
"""
return super(ListPreviewWidget, self).currentRow() return super(ListPreviewWidget, self).currentRow()
def rowCount(self): def slide_count(self):
"""
Returns the number of slides this widget holds.
"""
return super(ListPreviewWidget, self).rowCount() return super(ListPreviewWidget, self).rowCount()
def _get_image_manager(self): def _get_image_manager(self):
""" """
Adds the image manager to the class dynamically Adds the image manager to the class dynamically.
""" """
if not hasattr(self, u'_image_manager'): if not hasattr(self, u'_image_manager'):
self._image_manager = Registry().get(u'image_manager') self._image_manager = Registry().get(u'image_manager')
@ -161,7 +173,7 @@ class ListPreviewWidget(QtGui.QTableWidget):
def _get_main_window(self): def _get_main_window(self):
""" """
Adds the main window to the class dynamically Adds the main window to the class dynamically.
""" """
if not hasattr(self, u'_main_window'): if not hasattr(self, u'_main_window'):
self._main_window = Registry().get(u'main_window') self._main_window = Registry().get(u'main_window')

View File

@ -692,7 +692,7 @@ class SlideController(DisplayController):
Replacement item following a remote edit Replacement item following a remote edit
""" """
if item == self.service_item: if item == self.service_item:
self._processItem(item, self.preview_widget.currentRow()) self._processItem(item, self.preview_widget.current_slide_number())
def addServiceManagerItem(self, item, slideno): def addServiceManagerItem(self, item, slideno):
""" """
@ -960,9 +960,9 @@ class SlideController(DisplayController):
Generate the preview when you click on a slide. Generate the preview when you click on a slide.
if this is the Live Controller also display on the screen if this is the Live Controller also display on the screen
""" """
row = self.preview_widget.currentRow() row = self.preview_widget.current_slide_number()
self.selected_row = 0 self.selected_row = 0
if -1 < row < self.preview_widget.rowCount(): if -1 < row < self.preview_widget.slide_count():
if self.service_item.is_command(): if self.service_item.is_command():
if self.is_live and not start: if self.is_live and not start:
Registry().execute(u'%s_slide' % self.service_item.name.lower(), Registry().execute(u'%s_slide' % self.service_item.name.lower(),
@ -1033,8 +1033,8 @@ class SlideController(DisplayController):
if self.service_item.is_command() and self.is_live: if self.service_item.is_command() and self.is_live:
self.updatePreview() self.updatePreview()
else: else:
row = self.preview_widget.currentRow() + 1 row = self.preview_widget.current_slide_number() + 1
if row == self.preview_widget.rowCount(): if row == self.preview_widget.slide_count():
if wrap is None: if wrap is None:
if self.slide_limits == SlideLimits.Wrap: if self.slide_limits == SlideLimits.Wrap:
row = 0 row = 0
@ -1042,11 +1042,11 @@ class SlideController(DisplayController):
self.serviceNext() self.serviceNext()
return return
else: else:
row = self.preview_widget.rowCount() - 1 row = self.preview_widget.slide_count() - 1
elif wrap: elif wrap:
row = 0 row = 0
else: else:
row = self.preview_widget.rowCount() - 1 row = self.preview_widget.slide_count() - 1
self.preview_widget.change_slide(row) self.preview_widget.change_slide(row)
self.slideSelected() self.slideSelected()
@ -1060,10 +1060,10 @@ class SlideController(DisplayController):
if self.service_item.is_command() and self.is_live: if self.service_item.is_command() and self.is_live:
self.updatePreview() self.updatePreview()
else: else:
row = self.preview_widget.currentRow() - 1 row = self.preview_widget.current_slide_number() - 1
if row == -1: if row == -1:
if self.slide_limits == SlideLimits.Wrap: if self.slide_limits == SlideLimits.Wrap:
row = self.preview_widget.rowCount() - 1 row = self.preview_widget.slide_count() - 1
elif self.is_live and self.slide_limits == SlideLimits.Next: elif self.is_live and self.slide_limits == SlideLimits.Next:
self.keypress_queue.append(ServiceItemAction.PreviousLastSlide) self.keypress_queue.append(ServiceItemAction.PreviousLastSlide)
self._process_queue() self._process_queue()
@ -1087,7 +1087,7 @@ class SlideController(DisplayController):
""" """
Start the timer loop running and store the timer id Start the timer loop running and store the timer id
""" """
if self.preview_widget.rowCount() > 1: if self.preview_widget.slide_count() > 1:
self.timer_id = self.startTimer(int(self.delay_spin_box.value()) * 1000) self.timer_id = self.startTimer(int(self.delay_spin_box.value()) * 1000)
def on_stop_loop(self): def on_stop_loop(self):
@ -1197,8 +1197,8 @@ class SlideController(DisplayController):
""" """
If preview copy slide item to live controller from Preview Controller If preview copy slide item to live controller from Preview Controller
""" """
row = self.preview_widget.currentRow() row = self.preview_widget.current_slide_number()
if -1 < row < self.preview_widget.rowCount(): if -1 < row < self.preview_widget.slide_count():
if self.service_item.from_service: if self.service_item.from_service:
self.service_manager.preview_live(self.service_item.unique_identifier, row) self.service_manager.preview_live(self.service_item.unique_identifier, row)
else: else: