forked from openlp/openlp
Add OOS and speed up Renderer
bzr-revno: 463
This commit is contained in:
commit
296a573007
@ -41,7 +41,6 @@ class OpenLP(QtGui.QApplication):
|
||||
#provide a listener for widgets to reqest a screen update.
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'openlpprocessevents'), self.processEvents)
|
||||
|
||||
self.setApplicationName(u'openlp.org')
|
||||
self.setApplicationVersion(u'1.9.0')
|
||||
self.splash = SplashScreen(self.applicationVersion())
|
||||
@ -66,4 +65,3 @@ class OpenLP(QtGui.QApplication):
|
||||
if __name__ == u'__main__':
|
||||
app = OpenLP(sys.argv)
|
||||
app.run()
|
||||
|
||||
|
@ -20,22 +20,14 @@ Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
import logging
|
||||
import os, os.path
|
||||
import sys
|
||||
#from copy import copy
|
||||
|
||||
from datetime import *
|
||||
from PyQt4 import QtGui, QtCore, Qt
|
||||
|
||||
from copy import copy
|
||||
|
||||
class Renderer:
|
||||
"""
|
||||
All the functions for rendering a set of words onto a Device Context
|
||||
|
||||
How to use:
|
||||
set the words to be displayed with a call to format_slide() - this returns an array of screenfuls of data
|
||||
set a theme (if you need) with set_theme
|
||||
tell it which DC to render to with set_DC()
|
||||
set the borders of where you want the text (if not the whole DC) with set_text_rectangle()
|
||||
tell it to render a particular screenfull with render_screen(n)
|
||||
Genarates a pixmap image of a array of text. The Text is formatted to
|
||||
make sure it fits on the screen and if not extra frames a generated.
|
||||
"""
|
||||
global log
|
||||
log = logging.getLogger(u'Renderer')
|
||||
@ -98,7 +90,7 @@ class Renderer:
|
||||
"""
|
||||
if preview == True:
|
||||
self._bg_frame = None
|
||||
log.debug(u'set frame dest (frame) w %d h %d',frame_width, frame_height)
|
||||
log.debug(u'set frame dest (frame) w %d h %d', frame_width, frame_height)
|
||||
self._frame = QtGui.QPixmap(frame_width, frame_height)
|
||||
if self._bg_image_filename is not None:
|
||||
self.scale_bg_image()
|
||||
@ -109,10 +101,10 @@ class Renderer:
|
||||
"""
|
||||
External API to sort out the text to pe placed on the frame
|
||||
"""
|
||||
print "########## Format Slide ##################"
|
||||
#print "########## Format Slide ##################"
|
||||
log.debug(u'format_slide %s', words)
|
||||
verses = []
|
||||
words = words.replace("\r\n", "\n")
|
||||
words = words.replace(u'\r\n', u'\n')
|
||||
verses_text = words.split(u'\n\n')
|
||||
text = []
|
||||
for verse in verses_text:
|
||||
@ -120,8 +112,8 @@ class Renderer:
|
||||
for line in lines:
|
||||
text.append(line)
|
||||
split_text = self._split_set_of_lines(text, False)
|
||||
print "split text ", split_text
|
||||
print "text ", text
|
||||
#print "split text ", split_text
|
||||
#print "text ", text
|
||||
return split_text
|
||||
|
||||
def set_text_rectangle(self, rect_main, rect_footer):
|
||||
@ -147,7 +139,6 @@ class Renderer:
|
||||
bbox = self._render_lines_unaligned(lines, False, (x, y))
|
||||
if footer_lines is not None:
|
||||
bbox = self._render_lines_unaligned(footer_lines, True, (self._rect_footer.left(), self._rect_footer.top()) )
|
||||
log.debug(u'generate_frame_from_lines - Finish')
|
||||
return self._frame
|
||||
|
||||
def _generate_background_frame(self):
|
||||
@ -158,7 +149,6 @@ class Renderer:
|
||||
assert(self._theme)
|
||||
self._bg_frame = QtGui.QPixmap(self._frame.width(), self._frame.height())
|
||||
log.debug(u'render background %s ', self._theme.background_type)
|
||||
bef = datetime.now()
|
||||
painter = QtGui.QPainter()
|
||||
painter.begin(self._bg_frame)
|
||||
if self._theme.background_type == u'solid':
|
||||
@ -193,9 +183,6 @@ class Renderer:
|
||||
else:
|
||||
painter.fillRect(self._frame.rect(), QtGui.QColor(u'#000000'))
|
||||
painter.end()
|
||||
aft = datetime.now()
|
||||
print "background time", bef, aft, aft-bef
|
||||
log.debug(u'render background finish')
|
||||
|
||||
def _split_set_of_lines(self, lines, footer):
|
||||
"""
|
||||
@ -212,16 +199,11 @@ class Renderer:
|
||||
#print "bboxes ", bboxes
|
||||
numlines = len(lines)
|
||||
bottom = self._rect.bottom()
|
||||
count = 0
|
||||
for ratio in (numlines, numlines/2, numlines/3, numlines/4):
|
||||
good = 1
|
||||
startline = 0
|
||||
endline = startline + ratio
|
||||
while (endline <= numlines and endline != 0):
|
||||
count += 1
|
||||
if count > 100:
|
||||
#print "busted"
|
||||
break
|
||||
by = 0
|
||||
for (x,y) in bboxes[startline:endline]:
|
||||
#print by, startline, endline, x, y, bottom
|
||||
@ -278,7 +260,7 @@ class Renderer:
|
||||
elif int(self._theme.display_verticalAlign) == 1: # centre align
|
||||
y = rect.top() + (rect.height() - bbox.height()) / 2
|
||||
else:
|
||||
assert(0 , u'Invalid value for theme.VerticalAlign:%s' % self._theme.display_verticalAlign)
|
||||
log.error(u'Invalid value for theme.VerticalAlign:%s' % self._theme.display_verticalAlign)
|
||||
return x, y
|
||||
|
||||
def _render_lines_unaligned(self, lines, footer, tlcorner=(0,0)):
|
||||
@ -306,7 +288,6 @@ class Renderer:
|
||||
painter.setPen(QtGui.QPen(QtGui.QColor(0,0,255)))
|
||||
painter.drawRect(retval)
|
||||
painter.end()
|
||||
log.debug(u'render lines unaligned Finish')
|
||||
return retval
|
||||
|
||||
def _render_and_wrap_single_line(self, line, footer, tlcorner=(0,0)):
|
||||
@ -317,7 +298,7 @@ class Renderer:
|
||||
right-aligns the surplus words in the manner of song lyrics
|
||||
Returns the bottom-right corner (of what was rendered) as a tuple(x, y).
|
||||
"""
|
||||
log.debug(u'Render single line %s @ %s '%( line, tlcorner))
|
||||
#log.debug(u'Render single line %s @ %s '%( line, 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
|
||||
@ -342,7 +323,8 @@ class Renderer:
|
||||
startx = x
|
||||
starty = y
|
||||
rightextent = None
|
||||
if footer: # dont allow alignment messing with footers
|
||||
# dont allow alignment messing with footers
|
||||
if footer:
|
||||
align = 0
|
||||
else:
|
||||
align = int(self._theme .display_horizontalAlign)
|
||||
@ -354,42 +336,47 @@ class Renderer:
|
||||
w += self._shadow_offset
|
||||
h += self._shadow_offset
|
||||
if self._theme.display_outline:
|
||||
w += 2*self._outline_offset # pixels either side
|
||||
h += 2*self._outline_offset # pixels top/bottom
|
||||
# pixels either side
|
||||
w += 2 * self._outline_offset
|
||||
# pixels top/bottom
|
||||
h += 2 * self._outline_offset
|
||||
if align == 0: # left align
|
||||
rightextent = x + w
|
||||
if self._theme.display_wrapStyle == 1 and linenum != 0: # shift right from last line's rh edge
|
||||
# shift right from last line's rh edge
|
||||
if self._theme.display_wrapStyle == 1 and linenum != 0:
|
||||
rightextent = self._first_line_right_extent + self._right_margin
|
||||
if rightextent > maxx:
|
||||
rightextent = maxx
|
||||
x = rightextent - w
|
||||
elif align == 1: # right align
|
||||
# right align
|
||||
elif align == 1:
|
||||
rightextent = maxx
|
||||
x = maxx - w
|
||||
elif align == 2: # centre
|
||||
# centre
|
||||
elif align == 2:
|
||||
x = (maxx - w) / 2;
|
||||
rightextent = x + w
|
||||
# now draw the text, and any outlines/shadows
|
||||
if self._theme.display_shadow:
|
||||
self._get_extent_and_render(line, footer,tlcorner=(x+self._shadow_offset,y+self._shadow_offset),
|
||||
self._get_extent_and_render(line, footer, tlcorner=(x+self._shadow_offset,y+self._shadow_offset),
|
||||
draw=True, color = self._theme.display_shadow_color)
|
||||
if self._theme.display_outline:
|
||||
self._get_extent_and_render(line, footer,(x+self._outline_offset,y), draw=True,
|
||||
self._get_extent_and_render(line, footer, (x+self._outline_offset,y), draw=True,
|
||||
color = self._theme.display_outline_color)
|
||||
self._get_extent_and_render(line, footer,(x, y+self._outline_offset), draw=True,
|
||||
self._get_extent_and_render(line, footer, (x, y+self._outline_offset), draw=True,
|
||||
color = self._theme.display_outline_color)
|
||||
self._get_extent_and_render(line, footer,(x, y-self._outline_offset), draw=True,
|
||||
self._get_extent_and_render(line, footer, (x, y-self._outline_offset), draw=True,
|
||||
color = self._theme.display_outline_color)
|
||||
self._get_extent_and_render(line, footer,(x-self._outline_offset,y), draw=True,
|
||||
self._get_extent_and_render(line, footer, (x-self._outline_offset,y), draw=True,
|
||||
color = self._theme.display_outline_color)
|
||||
if self._outline_offset > 1:
|
||||
self._get_extent_and_render(line, footer,(x+self._outline_offset,y+self._outline_offset), draw=True,
|
||||
self._get_extent_and_render(line, footer, (x+self._outline_offset,y+self._outline_offset), draw=True,
|
||||
color = self._theme.display_outline_color)
|
||||
self._get_extent_and_render(line, footer,(x-self._outline_offset,y+self._outline_offset), draw=True,
|
||||
self._get_extent_and_render(line, footer, (x-self._outline_offset,y+self._outline_offset), draw=True,
|
||||
color = self._theme.display_outline_color)
|
||||
self._get_extent_and_render(line, footer,(x+self._outline_offset,y-self._outline_offset), draw=True,
|
||||
self._get_extent_and_render(line, footer, (x+self._outline_offset,y-self._outline_offset), draw=True,
|
||||
color = self._theme.display_outline_color)
|
||||
self._get_extent_and_render(line, footer,(x-self._outline_offset,y-self._outline_offset), draw=True,
|
||||
self._get_extent_and_render(line, footer, (x-self._outline_offset,y-self._outline_offset), draw=True,
|
||||
color = self._theme.display_outline_color)
|
||||
self._get_extent_and_render(line, footer,tlcorner=(x, y), draw=True)
|
||||
y += h
|
||||
@ -403,7 +390,6 @@ class Renderer:
|
||||
painter.drawRect(startx , starty , rightextent-startx , y-starty)
|
||||
painter.end()
|
||||
brcorner = (rightextent , y)
|
||||
log.debug(u'Render single line Finish')
|
||||
return brcorner
|
||||
|
||||
# xxx this is what to override for an SDL version
|
||||
@ -454,14 +440,7 @@ class Renderer:
|
||||
Debugging method to allow images to be viewed
|
||||
"""
|
||||
im = image.toImage()
|
||||
im.save("renderer.png", "png")
|
||||
im.save(u'renderer.png', u'png')
|
||||
if image2 is not None:
|
||||
im = image2.toImage()
|
||||
im.save("renderer2.png", "png")
|
||||
|
||||
# def render_screen(self, screennum):
|
||||
# log.debug(u'render screen\n %s %s ', screennum, self.words[screennum])
|
||||
# t = 0.0
|
||||
# words = self.words[screennum]
|
||||
# retval = self._render_lines(words)
|
||||
# return retval
|
||||
im.save(u'renderer2.png', u'png')
|
||||
|
@ -64,6 +64,7 @@ class RenderManager:
|
||||
self.calculate_default(self.screen_list[self.current_display]['size'])
|
||||
self.theme = u''
|
||||
self.service_theme = u''
|
||||
self.global_style = u''
|
||||
|
||||
def update_display(self, screen_number):
|
||||
"""
|
||||
|
@ -32,12 +32,14 @@ class ServiceItem():
|
||||
log=logging.getLogger(u'ServiceItem')
|
||||
log.info(u'Service Item created')
|
||||
|
||||
def __init__(self, hostplugin):
|
||||
def __init__(self, hostplugin=None):
|
||||
"""
|
||||
Init Method
|
||||
"""
|
||||
self.plugin = hostplugin
|
||||
self.shortname = hostplugin.name
|
||||
if hostplugin is not None:
|
||||
self.RenderManager = self.plugin.render_manager
|
||||
self.shortname = hostplugin.name
|
||||
self.title = u''
|
||||
self.items = []
|
||||
self.iconic_representation = None
|
||||
@ -47,10 +49,11 @@ class ServiceItem():
|
||||
self.frames = []
|
||||
self.raw_footer = None
|
||||
self.theme = None
|
||||
log.debug(u'Service item created for %s ', self.shortname)
|
||||
#log.debug(u'Service item created for %s ', self.shortname)
|
||||
self.service_frames = []
|
||||
|
||||
def addIcon(self, icon):
|
||||
self.icon = icon
|
||||
self.iconic_representation = buildIcon(icon)
|
||||
|
||||
def render(self):
|
||||
@ -59,15 +62,15 @@ class ServiceItem():
|
||||
"""
|
||||
log.debug(u'Render called')
|
||||
if self.theme == None:
|
||||
self.plugin.render_manager.set_override_theme(None)
|
||||
self.RenderManager.set_override_theme(None)
|
||||
else:
|
||||
self.plugin.render_manager.set_override_theme(self.theme)
|
||||
self.RenderManager.set_override_theme(self.theme)
|
||||
log.debug(u'Formatting slides')
|
||||
if self.service_item_type == u'text':
|
||||
for slide in self.service_frames:
|
||||
formated = self.plugin.render_manager.format_slide(slide[u'raw_slide'])
|
||||
formated = self.RenderManager.format_slide(slide[u'raw_slide'])
|
||||
for format in formated:
|
||||
frame = self.plugin.render_manager.generate_slide(format, self.raw_footer)
|
||||
frame = self.RenderManager.generate_slide(format, self.raw_footer)
|
||||
self.frames.append({u'title': slide[u'title'], u'image': frame})
|
||||
elif self.service_item_type == u'command':
|
||||
self.frames = self.service_frames
|
||||
@ -76,7 +79,7 @@ class ServiceItem():
|
||||
self.frames = self.service_frames
|
||||
self.service_frames = []
|
||||
else:
|
||||
assert(0 , u'Invalid value rendere :%s' % self.service_item_type)
|
||||
log.error(u'Invalid value renderer :%s' % self.service_item_type)
|
||||
|
||||
def add_from_image(self, frame_title, image):
|
||||
self.service_item_type = u'image'
|
||||
@ -91,24 +94,29 @@ class ServiceItem():
|
||||
self.service_item_type = u'command'
|
||||
self.service_frames.append({u'title': frame_title, u'command': command})
|
||||
|
||||
|
||||
|
||||
def get_oos_repr(self):
|
||||
"""
|
||||
This method returns some text which can be saved into the OOS
|
||||
file to represent this item
|
||||
"""
|
||||
pass
|
||||
oos_header = {u'plugin': self.shortname,u'theme':self.theme, u'title':self.title,
|
||||
u'icon':self.icon, u'footer':self.raw_footer, u'type':self.service_item_type}
|
||||
oos_data = []
|
||||
if self.service_item_type == u'text':
|
||||
for slide in self.service_frames:
|
||||
oos_data.append(slide[u'raw_slide'])
|
||||
return {u'header': oos_header, u'data': self.service_frames}
|
||||
|
||||
def set_from_oos(self, oostext):
|
||||
def set_from_oos(self, serviceitem):
|
||||
"""
|
||||
This method takes some oostext (passed from the ServiceManager)
|
||||
and parses it into the data actually required
|
||||
"""
|
||||
pass
|
||||
|
||||
def set_from_plugin(self):
|
||||
"""
|
||||
Takes data from the plugin media chooser
|
||||
"""
|
||||
pass
|
||||
header = serviceitem[u'serviceitem'][u'header']
|
||||
self.title = header[u'title']
|
||||
self.service_item_type = header[u'type']
|
||||
self.shortname = header[u'plugin']
|
||||
self.theme = header[u'theme']
|
||||
self.addIcon(header[u'icon'])
|
||||
self.raw_footer = header[u'footer']
|
||||
self.service_frames = serviceitem[u'serviceitem'][u'data']
|
||||
|
@ -60,7 +60,7 @@ class MainDisplay(QtGui.QWidget):
|
||||
if not screen[u'primary']:
|
||||
self.showFullScreen()
|
||||
else:
|
||||
self.hide()
|
||||
self.showMinimized()
|
||||
painter = QtGui.QPainter()
|
||||
self.blankFrame = QtGui.QPixmap(screen[u'size'].width(), screen[u'size'].height())
|
||||
painter.begin(self.blankFrame)
|
||||
|
@ -75,12 +75,12 @@ class MainWindow(object):
|
||||
# hook methods have to happen after find_plugins. Find plugins needs the
|
||||
# controllershence the hooks have moved from setupUI() to here
|
||||
|
||||
# Find and insert media manager items
|
||||
log.info(u'hook media')
|
||||
self.plugin_manager.hook_media_manager(self.MediaToolBox)
|
||||
# Find and insert settings tabs
|
||||
log.info(u'hook settings')
|
||||
self.plugin_manager.hook_settings_tabs(self.settingsForm)
|
||||
# Find and insert media manager items
|
||||
log.info(u'hook media')
|
||||
self.plugin_manager.hook_media_manager(self.MediaToolBox)
|
||||
# Call the hook method to pull in import menus.
|
||||
log.info(u'hook menus')
|
||||
self.plugin_manager.hook_import_menu(self.FileImportMenu)
|
||||
|
@ -19,6 +19,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
"""
|
||||
import os
|
||||
import logging
|
||||
import cPickle
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.lib import PluginConfig, OpenLPToolbar, ServiceItem, Event, \
|
||||
@ -134,7 +135,8 @@ class ServiceManager(QtGui.QWidget):
|
||||
"""
|
||||
Clear the list to create a new service
|
||||
"""
|
||||
self.service_data.clearItems()
|
||||
self.ServiceManagerList.clear()
|
||||
self.serviceItems = []
|
||||
|
||||
def onDeleteFromService(self):
|
||||
"""
|
||||
@ -146,13 +148,34 @@ class ServiceManager(QtGui.QWidget):
|
||||
"""
|
||||
Save the current service
|
||||
"""
|
||||
pass
|
||||
filename = QtGui.QFileDialog.getSaveFileName(self, u'Save Order of Service',self.config.get_last_dir() )
|
||||
if filename != u'':
|
||||
self.config.set_last_dir(filename)
|
||||
print filename
|
||||
service = []
|
||||
for item in self.serviceItems:
|
||||
service.append({u'serviceitem':item[u'data'].get_oos_repr()})
|
||||
file = open(filename+u'.oos', u'wb')
|
||||
cPickle.dump(service, file)
|
||||
file.close()
|
||||
|
||||
def onLoadService(self):
|
||||
"""
|
||||
Load an existing service from disk
|
||||
"""
|
||||
pass
|
||||
filename = QtGui.QFileDialog.getOpenFileName(self, u'Open Order of Service',self.config.get_last_dir(),
|
||||
u'Services (*.oos)')
|
||||
if filename != u'':
|
||||
self.config.set_last_dir(filename)
|
||||
file = open(filename, u'r')
|
||||
items = cPickle.load(file)
|
||||
file.close()
|
||||
self.onNewService()
|
||||
for item in items:
|
||||
serviceitem = ServiceItem()
|
||||
serviceitem.RenderManager = self.parent.RenderManager
|
||||
serviceitem.set_from_oos(item)
|
||||
self.addServiceItem(serviceitem)
|
||||
|
||||
def onThemeComboBoxSelected(self, currentIndex):
|
||||
"""
|
||||
@ -162,16 +185,16 @@ class ServiceManager(QtGui.QWidget):
|
||||
self.parent.RenderManager.set_service_theme(self.service_theme)
|
||||
self.config.set_config(u'theme service theme', self.service_theme)
|
||||
|
||||
def addServiceItem(self, item):
|
||||
def addServiceItem(self, item, expand=True):
|
||||
"""
|
||||
Add an item to the list
|
||||
"""
|
||||
self.serviceItems.append({u'data': item, u'order': len(self.serviceItems)+1})
|
||||
treewidgetitem = QtGui.QTreeWidgetItem(self.ServiceManagerList)
|
||||
treewidgetitem.setText(0,item.title) # + u':' + item.shortname)
|
||||
treewidgetitem.setText(0,item.title)
|
||||
treewidgetitem.setIcon(0,item.iconic_representation)
|
||||
treewidgetitem.setData(0, QtCore.Qt.UserRole, QtCore.QVariant(len(self.serviceItems)))
|
||||
treewidgetitem.setExpanded(True)
|
||||
treewidgetitem.setExpanded(expand)
|
||||
item.render()
|
||||
count = 0
|
||||
for frame in item.frames:
|
||||
@ -204,13 +227,14 @@ class ServiceManager(QtGui.QWidget):
|
||||
count = 0
|
||||
for item in items:
|
||||
childCount = item.childCount()
|
||||
if childCount >= 1: # is the parent
|
||||
if childCount >= 1:
|
||||
pos = item.data(0, QtCore.Qt.UserRole).toInt()[0]
|
||||
else:
|
||||
parentitem = item.parent()
|
||||
pos = parentitem.data(0, QtCore.Qt.UserRole).toInt()[0]
|
||||
count = item.data(0, QtCore.Qt.UserRole).toInt()[0]
|
||||
pos = pos - 1 #adjust for zeor indexing
|
||||
#adjuest for zero based arrays
|
||||
pos = pos - 1
|
||||
return pos, count
|
||||
|
||||
def dragEnterEvent(self, event):
|
||||
@ -229,26 +253,6 @@ class ServiceManager(QtGui.QWidget):
|
||||
plugin = event.mimeData().text()
|
||||
self.parent.EventManager.post_event(Event(EventType.LoadServiceItem, plugin))
|
||||
|
||||
def oos_as_text(self):
|
||||
text=[]
|
||||
log.info( "oos as text")
|
||||
log.info("Data:"+str(self.service_data))
|
||||
for i in self.service_data:
|
||||
text.append("# " + str(i))
|
||||
text.append(i.get_oos_text())
|
||||
return '\n'.join(text)
|
||||
|
||||
def write_oos(self, filename):
|
||||
"""
|
||||
Write a full OOS file out - iterate over plugins and call their respective methods
|
||||
This format is totally arbitrary testing purposes - something sensible needs to go in here!
|
||||
"""
|
||||
oosfile=open(filename, "w")
|
||||
oosfile.write("# BEGIN OOS\n")
|
||||
oosfile.write(self.oos_as_text)
|
||||
oosfile.write("# END OOS\n")
|
||||
oosfile.close()
|
||||
|
||||
def updateThemeList(self, theme_list):
|
||||
"""
|
||||
Called from ThemeManager when the Themes have changed
|
||||
@ -264,4 +268,3 @@ class ServiceManager(QtGui.QWidget):
|
||||
self.service_theme = u''
|
||||
self.ThemeComboBox.setCurrentIndex(id)
|
||||
self.parent.RenderManager.set_service_theme(self.service_theme)
|
||||
|
||||
|
@ -135,11 +135,10 @@ class SlideController(QtGui.QWidget):
|
||||
self.PreviewListView = QtGui.QListView(self.Controller)
|
||||
self.PreviewListData = SlideData()
|
||||
self.PreviewListView.isLive = self.isLive
|
||||
self.PreviewListView.setFlow(1)
|
||||
self.PreviewListView.setViewMode(1)
|
||||
#self.PreviewListView.setFlow(1)
|
||||
#self.PreviewListView.setViewMode(1)
|
||||
self.PreviewListView.setWrapping(False)
|
||||
self.PreviewListView.setModel(self.PreviewListData)
|
||||
#self.PreviewListView.setSelectionRectVisible(True)
|
||||
self.PreviewListView.setSpacing(0)
|
||||
self.PreviewListView.setObjectName(u'PreviewListView')
|
||||
self.ControllerLayout.addWidget(self.PreviewListView)
|
||||
|
@ -33,9 +33,9 @@ class BibleImportForm(QtGui.QDialog, Ui_BibleImportDialog):
|
||||
global log
|
||||
log=logging.getLogger(u'BibleImportForm')
|
||||
log.info(u'BibleImportForm loaded')
|
||||
'''
|
||||
"""
|
||||
Class documentation goes here.
|
||||
'''
|
||||
"""
|
||||
def __init__(self, config, biblemanager , bibleplugin, parent = None):
|
||||
'''
|
||||
Constructor
|
||||
@ -124,7 +124,7 @@ class BibleImportForm(QtGui.QDialog, Ui_BibleImportDialog):
|
||||
# Was OSIS and is not any more stops lostFocus running mad
|
||||
if self.bible_type == u'OSIS':
|
||||
self.bible_type = None
|
||||
self.freeAll()
|
||||
self.resetScreenFieldStates()
|
||||
|
||||
def onBooksLocationEditLostFocus(self):
|
||||
self.checkOsis()
|
||||
@ -209,9 +209,9 @@ class BibleImportForm(QtGui.QDialog, Ui_BibleImportDialog):
|
||||
str(self.PermisionEdit.displayText()))
|
||||
self.bible_type = None
|
||||
# free the screen state restrictions
|
||||
self.freeAll()
|
||||
self.resetScreenFieldStates()
|
||||
# reset all the screen fields
|
||||
self.resetAll()
|
||||
self.resetEntryFields()
|
||||
|
||||
def checkOsis(self):
|
||||
if len(self.BooksLocationEdit.displayText()) > 0 or len(self.VerseLocationEdit.displayText()) > 0:
|
||||
@ -220,7 +220,7 @@ class BibleImportForm(QtGui.QDialog, Ui_BibleImportDialog):
|
||||
# Was CSV and is not any more stops lostFocus running mad
|
||||
if self.bible_type == u'CSV':
|
||||
self.bible_type = None
|
||||
self.freeAll()
|
||||
self.resetScreenFieldStates()
|
||||
|
||||
def checkHttp(self):
|
||||
if self.BibleComboBox.currentIndex() != 0 : # First slot is blank so no bible
|
||||
@ -229,7 +229,7 @@ class BibleImportForm(QtGui.QDialog, Ui_BibleImportDialog):
|
||||
# Was HTTP and is not any more stops lostFocus running mad
|
||||
if self.bible_type == u'HTTP':
|
||||
self.bible_type = None
|
||||
self.freeAll()
|
||||
self.resetScreenFieldStates()
|
||||
|
||||
def blockCsv(self):
|
||||
self.BooksLocationEdit.setReadOnly(True)
|
||||
@ -247,7 +247,7 @@ class BibleImportForm(QtGui.QDialog, Ui_BibleImportDialog):
|
||||
self.blockHttp()
|
||||
|
||||
def setOsis(self):
|
||||
self.bible_type = 'OSIS'
|
||||
self.bible_type = u'OSIS'
|
||||
self.OSISLocationEdit.setReadOnly(False)
|
||||
self.OsisFileButton.setEnabled(True)
|
||||
self.blockCsv()
|
||||
@ -268,8 +268,9 @@ class BibleImportForm(QtGui.QDialog, Ui_BibleImportDialog):
|
||||
self.LocationComboBox.setEnabled(False)
|
||||
self.BibleComboBox.setEnabled(False)
|
||||
|
||||
def freeAll(self):
|
||||
if self.bible_type == None: # only reset if no bible type set.
|
||||
def resetScreenFieldStates(self):
|
||||
# only reset if no bible type set.
|
||||
if self.bible_type == None:
|
||||
self.BooksLocationEdit.setReadOnly(False)
|
||||
self.VerseLocationEdit.setReadOnly(False)
|
||||
self.BooksFileButton.setEnabled(True)
|
||||
@ -279,7 +280,7 @@ class BibleImportForm(QtGui.QDialog, Ui_BibleImportDialog):
|
||||
self.LocationComboBox.setEnabled(True)
|
||||
self.BibleComboBox.setEnabled(True)
|
||||
|
||||
def resetAll(self):
|
||||
def resetEntryFields(self):
|
||||
self.BooksLocationEdit.setText(u'')
|
||||
self.VerseLocationEdit.setText(u'')
|
||||
self.OSISLocationEdit.setText(u'')
|
||||
|
@ -17,6 +17,7 @@ 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
|
||||
|
||||
from PyQt4 import Qt, QtCore, QtGui
|
||||
|
||||
@ -27,6 +28,10 @@ class BiblesTab(SettingsTab):
|
||||
"""
|
||||
BiblesTab is the Bibles settings tab in the settings dialog.
|
||||
"""
|
||||
global log
|
||||
log = logging.getLogger(u'BibleTab')
|
||||
log.info(u'Bible Tab loaded')
|
||||
|
||||
def __init__(self):
|
||||
self.paragraph_style = True
|
||||
self.show_new_chapters = False
|
||||
@ -67,14 +72,12 @@ class BiblesTab(SettingsTab):
|
||||
self.NewChaptersCheckBox = QtGui.QCheckBox(self.VerseDisplayGroupBox)
|
||||
self.NewChaptersCheckBox.setObjectName("NewChaptersCheckBox")
|
||||
self.VerseDisplayLayout.addWidget(self.NewChaptersCheckBox, 1, 0, 1, 1)
|
||||
|
||||
self.DisplayStyleWidget = QtGui.QWidget(self.VerseDisplayGroupBox)
|
||||
self.DisplayStyleWidget.setObjectName(u'DisplayStyleWidget')
|
||||
self.DisplayStyleLayout = QtGui.QHBoxLayout(self.DisplayStyleWidget)
|
||||
self.DisplayStyleLayout.setSpacing(8)
|
||||
self.DisplayStyleLayout.setMargin(0)
|
||||
self.DisplayStyleLayout.setObjectName(u'DisplayStyleLayout')
|
||||
|
||||
self.DisplayStyleLabel = QtGui.QLabel(self.DisplayStyleWidget)
|
||||
self.DisplayStyleLabel.setObjectName(u'DisplayStyleLabel')
|
||||
self.DisplayStyleLayout.addWidget(self.DisplayStyleLabel)
|
||||
@ -86,14 +89,12 @@ class BiblesTab(SettingsTab):
|
||||
self.DisplayStyleComboBox.addItem(QtCore.QString())
|
||||
self.DisplayStyleLayout.addWidget(self.DisplayStyleComboBox)
|
||||
self.VerseDisplayLayout.addWidget(self.DisplayStyleWidget, 2, 0, 1, 1)
|
||||
|
||||
self.BibleThemeWidget = QtGui.QWidget(self.VerseDisplayGroupBox)
|
||||
self.BibleThemeWidget.setObjectName(u'BibleThemeWidget')
|
||||
self.BibleThemeLayout = QtGui.QHBoxLayout(self.BibleThemeWidget)
|
||||
self.BibleThemeLayout.setSpacing(8)
|
||||
self.BibleThemeLayout.setMargin(0)
|
||||
self.BibleThemeLayout.setObjectName(u'BibleThemeLayout')
|
||||
|
||||
self.BibleThemeLabel = QtGui.QLabel(self.BibleThemeWidget)
|
||||
self.BibleThemeLabel.setObjectName(u'BibleThemeLabel')
|
||||
self.BibleThemeLayout.addWidget(self.BibleThemeLabel)
|
||||
@ -102,7 +103,6 @@ class BiblesTab(SettingsTab):
|
||||
self.BibleThemeComboBox.addItem(QtCore.QString())
|
||||
self.BibleThemeLayout.addWidget(self.BibleThemeComboBox)
|
||||
self.VerseDisplayLayout.addWidget(self.BibleThemeWidget, 3, 0, 1, 1)
|
||||
|
||||
self.ChangeNoteLabel = QtGui.QLabel(self.VerseDisplayGroupBox)
|
||||
self.ChangeNoteLabel.setObjectName(u'ChangeNoteLabel')
|
||||
self.VerseDisplayLayout.addWidget(self.ChangeNoteLabel, 4, 0, 1, 1)
|
||||
@ -111,7 +111,6 @@ class BiblesTab(SettingsTab):
|
||||
QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
|
||||
self.BibleLeftLayout.addItem(self.BibleLeftSpacer)
|
||||
self.BibleLayout.addWidget(self.BibleLeftWidget)
|
||||
|
||||
self.BibleRightWidget = QtGui.QWidget(self)
|
||||
self.BibleRightWidget.setObjectName(u'BibleRightWidget')
|
||||
self.BibleRightLayout = QtGui.QVBoxLayout(self.BibleRightWidget)
|
||||
@ -176,13 +175,15 @@ class BiblesTab(SettingsTab):
|
||||
def onNewChaptersCheckBoxChanged(self):
|
||||
check_state = self.NewChaptersCheckBox.checkState()
|
||||
self.show_new_chapters = False
|
||||
if check_state == 2: # we have a set value convert to True/False
|
||||
# we have a set value convert to True/False
|
||||
if check_state == 2:
|
||||
self.show_new_chapters = True
|
||||
|
||||
def onBibleSearchCheckBoxChanged(self):
|
||||
check_state = self.BibleSearchCheckBox.checkState()
|
||||
self.bible_search = False
|
||||
if check_state == 2: # we have a set value convert to True/False
|
||||
# we have a set value convert to True/False
|
||||
if check_state == 2:
|
||||
self.bible_search = True
|
||||
|
||||
def load(self):
|
||||
|
@ -42,9 +42,7 @@ class BibleList(QtGui.QListView):
|
||||
mimeData = QtCore.QMimeData()
|
||||
drag.setMimeData(mimeData)
|
||||
mimeData.setText(u'Bibles')
|
||||
|
||||
dropAction = drag.start(QtCore.Qt.CopyAction)
|
||||
|
||||
if dropAction == QtCore.Qt.CopyAction:
|
||||
self.close()
|
||||
|
||||
@ -90,7 +88,6 @@ class BibleMediaItem(MediaManagerItem):
|
||||
translate(u'BibleMediaItem',u'Add the selected Bible(s) to the service'),
|
||||
u':/system/system_add.png',
|
||||
self.onBibleAddClick, u'BibleAddItem')
|
||||
|
||||
# Create the tab widget
|
||||
self.SearchTabWidget = QtGui.QTabWidget(self)
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
@ -99,7 +96,6 @@ class BibleMediaItem(MediaManagerItem):
|
||||
sizePolicy.setHeightForWidth(self.SearchTabWidget.sizePolicy().hasHeightForWidth())
|
||||
self.SearchTabWidget.setSizePolicy(sizePolicy)
|
||||
self.SearchTabWidget.setObjectName(u'SearchTabWidget')
|
||||
|
||||
# Add the Quick Search tab
|
||||
self.QuickTab = QtGui.QWidget()
|
||||
self.QuickTab.setObjectName(u'QuickTab')
|
||||
@ -138,7 +134,6 @@ class BibleMediaItem(MediaManagerItem):
|
||||
QuickSpacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum,
|
||||
QtGui.QSizePolicy.Expanding)
|
||||
self.QuickLayout.addItem(QuickSpacerItem, 4, 2, 1, 1)
|
||||
|
||||
# Add the Advanced Search tab
|
||||
self.AdvancedTab = QtGui.QWidget()
|
||||
self.AdvancedTab.setObjectName(u'AdvancedTab')
|
||||
@ -170,45 +165,37 @@ class BibleMediaItem(MediaManagerItem):
|
||||
self.AdvancedToLabel = QtGui.QLabel(self.AdvancedTab)
|
||||
self.AdvancedToLabel.setObjectName(u'AdvancedToLabel')
|
||||
self.AdvancedLayout.addWidget(self.AdvancedToLabel, 4, 0, 1, 1)
|
||||
|
||||
self.AdvancedFromChapter = QtGui.QComboBox(self.AdvancedTab)
|
||||
self.AdvancedFromChapter.setObjectName(u'AdvancedFromChapter')
|
||||
self.AdvancedLayout.addWidget(self.AdvancedFromChapter, 3, 2, 1, 1)
|
||||
self.AdvancedFromVerse = QtGui.QComboBox(self.AdvancedTab)
|
||||
self.AdvancedFromVerse.setObjectName(u'AdvancedFromVerse')
|
||||
self.AdvancedLayout.addWidget(self.AdvancedFromVerse, 3, 3, 1, 1)
|
||||
|
||||
self.AdvancedToChapter = QtGui.QComboBox(self.AdvancedTab)
|
||||
self.AdvancedToChapter.setObjectName(u'AdvancedToChapter')
|
||||
self.AdvancedLayout.addWidget(self.AdvancedToChapter, 4, 2, 1, 1)
|
||||
self.AdvancedToVerse = QtGui.QComboBox(self.AdvancedTab)
|
||||
self.AdvancedToVerse.setObjectName(u'AdvancedToVerse')
|
||||
self.AdvancedLayout.addWidget(self.AdvancedToVerse, 4, 3, 1, 1)
|
||||
|
||||
self.AdvancedClearLabel = QtGui.QLabel(self.QuickTab)
|
||||
self.AdvancedClearLabel.setObjectName(u'QuickSearchLabel')
|
||||
self.AdvancedLayout.addWidget(self.AdvancedClearLabel, 5, 0, 1, 1)
|
||||
self.ClearAdvancedSearchComboBox = QtGui.QComboBox(self.QuickTab)
|
||||
self.ClearAdvancedSearchComboBox.setObjectName(u'ClearAdvancedSearchComboBox')
|
||||
self.AdvancedLayout.addWidget(self.ClearAdvancedSearchComboBox, 5, 2, 1, 1)
|
||||
|
||||
self.AdvancedSearchButton = QtGui.QPushButton(self.AdvancedTab)
|
||||
self.AdvancedSearchButton.setObjectName(u'AdvancedSearchButton')
|
||||
self.AdvancedLayout.addWidget(self.AdvancedSearchButton, 5, 3, 1, 1)
|
||||
self.SearchTabWidget.addTab(self.AdvancedTab, u'Advanced')
|
||||
|
||||
# Add the search tab widget to the page layout
|
||||
self.PageLayout.addWidget(self.SearchTabWidget)
|
||||
|
||||
self.BibleListView = BibleList()
|
||||
self.BibleListView.setAlternatingRowColors(True)
|
||||
self.BibleListData = TextListData()
|
||||
self.BibleListView.setModel(self.BibleListData)
|
||||
self.BibleListView.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
|
||||
self.BibleListView.setDragEnabled(True)
|
||||
|
||||
self.PageLayout.addWidget(self.BibleListView)
|
||||
|
||||
# Combo Boxes
|
||||
QtCore.QObject.connect(self.AdvancedVersionComboBox,
|
||||
QtCore.SIGNAL(u'activated(int)'), self.onAdvancedVersionComboBox)
|
||||
@ -226,7 +213,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||
QtCore.QObject.connect(self.QuickSearchButton,
|
||||
QtCore.SIGNAL(u'pressed()'), self.onQuickSearchButton)
|
||||
QtCore.QObject.connect(self.BibleListView,
|
||||
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onRowSelected)
|
||||
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onBiblePreviewClick)
|
||||
# Context Menus
|
||||
self.BibleListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
|
||||
self.BibleListView.addAction(self.contextMenuAction(
|
||||
@ -239,7 +226,6 @@ class BibleMediaItem(MediaManagerItem):
|
||||
self.BibleListView, u':/system/system_add.png',
|
||||
translate(u'BibleMediaItem',u'&Add to Service'), self.onBibleAddClick))
|
||||
|
||||
|
||||
def retranslateUi(self):
|
||||
log.debug(u'retranslateUi')
|
||||
self.QuickVersionLabel.setText(translate(u'BibleMediaItem', u'Version:'))
|
||||
@ -262,9 +248,6 @@ class BibleMediaItem(MediaManagerItem):
|
||||
self.ClearAdvancedSearchComboBox.addItem(translate(u'BibleMediaItem', u'Clear'))
|
||||
self.ClearAdvancedSearchComboBox.addItem(translate(u'BibleMediaItem', u'Keep'))
|
||||
|
||||
def onRowSelected(self, row):
|
||||
self.onBiblePreviewClick()
|
||||
|
||||
def initialise(self):
|
||||
log.debug(u'initialise')
|
||||
self.loadBibles()
|
||||
@ -277,7 +260,8 @@ class BibleMediaItem(MediaManagerItem):
|
||||
# load bibles into the combo boxes
|
||||
for bible in bibles:
|
||||
self.QuickVersionComboBox.addItem(bible)
|
||||
bibles = self.parent.biblemanager.get_bibles(u'partial') # Without HTTP
|
||||
# Without HTT
|
||||
bibles = self.parent.biblemanager.get_bibles(u'partial')
|
||||
first = True
|
||||
# load bibles into the combo boxes
|
||||
for bible in bibles:
|
||||
@ -367,7 +351,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||
self.parent.preview_controller.addServiceItem(service_item)
|
||||
|
||||
def generateSlideData(self, service_item):
|
||||
log.debug(u'Bible Preview Button pressed')
|
||||
log.debug(u'generating slide data')
|
||||
items = self.BibleListView.selectedIndexes()
|
||||
old_chapter = u''
|
||||
raw_slides=[]
|
||||
@ -459,7 +443,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||
end_chapter = ''
|
||||
start_verse = ''
|
||||
end_verse = ''
|
||||
search = search.replace(u' ', ' ').strip()
|
||||
search = search.replace(u' ', u' ').strip()
|
||||
original = search
|
||||
message = None
|
||||
# Remove book beware 0 index arrays
|
||||
|
@ -41,9 +41,7 @@ class CustomList(QtGui.QListView):
|
||||
mimeData = QtCore.QMimeData()
|
||||
drag.setMimeData(mimeData)
|
||||
mimeData.setText(u'Custom')
|
||||
|
||||
dropAction = drag.start(QtCore.Qt.CopyAction)
|
||||
|
||||
if dropAction == QtCore.Qt.CopyAction:
|
||||
self.close()
|
||||
|
||||
@ -65,36 +63,36 @@ class CustomMediaItem(MediaManagerItem):
|
||||
# Create buttons for the toolbar
|
||||
## New Custom Button ##
|
||||
self.addToolbarButton(
|
||||
translate('CustomMediaItem',u'New Custom Item'),
|
||||
translate('CustomMediaItem',u'Add a new Custom Item'),
|
||||
':/custom/custom_new.png', self.onCustomNewClick, 'CustomNewItem')
|
||||
translate(u'CustomMediaItem',u'New Custom Item'),
|
||||
translate(u'CustomMediaItem',u'Add a new Custom Item'),
|
||||
u':/custom/custom_new.png', self.onCustomNewClick, u'CustomNewItem')
|
||||
## Edit Custom Button ##
|
||||
self.addToolbarButton(
|
||||
translate('CustomMediaItem',u'Edit Custom Item'),
|
||||
translate('CustomMediaItem',u'Edit the selected Custom Item'),
|
||||
':/custom/custom_edit.png', self.onCustomEditClick, 'CustomEditItem')
|
||||
translate(u'CustomMediaItem',u'Edit Custom Item'),
|
||||
translate(u'CustomMediaItem',u'Edit the selected Custom Item'),
|
||||
u':/custom/custom_edit.png', self.onCustomEditClick, u'CustomEditItem')
|
||||
## Delete Custom Button ##
|
||||
self.addToolbarButton(
|
||||
translate('CustomMediaItem',u'Delete Custom Item'),
|
||||
translate('CustomMediaItem',u'Delete the selected Custom Item'),
|
||||
':/custom/custom_delete.png', self.onCustomDeleteClick, 'CustomDeleteItem')
|
||||
translate(u'CustomMediaItem',u'Delete Custom Item'),
|
||||
translate(u'CustomMediaItem',u'Delete the selected Custom Item'),
|
||||
u':/custom/custom_delete.png', self.onCustomDeleteClick, u'CustomDeleteItem')
|
||||
## Separator Line ##
|
||||
self.addToolbarSeparator()
|
||||
## Preview Custom Button ##
|
||||
self.addToolbarButton(
|
||||
translate('CustomMediaItem',u'Preview Custom Item'),
|
||||
translate('CustomMediaItem',u'Preview the selected Custom Item'),
|
||||
':/system/system_preview.png', self.onCustomPreviewClick, 'CustomPreviewItem')
|
||||
translate(u'CustomMediaItem',u'Preview Custom Item'),
|
||||
translate(u'CustomMediaItem',u'Preview the selected Custom Item'),
|
||||
u':/system/system_preview.png', self.onCustomPreviewClick, u'CustomPreviewItem')
|
||||
## Live Custom Button ##
|
||||
self.addToolbarButton(
|
||||
translate('CustomMediaItem',u'Go Live'),
|
||||
translate('CustomMediaItem', u'Send the selected Custom live'),
|
||||
':/system/system_live.png', self.onCustomLiveClick, 'CustomLiveItem')
|
||||
translate(u'CustomMediaItem',u'Go Live'),
|
||||
translate(u'CustomMediaItem', u'Send the selected Custom live'),
|
||||
u':/system/system_live.png', self.onCustomLiveClick, u'CustomLiveItem')
|
||||
## Add Custom Button ##
|
||||
self.addToolbarButton(
|
||||
translate('CustomMediaItem',u'Add Custom To Service'),
|
||||
translate('CustomMediaItem',u'Add the selected Custom(s) to the service'),
|
||||
':/system/system_add.png', self.onCustomAddClick, 'CustomAddItem')
|
||||
translate(u'CustomMediaItem',u'Add Custom To Service'),
|
||||
translate(u'CustomMediaItem',u'Add the selected Custom(s) to the service'),
|
||||
u':/system/system_add.png', self.onCustomAddClick, u'CustomAddItem')
|
||||
# Add the Customlist widget
|
||||
self.CustomWidget = QtGui.QWidget(self)
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
@ -103,64 +101,36 @@ class CustomMediaItem(MediaManagerItem):
|
||||
sizePolicy.setHeightForWidth(self.CustomWidget.sizePolicy().hasHeightForWidth())
|
||||
self.CustomWidget.setSizePolicy(sizePolicy)
|
||||
self.CustomWidget.setObjectName(u'CustomWidget')
|
||||
|
||||
# self.SearchLayout = QtGui.QGridLayout(self.CustomWidget)
|
||||
# self.SearchLayout.setObjectName('SearchLayout')
|
||||
# self.SearchTextLabel = QtGui.QLabel(self.CustomWidget)
|
||||
# self.SearchTextLabel.setObjectName('SearchTextLabel')
|
||||
# self.SearchTextLabel.setText('Search Text:')
|
||||
# self.SearchLayout.addWidget(self.SearchTextLabel, 2, 0, 1, 1)
|
||||
# self.SearchTextEdit = QtGui.QLineEdit(self.CustomWidget)
|
||||
# self.SearchTextEdit.setObjectName('SearchTextEdit')
|
||||
# self.SearchLayout.addWidget(self.SearchTextEdit, 2, 1, 1, 2)
|
||||
#
|
||||
# self.ClearTextButton = QtGui.QPushButton(self.CustomWidget)
|
||||
# self.ClearTextButton.setObjectName('ClearTextButton')
|
||||
#
|
||||
# self.SearchLayout.addWidget(self.ClearTextButton, 3, 1, 1, 1)
|
||||
# self.SearchTextButton = QtGui.QPushButton(self.CustomWidget)
|
||||
# self.SearchTextButton.setObjectName('SearchTextButton')
|
||||
# self.SearchLayout.addWidget(self.SearchTextButton, 3, 2, 1, 1)
|
||||
# Add the Custom widget to the page layout
|
||||
self.PageLayout.addWidget(self.CustomWidget)
|
||||
|
||||
self.CustomListView = CustomList()
|
||||
self.CustomListView.setAlternatingRowColors(True)
|
||||
self.CustomListData = TextListData()
|
||||
self.CustomListView.setModel(self.CustomListData)
|
||||
self.CustomListView.setDragEnabled(True)
|
||||
|
||||
self.PageLayout.addWidget(self.CustomListView)
|
||||
|
||||
# Signals
|
||||
# QtCore.QObject.connect(self.SearchTextButton,
|
||||
# QtCore.SIGNAL("pressed()"), self.onSearchTextButtonClick)
|
||||
# QtCore.QObject.connect(self.ClearTextButton,
|
||||
# QtCore.SIGNAL("pressed()"), self.onClearTextButtonClick)
|
||||
# QtCore.QObject.connect(self.SearchTextEdit,
|
||||
# QtCore.SIGNAL("textChanged(const QString&)"), self.onSearchTextEditChanged)
|
||||
# QtCore.QObject.connect(self.CustomListView,
|
||||
# QtCore.SIGNAL("itemPressed(QTableWidgetItem * item)"), self.onCustomSelected)
|
||||
|
||||
QtCore.QObject.connect(self.CustomListView,
|
||||
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onCustomPreviewClick)
|
||||
#define and add the context menu
|
||||
self.CustomListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
|
||||
self.CustomListView.addAction(self.contextMenuAction(self.CustomListView,
|
||||
':/custom/custom_edit.png', translate('CustomMediaItem', u'&Edit Custom'),
|
||||
':/custom/custom_edit.png', translate(u'CustomMediaItem', u'&Edit Custom'),
|
||||
self.onCustomEditClick))
|
||||
self.CustomListView.addAction(self.contextMenuSeparator(self.CustomListView))
|
||||
self.CustomListView.addAction(self.contextMenuAction(
|
||||
self.CustomListView, ':/system/system_preview.png',
|
||||
translate('CustomMediaItem',u'&Preview Custom'), self.onCustomPreviewClick))
|
||||
translate(u'CustomMediaItem',u'&Preview Custom'), self.onCustomPreviewClick))
|
||||
self.CustomListView.addAction(self.contextMenuAction(
|
||||
self.CustomListView, ':/system/system_live.png',
|
||||
translate('CustomMediaItem',u'&Show Live'), self.onCustomLiveClick))
|
||||
translate(u'CustomMediaItem',u'&Show Live'), self.onCustomLiveClick))
|
||||
self.CustomListView.addAction(self.contextMenuAction(
|
||||
self.CustomListView, ':/system/system_add.png',
|
||||
translate('CustomMediaItem',u'&Add to Service'), self.onCustomAddClick))
|
||||
translate(u'CustomMediaItem',u'&Add to Service'), self.onCustomAddClick))
|
||||
|
||||
# def retranslateUi(self):
|
||||
# self.ClearTextButton.setText(translate('CustomMediaItem', u'Clear'))
|
||||
# self.SearchTextButton.setText(translate('CustomMediaItem', u'Search'))
|
||||
# self.ClearTextButton.setText(translate(u'CustomMediaItem', u'Clear'))
|
||||
# self.SearchTextButton.setText(translate(u'CustomMediaItem', u'Search'))
|
||||
|
||||
def initialise(self):
|
||||
self.loadCustomList(self.parent.custommanager.get_all_slides())
|
||||
@ -177,7 +147,8 @@ class CustomMediaItem(MediaManagerItem):
|
||||
self.SearchTextEdit.clear()
|
||||
|
||||
def onSearchTextEditChanged(self, text):
|
||||
if len(text) > 3: # only search if > 3 characters
|
||||
# only search if > 3 characters
|
||||
if len(text) > 3:
|
||||
self.onSearchTextButtonClick()
|
||||
|
||||
def onSearchTextButtonClick(self):
|
||||
@ -209,21 +180,21 @@ class CustomMediaItem(MediaManagerItem):
|
||||
def onCustomPreviewClick(self):
|
||||
log.debug(u'Custom Preview Requested')
|
||||
service_item = ServiceItem(self.parent)
|
||||
service_item.addIcon( ":/media/media_song.png")
|
||||
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( ":/media/media_song.png")
|
||||
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( ":/media/media_song.png")
|
||||
service_item.addIcon(u':/media/media_song.png')
|
||||
self.generateSlideData(service_item)
|
||||
self.parent.service_manager.addServiceItem(service_item)
|
||||
|
||||
|
@ -42,9 +42,7 @@ class ImageList(QtGui.QListView):
|
||||
mimeData = QtCore.QMimeData()
|
||||
drag.setMimeData(mimeData)
|
||||
mimeData.setText(u'Image')
|
||||
|
||||
dropAction = drag.start(QtCore.Qt.CopyAction)
|
||||
|
||||
if dropAction == QtCore.Qt.CopyAction:
|
||||
self.close()
|
||||
|
||||
@ -65,32 +63,31 @@ class ImageMediaItem(MediaManagerItem):
|
||||
# Create buttons for the toolbar
|
||||
## New Song Button ##
|
||||
self.addToolbarButton(
|
||||
translate('ImageMediaItem', u'Load Image'),
|
||||
translate('ImageMediaItem', u'Load images into openlp.org'),
|
||||
':/images/image_load.png', self.onImagesNewClick, 'ImageNewItem')
|
||||
translate(u'ImageMediaItem', u'Load Image'),
|
||||
translate(u'ImageMediaItem', u'Load images into openlp.org'),
|
||||
u':/images/image_load.png', self.onImagesNewClick, u'ImageNewItem')
|
||||
## Delete Song Button ##
|
||||
self.addToolbarButton(
|
||||
translate('ImageMediaItem', u'Delete Image'),
|
||||
translate('ImageMediaItem', u'Delete the selected image'),
|
||||
':/images/image_delete.png', self.onImageDeleteClick, 'ImageDeleteItem')
|
||||
translate(u'ImageMediaItem', u'Delete Image'),
|
||||
translate(u'ImageMediaItem', u'Delete the selected image'),
|
||||
u':/images/image_delete.png', self.onImageDeleteClick, u'ImageDeleteItem')
|
||||
## Separator Line ##
|
||||
self.addToolbarSeparator()
|
||||
## Preview Song Button ##
|
||||
self.addToolbarButton(
|
||||
translate('ImageMediaItem', u'Preview Song'),
|
||||
translate('ImageMediaItem', u'Preview the selected image'),
|
||||
':/system/system_preview.png', self.onImagePreviewClick, 'ImagePreviewItem')
|
||||
translate(u'ImageMediaItem', u'Preview Song'),
|
||||
translate(u'ImageMediaItem', u'Preview the selected image'),
|
||||
u':/system/system_preview.png', self.onImagePreviewClick, u'ImagePreviewItem')
|
||||
## Live Song Button ##
|
||||
self.addToolbarButton(
|
||||
translate('ImageMediaItem', u'Go Live'),
|
||||
translate('ImageMediaItem', u'Send the selected image live'),
|
||||
':/system/system_live.png', self.onImageLiveClick, 'ImageLiveItem')
|
||||
translate(u'ImageMediaItem', u'Go Live'),
|
||||
translate(u'ImageMediaItem', u'Send the selected image live'),
|
||||
u':/system/system_live.png', self.onImageLiveClick, u'ImageLiveItem')
|
||||
## Add Song Button ##
|
||||
self.addToolbarButton(
|
||||
translate('ImageMediaItem', u'Add Image To Service'),
|
||||
translate('ImageMediaItem', u'Add the selected image(s) to the service'),
|
||||
':/system/system_add.png', self.onImageAddClick, 'ImageAddItem')
|
||||
|
||||
translate(u'ImageMediaItem', u'Add Image To Service'),
|
||||
translate(u'ImageMediaItem', u'Add the selected image(s) to the service'),
|
||||
u':/system/system_add.png', self.onImageAddClick, u'ImageAddItem')
|
||||
#Add the Image List widget
|
||||
self.ImageListView = ImageList()
|
||||
self.ImageListView.uniformItemSizes = True
|
||||
@ -101,33 +98,29 @@ class ImageMediaItem(MediaManagerItem):
|
||||
self.ImageListView.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)
|
||||
self.ImageListView.setAlternatingRowColors(True)
|
||||
self.ImageListView.setDragEnabled(True)
|
||||
self.ImageListView.setObjectName('ImageListView')
|
||||
|
||||
self.ImageListView.setObjectName(u'ImageListView')
|
||||
self.PageLayout.addWidget(self.ImageListView)
|
||||
|
||||
#define and add the context menu
|
||||
self.ImageListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
|
||||
|
||||
self.ImageListView.addAction(self.contextMenuAction(
|
||||
self.ImageListView, ':/system/system_preview.png',
|
||||
translate('ImageMediaItem', u'&Preview Image'),
|
||||
translate(u'ImageMediaItem', u'&Preview Image'),
|
||||
self.onImagePreviewClick))
|
||||
self.ImageListView.addAction(self.contextMenuAction(
|
||||
self.ImageListView, ':/system/system_live.png',
|
||||
translate('ImageMediaItem', u'&Show Live'),
|
||||
translate(u'ImageMediaItem', u'&Show Live'),
|
||||
self.onImageLiveClick))
|
||||
self.ImageListView.addAction(self.contextMenuAction(
|
||||
self.ImageListView, ':/system/system_add.png',
|
||||
translate('ImageMediaItem', u'&Add to Service'),
|
||||
translate(u'ImageMediaItem', u'&Add to Service'),
|
||||
self.onImageAddClick))
|
||||
|
||||
|
||||
def initialise(self):
|
||||
self.loadImageList(self.parent.config.load_list(u'images'))
|
||||
|
||||
def onImagesNewClick(self):
|
||||
files = QtGui.QFileDialog.getOpenFileNames(None,
|
||||
translate('ImageMediaItem', u'Select Image(s)'),
|
||||
translate(u'ImageMediaItem', u'Select Image(s)'),
|
||||
self.parent.config.get_last_dir(),
|
||||
u'Images (*.jpg *.gif *.png *.bmp)')
|
||||
log.info(u'New image(s)', str(files))
|
||||
@ -160,20 +153,20 @@ class ImageMediaItem(MediaManagerItem):
|
||||
def onImagePreviewClick(self):
|
||||
log.debug(u'Image Preview Requested')
|
||||
service_item = ServiceItem(self.parent)
|
||||
service_item.addIcon( ":/media/media_image.png")
|
||||
service_item.addIcon(u':/media/media_image.png')
|
||||
self.generateSlideData(service_item)
|
||||
self.parent.preview_controller.addServiceItem(service_item)
|
||||
|
||||
def onImageLiveClick(self):
|
||||
log.debug(u'Image Live Requested')
|
||||
service_item = ServiceItem(self.parent)
|
||||
service_item.addIcon( ":/media/media_image.png")
|
||||
service_item.addIcon(u':/media/media_image.png')
|
||||
self.generateSlideData(service_item)
|
||||
self.parent.live_controller.addServiceItem(service_item)
|
||||
|
||||
def onImageAddClick(self):
|
||||
log.debug(u'Image Add Requested')
|
||||
service_item = ServiceItem(self.parent)
|
||||
service_item.addIcon( ":/media/media_image.png")
|
||||
service_item.addIcon(u':/media/media_image.png')
|
||||
self.generateSlideData(service_item)
|
||||
self.parent.service_manager.addServiceItem(service_item)
|
||||
|
@ -43,9 +43,7 @@ class SongList(QtGui.QListView):
|
||||
mimeData = QtCore.QMimeData()
|
||||
drag.setMimeData(mimeData)
|
||||
mimeData.setText(u'Song')
|
||||
|
||||
dropAction = drag.start(QtCore.Qt.CopyAction)
|
||||
|
||||
if dropAction == QtCore.Qt.CopyAction:
|
||||
self.close()
|
||||
|
||||
@ -54,8 +52,8 @@ class SongMediaItem(MediaManagerItem):
|
||||
This is the custom media manager item for Songs.
|
||||
"""
|
||||
global log
|
||||
log = logging.getLogger("SongMediaItem")
|
||||
log.info("Song Media Item loaded")
|
||||
log = logging.getLogger(u'SongMediaItem')
|
||||
log.info(u'Song Media Item loaded')
|
||||
|
||||
def __init__(self, parent, icon, title):
|
||||
MediaManagerItem.__init__(self, parent, icon, title)
|
||||
@ -66,30 +64,30 @@ class SongMediaItem(MediaManagerItem):
|
||||
self.addToolbar()
|
||||
# Create buttons for the toolbar
|
||||
## New Song Button ##
|
||||
self.addToolbarButton(translate('SongMediaItem', u'New Song'),
|
||||
translate('SongMediaItem', u'Add a new song'),
|
||||
self.addToolbarButton(translate(u'SongMediaItem', u'New Song'),
|
||||
translate(u'SongMediaItem', u'Add a new song'),
|
||||
':/songs/song_new.png', self.onSongNewClick, 'SongNewItem')
|
||||
## Edit Song Button ##
|
||||
self.addToolbarButton(translate('SongMediaItem', u'Edit Song'),
|
||||
translate('SongMediaItem', u'Edit the selected song'),
|
||||
self.addToolbarButton(translate(u'SongMediaItem', u'Edit Song'),
|
||||
translate(u'SongMediaItem', u'Edit the selected song'),
|
||||
':/songs/song_edit.png', self.onSongEditClick, 'SongEditItem')
|
||||
## Delete Song Button ##
|
||||
self.addToolbarButton(translate('SongMediaItem', u'Delete Song'),
|
||||
translate('SongMediaItem', u'Delete the selected song'),
|
||||
self.addToolbarButton(translate(u'SongMediaItem', u'Delete Song'),
|
||||
translate(u'SongMediaItem', u'Delete the selected song'),
|
||||
':/songs/song_delete.png', self.onSongDeleteClick, 'SongDeleteItem')
|
||||
## Separator Line ##
|
||||
self.addToolbarSeparator()
|
||||
## Preview Song Button ##
|
||||
self.addToolbarButton(translate('SongMediaItem', u'Preview Song'),
|
||||
translate('SongMediaItem', u'Preview the selected song'),
|
||||
self.addToolbarButton(translate(u'SongMediaItem', u'Preview Song'),
|
||||
translate(u'SongMediaItem', u'Preview the selected song'),
|
||||
':/system/system_preview.png', self.onSongPreviewClick, 'SongPreviewItem')
|
||||
## Live Song Button ##
|
||||
self.addToolbarButton(translate('SongMediaItem', u'Go Live'),
|
||||
translate('SongMediaItem', u'Send the selected song live'),
|
||||
self.addToolbarButton(translate(u'SongMediaItem', u'Go Live'),
|
||||
translate(u'SongMediaItem', u'Send the selected song live'),
|
||||
':/system/system_live.png', self.onSongLiveClick, 'SongLiveItem')
|
||||
## Add Song Button ##
|
||||
self.addToolbarButton(translate('SongMediaItem', u'Add Song To Service'),
|
||||
translate('SongMediaItem', u'Add the selected song(s) to the service'),
|
||||
self.addToolbarButton(translate(u'SongMediaItem', u'Add Song To Service'),
|
||||
translate(u'SongMediaItem', u'Add the selected song(s) to the service'),
|
||||
':/system/system_add.png', self.onSongAddClick, 'SongAddItem')
|
||||
## Add the songlist widget ##
|
||||
# Create the tab widget
|
||||
@ -99,92 +97,77 @@ class SongMediaItem(MediaManagerItem):
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.SongWidget.sizePolicy().hasHeightForWidth())
|
||||
self.SongWidget.setSizePolicy(sizePolicy)
|
||||
self.SongWidget.setObjectName('SongWidget')
|
||||
self.SongWidget.setObjectName(u'SongWidget')
|
||||
self.SearchLayout = QtGui.QGridLayout(self.SongWidget)
|
||||
self.SearchLayout.setObjectName('SearchLayout')
|
||||
self.SearchLayout.setObjectName(u'SearchLayout')
|
||||
self.SearchTypeComboBox = QtGui.QComboBox(self.SongWidget)
|
||||
self.SearchTypeComboBox.setObjectName('SearchTypeComboBox')
|
||||
self.SearchTypeComboBox.setObjectName(u'SearchTypeComboBox')
|
||||
self.SearchLayout.addWidget(self.SearchTypeComboBox, 0, 1, 1, 2)
|
||||
self.SearchTypeLabel = QtGui.QLabel(self.SongWidget)
|
||||
self.SearchTypeLabel.setObjectName('SearchTypeLabel')
|
||||
self.SearchTypeLabel.setObjectName(u'SearchTypeLabel')
|
||||
self.SearchLayout.addWidget(self.SearchTypeLabel, 0, 0, 1, 1)
|
||||
self.SearchTextLabel = QtGui.QLabel(self.SongWidget)
|
||||
self.SearchTextLabel.setObjectName('SearchTextLabel')
|
||||
self.SearchTextLabel.setObjectName(u'SearchTextLabel')
|
||||
self.SearchLayout.addWidget(self.SearchTextLabel, 2, 0, 1, 1)
|
||||
self.SearchTextEdit = QtGui.QLineEdit(self.SongWidget)
|
||||
self.SearchTextEdit.setObjectName('SearchTextEdit')
|
||||
self.SearchTextEdit.setObjectName(u'SearchTextEdit')
|
||||
self.SearchLayout.addWidget(self.SearchTextEdit, 2, 1, 1, 2)
|
||||
self.ClearTextButton = QtGui.QPushButton(self.SongWidget)
|
||||
self.ClearTextButton.setObjectName('ClearTextButton')
|
||||
self.ClearTextButton.setObjectName(u'ClearTextButton')
|
||||
self.SearchLayout.addWidget(self.ClearTextButton, 3, 1, 1, 1)
|
||||
self.SearchTextButton = QtGui.QPushButton(self.SongWidget)
|
||||
self.SearchTextButton.setObjectName('SearchTextButton')
|
||||
self.SearchTextButton.setObjectName(u'SearchTextButton')
|
||||
self.SearchLayout.addWidget(self.SearchTextButton, 3, 2, 1, 1)
|
||||
# Add the song widget to the page layout
|
||||
self.PageLayout.addWidget(self.SongWidget)
|
||||
|
||||
self.SongListView = SongList()
|
||||
self.SongListView.setAlternatingRowColors(True)
|
||||
self.SongListData = TextListData()
|
||||
self.SongListView.setModel(self.SongListData)
|
||||
self.SongListView.setDragEnabled(True)
|
||||
|
||||
# self.SongListView = QtGui.QTableWidget()
|
||||
# self.SongListView.setColumnCount(2)
|
||||
# self.SongListView.setColumnHidden(0, True)
|
||||
# self.SongListView.setColumnWidth(1, 240)
|
||||
# self.SongListView.setShowGrid(False)
|
||||
# self.SongListView.setSortingEnabled(False)
|
||||
# self.SongListView.setAlternatingRowColors(True)
|
||||
# self.SongListView.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
|
||||
# self.SongListView.horizontalHeader().setVisible(False)
|
||||
# self.SongListView.verticalHeader().setVisible(False)
|
||||
# self.SongListView.setGeometry(QtCore.QRect(10, 100, 256, 591))
|
||||
self.SongListView.setObjectName('SongListView')
|
||||
|
||||
self.SongListView.setObjectName(u'SongListView')
|
||||
self.PageLayout.addWidget(self.SongListView)
|
||||
self.SongListView.setDragEnabled(True)
|
||||
|
||||
# Signals and slots
|
||||
QtCore.QObject.connect(self.SearchTextButton,
|
||||
QtCore.SIGNAL('pressed()'), self.onSearchTextButtonClick)
|
||||
QtCore.SIGNAL(u'pressed()'), self.onSearchTextButtonClick)
|
||||
QtCore.QObject.connect(self.ClearTextButton,
|
||||
QtCore.SIGNAL('pressed()'), self.onClearTextButtonClick)
|
||||
QtCore.SIGNAL(u'pressed()'), self.onClearTextButtonClick)
|
||||
QtCore.QObject.connect(self.SearchTextEdit,
|
||||
QtCore.SIGNAL('textChanged(const QString&)'), self.onSearchTextEditChanged)
|
||||
# QtCore.QObject.connect(self.SongListView,
|
||||
# QtCore.SIGNAL('itemPressed(QTableWidgetItem * item)'), self.onSongSelected)
|
||||
QtCore.SIGNAL(u'textChanged(const QString&)'), self.onSearchTextEditChanged)
|
||||
QtCore.QObject.connect(self.SongListView,
|
||||
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onSongPreviewClick)
|
||||
#define and add the context menu
|
||||
self.SongListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
|
||||
self.SongListView.addAction(self.contextMenuAction(self.SongListView,
|
||||
':/songs/song_new.png', translate('SongMediaItem', u'&Edit Song'),
|
||||
':/songs/song_new.png', translate(u'SongMediaItem', u'&Edit Song'),
|
||||
self.onSongEditClick))
|
||||
self.SongListView.addAction(self.contextMenuSeparator(self.SongListView))
|
||||
self.SongListView.addAction(self.contextMenuAction(self.SongListView,
|
||||
':/system/system_preview.png', translate('SongMediaItem', u'&Preview Song'),
|
||||
':/system/system_preview.png', translate(u'SongMediaItem', u'&Preview Song'),
|
||||
self.onSongPreviewClick))
|
||||
self.SongListView.addAction(self.contextMenuAction(self.SongListView,
|
||||
':/system/system_live.png', translate('SongMediaItem', u'&Show Live'),
|
||||
':/system/system_live.png', translate(u'SongMediaItem', u'&Show Live'),
|
||||
self.onSongLiveClick))
|
||||
self.SongListView.addAction(self.contextMenuAction(self.SongListView,
|
||||
':/system/system_add.png', translate('SongMediaItem', u'&Add to Service'),
|
||||
':/system/system_add.png', translate(u'SongMediaItem', u'&Add to Service'),
|
||||
self.onSongAddClick))
|
||||
|
||||
def retranslateUi(self):
|
||||
self.SearchTypeLabel.setText(translate('SongMediaItem', u'Search Type:'))
|
||||
self.SearchTextLabel.setText(translate('SongMediaItem', u'Search Text:'))
|
||||
self.ClearTextButton.setText(translate('SongMediaItem', u'Clear'))
|
||||
self.SearchTextButton.setText(translate('SongMediaItem', u'Search'))
|
||||
self.SearchTypeLabel.setText(translate(u'SongMediaItem', u'Search Type:'))
|
||||
self.SearchTextLabel.setText(translate(u'SongMediaItem', u'Search Text:'))
|
||||
self.ClearTextButton.setText(translate(u'SongMediaItem', u'Clear'))
|
||||
self.SearchTextButton.setText(translate(u'SongMediaItem', u'Search'))
|
||||
|
||||
def initialise(self):
|
||||
self.SearchTypeComboBox.addItem(translate('SongMediaItem', u'Titles'))
|
||||
self.SearchTypeComboBox.addItem(translate('SongMediaItem', u'Lyrics'))
|
||||
self.SearchTypeComboBox.addItem(translate('SongMediaItem', u'Authors'))
|
||||
self.SearchTypeComboBox.addItem(translate(u'SongMediaItem', u'Titles'))
|
||||
self.SearchTypeComboBox.addItem(translate(u'SongMediaItem', u'Lyrics'))
|
||||
self.SearchTypeComboBox.addItem(translate(u'SongMediaItem', u'Authors'))
|
||||
|
||||
def displayResults(self, searchresults):
|
||||
log.debug("display results")
|
||||
log.debug(u'display results')
|
||||
self.SongListData.resetStore()
|
||||
#log.debug("Records returned from search %s", len(searchresults))
|
||||
#log.debug(u'Records returned from search %s", len(searchresults))
|
||||
for song in searchresults:
|
||||
author_list = u''
|
||||
for author in song.authors:
|
||||
@ -192,7 +175,6 @@ class SongMediaItem(MediaManagerItem):
|
||||
author_list = author_list + u', '
|
||||
author_list = author_list + author.display_name
|
||||
song_detail = str(u'%s (%s)' % (str(song.title), str(author_list)))
|
||||
|
||||
self.SongListData.addRow(song.id,song_detail)
|
||||
|
||||
def onClearTextButtonClick(self):
|
||||
@ -205,7 +187,7 @@ class SongMediaItem(MediaManagerItem):
|
||||
search_length = 3
|
||||
if self.SearchTypeComboBox.currentIndex() == 1:
|
||||
search_length = 7
|
||||
if len(text) > search_length: # only search if > 3 characters
|
||||
if len(text) > search_length:
|
||||
self.onSearchTextButtonClick()
|
||||
|
||||
def onSearchTextButtonClick(self):
|
||||
@ -213,13 +195,13 @@ class SongMediaItem(MediaManagerItem):
|
||||
search_results = []
|
||||
search_type = self.SearchTypeComboBox.currentIndex()
|
||||
if search_type == 0:
|
||||
log.debug("Titles Search")
|
||||
log.debug(u'Titles Search')
|
||||
search_results = self.parent.songmanager.search_song_title(search_keywords)
|
||||
elif search_type == 1:
|
||||
log.debug("Lyrics Search")
|
||||
log.debug(u'Lyrics Search')
|
||||
search_results = self.parent.songmanager.search_song_lyrics(search_keywords)
|
||||
elif search_type == 2:
|
||||
log.debug("Authors Search")
|
||||
log.debug(u'Authors Search')
|
||||
#searchresults = self.songmanager.get_song_from_author(searchtext)
|
||||
self.displayResults(search_results)
|
||||
|
||||
@ -242,7 +224,7 @@ class SongMediaItem(MediaManagerItem):
|
||||
|
||||
def onSongPreviewClick(self):
|
||||
service_item = ServiceItem(self.parent)
|
||||
service_item.addIcon( ":/media/media_song.png")
|
||||
service_item.addIcon(u':/media/media_song.png')
|
||||
self.generateSlideData(service_item)
|
||||
self.parent.preview_controller.addServiceItem(service_item)
|
||||
|
||||
@ -267,12 +249,12 @@ class SongMediaItem(MediaManagerItem):
|
||||
|
||||
def onSongLiveClick(self):
|
||||
service_item = ServiceItem(self.parent)
|
||||
service_item.addIcon( ":/media/media_song.png")
|
||||
service_item.addIcon(u':/media/media_song.png')
|
||||
self.generateSlideData(service_item)
|
||||
self.parent.live_controller.addServiceItem(service_item)
|
||||
|
||||
def onSongAddClick(self):
|
||||
service_item = ServiceItem(self.parent)
|
||||
service_item.addIcon( ":/media/media_song.png")
|
||||
service_item.addIcon( u':/media/media_song.png')
|
||||
self.generateSlideData(service_item)
|
||||
self.parent.service_manager.addServiceItem(service_item)
|
||||
|
Loading…
Reference in New Issue
Block a user