More fixes

This commit is contained in:
Tim Bentley 2013-12-26 08:56:53 +00:00
parent 301eb06ce6
commit 35c5577cb7
6 changed files with 206 additions and 198 deletions

View File

@ -576,7 +576,7 @@ def build_html(item, screen, is_live, background, image=None, plugins=None):
""" """
width = screen['size'].width() width = screen['size'].width()
height = screen['size'].height() height = screen['size'].height()
theme_data = item.themedata theme_data = item.theme_data
# Image generated and poked in # Image generated and poked in
if background: if background:
bgimage_src = 'src="data:image/png;base64,%s"' % background bgimage_src = 'src="data:image/png;base64,%s"' % background
@ -630,7 +630,7 @@ def build_background_css(item, width):
Service Item containing theme and location information Service Item containing theme and location information
""" """
width = int(width) // 2 width = int(width) // 2
theme = item.themedata theme = item.theme_data
background = 'background-color: black' background = 'background-color: black'
if theme: if theme:
if theme.background_type == BackgroundType.to_string(BackgroundType.Transparent): if theme.background_type == BackgroundType.to_string(BackgroundType.Transparent):
@ -681,7 +681,7 @@ def build_lyrics_css(item):
%s %s
} }
""" """
theme_data = item.themedata theme_data = item.theme_data
lyricstable = '' lyricstable = ''
lyrics = '' lyrics = ''
lyricsmain = '' lyricsmain = ''
@ -769,7 +769,7 @@ def build_footer_css(item, height):
text-align: left; text-align: left;
white-space: nowrap; white-space: nowrap;
""" """
theme = item.themedata theme = item.theme_data
if not theme or not item.footer: if not theme or not item.footer:
return '' return ''
bottom = height - int(item.footer.y()) - int(item.footer.height()) bottom = height - int(item.footer.y()) - int(item.footer.height())

View File

@ -229,7 +229,7 @@ class Renderer(object):
self.image_manager.add_image( self.image_manager.add_image(
theme_data.background_filename, ImageSource.Theme, QtGui.QColor(theme_data.background_border_color)) theme_data.background_filename, ImageSource.Theme, QtGui.QColor(theme_data.background_border_color))
theme_data, main, footer = self.pre_render(theme_data) theme_data, main, footer = self.pre_render(theme_data)
service_item.themedata = theme_data service_item.theme_data = theme_data
service_item.main = main service_item.main = main
service_item.footer = footer service_item.footer = footer
service_item.render(True) service_item.render(True)

View File

@ -161,7 +161,7 @@ class ServiceItem(object):
self.capabilities = [] self.capabilities = []
self.is_valid = True self.is_valid = True
self.icon = None self.icon = None
self.themedata = None self.theme_data = None
self.main = None self.main = None
self.footer = None self.footer = None
self.bg_image_bytes = None self.bg_image_bytes = None

View File

@ -283,7 +283,7 @@ class MainDisplay(Display):
if not hasattr(self, 'service_item'): if not hasattr(self, 'service_item'):
return False return False
self.override['image'] = path self.override['image'] = path
self.override['theme'] = self.service_item.themedata.background_filename self.override['theme'] = self.service_item.theme_data.background_filename
self.image(path) self.image(path)
# Update the preview frame. # Update the preview frame.
if self.is_live: if self.is_live:
@ -343,7 +343,7 @@ class MainDisplay(Display):
if self.is_live and hasattr(self, 'service_item'): if self.is_live and hasattr(self, 'service_item'):
# Wait for the fade to finish before geting the preview. # Wait for the fade to finish before geting the preview.
# Important otherwise preview will have incorrect text if at all! # Important otherwise preview will have incorrect text if at all!
if self.service_item.themedata and self.service_item.themedata.display_slide_transition: if self.service_item.theme_data and self.service_item.theme_data.display_slide_transition:
while not self.frame.evaluateJavaScript('show_text_completed()'): while not self.frame.evaluateJavaScript('show_text_completed()'):
self.application.process_events() self.application.process_events()
# Wait for the webview to update before getting the preview. # Wait for the webview to update before getting the preview.
@ -383,17 +383,17 @@ class MainDisplay(Display):
Registry().execute('video_background_replaced') Registry().execute('video_background_replaced')
self.override = {} self.override = {}
# We have a different theme. # We have a different theme.
elif self.override['theme'] != service_item.themedata.background_filename: elif self.override['theme'] != service_item.theme_data.background_filename:
Registry().execute('live_theme_changed') Registry().execute('live_theme_changed')
self.override = {} self.override = {}
else: else:
# replace the background # replace the background
background = self.image_manager.get_image_bytes(self.override['image'], ImageSource.ImagePlugin) background = self.image_manager.get_image_bytes(self.override['image'], ImageSource.ImagePlugin)
self.set_transparency(self.service_item.themedata.background_type == self.set_transparency(self.service_item.theme_data.background_type ==
BackgroundType.to_string(BackgroundType.Transparent)) BackgroundType.to_string(BackgroundType.Transparent))
if self.service_item.themedata.background_filename: if self.service_item.theme_data.background_filename:
self.service_item.bg_image_bytes = self.image_manager.get_image_bytes( self.service_item.bg_image_bytes = self.image_manager.get_image_bytes(
self.service_item.themedata.background_filename, ImageSource.Theme self.service_item.theme_data.background_filename, ImageSource.Theme
) )
if image_path: if image_path:
image_bytes = self.image_manager.get_image_bytes(image_path, ImageSource.ImagePlugin) image_bytes = self.image_manager.get_image_bytes(image_path, ImageSource.ImagePlugin)

View File

