def load_custom(self, id, preview=False): """ Called when editing or creating a new custom. :param id: The custom's id. If zero, then a new custom is created. :param preview: States whether the custom is edited while being previewed in the preview panel. """ self.slide_list_view.clear() if id == 0: self.custom_slide = CustomSlide() self.title_edit.setText('') self.credit_edit.setText('') self.theme_combo_box.setCurrentIndex(0) else: self.custom_slide = self.manager.get_object(CustomSlide, id) self.title_edit.setText(self.custom_slide.title) self.credit_edit.setText(self.custom_slide.credits) custom_xml = CustomXMLParser(self.custom_slide.text) slide_list = custom_xml.get_verses() self.slide_list_view.addItems([slide[1] for slide in slide_list]) theme = self.custom_slide.theme_name find_and_set_in_combo_box(self.theme_combo_box, theme) self.title_edit.setFocus() # If not preview hide the preview button. self.preview_button.setVisible(preview)
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. :param service_item: To be updated :param item: The custom database item to be used :param xml_version: No used :param remote: Is this triggered by the Preview Controller or Service Manager. :param context: Why is this item required to be build (Default Service). """ item_id = self._get_id_of_item_to_generate(item, self.remote_custom) service_item.add_capability(ItemCapabilities.CanEdit) service_item.add_capability(ItemCapabilities.CanPreview) service_item.add_capability(ItemCapabilities.CanLoop) service_item.add_capability(ItemCapabilities.CanSoftBreak) service_item.add_capability(ItemCapabilities.OnLoadUpdate) custom_slide = self.plugin.db_manager.get_object(CustomSlide, item_id) title = custom_slide.title credit = custom_slide.credits service_item.edit_id = item_id theme = custom_slide.theme_name if theme: service_item.theme = theme custom_xml = CustomXMLParser(custom_slide.text) verse_list = custom_xml.get_verses() raw_slides = [verse[1] for verse in verse_list] service_item.title = title for slide in raw_slides: service_item.add_from_text(slide) if Settings().value(self.settings_section + '/display footer') or credit: service_item.raw_footer.append(' '.join([title, credit])) else: service_item.raw_footer.append('') return True