forked from openlp/openlp
commit
8df57d5bad
27
openlp.pyw
27
openlp.pyw
|
@ -20,7 +20,8 @@ Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import logging
|
import logging, logging.handlers
|
||||||
|
from optparse import OptionParser
|
||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
|
@ -28,9 +29,15 @@ from openlp.core.lib import Receiver
|
||||||
from openlp.core.resources import *
|
from openlp.core.resources import *
|
||||||
from openlp.core.ui import MainWindow, SplashScreen
|
from openlp.core.ui import MainWindow, SplashScreen
|
||||||
|
|
||||||
logging.basicConfig(level=logging.DEBUG,
|
filename=u'openlp.log'
|
||||||
format=u'%(asctime)s:%(msecs)3d %(name)-15s %(levelname)-8s %(message)s',
|
log = logging.getLogger()
|
||||||
datefmt=u'%m-%d %H:%M:%S', filename=u'openlp.log', filemode=u'w')
|
log.setLevel(logging.INFO)
|
||||||
|
|
||||||
|
logfile = logging.handlers.RotatingFileHandler(filename ,maxBytes=200000, backupCount=5)
|
||||||
|
logfile.setLevel(logging.DEBUG)
|
||||||
|
logfile.setFormatter(logging.Formatter(u'%(asctime)s %(name)-15s %(levelname)-8s %(message)s'))
|
||||||
|
|
||||||
|
log.addHandler(logfile)
|
||||||
|
|
||||||
class OpenLP(QtGui.QApplication):
|
class OpenLP(QtGui.QApplication):
|
||||||
"""
|
"""
|
||||||
|
@ -38,8 +45,7 @@ class OpenLP(QtGui.QApplication):
|
||||||
class in order to provide the core of the application.
|
class in order to provide the core of the application.
|
||||||
"""
|
"""
|
||||||
global log
|
global log
|
||||||
log = logging.getLogger(u'OpenLP Application')
|
log.info(u'OpenLP Application Loaded')
|
||||||
log.info(u'Application Loaded')
|
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
"""
|
"""
|
||||||
|
@ -74,10 +80,19 @@ class OpenLP(QtGui.QApplication):
|
||||||
self.splash.finish(self.mainWindow)
|
self.splash.finish(self.mainWindow)
|
||||||
sys.exit(app.exec_())
|
sys.exit(app.exec_())
|
||||||
|
|
||||||
|
def main():
|
||||||
|
usage = "usage: %prog [options] arg1 arg2"
|
||||||
|
parser = OptionParser(usage=usage)
|
||||||
|
parser.add_option("-d", "--debug",dest="debug",action="store_true",
|
||||||
|
help="Switch on Debugging ")
|
||||||
|
(options, args) = parser.parse_args()
|
||||||
|
if options.debug is not None:
|
||||||
|
log.setLevel(logging.DEBUG)
|
||||||
if __name__ == u'__main__':
|
if __name__ == u'__main__':
|
||||||
"""
|
"""
|
||||||
Instantiate and run the application.
|
Instantiate and run the application.
|
||||||
"""
|
"""
|
||||||
|
main()
|
||||||
app = OpenLP(sys.argv)
|
app = OpenLP(sys.argv)
|
||||||
#import cProfile
|
#import cProfile
|
||||||
#cProfile.run("app.run()", "profile.out")
|
#cProfile.run("app.run()", "profile.out")
|
||||||
|
|
|
@ -234,16 +234,19 @@ class MediaManagerItem(QtGui.QWidget):
|
||||||
def onPreviewClick(self):
|
def onPreviewClick(self):
|
||||||
log.debug(self.PluginTextShort+u' Preview Requested')
|
log.debug(self.PluginTextShort+u' Preview Requested')
|
||||||
service_item = self.buildServiceItem()
|
service_item = self.buildServiceItem()
|
||||||
|
if service_item is not None:
|
||||||
self.parent.preview_controller.addServiceItem(service_item)
|
self.parent.preview_controller.addServiceItem(service_item)
|
||||||
|
|
||||||
def onLiveClick(self):
|
def onLiveClick(self):
|
||||||
log.debug(self.PluginTextShort + u' Live Requested')
|
log.debug(self.PluginTextShort + u' Live Requested')
|
||||||
service_item = self.buildServiceItem()
|
service_item = self.buildServiceItem()
|
||||||
|
if service_item is not None:
|
||||||
self.parent.live_controller.addServiceItem(service_item)
|
self.parent.live_controller.addServiceItem(service_item)
|
||||||
|
|
||||||
def onAddClick(self):
|
def onAddClick(self):
|
||||||
log.debug(self.PluginTextShort+u' Add Requested')
|
log.debug(self.PluginTextShort+u' Add Requested')
|
||||||
service_item = self.buildServiceItem()
|
service_item = self.buildServiceItem()
|
||||||
|
if service_item is not None:
|
||||||
self.parent.service_manager.addServiceItem(service_item)
|
self.parent.service_manager.addServiceItem(service_item)
|
||||||
|
|
||||||
def buildServiceItem(self):
|
def buildServiceItem(self):
|
||||||
|
@ -252,6 +255,8 @@ class MediaManagerItem(QtGui.QWidget):
|
||||||
"""
|
"""
|
||||||
service_item = ServiceItem(self.parent)
|
service_item = ServiceItem(self.parent)
|
||||||
service_item.addIcon(u':/media/media_'+self.PluginTextShort.lower()+u'.png')
|
service_item.addIcon(u':/media/media_'+self.PluginTextShort.lower()+u'.png')
|
||||||
self.generateSlideData(service_item)
|
if self.generateSlideData(service_item):
|
||||||
self.ListView.clearSelection()
|
self.ListView.clearSelection()
|
||||||
return service_item
|
return service_item
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
|
@ -147,7 +147,8 @@ class Renderer(object):
|
||||||
# print words
|
# print words
|
||||||
verses = []
|
verses = []
|
||||||
words = words.replace(u'\r\n', u'\n')
|
words = words.replace(u'\r\n', u'\n')
|
||||||
verses_text = words.split(u'\n\n')
|
verses_text = words.split(u'\n')
|
||||||
|
#print verses_text
|
||||||
text = []
|
text = []
|
||||||
for verse in verses_text:
|
for verse in verses_text:
|
||||||
lines = verse.split(u'\n')
|
lines = verse.split(u'\n')
|
||||||
|
@ -174,6 +175,9 @@ class Renderer(object):
|
||||||
count = 0
|
count = 0
|
||||||
for line in text:
|
for line in text:
|
||||||
#print "C", line , len(line)
|
#print "C", line , len(line)
|
||||||
|
#Must be a blank line so keep it.
|
||||||
|
if len(line) == 0:
|
||||||
|
line = u' '
|
||||||
while len(line) > 0:
|
while len(line) > 0:
|
||||||
# print "C1", line , len(line)
|
# print "C1", line , len(line)
|
||||||
if len(line) > ave_line_width:
|
if len(line) > ave_line_width:
|
||||||
|
@ -391,29 +395,8 @@ class Renderer(object):
|
||||||
Defaults to *False*. Whether or not this is a live screen.
|
Defaults to *False*. Whether or not this is a live screen.
|
||||||
"""
|
"""
|
||||||
x, y = tlcorner
|
x, y = tlcorner
|
||||||
# We draw the text to see how big it is and then iterate to make it fit
|
|
||||||
# when we line wrap we do in in the "lyrics" style, so the second line is
|
|
||||||
# right aligned with a "hanging indent"
|
|
||||||
#print "----------------------------"
|
|
||||||
#print line
|
|
||||||
# words = line.split(u' ')
|
|
||||||
# thisline = u' '.join(words)
|
|
||||||
# lastword = len(words)
|
|
||||||
# lines = []
|
|
||||||
maxx = self._rect.width();
|
maxx = self._rect.width();
|
||||||
maxy = self._rect.height();
|
maxy = self._rect.height();
|
||||||
# while (len(words) > 0):
|
|
||||||
# w , h = self._get_extent_and_render(thisline, footer)
|
|
||||||
# print "m", w, h, x, maxx
|
|
||||||
# rhs = w + x
|
|
||||||
# if rhs < maxx - self._right_margin:
|
|
||||||
# lines.append(thisline)
|
|
||||||
# words = words[lastword:]
|
|
||||||
# thisline = ' '.join(words)
|
|
||||||
# lastword = len(words)
|
|
||||||
# else:
|
|
||||||
# lastword -= 1
|
|
||||||
# thisline = ' '.join(words[:lastword])
|
|
||||||
lines = []
|
lines = []
|
||||||
lines.append(line)
|
lines.append(line)
|
||||||
startx = x
|
startx = x
|
||||||
|
|
|
@ -58,7 +58,7 @@ class RenderManager(object):
|
||||||
else:
|
else:
|
||||||
self.current_display = screen_number
|
self.current_display = screen_number
|
||||||
self.renderer = Renderer()
|
self.renderer = Renderer()
|
||||||
self.calculate_default(self.screen_list[self.current_display][u'size'])
|
#self.calculate_default(self.screen_list[self.current_display][u'size'])
|
||||||
self.theme = u''
|
self.theme = u''
|
||||||
self.service_theme = u''
|
self.service_theme = u''
|
||||||
self.global_style = u''
|
self.global_style = u''
|
||||||
|
@ -133,6 +133,7 @@ class RenderManager(object):
|
||||||
def build_text_rectangle(self, theme):
|
def build_text_rectangle(self, theme):
|
||||||
"""
|
"""
|
||||||
Builds a text block using the settings in ``theme``.
|
Builds a text block using the settings in ``theme``.
|
||||||
|
One is needed per slide
|
||||||
|
|
||||||
``theme``
|
``theme``
|
||||||
The theme to build a text block for.
|
The theme to build a text block for.
|
||||||
|
@ -178,15 +179,15 @@ class RenderManager(object):
|
||||||
|
|
||||||
def format_slide(self, words):
|
def format_slide(self, words):
|
||||||
"""
|
"""
|
||||||
Calculate how much text can fid on a slide.
|
Calculate how much text can fit on a slide.
|
||||||
|
|
||||||
``words``
|
``words``
|
||||||
The words to go on the slides.
|
The words to go on the slides.
|
||||||
"""
|
"""
|
||||||
log.debug(u'format slide')
|
log.debug(u'format slide')
|
||||||
self.calculate_default(self.screen_list[self.current_display][u'size'])
|
#self.calculate_default(self.screen_list[self.current_display][u'size'])
|
||||||
self.build_text_rectangle(self.themedata)
|
self.build_text_rectangle(self.themedata)
|
||||||
self.renderer.set_frame_dest(self.width, self.height)
|
#self.renderer.set_frame_dest(self.width, self.height)
|
||||||
return self.renderer.format_slide(words, False)
|
return self.renderer.format_slide(words, False)
|
||||||
|
|
||||||
def generate_slide(self, main_text, footer_text):
|
def generate_slide(self, main_text, footer_text):
|
||||||
|
@ -200,7 +201,6 @@ class RenderManager(object):
|
||||||
The text for the slide footer.
|
The text for the slide footer.
|
||||||
"""
|
"""
|
||||||
log.debug(u'generate slide')
|
log.debug(u'generate slide')
|
||||||
self.calculate_default(self.screen_list[self.current_display][u'size'])
|
|
||||||
self.build_text_rectangle(self.themedata)
|
self.build_text_rectangle(self.themedata)
|
||||||
self.renderer.set_frame_dest(self.width, self.height)
|
self.renderer.set_frame_dest(self.width, self.height)
|
||||||
return self.renderer.generate_frame_from_lines(main_text, footer_text)
|
return self.renderer.generate_frame_from_lines(main_text, footer_text)
|
||||||
|
@ -233,6 +233,7 @@ class RenderManager(object):
|
||||||
The QWidget instance of the screen.
|
The QWidget instance of the screen.
|
||||||
"""
|
"""
|
||||||
log.debug(u'calculate default %s', screen)
|
log.debug(u'calculate default %s', screen)
|
||||||
|
#size fixed so reflects the preview size.
|
||||||
if self.current_display == 0:
|
if self.current_display == 0:
|
||||||
self.width = 1024
|
self.width = 1024
|
||||||
self.height = 768
|
self.height = 768
|
||||||
|
|
|
@ -96,7 +96,6 @@ class ServiceItem(object):
|
||||||
self.frames.append({u'title': slide[u'title'], u'image': frame})
|
self.frames.append({u'title': slide[u'title'], u'image': frame})
|
||||||
elif self.service_item_type == ServiceType.Command:
|
elif self.service_item_type == ServiceType.Command:
|
||||||
self.frames = self.service_frames
|
self.frames = self.service_frames
|
||||||
self.service_frames = []
|
|
||||||
elif self.service_item_type == ServiceType.Image:
|
elif self.service_item_type == ServiceType.Image:
|
||||||
for slide in self.service_frames:
|
for slide in self.service_frames:
|
||||||
slide[u'image'] = self.RenderManager.resize_image(slide[u'image'])
|
slide[u'image'] = self.RenderManager.resize_image(slide[u'image'])
|
||||||
|
@ -135,7 +134,7 @@ class ServiceItem(object):
|
||||||
frame_title = frame_title.split(u'\n')[0]
|
frame_title = frame_title.split(u'\n')[0]
|
||||||
self.service_frames.append({u'title': frame_title, u'raw_slide': raw_slide})
|
self.service_frames.append({u'title': frame_title, u'raw_slide': raw_slide})
|
||||||
|
|
||||||
def add_from_command(self, frame_title, command):
|
def add_from_command(self, path , frame_title):
|
||||||
"""
|
"""
|
||||||
Add a slide from a command.
|
Add a slide from a command.
|
||||||
|
|
||||||
|
@ -146,7 +145,8 @@ class ServiceItem(object):
|
||||||
The command of/for the slide.
|
The command of/for the slide.
|
||||||
"""
|
"""
|
||||||
self.service_item_type = ServiceType.Command
|
self.service_item_type = ServiceType.Command
|
||||||
self.service_frames.append({u'title': frame_title, u'command': command})
|
self.service_item_path = path
|
||||||
|
self.service_frames.append({u'title': frame_title, u'command': None})
|
||||||
|
|
||||||
def get_oos_repr(self):
|
def get_oos_repr(self):
|
||||||
"""
|
"""
|
||||||
|
@ -168,6 +168,9 @@ class ServiceItem(object):
|
||||||
elif self.service_item_type == ServiceType.Image:
|
elif self.service_item_type == ServiceType.Image:
|
||||||
for slide in self.service_frames:
|
for slide in self.service_frames:
|
||||||
oos_data.append(slide[u'title'])
|
oos_data.append(slide[u'title'])
|
||||||
|
elif self.service_item_type == ServiceType.Command:
|
||||||
|
for slide in self.service_frames:
|
||||||
|
oos_data.append(slide[u'title'])
|
||||||
return {u'header': oos_header, u'data': oos_data}
|
return {u'header': oos_header, u'data': oos_data}
|
||||||
|
|
||||||
def set_from_oos(self, serviceitem, path=None):
|
def set_from_oos(self, serviceitem, path=None):
|
||||||
|
@ -196,3 +199,7 @@ class ServiceItem(object):
|
||||||
filename = os.path.join(path, text_image)
|
filename = os.path.join(path, text_image)
|
||||||
real_image = QtGui.QImage(unicode(filename))
|
real_image = QtGui.QImage(unicode(filename))
|
||||||
self.add_from_image(path, text_image, real_image)
|
self.add_from_image(path, text_image, real_image)
|
||||||
|
elif self.service_item_type == ServiceType.Command:
|
||||||
|
for text_image in serviceitem[u'serviceitem'][u'data']:
|
||||||
|
filename = os.path.join(path, text_image)
|
||||||
|
self.add_from_command(path, text_image)
|
||||||
|
|
|
@ -510,6 +510,21 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||||
self.VerticalComboBox.setCurrentIndex(int(self.theme.display_verticalAlign))
|
self.VerticalComboBox.setCurrentIndex(int(self.theme.display_verticalAlign))
|
||||||
|
|
||||||
def stateChanging(self, theme):
|
def stateChanging(self, theme):
|
||||||
|
if theme.background_mode == u'transparent':
|
||||||
|
self.Color1Label.setVisible(False)
|
||||||
|
self.Color1PushButton.setVisible(False)
|
||||||
|
self.Color2Label.setVisible(False)
|
||||||
|
self.Color2PushButton.setVisible(False)
|
||||||
|
self.ImageLabel.setVisible(False)
|
||||||
|
self.ImageLineEdit.setVisible(False)
|
||||||
|
self.ImageFilenameWidget.setVisible(False)
|
||||||
|
self.GradientLabel.setVisible(False)
|
||||||
|
self.GradientComboBox.setVisible(False)
|
||||||
|
self.BackgroundTypeComboBox.setVisible(False)
|
||||||
|
self.BackgroundTypeLabel.setVisible(False)
|
||||||
|
else:
|
||||||
|
self.BackgroundTypeComboBox.setVisible(True)
|
||||||
|
self.BackgroundTypeLabel.setVisible(True)
|
||||||
if theme.background_type == u'solid':
|
if theme.background_type == u'solid':
|
||||||
self.Color1PushButton.setStyleSheet(
|
self.Color1PushButton.setStyleSheet(
|
||||||
u'background-color: %s' % unicode(theme.background_color))
|
u'background-color: %s' % unicode(theme.background_color))
|
||||||
|
|
|
@ -25,7 +25,7 @@ import shutil
|
||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
from openlp.core.lib import PluginConfig, OpenLPToolbar, ServiceItem, \
|
from openlp.core.lib import PluginConfig, OpenLPToolbar, ServiceItem, \
|
||||||
RenderManager, translate, buildIcon, \
|
RenderManager, translate, buildIcon, ServiceType, \
|
||||||
contextMenuAction, contextMenuSeparator, Receiver
|
contextMenuAction, contextMenuSeparator, Receiver
|
||||||
from openlp.core.utils import ConfigHelper
|
from openlp.core.utils import ConfigHelper
|
||||||
|
|
||||||
|
@ -341,7 +341,8 @@ class ServiceManager(QtGui.QWidget):
|
||||||
zip = zipfile.ZipFile(unicode(filename) + u'.oos', 'w')
|
zip = zipfile.ZipFile(unicode(filename) + u'.oos', 'w')
|
||||||
for item in self.serviceItems:
|
for item in self.serviceItems:
|
||||||
service.append({u'serviceitem':item[u'data'].get_oos_repr()})
|
service.append({u'serviceitem':item[u'data'].get_oos_repr()})
|
||||||
if item[u'data'].service_item_type == u'image':
|
if item[u'data'].service_item_type == ServiceType.Image or \
|
||||||
|
item[u'data'].service_item_type == ServiceType.Command:
|
||||||
for frame in item[u'data'].frames:
|
for frame in item[u'data'].frames:
|
||||||
path_from = unicode(item[u'data'].service_item_path + u'/' + frame[u'title'])
|
path_from = unicode(item[u'data'].service_item_path + u'/' + frame[u'title'])
|
||||||
zip.write(path_from)
|
zip.write(path_from)
|
||||||
|
@ -354,7 +355,7 @@ class ServiceManager(QtGui.QWidget):
|
||||||
os.remove(servicefile)
|
os.remove(servicefile)
|
||||||
except:
|
except:
|
||||||
pass #if not present do not worry
|
pass #if not present do not worry
|
||||||
self.parent.OosChanged(True, self.serviceName)
|
self.parent.OosChanged(True, filename + u'.oos')
|
||||||
|
|
||||||
def onLoadService(self):
|
def onLoadService(self):
|
||||||
"""
|
"""
|
||||||
|
@ -368,6 +369,7 @@ class ServiceManager(QtGui.QWidget):
|
||||||
name = filename.split(os.path.sep)
|
name = filename.split(os.path.sep)
|
||||||
if filename != u'':
|
if filename != u'':
|
||||||
self.config.set_last_dir(filename)
|
self.config.set_last_dir(filename)
|
||||||
|
try:
|
||||||
zip = zipfile.ZipFile(unicode(filename))
|
zip = zipfile.ZipFile(unicode(filename))
|
||||||
filexml = None
|
filexml = None
|
||||||
themename = None
|
themename = None
|
||||||
|
@ -394,6 +396,8 @@ class ServiceManager(QtGui.QWidget):
|
||||||
except:
|
except:
|
||||||
#if not present do not worry
|
#if not present do not worry
|
||||||
pass
|
pass
|
||||||
|
except:
|
||||||
|
pass
|
||||||
self.serviceName = name[len(name) - 1]
|
self.serviceName = name[len(name) - 1]
|
||||||
self.parent.OosChanged(True, self.serviceName)
|
self.parent.OosChanged(True, self.serviceName)
|
||||||
|
|
||||||
|
|
|
@ -228,6 +228,7 @@ class SlideController(QtGui.QWidget):
|
||||||
request the correct the toolbar of the plugin
|
request the correct the toolbar of the plugin
|
||||||
Called by plugins
|
Called by plugins
|
||||||
"""
|
"""
|
||||||
|
log.debug(u'addServiceItem')
|
||||||
item.render()
|
item.render()
|
||||||
self.enableToolBar(item)
|
self.enableToolBar(item)
|
||||||
self.displayServiceManagerItems(item, 0)
|
self.displayServiceManagerItems(item, 0)
|
||||||
|
@ -238,6 +239,7 @@ class SlideController(QtGui.QWidget):
|
||||||
request the correct the toolbar of the plugin
|
request the correct the toolbar of the plugin
|
||||||
Called by ServiceManager
|
Called by ServiceManager
|
||||||
"""
|
"""
|
||||||
|
log.debug(u'addServiceItem')
|
||||||
self.enableToolBar(item)
|
self.enableToolBar(item)
|
||||||
self.displayServiceManagerItems(item, slideno)
|
self.displayServiceManagerItems(item, slideno)
|
||||||
|
|
||||||
|
@ -246,7 +248,7 @@ class SlideController(QtGui.QWidget):
|
||||||
Loads a ServiceItem into the system from ServiceManager
|
Loads a ServiceItem into the system from ServiceManager
|
||||||
Display the slide number passed
|
Display the slide number passed
|
||||||
"""
|
"""
|
||||||
log.debug(u'add Service Manager Item')
|
log.debug(u'displayServiceManagerItems Start')
|
||||||
self.serviceitem = serviceitem
|
self.serviceitem = serviceitem
|
||||||
slide_pixmap = QtGui.QPixmap.fromImage(self.serviceitem.frames[0][u'image'])
|
slide_pixmap = QtGui.QPixmap.fromImage(self.serviceitem.frames[0][u'image'])
|
||||||
slide_width = 300
|
slide_width = 300
|
||||||
|
@ -273,6 +275,7 @@ class SlideController(QtGui.QWidget):
|
||||||
self.PreviewListWidget.selectRow(slideno)
|
self.PreviewListWidget.selectRow(slideno)
|
||||||
self.onSlideSelected()
|
self.onSlideSelected()
|
||||||
self.PreviewListWidget.setFocus()
|
self.PreviewListWidget.setFocus()
|
||||||
|
log.debug(u'displayServiceManagerItems End')
|
||||||
|
|
||||||
#Screen event methods
|
#Screen event methods
|
||||||
def onSlideSelectedFirst(self):
|
def onSlideSelectedFirst(self):
|
||||||
|
|
|
@ -341,6 +341,8 @@ class BibleMediaItem(MediaManagerItem):
|
||||||
def generateSlideData(self, service_item):
|
def generateSlideData(self, service_item):
|
||||||
log.debug(u'generating slide data')
|
log.debug(u'generating slide data')
|
||||||
items = self.ListView.selectedIndexes()
|
items = self.ListView.selectedIndexes()
|
||||||
|
if len(items) ==0:
|
||||||
|
return False
|
||||||
old_chapter = u''
|
old_chapter = u''
|
||||||
raw_slides = []
|
raw_slides = []
|
||||||
raw_footer = []
|
raw_footer = []
|
||||||
|
@ -389,6 +391,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||||
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)
|
||||||
service_item.raw_footer = raw_footer
|
service_item.raw_footer = raw_footer
|
||||||
|
return True
|
||||||
|
|
||||||
def formatVerse(self, old_chapter, chapter, verse, opening, closing):
|
def formatVerse(self, old_chapter, chapter, verse, opening, closing):
|
||||||
loc = opening
|
loc = opening
|
||||||
|
@ -432,27 +435,30 @@ class BibleMediaItem(MediaManagerItem):
|
||||||
combo.addItem(unicode(i))
|
combo.addItem(unicode(i))
|
||||||
|
|
||||||
def displayResults(self, bible):
|
def displayResults(self, bible):
|
||||||
for verse in self.search_results:
|
for count, verse in enumerate(self.search_results):
|
||||||
bible_text = u' %s %d:%d (%s)' % (verse.book.name,
|
bible_text = u' %s %d:%d (%s)' % (verse.book.name,
|
||||||
verse.chapter, verse.verse, bible)
|
verse.chapter, verse.verse, bible)
|
||||||
bible_verse = QtGui.QListWidgetItem(bible_text)
|
bible_verse = QtGui.QListWidgetItem(bible_text)
|
||||||
bible_verse.setData(QtCore.Qt.UserRole,
|
bible_verse.setData(QtCore.Qt.UserRole,
|
||||||
QtCore.QVariant(bible_text))
|
QtCore.QVariant(bible_text))
|
||||||
self.ListView.addItem(bible_verse)
|
self.ListView.addItem(bible_verse)
|
||||||
|
cr = self.ListView.setCurrentRow(count)
|
||||||
|
if cr is not None:
|
||||||
|
cr.setSelected(True)
|
||||||
|
|
||||||
def searchByReference(self, bible, search):
|
def searchByReference(self, bible, search):
|
||||||
log.debug(u'searchByReference %s ,%s', bible, search)
|
log.debug(u'searchByReference %s ,%s', bible, search)
|
||||||
book = ''
|
book = u''
|
||||||
start_chapter = ''
|
start_chapter = u''
|
||||||
end_chapter = ''
|
end_chapter = u''
|
||||||
start_verse = ''
|
start_verse = u''
|
||||||
end_verse = ''
|
end_verse = u''
|
||||||
search = search.replace(u' ', u' ').strip()
|
search = search.replace(u' ', u' ').strip()
|
||||||
original = search
|
original = search
|
||||||
message = None
|
message = None
|
||||||
# Remove book beware 0 index arrays
|
# Remove book beware 0 index arrays
|
||||||
for i in range (len(search)-1, 0, - 1):
|
for i in range (len(search)-1, 0, - 1):
|
||||||
if search[i] == ' ':
|
if search[i] == u' ':
|
||||||
book = search[:i]
|
book = search[:i]
|
||||||
# remove book from string
|
# remove book from string
|
||||||
search = search[i:]
|
search = search[i:]
|
||||||
|
@ -466,7 +472,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||||
# number : found
|
# number : found
|
||||||
i = search.rfind(u' ')
|
i = search.rfind(u' ')
|
||||||
if i == -1:
|
if i == -1:
|
||||||
chapter = ''
|
chapter = u''
|
||||||
else:
|
else:
|
||||||
chapter = search[i:len(search)]
|
chapter = search[i:len(search)]
|
||||||
hyphen = chapter.find(u'-')
|
hyphen = chapter.find(u'-')
|
||||||
|
@ -493,29 +499,25 @@ class BibleMediaItem(MediaManagerItem):
|
||||||
end_verse = start_verse
|
end_verse = start_verse
|
||||||
else:
|
else:
|
||||||
sp1 = sp[1].split(u':')
|
sp1 = sp[1].split(u':')
|
||||||
#print "2nd details", sp1, len(sp1)
|
|
||||||
if len(sp1) == 1:
|
if len(sp1) == 1:
|
||||||
end_chapter = start_chapter
|
end_chapter = start_chapter
|
||||||
end_verse = sp1[0]
|
end_verse = sp1[0]
|
||||||
else:
|
else:
|
||||||
end_chapter = sp1[0]
|
end_chapter = sp1[0]
|
||||||
end_verse = sp1[1]
|
end_verse = sp1[1]
|
||||||
#print 'search = ' + unicode(original)
|
if end_chapter == u'':
|
||||||
#print 'results = ' + unicode(book) + ' @ '+ unicode(start_chapter)+' @ '+ unicode(end_chapter)+' @ '+ unicode(start_verse)+ ' @ '+ unicode(end_verse)
|
|
||||||
if end_chapter == '':
|
|
||||||
end_chapter = start_chapter.rstrip()
|
end_chapter = start_chapter.rstrip()
|
||||||
if start_verse == '':
|
if start_verse == u'':
|
||||||
if end_verse == '':
|
if end_verse == u'':
|
||||||
start_verse = 1
|
start_verse = 1
|
||||||
else:
|
else:
|
||||||
start_verse = end_verse
|
start_verse = end_verse
|
||||||
if end_verse == '':
|
if end_verse == u'':
|
||||||
end_verse = 99
|
end_verse = 99
|
||||||
if start_chapter == '':
|
if start_chapter == u'':
|
||||||
message = u'No chapter found for search criteria'
|
message = u'No chapter found for search criteria'
|
||||||
#print 'message = ' + unicode(message)
|
log.debug(u'results = %s @ %s : %s @ %s : %s'% \
|
||||||
#print 'search = ' + unicode(original)
|
(unicode(book), unicode(start_chapter), unicode(end_chapter), unicode(start_verse), unicode(end_verse)))
|
||||||
#print 'results = ' + unicode(book) + ' @ '+ unicode(start_chapter)+' @ '+ unicode(end_chapter)+' @ '+ unicode(start_verse)+ ' @ '+ unicode(end_verse)
|
|
||||||
if message == None:
|
if message == None:
|
||||||
self.search_results = None
|
self.search_results = None
|
||||||
self.search_results = self.parent.biblemanager.get_verse_text(bible, book,
|
self.search_results = self.parent.biblemanager.get_verse_text(bible, book,
|
||||||
|
|
|
@ -68,17 +68,17 @@ class CustomMediaItem(MediaManagerItem):
|
||||||
self.addToolbarButton(
|
self.addToolbarButton(
|
||||||
translate(u'CustomMediaItem',u'Preview Custom Item'),
|
translate(u'CustomMediaItem',u'Preview Custom Item'),
|
||||||
translate(u'CustomMediaItem',u'Preview the selected Custom Item'),
|
translate(u'CustomMediaItem',u'Preview the selected Custom Item'),
|
||||||
u':/system/system_preview.png', self.onCustomPreviewClick, u'CustomPreviewItem')
|
u':/system/system_preview.png', self.onPreviewClick, u'CustomPreviewItem')
|
||||||
## Live Custom Button ##
|
## Live Custom Button ##
|
||||||
self.addToolbarButton(
|
self.addToolbarButton(
|
||||||
translate(u'CustomMediaItem',u'Go Live'),
|
translate(u'CustomMediaItem',u'Go Live'),
|
||||||
translate(u'CustomMediaItem', u'Send the selected Custom live'),
|
translate(u'CustomMediaItem', u'Send the selected Custom live'),
|
||||||
u':/system/system_live.png', self.onCustomLiveClick, u'CustomLiveItem')
|
u':/system/system_live.png', self.onLiveClick, u'CustomLiveItem')
|
||||||
## Add Custom Button ##
|
## Add Custom Button ##
|
||||||
self.addToolbarButton(
|
self.addToolbarButton(
|
||||||
translate(u'CustomMediaItem',u'Add Custom To Service'),
|
translate(u'CustomMediaItem',u'Add Custom To Service'),
|
||||||
translate(u'CustomMediaItem',u'Add the selected Custom(s) to the service'),
|
translate(u'CustomMediaItem',u'Add the selected Custom(s) to the service'),
|
||||||
u':/system/system_add.png', self.onCustomAddClick, u'CustomAddItem')
|
u':/system/system_add.png', self.onAddClick, u'CustomAddItem')
|
||||||
# Add the CustomListView widget
|
# Add the CustomListView widget
|
||||||
self.CustomWidget = QtGui.QWidget(self)
|
self.CustomWidget = QtGui.QWidget(self)
|
||||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||||
|
@ -95,7 +95,7 @@ class CustomMediaItem(MediaManagerItem):
|
||||||
self.PageLayout.addWidget(self.ListView)
|
self.PageLayout.addWidget(self.ListView)
|
||||||
# Signals
|
# Signals
|
||||||
QtCore.QObject.connect(self.ListView,
|
QtCore.QObject.connect(self.ListView,
|
||||||
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onCustomPreviewClick)
|
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onPreviewClick)
|
||||||
#define and add the context menu
|
#define and add the context menu
|
||||||
self.ListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
|
self.ListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
|
||||||
self.ListView.addAction(contextMenuAction(self.ListView,
|
self.ListView.addAction(contextMenuAction(self.ListView,
|
||||||
|
@ -104,13 +104,13 @@ class CustomMediaItem(MediaManagerItem):
|
||||||
self.ListView.addAction(contextMenuSeparator(self.ListView))
|
self.ListView.addAction(contextMenuSeparator(self.ListView))
|
||||||
self.ListView.addAction(contextMenuAction(
|
self.ListView.addAction(contextMenuAction(
|
||||||
self.ListView, ':/system/system_preview.png',
|
self.ListView, ':/system/system_preview.png',
|
||||||
translate(u'CustomMediaItem',u'&Preview Custom'), self.onCustomPreviewClick))
|
translate(u'CustomMediaItem',u'&Preview Custom'), self.onPreviewClick))
|
||||||
self.ListView.addAction(contextMenuAction(
|
self.ListView.addAction(contextMenuAction(
|
||||||
self.ListView, ':/system/system_live.png',
|
self.ListView, ':/system/system_live.png',
|
||||||
translate(u'CustomMediaItem',u'&Show Live'), self.onCustomLiveClick))
|
translate(u'CustomMediaItem',u'&Show Live'), self.onLiveClick))
|
||||||
self.ListView.addAction(contextMenuAction(
|
self.ListView.addAction(contextMenuAction(
|
||||||
self.ListView, ':/system/system_add.png',
|
self.ListView, ':/system/system_add.png',
|
||||||
translate(u'CustomMediaItem',u'&Add to Service'), self.onCustomAddClick))
|
translate(u'CustomMediaItem',u'&Add to Service'), self.onAddClick))
|
||||||
|
|
||||||
def initialise(self):
|
def initialise(self):
|
||||||
self.loadCustomListView(self.parent.custommanager.get_all_slides())
|
self.loadCustomListView(self.parent.custommanager.get_all_slides())
|
||||||
|
@ -143,33 +143,14 @@ class CustomMediaItem(MediaManagerItem):
|
||||||
row = self.ListView.row(item)
|
row = self.ListView.row(item)
|
||||||
self.ListView.takeItem(row)
|
self.ListView.takeItem(row)
|
||||||
|
|
||||||
def onCustomPreviewClick(self):
|
|
||||||
log.debug(u'Custom Preview Requested')
|
|
||||||
service_item = ServiceItem(self.parent)
|
|
||||||
service_item.addIcon(u':/media/media_song.png')
|
|
||||||
self.generateSlideData(service_item)
|
|
||||||
self.parent.preview_controller.addServiceItem(service_item)
|
|
||||||
|
|
||||||
def onCustomLiveClick(self):
|
|
||||||
log.debug(u'Custom Live Requested')
|
|
||||||
service_item = ServiceItem(self.parent)
|
|
||||||
service_item.addIcon(u':/media/media_song.png')
|
|
||||||
self.generateSlideData(service_item)
|
|
||||||
self.parent.live_controller.addServiceItem(service_item)
|
|
||||||
|
|
||||||
def onCustomAddClick(self):
|
|
||||||
log.debug(u'Custom Add Requested')
|
|
||||||
service_item = ServiceItem(self.parent)
|
|
||||||
service_item.addIcon(u':/media/media_song.png')
|
|
||||||
self.generateSlideData(service_item)
|
|
||||||
self.parent.service_manager.addServiceItem(service_item)
|
|
||||||
|
|
||||||
def generateSlideData(self, service_item):
|
def generateSlideData(self, service_item):
|
||||||
raw_slides =[]
|
raw_slides =[]
|
||||||
raw_footer = []
|
raw_footer = []
|
||||||
slide = None
|
slide = None
|
||||||
theme = None
|
theme = None
|
||||||
item = self.ListView.currentItem()
|
item = self.ListView.currentItem()
|
||||||
|
if item is None:
|
||||||
|
return False
|
||||||
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
|
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
|
||||||
customSlide = self.parent.custommanager.get_custom(item_id)
|
customSlide = self.parent.custommanager.get_custom(item_id)
|
||||||
title = customSlide.title
|
title = customSlide.title
|
||||||
|
@ -187,3 +168,4 @@ class CustomMediaItem(MediaManagerItem):
|
||||||
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)
|
||||||
service_item.raw_footer = raw_footer
|
service_item.raw_footer = raw_footer
|
||||||
|
return True
|
||||||
|
|
|
@ -1,63 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
|
|
||||||
"""
|
|
||||||
OpenLP - Open Source Lyrics Projection
|
|
||||||
Copyright (c) 2008 Raoul Snyman
|
|
||||||
Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley,
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it under
|
|
||||||
the terms of the GNU General Public License as published by the Free Software
|
|
||||||
Foundation; version 2 of the License.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
||||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License along with
|
|
||||||
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
|
||||||
Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
"""
|
|
||||||
import logging
|
|
||||||
import os
|
|
||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
|
||||||
from openlp.core.lib import OpenLPToolbar, translate, Receiver
|
|
||||||
from openlp.core.ui.slidecontroller import MasterToolbar
|
|
||||||
|
|
||||||
class ImageToolbar(MasterToolbar):
|
|
||||||
|
|
||||||
def __init__(self, parent, isLive):
|
|
||||||
MasterToolbar.__init__(self, isLive)
|
|
||||||
self.parent = parent
|
|
||||||
self.Toolbar = None
|
|
||||||
self.isLive = isLive
|
|
||||||
|
|
||||||
def defineZone5(self):
|
|
||||||
self.Toolbar.addSeparator()
|
|
||||||
self.Toolbar.addToolbarButton(u'Start Loop',
|
|
||||||
u':/media/media_time.png',
|
|
||||||
translate(u'SlideController', u'Start continuous loop'),
|
|
||||||
self.onStartLoop)
|
|
||||||
self.Toolbar.addToolbarButton(u'Stop Loop',
|
|
||||||
u':/media/media_stop.png',
|
|
||||||
translate(u'SlideController', u'Stop continuous loop'),
|
|
||||||
self.onStopLoop)
|
|
||||||
self.Toolbar.addSeparator()
|
|
||||||
self.DelaySpinBox = QtGui.QSpinBox(self.Toolbar)
|
|
||||||
self.SpinWidget = QtGui.QWidgetAction(self.Toolbar)
|
|
||||||
self.SpinWidget.setDefaultWidget(self.DelaySpinBox)
|
|
||||||
self.Toolbar.addAction(self.SpinWidget)
|
|
||||||
self.DelaySpinBox.setValue(self.parent.parent.ImageTab.loop_delay)
|
|
||||||
self.DelaySpinBox.setSuffix(translate(u'ImageSlideController', u's'))
|
|
||||||
|
|
||||||
def onStartLoop(self):
|
|
||||||
"""
|
|
||||||
Trigger the slide controller to start to loop passing the delay
|
|
||||||
"""
|
|
||||||
Receiver().send_message(u'%sslide_start_loop' % self.prefix, self.DelaySpinBox.value())
|
|
||||||
|
|
||||||
def onStopLoop(self):
|
|
||||||
"""
|
|
||||||
Trigger the slide controller to stop the loop
|
|
||||||
"""
|
|
||||||
Receiver().send_message(u'%sslide_stop_loop' % self.prefix)
|
|
|
@ -95,6 +95,8 @@ class ImageMediaItem(MediaManagerItem):
|
||||||
|
|
||||||
def generateSlideData(self, service_item):
|
def generateSlideData(self, service_item):
|
||||||
items = self.ListView.selectedIndexes()
|
items = self.ListView.selectedIndexes()
|
||||||
|
if len(items) == 0:
|
||||||
|
return False
|
||||||
service_item.title = u'Image(s)'
|
service_item.title = u'Image(s)'
|
||||||
for item in items:
|
for item in items:
|
||||||
bitem = self.ListView.item(item.row())
|
bitem = self.ListView.item(item.row())
|
||||||
|
@ -102,3 +104,4 @@ class ImageMediaItem(MediaManagerItem):
|
||||||
frame = QtGui.QImage(unicode(filename))
|
frame = QtGui.QImage(unicode(filename))
|
||||||
(path, name) = os.path.split(filename)
|
(path, name) = os.path.split(filename)
|
||||||
service_item.add_from_image(path, name, frame)
|
service_item.add_from_image(path, name, frame)
|
||||||
|
return True
|
||||||
|
|
|
@ -100,12 +100,15 @@ class MediaMediaItem(MediaManagerItem):
|
||||||
|
|
||||||
def generateSlideData(self, service_item):
|
def generateSlideData(self, service_item):
|
||||||
indexes = self.ListView.selectedIndexes()
|
indexes = self.ListView.selectedIndexes()
|
||||||
|
if len(items) > 1:
|
||||||
|
return False
|
||||||
service_item.title = u'Media'
|
service_item.title = u'Media'
|
||||||
for index in indexes:
|
for index in indexes:
|
||||||
filename = self.ListData.getFilename(index)
|
filename = self.ListData.getFilename(index)
|
||||||
frame = QtGui.QImage(unicode(filename))
|
frame = QtGui.QImage(unicode(filename))
|
||||||
(path, name) = os.path.split(filename)
|
(path, name) = os.path.split(filename)
|
||||||
service_item.add_from_image(path, name, frame)
|
service_item.add_from_image(path, name, frame)
|
||||||
|
return True
|
||||||
|
|
||||||
def onPreviewClick(self):
|
def onPreviewClick(self):
|
||||||
log.debug(u'Media Preview Button pressed')
|
log.debug(u'Media Preview Button pressed')
|
||||||
|
|
|
@ -43,7 +43,7 @@ class PresentationMediaItem(MediaManagerItem):
|
||||||
self.controllers = controllers
|
self.controllers = controllers
|
||||||
self.TranslationContext = u'PresentationPlugin'
|
self.TranslationContext = u'PresentationPlugin'
|
||||||
self.PluginTextShort = u'Presentation'
|
self.PluginTextShort = u'Presentation'
|
||||||
self.ConfigSection = u'presentation'
|
self.ConfigSection = u'presentations'
|
||||||
self.hasFileIcon = True
|
self.hasFileIcon = True
|
||||||
self.hasNewIcon = False
|
self.hasNewIcon = False
|
||||||
self.hasEditIcon = False
|
self.hasEditIcon = False
|
||||||
|
@ -81,9 +81,6 @@ class PresentationMediaItem(MediaManagerItem):
|
||||||
for item in self.controllers:
|
for item in self.controllers:
|
||||||
#load the drop down selection
|
#load the drop down selection
|
||||||
self.DisplayTypeComboBox.addItem(item)
|
self.DisplayTypeComboBox.addItem(item)
|
||||||
#load the preview toolbars
|
|
||||||
#self.parent.preview_controller.registerToolbar(item, self.controllers[item])
|
|
||||||
#self.parent.live_controller.registerToolbar(item, self.controllers[item])
|
|
||||||
|
|
||||||
def loadList(self, list):
|
def loadList(self, list):
|
||||||
for file in list:
|
for file in list:
|
||||||
|
@ -102,11 +99,13 @@ class PresentationMediaItem(MediaManagerItem):
|
||||||
|
|
||||||
def generateSlideData(self, service_item):
|
def generateSlideData(self, service_item):
|
||||||
items = self.ListView.selectedIndexes()
|
items = self.ListView.selectedIndexes()
|
||||||
service_item.title = self.DisplayTypeComboBox.currentText()
|
if len(items) > 1:
|
||||||
|
return False
|
||||||
|
service_item.title = unicode(self.DisplayTypeComboBox.currentText())
|
||||||
service_item.shortname = unicode(self.DisplayTypeComboBox.currentText())
|
service_item.shortname = unicode(self.DisplayTypeComboBox.currentText())
|
||||||
for item in items:
|
for item in items:
|
||||||
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())
|
||||||
frame = QtGui.QImage(unicode(filename))
|
|
||||||
(path, name) = os.path.split(filename)
|
(path, name) = os.path.split(filename)
|
||||||
service_item.add_using_toolbar(path, name)
|
service_item.add_from_command(path, name)
|
||||||
|
return True
|
||||||
|
|
|
@ -68,15 +68,15 @@ class SongMediaItem(MediaManagerItem):
|
||||||
## Preview Song Button ##
|
## Preview Song Button ##
|
||||||
self.addToolbarButton(translate(u'SongMediaItem', u'Preview Song'),
|
self.addToolbarButton(translate(u'SongMediaItem', u'Preview Song'),
|
||||||
translate(u'SongMediaItem', u'Preview the selected song'),
|
translate(u'SongMediaItem', u'Preview the selected song'),
|
||||||
':/system/system_preview.png', self.onSongPreviewClick, 'SongPreviewItem')
|
':/system/system_preview.png', self.onPreviewClick, 'SongPreviewItem')
|
||||||
## Live Song Button ##
|
## Live Song Button ##
|
||||||
self.addToolbarButton(translate(u'SongMediaItem', u'Go Live'),
|
self.addToolbarButton(translate(u'SongMediaItem', u'Go Live'),
|
||||||
translate(u'SongMediaItem', u'Send the selected song live'),
|
translate(u'SongMediaItem', u'Send the selected song live'),
|
||||||
':/system/system_live.png', self.onSongLiveClick, 'SongLiveItem')
|
':/system/system_live.png', self.onLiveClick, 'SongLiveItem')
|
||||||
## Add Song Button ##
|
## Add Song Button ##
|
||||||
self.addToolbarButton(translate(u'SongMediaItem', u'Add Song To Service'),
|
self.addToolbarButton(translate(u'SongMediaItem', u'Add Song To Service'),
|
||||||
translate(u'SongMediaItem', u'Add the selected song(s) to the service'),
|
translate(u'SongMediaItem', u'Add the selected song(s) to the service'),
|
||||||
':/system/system_add.png', self.onSongAddClick, 'SongAddItem')
|
':/system/system_add.png', self.onAddClick, 'SongAddItem')
|
||||||
self.addToolbarSeparator()
|
self.addToolbarSeparator()
|
||||||
## Song Maintenance Button ##
|
## Song Maintenance Button ##
|
||||||
self.addToolbarButton(translate(u'SongMediaItem', u'Song Maintenance'),
|
self.addToolbarButton(translate(u'SongMediaItem', u'Song Maintenance'),
|
||||||
|
@ -127,7 +127,7 @@ class SongMediaItem(MediaManagerItem):
|
||||||
QtCore.QObject.connect(self.SearchTextEdit,
|
QtCore.QObject.connect(self.SearchTextEdit,
|
||||||
QtCore.SIGNAL(u'textChanged(const QString&)'), self.onSearchTextEditChanged)
|
QtCore.SIGNAL(u'textChanged(const QString&)'), self.onSearchTextEditChanged)
|
||||||
QtCore.QObject.connect(self.ListView,
|
QtCore.QObject.connect(self.ListView,
|
||||||
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onSongPreviewClick)
|
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onPreviewClick)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
QtCore.SIGNAL(u'load_song_list'), self.onSearchTextButtonClick)
|
QtCore.SIGNAL(u'load_song_list'), self.onSearchTextButtonClick)
|
||||||
|
|
||||||
|
@ -139,13 +139,13 @@ class SongMediaItem(MediaManagerItem):
|
||||||
self.ListView.addAction(contextMenuSeparator(self.ListView))
|
self.ListView.addAction(contextMenuSeparator(self.ListView))
|
||||||
self.ListView.addAction(contextMenuAction(self.ListView,
|
self.ListView.addAction(contextMenuAction(self.ListView,
|
||||||
':/system/system_preview.png', translate(u'SongMediaItem', u'&Preview Song'),
|
':/system/system_preview.png', translate(u'SongMediaItem', u'&Preview Song'),
|
||||||
self.onSongPreviewClick))
|
self.onPreviewClick))
|
||||||
self.ListView.addAction(contextMenuAction(self.ListView,
|
self.ListView.addAction(contextMenuAction(self.ListView,
|
||||||
':/system/system_live.png', translate(u'SongMediaItem', u'&Show Live'),
|
':/system/system_live.png', translate(u'SongMediaItem', u'&Show Live'),
|
||||||
self.onSongLiveClick))
|
self.onLiveClick))
|
||||||
self.ListView.addAction(contextMenuAction(self.ListView,
|
self.ListView.addAction(contextMenuAction(self.ListView,
|
||||||
':/system/system_add.png', translate(u'SongMediaItem', u'&Add to Service'),
|
':/system/system_add.png', translate(u'SongMediaItem', u'&Add to Service'),
|
||||||
self.onSongAddClick))
|
self.onAddClick))
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.SearchTypeLabel.setText(translate(u'SongMediaItem', u'Search Type:'))
|
self.SearchTypeLabel.setText(translate(u'SongMediaItem', u'Search Type:'))
|
||||||
|
@ -246,12 +246,12 @@ class SongMediaItem(MediaManagerItem):
|
||||||
self.parent.songmanager.delete_song(item_id)
|
self.parent.songmanager.delete_song(item_id)
|
||||||
row = self.ListView.row(item)
|
row = self.ListView.row(item)
|
||||||
self.ListView.takeItem(row)
|
self.ListView.takeItem(row)
|
||||||
|
#
|
||||||
def onSongPreviewClick(self):
|
# def onSongPreviewClick(self):
|
||||||
service_item = ServiceItem(self.parent)
|
# service_item = ServiceItem(self.parent)
|
||||||
service_item.addIcon(u':/media/media_song.png')
|
# service_item.addIcon(u':/media/media_song.png')
|
||||||
self.generateSlideData(service_item)
|
# self.generateSlideData(service_item)
|
||||||
self.parent.preview_controller.addServiceItem(service_item)
|
# self.parent.preview_controller.addServiceItem(service_item)
|
||||||
|
|
||||||
def generateSlideData(self, service_item):
|
def generateSlideData(self, service_item):
|
||||||
raw_slides =[]
|
raw_slides =[]
|
||||||
|
@ -259,6 +259,8 @@ class SongMediaItem(MediaManagerItem):
|
||||||
author_list = u''
|
author_list = u''
|
||||||
ccl = u''
|
ccl = u''
|
||||||
item = self.ListView.currentItem()
|
item = self.ListView.currentItem()
|
||||||
|
if item is None:
|
||||||
|
return False
|
||||||
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
|
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
|
||||||
song = self.parent.songmanager.get_song(item_id)
|
song = self.parent.songmanager.get_song(item_id)
|
||||||
service_item.theme = song.theme_name
|
service_item.theme = song.theme_name
|
||||||
|
@ -286,15 +288,16 @@ class SongMediaItem(MediaManagerItem):
|
||||||
raw_footer.append(song.copyright )
|
raw_footer.append(song.copyright )
|
||||||
raw_footer.append(unicode(translate(u'SongMediaItem', u'CCL Licence: ') + ccl ))
|
raw_footer.append(unicode(translate(u'SongMediaItem', u'CCL Licence: ') + ccl ))
|
||||||
service_item.raw_footer = raw_footer
|
service_item.raw_footer = raw_footer
|
||||||
|
return True
|
||||||
|
|
||||||
def onSongLiveClick(self):
|
# def onSongLiveClick(self):
|
||||||
service_item = ServiceItem(self.parent)
|
# service_item = ServiceItem(self.parent)
|
||||||
service_item.addIcon(u':/media/media_song.png')
|
# service_item.addIcon(u':/media/media_song.png')
|
||||||
self.generateSlideData(service_item)
|
# self.generateSlideData(service_item)
|
||||||
self.parent.live_controller.addServiceItem(service_item)
|
# self.parent.live_controller.addServiceItem(service_item)
|
||||||
|
#
|
||||||
def onSongAddClick(self):
|
# def onSongAddClick(self):
|
||||||
service_item = ServiceItem(self.parent)
|
# service_item = ServiceItem(self.parent)
|
||||||
service_item.addIcon( u':/media/media_song.png')
|
# service_item.addIcon( u':/media/media_song.png')
|
||||||
self.generateSlideData(service_item)
|
# self.generateSlideData(service_item)
|
||||||
self.parent.service_manager.addServiceItem(service_item)
|
# self.parent.service_manager.addServiceItem(service_item)
|
||||||
|
|
Loading…
Reference in New Issue