openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #20535
[Merge] lp:~googol/openlp/code-standards into lp:openlp
Andreas Preikschat has proposed merging lp:~googol/openlp/code-standards into lp:openlp.
Requested reviews:
OpenLP Core (openlp-core)
For more details, see:
https://code.launchpad.net/~googol/openlp/code-standards/+merge/159883
Hello,
- camelCase -> words_with_underscore
- fixed short lines
- fixed docs
(Sorry, when some of the changes seem to be superfluous, I was just checking the files and when I saw that a fullstop was missing I added it.)
--
https://code.launchpad.net/~googol/openlp/code-standards/+merge/159883
Your team OpenLP Core is requested to review the proposed merge of lp:~googol/openlp/code-standards into lp:openlp.
=== modified file 'openlp/plugins/images/__init__.py'
--- openlp/plugins/images/__init__.py 2013-01-01 16:33:41 +0000
+++ openlp/plugins/images/__init__.py 2013-04-19 19:45:32 +0000
@@ -27,6 +27,6 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
"""
-The :mod:`images` module provides the Images plugin. The Images plugin
-provides the facility to display images from OpenLP.
+The :mod:`images` module provides the Images plugin. The Images plugin provides the facility to display images from
+OpenLP.
"""
=== modified file 'openlp/plugins/images/forms/__init__.py'
--- openlp/plugins/images/forms/__init__.py 2013-01-30 10:57:06 +0000
+++ openlp/plugins/images/forms/__init__.py 2013-04-19 19:45:32 +0000
@@ -27,20 +27,16 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
"""
-Forms in OpenLP are made up of two classes. One class holds all the graphical
-elements, like buttons and lists, and the other class holds all the functional
-code, like slots and loading and saving.
-
-The first class, commonly known as the **Dialog** class, is typically named
-``Ui_<name>Dialog``. It is a slightly modified version of the class that the
-``pyuic4`` command produces from Qt4's .ui file. Typical modifications will be
-converting most strings from "" to u'' and using OpenLP's ``translate()``
-function for translating strings.
-
-The second class, commonly known as the **Form** class, is typically named
-``<name>Form``. This class is the one which is instantiated and used. It uses
-dual inheritance to inherit from (usually) QtGui.QDialog and the Ui class
-mentioned above, like so::
+Forms in OpenLP are made up of two classes. One class holds all the graphical elements, like buttons and lists, and the
+other class holds all the functional code, like slots and loading and saving.
+
+The first class, commonly known as the **Dialog** class, is typically named ``Ui_<name>Dialog``. It is a slightly
+modified version of the class that the ``pyuic4`` command produces from Qt4's .ui file. Typical modifications will be
+converting most strings from "" to u'' and using OpenLP's ``translate()`` function for translating strings.
+
+The second class, commonly known as the **Form** class, is typically named ``<name>Form``. This class is the one which
+is instantiated and used. It uses dual inheritance to inherit from (usually) QtGui.QDialog and the Ui class mentioned
+above, like so::
class AuthorsForm(QtGui.QDialog, Ui_AuthorsDialog):
@@ -48,9 +44,8 @@
QtGui.QDialog.__init__(self, parent)
self.setupUi(self)
-This allows OpenLP to use ``self.object`` for all the GUI elements while keeping
-them separate from the functionality, so that it is easier to recreate the GUI
-from the .ui files later if necessary.
+This allows OpenLP to use ``self.object`` for all the GUI elements while keeping them separate from the functionality,
+so that it is easier to recreate the GUI from the .ui files later if necessary.
"""
from addgroupform import AddGroupForm
=== modified file 'openlp/plugins/images/forms/addgroupform.py'
--- openlp/plugins/images/forms/addgroupform.py 2013-03-18 13:43:45 +0000
+++ openlp/plugins/images/forms/addgroupform.py 2013-04-19 19:45:32 +0000
@@ -47,16 +47,16 @@
def exec_(self, clear=True, show_top_level_group=False, selected_group=None):
"""
- Show the form
+ Show the form.
``clear``
- Set to False if the text input box should not be cleared when showing the dialog (default: True)
+ Set to False if the text input box should not be cleared when showing the dialog (default: True).
``show_top_level_group``
- Set to True when "-- Top level group --" should be showed as first item (default: False)
+ Set to True when "-- Top level group --" should be showed as first item (default: False).
``selected_group``
- The ID of the group that should be selected by default when showing the dialog
+ The ID of the group that should be selected by default when showing the dialog.
"""
if clear:
self.name_edit.clear()
@@ -72,7 +72,7 @@
def accept(self):
"""
- Override the accept() method from QDialog to make sure something is entered in the text input box
+ Override the accept() method from QDialog to make sure something is entered in the text input box.
"""
if not self.name_edit.text():
critical_error_message_box(message=translate('ImagePlugin.AddGroupForm',
=== modified file 'openlp/plugins/images/forms/choosegroupform.py'
--- openlp/plugins/images/forms/choosegroupform.py 2013-03-18 13:43:45 +0000
+++ openlp/plugins/images/forms/choosegroupform.py 2013-04-19 19:45:32 +0000
@@ -48,10 +48,10 @@
Show the form
``selected_group``
- The ID of the group that should be selected by default when showing the dialog
+ The ID of the group that should be selected by default when showing the dialog.
"""
if selected_group is not None:
- for i in range(self.group_combobox.count()):
- if self.group_combobox.itemData(i) == selected_group:
- self.group_combobox.setCurrentIndex(i)
+ for index in range(self.group_combobox.count()):
+ if self.group_combobox.itemData(index) == selected_group:
+ self.group_combobox.setCurrentIndex(index)
return QtGui.QDialog.exec_(self)
=== modified file 'openlp/plugins/images/imageplugin.py'
--- openlp/plugins/images/imageplugin.py 2013-03-19 19:43:22 +0000
+++ openlp/plugins/images/imageplugin.py 2013-04-19 19:45:32 +0000
@@ -70,10 +70,10 @@
def app_startup(self):
"""
- Perform tasks on application startup
+ Perform tasks on application startup.
"""
Plugin.app_startup(self)
- # Convert old settings-based image list to the database
+ # Convert old settings-based image list to the database.
files_from_config = Settings().get_files_from_config(self)
if files_from_config:
log.debug(u'Importing images list from old config: %s' % files_from_config)
@@ -93,7 +93,7 @@
def set_plugin_text_strings(self):
"""
- Called to define all translatable texts of the plugin
+ Called to define all translatable texts of the plugin.
"""
## Name PluginList ##
self.text_strings[StringContent.Name] = {
@@ -117,8 +117,8 @@
def config_update(self):
"""
- Triggered by saving and changing the image border. Sets the images in image manager to require updates.
- Actual update is triggered by the last part of saving the config.
+ Triggered by saving and changing the image border. Sets the images in image manager to require updates. Actual
+ update is triggered by the last part of saving the config.
"""
log.info(u'Images config_update')
background = QtGui.QColor(Settings().value(self.settings_section + u'/background color'))
=== modified file 'openlp/plugins/images/lib/db.py'
--- openlp/plugins/images/lib/db.py 2013-01-30 10:57:06 +0000
+++ openlp/plugins/images/lib/db.py 2013-04-19 19:45:32 +0000
@@ -27,7 +27,7 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
"""
-The :mod:`db` module provides the database and schema that is the backend for the Images plugin
+The :mod:`db` module provides the database and schema that is the backend for the Images plugin.
"""
from sqlalchemy import Column, ForeignKey, Table, types
@@ -38,14 +38,14 @@
class ImageGroups(BaseModel):
"""
- ImageGroups model
+ ImageGroups model.
"""
pass
class ImageFilenames(BaseModel):
"""
- ImageFilenames model
+ ImageFilenames model.
"""
pass
=== modified file 'openlp/plugins/images/lib/mediaitem.py'
--- openlp/plugins/images/lib/mediaitem.py 2013-04-16 16:37:26 +0000
+++ openlp/plugins/images/lib/mediaitem.py 2013-04-19 19:45:32 +0000
@@ -40,6 +40,7 @@
from openlp.plugins.images.forms import AddGroupForm, ChooseGroupForm
from openlp.plugins.images.lib.db import ImageFilenames, ImageGroups
+
log = logging.getLogger(__name__)
@@ -60,24 +61,23 @@
self.fill_groups_combobox(self.choose_group_form.group_combobox)
self.fill_groups_combobox(self.add_group_form.parent_group_combobox)
Registry().register_function(u'live_theme_changed', self.live_theme_changed)
- # Allow DnD from the desktop
+ # Allow DnD from the desktop.
self.list_view.activateDnD()
def retranslateUi(self):
- self.on_new_prompt = translate('ImagePlugin.MediaItem',
- 'Select Image(s)')
+ self.on_new_prompt = translate('ImagePlugin.MediaItem', 'Select Image(s)')
file_formats = get_images_filter()
self.on_new_file_masks = u'%s;;%s (*.*) (*)' % (file_formats, UiStrings().AllFiles)
self.addGroupAction.setText(UiStrings().AddGroup)
self.addGroupAction.setToolTip(UiStrings().AddGroup)
- self.replaceAction.setText(UiStrings().ReplaceBG)
- self.replaceAction.setToolTip(UiStrings().ReplaceLiveBG)
- self.resetAction.setText(UiStrings().ResetBG)
- self.resetAction.setToolTip(UiStrings().ResetLiveBG)
+ self.replace_action.setText(UiStrings().ReplaceBG)
+ self.replace_action.setToolTip(UiStrings().ReplaceLiveBG)
+ self.reset_action.setText(UiStrings().ResetBG)
+ self.reset_action.setToolTip(UiStrings().ResetLiveBG)
def required_icons(self):
"""
- Set which icons the media manager tab should show
+ Set which icons the media manager tab should show.
"""
MediaManagerItem.required_icons(self)
self.has_file_icon = True
@@ -94,13 +94,13 @@
self.servicePath = os.path.join(AppLocation.get_section_data_path(self.settings_section), u'thumbnails')
check_directory_exists(self.servicePath)
# Load images from the database
- self.loadFullList(
+ self.load_full_list(
self.manager.get_all_objects(ImageFilenames, order_by_ref=ImageFilenames.filename), initial_load=True)
def add_list_view_to_toolbar(self):
"""
- Creates the main widget for listing items the media item is tracking.
- This method overloads MediaManagerItem.add_list_view_to_toolbar
+ Creates the main widget for listing items the media item is tracking. This method overloads
+ MediaManagerItem.add_list_view_to_toolbar.
"""
# Add the List widget
self.list_view = TreeWidgetWithDnD(self, self.plugin.name)
@@ -155,44 +155,41 @@
self.list_view.doubleClicked.connect(self.on_double_clicked)
self.list_view.itemSelectionChanged.connect(self.on_selection_change)
self.list_view.customContextMenuRequested.connect(self.context_menu)
- self.list_view.addAction(self.replaceAction)
+ self.list_view.addAction(self.replace_action)
def add_custom_context_actions(self):
"""
- Add custom actions to the context menu
+ Add custom actions to the context menu.
"""
create_widget_action(self.list_view, separator=True)
create_widget_action(self.list_view,
- text=UiStrings().AddGroup,
- icon=u':/images/image_new_group.png',
- triggers=self.onAddGroupClick)
+ text=UiStrings().AddGroup, icon=u':/images/image_new_group.png', triggers=self.on_add_group_click)
create_widget_action(self.list_view,
text=self.plugin.get_string(StringContent.Load)[u'tooltip'],
- icon=u':/general/general_open.png',
- triggers=self.on_file_click)
+ icon=u':/general/general_open.png', triggers=self.on_file_click)
def add_start_header_bar(self):
"""
- Add custom buttons to the start of the toolbar
+ Add custom buttons to the start of the toolbar.
"""
self.addGroupAction = self.toolbar.add_toolbar_action(u'addGroupAction',
- icon=u':/images/image_new_group.png', triggers=self.onAddGroupClick)
+ icon=u':/images/image_new_group.png', triggers=self.on_add_group_click)
def add_end_header_bar(self):
"""
Add custom buttons to the end of the toolbar
"""
- self.replaceAction = self.toolbar.add_toolbar_action(u'replaceAction',
- icon=u':/slides/slide_blank.png', triggers=self.onReplaceClick)
- self.resetAction = self.toolbar.add_toolbar_action(u'resetAction',
- icon=u':/system/system_close.png', visible=False, triggers=self.onResetClick)
+ self.replace_action = self.toolbar.add_toolbar_action(u'replace_action',
+ icon=u':/slides/slide_blank.png', triggers=self.on_replace_click)
+ self.reset_action = self.toolbar.add_toolbar_action(u'reset_action',
+ icon=u':/system/system_close.png', visible=False, triggers=self.on_reset_click)
def recursively_delete_group(self, image_group):
"""
- Recursively deletes a group and all groups and images in it
+ Recursively deletes a group and all groups and images in it.
``image_group``
- The ImageGroups instance of the group that will be deleted
+ The ImageGroups instance of the group that will be deleted.
"""
images = self.manager.get_all_objects(ImageFilenames, ImageFilenames.group_id == image_group.id)
for image in images:
@@ -205,7 +202,7 @@
def on_delete_click(self):
"""
- Remove an image item from the list
+ Remove an image item from the list.
"""
# Turn off auto preview triggers.
self.list_view.blockSignals(True)
@@ -226,11 +223,11 @@
self.manager.delete_object(ImageFilenames, row_item.data(0, QtCore.Qt.UserRole).id)
elif isinstance(item_data, ImageGroups):
if QtGui.QMessageBox.question(self.list_view.parent(),
- translate('ImagePlugin.MediaItem', 'Remove group'),
- translate('ImagePlugin.MediaItem',
- 'Are you sure you want to remove "%s" and everything in it?') % item_data.group_name,
- QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes |
- QtGui.QMessageBox.No)) == QtGui.QMessageBox.Yes:
+ translate('ImagePlugin.MediaItem', 'Remove group'),
+ translate('ImagePlugin.MediaItem',
+ 'Are you sure you want to remove "%s" and everything in it?') % item_data.group_name,
+ QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes |
+ QtGui.QMessageBox.No)) == QtGui.QMessageBox.Yes:
self.recursively_delete_group(item_data)
self.manager.delete_object(ImageGroups, row_item.data(0, QtCore.Qt.UserRole).id)
if item_data.parent_id == 0:
@@ -246,13 +243,13 @@
def add_sub_groups(self, group_list, parent_group_id):
"""
- Recursively add subgroups to the given parent group in a QTreeWidget
+ Recursively add subgroups to the given parent group in a QTreeWidget.
``group_list``
- The List object that contains all QTreeWidgetItems
+ The List object that contains all QTreeWidgetItems.
``parent_group_id``
- The ID of the group that will be added recursively
+ The ID of the group that will be added recursively.
"""
image_groups = self.manager.get_all_objects(ImageGroups, ImageGroups.parent_id == parent_group_id)
image_groups.sort(key=lambda group_object: get_locale_key(group_object.group_name))
@@ -271,16 +268,16 @@
def fill_groups_combobox(self, combobox, parent_group_id=0, prefix=''):
"""
- Recursively add groups to the combobox in the 'Add group' dialog
+ Recursively add groups to the combobox in the 'Add group' dialog.
``combobox``
- The QComboBox to add the options to
+ The QComboBox to add the options to.
``parent_group_id``
- The ID of the group that will be added
+ The ID of the group that will be added.
``prefix``
- A string containing the prefix that will be added in front of the groupname for each level of the tree
+ A string containing the prefix that will be added in front of the groupname for each level of the tree.
"""
if parent_group_id == 0:
combobox.clear()
@@ -293,13 +290,13 @@
def expand_group(self, group_id, root_item=None):
"""
- Expand groups in the widget recursively
+ Expand groups in the widget recursively.
``group_id``
- The ID of the group that will be expanded
+ The ID of the group that will be expanded.
``root_item``
- This option is only used for recursion purposes
+ This option is only used for recursion purposes.
"""
return_value = False
if root_item is None:
@@ -314,29 +311,29 @@
return True
return return_value
- def loadFullList(self, images, initial_load=False, open_group=None):
+ def load_full_list(self, images, initial_load=False, open_group=None):
"""
Replace the list of images and groups in the interface.
``images``
- A List of ImageFilenames objects that will be used to reload the mediamanager list
+ A List of ImageFilenames objects that will be used to reload the mediamanager list.
``initial_load``
- When set to False, the busy cursor and progressbar will be shown while loading images
+ When set to False, the busy cursor and progressbar will be shown while loading images.
``open_group``
- ImageGroups object of the group that must be expanded after reloading the list in the interface
+ ImageGroups object of the group that must be expanded after reloading the list in the interface.
"""
if not initial_load:
self.application.set_busy_cursor()
self.main_window.display_progress_bar(len(images))
self.list_view.clear()
- # Load the list of groups and add them to the treeView
+ # Load the list of groups and add them to the treeView.
group_items = {}
self.add_sub_groups(group_items, parent_group_id=0)
if open_group is not None:
self.expand_group(open_group.id)
- # Sort the images by its filename considering language specific
+ # Sort the images by its filename considering language specific.
# characters.
images.sort(key=lambda image_object: get_locale_key(os.path.split(unicode(image_object.filename))[1]))
for imageFile in images:
@@ -455,7 +452,7 @@
self.main_window.display_progress_bar(len(images))
# Save the new images in the database
self.save_new_images_list(images, group_id=parent_group.id, reload_list=False)
- self.loadFullList(self.manager.get_all_objects(ImageFilenames, order_by_ref=ImageFilenames.filename),
+ self.load_full_list(self.manager.get_all_objects(ImageFilenames, order_by_ref=ImageFilenames.filename),
initial_load=initial_load, open_group=parent_group)
self.application.set_normal_cursor()
@@ -482,7 +479,7 @@
self.manager.save_object(imageFile)
self.main_window.increment_progress_bar()
if reload_list and images_list:
- self.loadFullList(self.manager.get_all_objects(ImageFilenames, order_by_ref=ImageFilenames.filename))
+ self.load_full_list(self.manager.get_all_objects(ImageFilenames, order_by_ref=ImageFilenames.filename))
def dnd_move_internal(self, target):
"""
@@ -530,7 +527,7 @@
image_items.sort(key=lambda item: get_locale_key(item.text(0)))
target_group.addChildren(image_items)
- def generate_slide_data(self, service_item, item=None, xmlVersion=False,
+ def generate_slide_data(self, service_item, item=None, xml_version=False,
remote=False, context=ServiceItemContext.Service):
"""
Generate the slide data. Needs to be implemented by the plugin.
@@ -608,7 +605,7 @@
else:
return False
- def onAddGroupClick(self):
+ def on_add_group_click(self):
"""
Called to add a new group
"""
@@ -629,7 +626,7 @@
group_name=self.add_group_form.name_edit.text())
if not self.check_group_exists(new_group):
if self.manager.save_object(new_group):
- self.loadFullList(self.manager.get_all_objects(ImageFilenames,
+ self.load_full_list(self.manager.get_all_objects(ImageFilenames,
order_by_ref=ImageFilenames.filename))
self.expand_group(new_group.id)
self.fill_groups_combobox(self.choose_group_form.group_combobox)
@@ -638,23 +635,22 @@
critical_error_message_box(
message=translate('ImagePlugin.AddGroupForm', 'Could not add the new group.'))
else:
- critical_error_message_box(
- message=translate('ImagePlugin.AddGroupForm', 'This group already exists.'))
+ critical_error_message_box(message=translate('ImagePlugin.AddGroupForm', 'This group already exists.'))
- def onResetClick(self):
- """
- Called to reset the Live background with the image selected,
- """
- self.resetAction.setVisible(False)
+ def on_reset_click(self):
+ """
+ Called to reset the Live background with the image selected.
+ """
+ self.reset_action.setVisible(False)
self.live_controller.display.reset_image()
def live_theme_changed(self):
"""
- Triggered by the change of theme in the slide controller
+ Triggered by the change of theme in the slide controller.
"""
- self.resetAction.setVisible(False)
+ self.reset_action.setVisible(False)
- def onReplaceClick(self):
+ def on_replace_click(self):
"""
Called to replace Live backgound with the image selected.
"""
@@ -663,12 +659,12 @@
background = QtGui.QColor(Settings().value(self.settings_section + u'/background color'))
bitem = self.list_view.selectedItems()[0]
if not isinstance(bitem.data(0, QtCore.Qt.UserRole), ImageFilenames):
- # Only continue when an image is selected
+ # Only continue when an image is selected.
return
filename = bitem.data(0, QtCore.Qt.UserRole).filename
if os.path.exists(filename):
if self.live_controller.display.direct_image(filename, background):
- self.resetAction.setVisible(True)
+ self.reset_action.setVisible(True)
else:
critical_error_message_box(UiStrings().LiveBGError,
translate('ImagePlugin.MediaItem', 'There was no display item to amend.'))
=== modified file 'openlp/plugins/media/__init__.py'
--- openlp/plugins/media/__init__.py 2012-12-29 20:56:56 +0000
+++ openlp/plugins/media/__init__.py 2013-04-19 19:45:32 +0000
@@ -27,8 +27,7 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
"""
-The :mod:`media` module provides the Media plugin which allows OpenLP to
-display videos. The media supported depends not only on the Python support
-but also extensively on the codecs installed on the underlying operating system
-being picked up and usable by Python.
+The :mod:`media` module provides the Media plugin which allows OpenLP to display videos. The media supported depends not
+only on the Python support but also extensively on the codecs installed on the underlying operating system being picked
+up and usable by Python.
"""
=== modified file 'openlp/plugins/media/lib/mediaitem.py'
--- openlp/plugins/media/lib/mediaitem.py 2013-04-16 16:37:26 +0000
+++ openlp/plugins/media/lib/mediaitem.py 2013-04-19 19:45:32 +0000
@@ -39,13 +39,16 @@
from openlp.core.ui.media import get_media_players, set_media_players
from openlp.core.utils import AppLocation, get_locale_key
+
log = logging.getLogger(__name__)
+
CLAPPERBOARD = u':/media/slidecontroller_multimedia.png'
-VIDEO = build_icon(QtGui.QImage(u':/media/media_video.png'))
-AUDIO = build_icon(QtGui.QImage(u':/media/media_audio.png'))
-DVDICON = build_icon(QtGui.QImage(u':/media/media_video.png'))
-ERROR = build_icon(QtGui.QImage(u':/general/general_delete.png'))
+VIDEO_ICON = build_icon(QtGui.QImage(u':/media/media_video.png'))
+AUDIO_ICON = build_icon(QtGui.QImage(u':/media/media_audio.png'))
+DVD_ICON = build_icon(QtGui.QImage(u':/media/media_video.png'))
+ERROR_ICON = build_icon(QtGui.QImage(u':/general/general_delete.png'))
+
class MediaMediaItem(MediaManagerItem):
"""
@@ -79,12 +82,12 @@
def retranslateUi(self):
self.on_new_prompt = translate('MediaPlugin.MediaItem', 'Select Media')
- self.replaceAction.setText(UiStrings().ReplaceBG)
- self.replaceAction.setToolTip(UiStrings().ReplaceLiveBG)
- self.resetAction.setText(UiStrings().ResetBG)
- self.resetAction.setToolTip(UiStrings().ResetLiveBG)
+ self.replace_action.setText(UiStrings().ReplaceBG)
+ self.replace_action.setToolTip(UiStrings().ReplaceLiveBG)
+ self.reset_action.setText(UiStrings().ResetBG)
+ self.reset_action.setToolTip(UiStrings().ResetLiveBG)
self.automatic = UiStrings().Automatic
- self.displayTypeLabel.setText(translate('MediaPlugin.MediaItem', 'Use Player:'))
+ self.display_type_label.setText(translate('MediaPlugin.MediaItem', 'Use Player:'))
self.rebuild_players()
def required_icons(self):
@@ -98,27 +101,28 @@
def add_list_view_to_toolbar(self):
MediaManagerItem.add_list_view_to_toolbar(self)
- self.list_view.addAction(self.replaceAction)
+ self.list_view.addAction(self.replace_action)
def add_end_header_bar(self):
# Replace backgrounds do not work at present so remove functionality.
- self.replaceAction = self.toolbar.add_toolbar_action(u'replaceAction', icon=u':/slides/slide_blank.png',
+ self.replace_action = self.toolbar.add_toolbar_action(u'replace_action', icon=u':/slides/slide_blank.png',
triggers=self.onReplaceClick)
- self.resetAction = self.toolbar.add_toolbar_action(u'resetAction', icon=u':/system/system_close.png',
+ self.reset_action = self.toolbar.add_toolbar_action(u'reset_action', icon=u':/system/system_close.png',
visible=False, triggers=self.onResetClick)
- self.mediaWidget = QtGui.QWidget(self)
- self.mediaWidget.setObjectName(u'mediaWidget')
- self.displayLayout = QtGui.QFormLayout(self.mediaWidget)
- self.displayLayout.setMargin(self.displayLayout.spacing())
- self.displayLayout.setObjectName(u'displayLayout')
- self.displayTypeLabel = QtGui.QLabel(self.mediaWidget)
- self.displayTypeLabel.setObjectName(u'displayTypeLabel')
- self.displayTypeComboBox = create_horizontal_adjusting_combo_box(self.mediaWidget, u'displayTypeComboBox')
- self.displayTypeLabel.setBuddy(self.displayTypeComboBox)
- self.displayLayout.addRow(self.displayTypeLabel, self.displayTypeComboBox)
- # Add the Media widget to the page layout
- self.page_layout.addWidget(self.mediaWidget)
- self.displayTypeComboBox.currentIndexChanged.connect(self.overridePlayerChanged)
+ self.media_widget = QtGui.QWidget(self)
+ self.media_widget.setObjectName(u'media_widget')
+ self.display_layout = QtGui.QFormLayout(self.media_widget)
+ self.display_layout.setMargin(self.display_layout.spacing())
+ self.display_layout.setObjectName(u'display_layout')
+ self.display_type_label = QtGui.QLabel(self.media_widget)
+ self.display_type_label.setObjectName(u'display_type_label')
+ self.display_type_combo_box = create_horizontal_adjusting_combo_box(
+ self.media_widget, u'display_type_combo_box')
+ self.display_type_label.setBuddy(self.display_type_combo_box)
+ self.display_layout.addRow(self.display_type_label, self.display_type_combo_box)
+ # Add the Media widget to the page layout.
+ self.page_layout.addWidget(self.media_widget)
+ self.display_type_combo_box.currentIndexChanged.connect(self.overridePlayerChanged)
def overridePlayerChanged(self, index):
player = get_media_players()[0]
@@ -132,13 +136,13 @@
Called to reset the Live background with the media selected,
"""
self.media_controller.media_reset(self.live_controller)
- self.resetAction.setVisible(False)
+ self.reset_action.setVisible(False)
def video_background_replaced(self):
"""
Triggered by main display on change of serviceitem.
"""
- self.resetAction.setVisible(False)
+ self.reset_action.setVisible(False)
def onReplaceClick(self):
"""
@@ -155,7 +159,7 @@
(path, name) = os.path.split(filename)
service_item.add_from_command(path, name,CLAPPERBOARD)
if self.media_controller.video(DisplayControllerType.Live, service_item, video_behind_text=True):
- self.resetAction.setVisible(True)
+ self.reset_action.setVisible(True)
else:
critical_error_message_box(UiStrings().LiveBGError,
translate('MediaPlugin.MediaItem', 'There was no display item to amend.'))
@@ -164,7 +168,7 @@
translate('MediaPlugin.MediaItem',
'There was a problem replacing your background, the media file "%s" no longer exists.') % filename)
- def generate_slide_data(self, service_item, item=None, xmlVersion=False, remote=False,
+ def generate_slide_data(self, service_item, item=None, xml_version=False, remote=False,
context=ServiceItemContext.Live):
"""
Generate the slide data. Needs to be implemented by the plugin.
@@ -181,7 +185,7 @@
translate('MediaPlugin.MediaItem', 'Missing Media File'),
translate('MediaPlugin.MediaItem', 'The file %s no longer exists.') % filename)
return False
- service_item.title = self.displayTypeComboBox.currentText()
+ service_item.title = self.display_type_combo_box.currentText()
service_item.shortname = service_item.title
(path, name) = os.path.split(filename)
service_item.add_from_command(path, name, CLAPPERBOARD)
@@ -209,8 +213,7 @@
def rebuild_players(self):
"""
- Rebuild the tab in the media manager when changes are made in
- the settings
+ Rebuild the tab in the media manager when changes are made in the settings.
"""
self.populateDisplayTypes()
self.on_new_file_masks = translate('MediaPlugin.MediaItem', 'Videos (%s);;Audio (%s);;%s (*)') % (
@@ -222,29 +225,27 @@
def populateDisplayTypes(self):
"""
- Load the combobox with the enabled media players,
- allowing user to select a specific player if settings allow
+ Load the combobox with the enabled media players, allowing user to select a specific player if settings allow.
"""
- # block signals to avoid unnecessary overridePlayerChanged Signals
- # while combo box creation
- self.displayTypeComboBox.blockSignals(True)
- self.displayTypeComboBox.clear()
+ # block signals to avoid unnecessary overridePlayerChanged Signals while combo box creation
+ self.display_type_combo_box.blockSignals(True)
+ self.display_type_combo_box.clear()
usedPlayers, overridePlayer = get_media_players()
media_players = self.media_controller.media_players
currentIndex = 0
for player in usedPlayers:
# load the drop down selection
- self.displayTypeComboBox.addItem(media_players[player].original_name)
+ self.display_type_combo_box.addItem(media_players[player].original_name)
if overridePlayer == player:
- currentIndex = len(self.displayTypeComboBox)
- if self.displayTypeComboBox.count() > 1:
- self.displayTypeComboBox.insertItem(0, self.automatic)
- self.displayTypeComboBox.setCurrentIndex(currentIndex)
+ currentIndex = len(self.display_type_combo_box)
+ if self.display_type_combo_box.count() > 1:
+ self.display_type_combo_box.insertItem(0, self.automatic)
+ self.display_type_combo_box.setCurrentIndex(currentIndex)
if overridePlayer:
- self.mediaWidget.show()
+ self.media_widget.show()
else:
- self.mediaWidget.hide()
- self.displayTypeComboBox.blockSignals(False)
+ self.media_widget.hide()
+ self.display_type_combo_box.blockSignals(False)
def on_delete_click(self):
"""
@@ -267,34 +268,34 @@
if not os.path.exists(track):
filename = os.path.split(unicode(track))[1]
item_name = QtGui.QListWidgetItem(filename)
- item_name.setIcon(ERROR)
+ item_name.setIcon(ERROR_ICON)
item_name.setData(QtCore.Qt.UserRole, track)
elif track_info.isFile():
filename = os.path.split(unicode(track))[1]
item_name = QtGui.QListWidgetItem(filename)
if u'*.%s' % (filename.split(u'.')[-1].lower()) in self.media_controller.audio_extensions_list:
- item_name.setIcon(AUDIO)
+ item_name.setIcon(AUDIO_ICON)
else:
- item_name.setIcon(VIDEO)
+ item_name.setIcon(VIDEO_ICON)
item_name.setData(QtCore.Qt.UserRole, track)
else:
filename = os.path.split(unicode(track))[1]
item_name = QtGui.QListWidgetItem(filename)
- item_name.setIcon(build_icon(DVDICON))
+ item_name.setIcon(build_icon(DVD_ICON))
item_name.setData(QtCore.Qt.UserRole, track)
item_name.setToolTip(track)
self.list_view.addItem(item_name)
- def getList(self, type=MediaType.Audio):
+ def get_list(self, type=MediaType.Audio):
media = Settings().value(self.settings_section + u'/media files')
media.sort(key=lambda filename: get_locale_key(os.path.split(unicode(filename))[1]))
- ext = []
+ extension = []
if type == MediaType.Audio:
- ext = self.media_controller.audio_extensions_list
+ extension = self.media_controller.audio_extensions_list
else:
- ext = self.media_controller.video_extensions_list
- ext = map(lambda x: x[1:], ext)
- media = filter(lambda x: os.path.splitext(x)[1] in ext, media)
+ extension = self.media_controller.video_extensions_list
+ extension = map(lambda x: x[1:], extension)
+ media = filter(lambda x: os.path.splitext(x)[1] in extension, media)
return media
def search(self, string, showError):
=== modified file 'openlp/plugins/media/mediaplugin.py'
--- openlp/plugins/media/mediaplugin.py 2013-04-05 19:37:56 +0000
+++ openlp/plugins/media/mediaplugin.py 2013-04-19 19:45:32 +0000
@@ -34,12 +34,14 @@
from openlp.core.lib import Plugin, Registry, StringContent, Settings, build_icon, translate
from openlp.plugins.media.lib import MediaMediaItem, MediaTab
+
log = logging.getLogger(__name__)
+
# Some settings starting with "media" are in core, because they are needed for core functionality.
__default_settings__ = {
- u'media/media auto start': QtCore.Qt.Unchecked,
- u'media/media files': []
+ u'media/media auto start': QtCore.Qt.Unchecked,
+ u'media/media files': []
}
@@ -94,7 +96,7 @@
def finalise(self):
"""
- Time to tidy up on exit
+ Time to tidy up on exit.
"""
log.info(u'Media Finalising')
self.media_controller.finalise()
@@ -102,19 +104,19 @@
def get_display_css(self):
"""
- Add css style sheets to htmlbuilder
+ Add css style sheets to htmlbuilder.
"""
return self.media_controller.get_media_display_css()
def get_display_javascript(self):
"""
- Add javascript functions to htmlbuilder
+ Add javascript functions to htmlbuilder.
"""
return self.media_controller.get_media_display_javascript()
def get_display_html(self):
"""
- Add html code to htmlbuilder
+ Add html code to htmlbuilder.
"""
return self.media_controller.get_media_display_html()
=== modified file 'openlp/plugins/presentations/__init__.py'
--- openlp/plugins/presentations/__init__.py 2013-01-05 22:17:30 +0000
+++ openlp/plugins/presentations/__init__.py 2013-04-19 19:45:32 +0000
@@ -27,6 +27,6 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
"""
-The :mod:`presentations` module provides the Presentations plugin which allows
-OpenLP to show presentations from most popular presentation packages.
+The :mod:`presentations` module provides the Presentations plugin which allows OpenLP to show presentations from most
+popular presentation packages.
"""
=== modified file 'openlp/plugins/presentations/lib/impresscontroller.py'
--- openlp/plugins/presentations/lib/impresscontroller.py 2013-02-16 09:58:41 +0000
+++ openlp/plugins/presentations/lib/impresscontroller.py 2013-04-19 19:45:32 +0000
@@ -62,13 +62,14 @@
from openlp.core.utils import delete_file, get_uno_command, get_uno_instance
from presentationcontroller import PresentationController, PresentationDocument
+
log = logging.getLogger(__name__)
+
class ImpressController(PresentationController):
"""
- Class to control interactions with Impress presentations.
- It creates the runtime environment, loads and closes the presentation as
- well as triggering the correct activities based on the users input
+ Class to control interactions with Impress presentations. It creates the runtime environment, loads and closes the
+ presentation as well as triggering the correct activities based on the users input.
"""
log.info(u'ImpressController loaded')
@@ -79,14 +80,14 @@
log.debug(u'Initialising')
PresentationController.__init__(self, plugin, u'Impress', ImpressDocument)
self.supports = [u'odp']
- self.alsosupports = [u'ppt', u'pps', u'pptx', u'ppsx']
+ self.also_supports = [u'ppt', u'pps', u'pptx', u'ppsx']
self.process = None
self.desktop = None
self.manager = None
def check_available(self):
"""
- Impress is able to run on this machine
+ Impress is able to run on this machine.
"""
log.debug(u'check_available')
if os.name == u'nt':
@@ -96,9 +97,8 @@
def start_process(self):
"""
- Loads a running version of OpenOffice in the background.
- It is not displayed to the user but is available to the UNO interface
- when required.
+ Loads a running version of OpenOffice in the background. It is not displayed to the user but is available to the
+ UNO interface when required.
"""
log.debug(u'start process Openoffice')
if os.name == u'nt':
@@ -113,8 +113,7 @@
def get_uno_desktop(self):
"""
- On non-Windows platforms, use Uno. Get the OpenOffice desktop
- which will be used to manage impress
+ On non-Windows platforms, use Uno. Get the OpenOffice desktop which will be used to manage impress.
"""
log.debug(u'get UNO Desktop Openoffice')
uno_instance = None
@@ -132,8 +131,7 @@
loop += 1
try:
self.manager = uno_instance.ServiceManager
- log.debug(u'get UNO Desktop Openoffice - createInstanceWithContext'
- u' - Desktop')
+ log.debug(u'get UNO Desktop Openoffice - createInstanceWithContext - Desktop')
desktop = self.manager.createInstanceWithContext("com.sun.star.frame.Desktop", uno_instance)
return desktop
except:
@@ -142,8 +140,7 @@
def get_com_desktop(self):
"""
- On Windows platforms, use COM. Return the desktop object which
- will be used to manage Impress
+ On Windows platforms, use COM. Return the desktop object which will be used to manage Impress.
"""
log.debug(u'get COM Desktop OpenOffice')
if not self.manager:
@@ -157,7 +154,7 @@
def get_com_servicemanager(self):
"""
- Return the OOo service manager for windows
+ Return the OOo service manager for windows.
"""
log.debug(u'get_com_servicemanager openoffice')
try:
@@ -168,7 +165,7 @@
def kill(self):
"""
- Called at system exit to clean up any running presentations
+ Called at system exit to clean up any running presentations.
"""
log.debug(u'Kill OpenOffice')
while self.docs:
@@ -203,12 +200,12 @@
class ImpressDocument(PresentationDocument):
"""
- Class which holds information and controls a single presentation
+ Class which holds information and controls a single presentation.
"""
def __init__(self, controller, presentation):
"""
- Constructor, store information about the file and initialise
+ Constructor, store information about the file and initialise.
"""
log.debug(u'Init Presentation OpenOffice')
PresentationDocument.__init__(self, controller, presentation)
@@ -218,11 +215,9 @@
def load_presentation(self):
"""
- Called when a presentation is added to the SlideController.
- It builds the environment, starts communcations with the background
- OpenOffice task started earlier. If OpenOffice is not present is is
- started. Once the environment is available the presentation is loaded
- and started.
+ Called when a presentation is added to the SlideController. It builds the environment, starts communcations with
+ the background OpenOffice task started earlier. If OpenOffice is not present is is started. Once the environment
+ is available the presentation is loaded and started.
"""
log.debug(u'Load Presentation OpenOffice')
if os.name == u'nt':
@@ -239,13 +234,12 @@
self.desktop = desktop
properties = []
if os.name != u'nt':
- # Recent versions of Impress on Windows won't start the presentation
- # if it starts as minimized. It seems OK on Linux though.
+ # Recent versions of Impress on Windows won't start the presentation if it starts as minimized. It seems OK
+ # on Linux though.
properties.append(self.create_property(u'Minimized', True))
properties = tuple(properties)
try:
- self.document = desktop.loadComponentFromURL(url, u'_blank',
- 0, properties)
+ self.document = desktop.loadComponentFromURL(url, u'_blank', 0, properties)
except:
log.warn(u'Failed to load presentation %s' % url)
return False
@@ -262,33 +256,33 @@
def create_thumbnails(self):
"""
- Create thumbnail images for presentation
+ Create thumbnail images for presentation.
"""
log.debug(u'create thumbnails OpenOffice')
if self.check_thumbnails():
return
if os.name == u'nt':
- thumbdirurl = u'file:///' + self.get_temp_folder().replace(u'\\', u'/') \
+ thumb_dir_url = u'file:///' + self.get_temp_folder().replace(u'\\', u'/') \
.replace(u':', u'|').replace(u' ', u'%20')
else:
- thumbdirurl = uno.systemPathToFileUrl(self.get_temp_folder())
- props = []
- props.append(self.create_property(u'FilterName', u'impress_png_Export'))
- props = tuple(props)
+ thumb_dir_url = uno.systemPathToFileUrl(self.get_temp_folder())
+ properties = []
+ properties.append(self.create_property(u'FilterName', u'impress_png_Export'))
+ properties = tuple(properties)
doc = self.document
pages = doc.getDrawPages()
if not pages:
return
if not os.path.isdir(self.get_temp_folder()):
os.makedirs(self.get_temp_folder())
- for idx in range(pages.getCount()):
- page = pages.getByIndex(idx)
+ for index in range(pages.getCount()):
+ page = pages.getByIndex(index)
doc.getCurrentController().setCurrentPage(page)
- urlpath = u'%s/%s.png' % (thumbdirurl, unicode(idx + 1))
- path = os.path.join(self.get_temp_folder(), unicode(idx + 1) + u'.png')
+ url_path = u'%s/%s.png' % (thumb_dir_url, unicode(index + 1))
+ path = os.path.join(self.get_temp_folder(), unicode(index + 1) + u'.png')
try:
- doc.storeToURL(urlpath, props)
- self.convert_thumbnail(path, idx + 1)
+ doc.storeToURL(url_path, properties)
+ self.convert_thumbnail(path, index + 1)
delete_file(path)
except ErrorCodeIOException, exception:
log.exception(u'ERROR! ErrorCodeIOException %d' % exception.ErrCode)
@@ -297,23 +291,21 @@
def create_property(self, name, value):
"""
- Create an OOo style property object which are passed into some
- Uno methods
+ Create an OOo style property object which are passed into some Uno methods.
"""
log.debug(u'create property OpenOffice')
if os.name == u'nt':
- prop = self.controller.manager.Bridge_GetStruct(u'com.sun.star.beans.PropertyValue')
+ property = self.controller.manager.Bridge_GetStruct(u'com.sun.star.beans.PropertyValue')
else:
- prop = PropertyValue()
- prop.Name = name
- prop.Value = value
- return prop
+ property = PropertyValue()
+ property.Name = name
+ property.Value = value
+ return property
def close_presentation(self):
"""
- Close presentation and clean up objects
- Triggered by new object being added to SlideController or OpenLP
- being shutdown
+ Close presentation and clean up objects. Triggered by new object being added to SlideController or OpenLP being
+ shutdown.
"""
log.debug(u'close Presentation OpenOffice')
if self.document:
@@ -329,7 +321,7 @@
def is_loaded(self):
"""
- Returns true if a presentation is loaded
+ Returns true if a presentation is loaded.
"""
log.debug(u'is loaded OpenOffice')
if self.presentation is None or self.document is None:
@@ -346,7 +338,7 @@
def is_active(self):
"""
- Returns true if a presentation is active and running
+ Returns true if a presentation is active and running.
"""
log.debug(u'is active OpenOffice')
if not self.is_loaded():
@@ -355,21 +347,21 @@
def unblank_screen(self):
"""
- Unblanks the screen
+ Unblanks the screen.
"""
log.debug(u'unblank screen OpenOffice')
return self.control.resume()
def blank_screen(self):
"""
- Blanks the screen
+ Blanks the screen.
"""
log.debug(u'blank screen OpenOffice')
self.control.blankScreen(0)
def is_blank(self):
"""
- Returns true if screen is blank
+ Returns true if screen is blank.
"""
log.debug(u'is blank OpenOffice')
if self.control and self.control.isRunning():
@@ -379,7 +371,7 @@
def stop_presentation(self):
"""
- Stop the presentation, remove from screen
+ Stop the presentation, remove from screen.
"""
log.debug(u'stop presentation OpenOffice')
# deactivate should hide the screen according to docs, but doesn't
@@ -389,18 +381,17 @@
def start_presentation(self):
"""
- Start the presentation from the beginning
+ Start the presentation from the beginning.
"""
log.debug(u'start presentation OpenOffice')
if self.control is None or not self.control.isRunning():
self.presentation.start()
self.control = self.presentation.getController()
- # start() returns before the Component is ready.
- # Try for 15 seconds
- i = 1
- while not self.control and i < 150:
+ # start() returns before the Component is ready. Try for 15 seconds.
+ sleep_count = 1
+ while not self.control and sleep_count < 150:
time.sleep(0.1)
- i += 1
+ sleep_count += 1
self.control = self.presentation.getController()
else:
self.control.activate()
@@ -408,25 +399,25 @@
def get_slide_number(self):
"""
- Return the current slide number on the screen, from 1
+ Return the current slide number on the screen, from 1.
"""
return self.control.getCurrentSlideIndex() + 1
def get_slide_count(self):
"""
- Return the total number of slides
+ Return the total number of slides.
"""
return self.document.getDrawPages().getCount()
def goto_slide(self, slideno):
"""
- Go to a specific slide (from 1)
+ Go to a specific slide (from 1).
"""
self.control.gotoSlideIndex(slideno-1)
def next_step(self):
"""
- Triggers the next effect of slide on the running presentation
+ Triggers the next effect of slide on the running presentation.
"""
is_paused = self.control.isPaused()
self.control.gotoNextEffect()
@@ -436,7 +427,7 @@
def previous_step(self):
"""
- Triggers the previous slide on the running presentation
+ Triggers the previous slide on the running presentation.
"""
self.control.gotoPreviousSlide()
@@ -470,8 +461,8 @@
page = pages.getByIndex(slide_no - 1)
if notes:
page = page.getNotesPage()
- for idx in range(page.getCount()):
- shape = page.getByIndex(idx)
+ for index in range(page.getCount()):
+ shape = page.getByIndex(index)
if shape.supportsService("com.sun.star.drawing.Text"):
text += shape.getString() + '\n'
return text
=== modified file 'openlp/plugins/presentations/lib/mediaitem.py'
--- openlp/plugins/presentations/lib/mediaitem.py 2013-04-16 16:37:26 +0000
+++ openlp/plugins/presentations/lib/mediaitem.py 2013-04-19 19:45:32 +0000
@@ -38,14 +38,17 @@
from openlp.core.utils import get_locale_key
from openlp.plugins.presentations.lib import MessageListener
+
log = logging.getLogger(__name__)
-ERROR = QtGui.QImage(u':/general/general_delete.png')
+
+ERROR_IMAGE = QtGui.QImage(u':/general/general_delete.png')
+
class PresentationMediaItem(MediaManagerItem):
"""
- This is the Presentation media manager item for Presentation Items.
- It can present files using Openoffice and Powerpoint
+ This is the Presentation media manager item for Presentation Items. It can present files using Openoffice and
+ Powerpoint
"""
log.info(u'Presentations Media Item loaded')
@@ -71,25 +74,25 @@
"""
self.on_new_prompt = translate('PresentationPlugin.MediaItem', 'Select Presentation(s)')
self.Automatic = translate('PresentationPlugin.MediaItem', 'Automatic')
- self.displayTypeLabel.setText(translate('PresentationPlugin.MediaItem', 'Present using:'))
+ self.display_type_label.setText(translate('PresentationPlugin.MediaItem', 'Present using:'))
def build_file_mask_string(self):
"""
- Build the list of file extensions to be used in the Open file dialog
+ Build the list of file extensions to be used in the Open file dialog.
"""
- fileType = u''
+ file_type = u''
for controller in self.controllers:
if self.controllers[controller].enabled():
- types = self.controllers[controller].supports + self.controllers[controller].alsosupports
- for type in types:
- if fileType.find(type) == -1:
- fileType += u'*.%s ' % type
- self.service_manager.supported_suffixes(type)
- self.on_new_file_masks = translate('PresentationPlugin.MediaItem', 'Presentations (%s)') % fileType
+ file_types = self.controllers[controller].supports + self.controllers[controller].also_supports
+ for file_type in file_types:
+ if file_type.find(file_type) == -1:
+ file_type += u'*.%s ' % file_type
+ self.service_manager.supported_suffixes(file_type)
+ self.on_new_file_masks = translate('PresentationPlugin.MediaItem', 'Presentations (%s)') % file_type
def required_icons(self):
"""
- Set which icons the media manager tab should show
+ Set which icons the media manager tab should show.
"""
MediaManagerItem.required_icons(self)
self.has_file_icon = True
@@ -98,21 +101,21 @@
def add_end_header_bar(self):
"""
- Display custom media manager items for presentations
+ Display custom media manager items for presentations.
"""
- self.presentationWidget = QtGui.QWidget(self)
- self.presentationWidget.setObjectName(u'presentationWidget')
- self.displayLayout = QtGui.QFormLayout(self.presentationWidget)
- self.displayLayout.setMargin(self.displayLayout.spacing())
- self.displayLayout.setObjectName(u'displayLayout')
- self.displayTypeLabel = QtGui.QLabel(self.presentationWidget)
- self.displayTypeLabel.setObjectName(u'displayTypeLabel')
- self.displayTypeComboBox = create_horizontal_adjusting_combo_box(self.presentationWidget,
- u'displayTypeComboBox')
- self.displayTypeLabel.setBuddy(self.displayTypeComboBox)
- self.displayLayout.addRow(self.displayTypeLabel, self.displayTypeComboBox)
- # Add the Presentation widget to the page layout
- self.page_layout.addWidget(self.presentationWidget)
+ self.presentation_widget = QtGui.QWidget(self)
+ self.presentation_widget.setObjectName(u'presentation_widget')
+ self.display_layout = QtGui.QFormLayout(self.presentation_widget)
+ self.display_layout.setMargin(self.display_layout.spacing())
+ self.display_layout.setObjectName(u'display_layout')
+ self.display_type_label = QtGui.QLabel(self.presentation_widget)
+ self.display_type_label.setObjectName(u'display_type_label')
+ self.display_type_combo_box = create_horizontal_adjusting_combo_box(self.presentation_widget,
+ u'display_type_combo_box')
+ self.display_type_label.setBuddy(self.display_type_combo_box)
+ self.display_layout.addRow(self.display_type_label, self.display_type_combo_box)
+ # Add the Presentation widget to the page layout.
+ self.page_layout.addWidget(self.presentation_widget)
def initialise(self):
"""
@@ -120,55 +123,54 @@
"""
self.list_view.setIconSize(QtCore.QSize(88, 50))
files = Settings().value(self.settings_section + u'/presentations files')
- self.load_list(files, initialLoad=True)
+ self.load_list(files, initial_load=True)
self.populate_display_types()
def populate_display_types(self):
"""
- Load the combobox with the enabled presentation controllers,
- allowing user to select a specific app if settings allow
+ Load the combobox with the enabled presentation controllers, allowing user to select a specific app if settings
+ allow.
"""
- self.displayTypeComboBox.clear()
+ self.display_type_combo_box.clear()
for item in self.controllers:
# load the drop down selection
if self.controllers[item].enabled():
- self.displayTypeComboBox.addItem(item)
- if self.displayTypeComboBox.count() > 1:
- self.displayTypeComboBox.insertItem(0, self.Automatic)
- self.displayTypeComboBox.setCurrentIndex(0)
+ self.display_type_combo_box.addItem(item)
+ if self.display_type_combo_box.count() > 1:
+ self.display_type_combo_box.insertItem(0, self.Automatic)
+ self.display_type_combo_box.setCurrentIndex(0)
if Settings().value(self.settings_section + u'/override app') == QtCore.Qt.Checked:
- self.presentationWidget.show()
+ self.presentation_widget.show()
else:
- self.presentationWidget.hide()
+ self.presentation_widget.hide()
- def load_list(self, files, target_group=None, initialLoad=False):
- """
- Add presentations into the media manager
- This is called both on initial load of the plugin to populate with
- existing files, and when the user adds new files via the media manager
- """
- currlist = self.get_file_list()
- titles = [os.path.split(file)[1] for file in currlist]
+ def load_list(self, files, target_group=None, initial_load=False):
+ """
+ Add presentations into the media manager. This is called both on initial load of the plugin to populate with
+ existing files, and when the user adds new files via the media manager.
+ """
+ current_list = self.get_file_list()
+ titles = [os.path.split(file)[1] for file in current_list]
self.application.set_busy_cursor()
- if not initialLoad:
+ if not initial_load:
self.main_window.display_progress_bar(len(files))
# Sort the presentations by its filename considering language specific characters.
files.sort(key=lambda filename: get_locale_key(os.path.split(unicode(filename))[1]))
for file in files:
- if not initialLoad:
+ if not initial_load:
self.main_window.increment_progress_bar()
- if currlist.count(file) > 0:
+ if current_list.count(file) > 0:
continue
filename = os.path.split(unicode(file))[1]
if not os.path.exists(file):
item_name = QtGui.QListWidgetItem(filename)
- item_name.setIcon(build_icon(ERROR))
+ item_name.setIcon(build_icon(ERROR_IMAGE))
item_name.setData(QtCore.Qt.UserRole, file)
item_name.setToolTip(file)
self.list_view.addItem(item_name)
else:
if titles.count(filename) > 0:
- if not initialLoad:
+ if not initial_load:
critical_error_message_box(translate('PresentationPlugin.MediaItem', 'File Exists'),
translate('PresentationPlugin.MediaItem',
'A presentation with that filename already exists.')
@@ -180,7 +182,7 @@
doc = controller.add_document(unicode(file))
thumb = os.path.join(doc.get_thumbnail_folder(), u'icon.png')
preview = doc.get_thumbnail_path(1, True)
- if not preview and not initialLoad:
+ if not preview and not initial_load:
doc.load_presentation()
preview = doc.get_thumbnail_path(1, True)
doc.close_presentation()
@@ -192,7 +194,7 @@
else:
icon = create_thumb(preview, thumb)
else:
- if initialLoad:
+ if initial_load:
icon = build_icon(u':/general/general_delete.png')
else:
critical_error_message_box(UiStrings().UnsupportedFile,
@@ -203,13 +205,13 @@
item_name.setIcon(icon)
item_name.setToolTip(file)
self.list_view.addItem(item_name)
- if not initialLoad:
+ if not initial_load:
self.main_window.finished_progress_bar()
self.application.set_normal_cursor()
def on_delete_click(self):
"""
- Remove a presentation item from the list
+ Remove a presentation item from the list.
"""
if check_item_selected(self.list_view, UiStrings().SelectDelete):
items = self.list_view.selectedIndexes()
@@ -230,12 +232,11 @@
self.list_view.takeItem(row)
Settings().setValue(self.settings_section + u'/presentations files', self.get_file_list())
- def generate_slide_data(self, service_item, item=None, xmlVersion=False,
+ def generate_slide_data(self, service_item, item=None, xml_version=False,
remote=False, context=ServiceItemContext.Service):
"""
- Load the relevant information for displaying the presentation
- in the slidecontroller. In the case of powerpoints, an image
- for each slide
+ Load the relevant information for displaying the presentation in the slidecontroller. In the case of
+ powerpoints, an image for each slide.
"""
if item:
items = [item]
@@ -243,8 +244,8 @@
items = self.list_view.selectedItems()
if len(items) > 1:
return False
- service_item.title = self.displayTypeComboBox.currentText()
- service_item.shortname = self.displayTypeComboBox.currentText()
+ service_item.title = self.display_type_combo_box.currentText()
+ service_item.shortname = self.display_type_combo_box.currentText()
service_item.add_capability(ItemCapabilities.ProvidesOwnDisplay)
service_item.add_capability(ItemCapabilities.HasDetailedTitleDisplay)
shortname = service_item.shortname
@@ -287,26 +288,24 @@
def findControllerByType(self, filename):
"""
- Determine the default application controller to use for the selected
- file type. This is used if "Automatic" is set as the preferred
- controller. Find the first (alphabetic) enabled controller which
- "supports" the extension. If none found, then look for a controller
- which "also supports" it instead.
+ Determine the default application controller to use for the selected file type. This is used if "Automatic" is
+ set as the preferred controller. Find the first (alphabetic) enabled controller which "supports" the extension.
+ If none found, then look for a controller which "also supports" it instead.
"""
- filetype = os.path.splitext(filename)[1][1:]
- if not filetype:
+ file_type = os.path.splitext(filename)[1][1:]
+ if not file_type:
return None
for controller in self.controllers:
if self.controllers[controller].enabled():
- if filetype in self.controllers[controller].supports:
+ if file_type in self.controllers[controller].supports:
return controller
for controller in self.controllers:
if self.controllers[controller].enabled():
- if filetype in self.controllers[controller].alsosupports:
+ if file_type in self.controllers[controller].also_supports:
return controller
return None
- def search(self, string, showError):
+ def search(self, string, show_error):
files = Settings().value(self.settings_section + u'/presentations files')
results = []
string = string.lower()
=== modified file 'openlp/plugins/presentations/lib/messagelistener.py'
--- openlp/plugins/presentations/lib/messagelistener.py 2013-03-19 20:05:13 +0000
+++ openlp/plugins/presentations/lib/messagelistener.py 2013-04-19 19:45:32 +0000
@@ -38,8 +38,8 @@
class Controller(object):
"""
- This is the Presentation listener who acts on events from the slide
- controller and passes the messages on the the correct presentation handlers
+ This is the Presentation listener who acts on events from the slide controller and passes the messages on the the
+ correct presentation handlers.
"""
log.info(u'Controller loaded')
@@ -54,9 +54,8 @@
def add_handler(self, controller, file, hide_mode, slide_no):
"""
- Add a handler, which is an instance of a presentation and
- slidecontroller combination. If the slidecontroller has a display
- then load the presentation.
+ Add a handler, which is an instance of a presentation and slidecontroller combination. If the slidecontroller
+ has a display then load the presentation.
"""
log.debug(u'Live = %s, add_handler %s' % (self.is_live, file))
self.controller = controller
@@ -86,8 +85,7 @@
def activate(self):
"""
- Active the presentation, and show it on the screen.
- Use the last slide number.
+ Active the presentation, and show it on the screen. Use the last slide number.
"""
log.debug(u'Live = %s, activate' % self.is_live)
if not self.doc:
@@ -130,7 +128,7 @@
def first(self):
"""
- Based on the handler passed at startup triggers the first slide
+ Based on the handler passed at startup triggers the first slide.
"""
log.debug(u'Live = %s, first' % self.is_live)
if not self.doc:
@@ -148,7 +146,7 @@
def last(self):
"""
- Based on the handler passed at startup triggers the last slide
+ Based on the handler passed at startup triggers the last slide.
"""
log.debug(u'Live = %s, last' % self.is_live)
if not self.doc:
@@ -166,7 +164,7 @@
def next(self):
"""
- Based on the handler passed at startup triggers the next slide event
+ Based on the handler passed at startup triggers the next slide event.
"""
log.debug(u'Live = %s, next' % self.is_live)
if not self.doc:
@@ -182,9 +180,8 @@
return
if not self.activate():
return
- # The "End of slideshow" screen is after the last slide
- # Note, we can't just stop on the last slide, since it may
- # contain animations that need to be stepped through.
+ # The "End of slideshow" screen is after the last slide. Note, we can't just stop on the last slide, since it
+ # may contain animations that need to be stepped through.
if self.doc.slidenumber > self.doc.get_slide_count():
return
self.doc.next_step()
@@ -192,7 +189,7 @@
def previous(self):
"""
- Based on the handler passed at startup triggers the previous slide event
+ Based on the handler passed at startup triggers the previous slide event.
"""
log.debug(u'Live = %s, previous' % self.is_live)
if not self.doc:
@@ -213,7 +210,7 @@
def shutdown(self):
"""
- Based on the handler passed at startup triggers slide show to shut down
+ Based on the handler passed at startup triggers slide show to shut down.
"""
log.debug(u'Live = %s, shutdown' % self.is_live)
if not self.doc:
@@ -223,7 +220,7 @@
def blank(self, hide_mode):
"""
- Instruct the controller to blank the presentation
+ Instruct the controller to blank the presentation.
"""
log.debug(u'Live = %s, blank' % self.is_live)
self.hide_mode = hide_mode
@@ -244,7 +241,7 @@
def stop(self):
"""
- Instruct the controller to stop and hide the presentation
+ Instruct the controller to stop and hide the presentation.
"""
log.debug(u'Live = %s, stop' % self.is_live)
self.hide_mode = HideMode.Screen
@@ -260,7 +257,7 @@
def unblank(self):
"""
- Instruct the controller to unblank the presentation
+ Instruct the controller to unblank the presentation.
"""
log.debug(u'Live = %s, unblank' % self.is_live)
self.hide_mode = None
@@ -283,8 +280,8 @@
class MessageListener(object):
"""
- This is the Presentation listener who acts on events from the slide
- controller and passes the messages on the the correct presentation handlers
+ This is the Presentation listener who acts on events from the slide controller and passes the messages on the the
+ correct presentation handlers
"""
log.info(u'Message Listener loaded')
@@ -310,12 +307,11 @@
def startup(self, message):
"""
- Start of new presentation
- Save the handler as any new presentations start here
+ Start of new presentation. Save the handler as any new presentations start here
"""
+ log.debug(u'Startup called with message %s' % message)
is_live = message[1]
item = message[0]
- log.debug(u'Startup called with message %s' % message)
hide_mode = message[2]
file = item.get_frame_path()
self.handler = item.title
@@ -331,7 +327,7 @@
def slide(self, message):
"""
- React to the message to move to a specific slide
+ React to the message to move to a specific slide.
"""
is_live = message[1]
slide = message[2]
@@ -342,7 +338,7 @@
def first(self, message):
"""
- React to the message to move to the first slide
+ React to the message to move to the first slide.
"""
is_live = message[1]
if is_live:
@@ -352,7 +348,7 @@
def last(self, message):
"""
- React to the message to move to the last slide
+ React to the message to move to the last slide.
"""
is_live = message[1]
if is_live:
@@ -362,7 +358,7 @@
def next(self, message):
"""
- React to the message to move to the next animation/slide
+ React to the message to move to the next animation/slide.
"""
is_live = message[1]
if is_live:
@@ -372,7 +368,7 @@
def previous(self, message):
"""
- React to the message to move to the previous animation/slide
+ React to the message to move to the previous animation/slide.
"""
is_live = message[1]
if is_live:
@@ -382,8 +378,7 @@
def shutdown(self, message):
"""
- React to message to shutdown the presentation. I.e. end the show
- and close the file
+ React to message to shutdown the presentation. I.e. end the show and close the file.
"""
is_live = message[1]
if is_live:
@@ -393,7 +388,7 @@
def hide(self, message):
"""
- React to the message to show the desktop
+ React to the message to show the desktop.
"""
is_live = message[1]
if is_live:
@@ -401,7 +396,7 @@
def blank(self, message):
"""
- React to the message to blank the display
+ React to the message to blank the display.
"""
is_live = message[1]
hide_mode = message[2]
@@ -410,7 +405,7 @@
def unblank(self, message):
"""
- React to the message to unblank the display
+ React to the message to unblank the display.
"""
is_live = message[1]
if is_live:
@@ -418,9 +413,7 @@
def timeout(self):
"""
- The presentation may be timed or might be controlled by the
- application directly, rather than through OpenLP. Poll occasionally
- to check which slide is currently displayed so the slidecontroller
- view can be updated
+ The presentation may be timed or might be controlled by the application directly, rather than through OpenLP.
+ Poll occasionally to check which slide is currently displayed so the slidecontroller view can be updated.
"""
self.live_handler.poll()
=== modified file 'openlp/plugins/presentations/lib/powerpointcontroller.py'
--- openlp/plugins/presentations/lib/powerpointcontroller.py 2013-02-06 09:56:41 +0000
+++ openlp/plugins/presentations/lib/powerpointcontroller.py 2013-04-19 19:45:32 +0000
@@ -26,7 +26,10 @@
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
-
+"""
+This modul is for controlling powerpiont. PPT API documentation:
+`http://msdn.microsoft.com/en-us/library/aa269321(office.10).aspx`_
+"""
import os
import logging
@@ -39,16 +42,14 @@
from openlp.core.lib import ScreenList
from presentationcontroller import PresentationController, PresentationDocument
+
log = logging.getLogger(__name__)
-# PPT API documentation:
-# http://msdn.microsoft.com/en-us/library/aa269321(office.10).aspx
class PowerpointController(PresentationController):
"""
- Class to control interactions with PowerPoint Presentations
- It creates the runtime Environment , Loads the and Closes the Presentation
- As well as triggering the correct activities based on the users input
+ Class to control interactions with PowerPoint Presentations. It creates the runtime Environment , Loads the and
+ Closes the Presentation. As well as triggering the correct activities based on the users input.
"""
log.info(u'PowerpointController loaded')
@@ -63,7 +64,7 @@
def check_available(self):
"""
- PowerPoint is able to run on this machine
+ PowerPoint is able to run on this machine.
"""
log.debug(u'check_available')
if os.name == u'nt':
@@ -77,7 +78,7 @@
if os.name == u'nt':
def start_process(self):
"""
- Loads PowerPoint process
+ Loads PowerPoint process.
"""
log.debug(u'start_process')
if not self.process:
@@ -87,7 +88,7 @@
def kill(self):
"""
- Called at system exit to clean up any running presentations
+ Called at system exit to clean up any running presentations.
"""
log.debug(u'Kill powerpoint')
while self.docs:
@@ -105,12 +106,12 @@
class PowerpointDocument(PresentationDocument):
"""
- Class which holds information and controls a single presentation
+ Class which holds information and controls a single presentation.
"""
def __init__(self, controller, presentation):
"""
- Constructor, store information about the file and initialise
+ Constructor, store information about the file and initialise.
"""
log.debug(u'Init Presentation Powerpoint')
PresentationDocument.__init__(self, controller, presentation)
@@ -118,8 +119,8 @@
def load_presentation(self):
"""
- Called when a presentation is added to the SlideController.
- Opens the PowerPoint file using the process created earlier.
+ Called when a presentation is added to the SlideController. Opens the PowerPoint file using the process created
+ earlier.
"""
log.debug(u'load_presentation')
if not self.controller.process or not self.controller.process.Visible:
@@ -142,20 +143,19 @@
self.presentation.Slides[n].Copy()
thumbnail = QApplication.clipboard.image()
- However, for the moment, we want a physical file since it makes life
- easier elsewhere.
+ However, for the moment, we want a physical file since it makes life easier elsewhere.
"""
log.debug(u'create_thumbnails')
if self.check_thumbnails():
return
for num in range(self.presentation.Slides.Count):
- self.presentation.Slides(num + 1).Export(os.path.join(
- self.get_thumbnail_folder(), 'slide%d.png' % (num + 1)), 'png', 320, 240)
+ self.presentation.Slides(num + 1).Export(
+ os.path.join(self.get_thumbnail_folder(), 'slide%d.png' % (num + 1)), 'png', 320, 240)
def close_presentation(self):
"""
- Close presentation and clean up objects. This is triggered by a new
- object being added to SlideController or OpenLP being shut down.
+ Close presentation and clean up objects. This is triggered by a new object being added to SlideController or
+ OpenLP being shut down.
"""
log.debug(u'ClosePresentation')
if self.presentation:
@@ -182,7 +182,6 @@
return False
return True
-
def is_active(self):
"""
Returns ``True`` if a presentation is currently active.
@@ -253,15 +252,14 @@
dpi = win32ui.GetForegroundWindow().GetDC().GetDeviceCaps(88)
except win32ui.error:
dpi = 96
- rect = ScreenList().current[u'size']
+ size = ScreenList().current[u'size']
ppt_window = self.presentation.SlideShowSettings.Run()
if not ppt_window:
return
- ppt_window.Top = rect.y() * 72 / dpi
- ppt_window.Height = rect.height() * 72 / dpi
- ppt_window.Left = rect.x() * 72 / dpi
- ppt_window.Width = rect.width() * 72 / dpi
-
+ ppt_window.Top = size.y() * 72 / dpi
+ ppt_window.Height = size.height() * 72 / dpi
+ ppt_window.Left = size.x() * 72 / dpi
+ ppt_window.Width = size.width() * 72 / dpi
def get_slide_number(self):
"""
@@ -318,6 +316,7 @@
"""
return _get_text_from_shapes(self.presentation.Slides(slide_no).NotesPage.Shapes)
+
def _get_text_from_shapes(shapes):
"""
Returns any text extracted from the shapes on a presentation slide.
@@ -326,8 +325,8 @@
A set of shapes to search for text.
"""
text = ''
- for idx in range(shapes.Count):
- shape = shapes(idx + 1)
+ for index in range(shapes.Count):
+ shape = shapes(index + 1)
if shape.HasTextFrame:
text += shape.TextFrame.TextRange.Text + '\n'
return text
=== modified file 'openlp/plugins/presentations/lib/pptviewcontroller.py'
--- openlp/plugins/presentations/lib/pptviewcontroller.py 2013-02-17 08:29:23 +0000
+++ openlp/plugins/presentations/lib/pptviewcontroller.py 2013-04-19 19:45:32 +0000
@@ -37,13 +37,14 @@
from openlp.core.lib import ScreenList
from presentationcontroller import PresentationController, PresentationDocument
+
log = logging.getLogger(__name__)
+
class PptviewController(PresentationController):
"""
- Class to control interactions with PowerPoint Viewer Presentations
- It creates the runtime Environment , Loads the and Closes the Presentation
- As well as triggering the correct activities based on the users input
+ Class to control interactions with PowerPoint Viewer Presentations. It creates the runtime Environment , Loads the
+ and Closes the Presentation. As well as triggering the correct activities based on the users input
"""
log.info(u'PPTViewController loaded')
@@ -58,7 +59,7 @@
def check_available(self):
"""
- PPT Viewer is able to run on this machine
+ PPT Viewer is able to run on this machine.
"""
log.debug(u'check_available')
if os.name != u'nt':
@@ -68,7 +69,7 @@
if os.name == u'nt':
def check_installed(self):
"""
- Check the viewer is installed
+ Check the viewer is installed.
"""
log.debug(u'Check installed')
try:
@@ -79,14 +80,14 @@
def start_process(self):
"""
- Loads the PPTVIEWLIB library
+ Loads the PPTVIEWLIB library.
"""
if self.process:
return
log.debug(u'start PPTView')
- dllpath = os.path.join(self.plugin_manager.base_path, u'presentations', u'lib', u'pptviewlib',
- u'pptviewlib.dll')
- self.process = cdll.LoadLibrary(dllpath)
+ dll_path = os.path.join(
+ self.plugin_manager.base_path, u'presentations', u'lib', u'pptviewlib', u'pptviewlib.dll')
+ self.process = cdll.LoadLibrary(dll_path)
if log.isEnabledFor(logging.DEBUG):
self.process.SetDebug(1)
@@ -101,33 +102,32 @@
class PptviewDocument(PresentationDocument):
"""
- Class which holds information and controls a single presentation
+ Class which holds information and controls a single presentation.
"""
def __init__(self, controller, presentation):
"""
- Constructor, store information about the file and initialise
+ Constructor, store information about the file and initialise.
"""
log.debug(u'Init Presentation PowerPoint')
PresentationDocument.__init__(self, controller, presentation)
self.presentation = None
- self.pptid = None
+ self.ppt_id = None
self.blanked = False
self.hidden = False
def load_presentation(self):
"""
- Called when a presentation is added to the SlideController.
- It builds the environment, starts communication with the background
- PptView task started earlier.
+ Called when a presentation is added to the SlideController. It builds the environment, starts communication with
+ the background PptView task started earlier.
"""
log.debug(u'LoadPresentation')
- rect = ScreenList().current[u'size']
- rect = RECT(rect.x(), rect.y(), rect.right(), rect.bottom())
+ size = ScreenList().current[u'size']
+ rect = RECT(size.x(), size.y(), size.right(), size.bottom())
filepath = str(self.filepath.replace(u'/', u'\\'))
if not os.path.isdir(self.get_temp_folder()):
os.makedirs(self.get_temp_folder())
- self.pptid = self.controller.process.OpenPPT(filepath, None, rect, str(self.get_temp_folder()) + '\\slide')
- if self.pptid >= 0:
+ self.ppt_id = self.controller.process.OpenPPT(filepath, None, rect, str(self.get_temp_folder()) + '\\slide')
+ if self.ppt_id >= 0:
self.create_thumbnails()
self.stop_presentation()
return True
@@ -136,8 +136,7 @@
def create_thumbnails(self):
"""
- PPTviewLib creates large BMP's, but we want small PNG's for consistency.
- Convert them here.
+ PPTviewLib creates large BMP's, but we want small PNG's for consistency. Convert them here.
"""
log.debug(u'create_thumbnails')
if self.check_thumbnails():
@@ -149,21 +148,20 @@
def close_presentation(self):
"""
- Close presentation and clean up objects
- Triggered by new object being added to SlideController orOpenLP
- being shut down
+ Close presentation and clean up objects. Triggered by new object being added to SlideController or OpenLP being
+ shut down.
"""
log.debug(u'ClosePresentation')
if self.controller.process:
- self.controller.process.ClosePPT(self.pptid)
- self.pptid = -1
+ self.controller.process.ClosePPT(self.ppt_id)
+ self.ppt_id = -1
self.controller.remove_doc(self)
def is_loaded(self):
"""
- Returns true if a presentation is loaded
+ Returns true if a presentation is loaded.
"""
- if self.pptid < 0:
+ if self.ppt_id < 0:
return False
if self.get_slide_count() < 0:
return False
@@ -171,74 +169,74 @@
def is_active(self):
"""
- Returns true if a presentation is currently active
+ Returns true if a presentation is currently active.
"""
return self.is_loaded() and not self.hidden
def blank_screen(self):
"""
- Blanks the screen
+ Blanks the screen.
"""
- self.controller.process.Blank(self.pptid)
+ self.controller.process.Blank(self.ppt_id)
self.blanked = True
def unblank_screen(self):
"""
- Unblanks (restores) the presentation
+ Unblanks (restores) the presentation.
"""
- self.controller.process.Unblank(self.pptid)
+ self.controller.process.Unblank(self.ppt_id)
self.blanked = False
def is_blank(self):
"""
- Returns true if screen is blank
+ Returns true if screen is blank.
"""
log.debug(u'is blank OpenOffice')
return self.blanked
def stop_presentation(self):
"""
- Stops the current presentation and hides the output
+ Stops the current presentation and hides the output.
"""
self.hidden = True
- self.controller.process.Stop(self.pptid)
+ self.controller.process.Stop(self.ppt_id)
def start_presentation(self):
"""
- Starts a presentation from the beginning
+ Starts a presentation from the beginning.
"""
if self.hidden:
self.hidden = False
- self.controller.process.Resume(self.pptid)
+ self.controller.process.Resume(self.ppt_id)
else:
- self.controller.process.RestartShow(self.pptid)
+ self.controller.process.RestartShow(self.ppt_id)
def get_slide_number(self):
"""
- Returns the current slide number
+ Returns the current slide number.
"""
- return self.controller.process.GetCurrentSlide(self.pptid)
+ return self.controller.process.GetCurrentSlide(self.ppt_id)
def get_slide_count(self):
"""
- Returns total number of slides
+ Returns total number of slides.
"""
- return self.controller.process.GetSlideCount(self.pptid)
+ return self.controller.process.GetSlideCount(self.ppt_id)
def goto_slide(self, slideno):
"""
- Moves to a specific slide in the presentation
+ Moves to a specific slide in the presentation.
"""
- self.controller.process.GotoSlide(self.pptid, slideno)
+ self.controller.process.GotoSlide(self.ppt_id, slideno)
def next_step(self):
"""
- Triggers the next effect of slide on the running presentation
+ Triggers the next effect of slide on the running presentation.
"""
- self.controller.process.NextStep(self.pptid)
+ self.controller.process.NextStep(self.ppt_id)
def previous_step(self):
"""
- Triggers the previous slide on the running presentation
+ Triggers the previous slide on the running presentation.
"""
- self.controller.process.PrevStep(self.pptid)
+ self.controller.process.PrevStep(self.ppt_id)
=== modified file 'openlp/plugins/presentations/lib/presentationcontroller.py'
--- openlp/plugins/presentations/lib/presentationcontroller.py 2013-03-19 19:43:22 +0000
+++ openlp/plugins/presentations/lib/presentationcontroller.py 2013-04-19 19:45:32 +0000
@@ -40,9 +40,8 @@
class PresentationDocument(object):
"""
- Base class for presentation documents to inherit from.
- Loads and closes the presentation as well as triggering the correct
- activities based on the users input
+ Base class for presentation documents to inherit from. Loads and closes the presentation as well as triggering the
+ correct activities based on the users input
**Hook Functions**
@@ -131,20 +130,17 @@
"""
The location where thumbnail images will be stored
"""
- return os.path.join(
- self.controller.thumbnail_folder, self.get_file_name())
+ return os.path.join(self.controller.thumbnail_folder, self.get_file_name())
def get_temp_folder(self):
"""
The location where thumbnail images will be stored
"""
- return os.path.join(
- self.controller.temp_folder, self.get_file_name())
+ return os.path.join(self.controller.temp_folder, self.get_file_name())
def check_thumbnails(self):
"""
- Returns ``True`` if the thumbnail images exist and are more recent than
- the powerpoint file.
+ Returns ``True`` if the thumbnail images exist and are more recent than the powerpoint file.
"""
lastimage = self.get_thumbnail_path(self.get_slide_count(), True)
if not (lastimage and os.path.isfile(lastimage)):
@@ -153,8 +149,7 @@
def close_presentation(self):
"""
- Close presentation and clean up objects
- Triggered by new object being added to SlideController
+ Close presentation and clean up objects. Triggered by new object being added to SlideController
"""
self.controller.close_presentation()
@@ -223,8 +218,8 @@
def next_step(self):
"""
- Triggers the next effect of slide on the running presentation
- This might be the next animation on the current slide, or the next slide
+ Triggers the next effect of slide on the running presentation. This might be the next animation on the current
+ slide, or the next slide
"""
pass
@@ -236,8 +231,7 @@
def convert_thumbnail(self, file, idx):
"""
- Convert the slide image the application made to a standard 320x240
- .png image.
+ Convert the slide image the application made to a standard 320x240 .png image.
"""
if self.check_thumbnails():
return
@@ -281,7 +275,7 @@
Returns the text on the slide
``slide_no``
- The slide the text is required for, starting at 1
+ The slide the text is required for, starting at 1
"""
return ''
@@ -290,24 +284,21 @@
Returns the text on the slide
``slide_no``
- The slide the notes are required for, starting at 1
+ The slide the notes are required for, starting at 1
"""
return ''
class PresentationController(object):
"""
- This class is used to control interactions with presentation applications
- by creating a runtime environment. This is a base class for presentation
- controllers to inherit from.
+ This class is used to control interactions with presentation applications by creating a runtime environment. This is
+ a base class for presentation controllers to inherit from.
- To create a new controller, take a copy of this file and name it so it ends
- with ``controller.py``, i.e. ``foobarcontroller.py``. Make sure it inherits
- :class:`~openlp.plugins.presentations.lib.presentationcontroller.PresentationController`,
- and then fill in the blanks. If possible try to make sure it loads on all
- platforms, usually by using :mod:``os.name`` checks, although
- ``__init__``, ``check_available`` and ``presentation_deleted`` should
- always be implemented.
+ To create a new controller, take a copy of this file and name it so it ends with ``controller.py``, i.e.
+ ``foobarcontroller.py``. Make sure it inherits
+ :class:`~openlp.plugins.presentations.lib.presentationcontroller.PresentationController`, and then fill in the
+ blanks. If possible try to make sure it loads on all platforms, usually by using :mod:``os.name`` checks, although
+ ``__init__``, ``check_available`` and ``presentation_deleted`` should always be implemented.
See :class:`~openlp.plugins.presentations.lib.impresscontroller.ImpressController`,
:class:`~openlp.plugins.presentations.lib.powerpointcontroller.PowerpointController` or
@@ -317,36 +308,34 @@
**Basic Attributes**
``name``
- The name that appears in the options and the media manager
+ The name that appears in the options and the media manager.
``enabled``
- The controller is enabled
+ The controller is enabled.
``available``
- The controller is available on this machine. Set by init via
- call to check_available
+ The controller is available on this machine. Set by init via call to check_available.
``plugin``
- The presentationplugin object
+ The presentationplugin object.
``supports``
- The primary native file types this application supports
+ The primary native file types this application supports.
``alsosupports``
- Other file types the application can import, although not necessarily
- the first choice due to potential incompatibilities
+ Other file types the application can import, although not necessarily the first choice due to potential
+ incompatibilities.
**Hook Functions**
``kill()``
- Called at system exit to clean up any running presentations
+ Called at system exit to clean up any running presentations.
``check_available()``
- Returns True if presentation application is installed/can run on this
- machine
+ Returns True if presentation application is installed/can run on this machine.
``presentation_deleted()``
- Deletes presentation specific files, e.g. thumbnails
+ Deletes presentation specific files, e.g. thumbnails.
"""
log.info(u'PresentationController loaded')
@@ -354,9 +343,8 @@
def __init__(self, plugin=None, name=u'PresentationController',
document_class=PresentationDocument):
"""
- This is the constructor for the presentationcontroller object. This
- provides an easy way for descendent plugins to populate common data.
- This method *must* be overridden, like so::
+ This is the constructor for the presentationcontroller object. This provides an easy way for descendent plugins
+ to populate common data. This method *must* be overridden, like so::
class MyPresentationController(PresentationController):
def __init__(self, plugin):
@@ -399,28 +387,26 @@
def check_available(self):
"""
- Presentation app is able to run on this machine
+ Presentation app is able to run on this machine.
"""
return False
def start_process(self):
"""
- Loads a running version of the presentation application in the
- background.
+ Loads a running version of the presentation application in the background.
"""
pass
def kill(self):
"""
- Called at system exit to clean up any running presentations and
- close the application
+ Called at system exit to clean up any running presentations and close the application.
"""
log.debug(u'Kill')
self.close_presentation()
def add_document(self, name):
"""
- Called when a new presentation document is opened
+ Called when a new presentation document is opened.
"""
document = self.document_class(self, name)
self.docs.append(document)
@@ -428,7 +414,7 @@
def remove_doc(self, doc=None):
"""
- Called to remove an open document from the collection
+ Called to remove an open document from the collection.
"""
log.debug(u'remove_doc Presentation')
if doc is None:
=== modified file 'openlp/plugins/presentations/lib/presentationtab.py'
--- openlp/plugins/presentations/lib/presentationtab.py 2013-03-16 21:18:05 +0000
+++ openlp/plugins/presentations/lib/presentationtab.py 2013-04-19 19:45:32 +0000
@@ -91,8 +91,7 @@
if checkbox.isEnabled():
checkbox.setText(controller.name)
else:
- checkbox.setText(
- translate('PresentationPlugin.PresentationTab', '%s (unavailable)') % controller.name)
+ checkbox.setText(translate('PresentationPlugin.PresentationTab', '%s (unavailable)') % controller.name)
def load(self):
"""
@@ -106,8 +105,8 @@
def save(self):
"""
- Save the settings. If the tab hasn't been made visible to the user then there is nothing to do,
- so exit. This removes the need to start presentation applications unnecessarily.
+ Save the settings. If the tab hasn't been made visible to the user then there is nothing to do, so exit. This
+ removes the need to start presentation applications unnecessarily.
"""
if not self.activated:
return
=== modified file 'openlp/plugins/presentations/presentationplugin.py'
--- openlp/plugins/presentations/presentationplugin.py 2013-04-05 19:37:15 +0000
+++ openlp/plugins/presentations/presentationplugin.py 2013-04-19 19:45:32 +0000
@@ -27,8 +27,8 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
"""
-The :mod:`presentationplugin` module provides the ability for OpenLP to display
-presentations from a variety of document formats.
+The :mod:`presentationplugin` module provides the ability for OpenLP to display presentations from a variety of document
+formats.
"""
import os
import logging
@@ -39,22 +39,23 @@
from openlp.core.utils import AppLocation
from openlp.plugins.presentations.lib import PresentationController, PresentationMediaItem, PresentationTab
+
log = logging.getLogger(__name__)
+
__default_settings__ = {
- u'presentations/override app': QtCore.Qt.Unchecked,
- u'presentations/Impress': QtCore.Qt.Checked,
- u'presentations/Powerpoint': QtCore.Qt.Checked,
- u'presentations/Powerpoint Viewer': QtCore.Qt.Checked,
- u'presentations/presentations files': []
- }
+ u'presentations/override app': QtCore.Qt.Unchecked,
+ u'presentations/Impress': QtCore.Qt.Checked,
+ u'presentations/Powerpoint': QtCore.Qt.Checked,
+ u'presentations/Powerpoint Viewer': QtCore.Qt.Checked,
+ u'presentations/presentations files': []
+}
class PresentationPlugin(Plugin):
"""
- This plugin allowed a Presentation to be opened, controlled and displayed
- on the output display. The plugin controls third party applications such
- as OpenOffice.org Impress, Microsoft PowerPoint and the PowerPoint viewer
+ This plugin allowed a Presentation to be opened, controlled and displayed on the output display. The plugin controls
+ third party applications such as OpenOffice.org Impress, Microsoft PowerPoint and the PowerPoint viewer.
"""
log = logging.getLogger(u'PresentationPlugin')
@@ -71,16 +72,14 @@
def create_settings_tab(self, parent):
"""
- Create the settings Tab
+ Create the settings Tab.
"""
visible_name = self.get_string(StringContent.VisibleName)
- self.settings_tab = PresentationTab(parent, self.name, visible_name[u'title'], self.controllers,
- self.icon_path)
+ self.settings_tab = PresentationTab(parent, self.name, visible_name[u'title'], self.controllers, self.icon_path)
def initialise(self):
"""
- Initialise the plugin. Determine which controllers are enabled
- are start their processes.
+ Initialise the plugin. Determine which controllers are enabled are start their processes.
"""
log.info(u'Presentations Initialising')
Plugin.initialise(self)
@@ -95,8 +94,8 @@
def finalise(self):
"""
- Finalise the plugin. Ask all the enabled presentation applications
- to close down their applications and release resources.
+ Finalise the plugin. Ask all the enabled presentation applications to close down their applications and release
+ resources.
"""
log.info(u'Plugin Finalise')
# Ask each controller to tidy up.
@@ -108,26 +107,23 @@
def create_media_manager_item(self):
"""
- Create the Media Manager List
+ Create the Media Manager List.
"""
self.media_item = PresentationMediaItem(
self.main_window.media_dock_manager.media_dock, self, self.icon, self.controllers)
def register_controllers(self, controller):
"""
- Register each presentation controller (Impress, PPT etc) and store for later use
+ Register each presentation controller (Impress, PPT etc) and store for later use.
"""
self.controllers[controller.name] = controller
def check_pre_conditions(self):
"""
- Check to see if we have any presentation software available
- If Not do not install the plugin.
+ Check to see if we have any presentation software available. If not do not install the plugin.
"""
log.debug(u'check_pre_conditions')
- controller_dir = os.path.join(
- AppLocation.get_directory(AppLocation.PluginsDir),
- u'presentations', u'lib')
+ controller_dir = os.path.join(AppLocation.get_directory(AppLocation.PluginsDir), u'presentations', u'lib')
for filename in os.listdir(controller_dir):
if filename.endswith(u'controller.py') and not filename == 'presentationcontroller.py':
path = os.path.join(controller_dir, filename)
@@ -146,7 +142,7 @@
def about(self):
"""
- Return information about this plugin
+ Return information about this plugin.
"""
about_text = translate('PresentationPlugin', '<strong>Presentation '
'Plugin</strong><br />The presentation plugin provides the '
@@ -157,7 +153,7 @@
def set_plugin_text_strings(self):
"""
- Called to define all translatable texts of the plugin
+ Called to define all translatable texts of the plugin.
"""
## Name PluginList ##
self.text_strings[StringContent.Name] = {
=== modified file 'openlp/plugins/songs/forms/editsongform.py'
--- openlp/plugins/songs/forms/editsongform.py 2013-03-28 21:36:18 +0000
+++ openlp/plugins/songs/forms/editsongform.py 2013-04-19 19:45:32 +0000
@@ -320,7 +320,7 @@
for plugin in self.plugin_manager.plugins:
if plugin.name == u'media' and plugin.status == PluginStatus.Active:
self.from_media_button.setVisible(True)
- self.media_form.populateFiles(plugin.media_item.getList(MediaType.Audio))
+ self.media_form.populateFiles(plugin.media_item.get_list(MediaType.Audio))
break
def new_song(self):
=== modified file 'openlp/plugins/songusage/__init__.py'
--- openlp/plugins/songusage/__init__.py 2013-01-01 16:33:41 +0000
+++ openlp/plugins/songusage/__init__.py 2013-04-19 19:45:32 +0000
@@ -27,7 +27,6 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
"""
-The :mod:`songusage` module contains the Song Usage plugin. The Song Usage
-plugin provides auditing capabilities for reporting the songs you are using to
-copyright license organisations.
+The :mod:`songusage` module contains the Song Usage plugin. The Song Usage plugin provides auditing capabilities for
+reporting the songs you are using to copyright license organisations.
"""
=== modified file 'openlp/plugins/songusage/forms/songusagedeletedialog.py'
--- openlp/plugins/songusage/forms/songusagedeletedialog.py 2013-02-16 10:38:02 +0000
+++ openlp/plugins/songusage/forms/songusagedeletedialog.py 2013-04-19 19:45:32 +0000
@@ -55,7 +55,8 @@
self.retranslateUi(song_usage_delete_dialog)
def retranslateUi(self, song_usage_delete_dialog):
- song_usage_delete_dialog.setWindowTitle(translate('SongUsagePlugin.SongUsageDeleteForm', 'Delete Song Usage Data'))
+ song_usage_delete_dialog.setWindowTitle(
+ translate('SongUsagePlugin.SongUsageDeleteForm', 'Delete Song Usage Data'))
self.delete_label.setText(
translate('SongUsagePlugin.SongUsageDeleteForm', 'Select the date up to which the song usage data '
'should be deleted. All data recorded before this date will be permanently deleted.'))
=== modified file 'openlp/plugins/songusage/forms/songusagedetaildialog.py'
--- openlp/plugins/songusage/forms/songusagedetaildialog.py 2013-02-16 13:02:20 +0000
+++ openlp/plugins/songusage/forms/songusagedetaildialog.py 2013-04-19 19:45:32 +0000
@@ -81,7 +81,8 @@
self.save_file_push_button.clicked.connect(song_usage_detail_dialog.define_output_location)
def retranslateUi(self, song_usage_detail_dialog):
- song_usage_detail_dialog.setWindowTitle(translate('SongUsagePlugin.SongUsageDetailForm', 'Song Usage Extraction'))
+ song_usage_detail_dialog.setWindowTitle(
+ translate('SongUsagePlugin.SongUsageDetailForm', 'Song Usage Extraction'))
self.date_range_group_box.setTitle(translate('SongUsagePlugin.SongUsageDetailForm', 'Select Date Range'))
self.to_label.setText(translate('SongUsagePlugin.SongUsageDetailForm', 'to'))
self.file_group_box.setTitle(translate('SongUsagePlugin.SongUsageDetailForm', 'Report Location'))
=== modified file 'openlp/plugins/songusage/lib/db.py'
--- openlp/plugins/songusage/lib/db.py 2013-01-01 16:33:41 +0000
+++ openlp/plugins/songusage/lib/db.py 2013-04-19 19:45:32 +0000
@@ -36,12 +36,14 @@
from openlp.core.lib.db import BaseModel, init_db
+
class SongUsageItem(BaseModel):
"""
SongUsageItem model
"""
pass
+
def init_schema(url):
"""
Setup the songusage database connection and initialise the database schema
=== modified file 'openlp/plugins/songusage/songusageplugin.py'
--- openlp/plugins/songusage/songusageplugin.py 2013-03-19 19:43:22 +0000
+++ openlp/plugins/songusage/songusageplugin.py 2013-04-19 19:45:32 +0000
@@ -48,11 +48,11 @@
__default_settings__ = {
- u'songusage/db type': u'sqlite',
- u'songusage/active': False,
- u'songusage/to date': QtCore.QDate(YEAR, 8, 31),
- u'songusage/from date': QtCore.QDate(YEAR - 1, 9, 1),
- u'songusage/last directory export': u''
+ u'songusage/db type': u'sqlite',
+ u'songusage/active': False,
+ u'songusage/to date': QtCore.QDate(YEAR, 8, 31),
+ u'songusage/from date': QtCore.QDate(YEAR - 1, 9, 1),
+ u'songusage/last directory export': u''
}
@@ -76,12 +76,10 @@
def add_tools_menu_item(self, tools_menu):
"""
- Give the SongUsage plugin the opportunity to add items to the
- **Tools** menu.
+ Give the SongUsage plugin the opportunity to add items to the **Tools** menu.
``tools_menu``
- The actual **Tools** menu item, so that your actions can
- use it as their parent.
+ The actual **Tools** menu item, so that your actions can use it as their parent.
"""
log.info(u'add tools menu')
self.toolsMenu = tools_menu
@@ -218,8 +216,8 @@
self.song_usage_detail_form.exec_()
def about(self):
- about_text = translate('SongUsagePlugin', '<strong>SongUsage Plugin'
- '</strong><br />This plugin tracks the usage of songs in services.')
+ about_text = translate('SongUsagePlugin',
+ '<strong>SongUsage Plugin</strong><br />This plugin tracks the usage of songs in services.')
return about_text
def set_plugin_text_strings(self):
=== modified file 'tests/functional/openlp_plugins/images/test_lib.py'
--- tests/functional/openlp_plugins/images/test_lib.py 2013-03-19 20:05:13 +0000
+++ tests/functional/openlp_plugins/images/test_lib.py 2013-04-19 19:45:32 +0000
@@ -35,7 +35,7 @@
"""
# GIVEN: An empty image_list
image_list = []
- with patch(u'openlp.plugins.images.lib.mediaitem.ImageMediaItem.loadFullList') as mocked_loadFullList:
+ with patch(u'openlp.plugins.images.lib.mediaitem.ImageMediaItem.load_full_list') as mocked_loadFullList:
self.media_item.manager = MagicMock()
# WHEN: We run save_new_images_list with the empty list
@@ -47,37 +47,37 @@
def save_new_images_list_single_image_with_reload_test(self):
"""
- Test that the save_new_images_list() calls loadFullList() when reload_list is set to True
+ Test that the save_new_images_list() calls load_full_list() when reload_list is set to True
"""
# GIVEN: A list with 1 image
image_list = [ u'test_image.jpg' ]
- with patch(u'openlp.plugins.images.lib.mediaitem.ImageMediaItem.loadFullList') as mocked_loadFullList:
+ with patch(u'openlp.plugins.images.lib.mediaitem.ImageMediaItem.load_full_list') as mocked_loadFullList:
ImageFilenames.filename = ''
self.media_item.manager = MagicMock()
# WHEN: We run save_new_images_list with reload_list=True
self.media_item.save_new_images_list(image_list, reload_list=True)
- # THEN: loadFullList() should have been called
- assert mocked_loadFullList.call_count == 1, u'loadFullList() should have been called'
+ # THEN: load_full_list() should have been called
+ assert mocked_loadFullList.call_count == 1, u'load_full_list() should have been called'
# CLEANUP: Remove added attribute from ImageFilenames
delattr(ImageFilenames, 'filename')
def save_new_images_list_single_image_without_reload_test(self):
"""
- Test that the save_new_images_list() doesn't call loadFullList() when reload_list is set to False
+ Test that the save_new_images_list() doesn't call load_full_list() when reload_list is set to False
"""
# GIVEN: A list with 1 image
image_list = [ u'test_image.jpg' ]
- with patch(u'openlp.plugins.images.lib.mediaitem.ImageMediaItem.loadFullList') as mocked_loadFullList:
+ with patch(u'openlp.plugins.images.lib.mediaitem.ImageMediaItem.load_full_list') as mocked_loadFullList:
self.media_item.manager = MagicMock()
# WHEN: We run save_new_images_list with reload_list=False
self.media_item.save_new_images_list(image_list, reload_list=False)
- # THEN: loadFullList() should not have been called
- assert mocked_loadFullList.call_count == 0, u'loadFullList() should not have been called'
+ # THEN: load_full_list() should not have been called
+ assert mocked_loadFullList.call_count == 0, u'load_full_list() should not have been called'
def save_new_images_list_multiple_images_test(self):
"""
@@ -85,15 +85,15 @@
"""
# GIVEN: A list with 3 images
image_list = [ u'test_image_1.jpg', u'test_image_2.jpg', u'test_image_3.jpg' ]
- with patch(u'openlp.plugins.images.lib.mediaitem.ImageMediaItem.loadFullList') as mocked_loadFullList:
+ with patch(u'openlp.plugins.images.lib.mediaitem.ImageMediaItem.load_full_list') as mocked_loadFullList:
self.media_item.manager = MagicMock()
# WHEN: We run save_new_images_list with the list of 3 images
self.media_item.save_new_images_list(image_list, reload_list=False)
- # THEN: loadFullList() should not have been called
+ # THEN: load_full_list() should not have been called
assert self.media_item.manager.save_object.call_count == 3, \
- u'loadFullList() should have been called three times'
+ u'load_full_list() should have been called three times'
def save_new_images_list_other_objects_in_list_test(self):
"""
@@ -101,12 +101,12 @@
"""
# GIVEN: A list with images and objects
image_list = [ u'test_image_1.jpg', None, True, ImageFilenames(), 'test_image_2.jpg' ]
- with patch(u'openlp.plugins.images.lib.mediaitem.ImageMediaItem.loadFullList') as mocked_loadFullList:
+ with patch(u'openlp.plugins.images.lib.mediaitem.ImageMediaItem.load_full_list') as mocked_loadFullList:
self.media_item.manager = MagicMock()
# WHEN: We run save_new_images_list with the list of images and objects
self.media_item.save_new_images_list(image_list, reload_list=False)
- # THEN: loadFullList() should not have been called
+ # THEN: load_full_list() should not have been called
assert self.media_item.manager.save_object.call_count == 2, \
- u'loadFullList() should have been called only once'
+ u'load_full_list() should have been called only once'
Follow ups