forked from openlp/openlp
More fixes
This commit is contained in:
parent
301eb06ce6
commit
35c5577cb7
@ -576,7 +576,7 @@ def build_html(item, screen, is_live, background, image=None, plugins=None):
|
||||
"""
|
||||
width = screen['size'].width()
|
||||
height = screen['size'].height()
|
||||
theme_data = item.themedata
|
||||
theme_data = item.theme_data
|
||||
# Image generated and poked in
|
||||
if 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
|
||||
"""
|
||||
width = int(width) // 2
|
||||
theme = item.themedata
|
||||
theme = item.theme_data
|
||||
background = 'background-color: black'
|
||||
if theme:
|
||||
if theme.background_type == BackgroundType.to_string(BackgroundType.Transparent):
|
||||
@ -681,7 +681,7 @@ def build_lyrics_css(item):
|
||||
%s
|
||||
}
|
||||
"""
|
||||
theme_data = item.themedata
|
||||
theme_data = item.theme_data
|
||||
lyricstable = ''
|
||||
lyrics = ''
|
||||
lyricsmain = ''
|
||||
@ -769,7 +769,7 @@ def build_footer_css(item, height):
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
"""
|
||||
theme = item.themedata
|
||||
theme = item.theme_data
|
||||
if not theme or not item.footer:
|
||||
return ''
|
||||
bottom = height - int(item.footer.y()) - int(item.footer.height())
|
||||
|
@ -229,7 +229,7 @@ class Renderer(object):
|
||||
self.image_manager.add_image(
|
||||
theme_data.background_filename, ImageSource.Theme, QtGui.QColor(theme_data.background_border_color))
|
||||
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.footer = footer
|
||||
service_item.render(True)
|
||||
|
@ -161,7 +161,7 @@ class ServiceItem(object):
|
||||
self.capabilities = []
|
||||
self.is_valid = True
|
||||
self.icon = None
|
||||
self.themedata = None
|
||||
self.theme_data = None
|
||||
self.main = None
|
||||
self.footer = None
|
||||
self.bg_image_bytes = None
|
||||
|
@ -283,7 +283,7 @@ class MainDisplay(Display):
|
||||
if not hasattr(self, 'service_item'):
|
||||
return False
|
||||
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)
|
||||
# Update the preview frame.
|
||||
if self.is_live:
|
||||
@ -343,7 +343,7 @@ class MainDisplay(Display):
|
||||
if self.is_live and hasattr(self, 'service_item'):
|
||||
# Wait for the fade to finish before geting the preview.
|
||||
# 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()'):
|
||||
self.application.process_events()
|
||||
# Wait for the webview to update before getting the preview.
|
||||
@ -383,17 +383,17 @@ class MainDisplay(Display):
|
||||
Registry().execute('video_background_replaced')
|
||||
self.override = {}
|
||||
# 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')
|
||||
self.override = {}
|
||||
else:
|
||||
# replace the background
|
||||
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))
|
||||
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.themedata.background_filename, ImageSource.Theme
|
||||
self.service_item.theme_data.background_filename, ImageSource.Theme
|
||||
)
|
||||
if image_path:
|
||||
image_bytes = self.image_manager.get_image_bytes(image_path, ImageSource.ImagePlugin)
|
||||
|
@ -29,7 +29,7 @@
|
||||
"""
|
||||
The service manager sets up, loads, saves and manages services.
|
||||
"""
|
||||
import cgi
|
||||
import html
|
||||
import logging
|
||||
import os
|
||||
import shutil
|
||||
@ -55,12 +55,12 @@ class ServiceManagerList(QtGui.QTreeWidget):
|
||||
"""
|
||||
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
|
||||
"""
|
||||
super(ServiceManagerList, self).__init__(parent)
|
||||
self.serviceManager = serviceManager
|
||||
self.service_manager = service_manager
|
||||
|
||||
def keyPressEvent(self, event):
|
||||
"""
|
||||
@ -69,13 +69,13 @@ class ServiceManagerList(QtGui.QTreeWidget):
|
||||
if isinstance(event, QtGui.QKeyEvent):
|
||||
# here accept the event and do something
|
||||
if event.key() == QtCore.Qt.Key_Up:
|
||||
self.serviceManager.on_move_selection_up()
|
||||
self.service_manager.on_move_selection_up()
|
||||
event.accept()
|
||||
elif event.key() == QtCore.Qt.Key_Down:
|
||||
self.serviceManager.on_move_selection_down()
|
||||
self.service_manager.on_move_selection_down()
|
||||
event.accept()
|
||||
elif event.key() == QtCore.Qt.Key_Delete:
|
||||
self.serviceManager.onDeleteFromService()
|
||||
self.service_manager.onDeleteFromService()
|
||||
event.accept()
|
||||
event.ignore()
|
||||
else:
|
||||
@ -154,19 +154,19 @@ class ServiceManagerDialog(object):
|
||||
self.order_toolbar = OpenLPToolbar(self)
|
||||
action_list = ActionList.get_instance()
|
||||
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',
|
||||
tooltip=translate('OpenLP.ServiceManager', 'Move item to the top of the service.'),
|
||||
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',
|
||||
tooltip=translate('OpenLP.ServiceManager', 'Move item up one position in the service.'),
|
||||
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',
|
||||
tooltip=translate('OpenLP.ServiceManager', 'Move item down one position in the service.'),
|
||||
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',
|
||||
tooltip=translate('OpenLP.ServiceManager', 'Move item to the end of the service.'),
|
||||
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,
|
||||
text=translate('OpenLP.ServiceManager', '&Expand all'), icon=':/services/service_expand_all.png',
|
||||
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,
|
||||
text=translate('OpenLP.ServiceManager', '&Collapse all'), icon=':/services/service_collapse_all.png',
|
||||
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.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',
|
||||
@ -208,30 +208,35 @@ class ServiceManagerDialog(object):
|
||||
self.service_manager_list.itemExpanded.connect(self.expanded)
|
||||
# Last little bits of setting up
|
||||
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
|
||||
self.dndMenu = QtGui.QMenu()
|
||||
self.newAction = self.dndMenu.addAction(translate('OpenLP.ServiceManager', '&Add New Item'))
|
||||
self.newAction.setIcon(build_icon(':/general/general_edit.png'))
|
||||
self.addToAction = self.dndMenu.addAction(translate('OpenLP.ServiceManager', '&Add to Selected Item'))
|
||||
self.addToAction.setIcon(build_icon(':/general/general_edit.png'))
|
||||
self.dnd_menu = QtGui.QMenu()
|
||||
self.new_action = self.dnd_menu.addAction(translate('OpenLP.ServiceManager', '&Add New Item'))
|
||||
self.new_action.setIcon(build_icon(':/general/general_edit.png'))
|
||||
self.add_to_action = self.dnd_menu.addAction(translate('OpenLP.ServiceManager', '&Add to Selected Item'))
|
||||
self.add_to_action.setIcon(build_icon(':/general/general_edit.png'))
|
||||
# build the context menu
|
||||
self.menu = QtGui.QMenu()
|
||||
self.edit_action = create_widget_action(self.menu, text=translate('OpenLP.ServiceManager', '&Edit Item'),
|
||||
icon=':/general/general_edit.png', triggers=self.remote_edit)
|
||||
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'),
|
||||
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'),
|
||||
icon=':/media/media_time.png', triggers=self.on_start_time_form)
|
||||
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.
|
||||
self.menu.addAction(self.service_manager_list.delete)
|
||||
self.create_custom_action = create_widget_action(self.menu,
|
||||
text=translate('OpenLP.ServiceManager', 'Create New &Custom Slide'),
|
||||
icon=':/general/general_edit.png', triggers=self.create_custom)
|
||||
text=translate('OpenLP.ServiceManager', 'Create New &Custom '
|
||||
'Slide'),
|
||||
icon=':/general/general_edit.png',
|
||||
triggers=self.create_custom)
|
||||
self.menu.addSeparator()
|
||||
# Add AutoPlay menu actions
|
||||
self.auto_play_slides_menu = QtGui.QMenu(translate('OpenLP.ServiceManager', '&Auto play slides'))
|
||||
@ -239,16 +244,19 @@ class ServiceManagerDialog(object):
|
||||
auto_play_slides_group = QtGui.QActionGroup(self.auto_play_slides_menu)
|
||||
auto_play_slides_group.setExclusive(True)
|
||||
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 '
|
||||
'&Loop'),
|
||||
checked=False, triggers=self.toggle_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,
|
||||
text=translate('OpenLP.ServiceManager', 'Auto play slides &Once'),
|
||||
text=translate('OpenLP.ServiceManager', 'Auto play slides '
|
||||
'&Once'),
|
||||
checked=False, triggers=self.toggle_auto_play_slides_once)
|
||||
auto_play_slides_group.addAction(self.auto_play_slides_once)
|
||||
self.auto_play_slides_menu.addSeparator()
|
||||
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 '
|
||||
'slides'),
|
||||
triggers=self.on_timed_slide_interval)
|
||||
self.menu.addSeparator()
|
||||
self.preview_action = create_widget_action(self.menu, text=translate('OpenLP.ServiceManager', 'Show &Preview'),
|
||||
@ -259,18 +267,18 @@ class ServiceManagerDialog(object):
|
||||
self.theme_menu = QtGui.QMenu(translate('OpenLP.ServiceManager', '&Change Item Theme'))
|
||||
self.menu.addMenu(self.theme_menu)
|
||||
self.service_manager_list.addActions(
|
||||
[self.service_manager_list.moveDown,
|
||||
self.service_manager_list.moveUp,
|
||||
[self.service_manager_list.move_down,
|
||||
self.service_manager_list.move_up,
|
||||
self.service_manager_list.make_live,
|
||||
self.service_manager_list.moveTop,
|
||||
self.service_manager_list.moveBottom,
|
||||
self.service_manager_list.move_top,
|
||||
self.service_manager_list.move_bottom,
|
||||
self.service_manager_list.up,
|
||||
self.service_manager_list.down,
|
||||
self.service_manager_list.expand,
|
||||
self.service_manager_list.collapse
|
||||
])
|
||||
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('mediaitem_suffix_reset', self.reset_supported_suffixes)
|
||||
|
||||
@ -509,7 +517,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
audio_files.append((file_name, new_file))
|
||||
service_item['header']['background_audio'][i] = new_file
|
||||
# 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)
|
||||
for file_item in write_list:
|
||||
file_size = os.path.getsize(file_item)
|
||||
@ -533,8 +541,8 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
if audio_from.startswith('audio'):
|
||||
# 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.
|
||||
audio_from = os.path.join(self.servicePath, audio_from)
|
||||
save_file = os.path.join(self.servicePath, audio_to)
|
||||
audio_from = os.path.join(self.service_path, audio_from)
|
||||
save_file = os.path.join(self.service_path, audio_to)
|
||||
save_path = os.path.split(save_file)[0]
|
||||
check_directory_exists(save_path)
|
||||
if not os.path.exists(save_file):
|
||||
@ -585,7 +593,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
self.main_window.increment_progress_bar()
|
||||
service_item = item['service_item'].get_service_repr(self._save_lite)
|
||||
#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()
|
||||
service_content = json.dumps(service)
|
||||
zip_file = None
|
||||
@ -693,14 +701,14 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
critical_error_message_box(message=translate('OpenLP.ServiceManager',
|
||||
'File is not a valid service.\n The content encoding is not UTF-8.'))
|
||||
continue
|
||||
osfile = ucs_file.replace('/', os.path.sep)
|
||||
if not osfile.startswith('audio'):
|
||||
osfile = os.path.split(osfile)[1]
|
||||
log.debug('Extract file: %s', osfile)
|
||||
zip_info.filename = osfile
|
||||
zip_file.extract(zip_info, self.servicePath)
|
||||
if osfile.endswith('osj') or osfile.endswith('osd'):
|
||||
p_file = os.path.join(self.servicePath, osfile)
|
||||
os_file = ucs_file.replace('/', os.path.sep)
|
||||
if not os_file.startswith('audio'):
|
||||
os_file = os.path.split(os_file)[1]
|
||||
log.debug('Extract file: %s', os_file)
|
||||
zip_info.filename = os_file
|
||||
zip_file.extract(zip_info, self.service_path)
|
||||
if os_file.endswith('osj') or os_file.endswith('osd'):
|
||||
p_file = os.path.join(self.service_path, os_file)
|
||||
if 'p_file' in locals():
|
||||
file_to = open(p_file, 'r')
|
||||
if p_file.endswith('osj'):
|
||||
@ -720,7 +728,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
if self._save_lite:
|
||||
service_item.set_from_service(item)
|
||||
else:
|
||||
service_item.set_from_service(item, self.servicePath)
|
||||
service_item.set_from_service(item, self.service_path)
|
||||
service_item.validate_item(self.suffixes)
|
||||
if service_item.is_capable(ItemCapabilities.OnLoadUpdate):
|
||||
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.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
|
||||
no service present.
|
||||
@ -950,19 +958,19 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
"""
|
||||
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
|
||||
selected = self.service_manager_list.selectedItems()[0]
|
||||
lookFor = 0
|
||||
serviceIterator = QtGui.QTreeWidgetItemIterator(self.service_manager_list)
|
||||
while serviceIterator.value():
|
||||
if lookFor == 1 and serviceIterator.value().parent() is None:
|
||||
self.service_manager_list.setCurrentItem(serviceIterator.value())
|
||||
selected = self.service_manager_list.selected_items()[0]
|
||||
look_for = 0
|
||||
service_iterator = QtGui.QTreeWidgetItemIterator(self.service_manager_list)
|
||||
while service_iterator.value():
|
||||
if look_for == 1 and service_iterator.value().parent() is None:
|
||||
self.service_manager_list.setCurrentItem(service_iterator.value())
|
||||
self.make_live()
|
||||
return
|
||||
if serviceIterator.value() == selected:
|
||||
lookFor = 1
|
||||
serviceIterator += 1
|
||||
if service_iterator.value() == selected:
|
||||
look_for = 1
|
||||
service_iterator += 1
|
||||
|
||||
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
|
||||
|
||||
"""
|
||||
if not self.service_manager_list.selectedItems():
|
||||
if not self.service_manager_list.selected_items():
|
||||
return
|
||||
selected = self.service_manager_list.selectedItems()[0]
|
||||
prevItem = None
|
||||
prevItemLastSlide = None
|
||||
serviceIterator = QtGui.QTreeWidgetItemIterator(self.service_manager_list)
|
||||
while serviceIterator.value():
|
||||
if serviceIterator.value() == selected:
|
||||
if last_slide and prevItemLastSlide:
|
||||
pos = prevItem.data(0, QtCore.Qt.UserRole)
|
||||
selected = self.service_manager_list.selected_items()[0]
|
||||
prev_item = None
|
||||
prev_item_last_slide = None
|
||||
service_iterator = QtGui.QTreeWidgetItemIterator(self.service_manager_list)
|
||||
while service_iterator.value():
|
||||
if service_iterator.value() == selected:
|
||||
if last_slide and prev_item_last_slide:
|
||||
pos = prev_item.data(0, QtCore.Qt.UserRole)
|
||||
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:
|
||||
self.service_manager_list.collapseItem(prevItem)
|
||||
self.service_manager_list.collapseItem(prev_item)
|
||||
self.make_live()
|
||||
self.service_manager_list.setCurrentItem(prevItem)
|
||||
elif prevItem:
|
||||
self.service_manager_list.setCurrentItem(prevItem)
|
||||
self.service_manager_list.setCurrentItem(prev_item)
|
||||
elif prev_item:
|
||||
self.service_manager_list.setCurrentItem(prev_item)
|
||||
self.make_live()
|
||||
return
|
||||
if serviceIterator.value().parent() is None:
|
||||
prevItem = serviceIterator.value()
|
||||
if serviceIterator.value().parent() is prevItem:
|
||||
prevItemLastSlide = serviceIterator.value()
|
||||
serviceIterator += 1
|
||||
if service_iterator.value().parent() is None:
|
||||
prev_item = service_iterator.value()
|
||||
if service_iterator.value().parent() is prev_item:
|
||||
prev_item_last_slide = service_iterator.value()
|
||||
service_iterator += 1
|
||||
|
||||
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.
|
||||
"""
|
||||
item = self.service_manager_list.currentItem()
|
||||
itemBefore = self.service_manager_list.itemAbove(item)
|
||||
if itemBefore is None:
|
||||
item_before = self.service_manager_list.item_above(item)
|
||||
if item_before is None:
|
||||
return
|
||||
self.service_manager_list.setCurrentItem(itemBefore)
|
||||
self.service_manager_list.setCurrentItem(item_before)
|
||||
|
||||
def on_move_selection_down(self):
|
||||
"""
|
||||
Moves the cursor selection down the window. Called by the down arrow.
|
||||
"""
|
||||
item = self.service_manager_list.currentItem()
|
||||
itemAfter = self.service_manager_list.itemBelow(item)
|
||||
if itemAfter is None:
|
||||
item_after = self.service_manager_list.itemBelow(item)
|
||||
if item_after is None:
|
||||
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.
|
||||
"""
|
||||
@ -1048,7 +1056,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
pos = item.data(0, QtCore.Qt.UserRole)
|
||||
self.service_items[pos - 1]['expanded'] = False
|
||||
|
||||
def onExpandAll(self):
|
||||
def on_expand_all(self):
|
||||
"""
|
||||
Collapse all the service items.
|
||||
"""
|
||||
@ -1144,51 +1152,51 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
self.service_manager_list.clear()
|
||||
self.service_manager_list.clearSelection()
|
||||
for item_count, item in enumerate(self.service_items):
|
||||
serviceitem = item['service_item']
|
||||
treewidgetitem = QtGui.QTreeWidgetItem(self.service_manager_list)
|
||||
if serviceitem.is_valid:
|
||||
if serviceitem.notes:
|
||||
icon = QtGui.QImage(serviceitem.icon)
|
||||
service_item_from_item = item['service_item']
|
||||
tree_widget_item = QtGui.QTreeWidgetItem(self.service_manager_list)
|
||||
if service_item_from_item.is_valid:
|
||||
if service_item_from_item.notes:
|
||||
icon = QtGui.QImage(service_item_from_item.icon)
|
||||
icon = icon.scaled(80, 80, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
|
||||
overlay = QtGui.QImage(':/services/service_item_notes.png')
|
||||
overlay = overlay.scaled(80, 80, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
|
||||
painter = QtGui.QPainter(icon)
|
||||
painter.drawImage(0, 0, overlay)
|
||||
painter.end()
|
||||
treewidgetitem.setIcon(0, build_icon(icon))
|
||||
elif serviceitem.temporary_edit:
|
||||
icon = QtGui.QImage(serviceitem.icon)
|
||||
tree_widget_item.setIcon(0, build_icon(icon))
|
||||
elif service_item_from_item.temporary_edit:
|
||||
icon = QtGui.QImage(service_item_from_item.icon)
|
||||
icon = icon.scaled(80, 80, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
|
||||
overlay = QtGui.QImage(':/general/general_export.png')
|
||||
overlay = overlay.scaled(40, 40, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
|
||||
painter = QtGui.QPainter(icon)
|
||||
painter.drawImage(40, 0, overlay)
|
||||
painter.end()
|
||||
treewidgetitem.setIcon(0, build_icon(icon))
|
||||
tree_widget_item.setIcon(0, build_icon(icon))
|
||||
else:
|
||||
treewidgetitem.setIcon(0, serviceitem.iconic_representation)
|
||||
tree_widget_item.setIcon(0, service_item_from_item.iconic_representation)
|
||||
else:
|
||||
treewidgetitem.setIcon(0, build_icon(':/general/general_delete.png'))
|
||||
treewidgetitem.setText(0, serviceitem.get_display_title())
|
||||
tree_widget_item.setIcon(0, build_icon(':/general/general_delete.png'))
|
||||
tree_widget_item.setText(0, service_item_from_item.get_display_title())
|
||||
tips = []
|
||||
if serviceitem.temporary_edit:
|
||||
if service_item_from_item.temporary_edit:
|
||||
tips.append('<strong>%s:</strong> <em>%s</em>' %
|
||||
(translate('OpenLP.ServiceManager', 'Edit'),
|
||||
(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>' %
|
||||
(translate('OpenLP.ServiceManager', 'Slide theme'), serviceitem.theme))
|
||||
if serviceitem.notes:
|
||||
(translate('OpenLP.ServiceManager', 'Slide theme'), service_item_from_item.theme))
|
||||
if service_item_from_item.notes:
|
||||
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):
|
||||
tips.append(item['service_item'].get_media_time())
|
||||
treewidgetitem.setToolTip(0, '<br>'.join(tips))
|
||||
treewidgetitem.setData(0, QtCore.Qt.UserRole, item['order'])
|
||||
treewidgetitem.setSelected(item['selected'])
|
||||
# Add the children to their parent treewidgetitem.
|
||||
for count, frame in enumerate(serviceitem.get_frames()):
|
||||
child = QtGui.QTreeWidgetItem(treewidgetitem)
|
||||
tree_widget_item.setToolTip(0, '<br>'.join(tips))
|
||||
tree_widget_item.setData(0, QtCore.Qt.UserRole, item['order'])
|
||||
tree_widget_item.setSelected(item['selected'])
|
||||
# Add the children to their parent tree_widget_item.
|
||||
for count, frame in enumerate(service_item_from_item.get_frames()):
|
||||
child = QtGui.QTreeWidgetItem(tree_widget_item)
|
||||
text = frame['title'].replace('\n', ' ')
|
||||
child.setText(0, text[:40])
|
||||
child.setData(0, QtCore.Qt.UserRole, count)
|
||||
@ -1196,19 +1204,19 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
if item['expanded'] and service_item_child == count:
|
||||
self.service_manager_list.setCurrentItem(child)
|
||||
elif service_item_child == -1:
|
||||
self.service_manager_list.setCurrentItem(treewidgetitem)
|
||||
treewidgetitem.setExpanded(item['expanded'])
|
||||
self.service_manager_list.setCurrentItem(tree_widget_item)
|
||||
tree_widget_item.setExpanded(item['expanded'])
|
||||
|
||||
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')
|
||||
for file_name in os.listdir(self.servicePath):
|
||||
file_path = os.path.join(self.servicePath, file_name)
|
||||
log.debug('Cleaning up service_path')
|
||||
for file_name in os.listdir(self.service_path):
|
||||
file_path = os.path.join(self.service_path, file_name)
|
||||
delete_file(file_path)
|
||||
if os.path.exists(os.path.join(self.servicePath, 'audio')):
|
||||
shutil.rmtree(os.path.join(self.servicePath, 'audio'), True)
|
||||
if os.path.exists(os.path.join(self.service_path, 'audio')):
|
||||
shutil.rmtree(os.path.join(self.service_path, 'audio'), True)
|
||||
|
||||
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.renderer.set_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):
|
||||
"""
|
||||
@ -1229,34 +1237,34 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
self.theme_label.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.
|
||||
"""
|
||||
self.application.set_busy_cursor()
|
||||
log.debug('regenerate_service_Items')
|
||||
log.debug('regenerate_service_items')
|
||||
# force reset of renderer as theme data has changed
|
||||
self.service_has_all_original_files = True
|
||||
if self.service_items:
|
||||
for item in self.service_items:
|
||||
item['selected'] = False
|
||||
serviceIterator = QtGui.QTreeWidgetItemIterator(self.service_manager_list)
|
||||
selectedItem = None
|
||||
while serviceIterator.value():
|
||||
if serviceIterator.value().isSelected():
|
||||
selectedItem = serviceIterator.value()
|
||||
serviceIterator += 1
|
||||
if selectedItem is not None:
|
||||
if selectedItem.parent() is None:
|
||||
pos = selectedItem.data(0, QtCore.Qt.UserRole)
|
||||
service_iterator = QtGui.QTreeWidgetItemIterator(self.service_manager_list)
|
||||
selected_item = None
|
||||
while service_iterator.value():
|
||||
if service_iterator.value().isSelected():
|
||||
selected_item = service_iterator.value()
|
||||
service_iterator += 1
|
||||
if selected_item is not None:
|
||||
if selected_item.parent() is None:
|
||||
pos = selected_item.data(0, QtCore.Qt.UserRole)
|
||||
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
|
||||
tempServiceItems = self.service_items
|
||||
temp_service_items = self.service_items
|
||||
self.service_manager_list.clear()
|
||||
self.service_items = []
|
||||
self.isNew = True
|
||||
for item in tempServiceItems:
|
||||
self.is_new = True
|
||||
for item in temp_service_items:
|
||||
self.add_service_item(item['service_item'], False, expand=item['expanded'], repaint=False,
|
||||
selected=item['selected'])
|
||||
# Set to False as items may have changed rendering does not impact the saved song so True may also be valid
|
||||
@ -1406,7 +1414,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
|
||||
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
|
||||
item is selected this will return::
|
||||
|
||||
@ -1452,18 +1460,18 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
item = self.service_manager_list.itemAt(event.pos())
|
||||
# ServiceManager started the drag and drop
|
||||
if plugin == 'ServiceManager':
|
||||
startpos, child = self.find_service_item()
|
||||
start_pos, child = self.find_service_item()
|
||||
# If no items selected
|
||||
if startpos == -1:
|
||||
if start_pos == -1:
|
||||
return
|
||||
if item is None:
|
||||
endpos = len(self.service_items)
|
||||
end_pos = len(self.service_items)
|
||||
else:
|
||||
endpos = self._get_parent_item_data(item) - 1
|
||||
serviceItem = self.service_items[startpos]
|
||||
self.service_items.remove(serviceItem)
|
||||
self.service_items.insert(endpos, serviceItem)
|
||||
self.repaint_service_list(endpos, child)
|
||||
end_pos = self._get_parent_item_data(item) - 1
|
||||
service_item = self.service_items[start_pos]
|
||||
self.service_items.remove(service_item)
|
||||
self.service_items.insert(end_pos, service_item)
|
||||
self.repaint_service_list(end_pos, child)
|
||||
self.set_modified()
|
||||
else:
|
||||
# we are not over anything so drop
|
||||
@ -1473,15 +1481,15 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
else:
|
||||
# we are over something so lets investigate
|
||||
pos = self._get_parent_item_data(item) - 1
|
||||
serviceItem = self.service_items[pos]
|
||||
if (plugin == serviceItem['service_item'].name and
|
||||
serviceItem['service_item'].is_capable(ItemCapabilities.CanAppend)):
|
||||
action = self.dndMenu.exec_(QtGui.QCursor.pos())
|
||||
service_item = self.service_items[pos]
|
||||
if (plugin == service_item['service_item'].name and
|
||||
service_item['service_item'].is_capable(ItemCapabilities.CanAppend)):
|
||||
action = self.dnd_menu.exec_(QtGui.QCursor.pos())
|
||||
# New action required
|
||||
if action == self.newAction:
|
||||
if action == self.new_action:
|
||||
self.drop_position = self._get_parent_item_data(item)
|
||||
# Append to existing action
|
||||
if action == self.addToAction:
|
||||
if action == self.add_to_action:
|
||||
self.drop_position = self._get_parent_item_data(item)
|
||||
item.setSelected(True)
|
||||
replace = True
|
||||
@ -1504,10 +1512,10 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
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
|
||||
# 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)
|
||||
self.theme_menu.setDefaultAction(defaultTheme)
|
||||
theme_group.addAction(defaultTheme)
|
||||
self.theme_menu.setDefaultAction(default_theme)
|
||||
theme_group.addAction(default_theme)
|
||||
self.theme_menu.addSeparator()
|
||||
for theme in theme_list:
|
||||
self.theme_combo_box.addItem(theme)
|
||||
@ -1515,7 +1523,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
triggers=self.on_theme_change_action))
|
||||
find_and_set_in_combo_box(self.theme_combo_box, 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):
|
||||
"""
|
||||
@ -1527,7 +1535,7 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
theme = None
|
||||
item = self.find_service_item()[0]
|
||||
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):
|
||||
"""
|
||||
@ -1543,8 +1551,8 @@ class ServiceManager(QtGui.QWidget, ServiceManagerDialog):
|
||||
"""
|
||||
Print a Service Order Sheet.
|
||||
"""
|
||||
settingDialog = PrintServiceForm()
|
||||
settingDialog.exec_()
|
||||
setting_dialog = PrintServiceForm()
|
||||
setting_dialog.exec_()
|
||||
|
||||
def _get_renderer(self):
|
||||
"""
|
||||
|
@ -233,8 +233,8 @@ class Htmbuilder(TestCase):
|
||||
"""
|
||||
# GIVEN: Mocked arguments.
|
||||
item = MagicMock()
|
||||
item.themedata.background_start_color = '#000000'
|
||||
item.themedata.background_end_color = '#FFFFFF'
|
||||
item.theme_data.background_start_color = '#000000'
|
||||
item.theme_data.background_end_color = '#FFFFFF'
|
||||
width = 10
|
||||
|
||||
# WHEN: Create the css.
|
||||
@ -254,9 +254,9 @@ class Htmbuilder(TestCase):
|
||||
mocked_build_lyrics_outline_css.return_value = ''
|
||||
item = MagicMock()
|
||||
item.main = QtCore.QRect(10, 20, 10, 20)
|
||||
item.themedata.font_main_shadow = True
|
||||
item.themedata.font_main_shadow_color = '#000000'
|
||||
item.themedata.font_main_shadow_size = 5
|
||||
item.theme_data.font_main_shadow = True
|
||||
item.theme_data.font_main_shadow_color = '#000000'
|
||||
item.theme_data.font_main_shadow_size = 5
|
||||
|
||||
# WHEN: Create the css.
|
||||
css = build_lyrics_css(item)
|
||||
@ -311,9 +311,9 @@ class Htmbuilder(TestCase):
|
||||
# GIVEN: Create a theme.
|
||||
item = MagicMock()
|
||||
item.footer = QtCore.QRect(10, 921, 1260, 103)
|
||||
item.themedata.font_footer_name = 'Arial'
|
||||
item.themedata.font_footer_size = 12
|
||||
item.themedata.font_footer_color = '#FFFFFF'
|
||||
item.theme_data.font_footer_name = 'Arial'
|
||||
item.theme_data.font_footer_size = 12
|
||||
item.theme_data.font_footer_color = '#FFFFFF'
|
||||
height = 1024
|
||||
|
||||
# WHEN: create the css.
|
||||
|
Loading…
Reference in New Issue
Block a user