forked from openlp/openlp
HEAD r1586
This commit is contained in:
commit
8699e36b37
@ -112,13 +112,10 @@ class MediaManagerItem(QtGui.QWidget):
|
|||||||
self.requiredIcons()
|
self.requiredIcons()
|
||||||
self.setupUi()
|
self.setupUi()
|
||||||
self.retranslateUi()
|
self.retranslateUi()
|
||||||
self.autoSelectItem = None
|
self.auto_select_id = -1
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
QtCore.SIGNAL(u'%s_service_load' % self.parent.name.lower()),
|
QtCore.SIGNAL(u'%s_service_load' % self.parent.name.lower()),
|
||||||
self.serviceLoad)
|
self.serviceLoad)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
|
||||||
QtCore.SIGNAL(u'%s_set_autoselect_item' % self.parent.name.lower()),
|
|
||||||
self.setAutoSelectItem)
|
|
||||||
|
|
||||||
def requiredIcons(self):
|
def requiredIcons(self):
|
||||||
"""
|
"""
|
||||||
@ -479,9 +476,6 @@ class MediaManagerItem(QtGui.QWidget):
|
|||||||
if keepFocus:
|
if keepFocus:
|
||||||
self.listView.setFocus()
|
self.listView.setFocus()
|
||||||
|
|
||||||
def setAutoSelectItem(self, itemToSelect=None):
|
|
||||||
self.autoSelectItem = itemToSelect
|
|
||||||
|
|
||||||
def onLiveClick(self):
|
def onLiveClick(self):
|
||||||
"""
|
"""
|
||||||
Send an item live by building a service item then adding that service
|
Send an item live by building a service item then adding that service
|
||||||
@ -617,6 +611,16 @@ class MediaManagerItem(QtGui.QWidget):
|
|||||||
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
|
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
|
||||||
return item_id
|
return item_id
|
||||||
|
|
||||||
|
def save_auto_select_id(self):
|
||||||
|
"""
|
||||||
|
Sorts out, what item to select after loading a list.
|
||||||
|
"""
|
||||||
|
# The item to select has not been set.
|
||||||
|
if self.auto_select_id == -1:
|
||||||
|
item = self.listView.currentItem()
|
||||||
|
if item:
|
||||||
|
self.auto_select_id = item.data(QtCore.Qt.UserRole).toInt()[0]
|
||||||
|
|
||||||
def search(self, string):
|
def search(self, string):
|
||||||
"""
|
"""
|
||||||
Performs a plugin specific search for items containing ``string``
|
Performs a plugin specific search for items containing ``string``
|
||||||
|
@ -223,9 +223,9 @@ class GeneralTab(SettingsTab):
|
|||||||
self.autoPreviewCheckBox.setText(translate('OpenLP.GeneralTab',
|
self.autoPreviewCheckBox.setText(translate('OpenLP.GeneralTab',
|
||||||
'Automatically preview next item in service'))
|
'Automatically preview next item in service'))
|
||||||
self.enableLoopCheckBox.setText(translate('OpenLP.GeneralTab',
|
self.enableLoopCheckBox.setText(translate('OpenLP.GeneralTab',
|
||||||
'Enable slide loop'))
|
'Enable slide wrap-around'))
|
||||||
self.timeoutLabel.setText(translate('OpenLP.GeneralTab',
|
self.timeoutLabel.setText(translate('OpenLP.GeneralTab',
|
||||||
'Slide loop delay:'))
|
'Timed slide interval:'))
|
||||||
self.timeoutSpinBox.setSuffix(translate('OpenLP.GeneralTab', ' sec'))
|
self.timeoutSpinBox.setSuffix(translate('OpenLP.GeneralTab', ' sec'))
|
||||||
self.ccliGroupBox.setTitle(
|
self.ccliGroupBox.setTitle(
|
||||||
translate('OpenLP.GeneralTab', 'CCLI Details'))
|
translate('OpenLP.GeneralTab', 'CCLI Details'))
|
||||||
|
@ -676,8 +676,18 @@ class ServiceManager(QtGui.QWidget):
|
|||||||
.is_capable(ItemCapabilities.AllowsVariableStartTime):
|
.is_capable(ItemCapabilities.AllowsVariableStartTime):
|
||||||
self.timeAction.setVisible(True)
|
self.timeAction.setVisible(True)
|
||||||
self.themeMenu.menuAction().setVisible(False)
|
self.themeMenu.menuAction().setVisible(False)
|
||||||
if serviceItem[u'service_item'].is_text():
|
# Set up the theme menu.
|
||||||
|
if serviceItem[u'service_item'].is_text() and \
|
||||||
|
self.mainwindow.renderer.theme_level == ThemeLevel.Song:
|
||||||
self.themeMenu.menuAction().setVisible(True)
|
self.themeMenu.menuAction().setVisible(True)
|
||||||
|
# The service item does not have a theme, check the "Default".
|
||||||
|
if serviceItem[u'service_item'].theme is None:
|
||||||
|
themeAction = self.themeMenu.defaultAction()
|
||||||
|
else:
|
||||||
|
themeAction = self.themeMenu.findChild(
|
||||||
|
QtGui.QAction, serviceItem[u'service_item'].theme)
|
||||||
|
if themeAction is not None:
|
||||||
|
themeAction.setChecked(True)
|
||||||
action = self.menu.exec_(self.serviceManagerList.mapToGlobal(point))
|
action = self.menu.exec_(self.serviceManagerList.mapToGlobal(point))
|
||||||
|
|
||||||
def onServiceItemNoteForm(self):
|
def onServiceItemNoteForm(self):
|
||||||
@ -1280,16 +1290,33 @@ class ServiceManager(QtGui.QWidget):
|
|||||||
self.themeComboBox.clear()
|
self.themeComboBox.clear()
|
||||||
self.themeMenu.clear()
|
self.themeMenu.clear()
|
||||||
self.themeComboBox.addItem(u'')
|
self.themeComboBox.addItem(u'')
|
||||||
|
themeGroup = QtGui.QActionGroup(self.themeMenu)
|
||||||
|
themeGroup.setExclusive(True)
|
||||||
|
themeGroup.setObjectName(u'themeGroup')
|
||||||
|
# Create a "Default" theme, which allows the user to reset the item's
|
||||||
|
# theme to the service theme or global theme.
|
||||||
|
defaultTheme = context_menu_action(self.themeMenu, None,
|
||||||
|
UiStrings().Default, self.onThemeChangeAction)
|
||||||
|
defaultTheme.setCheckable(True)
|
||||||
|
self.themeMenu.setDefaultAction(defaultTheme)
|
||||||
|
themeGroup.addAction(defaultTheme)
|
||||||
|
context_menu_separator(self.themeMenu)
|
||||||
for theme in theme_list:
|
for theme in theme_list:
|
||||||
self.themeComboBox.addItem(theme)
|
self.themeComboBox.addItem(theme)
|
||||||
context_menu_action(self.themeMenu, None, theme,
|
themeAction = context_menu_action(self.themeMenu, None, theme,
|
||||||
self.onThemeChangeAction)
|
self.onThemeChangeAction)
|
||||||
|
themeAction.setObjectName(theme)
|
||||||
|
themeAction.setCheckable(True)
|
||||||
|
themeGroup.addAction(themeAction)
|
||||||
find_and_set_in_combo_box(self.themeComboBox, self.service_theme)
|
find_and_set_in_combo_box(self.themeComboBox, self.service_theme)
|
||||||
self.mainwindow.renderer.set_service_theme(self.service_theme)
|
self.mainwindow.renderer.set_service_theme(self.service_theme)
|
||||||
self.regenerateServiceItems()
|
self.regenerateServiceItems()
|
||||||
|
|
||||||
def onThemeChangeAction(self):
|
def onThemeChangeAction(self):
|
||||||
theme = unicode(self.sender().text())
|
theme = unicode(self.sender().objectName())
|
||||||
|
# No object name means that the "Default" theme is supposed to be used.
|
||||||
|
if not theme:
|
||||||
|
theme = None
|
||||||
item = self.findServiceItem()[0]
|
item = self.findServiceItem()[0]
|
||||||
self.serviceItems[item][u'service_item'].theme = theme
|
self.serviceItems[item][u'service_item'].theme = theme
|
||||||
self.regenerateServiceItems()
|
self.regenerateServiceItems()
|
||||||
|
@ -140,14 +140,14 @@ class SlideController(QtGui.QWidget):
|
|||||||
self.previousItem = self.toolbar.addToolbarButton(
|
self.previousItem = self.toolbar.addToolbarButton(
|
||||||
translate('OpenLP.SlideController', 'Previous Slide'),
|
translate('OpenLP.SlideController', 'Previous Slide'),
|
||||||
u':/slides/slide_previous.png',
|
u':/slides/slide_previous.png',
|
||||||
translate('OpenLP.SlideController', 'Move to previous'),
|
translate('OpenLP.SlideController', 'Move to previous.'),
|
||||||
self.onSlideSelectedPrevious,
|
self.onSlideSelectedPrevious,
|
||||||
shortcuts=[QtCore.Qt.Key_Up, QtCore.Qt.Key_PageUp],
|
shortcuts=[QtCore.Qt.Key_Up, QtCore.Qt.Key_PageUp],
|
||||||
context=QtCore.Qt.WidgetWithChildrenShortcut)
|
context=QtCore.Qt.WidgetWithChildrenShortcut)
|
||||||
self.nextItem = self.toolbar.addToolbarButton(
|
self.nextItem = self.toolbar.addToolbarButton(
|
||||||
translate('OpenLP.SlideController', 'Next Slide'),
|
translate('OpenLP.SlideController', 'Next Slide'),
|
||||||
u':/slides/slide_next.png',
|
u':/slides/slide_next.png',
|
||||||
translate('OpenLP.SlideController', 'Move to next'),
|
translate('OpenLP.SlideController', 'Move to next.'),
|
||||||
self.onSlideSelectedNext,
|
self.onSlideSelectedNext,
|
||||||
shortcuts=[QtCore.Qt.Key_Down, QtCore.Qt.Key_PageDown],
|
shortcuts=[QtCore.Qt.Key_Down, QtCore.Qt.Key_PageDown],
|
||||||
context=QtCore.Qt.WidgetWithChildrenShortcut)
|
context=QtCore.Qt.WidgetWithChildrenShortcut)
|
||||||
@ -183,7 +183,7 @@ class SlideController(QtGui.QWidget):
|
|||||||
startLoop = self.toolbar.addToolbarButton(
|
startLoop = self.toolbar.addToolbarButton(
|
||||||
# Does not need translating - control string.
|
# Does not need translating - control string.
|
||||||
u'Start Loop', u':/media/media_time.png',
|
u'Start Loop', u':/media/media_time.png',
|
||||||
translate('OpenLP.SlideController', 'Start continuous loop'),
|
translate('OpenLP.SlideController', 'Enable timed slides.'),
|
||||||
self.onStartLoop)
|
self.onStartLoop)
|
||||||
startLoop.setObjectName(u'startLoop')
|
startLoop.setObjectName(u'startLoop')
|
||||||
action_list = ActionList.get_instance()
|
action_list = ActionList.get_instance()
|
||||||
@ -191,7 +191,7 @@ class SlideController(QtGui.QWidget):
|
|||||||
stopLoop = self.toolbar.addToolbarButton(
|
stopLoop = self.toolbar.addToolbarButton(
|
||||||
# Does not need translating - control string.
|
# Does not need translating - control string.
|
||||||
u'Stop Loop', u':/media/media_stop.png',
|
u'Stop Loop', u':/media/media_stop.png',
|
||||||
translate('OpenLP.SlideController', 'Stop continuous loop'),
|
translate('OpenLP.SlideController', 'Stop timed slides.'),
|
||||||
self.onStopLoop)
|
self.onStopLoop)
|
||||||
stopLoop.setObjectName(u'stopLoop')
|
stopLoop.setObjectName(u'stopLoop')
|
||||||
action_list.add_action(stopLoop, UiStrings().LiveToolbar)
|
action_list.add_action(stopLoop, UiStrings().LiveToolbar)
|
||||||
@ -206,39 +206,39 @@ class SlideController(QtGui.QWidget):
|
|||||||
self.toolbar.addToolbarWidget(u'Image SpinBox', self.delaySpinBox)
|
self.toolbar.addToolbarWidget(u'Image SpinBox', self.delaySpinBox)
|
||||||
self.delaySpinBox.setSuffix(UiStrings().Seconds)
|
self.delaySpinBox.setSuffix(UiStrings().Seconds)
|
||||||
self.delaySpinBox.setToolTip(translate('OpenLP.SlideController',
|
self.delaySpinBox.setToolTip(translate('OpenLP.SlideController',
|
||||||
'Delay between slides in seconds'))
|
'Delay between slides in seconds.'))
|
||||||
else:
|
else:
|
||||||
self.toolbar.addToolbarButton(
|
self.toolbar.addToolbarButton(
|
||||||
# Does not need translating - control string.
|
# Does not need translating - control string.
|
||||||
u'Go Live', u':/general/general_live.png',
|
u'Go Live', u':/general/general_live.png',
|
||||||
translate('OpenLP.SlideController', 'Move to live'),
|
translate('OpenLP.SlideController', 'Move to live.'),
|
||||||
self.onGoLive)
|
self.onGoLive)
|
||||||
self.toolbar.addToolbarButton(
|
self.toolbar.addToolbarButton(
|
||||||
# Does not need translating - control string.
|
# Does not need translating - control string.
|
||||||
u'Add to Service', u':/general/general_add.png',
|
u'Add to Service', u':/general/general_add.png',
|
||||||
translate('OpenLP.SlideController', 'Add to Service'),
|
translate('OpenLP.SlideController', 'Add to Service.'),
|
||||||
self.onPreviewAddToService)
|
self.onPreviewAddToService)
|
||||||
self.toolbar.addToolbarSeparator(u'Close Separator')
|
self.toolbar.addToolbarSeparator(u'Close Separator')
|
||||||
self.toolbar.addToolbarButton(
|
self.toolbar.addToolbarButton(
|
||||||
# Does not need translating - control string.
|
# Does not need translating - control string.
|
||||||
u'Edit Song', u':/general/general_edit.png',
|
u'Edit Song', u':/general/general_edit.png',
|
||||||
translate('OpenLP.SlideController',
|
translate('OpenLP.SlideController',
|
||||||
'Edit and reload song preview'),
|
'Edit and reload song preview.'),
|
||||||
self.onEditSong)
|
self.onEditSong)
|
||||||
self.controllerLayout.addWidget(self.toolbar)
|
self.controllerLayout.addWidget(self.toolbar)
|
||||||
# Build a Media ToolBar
|
# Build a Media ToolBar
|
||||||
self.mediabar = OpenLPToolbar(self)
|
self.mediabar = OpenLPToolbar(self)
|
||||||
self.mediabar.addToolbarButton(
|
self.mediabar.addToolbarButton(
|
||||||
u'Media Start', u':/slides/media_playback_start.png',
|
u'Media Start', u':/slides/media_playback_start.png',
|
||||||
translate('OpenLP.SlideController', 'Start playing media'),
|
translate('OpenLP.SlideController', 'Start playing media.'),
|
||||||
self.onMediaPlay)
|
self.onMediaPlay)
|
||||||
self.mediabar.addToolbarButton(
|
self.mediabar.addToolbarButton(
|
||||||
u'Media Pause', u':/slides/media_playback_pause.png',
|
u'Media Pause', u':/slides/media_playback_pause.png',
|
||||||
translate('OpenLP.SlideController', 'Start playing media'),
|
translate('OpenLP.SlideController', 'Start playing media.'),
|
||||||
self.onMediaPause)
|
self.onMediaPause)
|
||||||
self.mediabar.addToolbarButton(
|
self.mediabar.addToolbarButton(
|
||||||
u'Media Stop', u':/slides/media_playback_stop.png',
|
u'Media Stop', u':/slides/media_playback_stop.png',
|
||||||
translate('OpenLP.SlideController', 'Start playing media'),
|
translate('OpenLP.SlideController', 'Start playing media.'),
|
||||||
self.onMediaStop)
|
self.onMediaStop)
|
||||||
if self.isLive:
|
if self.isLive:
|
||||||
# Build the Song Toolbar
|
# Build the Song Toolbar
|
||||||
@ -1044,7 +1044,8 @@ class SlideController(QtGui.QWidget):
|
|||||||
"""
|
"""
|
||||||
From the preview display request the Item to be added to service
|
From the preview display request the Item to be added to service
|
||||||
"""
|
"""
|
||||||
self.parent.serviceManagerContents.addServiceItem(self.serviceItem)
|
if self.serviceItem:
|
||||||
|
self.parent.serviceManagerContents.addServiceItem(self.serviceItem)
|
||||||
|
|
||||||
def onGoLiveClick(self):
|
def onGoLiveClick(self):
|
||||||
"""
|
"""
|
||||||
|
@ -57,8 +57,6 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
self.settingsSection = u'themes'
|
self.settingsSection = u'themes'
|
||||||
self.themeForm = ThemeForm(self)
|
self.themeForm = ThemeForm(self)
|
||||||
self.fileRenameForm = FileRenameForm(self)
|
self.fileRenameForm = FileRenameForm(self)
|
||||||
self.serviceComboBox = \
|
|
||||||
self.mainwindow.serviceManagerContents.themeComboBox
|
|
||||||
# start with the layout
|
# start with the layout
|
||||||
self.layout = QtGui.QVBoxLayout(self)
|
self.layout = QtGui.QVBoxLayout(self)
|
||||||
self.layout.setSpacing(0)
|
self.layout.setSpacing(0)
|
||||||
|
@ -145,10 +145,8 @@ class ThemesTab(SettingsTab):
|
|||||||
def save(self):
|
def save(self):
|
||||||
settings = QtCore.QSettings()
|
settings = QtCore.QSettings()
|
||||||
settings.beginGroup(self.settingsSection)
|
settings.beginGroup(self.settingsSection)
|
||||||
settings.setValue(u'theme level',
|
settings.setValue(u'theme level', QtCore.QVariant(self.theme_level))
|
||||||
QtCore.QVariant(self.theme_level))
|
settings.setValue(u'global theme', QtCore.QVariant(self.global_theme))
|
||||||
settings.setValue(u'global theme',
|
|
||||||
QtCore.QVariant(self.global_theme))
|
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
self.mainwindow.renderer.set_global_theme(
|
self.mainwindow.renderer.set_global_theme(
|
||||||
self.global_theme, self.theme_level)
|
self.global_theme, self.theme_level)
|
||||||
@ -186,8 +184,7 @@ class ThemesTab(SettingsTab):
|
|||||||
self.settingsSection + u'/global theme',
|
self.settingsSection + u'/global theme',
|
||||||
QtCore.QVariant(u'')).toString())
|
QtCore.QVariant(u'')).toString())
|
||||||
self.DefaultComboBox.clear()
|
self.DefaultComboBox.clear()
|
||||||
for theme in theme_list:
|
self.DefaultComboBox.addItems(theme_list)
|
||||||
self.DefaultComboBox.addItem(theme)
|
|
||||||
find_and_set_in_combo_box(self.DefaultComboBox, self.global_theme)
|
find_and_set_in_combo_box(self.DefaultComboBox, self.global_theme)
|
||||||
self.mainwindow.renderer.set_global_theme(
|
self.mainwindow.renderer.set_global_theme(
|
||||||
self.global_theme, self.theme_level)
|
self.global_theme, self.theme_level)
|
||||||
|
@ -775,6 +775,7 @@ class BibleMediaItem(MediaManagerItem):
|
|||||||
# We have to be 'Continuous'.
|
# We have to be 'Continuous'.
|
||||||
else:
|
else:
|
||||||
bible_text = u'%s %s %s\n' % (bible_text, verse_text, text)
|
bible_text = u'%s %s %s\n' % (bible_text, verse_text, text)
|
||||||
|
bible_text = bible_text.strip(u' ')
|
||||||
if not old_item:
|
if not old_item:
|
||||||
start_item = bitem
|
start_item = bitem
|
||||||
elif self.checkTitle(bitem, old_item):
|
elif self.checkTitle(bitem, old_item):
|
||||||
|
@ -27,8 +27,6 @@
|
|||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from forms import EditCustomForm
|
|
||||||
|
|
||||||
from openlp.core.lib import Plugin, StringContent, build_icon, translate
|
from openlp.core.lib import Plugin, StringContent, build_icon, translate
|
||||||
from openlp.core.lib.db import Manager
|
from openlp.core.lib.db import Manager
|
||||||
from openlp.plugins.custom.lib import CustomMediaItem, CustomTab
|
from openlp.plugins.custom.lib import CustomMediaItem, CustomTab
|
||||||
@ -52,7 +50,6 @@ class CustomPlugin(Plugin):
|
|||||||
CustomMediaItem, CustomTab)
|
CustomMediaItem, CustomTab)
|
||||||
self.weight = -5
|
self.weight = -5
|
||||||
self.manager = Manager(u'custom', init_schema)
|
self.manager = Manager(u'custom', init_schema)
|
||||||
self.edit_custom_form = EditCustomForm(self)
|
|
||||||
self.icon_path = u':/plugins/plugin_custom.png'
|
self.icon_path = u':/plugins/plugin_custom.png'
|
||||||
self.icon = build_icon(self.icon_path)
|
self.icon = build_icon(self.icon_path)
|
||||||
|
|
||||||
|
@ -43,13 +43,13 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog):
|
|||||||
Class documentation goes here.
|
Class documentation goes here.
|
||||||
"""
|
"""
|
||||||
log.info(u'Custom Editor loaded')
|
log.info(u'Custom Editor loaded')
|
||||||
def __init__(self, parent):
|
def __init__(self, parent, manager):
|
||||||
"""
|
"""
|
||||||
Constructor
|
Constructor
|
||||||
"""
|
"""
|
||||||
QtGui.QDialog.__init__(self)
|
QtGui.QDialog.__init__(self)
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
self.manager = self.parent.manager
|
self.manager = manager
|
||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
# Create other objects and forms.
|
# Create other objects and forms.
|
||||||
self.editSlideForm = EditCustomSlideForm(self)
|
self.editSlideForm = EditCustomSlideForm(self)
|
||||||
@ -115,8 +115,6 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog):
|
|||||||
def accept(self):
|
def accept(self):
|
||||||
log.debug(u'accept')
|
log.debug(u'accept')
|
||||||
if self.saveCustom():
|
if self.saveCustom():
|
||||||
Receiver.send_message(u'custom_set_autoselect_item',
|
|
||||||
self.customSlide.title)
|
|
||||||
Receiver.send_message(u'custom_load_list')
|
Receiver.send_message(u'custom_load_list')
|
||||||
QtGui.QDialog.accept(self)
|
QtGui.QDialog.accept(self)
|
||||||
|
|
||||||
@ -138,7 +136,9 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog):
|
|||||||
self.customSlide.text = unicode(sxml.extract_xml(), u'utf-8')
|
self.customSlide.text = unicode(sxml.extract_xml(), u'utf-8')
|
||||||
self.customSlide.credits = unicode(self.creditEdit.text())
|
self.customSlide.credits = unicode(self.creditEdit.text())
|
||||||
self.customSlide.theme_name = unicode(self.themeComboBox.currentText())
|
self.customSlide.theme_name = unicode(self.themeComboBox.currentText())
|
||||||
return self.manager.save_object(self.customSlide)
|
success = self.manager.save_object(self.customSlide)
|
||||||
|
self.parent.auto_select_id = self.customSlide.id
|
||||||
|
return success
|
||||||
|
|
||||||
def onUpButtonClicked(self):
|
def onUpButtonClicked(self):
|
||||||
selectedRow = self.slideListView.currentRow()
|
selectedRow = self.slideListView.currentRow()
|
||||||
|
@ -35,6 +35,7 @@ from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \
|
|||||||
check_item_selected, translate
|
check_item_selected, translate
|
||||||
from openlp.core.lib.searchedit import SearchEdit
|
from openlp.core.lib.searchedit import SearchEdit
|
||||||
from openlp.core.lib.ui import UiStrings
|
from openlp.core.lib.ui import UiStrings
|
||||||
|
from openlp.plugins.custom.forms import EditCustomForm
|
||||||
from openlp.plugins.custom.lib import CustomXMLParser
|
from openlp.plugins.custom.lib import CustomXMLParser
|
||||||
from openlp.plugins.custom.lib.db import CustomSlide
|
from openlp.plugins.custom.lib.db import CustomSlide
|
||||||
|
|
||||||
@ -57,6 +58,7 @@ class CustomMediaItem(MediaManagerItem):
|
|||||||
def __init__(self, parent, plugin, icon):
|
def __init__(self, parent, plugin, icon):
|
||||||
self.IconPath = u'custom/custom'
|
self.IconPath = u'custom/custom'
|
||||||
MediaManagerItem.__init__(self, parent, self, icon)
|
MediaManagerItem.__init__(self, parent, self, icon)
|
||||||
|
self.edit_custom_form = EditCustomForm(self, self.parent.manager)
|
||||||
self.singleServiceItem = False
|
self.singleServiceItem = False
|
||||||
self.quickPreviewAllowed = True
|
self.quickPreviewAllowed = True
|
||||||
self.hasSearch = True
|
self.hasSearch = True
|
||||||
@ -136,6 +138,8 @@ class CustomMediaItem(MediaManagerItem):
|
|||||||
self.onRemoteEditClear()
|
self.onRemoteEditClear()
|
||||||
|
|
||||||
def loadList(self, custom_slides):
|
def loadList(self, custom_slides):
|
||||||
|
# Sort out what custom we want to select after loading the list.
|
||||||
|
self.save_auto_select_id()
|
||||||
self.listView.clear()
|
self.listView.clear()
|
||||||
# Sort the customs by its title considering language specific
|
# Sort the customs by its title considering language specific
|
||||||
# characters. lower() is needed for windows!
|
# characters. lower() is needed for windows!
|
||||||
@ -146,33 +150,34 @@ class CustomMediaItem(MediaManagerItem):
|
|||||||
custom_name.setData(
|
custom_name.setData(
|
||||||
QtCore.Qt.UserRole, QtCore.QVariant(custom_slide.id))
|
QtCore.Qt.UserRole, QtCore.QVariant(custom_slide.id))
|
||||||
self.listView.addItem(custom_name)
|
self.listView.addItem(custom_name)
|
||||||
# Auto-select the item if name has been set
|
# Auto-select the custom.
|
||||||
if custom_slide.title == self.autoSelectItem:
|
if custom_slide.id == self.auto_select_id:
|
||||||
self.listView.setCurrentItem(custom_name)
|
self.listView.setCurrentItem(custom_name)
|
||||||
|
self.auto_select_id = -1
|
||||||
|
|
||||||
def onNewClick(self):
|
def onNewClick(self):
|
||||||
self.parent.edit_custom_form.loadCustom(0)
|
self.edit_custom_form.loadCustom(0)
|
||||||
self.parent.edit_custom_form.exec_()
|
self.edit_custom_form.exec_()
|
||||||
self.initialise()
|
self.initialise()
|
||||||
|
|
||||||
def onRemoteEditClear(self):
|
def onRemoteEditClear(self):
|
||||||
self.remoteTriggered = None
|
self.remoteTriggered = None
|
||||||
self.remoteCustom = -1
|
self.remoteCustom = -1
|
||||||
|
|
||||||
def onRemoteEdit(self, customid):
|
def onRemoteEdit(self, message):
|
||||||
"""
|
"""
|
||||||
Called by ServiceManager or SlideController by event passing
|
Called by ServiceManager or SlideController by event passing
|
||||||
the Song Id in the payload along with an indicator to say which
|
the custom Id in the payload along with an indicator to say which
|
||||||
type of display is required.
|
type of display is required.
|
||||||
"""
|
"""
|
||||||
fields = customid.split(u':')
|
remote_type, custom_id = message.split(u':')
|
||||||
valid = self.manager.get_object(CustomSlide, fields[1])
|
custom_id = int(custom_id)
|
||||||
|
valid = self.manager.get_object(CustomSlide, custom_id)
|
||||||
if valid:
|
if valid:
|
||||||
self.remoteCustom = fields[1]
|
self.remoteCustom = custom_id
|
||||||
self.remoteTriggered = fields[0]
|
self.remoteTriggered = remote_type
|
||||||
self.parent.edit_custom_form.loadCustom(fields[1],
|
self.edit_custom_form.loadCustom(custom_id, (remote_type == u'P'))
|
||||||
(fields[0] == u'P'))
|
self.edit_custom_form.exec_()
|
||||||
self.parent.edit_custom_form.exec_()
|
|
||||||
|
|
||||||
def onEditClick(self):
|
def onEditClick(self):
|
||||||
"""
|
"""
|
||||||
@ -181,8 +186,8 @@ class CustomMediaItem(MediaManagerItem):
|
|||||||
if check_item_selected(self.listView, UiStrings().SelectEdit):
|
if check_item_selected(self.listView, UiStrings().SelectEdit):
|
||||||
item = self.listView.currentItem()
|
item = self.listView.currentItem()
|
||||||
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
|
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
|
||||||
self.parent.edit_custom_form.loadCustom(item_id, False)
|
self.edit_custom_form.loadCustom(item_id, False)
|
||||||
self.parent.edit_custom_form.exec_()
|
self.edit_custom_form.exec_()
|
||||||
self.initialise()
|
self.initialise()
|
||||||
|
|
||||||
def onDeleteClick(self):
|
def onDeleteClick(self):
|
||||||
@ -203,7 +208,6 @@ class CustomMediaItem(MediaManagerItem):
|
|||||||
self.searchTextEdit.setFocus()
|
self.searchTextEdit.setFocus()
|
||||||
|
|
||||||
def generateSlideData(self, service_item, item=None, xmlVersion=False):
|
def generateSlideData(self, service_item, item=None, xmlVersion=False):
|
||||||
raw_slides = []
|
|
||||||
raw_footer = []
|
raw_footer = []
|
||||||
slide = None
|
slide = None
|
||||||
theme = None
|
theme = None
|
||||||
@ -221,8 +225,7 @@ class CustomMediaItem(MediaManagerItem):
|
|||||||
service_item.theme = theme
|
service_item.theme = theme
|
||||||
customXML = CustomXMLParser(customSlide.text)
|
customXML = CustomXMLParser(customSlide.text)
|
||||||
verseList = customXML.get_verses()
|
verseList = customXML.get_verses()
|
||||||
for verse in verseList:
|
raw_slides = [verse[1] for verse in verseList]
|
||||||
raw_slides.append(verse[1])
|
|
||||||
service_item.title = title
|
service_item.title = title
|
||||||
for slide in raw_slides:
|
for slide in raw_slides:
|
||||||
service_item.add_from_text(slide[:30], slide)
|
service_item.add_from_text(slide[:30], slide)
|
||||||
@ -260,7 +263,7 @@ class CustomMediaItem(MediaManagerItem):
|
|||||||
def onSearchTextEditChanged(self, text):
|
def onSearchTextEditChanged(self, text):
|
||||||
"""
|
"""
|
||||||
If search as type enabled invoke the search on each key press.
|
If search as type enabled invoke the search on each key press.
|
||||||
If the Title is being searched do not start till 2 characters
|
If the Title is being searched do not start until 2 characters
|
||||||
have been entered.
|
have been entered.
|
||||||
"""
|
"""
|
||||||
search_length = 2
|
search_length = 2
|
||||||
@ -283,8 +286,5 @@ class CustomMediaItem(MediaManagerItem):
|
|||||||
func.lower(CustomSlide.text).like(u'%' +
|
func.lower(CustomSlide.text).like(u'%' +
|
||||||
string.lower() + u'%')),
|
string.lower() + u'%')),
|
||||||
order_by_ref=CustomSlide.title)
|
order_by_ref=CustomSlide.title)
|
||||||
results = []
|
return [[custom.id, custom.title] for custom in search_results]
|
||||||
for custom in search_results:
|
|
||||||
results.append([custom.id, custom.title])
|
|
||||||
return results
|
|
||||||
|
|
||||||
|
@ -696,9 +696,8 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
self.clearCaches()
|
self.clearCaches()
|
||||||
if self._validate_song():
|
if self._validate_song():
|
||||||
self.saveSong()
|
self.saveSong()
|
||||||
Receiver.send_message(u'songs_set_autoselect_item',
|
|
||||||
unicode(self.titleEdit.text()))
|
|
||||||
Receiver.send_message(u'songs_load_list')
|
Receiver.send_message(u'songs_load_list')
|
||||||
|
self.song = None
|
||||||
QtGui.QDialog.accept(self)
|
QtGui.QDialog.accept(self)
|
||||||
|
|
||||||
def saveSong(self, preview=False):
|
def saveSong(self, preview=False):
|
||||||
@ -756,8 +755,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
self.song.topics.append(self.manager.get_object(Topic, topicId))
|
self.song.topics.append(self.manager.get_object(Topic, topicId))
|
||||||
clean_song(self.manager, self.song)
|
clean_song(self.manager, self.song)
|
||||||
self.manager.save_object(self.song)
|
self.manager.save_object(self.song)
|
||||||
if not preview:
|
self.parent.auto_select_id = self.song.id
|
||||||
self.song = None
|
|
||||||
|
|
||||||
def _processLyrics(self):
|
def _processLyrics(self):
|
||||||
"""
|
"""
|
||||||
|
@ -197,7 +197,7 @@ def init_schema(url):
|
|||||||
Column(u'song_number', types.Unicode(64)),
|
Column(u'song_number', types.Unicode(64)),
|
||||||
Column(u'theme_name', types.Unicode(128)),
|
Column(u'theme_name', types.Unicode(128)),
|
||||||
Column(u'search_title', types.Unicode(255), index=True, nullable=False),
|
Column(u'search_title', types.Unicode(255), index=True, nullable=False),
|
||||||
Column(u'search_lyrics', types.UnicodeText, index=True, nullable=False)
|
Column(u'search_lyrics', types.UnicodeText, nullable=False)
|
||||||
)
|
)
|
||||||
|
|
||||||
# Definition of the "topics" table
|
# Definition of the "topics" table
|
||||||
|
@ -232,6 +232,7 @@ class SongMediaItem(MediaManagerItem):
|
|||||||
|
|
||||||
def displayResultsSong(self, searchresults):
|
def displayResultsSong(self, searchresults):
|
||||||
log.debug(u'display results Song')
|
log.debug(u'display results Song')
|
||||||
|
self.save_auto_select_id()
|
||||||
self.listView.clear()
|
self.listView.clear()
|
||||||
# Sort the songs by its title considering language specific characters.
|
# Sort the songs by its title considering language specific characters.
|
||||||
# lower() is needed for windows!
|
# lower() is needed for windows!
|
||||||
@ -245,8 +246,9 @@ class SongMediaItem(MediaManagerItem):
|
|||||||
song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id))
|
song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id))
|
||||||
self.listView.addItem(song_name)
|
self.listView.addItem(song_name)
|
||||||
# Auto-select the item if name has been set
|
# Auto-select the item if name has been set
|
||||||
if song.title == self.autoSelectItem :
|
if song.id == self.auto_select_id:
|
||||||
self.listView.setCurrentItem(song_name)
|
self.listView.setCurrentItem(song_name)
|
||||||
|
self.auto_select_id = -1
|
||||||
|
|
||||||
def displayResultsAuthor(self, searchresults):
|
def displayResultsAuthor(self, searchresults):
|
||||||
log.debug(u'display results Author')
|
log.debug(u'display results Author')
|
||||||
@ -487,7 +489,4 @@ class SongMediaItem(MediaManagerItem):
|
|||||||
Search for some songs
|
Search for some songs
|
||||||
"""
|
"""
|
||||||
search_results = self.searchEntire(string)
|
search_results = self.searchEntire(string)
|
||||||
results = []
|
return [[song.id, song.title] for song in search_results]
|
||||||
for song in search_results:
|
|
||||||
results.append([song.id, song.title])
|
|
||||||
return results
|
|
||||||
|
Loading…
Reference in New Issue
Block a user