forked from openlp/openlp
Merged trunk, Fixed up odd trUtf8
This commit is contained in:
commit
8de8638ba9
8
openlp-1to2-converter.py
Normal file → Executable file
8
openlp-1to2-converter.py
Normal file → Executable file
@ -25,7 +25,13 @@
|
||||
|
||||
import sys
|
||||
import os
|
||||
import sqlite
|
||||
try:
|
||||
import sqlite
|
||||
except:
|
||||
try:
|
||||
import pysqlite2
|
||||
except:
|
||||
print 'No Sqlite2 package available'
|
||||
import sqlite3
|
||||
import re
|
||||
from optparse import OptionParser
|
||||
|
@ -24,7 +24,6 @@
|
||||
###############################################################################
|
||||
|
||||
import os
|
||||
import sys
|
||||
import re
|
||||
|
||||
ts_file = u"""<?xml version="1.0" encoding="utf-8"?>
|
||||
|
@ -86,6 +86,17 @@ class EventReceiver(QtCore.QObject):
|
||||
|
||||
``config_updated``
|
||||
Informs components the config has changed
|
||||
|
||||
``edit_song``
|
||||
Requests the current song on the preview display be loaded for edit
|
||||
|
||||
``preview_song``
|
||||
Tells the song plugin the edit has finished and the song can be previewed
|
||||
Only available if the edit was triggered by the Preview button.
|
||||
|
||||
``slidecontroller_change``
|
||||
Informs the slidecontroller that a slide change has occurred
|
||||
|
||||
"""
|
||||
global log
|
||||
log = logging.getLogger(u'EventReceiver')
|
||||
|
@ -28,7 +28,7 @@ import os
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib.toolbar import *
|
||||
from openlp.core.lib import translate, contextMenuAction, contextMenuSeparator
|
||||
from openlp.core.lib import contextMenuAction, contextMenuSeparator
|
||||
from serviceitem import ServiceItem
|
||||
|
||||
class MediaManagerItem(QtGui.QWidget):
|
||||
@ -36,7 +36,7 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
MediaManagerItem is a helper widget for plugins.
|
||||
|
||||
None of the following *need* to be used, feel free to override
|
||||
them cmopletely in your plugin's implementation. Alternatively,
|
||||
them completely in your plugin's implementation. Alternatively,
|
||||
call them from your plugin before or after you've done extra
|
||||
things that you need to.
|
||||
|
||||
@ -118,7 +118,6 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
self.requiredIcons()
|
||||
self.setupUi()
|
||||
self.retranslateUi()
|
||||
#self.initialise()
|
||||
|
||||
def requiredIcons(self):
|
||||
"""
|
||||
|
@ -169,6 +169,8 @@ class Renderer(object):
|
||||
page_length = int(self._rect.height() / metrics.height() - 2 ) - 1
|
||||
ave_line_width = line_width / metrics.averageCharWidth()
|
||||
ave_line_width = int(ave_line_width + (ave_line_width * 1))
|
||||
log.debug(u'Page Length area height %s , metrics %s , lines %s' %
|
||||
(int(self._rect.height()), metrics.height(), page_length ))
|
||||
split_pages = []
|
||||
page = []
|
||||
split_lines = []
|
||||
@ -195,15 +197,17 @@ class Renderer(object):
|
||||
else:
|
||||
split_text = line[:pos]
|
||||
split_lines.append(split_text)
|
||||
line = line[pos:]
|
||||
line = line[pos:].lstrip()
|
||||
#if we have more text add up to 10 spaces on the front.
|
||||
if len(line) > 0 :
|
||||
if len(line) > 0 and self._theme.font_main_indentation > 0:
|
||||
line = u'%s%s' % \
|
||||
(u' '[:self._theme.font_main_indentation], line)
|
||||
(u' '[:int(self._theme.font_main_indentation)], line)
|
||||
#Text fits in a line now
|
||||
for line in split_lines:
|
||||
for count, line in enumerate(split_lines):
|
||||
page.append(line)
|
||||
if len(page) == page_length:
|
||||
#last but one line and only 2 lines to go or end of page
|
||||
if (len(page) == page_length - 1 and len(split_lines) - 3 == count) or \
|
||||
len(page) == page_length:
|
||||
split_pages.append(page)
|
||||
page = []
|
||||
if len(page) > 0 and page != u' ':
|
||||
|
@ -65,6 +65,7 @@ class RenderManager(object):
|
||||
self.service_theme = u''
|
||||
self.global_style = u''
|
||||
self.override_background = None
|
||||
self.themedata = None
|
||||
self.save_bg_frame = None
|
||||
self.override_background_changed = False
|
||||
|
||||
@ -130,7 +131,7 @@ class RenderManager(object):
|
||||
self.theme = self.service_theme
|
||||
else:
|
||||
self.theme = self.global_theme
|
||||
if self.theme != self.renderer.theme_name:
|
||||
if self.theme != self.renderer.theme_name or self.themedata is None:
|
||||
log.debug(u'theme is now %s', self.theme)
|
||||
self.themedata = self.theme_manager.getThemeData(self.theme)
|
||||
self.calculate_default(
|
||||
|
@ -52,7 +52,7 @@ blankthemexml=\
|
||||
<weight>Normal</weight>
|
||||
<italics>False</italics>
|
||||
<indentation>0</indentation>
|
||||
<location override="False" x="0" y="0" width="0" height="0"/>
|
||||
<location override="False" x="10" y="10" width="1024" height="730"/>
|
||||
</font>
|
||||
<font type="footer">
|
||||
<name>Arial</name>
|
||||
@ -61,7 +61,7 @@ blankthemexml=\
|
||||
<weight>Normal</weight>
|
||||
<italics>False</italics>
|
||||
<indentation>0</indentation>
|
||||
<location override="False" x="0" y="0" width="0" height="0"/>
|
||||
<location override="False" x="10" y="730" width="1024" height="38"/>
|
||||
</font>
|
||||
<display>
|
||||
<shadow color="#000000">True</shadow>
|
||||
|
@ -24,7 +24,7 @@
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import translate, buildIcon
|
||||
from openlp.core.lib import buildIcon
|
||||
|
||||
class AboutForm(QtGui.QDialog):
|
||||
"""
|
||||
|
@ -24,7 +24,7 @@
|
||||
|
||||
import logging
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.lib import translate, buildIcon
|
||||
from openlp.core.lib import buildIcon
|
||||
|
||||
class AlertForm(QtGui.QDialog):
|
||||
global log
|
||||
|
@ -24,7 +24,7 @@
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import SettingsTab, translate
|
||||
from openlp.core.lib import SettingsTab
|
||||
|
||||
class AlertsTab(SettingsTab):
|
||||
"""
|
||||
|
@ -23,7 +23,7 @@
|
||||
###############################################################################
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.lib import translate, buildIcon
|
||||
from openlp.core.lib import buildIcon
|
||||
|
||||
class Ui_AmendThemeDialog(object):
|
||||
def setupUi(self, AmendThemeDialog):
|
||||
|
@ -28,7 +28,7 @@ import os.path
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import ThemeXML, file_to_xml, translate
|
||||
from openlp.core.lib import ThemeXML, file_to_xml
|
||||
from amendthemedialog import Ui_AmendThemeDialog
|
||||
|
||||
log = logging.getLogger(u'AmendThemeForm')
|
||||
@ -672,8 +672,11 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||
int(self.theme.font_main_proportion), # size
|
||||
int(main_weight), # weight
|
||||
self.theme.font_main_italics)# italic
|
||||
mainFont.setPixelSize(int(self.theme.font_main_proportion))
|
||||
metrics = QtGui.QFontMetrics(mainFont)
|
||||
page_length = (int(self.FontMainHeightSpinBox.value()) / metrics.height() - 2) - 1
|
||||
log.debug(u'Page Length area height %s, metrics %s, lines %s' %
|
||||
(int(self.FontMainHeightSpinBox.value()), metrics.height(), page_length))
|
||||
page_length_text = unicode(self.trUtf8(u'Slide Height is %s rows'))
|
||||
self.FontMainLinesPageLabel.setText(page_length_text % page_length)
|
||||
frame = self.thememanager.generateImage(theme)
|
||||
|
@ -24,7 +24,7 @@
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import SettingsTab, translate, str_to_bool
|
||||
from openlp.core.lib import SettingsTab, str_to_bool
|
||||
|
||||
class GeneralTab(SettingsTab):
|
||||
"""
|
||||
|
@ -30,9 +30,8 @@ from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.ui import AboutForm, SettingsForm, AlertForm, \
|
||||
ServiceManager, ThemeManager, MainDisplay, SlideController, \
|
||||
PluginForm, MediaDockManager
|
||||
from openlp.core.lib import translate, RenderManager, PluginConfig, \
|
||||
OpenLPDockWidget, SettingsManager, PluginManager, Receiver, \
|
||||
buildIcon, str_to_bool
|
||||
from openlp.core.lib import RenderManager, PluginConfig, buildIcon, \
|
||||
OpenLPDockWidget, SettingsManager, PluginManager, Receiver, str_to_bool
|
||||
from openlp.core.utils import check_latest_version
|
||||
|
||||
media_manager_style = """
|
||||
|
@ -23,7 +23,6 @@
|
||||
###############################################################################
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.lib import translate
|
||||
|
||||
class Ui_PluginViewDialog(object):
|
||||
def setupUi(self, PluginViewDialog):
|
||||
|
@ -30,7 +30,7 @@ import zipfile
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.lib import PluginConfig, OpenLPToolbar, ServiceItem, \
|
||||
translate, ServiceType, contextMenuAction, contextMenuSeparator, Receiver
|
||||
ServiceType, contextMenuAction, contextMenuSeparator, Receiver
|
||||
|
||||
class ServiceManagerList(QtGui.QTreeWidget):
|
||||
|
||||
|
@ -23,7 +23,6 @@
|
||||
###############################################################################
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.lib import translate
|
||||
|
||||
class Ui_SettingsDialog(object):
|
||||
def setupUi(self, SettingsDialog):
|
||||
|
@ -26,7 +26,7 @@ import logging
|
||||
import time
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.lib import OpenLPToolbar, translate, Receiver, ServiceType
|
||||
from openlp.core.lib import OpenLPToolbar, Receiver, ServiceType
|
||||
|
||||
label_stylesheet = u"""
|
||||
QTableWidget::item:selected
|
||||
@ -87,13 +87,18 @@ class SlideController(QtGui.QWidget):
|
||||
self.isLive = isLive
|
||||
self.parent = parent
|
||||
self.image_list = [
|
||||
self.trUtf8(u'Start Loop'),
|
||||
self.trUtf8(u'Stop Loop'),
|
||||
#self.trUtf8(u'Loop Separator'),
|
||||
self.trUtf8(u'Image SpinBox')
|
||||
u'Start Loop',
|
||||
u'Stop Loop',
|
||||
u'Loop Separator',
|
||||
u'Image SpinBox'
|
||||
]
|
||||
self.song_list = [
|
||||
u'Edit Song',
|
||||
]
|
||||
self.timer_id = 0
|
||||
self.commandItem = None
|
||||
self.songEdit = False
|
||||
self.row = 0
|
||||
self.Panel = QtGui.QWidget(parent.ControlSplitter)
|
||||
# Layout for holding panel
|
||||
self.PanelLayout = QtGui.QVBoxLayout(self.Panel)
|
||||
@ -140,17 +145,17 @@ class SlideController(QtGui.QWidget):
|
||||
self.Toolbar.setSizePolicy(sizeToolbarPolicy)
|
||||
if self.isLive:
|
||||
self.Toolbar.addToolbarButton(
|
||||
self.trUtf8(u'First Slide'), u':/slides/slide_first.png',
|
||||
u'First Slide', u':/slides/slide_first.png',
|
||||
self.trUtf8(u'Move to first'), self.onSlideSelectedFirst)
|
||||
self.Toolbar.addToolbarButton(
|
||||
self.trUtf8(u'Previous Slide'), u':/slides/slide_previous.png',
|
||||
u'Previous Slide', u':/slides/slide_previous.png',
|
||||
self.trUtf8(u'Move to previous'), self.onSlideSelectedPrevious)
|
||||
self.Toolbar.addToolbarButton(
|
||||
self.trUtf8(u'Next Slide'), u':/slides/slide_next.png',
|
||||
u'Next Slide', u':/slides/slide_next.png',
|
||||
self.trUtf8(u'Move to next'), self.onSlideSelectedNext)
|
||||
if self.isLive:
|
||||
self.Toolbar.addToolbarButton(
|
||||
self.trUtf8(u'Last Slide'), u':/slides/slide_last.png',
|
||||
u'Last Slide', u':/slides/slide_last.png',
|
||||
self.trUtf8(u'Move to last'), self.onSlideSelectedLast)
|
||||
if self.isLive:
|
||||
self.Toolbar.addToolbarSeparator(u'Close Separator')
|
||||
@ -159,20 +164,25 @@ class SlideController(QtGui.QWidget):
|
||||
if not self.isLive:
|
||||
self.Toolbar.addToolbarSeparator(u'Close Separator')
|
||||
self.Toolbar.addToolbarButton(
|
||||
self.trUtf8(u'Go Live'), u':/system/system_live.png',
|
||||
u'Go Live', u':/system/system_live.png',
|
||||
self.trUtf8(u'Move to live'), self.onGoLive)
|
||||
self.Toolbar.addToolbarSeparator(u'Close Separator')
|
||||
self.Toolbar.addToolbarButton(
|
||||
u'Edit Song', u':songs/song_edit.png',
|
||||
self.trUtf8(u'Edit and re-preview Song'), self.onEditSong)
|
||||
if isLive:
|
||||
self.Toolbar.addToolbarSeparator(u'Loop Separator')
|
||||
self.Toolbar.addToolbarButton(
|
||||
self.trUtf8(u'Start Loop'), u':/media/media_time.png',
|
||||
u'Start Loop', u':/media/media_time.png',
|
||||
self.trUtf8(u'Start continuous loop'), self.onStartLoop)
|
||||
self.Toolbar.addToolbarButton(
|
||||
self.trUtf8(u'Stop Loop'), u':/media/media_stop.png',
|
||||
u'Stop Loop', u':/media/media_stop.png',
|
||||
self.trUtf8(u'Stop continuous loop'), self.onStopLoop)
|
||||
self.DelaySpinBox = QtGui.QSpinBox()
|
||||
self.Toolbar.addToolbarWidget(
|
||||
self.trUtf8(u'Image SpinBox'), self.DelaySpinBox)
|
||||
u'Image SpinBox', self.DelaySpinBox)
|
||||
self.DelaySpinBox.setSuffix(self.trUtf8(u's'))
|
||||
self.DelaySpinBox.setToolTip(self.trUtf8(u'Delay between slides in seconds'))
|
||||
|
||||
self.ControllerLayout.addWidget(self.Toolbar)
|
||||
# Screen preview area
|
||||
@ -216,6 +226,8 @@ class SlideController(QtGui.QWidget):
|
||||
Receiver().send_message(u'request_spin_delay')
|
||||
if isLive:
|
||||
self.Toolbar.makeWidgetsInvisible(self.image_list)
|
||||
else:
|
||||
self.Toolbar.makeWidgetsInvisible(self.song_list)
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'slidecontroller_first'), self.onSlideSelectedFirst)
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
@ -224,6 +236,8 @@ class SlideController(QtGui.QWidget):
|
||||
QtCore.SIGNAL(u'slidecontroller_previous'), self.onSlideSelectedPrevious)
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'slidecontroller_last'), self.onSlideSelectedLast)
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'slidecontroller_change'), self.onSlideChange)
|
||||
|
||||
def receiveSpinDelay(self, value):
|
||||
self.DelaySpinBox.setValue(int(value))
|
||||
@ -255,7 +269,10 @@ class SlideController(QtGui.QWidget):
|
||||
"""
|
||||
Allows the Preview toolbar to be customised
|
||||
"""
|
||||
pass
|
||||
if item.name == u'Songs':
|
||||
self.Toolbar.makeWidgetsVisible(self.song_list)
|
||||
else:
|
||||
self.Toolbar.makeWidgetsInvisible(self.song_list)
|
||||
|
||||
def addServiceItem(self, item):
|
||||
"""
|
||||
@ -277,7 +294,12 @@ class SlideController(QtGui.QWidget):
|
||||
Receiver().send_message(u'%s_start' % item.name.lower(), \
|
||||
[item.shortname, item.service_item_path,
|
||||
item.service_frames[0][u'title']])
|
||||
self.displayServiceManagerItems(item, 0)
|
||||
slideno = 0
|
||||
if self.songEdit:
|
||||
slideno = self.row
|
||||
self.songEdit = False
|
||||
self.displayServiceManagerItems(item, slideno)
|
||||
|
||||
|
||||
def addServiceManagerItem(self, item, slideno):
|
||||
"""
|
||||
@ -285,7 +307,7 @@ class SlideController(QtGui.QWidget):
|
||||
request the correct the toolbar of the plugin
|
||||
Called by ServiceManager
|
||||
"""
|
||||
log.debug(u'addServiceItem')
|
||||
log.debug(u'addServiceManagerItem')
|
||||
#If old item was a command tell it to stop
|
||||
if self.commandItem is not None and \
|
||||
self.commandItem.service_item_type == ServiceType.Command:
|
||||
@ -351,6 +373,7 @@ class SlideController(QtGui.QWidget):
|
||||
if self.commandItem is not None and \
|
||||
self.commandItem.service_item_type == ServiceType.Command:
|
||||
Receiver().send_message(u'%s_first'% self.commandItem.name.lower())
|
||||
QtCore.QTimer.singleShot(0.5, self.grabMainDisplay)
|
||||
else:
|
||||
self.PreviewListWidget.selectRow(0)
|
||||
self.onSlideSelected()
|
||||
@ -374,11 +397,13 @@ class SlideController(QtGui.QWidget):
|
||||
if this is the Live Controller also display on the screen
|
||||
"""
|
||||
row = self.PreviewListWidget.currentRow()
|
||||
self.row = 0
|
||||
if row > -1 and row < self.PreviewListWidget.rowCount():
|
||||
if self.commandItem.service_item_type == ServiceType.Command:
|
||||
Receiver().send_message(u'%s_slide'% self.commandItem.name.lower(), [row])
|
||||
if isLive:
|
||||
QtCore.QTimer.singleShot(0.5, self.grabMainDisplay)
|
||||
else:
|
||||
#label = self.PreviewListWidget.cellWidget(row, 0)
|
||||
frame = self.serviceitem.frames[row][u'image']
|
||||
before = time.time()
|
||||
if frame is None:
|
||||
@ -387,7 +412,26 @@ class SlideController(QtGui.QWidget):
|
||||
log.info(u'Slide Rendering took %4s' % (time.time() - before))
|
||||
if self.isLive:
|
||||
self.parent.mainDisplay.frameView(frame)
|
||||
self.row = row
|
||||
|
||||
def onSlideChange(self, row):
|
||||
"""
|
||||
The slide has been changed. Update the slidecontroller accordingly
|
||||
"""
|
||||
self.PreviewListWidget.selectRow(row)
|
||||
QtCore.QTimer.singleShot(0.5, self.grabMainDisplay)
|
||||
|
||||
def grabMainDisplay(self):
|
||||
rm = self.parent.RenderManager
|
||||
if not rm.screen_list[rm.current_display][u'primary']:
|
||||
winid = QtGui.QApplication.desktop().winId()
|
||||
rect = rm.screen_list[rm.current_display][u'size']
|
||||
winimg = QtGui.QPixmap.grabWindow(winid, rect.x(), rect.y(), rect.width(), rect.height())
|
||||
self.SlidePreview.setPixmap(winimg)
|
||||
else:
|
||||
label = self.PreviewListWidget.cellWidget(self.PreviewListWidget.currentRow(), 0)
|
||||
self.SlidePreview.setPixmap(label.pixmap())
|
||||
|
||||
def onSlideSelectedNext(self):
|
||||
"""
|
||||
Go to the next slide.
|
||||
@ -395,6 +439,7 @@ class SlideController(QtGui.QWidget):
|
||||
if self.commandItem is not None and \
|
||||
self.commandItem.service_item_type == ServiceType.Command:
|
||||
Receiver().send_message(u'%s_next'% self.commandItem.name.lower())
|
||||
QtCore.QTimer.singleShot(0.5, self.grabMainDisplay)
|
||||
else:
|
||||
row = self.PreviewListWidget.currentRow() + 1
|
||||
if row == self.PreviewListWidget.rowCount():
|
||||
@ -410,6 +455,7 @@ class SlideController(QtGui.QWidget):
|
||||
self.commandItem.service_item_type == ServiceType.Command:
|
||||
Receiver().send_message(
|
||||
u'%s_previous'% self.commandItem.name.lower())
|
||||
QtCore.QTimer.singleShot(0.5, self.grabMainDisplay)
|
||||
else:
|
||||
row = self.PreviewListWidget.currentRow() - 1
|
||||
if row == -1:
|
||||
@ -424,6 +470,7 @@ class SlideController(QtGui.QWidget):
|
||||
if self.commandItem is not None and \
|
||||
self.commandItem.service_item_type == ServiceType.Command:
|
||||
Receiver().send_message(u'%s_last'% self.commandItem.name.lower())
|
||||
QtCore.QTimer.singleShot(0.5, self.grabMainDisplay)
|
||||
else:
|
||||
self.PreviewListWidget.selectRow(self.PreviewListWidget.rowCount() - 1)
|
||||
self.onSlideSelected()
|
||||
@ -449,6 +496,10 @@ class SlideController(QtGui.QWidget):
|
||||
if event.timerId() == self.timer_id:
|
||||
self.onSlideSelectedNext()
|
||||
|
||||
def onEditSong(self):
|
||||
self.songEdit = True
|
||||
Receiver().send_message(u'edit_song')
|
||||
|
||||
def onGoLive(self):
|
||||
"""
|
||||
If preview copy slide item to live
|
||||
|
@ -23,7 +23,7 @@
|
||||
###############################################################################
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.lib import translate, buildIcon
|
||||
from openlp.core.lib import buildIcon
|
||||
|
||||
class SplashScreen(object):
|
||||
def __init__(self, version):
|
||||
|
@ -32,7 +32,7 @@ from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.ui import AmendThemeForm
|
||||
from openlp.core.theme import Theme
|
||||
from openlp.core.lib import PluginConfig, OpenLPToolbar, ThemeXML, translate, \
|
||||
from openlp.core.lib import PluginConfig, OpenLPToolbar, ThemeXML, \
|
||||
str_to_bool, file_to_xml, buildIcon, Receiver, contextMenuAction, \
|
||||
contextMenuSeparator
|
||||
from openlp.core.utils import ConfigHelper
|
||||
@ -371,7 +371,7 @@ class ThemeManager(QtGui.QWidget):
|
||||
|
||||
newtheme.add_font(unicode(theme.FontName),
|
||||
unicode(theme.FontColor.name()),
|
||||
unicode(theme.FontProportion * 2), u'False')
|
||||
unicode(theme.FontProportion * 3), u'False')
|
||||
newtheme.add_font(unicode(theme.FontName),
|
||||
unicode(theme.FontColor.name()),
|
||||
unicode(12), u'False', u'footer')
|
||||
|
@ -24,7 +24,7 @@
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import SettingsTab, translate, Receiver
|
||||
from openlp.core.lib import SettingsTab, Receiver
|
||||
|
||||
class ThemesTab(SettingsTab):
|
||||
"""
|
||||
|
@ -27,7 +27,7 @@ import logging
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import Plugin, Receiver, translate, str_to_bool, buildIcon
|
||||
from openlp.core.lib import Plugin, Receiver, str_to_bool, buildIcon
|
||||
from openlp.plugins.audit.lib import AuditManager
|
||||
from openlp.plugins.audit.forms import AuditDetailForm, AuditDeleteForm
|
||||
from openlp.plugins.audit.lib.models import AuditItem
|
||||
|
@ -27,8 +27,6 @@ from datetime import date
|
||||
from PyQt4 import QtGui
|
||||
|
||||
from auditdeletedialog import Ui_AuditDeleteDialog
|
||||
from openlp.core.lib import translate
|
||||
#from openlp.plugins.audit.lib import AuditManager
|
||||
|
||||
class AuditDeleteForm(QtGui.QDialog, Ui_AuditDeleteDialog):
|
||||
"""
|
||||
|
@ -26,7 +26,7 @@ import logging
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import Plugin, translate, buildIcon
|
||||
from openlp.core.lib import Plugin, buildIcon
|
||||
from openlp.plugins.bibles.lib import BibleManager, BiblesTab, BibleMediaItem
|
||||
|
||||
class BiblePlugin(Plugin):
|
||||
|
@ -29,8 +29,7 @@ import os.path
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from bibleimportdialog import Ui_BibleImportDialog
|
||||
from openlp.core.lib import Receiver, translate
|
||||
|
||||
from openlp.core.lib import Receiver
|
||||
|
||||
class BibleImportForm(QtGui.QDialog, Ui_BibleImportDialog):
|
||||
global log
|
||||
|
@ -158,6 +158,11 @@ class BibleDBImpl(BibleCommon):
|
||||
def get_bible_text(self, bookname, chapter, sverse, everse):
|
||||
log.debug(u'get_bible_text %s, %s, %s, %s', bookname, chapter, sverse,
|
||||
everse)
|
||||
#Look up book name or abbreviation
|
||||
book = self.get_bible_book(bookname)
|
||||
if book is not None:
|
||||
bookname = book.name
|
||||
log.debug(u'bookname corrected to %s' % bookname)
|
||||
verses = self.session.query(Verse).join(Book).filter(
|
||||
Book.name == bookname).filter(Verse.chapter == chapter).filter(
|
||||
Verse.verse>=sverse).filter(Verse.verse<=everse).order_by(
|
||||
|
@ -30,7 +30,7 @@ import codecs
|
||||
|
||||
from PyQt4 import QtCore
|
||||
|
||||
from openlp.core.lib import translate, Receiver
|
||||
from openlp.core.lib import Receiver
|
||||
|
||||
class BibleOSISImpl():
|
||||
"""
|
||||
|
@ -26,7 +26,7 @@ import logging
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import translate, str_to_bool, Receiver
|
||||
from openlp.core.lib import str_to_bool, Receiver
|
||||
from openlp.core.lib import SettingsTab
|
||||
|
||||
class BiblesTab(SettingsTab):
|
||||
|
@ -25,8 +25,6 @@
|
||||
import logging
|
||||
import os
|
||||
|
||||
from openlp.core.lib import translate
|
||||
|
||||
from bibleOSISimpl import BibleOSISImpl
|
||||
from bibleCSVimpl import BibleCSVImpl
|
||||
from bibleDBimpl import BibleDBImpl
|
||||
|
@ -27,8 +27,8 @@ import time
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import translate, MediaManagerItem, Receiver, \
|
||||
BaseListWithDnD, str_to_bool
|
||||
from openlp.core.lib import MediaManagerItem, Receiver, str_to_bool, \
|
||||
BaseListWithDnD
|
||||
from openlp.plugins.bibles.forms import BibleImportForm
|
||||
from openlp.plugins.bibles.lib.manager import BibleMode
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
||||
###############################################################################
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.lib import translate, buildIcon
|
||||
from openlp.core.lib import buildIcon
|
||||
|
||||
class Ui_customEditDialog(object):
|
||||
def setupUi(self, customEditDialog):
|
||||
|
@ -25,7 +25,7 @@
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from editcustomdialog import Ui_customEditDialog
|
||||
from openlp.core.lib import SongXMLBuilder, SongXMLParser, Receiver, translate
|
||||
from openlp.core.lib import SongXMLBuilder, SongXMLParser, Receiver
|
||||
from openlp.plugins.custom.lib.models import CustomSlide
|
||||
|
||||
class EditCustomForm(QtGui.QDialog, Ui_customEditDialog):
|
||||
|
@ -24,15 +24,15 @@
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import SettingsTab, translate, Receiver
|
||||
from openlp.core.lib import SettingsTab, Receiver
|
||||
|
||||
class ImageTab(SettingsTab):
|
||||
"""
|
||||
ImageTab is the Image settings tab in the settings dialog.
|
||||
"""
|
||||
def __init__(self):
|
||||
#SettingsTab.__init__(self, self.trUtf8(u'Images'), u'Image')
|
||||
SettingsTab.__init__(self, u'Images', u'Image')
|
||||
#SettingsTab.__init__(self, self.trUtf8(u'Images'), u'Images')
|
||||
SettingsTab.__init__(self, u'Images', u'Images')
|
||||
|
||||
def setupUi(self):
|
||||
self.setObjectName(u'ImageTab')
|
||||
|
@ -26,7 +26,7 @@ import logging
|
||||
import os
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.lib import MediaManagerItem, BaseListWithDnD, buildIcon, translate
|
||||
from openlp.core.lib import MediaManagerItem, BaseListWithDnD, buildIcon
|
||||
|
||||
# We have to explicitly create separate classes for each plugin
|
||||
# in order for DnD to the Service manager to work correctly.
|
||||
|
@ -24,7 +24,7 @@
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import SettingsTab, str_to_bool, translate
|
||||
from openlp.core.lib import SettingsTab, str_to_bool
|
||||
|
||||
class MediaTab(SettingsTab):
|
||||
"""
|
||||
|
@ -28,6 +28,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
import logging
|
||||
import os
|
||||
import time
|
||||
|
||||
if os.name == u'nt':
|
||||
from win32com.client import Dispatch
|
||||
@ -85,7 +86,7 @@ class ImpressController(PresentationController):
|
||||
self.manager._FlagAsMethod(u'Bridge_GetValueObject')
|
||||
else:
|
||||
# -headless
|
||||
cmd = u'openoffice.org -nologo -norestore -minimized -invisible ' + u'"' + u'-accept=socket,host=localhost,port=2002;urp;'+ u'"'
|
||||
cmd = u'openoffice.org -nologo -norestore -minimized -invisible -nofirststartwizard -accept="socket,host=localhost,port=2002;urp;"'
|
||||
self.process = QtCore.QProcess()
|
||||
self.process.startDetached(cmd)
|
||||
self.process.waitForStarted()
|
||||
@ -96,6 +97,12 @@ class ImpressController(PresentationController):
|
||||
"""
|
||||
log.debug(u'Kill')
|
||||
self.close_presentation()
|
||||
if os.name != u'nt':
|
||||
desktop = self.get_uno_desktop()
|
||||
try:
|
||||
desktop.terminate()
|
||||
except:
|
||||
pass
|
||||
|
||||
def load_presentation(self, presentation):
|
||||
"""
|
||||
@ -121,18 +128,19 @@ class ImpressController(PresentationController):
|
||||
url = uno.systemPathToFileUrl(presentation)
|
||||
if desktop is None:
|
||||
return
|
||||
self.desktop = desktop
|
||||
properties = []
|
||||
properties.append(self.create_property(u'Minimized', True))
|
||||
properties = tuple(properties)
|
||||
try:
|
||||
self.desktop = desktop
|
||||
properties = []
|
||||
properties = tuple(properties)
|
||||
self.document = desktop.loadComponentFromURL(url, u'_blank',
|
||||
0, properties)
|
||||
self.presentation = self.document.getPresentation()
|
||||
self.presentation.Display = self.plugin.render_manager.current_display + 1
|
||||
self.controller = None
|
||||
except:
|
||||
log.exception(u'Failed to load presentation')
|
||||
return
|
||||
self.presentation = self.document.getPresentation()
|
||||
self.presentation.Display = self.plugin.render_manager.current_display + 1
|
||||
self.controller = None
|
||||
self.create_thumbnails()
|
||||
|
||||
def create_thumbnails(self):
|
||||
@ -148,13 +156,7 @@ class ImpressController(PresentationController):
|
||||
else:
|
||||
thumbdir = uno.systemPathToFileUrl(self.thumbnailpath)
|
||||
props = []
|
||||
if os.name == u'nt':
|
||||
prop = self.manager.Bridge_GetStruct(u'com.sun.star.beans.PropertyValue')
|
||||
else:
|
||||
prop = PropertyValue()
|
||||
prop.Name = u'FilterName'
|
||||
prop.Value = u'impress_png_Export'
|
||||
props.append(prop)
|
||||
props.append(self.create_property(u'FilterName', u'impress_png_Export'))
|
||||
props = tuple(props)
|
||||
doc = self.document
|
||||
pages = doc.getDrawPages()
|
||||
@ -164,6 +166,15 @@ class ImpressController(PresentationController):
|
||||
doc.storeToURL(thumbdir + u'/' + self.thumbnailprefix +
|
||||
unicode(idx+1) + u'.png', props)
|
||||
|
||||
def create_property(self, name, value):
|
||||
if os.name == u'nt':
|
||||
prop = self.manager.Bridge_GetStruct(u'com.sun.star.beans.PropertyValue')
|
||||
else:
|
||||
prop = PropertyValue()
|
||||
prop.Name = name
|
||||
prop.Value = value
|
||||
return prop
|
||||
|
||||
def get_uno_desktop(self):
|
||||
log.debug(u'getUNODesktop')
|
||||
ctx = None
|
||||
@ -245,6 +256,11 @@ class ImpressController(PresentationController):
|
||||
def start_presentation(self):
|
||||
if self.controller is None or not self.controller.isRunning():
|
||||
self.presentation.start()
|
||||
# start() returns before the getCurrentComponent is ready. Try for 5 seconds
|
||||
i = 1
|
||||
while self.desktop.getCurrentComponent() is None and i < 50:
|
||||
time.sleep(0.1)
|
||||
i = i + 1
|
||||
self.controller = self.desktop.getCurrentComponent().Presentation.getController()
|
||||
else:
|
||||
self.controller.activate()
|
||||
|
@ -27,7 +27,7 @@ import os
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import MediaManagerItem, translate, BaseListWithDnD
|
||||
from openlp.core.lib import MediaManagerItem, BaseListWithDnD
|
||||
from openlp.plugins.presentations.lib import MessageListener
|
||||
|
||||
# We have to explicitly create separate classes for each plugin
|
||||
|
@ -68,6 +68,7 @@ class MessageListener(object):
|
||||
self.controller.load_presentation(file)
|
||||
self.controller.start_presentation()
|
||||
self.controller.slidenumber = 0
|
||||
self.controller.timer.start()
|
||||
|
||||
def activate(self):
|
||||
if self.controller.is_active():
|
||||
@ -82,7 +83,7 @@ class MessageListener(object):
|
||||
self.activate()
|
||||
if message is not None:
|
||||
self.controller.goto_slide(message[0]+1)
|
||||
self.controller.slidenumber = self.controller.get_slide_number()
|
||||
self.controller.poll_slidenumber()
|
||||
|
||||
def first(self, message):
|
||||
"""
|
||||
@ -90,7 +91,7 @@ class MessageListener(object):
|
||||
"""
|
||||
self.activate()
|
||||
self.controller.start_presentation()
|
||||
self.controller.slidenumber = self.controller.get_slide_number()
|
||||
self.controller.poll_slidenumber()
|
||||
|
||||
def last(self, message):
|
||||
"""
|
||||
@ -98,7 +99,7 @@ class MessageListener(object):
|
||||
"""
|
||||
self.activate()
|
||||
self.controller.goto_slide(self.controller.get_slide_count())
|
||||
self.controller.slidenumber = self.controller.get_slide_number()
|
||||
self.controller.poll_slidenumber()
|
||||
|
||||
def next(self, message):
|
||||
"""
|
||||
@ -106,7 +107,7 @@ class MessageListener(object):
|
||||
"""
|
||||
self.activate()
|
||||
self.controller.next_step()
|
||||
self.controller.slidenumber = self.controller.get_slide_number()
|
||||
self.controller.poll_slidenumber()
|
||||
|
||||
def previous(self, message):
|
||||
"""
|
||||
@ -114,7 +115,7 @@ class MessageListener(object):
|
||||
"""
|
||||
self.activate()
|
||||
self.controller.previous_step()
|
||||
self.controller.slidenumber = self.controller.get_slide_number()
|
||||
self.controller.poll_slidenumber()
|
||||
|
||||
def shutdown(self, message):
|
||||
"""
|
||||
@ -122,6 +123,7 @@ class MessageListener(object):
|
||||
"""
|
||||
self.controller.close_presentation()
|
||||
self.controller.slidenumber = 0
|
||||
self.controller.timer.shutdown()
|
||||
|
||||
def blank(self):
|
||||
if not self.controller.is_loaded():
|
||||
|
@ -24,6 +24,8 @@ import shutil
|
||||
|
||||
from PyQt4 import QtCore
|
||||
|
||||
from openlp.core.lib import Receiver
|
||||
|
||||
class PresentationController(object):
|
||||
"""
|
||||
Base class for presentation controllers to inherit from
|
||||
@ -143,6 +145,9 @@ class PresentationController(object):
|
||||
self.thumbnailprefix = u'slide'
|
||||
if not os.path.isdir(self.thumbnailroot):
|
||||
os.makedirs(self.thumbnailroot)
|
||||
self.timer = QtCore.QTimer()
|
||||
self.timer.setInterval(500)
|
||||
QtCore.QObject.connect(self.timer, QtCore.SIGNAL("timeout()"), self.poll_slidenumber)
|
||||
|
||||
def check_available(self):
|
||||
"""
|
||||
@ -291,3 +296,16 @@ class PresentationController(object):
|
||||
The slide an image is required for, starting at 1
|
||||
"""
|
||||
return None
|
||||
|
||||
def poll_slidenumber(self):
|
||||
"""
|
||||
Check the current slide number
|
||||
"""
|
||||
if not self.is_active():
|
||||
return
|
||||
current = self.get_slide_number()
|
||||
if current == self.slidenumber:
|
||||
return
|
||||
self.slidenumber = current
|
||||
Receiver().send_message(u'slidecontroller_change', self.slidenumber - 1)
|
||||
|
@ -24,7 +24,7 @@
|
||||
|
||||
from PyQt4 import QtGui
|
||||
|
||||
from openlp.core.lib import SettingsTab, translate
|
||||
from openlp.core.lib import SettingsTab
|
||||
|
||||
class PresentationTab(SettingsTab):
|
||||
"""
|
||||
|
@ -20,7 +20,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
from PyQt4 import QtGui
|
||||
|
||||
from openlp.core.lib import SettingsTab, translate
|
||||
from openlp.core.lib import SettingsTab
|
||||
|
||||
class RemoteTab(SettingsTab):
|
||||
"""
|
||||
|
@ -23,7 +23,6 @@
|
||||
###############################################################################
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.lib import translate
|
||||
|
||||
class Ui_AuthorsDialog(object):
|
||||
def setupUi(self, AuthorsDialog):
|
||||
|
@ -23,7 +23,7 @@
|
||||
###############################################################################
|
||||
|
||||
from PyQt4 import QtGui, QtCore
|
||||
from openlp.core.lib import translate
|
||||
|
||||
from openlp.plugins.songs.forms.authorsdialog import Ui_AuthorsDialog
|
||||
|
||||
class AuthorsForm(QtGui.QDialog, Ui_AuthorsDialog):
|
||||
|
@ -24,7 +24,7 @@
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import translate, buildIcon
|
||||
from openlp.core.lib import buildIcon
|
||||
|
||||
class Ui_EditSongDialog(object):
|
||||
def setupUi(self, EditSongDialog):
|
||||
|
@ -26,7 +26,7 @@ import logging
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import SongXMLBuilder, SongXMLParser, Receiver, translate
|
||||
from openlp.core.lib import SongXMLBuilder, SongXMLParser, Receiver
|
||||
from openlp.plugins.songs.forms import EditVerseForm
|
||||
from openlp.plugins.songs.lib.models import Song
|
||||
from editsongdialog import Ui_EditSongDialog
|
||||
@ -410,6 +410,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
||||
self.songmanager.save_song(self.song)
|
||||
if self.title_change:
|
||||
Receiver().send_message(u'load_song_list')
|
||||
Receiver().send_message(u'preview_song')
|
||||
self.close()
|
||||
|
||||
def processLyrics(self):
|
||||
|
@ -23,7 +23,6 @@
|
||||
###############################################################################
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.lib import translate
|
||||
|
||||
class Ui_EditVerseDialog(object):
|
||||
def setupUi(self, EditVerseDialog):
|
||||
|
@ -22,7 +22,8 @@
|
||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
###############################################################################
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from PyQt4 import QtGui
|
||||
|
||||
from openlp.plugins.songs.forms.openlpexportdialog import Ui_OpenLPExportDialog
|
||||
|
||||
class OpenLPExportForm(QtGui.QDialog, Ui_OpenLPExportDialog):
|
||||
|
@ -22,7 +22,7 @@
|
||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
###############################################################################
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from PyQt4 import QtGui
|
||||
from openlp.plugins.songs.forms.openlpimportdialog import Ui_OpenLPImportDialog
|
||||
|
||||
class OpenLPImportForm(QtGui.QDialog, Ui_OpenLPImportDialog):
|
||||
@ -30,4 +30,3 @@ class OpenLPImportForm(QtGui.QDialog, Ui_OpenLPImportDialog):
|
||||
def __init__(self, parent=None):
|
||||
QtGui.QDialog.__init__(self, parent)
|
||||
self.setupUi(self)
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
###############################################################################
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from PyQt4 import QtGui
|
||||
from openlp.plugins.songs.forms.opensongexportdialog import Ui_OpenSongExportDialog
|
||||
|
||||
class OpenSongExportForm(QtGui.QDialog, Ui_OpenSongExportDialog):
|
||||
|
@ -22,7 +22,7 @@
|
||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
###############################################################################
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from PyQt4 import QtGui
|
||||
from openlp.plugins.songs.forms.opensongimportdialog import Ui_OpenSongImportDialog
|
||||
|
||||
class OpenSongImportForm(QtGui.QDialog, Ui_OpenSongImportDialog):
|
||||
|
@ -23,7 +23,6 @@
|
||||
###############################################################################
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.lib import translate
|
||||
|
||||
class Ui_SongBookDialog(object):
|
||||
def setupUi(self, SongBookDialog):
|
||||
|
@ -24,7 +24,6 @@
|
||||
|
||||
from PyQt4 import QtGui
|
||||
|
||||
from openlp.core.lib import translate
|
||||
from openlp.plugins.songs.forms.songbookdialog import Ui_SongBookDialog
|
||||
|
||||
class SongBookForm(QtGui.QDialog, Ui_SongBookDialog):
|
||||
|
@ -24,7 +24,7 @@
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import translate, buildIcon
|
||||
from openlp.core.lib import buildIcon
|
||||
|
||||
class Ui_SongMaintenanceDialog(object):
|
||||
def setupUi(self, SongMaintenanceDialog):
|
||||
|
@ -18,7 +18,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
"""
|
||||
|
||||
from PyQt4 import QtGui, QtCore
|
||||
from openlp.core.lib import translate
|
||||
|
||||
from openlp.plugins.songs.lib.classes import Author, Book, Topic
|
||||
from songmaintenancedialog import Ui_SongMaintenanceDialog
|
||||
from authorsform import AuthorsForm
|
||||
|
@ -23,7 +23,6 @@
|
||||
###############################################################################
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.lib import translate
|
||||
|
||||
class Ui_TopicsDialog(object):
|
||||
def setupUi(self, TopicsDialog):
|
||||
|
@ -24,7 +24,6 @@
|
||||
|
||||
from PyQt4 import QtGui
|
||||
|
||||
from openlp.core.lib import translate
|
||||
from openlp.plugins.songs.forms.topicsdialog import Ui_TopicsDialog
|
||||
|
||||
class TopicsForm(QtGui.QDialog, Ui_TopicsDialog):
|
||||
|
@ -26,7 +26,7 @@ import logging
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import MediaManagerItem, translate, SongXMLParser, \
|
||||
from openlp.core.lib import MediaManagerItem, SongXMLParser, \
|
||||
BaseListWithDnD, Receiver, str_to_bool
|
||||
from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm
|
||||
|
||||
@ -55,6 +55,7 @@ class SongMediaItem(MediaManagerItem):
|
||||
self.edit_song_form = EditSongForm(self.parent.songmanager, self)
|
||||
self.song_maintenance_form = SongMaintenanceForm(
|
||||
self.parent.songmanager, self)
|
||||
self.fromPreview = None
|
||||
|
||||
def requiredIcons(self):
|
||||
MediaManagerItem.requiredIcons(self)
|
||||
@ -121,6 +122,10 @@ class SongMediaItem(MediaManagerItem):
|
||||
QtCore.SIGNAL(u'load_song_list'), self.onSearchTextButtonClick)
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'config_updated'), self.configUpdated)
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'edit_song'), self.onEventEditSong)
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'preview_song'), self.onPreviewClick)
|
||||
|
||||
def configUpdated(self):
|
||||
self.searchAsYouType = str_to_bool(
|
||||
@ -168,19 +173,22 @@ class SongMediaItem(MediaManagerItem):
|
||||
if author_list != u'':
|
||||
author_list = author_list + u', '
|
||||
author_list = author_list + author.display_name
|
||||
song_detail = unicode(u'%s (%s)' % \
|
||||
(unicode(song.title), unicode(author_list)))
|
||||
song_detail = unicode(self.trUtf8(u'%s (%s)' % \
|
||||
(unicode(song.title), unicode(author_list))))
|
||||
song_name = QtGui.QListWidgetItem(song_detail)
|
||||
song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id))
|
||||
self.ListView.addItem(song_name)
|
||||
if song.id == self.fromPreview:
|
||||
self.fromPreview = 0
|
||||
self.ListView.setCurrentItem(song_name)
|
||||
|
||||
def displayResultsAuthor(self, searchresults):
|
||||
log.debug(u'display results Author')
|
||||
self.ListView.clear()
|
||||
for author in searchresults:
|
||||
for song in author.songs:
|
||||
song_detail = unicode(u'%s (%s)' % \
|
||||
(unicode(author.display_name), unicode(song.title)))
|
||||
song_detail = unicode(self.trUtf8(u'%s (%s)' % \
|
||||
(unicode(author.display_name), unicode(song.title))))
|
||||
song_name = QtGui.QListWidgetItem(song_detail)
|
||||
song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id))
|
||||
self.ListView.addItem(song_name)
|
||||
@ -218,13 +226,19 @@ class SongMediaItem(MediaManagerItem):
|
||||
def onSongMaintenanceClick(self):
|
||||
self.song_maintenance_form.exec_()
|
||||
|
||||
def onEditClick(self):
|
||||
def onEditClick(self, preview=False):
|
||||
item = self.ListView.currentItem()
|
||||
if item is not None:
|
||||
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
|
||||
self.fromPreview = 0
|
||||
if preview:
|
||||
self.fromPreview = item_id
|
||||
self.edit_song_form.loadSong(item_id)
|
||||
self.edit_song_form.exec_()
|
||||
|
||||
def onEventEditSong (self):
|
||||
self.onEditClick(True)
|
||||
|
||||
def onDeleteClick(self):
|
||||
item = self.ListView.currentItem()
|
||||
if item is not None:
|
||||
|
@ -24,7 +24,7 @@
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import SettingsTab, str_to_bool, translate
|
||||
from openlp.core.lib import SettingsTab, str_to_bool
|
||||
|
||||
class SongsTab(SettingsTab):
|
||||
"""
|
||||
|
@ -26,7 +26,7 @@ import logging
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import Plugin, translate, buildIcon
|
||||
from openlp.core.lib import Plugin, buildIcon
|
||||
from openlp.plugins.songs.lib import SongManager, SongMediaItem, SongsTab
|
||||
from openlp.plugins.songs.forms import OpenLPImportForm, OpenSongExportForm, \
|
||||
OpenSongImportForm, OpenLPExportForm
|
||||
|
@ -28,8 +28,7 @@ import logging
|
||||
import time
|
||||
import subprocess
|
||||
import codecs
|
||||
import sys
|
||||
from datetime import date
|
||||
|
||||
if os.name == u'nt':
|
||||
import win32api
|
||||
import win32con
|
||||
|
Loading…
Reference in New Issue
Block a user