@ -29,7 +29,7 @@
""" """
The service manager sets up, loads, saves and manages services. The service manager sets up, loads, saves and manages services.
""" """
import cgi import html
import logging import logging
import os import os
import shutil import shutil
@ -55,12 +55,12 @@ class ServiceManagerList(QtGui.QTreeWidget):
""" """
Set up key bindings and mouse behaviour for the service list Set up key bindings and mouse behaviour for the service list
""" """
def __init__(self, serviceManager, parent=None): def __init__(self, service_manager, parent=None):
""" """
Constructor Constructor
""" """
super(ServiceManagerList, self).__init__(parent) super(ServiceManagerList, self).__init__(parent)
self.serviceManager = serviceManager self.service_manager = service_manager
def keyPressEvent(self, event): def keyPressEvent(self, event):
""" """
@ -69,13 +69,13 @@ class ServiceManagerList(QtGui.QTreeWidget):
if isinstance(event, QtGui.QKeyEvent): if isinstance(event, QtGui.QKeyEvent):
# here accept the event and do something # here accept the event and do something
if event.key() == QtCore.Qt.Key_Up: if event.key() == QtCore.Qt.Key_Up:
self.serviceManager.on_move_selection_up() self.service_manager.on_move_selection_up()
event.accept() event.accept()
elif event.key() == QtCore.Qt.Key_Down: elif event.key() == QtCore.Qt.Key_Down:
self.serviceManager.on_move_selection_down() self.service_manager.on_move_selection_down()
event.accept() event.accept()
elif event.key() == QtCore.Qt.Key_Delete: elif event.key() == QtCore.Qt.Key_Delete:
self.serviceManager.onDeleteFromService() self.service_manager.onDeleteFromService()
event.accept() event.accept()
event.ignore() event.ignore()
else: else:
@ -154,19 +154,19 @@ class ServiceManagerDialog(object):
self.order_toolbar = OpenLPToolbar(self) self.order_toolbar = OpenLPToolbar(self)
action_list = ActionList.get_instance() action_list = ActionList.get_instance()
action_list.add_category(UiStrings().Service, CategoryOrder.standard_toolbar) action_list.add_category(UiStrings().Service, CategoryOrder.standard_toolbar)
self.service_manager_list.moveTop = self.order_toolbar.add_toolbar_action('moveTop', self.service_manager_list.move_top = self.order_toolbar.add_toolbar_action('moveTop',
text=translate('OpenLP.ServiceManager', 'Move to &top'), icon=':/services/service_top.png', text=translate('OpenLP.ServiceManager', 'Move to &top'), icon=':/services/service_top.png',
tooltip=translate('OpenLP.ServiceManager', 'Move item to the top of the service.'), tooltip=translate('OpenLP.ServiceManager', 'Move item to the top of the service.'),
can_shortcuts=True, category=UiStrings().Service, triggers=self.onServiceTop) can_shortcuts=True, category=UiStrings().Service, triggers=self.onServiceTop)
self.service_manager_list.moveUp = self.order_toolbar.add_toolbar_action('moveUp', self.service_manager_list.move_up = self.order_toolbar.add_toolbar_action('moveUp',
text=translate('OpenLP.ServiceManager', 'Move &up'), icon=':/services/service_up.png', text=translate('OpenLP.ServiceManager', 'Move &up'), icon=':/services/service_up.png',
tooltip=translate('OpenLP.ServiceManager', 'Move item up one position in the service.'), tooltip=translate('OpenLP.ServiceManager', 'Move item up one position in the service.'),
can_shortcuts=True, category=UiStrings().Service, triggers=self.onServiceUp) can_shortcuts=True, category=UiStrings().Service, triggers=self.onServiceUp)
self.service_manager_list.moveDown = self.order_toolbar.add_toolbar_action('moveDown', self.service_manager_list.move_down = self.order_toolbar.add_toolbar_action('moveDown',
text=translate('OpenLP.ServiceManager', 'Move &down'), icon=':/services/service_down.png', text=translate('OpenLP.ServiceManager', 'Move &down'), icon=':/services/service_down.png',
tooltip=translate('OpenLP.ServiceManager', 'Move item down one position in the service.'), tooltip=translate('OpenLP.ServiceManager', 'Move item down one position in the service.'),
can_shortcuts=True, category=UiStrings().Service, triggers=self.onServiceDown) can_shortcuts=True, category=UiStrings().Service, triggers=self.onServiceDown)
self.service_manager_list.moveBottom = self.order_toolbar.add_toolbar_action('moveBottom', self.service_manager_list.move_bottom = self.order_toolbar.add_toolbar_action('moveBottom',
text=translate('OpenLP.ServiceManager', 'Move to &bottom'), icon=':/services/service_bottom.png', text=translate('OpenLP.ServiceManager', 'Move to &bottom'), icon=':/services/service_bottom.png',
tooltip=translate('OpenLP.ServiceManager', 'Move item to the end of the service.'), tooltip=translate('OpenLP.ServiceManager', 'Move item to the end of the service.'),
can_shortcuts=True, category=UiStrings().Service, triggers=self.onServiceEnd) can_shortcuts=True, category=UiStrings().Service, triggers=self.onServiceEnd)
@ -189,11 +189,11 @@ class ServiceManagerDialog(object):
self.service_manager_list.expand = self.order_toolbar.add_toolbar_action('expand', can_shortcuts=True, self.service_manager_list.expand = self.order_toolbar.add_toolbar_action('expand', can_shortcuts=True,
text=translate('OpenLP.ServiceManager', '&Expand all'), icon=':/services/service_expand_all.png', text=translate('OpenLP.ServiceManager', '&Expand all'), icon=':/services/service_expand_all.png',
tooltip=translate('OpenLP.ServiceManager', 'Expand all the service items.'), tooltip=translate('OpenLP.ServiceManager', 'Expand all the service items.'),
category=UiStrings().Service, triggers=self.onExpandAll) category=UiStrings().Service, triggers=self.on_expand_all)
self.service_manager_list.collapse = self.order_toolbar.add_toolbar_action('collapse', can_shortcuts=True, self.service_manager_list.collapse = self.order_toolbar.add_toolbar_action('collapse', can_shortcuts=True,
text=translate('OpenLP.ServiceManager', '&Collapse all'), icon=':/services/service_collapse_all.png', text=translate('OpenLP.ServiceManager', '&Collapse all'), icon=':/services/service_collapse_all.png',
tooltip=translate('OpenLP.ServiceManager', 'Collapse all the service items.'), tooltip=translate('OpenLP.ServiceManager', 'Collapse all the service items.'),
category=UiStrings().Service, triggers=self.onCollapseAll) category=UiStrings().Service, triggers=self.on_collapse_all)
self.order_toolbar.addSeparator() self.order_toolbar.addSeparator()
self.service_manager_list.make_live = self.order_toolbar.add_toolbar_action('make_live', can_shortcuts=True, self.service_manager_list.make_live = self.order_toolbar.add_toolbar_action('make_live', can_shortcuts=True,
text=translate('OpenLP.ServiceManager', 'Go Live'), icon=':/general/general_live.png', text=translate('OpenLP.ServiceManager', 'Go Live'), icon=':/general/general_live.png',
@ -208,30 +208,35 @@ class ServiceManagerDialog(object):
self.service_manager_list.itemExpanded.connect(self.expanded) self.service_manager_list.itemExpanded.connect(self.expanded)
# Last little bits of setting up # Last little bits of setting up
self.service_theme = Settings().value(self.main_window.service_manager_settings_section + '/service theme') self.service_theme = Settings().value(self.main_window.service_manager_settings_section + '/service theme')
self.servicePath = AppLocation.get_section_data_path('servicemanager') self.service_path = AppLocation.get_section_data_path('servicemanager')
# build the drag and drop context menu # build the drag and drop context menu
self.dndMenu = QtGui.QMenu() self.dnd_menu = QtGui.QMenu()
self.newAction = self.dndMenu.addAction(translate('OpenLP.ServiceManager', '&Add New Item')) self.new_action = self.dnd_menu.addAction(translate('OpenLP.ServiceManager', '&Add New Item'))
self.newAction.setIcon(build_icon(':/general/general_edit.png')) self.new_action.setIcon(build_icon(':/general/general_edit.png'))
self.addToAction = self.dndMenu.addAction(translate('OpenLP.ServiceManager', '&Add to Selected Item')) self.add_to_action = self.dnd_menu.addAction(translate('OpenLP.ServiceManager', '&Add to Selected Item'))
self.addToAction.setIcon(build_icon(':/general/general_edit.png')) self.add_to_action.setIcon(build_icon(':/general/general_edit.png'))
# build the context menu # build the context menu
self.menu = QtGui.QMenu() self.menu = QtGui.QMenu()
self.edit_action = create_widget_action(self.menu, text=translate('OpenLP.ServiceManager', '&Edit Item'), self.edit_action = create_widget_action(self.menu, text=translate('OpenLP.ServiceManager', '&Edit Item'),
icon=':/general/general_edit.png', triggers=self.remote_edit) icon=':/general/general_edit.png', triggers=self.remote_edit)
self.maintain_action = create_widget_action(self.menu, text=translate('OpenLP.ServiceManager', '&Reorder Item'), self.maintain_action = create_widget_action(self.menu, text=translate('OpenLP.ServiceManager', '&Reorder Item'),
icon=':/general/general_edit.png', triggers=self.on_service_item_edit_form) icon=':/general/general_edit.png',
triggers=self.on_service_item_edit_form)
self.notes_action = create_widget_action(self.menu, text=translate('OpenLP.ServiceManager', '&Notes'), self.notes_action = create_widget_action(self.menu, text=translate('OpenLP.ServiceManager', '&Notes'),
icon=':/services/service_notes.png', triggers=self.on_service_item_note_form) icon=':/services/service_notes.png',
triggers=self.on_service_item_note_form)
self.time_action = create_widget_action(self.menu, text=translate('OpenLP.ServiceManager', '&Start Time'), self.time_action = create_widget_action(self.menu, text=translate('OpenLP.ServiceManager', '&Start Time'),
icon=':/media/media_time.png', triggers=self.on_start_time_form) icon=':/media/media_time.png', triggers=self.on_start_time_form)
self.auto_start_action = create_widget_action(self.menu, text='', self.auto_start_action = create_widget_action(self.menu, text='',
icon=':/media/auto-start_active.png', triggers=self.on_auto_start) icon=':/media/auto-start_active.png',
triggers=self.on_auto_start)
# Add already existing delete action to the menu. # Add already existing delete action to the menu.
self.menu.addAction(self.service_manager_list.delete) self.menu.addAction(self.service_manager_list.delete)
self.create_custom_action = create_widget_action(self.menu, self.create_custom_action = create_widget_action(self.menu,
text=translate('OpenLP.ServiceManager', 'Create New &Custom Slide'), text=translate('OpenLP.ServiceManager', 'Create New &Custom '
icon=':/general/general_edit.png', triggers=self.create_custom) 'Slide'),
icon=':/general/general_edit.png',
triggers=self.create_custom)
self.menu.addSeparator() self.menu.addSeparator()
# Add AutoPlay menu actions # Add AutoPlay menu actions
self.auto_play_slides_menu = QtGui.QMenu(translate('OpenLP.ServiceManager', '&Auto play slides')) self.auto_play_slides_menu = QtGui.QMenu(translate('OpenLP.ServiceManager', '&Auto play slides'))
@ -239,38 +244,41 @@ class ServiceManagerDialog(object):
auto_play_slides_group = QtGui.QActionGroup(self.auto_play_slides_menu) auto_play_slides_group = QtGui.QActionGroup(self.auto_play_slides_menu)
auto_play_slides_group.setExclusive(True) auto_play_slides_group.setExclusive(True)
self.auto_play_slides_loop = create_widget_action(self.auto_play_slides_menu, self.auto_play_slides_loop = create_widget_action(self.auto_play_slides_menu,
text=translate('OpenLP.ServiceManager', 'Auto play slides &Loop'), text=translate('OpenLP.ServiceManager', 'Auto play slides '
checked=False, triggers=self.toggle_auto_play_slides_loop) '&Loop'),
checked=False, triggers=self.toggle_auto_play_slides_loop)
auto_play_slides_group.addAction(self.auto_play_slides_loop) auto_play_slides_group.addAction(self.auto_play_slides_loop)
self.auto_play_slides_once = create_widget_action(self.auto_play_slides_menu, self.auto_play_slides_once = create_widget_action(self.auto_play_slides_menu,
text=translate('OpenLP.ServiceManager', 'Auto play slides &Once'), text=translate('OpenLP.ServiceManager', 'Auto play slides '
checked=False, triggers=self.toggle_auto_play_slides_once) '&Once'),
checked=False, triggers=self.toggle_auto_play_slides_once)
auto_play_slides_group.addAction(self.auto_play_slides_once) auto_play_slides_group.addAction(self.auto_play_slides_once)
self.auto_play_slides_menu.addSeparator() self.auto_play_slides_menu.addSeparator()
self.timed_slide_interval = create_widget_action(self.auto_play_slides_menu, self.timed_slide_interval = create_widget_action(self.auto_play_slides_menu,
text=translate('OpenLP.ServiceManager', '&Delay between slides'), text=translate('OpenLP.ServiceManager', '&Delay between '
triggers=self.on_timed_slide_interval) 'slides'),
triggers=self.on_timed_slide_interval)
self.menu.addSeparator() self.menu.addSeparator()
self.preview_action = create_widget_action(self.menu, text=translate('OpenLP.ServiceManager', 'Show &Preview'), self.preview_action = create_widget_action(self.menu, text=translate('OpenLP.ServiceManager', 'Show &Preview'),
icon=':/general/general_preview.png', triggers=self.make_preview) icon=':/general/general_preview.png', triggers=self.make_preview)
# Add already existing make live action to the menu. # Add already existing make live action to the menu.
self.menu.addAction(self.service_manager_list.make_live) self.menu.addAction(self.service_manager_list.make_live)
self.menu.addSeparator() self.menu.addSeparator()
self.theme_menu = QtGui.QMenu(translate('OpenLP.ServiceManager', '&Change Item Theme')) self.theme_menu = QtGui.QMenu(translate('OpenLP.ServiceManager', '&Change Item Theme'))
self.menu.addMenu(self.theme_menu) self.menu.addMenu(self.theme_menu)
self.service_manager_list.addActions( self.service_manager_list.addActions(
[self.service_manager_list.moveDown, [self.service_manager_list.move_down,
self.service_manager_list.moveUp, self.service_manager_list.move_up,
self.service_manager_list.make_live, self.service_manager_list.make_live,
self.service_manager_list.moveTop, self.service_manager_list.move_top,
self.service_manager_list.moveBottom, self.service_manager_list.move_bottom,
self.service_manager_list.up, self.service_manager_list.up,
self.service_manager_list.down, self.service_manager_list.down,
self.service_manager_list.expand, self.service_manager_list.expand,
self.service_manager_list.collapse self.service_manager_list.collapse
]) ])
Registry().register_function('theme_update_list', self.update_theme_list) Registry().register_function('theme_update_list', self.update_theme_list)
Registry().register_function('config_screen_changed', self.regenerate_service_Items) Registry().register_function('config_screen_changed', self.regenerate_service_items)
Registry().register_function('theme_update_global', self.theme_change) Registry().register_function('theme_update_global', self.theme_change)
Registry().register_function('mediaitem_suffix_reset', self.reset_supported_suffixes) Registry().register_function('mediaitem_suffix_reset', self.reset_supported_suffixes)
@ -422,7 +430,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
'The current service has been modified. Would you like to save ' 'The current service has been modified. Would you like to save '
'this service?'), 'this service?'),
QtGui.QMessageBox.Save | QtGui.QMessageBox.Discard | QtGui.QMessageBox.Save | QtGui.QMessageBox.Discard |
QtGui.QMessageBox.Cancel, QtGui.QMessageBox.Save) QtGui.QMessageBox.Cancel, QtGui.QMessageBox.Save)
def on_recent_service_clicked(self): def on_recent_service_clicked(self):
""" """
@ -509,7 +517,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
audio_files.append((file_name, new_file)) audio_files.append((file_name, new_file))
service_item['header']['background_audio'][i] = new_file service_item['header']['background_audio'][i] = new_file
# Add the service item to the service. # Add the service item to the service.
service.append({'serviceitem': service_item}) service.append({'service_item_from_item': service_item})
self.repaint_service_list(-1, -1) self.repaint_service_list(-1, -1)
for file_item in write_list: for file_item in write_list:
file_size = os.path.getsize(file_item) file_size = os.path.getsize(file_item)
@ -533,8 +541,8 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
if audio_from.startswith('audio'): if audio_from.startswith('audio'):
# When items are saved, they get new unique_identifier. Let's copy the file to the new location. # When items are saved, they get new unique_identifier. Let's copy the file to the new location.
# Unused files can be ignored, OpenLP automatically cleans up the service manager dir on exit. # Unused files can be ignored, OpenLP automatically cleans up the service manager dir on exit.
audio_from = os.path.join(self.servicePath, audio_from) audio_from = os.path.join(self.service_path, audio_from)
save_file = os.path.join(self.servicePath, audio_to) save_file = os.path.join(self.service_path, audio_to)
save_path = os.path.split(save_file)[0] save_path = os.path.split(save_file)[0]
check_directory_exists(save_path) check_directory_exists(save_path)
if not os.path.exists(save_file): if not os.path.exists(save_file):
@ -585,7 +593,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
self.main_window.increment_progress_bar() self.main_window.increment_progress_bar()
service_item = item['service_item'].get_service_repr(self._save_lite) service_item = item['service_item'].get_service_repr(self._save_lite)
#TODO: check for file item on save. #TODO: check for file item on save.
service.append({'serviceitem': service_item}) service.append({'service_item_from_item': service_item})
self.main_window.increment_progress_bar() self.main_window.increment_progress_bar()
service_content = json.dumps(service) service_content = json.dumps(service)
zip_file = None zip_file = None
@ -693,14 +701,14 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
critical_error_message_box(message=translate('OpenLP.ServiceManager', critical_error_message_box(message=translate('OpenLP.ServiceManager',
'File is not a valid service.\n The content encoding is not UTF-8.')) 'File is not a valid service.\n The content encoding is not UTF-8.'))
continue continue
osfile = ucs_file.replace('/', os.path.sep) os_file = ucs_file.replace('/', os.path.sep)
if not osfile.startswith('audio'): if not os_file.startswith('audio'):
osfile = os.path.split(osfile)[1] os_file = os.path.split(os_file)[1]
log.debug('Extract file: %s', osfile) log.debug('Extract file: %s', os_file)
zip_info.filename = osfile zip_info.filename = os_file
zip_file.extract(zip_info, self.servicePath) zip_file.extract(zip_info, self.service_path)
if osfile.endswith('osj') or osfile.endswith('osd'): if os_file.endswith('osj') or os_file.endswith('osd'):
p_file = os.path.join(self.servicePath, osfile) p_file = os.path.join(self.service_path, os_file)
if 'p_file' in locals(): if 'p_file' in locals():
file_to = open(p_file, 'r') file_to = open(p_file, 'r')
if p_file.endswith('osj'): if p_file.endswith('osj'):
@ -720,7 +728,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
if self._save_lite: if self._save_lite:
service_item.set_from_service(item) service_item.set_from_service(item)
else: else:
service_item.set_from_service(item, self.servicePath) service_item.set_from_service(item, self.service_path)
service_item.validate_item(self.suffixes) service_item.validate_item(self.suffixes)
if service_item.is_capable(ItemCapabilities.OnLoadUpdate): if service_item.is_capable(ItemCapabilities.OnLoadUpdate):
new_item = Registry().get(service_item.name).service_load(service_item) new_item = Registry().get(service_item.name).service_load(service_item)
@ -760,7 +768,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
self.application.set_normal_cursor() self.application.set_normal_cursor()
self.repaint_service_list(-1, -1) self.repaint_service_list(-1, -1)
def load_Last_file(self): def load_last_file(self):
""" """
Load the last service item from the service manager when the service was last closed. Can be blank if there was Load the last service item from the service manager when the service was last closed. Can be blank if there was
no service present. no service present.
@ -950,19 +958,19 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
""" """
Called by the SlideController to select the next service item. Called by the SlideController to select the next service item.
""" """
if not self.service_manager_list.selectedItems(): if not self.service_manager_list.selected_items():
return return
selected = self.service_manager_list.selectedItems()[0] selected = self.service_manager_list.selected_items()[0]
lookFor = 0 look_for = 0
serviceIterator = QtGui.QTreeWidgetItemIterator(self.service_manager_list) service_iterator = QtGui.QTreeWidgetItemIterator(self.service_manager_list)
while serviceIterator.value(): while service_iterator.value():
if lookFor == 1 and serviceIterator.value().parent() is None: if look_for == 1 and service_iterator.value().parent() is None:
self.service_manager_list.setCurrentItem(serviceIterator.value()) self.service_manager_list.setCurrentItem(service_iterator.value())
self.make_live() self.make_live()
return return
if serviceIterator.value() == selected: if service_iterator.value() == selected:
lookFor = 1 look_for = 1
serviceIterator += 1 service_iterator += 1
def previous_item(self, last_slide=False): def previous_item(self, last_slide=False):
""" """
@ -972,31 +980,31 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
Is this the last slide in the service_item Is this the last slide in the service_item
""" """
if not self.service_manager_list.selectedItems(): if not self.service_manager_list.selected_items():
return return
selected = self.service_manager_list.selectedItems()[0] selected = self.service_manager_list.selected_items()[0]
prevItem = None prev_item = None
prevItemLastSlide = None prev_item_last_slide = None
serviceIterator = QtGui.QTreeWidgetItemIterator(self.service_manager_list) service_iterator = QtGui.QTreeWidgetItemIterator(self.service_manager_list)
while serviceIterator.value(): while service_iterator.value():
if serviceIterator.value() == selected: if service_iterator.value() == selected:
if last_slide and prevItemLastSlide: if last_slide and prev_item_last_slide:
pos = prevItem.data(0, QtCore.Qt.UserRole) pos = prev_item.data(0, QtCore.Qt.UserRole)
check_expanded = self.service_items[pos - 1]['expanded'] check_expanded = self.service_items[pos - 1]['expanded']
self.service_manager_list.setCurrentItem(prevItemLastSlide) self.service_manager_list.setCurrentItem(prev_item_last_slide)
if not check_expanded: if not check_expanded:
self.service_manager_list.collapseItem(prevItem) self.service_manager_list.collapseItem(prev_item)
self.make_live() self.make_live()
self.service_manager_list.setCurrentItem(prevItem) self.service_manager_list.setCurrentItem(prev_item)
elif prevItem: elif prev_item:
self.service_manager_list.setCurrentItem(prevItem) self.service_manager_list.setCurrentItem(prev_item)
self.make_live() self.make_live()
return return
if serviceIterator.value().parent() is None: if service_iterator.value().parent() is None:
prevItem = serviceIterator.value() prev_item = service_iterator.value()
if serviceIterator.value().parent() is prevItem: if service_iterator.value().parent() is prev_item:
prevItemLastSlide = serviceIterator.value() prev_item_last_slide = service_iterator.value()
serviceIterator += 1 service_iterator += 1
def on_set_item(self, message): def on_set_item(self, message):
""" """
@ -1018,22 +1026,22 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
Moves the cursor selection up the window. Called by the up arrow. Moves the cursor selection up the window. Called by the up arrow.
""" """
item = self.service_manager_list.currentItem() item = self.service_manager_list.currentItem()
itemBefore = self.service_manager_list.itemAbove(item) item_before = self.service_manager_list.item_above(item)
if itemBefore is None: if item_before is None:
return return
self.service_manager_list.setCurrentItem(itemBefore) self.service_manager_list.setCurrentItem(item_before)
def on_move_selection_down(self): def on_move_selection_down(self):
""" """
Moves the cursor selection down the window. Called by the down arrow. Moves the cursor selection down the window. Called by the down arrow.
""" """
item = self.service_manager_list.currentItem() item = self.service_manager_list.currentItem()
itemAfter = self.service_manager_list.itemBelow(item) item_after = self.service_manager_list.itemBelow(item)
if itemAfter is None: if item_after is None:
return return
self.service_manager_list.setCurrentItem(itemAfter) self.service_manager_list.setCurrentItem(item_after)
def onCollapseAll(self): def on_collapse_all(self):
""" """
Collapse all the service items. Collapse all the service items.
""" """
@ -1048,7 +1056,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
pos = item.data(0, QtCore.Qt.UserRole) pos = item.data(0, QtCore.Qt.UserRole)
self.service_items[pos - 1]['expanded'] = False self.service_items[pos - 1]['expanded'] = False
def onExpandAll(self): def on_expand_all(self):
""" """
Collapse all the service items. Collapse all the service items.
""" """
@ -1144,51 +1152,51 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
self.service_manager_list.clear() self.service_manager_list.clear()
self.service_manager_list.clearSelection() self.service_manager_list.clearSelection()
for item_count, item in enumerate(self.service_items): for item_count, item in enumerate(self.service_items):
serviceitem = item['service_item'] service_item_from_item = item['service_item']
treewidgetitem = QtGui.QTreeWidgetItem(self.service_manager_list) tree_widget_item = QtGui.QTreeWidgetItem(self.service_manager_list)
if serviceitem.is_valid: if service_item_from_item.is_valid:
if serviceitem.notes: if service_item_from_item.notes:
icon = QtGui.QImage(serviceitem.icon) icon = QtGui.QImage(service_item_from_item.icon)
icon = icon.scaled(80, 80, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation) icon = icon.scaled(80, 80, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
overlay = QtGui.QImage(':/services/service_item_notes.png') overlay = QtGui.QImage(':/services/service_item_notes.png')
overlay = overlay.scaled(80, 80, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation) overlay = overlay.scaled(80, 80, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
painter = QtGui.QPainter(icon) painter = QtGui.QPainter(icon)
painter.drawImage(0, 0, overlay) painter.drawImage(0, 0, overlay)
painter.end() painter.end()
treewidgetitem.setIcon(0, build_icon(icon)) tree_widget_item.setIcon(0, build_icon(icon))
elif serviceitem.temporary_edit: elif service_item_from_item.temporary_edit:
icon = QtGui.QImage(serviceitem.icon) icon = QtGui.QImage(service_item_from_item.icon)
icon = icon.scaled(80, 80, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation) icon = icon.scaled(80, 80, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
overlay = QtGui.QImage(':/general/general_export.png') overlay = QtGui.QImage(':/general/general_export.png')
overlay = overlay.scaled(40, 40, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation) overlay = overlay.scaled(40, 40, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
painter = QtGui.QPainter(icon) painter = QtGui.QPainter(icon)
painter.drawImage(40, 0, overlay) painter.drawImage(40, 0, overlay)
painter.end() painter.end()
treewidgetitem.setIcon(0, build_icon(icon)) tree_widget_item.setIcon(0, build_icon(icon))
else: else:
treewidgetitem.setIcon(0, serviceitem.iconic_representation) tree_widget_item.setIcon(0, service_item_from_item.iconic_representation)
else: else:
treewidgetitem.setIcon(0, build_icon(':/general/general_delete.png')) tree_widget_item.setIcon(0, build_icon(':/general/general_delete.png'))
treewidgetitem.setText(0, serviceitem.get_display_title()) tree_widget_item.setText(0, service_item_from_item.get_display_title())
tips = [] tips = []
if serviceitem.temporary_edit: if service_item_from_item.temporary_edit:
tips.append('<strong>%s:</strong> <em>%s</em>' % tips.append('<strong>%s:</strong> <em>%s</em>' %
(translate('OpenLP.ServiceManager', 'Edit'), (translate('OpenLP.ServiceManager', 'Edit'),
(translate('OpenLP.ServiceManager', 'Service copy only')))) (translate('OpenLP.ServiceManager', 'Service copy only'))))
if serviceitem.theme and serviceitem.theme != -1: if service_item_from_item.theme and service_item_from_item.theme != -1:
tips.append('<strong>%s:</strong> <em>%s</em>' % tips.append('<strong>%s:</strong> <em>%s</em>' %
(translate('OpenLP.ServiceManager', 'Slide theme'), serviceitem.theme)) (translate('OpenLP.ServiceManager', 'Slide theme'), service_item_from_item.theme))
if serviceitem.notes: if service_item_from_item.notes:
tips.append('<strong>%s: </strong> %s' % tips.append('<strong>%s: </strong> %s' %
(translate('OpenLP.ServiceManager', 'Notes'), cgi.escape(serviceitem.notes))) (translate('OpenLP.ServiceManager', 'Notes'), html.escape(service_item_from_item.notes)))
if item['service_item'].is_capable(ItemCapabilities.HasVariableStartTime): if item['service_item'].is_capable(ItemCapabilities.HasVariableStartTime):
tips.append(item['service_item'].get_media_time()) tips.append(item['service_item'].get_media_time())
treewidgetitem.setToolTip(0, '<br>'.join(tips)) tree_widget_item.setToolTip(0, '<br>'.join(tips))
treewidgetitem.setData(0, QtCore.Qt.UserRole, item['order']) tree_widget_item.setData(0, QtCore.Qt.UserRole, item['order'])
treewidgetitem.setSelected(item['selected']) tree_widget_item.setSelected(item['selected'])
# Add the children to their parent treewidgetitem. # Add the children to their parent tree_widget_item.
for count, frame in enumerate(serviceitem.get_frames()): for count, frame in enumerate(service_item_from_item.get_frames()):
child = QtGui.QTreeWidgetItem(treewidgetitem) child = QtGui.QTreeWidgetItem(tree_widget_item)
text = frame['title'].replace('\n', ' ') text = frame['title'].replace('\n', ' ')
child.setText(0, text[:40]) child.setText(0, text[:40])
child.setData(0, QtCore.Qt.UserRole, count) child.setData(0, QtCore.Qt.UserRole, count)
@ -1196,19 +1204,19 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
if item['expanded'] and service_item_child == count: if item['expanded'] and service_item_child == count:
self.service_manager_list.setCurrentItem(child) self.service_manager_list.setCurrentItem(child)
elif service_item_child == -1: elif service_item_child == -1:
self.service_manager_list.setCurrentItem(treewidgetitem) self.service_manager_list.setCurrentItem(tree_widget_item)
treewidgetitem.setExpanded(item['expanded']) tree_widget_item.setExpanded(item['expanded'])
def clean_up(self): def clean_up(self):
""" """
Empties the servicePath of temporary files on system exit. Empties the service_path of temporary files on system exit.
""" """
log.debug('Cleaning up servicePath') log.debug('Cleaning up service_path')
for file_name in os.listdir(self.servicePath): for file_name in os.listdir(self.service_path):
file_path = os.path.join(self.servicePath, file_name) file_path = os.path.join(self.service_path, file_name)
delete_file(file_path) delete_file(file_path)
if os.path.exists(os.path.join(self.servicePath, 'audio')): if os.path.exists(os.path.join(self.service_path, 'audio')):
shutil.rmtree(os.path.join(self.servicePath, 'audio'), True) shutil.rmtree(os.path.join(self.service_path, 'audio'), True)
def on_theme_combo_box_selected(self, currentIndex): def on_theme_combo_box_selected(self, currentIndex):
""" """
@ -1218,7 +1226,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
self.service_theme = self.theme_combo_box.currentText() self.service_theme = self.theme_combo_box.currentText()
self.renderer.set_service_theme(self.service_theme) self.renderer.set_service_theme(self.service_theme)
Settings().setValue(self.main_window.service_manager_settings_section + '/service theme', self.service_theme) Settings().setValue(self.main_window.service_manager_settings_section + '/service theme', self.service_theme)
self.regenerate_service_Items(True) self.regenerate_service_items(True)
def theme_change(self): def theme_change(self):
""" """
@ -1229,36 +1237,36 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
self.theme_label.setVisible(visible) self.theme_label.setVisible(visible)
self.theme_combo_box.setVisible(visible) self.theme_combo_box.setVisible(visible)
def regenerate_service_Items(self, changed=False): def regenerate_service_items(self, changed=False):
""" """
Rebuild the service list as things have changed and a repaint is the easiest way to do this. Rebuild the service list as things have changed and a repaint is the easiest way to do this.
""" """
self.application.set_busy_cursor() self.application.set_busy_cursor()
log.debug('regenerate_service_Items') log.debug('regenerate_service_items')
# force reset of renderer as theme data has changed # force reset of renderer as theme data has changed
self.service_has_all_original_files = True self.service_has_all_original_files = True
if self.service_items: if self.service_items:
for item in self.service_items: for item in self.service_items:
item['selected'] = False item['selected'] = False
serviceIterator = QtGui.QTreeWidgetItemIterator(self.service_manager_list) service_iterator = QtGui.QTreeWidgetItemIterator(self.service_manager_list)
selectedItem = None selected_item = None
while serviceIterator.value(): while service_iterator.value():
if serviceIterator.value().isSelected(): if service_iterator.value().isSelected():
selectedItem = serviceIterator.value() selected_item = service_iterator.value()
serviceIterator += 1 service_iterator += 1
if selectedItem is not None: if selected_item is not None:
if selectedItem.parent() is None: if selected_item.parent() is None:
pos = selectedItem.data(0, QtCore.Qt.UserRole) pos = selected_item.data(0, QtCore.Qt.UserRole)
else: else:
pos = selectedItem.parent().data(0, QtCore.Qt.UserRole) pos = selected_item.parent().data(0, QtCore.Qt.UserRole)
self.service_items[pos - 1]['selected'] = True self.service_items[pos - 1]['selected'] = True
tempServiceItems = self.service_items temp_service_items = self.service_items
self.service_manager_list.clear() self.service_manager_list.clear()
self.service_items = [] self.service_items = []
self.isNew = True self.is_new = True
for item in tempServiceItems: for item in temp_service_items:
self.add_service_item(item['service_item'], False, expand=item['expanded'], repaint=False, self.add_service_item(item['service_item'], False, expand=item['expanded'], repaint=False,
selected=item['selected']) selected=item['selected'])
# Set to False as items may have changed rendering does not impact the saved song so True may also be valid # Set to False as items may have changed rendering does not impact the saved song so True may also be valid
if changed: if changed:
self.set_modified() self.set_modified()
@ -1306,18 +1314,18 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
if isinstance(item, list): if isinstance(item, list):
for inditem in item: for inditem in item:
self.service_items.append({'service_item': inditem, self.service_items.append({'service_item': inditem,
'order': len(self.service_items) + 1, 'order': len(self.service_items) + 1,
'expanded': expand, 'selected': selected}) 'expanded': expand, 'selected': selected})
else: else:
self.service_items.append({'service_item': item, self.service_items.append({'service_item': item,
'order': len(self.service_items) + 1, 'order': len(self.service_items) + 1,
'expanded': expand, 'selected': selected}) 'expanded': expand, 'selected': selected})
if repaint: if repaint:
self.repaint_service_list(len(self.service_items) - 1, -1) self.repaint_service_list(len(self.service_items) - 1, -1)
else: else:
self.service_items.insert(self.drop_position, self.service_items.insert(self.drop_position,
{'service_item': item, 'order': self.drop_position, {'service_item': item, 'order': self.drop_position,
'expanded': expand, 'selected': selected}) 'expanded': expand, 'selected': selected})
self.repaint_service_list(self.drop_position, -1) self.repaint_service_list(self.drop_position, -1)
# if rebuilding list make sure live is fixed. # if rebuilding list make sure live is fixed.
if rebuild: if rebuild:
@ -1406,7 +1414,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
def find_service_item(self): def find_service_item(self):
""" """
Finds the first selected ServiceItem in the list and returns the position of the serviceitem and its selected Finds the first selected ServiceItem in the list and returns the position of the service_item_from_item and its selected
child item. For example, if the third child item (in the Slidecontroller known as slide) in the second service child item. For example, if the third child item (in the Slidecontroller known as slide) in the second service
item is selected this will return:: item is selected this will return::
@ -1452,18 +1460,18 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
item = self.service_manager_list.itemAt(event.pos()) item = self.service_manager_list.itemAt(event.pos())
# ServiceManager started the drag and drop # ServiceManager started the drag and drop
if plugin == 'ServiceManager': if plugin == 'ServiceManager':
startpos, child = self.find_service_item() start_pos, child = self.find_service_item()
# If no items selected # If no items selected
if startpos == -1: if start_pos == -1:
return return
if item is None: if item is None:
endpos = len(self.service_items) end_pos = len(self.service_items)
else: else:
endpos = self._get_parent_item_data(item) - 1 end_pos = self._get_parent_item_data(item) - 1
serviceItem = self.service_items[startpos] service_item = self.service_items[start_pos]
self.service_items.remove(serviceItem) self.service_items.remove(service_item)
self.service_items.insert(endpos, serviceItem) self.service_items.insert(end_pos, service_item)
self.repaint_service_list(endpos, child) self.repaint_service_list(end_pos, child)
self.set_modified() self.set_modified()
else: else:
# we are not over anything so drop # we are not over anything so drop
@ -1473,15 +1481,15 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
else: else:
# we are over something so lets investigate # we are over something so lets investigate
pos = self._get_parent_item_data(item) - 1 pos = self._get_parent_item_data(item) - 1
serviceItem = self.service_items[pos] service_item = self.service_items[pos]
if (plugin == serviceItem['service_item'].name and if (plugin == service_item['service_item'].name and
serviceItem['service_item'].is_capable(ItemCapabilities.CanAppend)): service_item['service_item'].is_capable(ItemCapabilities.CanAppend)):
action = self.dndMenu.exec_(QtGui.QCursor.pos()) action = self.dnd_menu.exec_(QtGui.QCursor.pos())
# New action required # New action required
if action == self.newAction: if action == self.new_action:
self.drop_position = self._get_parent_item_data(item) self.drop_position = self._get_parent_item_data(item)
# Append to existing action # Append to existing action
if action == self.addToAction: if action == self.add_to_action:
self.drop_position = self._get_parent_item_data(item) self.drop_position = self._get_parent_item_data(item)
item.setSelected(True) item.setSelected(True)
replace = True replace = True
@ -1504,10 +1512,10 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
theme_group.setObjectName('theme_group') theme_group.setObjectName('theme_group')
# Create a "Default" theme, which allows the user to reset the item's theme to the service theme or global # Create a "Default" theme, which allows the user to reset the item's theme to the service theme or global
# theme. # theme.
defaultTheme = create_widget_action(self.theme_menu, text=UiStrings().Default, checked=False, default_theme = create_widget_action(self.theme_menu, text=UiStrings().Default, checked=False,
triggers=self.on_theme_change_action) triggers=self.on_theme_change_action)
self.theme_menu.setDefaultAction(defaultTheme) self.theme_menu.setDefaultAction(default_theme)
theme_group.addAction(defaultTheme) theme_group.addAction(default_theme)
self.theme_menu.addSeparator() self.theme_menu.addSeparator()
for theme in theme_list: for theme in theme_list:
self.theme_combo_box.addItem(theme) self.theme_combo_box.addItem(theme)
@ -1515,7 +1523,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
triggers=self.on_theme_change_action)) triggers=self.on_theme_change_action))
find_and_set_in_combo_box(self.theme_combo_box, self.service_theme) find_and_set_in_combo_box(self.theme_combo_box, self.service_theme)
self.renderer.set_service_theme(self.service_theme) self.renderer.set_service_theme(self.service_theme)
self.regenerate_service_Items() self.regenerate_service_items()
def on_theme_change_action(self): def on_theme_change_action(self):
""" """
@ -1527,7 +1535,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
theme = None theme = None
item = self.find_service_item()[0] item = self.find_service_item()[0]
self.service_items[item]['service_item'].update_theme(theme) self.service_items[item]['service_item'].update_theme(theme)
self.regenerate_service_Items(True) self.regenerate_service_items(True)
def _get_parent_item_data(self, item): def _get_parent_item_data(self, item):
""" """
@ -1543,8 +1551,8 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
""" """
Print a Service Order Sheet. Print a Service Order Sheet.
""" """
settingDialog = PrintServiceForm() setting_dialog = PrintServiceForm()
settingDialog.exec_() setting_dialog.exec_()
def _get_renderer(self): def _get_renderer(self):
""" """

