forked from openlp/openlp
bzr-revno: 1912 Fixes: https://launchpad.net/bugs/888815, https://launchpad.net/bugs/941966
This commit is contained in:
commit
50f3f2c9b8
@ -33,7 +33,8 @@ from urllib import quote_plus as urlquote
|
|||||||
|
|
||||||
from PyQt4 import QtCore
|
from PyQt4 import QtCore
|
||||||
from sqlalchemy import Table, MetaData, Column, types, create_engine
|
from sqlalchemy import Table, MetaData, Column, types, create_engine
|
||||||
from sqlalchemy.exc import SQLAlchemyError, InvalidRequestError, DBAPIError
|
from sqlalchemy.exc import SQLAlchemyError, InvalidRequestError, DBAPIError, \
|
||||||
|
OperationalError
|
||||||
from sqlalchemy.orm import scoped_session, sessionmaker, mapper
|
from sqlalchemy.orm import scoped_session, sessionmaker, mapper
|
||||||
from sqlalchemy.pool import NullPool
|
from sqlalchemy.pool import NullPool
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ class ImageManager(QtCore.QObject):
|
|||||||
self.height = current_screen[u'size'].height()
|
self.height = current_screen[u'size'].height()
|
||||||
# Mark the images as dirty for a rebuild by setting the image and byte
|
# Mark the images as dirty for a rebuild by setting the image and byte
|
||||||
# stream to None.
|
# stream to None.
|
||||||
for key, image in self._cache.iteritems():
|
for image in self._cache.values():
|
||||||
self._reset_image(image)
|
self._reset_image(image)
|
||||||
|
|
||||||
def update_images(self, image_type, background):
|
def update_images(self, image_type, background):
|
||||||
@ -176,7 +176,7 @@ class ImageManager(QtCore.QObject):
|
|||||||
log.debug(u'update_images')
|
log.debug(u'update_images')
|
||||||
# Mark the images as dirty for a rebuild by setting the image and byte
|
# Mark the images as dirty for a rebuild by setting the image and byte
|
||||||
# stream to None.
|
# stream to None.
|
||||||
for key, image in self._cache.iteritems():
|
for image in self._cache.values():
|
||||||
if image.source == image_type:
|
if image.source == image_type:
|
||||||
image.background = background
|
image.background = background
|
||||||
self._reset_image(image)
|
self._reset_image(image)
|
||||||
@ -188,7 +188,7 @@ class ImageManager(QtCore.QObject):
|
|||||||
log.debug(u'update_images')
|
log.debug(u'update_images')
|
||||||
# Mark the images as dirty for a rebuild by setting the image and byte
|
# Mark the images as dirty for a rebuild by setting the image and byte
|
||||||
# stream to None.
|
# stream to None.
|
||||||
for key, image in self._cache.iteritems():
|
for image in self._cache.values():
|
||||||
if image.source == image_type and image.name == name:
|
if image.source == image_type and image.name == name:
|
||||||
image.background = background
|
image.background = background
|
||||||
self._reset_image(image)
|
self._reset_image(image)
|
||||||
|
@ -300,6 +300,7 @@ class ServiceItem(object):
|
|||||||
``path``
|
``path``
|
||||||
Defaults to *None*. Any path data, usually for images.
|
Defaults to *None*. Any path data, usually for images.
|
||||||
"""
|
"""
|
||||||
|
log.debug(u'set_from_service called with path %s' % path)
|
||||||
header = serviceitem[u'serviceitem'][u'header']
|
header = serviceitem[u'serviceitem'][u'header']
|
||||||
self.title = header[u'title']
|
self.title = header[u'title']
|
||||||
self.name = header[u'name']
|
self.name = header[u'name']
|
||||||
|
@ -295,7 +295,8 @@ class GeneralTab(SettingsTab):
|
|||||||
QtCore.QVariant(False)).toBool())
|
QtCore.QVariant(False)).toBool())
|
||||||
self.timeoutSpinBox.setValue(settings.value(u'loop delay',
|
self.timeoutSpinBox.setValue(settings.value(u'loop delay',
|
||||||
QtCore.QVariant(5)).toInt()[0])
|
QtCore.QVariant(5)).toInt()[0])
|
||||||
self.monitorRadioButton.setChecked(not settings.value(u'override position',
|
self.monitorRadioButton.setChecked(
|
||||||
|
not settings.value(u'override position',
|
||||||
QtCore.QVariant(False)).toBool())
|
QtCore.QVariant(False)).toBool())
|
||||||
self.overrideRadioButton.setChecked(settings.value(u'override position',
|
self.overrideRadioButton.setChecked(settings.value(u'override position',
|
||||||
QtCore.QVariant(False)).toBool())
|
QtCore.QVariant(False)).toBool())
|
||||||
@ -313,11 +314,14 @@ class GeneralTab(SettingsTab):
|
|||||||
u'audio repeat list', QtCore.QVariant(False)).toBool())
|
u'audio repeat list', QtCore.QVariant(False)).toBool())
|
||||||
settings.endGroup()
|
settings.endGroup()
|
||||||
self.monitorComboBox.setDisabled(self.overrideRadioButton.isChecked())
|
self.monitorComboBox.setDisabled(self.overrideRadioButton.isChecked())
|
||||||
self.displayOnMonitorCheck.setDisabled(self.overrideRadioButton.isChecked())
|
self.displayOnMonitorCheck.setDisabled(
|
||||||
|
self.overrideRadioButton.isChecked())
|
||||||
self.customXValueEdit.setEnabled(self.overrideRadioButton.isChecked())
|
self.customXValueEdit.setEnabled(self.overrideRadioButton.isChecked())
|
||||||
self.customYValueEdit.setEnabled(self.overrideRadioButton.isChecked())
|
self.customYValueEdit.setEnabled(self.overrideRadioButton.isChecked())
|
||||||
self.customHeightValueEdit.setEnabled(self.overrideRadioButton.isChecked())
|
self.customHeightValueEdit.setEnabled(
|
||||||
self.customWidthValueEdit.setEnabled(self.overrideRadioButton.isChecked())
|
self.overrideRadioButton.isChecked())
|
||||||
|
self.customWidthValueEdit.setEnabled(
|
||||||
|
self.overrideRadioButton.isChecked())
|
||||||
self.display_changed = False
|
self.display_changed = False
|
||||||
settings.beginGroup(self.settingsSection)
|
settings.beginGroup(self.settingsSection)
|
||||||
|
|
||||||
|
@ -286,7 +286,8 @@ class MediaController(object):
|
|||||||
controller.mediabar.setVisible(value)
|
controller.mediabar.setVisible(value)
|
||||||
if controller.isLive and controller.display:
|
if controller.isLive and controller.display:
|
||||||
if self.curDisplayMediaPlayer and value:
|
if self.curDisplayMediaPlayer and value:
|
||||||
if self.curDisplayMediaPlayer[controller.display] != self.mediaPlayers[u'webkit']:
|
if self.curDisplayMediaPlayer[controller.display] != \
|
||||||
|
self.mediaPlayers[u'webkit']:
|
||||||
controller.display.setTransparency(False)
|
controller.display.setTransparency(False)
|
||||||
# Special controls: Here media type specific Controls will be enabled
|
# Special controls: Here media type specific Controls will be enabled
|
||||||
# (e.g. for DVD control, ...)
|
# (e.g. for DVD control, ...)
|
||||||
|
@ -405,7 +405,7 @@ class PrintServiceForm(QtGui.QDialog, Ui_PrintServiceDialog):
|
|||||||
# Only continue when we include the song's text.
|
# Only continue when we include the song's text.
|
||||||
if not self.slideTextCheckBox.isChecked():
|
if not self.slideTextCheckBox.isChecked():
|
||||||
return
|
return
|
||||||
for index, item in enumerate(self.serviceManager.serviceItems):
|
for item in self.serviceManager.serviceItems:
|
||||||
# Trigger Audit requests
|
# Trigger Audit requests
|
||||||
Receiver.send_message(u'print_service_started',
|
Receiver.send_message(u'print_service_started',
|
||||||
[item[u'service_item']])
|
[item[u'service_item']])
|
||||||
|
@ -461,7 +461,7 @@ class ServiceManager(QtGui.QWidget):
|
|||||||
log.debug(temp_file_name)
|
log.debug(temp_file_name)
|
||||||
path_file_name = unicode(self.fileName())
|
path_file_name = unicode(self.fileName())
|
||||||
path, file_name = os.path.split(path_file_name)
|
path, file_name = os.path.split(path_file_name)
|
||||||
basename, extension = os.path.splitext(file_name)
|
basename = os.path.splitext(file_name)[0]
|
||||||
service_file_name = '%s.osd' % basename
|
service_file_name = '%s.osd' % basename
|
||||||
log.debug(u'ServiceManager.saveFile - %s', path_file_name)
|
log.debug(u'ServiceManager.saveFile - %s', path_file_name)
|
||||||
SettingsManager.set_last_dir(
|
SettingsManager.set_last_dir(
|
||||||
@ -483,8 +483,7 @@ class ServiceManager(QtGui.QWidget):
|
|||||||
for i, filename in \
|
for i, filename in \
|
||||||
enumerate(service_item[u'header'][u'background_audio']):
|
enumerate(service_item[u'header'][u'background_audio']):
|
||||||
new_file = os.path.join(u'audio',
|
new_file = os.path.join(u'audio',
|
||||||
item[u'service_item']._uuid,
|
item[u'service_item']._uuid, filename)
|
||||||
os.path.split(filename)[1])
|
|
||||||
audio_files.append((filename, new_file))
|
audio_files.append((filename, new_file))
|
||||||
service_item[u'header'][u'background_audio'][i] = new_file
|
service_item[u'header'][u'background_audio'][i] = new_file
|
||||||
# Add the service item to the service.
|
# Add the service item to the service.
|
||||||
@ -1354,15 +1353,15 @@ class ServiceManager(QtGui.QWidget):
|
|||||||
Handle of the event pint passed
|
Handle of the event pint passed
|
||||||
"""
|
"""
|
||||||
link = event.mimeData()
|
link = event.mimeData()
|
||||||
if event.mimeData().hasUrls():
|
if link.hasUrls():
|
||||||
event.setDropAction(QtCore.Qt.CopyAction)
|
event.setDropAction(QtCore.Qt.CopyAction)
|
||||||
event.accept()
|
event.accept()
|
||||||
for url in event.mimeData().urls():
|
for url in link.urls():
|
||||||
filename = unicode(url.toLocalFile())
|
filename = unicode(url.toLocalFile())
|
||||||
if filename.endswith(u'.osz'):
|
if filename.endswith(u'.osz'):
|
||||||
self.onLoadServiceClicked(filename)
|
self.onLoadServiceClicked(filename)
|
||||||
elif event.mimeData().hasText():
|
elif link.hasText():
|
||||||
plugin = unicode(event.mimeData().text())
|
plugin = unicode(link.text())
|
||||||
item = self.serviceManagerList.itemAt(event.pos())
|
item = self.serviceManagerList.itemAt(event.pos())
|
||||||
# ServiceManager started the drag and drop
|
# ServiceManager started the drag and drop
|
||||||
if plugin == u'ServiceManager':
|
if plugin == u'ServiceManager':
|
||||||
|
@ -57,7 +57,7 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog):
|
|||||||
def exec_(self):
|
def exec_(self):
|
||||||
# load all the settings
|
# load all the settings
|
||||||
self.settingListWidget.clear()
|
self.settingListWidget.clear()
|
||||||
for tabIndex in range(0, self.stackedLayout.count() + 1):
|
while self.stackedLayout.count():
|
||||||
# take at 0 and the rest shuffle up.
|
# take at 0 and the rest shuffle up.
|
||||||
self.stackedLayout.takeAt(0)
|
self.stackedLayout.takeAt(0)
|
||||||
self.insertTab(self.generalTab, 0, PluginStatus.Active)
|
self.insertTab(self.generalTab, 0, PluginStatus.Active)
|
||||||
|
@ -563,7 +563,8 @@ class SlideController(Controller):
|
|||||||
Receiver.send_message('servicemanager_previous_item')
|
Receiver.send_message('servicemanager_previous_item')
|
||||||
elif keypressCommand == ServiceItemAction.PreviousLastSlide:
|
elif keypressCommand == ServiceItemAction.PreviousLastSlide:
|
||||||
# Go to the last slide of the previous item
|
# Go to the last slide of the previous item
|
||||||
Receiver.send_message('servicemanager_previous_item', u'last slide')
|
Receiver.send_message('servicemanager_previous_item',
|
||||||
|
u'last slide')
|
||||||
else:
|
else:
|
||||||
Receiver.send_message('servicemanager_next_item')
|
Receiver.send_message('servicemanager_next_item')
|
||||||
self.keypress_loop = False
|
self.keypress_loop = False
|
||||||
@ -1190,7 +1191,8 @@ class SlideController(Controller):
|
|||||||
if self.slide_limits == SlideLimits.Wrap:
|
if self.slide_limits == SlideLimits.Wrap:
|
||||||
row = self.previewListWidget.rowCount() - 1
|
row = self.previewListWidget.rowCount() - 1
|
||||||
elif self.isLive and self.slide_limits == SlideLimits.Next:
|
elif self.isLive and self.slide_limits == SlideLimits.Next:
|
||||||
self.keypress_queue.append(ServiceItemAction.PreviousLastSlide)
|
self.keypress_queue.append(
|
||||||
|
ServiceItemAction.PreviousLastSlide)
|
||||||
self._process_queue()
|
self._process_queue()
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
|
@ -153,7 +153,6 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
Import new themes downloaded by the first time wizard
|
Import new themes downloaded by the first time wizard
|
||||||
"""
|
"""
|
||||||
Receiver.send_message(u'cursor_busy')
|
Receiver.send_message(u'cursor_busy')
|
||||||
encoding = get_filesystem_encoding()
|
|
||||||
files = SettingsManager.get_files(self.settingsSection, u'.otz')
|
files = SettingsManager.get_files(self.settingsSection, u'.otz')
|
||||||
for file in files:
|
for file in files:
|
||||||
file = os.path.join(self.path, file)
|
file = os.path.join(self.path, file)
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtGui
|
||||||
|
|
||||||
from openlp.core.lib import Plugin, StringContent, build_icon, translate
|
from openlp.core.lib import Plugin, StringContent, build_icon, translate
|
||||||
from openlp.core.lib.ui import create_action, UiStrings
|
from openlp.core.lib.ui import create_action, UiStrings
|
||||||
|
@ -189,7 +189,7 @@ class ImageMediaItem(MediaManagerItem):
|
|||||||
# Continue with the existing images.
|
# Continue with the existing images.
|
||||||
for bitem in items:
|
for bitem in items:
|
||||||
filename = unicode(bitem.data(QtCore.Qt.UserRole).toString())
|
filename = unicode(bitem.data(QtCore.Qt.UserRole).toString())
|
||||||
(path, name) = os.path.split(filename)
|
name = os.path.split(filename)[1]
|
||||||
service_item.add_from_image(filename, name, background)
|
service_item.add_from_image(filename, name, background)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@ -220,7 +220,7 @@ class ImageMediaItem(MediaManagerItem):
|
|||||||
bitem = self.listView.item(item.row())
|
bitem = self.listView.item(item.row())
|
||||||
filename = unicode(bitem.data(QtCore.Qt.UserRole).toString())
|
filename = unicode(bitem.data(QtCore.Qt.UserRole).toString())
|
||||||
if os.path.exists(filename):
|
if os.path.exists(filename):
|
||||||
(path, name) = os.path.split(filename)
|
name = os.path.split(filename)[1]
|
||||||
if self.plugin.liveController.display.directImage(name,
|
if self.plugin.liveController.display.directImage(name,
|
||||||
filename, background):
|
filename, background):
|
||||||
self.resetAction.setVisible(True)
|
self.resetAction.setVisible(True)
|
||||||
|
@ -87,7 +87,8 @@ class RemoteTab(SettingsTab):
|
|||||||
self.qrLayout = QtGui.QVBoxLayout(self.androidAppGroupBox)
|
self.qrLayout = QtGui.QVBoxLayout(self.androidAppGroupBox)
|
||||||
self.qrLayout.setObjectName(u'qrLayout')
|
self.qrLayout.setObjectName(u'qrLayout')
|
||||||
self.qrCodeLabel = QtGui.QLabel(self.androidAppGroupBox)
|
self.qrCodeLabel = QtGui.QLabel(self.androidAppGroupBox)
|
||||||
self.qrCodeLabel.setPixmap(QtGui.QPixmap(u':/remotes/android_app_qr.png'))
|
self.qrCodeLabel.setPixmap(QtGui.QPixmap(
|
||||||
|
u':/remotes/android_app_qr.png'))
|
||||||
self.qrCodeLabel.setAlignment(QtCore.Qt.AlignCenter)
|
self.qrCodeLabel.setAlignment(QtCore.Qt.AlignCenter)
|
||||||
self.qrCodeLabel.setObjectName(u'qrCodeLabel')
|
self.qrCodeLabel.setObjectName(u'qrCodeLabel')
|
||||||
self.qrLayout.addWidget(self.qrCodeLabel)
|
self.qrLayout.addWidget(self.qrCodeLabel)
|
||||||
|
@ -589,7 +589,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
verse_names.append(u'%s%s' % (
|
verse_names.append(u'%s%s' % (
|
||||||
VerseType.translated_tag(verse[0]), verse[1:]))
|
VerseType.translated_tag(verse[0]), verse[1:]))
|
||||||
verses_not_used = []
|
verses_not_used = []
|
||||||
for count, verse in enumerate(verses):
|
for verse in verses:
|
||||||
if not verse in order:
|
if not verse in order:
|
||||||
verses_not_used.append(verse)
|
verses_not_used.append(verse)
|
||||||
self.warningLabel.setVisible(len(verses_not_used) > 0)
|
self.warningLabel.setVisible(len(verses_not_used) > 0)
|
||||||
@ -680,7 +680,6 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
self.verseListWidget.rowCount())
|
self.verseListWidget.rowCount())
|
||||||
if not result:
|
if not result:
|
||||||
return False
|
return False
|
||||||
item = int(self.songBookComboBox.currentIndex())
|
|
||||||
text = unicode(self.songBookComboBox.currentText())
|
text = unicode(self.songBookComboBox.currentText())
|
||||||
if self.songBookComboBox.findText(text, QtCore.Qt.MatchExactly) < 0:
|
if self.songBookComboBox.findText(text, QtCore.Qt.MatchExactly) < 0:
|
||||||
if QtGui.QMessageBox.question(self,
|
if QtGui.QMessageBox.question(self,
|
||||||
|
@ -36,7 +36,7 @@ from sqlalchemy.sql import or_
|
|||||||
|
|
||||||
from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \
|
from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \
|
||||||
translate, check_item_selected, PluginStatus, create_separated_list
|
translate, check_item_selected, PluginStatus, create_separated_list
|
||||||
from openlp.core.lib.ui import UiStrings, create_action, create_widget_action
|
from openlp.core.lib.ui import UiStrings, create_widget_action
|
||||||
from openlp.core.utils import AppLocation
|
from openlp.core.utils import AppLocation
|
||||||
from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm, \
|
from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm, \
|
||||||
SongImportForm, SongExportForm
|
SongImportForm, SongExportForm
|
||||||
|
Loading…
Reference in New Issue
Block a user