View File

@ -233,8 +233,8 @@ class Htmbuilder(TestCase):
""" """
# GIVEN: Mocked arguments. # GIVEN: Mocked arguments.
item = MagicMock() item = MagicMock()
item.themedata.background_start_color = '#000000' item.theme_data.background_start_color = '#000000'
item.themedata.background_end_color = '#FFFFFF' item.theme_data.background_end_color = '#FFFFFF'
width = 10 width = 10
# WHEN: Create the css. # WHEN: Create the css.
@ -254,9 +254,9 @@ class Htmbuilder(TestCase):
mocked_build_lyrics_outline_css.return_value = '' mocked_build_lyrics_outline_css.return_value = ''
item = MagicMock() item = MagicMock()
item.main = QtCore.QRect(10, 20, 10, 20) item.main = QtCore.QRect(10, 20, 10, 20)
item.themedata.font_main_shadow = True item.theme_data.font_main_shadow = True
item.themedata.font_main_shadow_color = '#000000' item.theme_data.font_main_shadow_color = '#000000'
item.themedata.font_main_shadow_size = 5 item.theme_data.font_main_shadow_size = 5
# WHEN: Create the css. # WHEN: Create the css.
css = build_lyrics_css(item) css = build_lyrics_css(item)
@ -305,20 +305,20 @@ class Htmbuilder(TestCase):
assert LYRICS_FORMAT_CSS == css, 'The lyrics format css should be equal.' assert LYRICS_FORMAT_CSS == css, 'The lyrics format css should be equal.'
def build_footer_css_test(self): def build_footer_css_test(self):
""" """
Test the build_footer_css() function Test the build_footer_css() function
""" """
# GIVEN: Create a theme. # GIVEN: Create a theme.
item = MagicMock() item = MagicMock()
item.footer = QtCore.QRect(10, 921, 1260, 103) item.footer = QtCore.QRect(10, 921, 1260, 103)
item.themedata.font_footer_name = 'Arial' item.theme_data.font_footer_name = 'Arial'
item.themedata.font_footer_size = 12 item.theme_data.font_footer_size = 12
item.themedata.font_footer_color = '#FFFFFF' item.theme_data.font_footer_color = '#FFFFFF'
height = 1024 height = 1024
# WHEN: create the css. # WHEN: create the css.
css = build_footer_css(item, height) css = build_footer_css(item, height)
# THEN: THE css should be the same. # THEN: THE css should be the same.
assert FOOTER_CSS == css, 'The footer strings should be equal.' assert FOOTER_CSS == css, 'The footer strings should be equal.'