forked from openlp/openlp
trb143/renderer r1020
This commit is contained in:
commit
d37a635857
@ -1 +1 @@
|
|||||||
1.9.2
|
1.9.2-bzr987
|
@ -35,6 +35,67 @@ from PyQt4 import QtCore, QtGui
|
|||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
# TODO make external and configurable in alpha 4 via a settings dialog
|
||||||
|
html_expands = []
|
||||||
|
|
||||||
|
html_expands.append({u'desc':u'Red', u'start tag':u'{r}', \
|
||||||
|
u'start html':u'<font color=red>', \
|
||||||
|
u'end tag':u'{/r}', u'end html':u'</font>', \
|
||||||
|
u'protected':False})
|
||||||
|
html_expands.append({u'desc':u'Black', u'start tag':u'{b}', \
|
||||||
|
u'start html':u'<font color=black>', \
|
||||||
|
u'end tag':u'{/b}', u'end html':u'</font>', \
|
||||||
|
u'protected':False})
|
||||||
|
html_expands.append({u'desc':u'Blue', u'start tag':u'{bl}', \
|
||||||
|
u'start html':u'<font color=blue>', \
|
||||||
|
u'end tag':u'{/bl}', u'end html':u'</font>', \
|
||||||
|
u'protected':False})
|
||||||
|
html_expands.append({u'desc':u'Yellow', u'start tag':u'{y}', \
|
||||||
|
u'start html':u'<font color=yellow>', \
|
||||||
|
u'end tag':u'{/y}', u'end html':u'</font>', \
|
||||||
|
u'protected':False})
|
||||||
|
html_expands.append({u'desc':u'Green', u'start tag':u'{g}', \
|
||||||
|
u'start html':u'<font color=green>', \
|
||||||
|
u'end tag':u'{/g}', u'end html':u'</font>', \
|
||||||
|
u'protected':False})
|
||||||
|
html_expands.append({u'desc':u'Pink', u'start tag':u'{pk}', \
|
||||||
|
u'start html':u'<font color=#CC33CC>', \
|
||||||
|
u'end tag':u'{/pk}', u'end html':u'</font>', \
|
||||||
|
u'protected':False})
|
||||||
|
html_expands.append({u'desc':u'Orange', u'start tag':u'{o}', \
|
||||||
|
u'start html':u'<font color=#CC0033>', \
|
||||||
|
u'end tag':u'{/o}', u'end html':u'</font>', \
|
||||||
|
u'protected':False})
|
||||||
|
html_expands.append({u'desc':u'Purple', u'start tag':u'{pp}', \
|
||||||
|
u'start html':u'<font color=#9900FF>', \
|
||||||
|
u'end tag':u'{/pp}', u'end html':u'</font>', \
|
||||||
|
u'protected':False})
|
||||||
|
html_expands.append({u'desc':u'White', u'start tag':u'{w}', \
|
||||||
|
u'start html':u'<font color=white>', \
|
||||||
|
u'end tag':u'{/w}', u'end html':u'</font>', \
|
||||||
|
u'protected':False})
|
||||||
|
html_expands.append({u'desc':u'Superscript', u'start tag':u'{su}', \
|
||||||
|
u'start html':u'<sup>', \
|
||||||
|
u'end tag':u'{/su}', u'end html':u'</sup>', \
|
||||||
|
u'protected':True})
|
||||||
|
html_expands.append({u'desc':u'Subscript', u'start tag':u'{sb}', \
|
||||||
|
u'start html':u'<sub>', \
|
||||||
|
u'end tag':u'{/sb}', u'end html':u'</sub>', \
|
||||||
|
u'protected':True})
|
||||||
|
html_expands.append({u'desc':u'Paragraph', u'start tag':u'{p}', \
|
||||||
|
u'start html':u'<p>', \
|
||||||
|
u'end tag':u'{/p}', u'end html':u'</p>', \
|
||||||
|
u'protected':True})
|
||||||
|
html_expands.append({u'desc':u'Bold', u'start tag':u'{st}', \
|
||||||
|
u'start html':u'<strong>', \
|
||||||
|
u'end tag':u'{/st}', \
|
||||||
|
u'end html':u'</strong>', \
|
||||||
|
u'protected':True})
|
||||||
|
html_expands.append({u'desc':u'Italics', u'start tag':u'{it}', \
|
||||||
|
u'start html':u'<em>', \
|
||||||
|
u'end tag':u'{/it}', u'end html':u'</em>', \
|
||||||
|
u'protected':True})
|
||||||
|
|
||||||
def translate(context, text, comment=None):
|
def translate(context, text, comment=None):
|
||||||
"""
|
"""
|
||||||
A special shortcut method to wrap around the Qt4 translation functions.
|
A special shortcut method to wrap around the Qt4 translation functions.
|
||||||
@ -232,6 +293,25 @@ def check_item_selected(list_widget, message):
|
|||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def clean_tags(text):
|
||||||
|
"""
|
||||||
|
Remove Tags from text for display
|
||||||
|
"""
|
||||||
|
text = text.replace(u'<br>', u'\n')
|
||||||
|
for tag in html_expands:
|
||||||
|
text = text.replace(tag[u'start tag'], u'')
|
||||||
|
text = text.replace(tag[u'end tag'], u'')
|
||||||
|
return text
|
||||||
|
|
||||||
|
def expand_tags(text):
|
||||||
|
"""
|
||||||
|
Expand tags HTML for display
|
||||||
|
"""
|
||||||
|
for tag in html_expands:
|
||||||
|
text = text.replace(tag[u'start tag'], tag[u'start html'])
|
||||||
|
text = text.replace(tag[u'end tag'], tag[u'end html'])
|
||||||
|
return text
|
||||||
|
|
||||||
from eventreceiver import Receiver
|
from eventreceiver import Receiver
|
||||||
from settingsmanager import SettingsManager
|
from settingsmanager import SettingsManager
|
||||||
from plugin import PluginStatus, Plugin
|
from plugin import PluginStatus, Plugin
|
||||||
|
@ -116,6 +116,7 @@ body {
|
|||||||
else
|
else
|
||||||
img.style.display = 'block';
|
img.style.display = 'block';
|
||||||
}
|
}
|
||||||
|
|
||||||
function show_blank(state){
|
function show_blank(state){
|
||||||
var black = 'none';
|
var black = 'none';
|
||||||
var lyrics = '';
|
var lyrics = '';
|
||||||
@ -175,8 +176,8 @@ body {
|
|||||||
return text.clientHeight;
|
return text.clientHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
function show_footer(text){
|
function show_footer(footertext){
|
||||||
document.getElementById('footer').innerHTML(text);
|
document.getElementById('footer').innerHTML(footertext);
|
||||||
}
|
}
|
||||||
|
|
||||||
function show_text(newtext){
|
function show_text(newtext){
|
||||||
|
@ -31,7 +31,7 @@ import logging
|
|||||||
|
|
||||||
from PyQt4 import QtGui, QtCore
|
from PyQt4 import QtGui, QtCore
|
||||||
|
|
||||||
from openlp.core.lib import resize_image
|
from openlp.core.lib import resize_image, expand_tags
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -80,7 +80,6 @@ class Renderer(object):
|
|||||||
self.bg_image = None
|
self.bg_image = None
|
||||||
self._bg_image_filename = None
|
self._bg_image_filename = None
|
||||||
self.theme_name = theme.theme_name
|
self.theme_name = theme.theme_name
|
||||||
#self._set_theme_font()
|
|
||||||
if theme.background_type == u'image':
|
if theme.background_type == u'image':
|
||||||
if theme.background_filename:
|
if theme.background_filename:
|
||||||
self.set_bg_image(theme.background_filename)
|
self.set_bg_image(theme.background_filename)
|
||||||
@ -169,13 +168,22 @@ class Renderer(object):
|
|||||||
doc.setDefaultFont(df)
|
doc.setDefaultFont(df)
|
||||||
layout = doc.documentLayout()
|
layout = doc.documentLayout()
|
||||||
formatted = []
|
formatted = []
|
||||||
shell = u'<p>%s</p>'
|
if self._theme.font_main_weight == u'Bold' and \
|
||||||
|
self._theme.font_main_italics:
|
||||||
|
shell = u'{p}{st}{it}%s{/it}{/st}{/p}'
|
||||||
|
elif self._theme.font_main_weight == u'Bold' and \
|
||||||
|
not self._theme.font_main_italics:
|
||||||
|
shell = u'{p}{st}%s{/st}{/p}'
|
||||||
|
elif self._theme.font_main_italics:
|
||||||
|
shell = u'{p}{it}%s{/it}{/p}'
|
||||||
|
else:
|
||||||
|
shell = u'{p}%s{/p}'
|
||||||
temp_text = u''
|
temp_text = u''
|
||||||
old_html_text = u''
|
old_html_text = u''
|
||||||
for line in text:
|
for line in text:
|
||||||
# mark line ends
|
# mark line ends
|
||||||
temp_text = temp_text + line + line_end
|
temp_text = temp_text + line + line_end
|
||||||
html_text = shell % temp_text
|
html_text = shell % expand_tags(temp_text)
|
||||||
doc.setHtml(html_text)
|
doc.setHtml(html_text)
|
||||||
# Text too long so gone to next mage
|
# Text too long so gone to next mage
|
||||||
if layout.pageCount() != 1:
|
if layout.pageCount() != 1:
|
||||||
@ -186,126 +194,17 @@ class Renderer(object):
|
|||||||
log.debug(u'format_slide - End')
|
log.debug(u'format_slide - End')
|
||||||
return formatted
|
return formatted
|
||||||
|
|
||||||
# def pre_render_text(self, text):
|
|
||||||
# metrics = QtGui.QFontMetrics(self.main_font)
|
|
||||||
# #work out line width
|
|
||||||
# line_width = self._rect.width()
|
|
||||||
# #number of lines on a page - adjust for rounding up.
|
|
||||||
# line_height = metrics.height()
|
|
||||||
# if self._theme.display_shadow:
|
|
||||||
# line_height += int(self._theme.display_shadow_size)
|
|
||||||
# if self._theme.display_outline:
|
|
||||||
# # pixels top/bottom
|
|
||||||
# line_height += 2 * int(self._theme.display_outline_size)
|
|
||||||
# page_length = int(self._rect.height() / line_height )
|
|
||||||
# #Average number of characters in line
|
|
||||||
# ave_line_width = line_width / metrics.averageCharWidth()
|
|
||||||
# #Maximum size of a character
|
|
||||||
# max_char_width = metrics.maxWidth()
|
|
||||||
# #Max characters pre line based on min size of a character
|
|
||||||
# char_per_line = line_width / metrics.width(u'i')
|
|
||||||
# log.debug(u'Page Length area height %s , metrics %s , lines %s' %
|
|
||||||
# (int(self._rect.height()), metrics.height(), page_length ))
|
|
||||||
# split_pages = []
|
|
||||||
# page = []
|
|
||||||
# split_lines = []
|
|
||||||
# count = 0
|
|
||||||
# for line in text:
|
|
||||||
# #Must be a blank line so keep it.
|
|
||||||
# if len(line) == 0:
|
|
||||||
# line = u' '
|
|
||||||
# while line:
|
|
||||||
# pos = char_per_line
|
|
||||||
# split_text = line[:pos]
|
|
||||||
# #line needs splitting
|
|
||||||
# if metrics.width(split_text, -1) > line_width:
|
|
||||||
# #We have no spaces
|
|
||||||
# if split_text.find(u' ') == -1:
|
|
||||||
# #Move back 1 char at a time till it fits
|
|
||||||
# while metrics.width(split_text, -1) > line_width:
|
|
||||||
# split_text = split_text[:-1]
|
|
||||||
# pos = len(split_text)
|
|
||||||
# else:
|
|
||||||
# #We have spaces so split at previous one
|
|
||||||
# while metrics.width(split_text, -1) > line_width:
|
|
||||||
# pos = split_text.rfind(u' ')
|
|
||||||
# #no more spaces and we are still too long
|
|
||||||
# if pos == -1:
|
|
||||||
# while \
|
|
||||||
# metrics.width(split_text, -1) > line_width:
|
|
||||||
# split_text = split_text[:-1]
|
|
||||||
# pos = len(split_text)
|
|
||||||
# else:
|
|
||||||
# split_text = line[:pos]
|
|
||||||
# split_lines.append(split_text)
|
|
||||||
# line = line[pos:].lstrip()
|
|
||||||
# #if we have more text add up to 10 spaces on the front.
|
|
||||||
# if line and self._theme.font_main_indentation > 0:
|
|
||||||
# line = u'%s%s' % \
|
|
||||||
# (u' '[:int(self._theme.font_main_indentation)],
|
|
||||||
# line)
|
|
||||||
# #Text fits in a line now
|
|
||||||
# for count, line in enumerate(split_lines):
|
|
||||||
# page.append(line)
|
|
||||||
# #last but one line and only 2 lines to go or end of page
|
|
||||||
# if (len(page) == page_length - 1 and
|
|
||||||
# len(split_lines) - 3 == count) or \
|
|
||||||
# len(page) == page_length:
|
|
||||||
# split_pages.append(page)
|
|
||||||
# page = []
|
|
||||||
# if page and page != u' ':
|
|
||||||
# split_pages.append(page)
|
|
||||||
# return split_pages
|
|
||||||
#
|
|
||||||
# def generate_frame_from_lines(self, lines, footer_lines=None):
|
|
||||||
# """
|
|
||||||
# Render a set of lines according to the theme, and return the block
|
|
||||||
# dimensions.
|
|
||||||
#
|
|
||||||
# ``lines``
|
|
||||||
# The lines to be rendered.
|
|
||||||
#
|
|
||||||
# ``footer_lines``
|
|
||||||
# Defaults to *None*. The footer to render.
|
|
||||||
# """
|
|
||||||
# log.debug(u'generate_frame_from_lines - Start')
|
|
||||||
# bbox = self._render_lines_unaligned(lines, False)
|
|
||||||
# if footer_lines:
|
|
||||||
# bbox1 = self._render_lines_unaligned(footer_lines, True)
|
|
||||||
# # reset the frame. first time do not worry about what you paint on.
|
|
||||||
# self.frame = QtGui.QImage(self.bg_frame)
|
|
||||||
# if self._theme.display_slideTransition:
|
|
||||||
# self.frame_opaque = QtGui.QImage(self.bg_frame)
|
|
||||||
# x, y = self._correct_alignment(self._rect, bbox)
|
|
||||||
# bbox = self._render_lines_unaligned(lines, False, (x, y), True)
|
|
||||||
# if footer_lines:
|
|
||||||
# bbox = self._render_lines_unaligned(footer_lines, True,
|
|
||||||
# (self._rect_footer.left(), self._rect_footer.top()), True)
|
|
||||||
# log.debug(u'generate_frame_from_lines - Finish')
|
|
||||||
# if self._theme.display_slideTransition:
|
|
||||||
# return {u'main':self.frame, u'trans':self.frame_opaque}
|
|
||||||
# else:
|
|
||||||
# return {u'main':self.frame, u'trans':None}
|
|
||||||
|
|
||||||
def _generate_background_frame(self):
|
def _generate_background_frame(self):
|
||||||
"""
|
"""
|
||||||
Generate a background frame to the same size as the frame to be used.
|
Generate a background frame to the same size as the frame to be used.
|
||||||
Results are cached for performance reasons.
|
Results are cached for performance reasons.
|
||||||
"""
|
"""
|
||||||
assert(self._theme)
|
assert(self._theme)
|
||||||
# if self._theme.background_mode == u'transparent':
|
|
||||||
# self.bg_frame = \
|
|
||||||
# QtGui.QPixmap(self.frame.width(), self.frame.height())
|
|
||||||
# self.bg_frame.fill(QtCore.Qt.transparent)
|
|
||||||
# else:
|
|
||||||
self.bg_frame = QtGui.QImage(self.frame.width(),
|
self.bg_frame = QtGui.QImage(self.frame.width(),
|
||||||
self.frame.height(), QtGui.QImage.Format_ARGB32_Premultiplied)
|
self.frame.height(), QtGui.QImage.Format_ARGB32_Premultiplied)
|
||||||
log.debug(u'render background %s start', self._theme.background_type)
|
log.debug(u'render background %s start', self._theme.background_type)
|
||||||
painter = QtGui.QPainter()
|
painter = QtGui.QPainter()
|
||||||
painter.begin(self.bg_frame)
|
painter.begin(self.bg_frame)
|
||||||
# if self._theme.background_mode == u'transparent':
|
|
||||||
# painter.fillRect(self.frame.rect(), QtCore.Qt.transparent)
|
|
||||||
# else:
|
|
||||||
if self._theme.background_type == u'solid':
|
if self._theme.background_type == u'solid':
|
||||||
painter.fillRect(self.frame.rect(),
|
painter.fillRect(self.frame.rect(),
|
||||||
QtGui.QColor(self._theme.background_color))
|
QtGui.QColor(self._theme.background_color))
|
||||||
@ -315,13 +214,11 @@ class Renderer(object):
|
|||||||
if self._theme.background_direction == u'horizontal':
|
if self._theme.background_direction == u'horizontal':
|
||||||
w = int(self.frame.width()) / 2
|
w = int(self.frame.width()) / 2
|
||||||
# vertical
|
# vertical
|
||||||
gradient = QtGui.QLinearGradient(w, 0, w,
|
gradient = QtGui.QLinearGradient(w, 0, w, self.frame.height())
|
||||||
self.frame.height())
|
|
||||||
elif self._theme.background_direction == u'vertical':
|
elif self._theme.background_direction == u'vertical':
|
||||||
h = int(self.frame.height()) / 2
|
h = int(self.frame.height()) / 2
|
||||||
# Horizontal
|
# Horizontal
|
||||||
gradient = QtGui.QLinearGradient(0, h, self.frame.width(),
|
gradient = QtGui.QLinearGradient(0, h, self.frame.width(), h)
|
||||||
h)
|
|
||||||
else:
|
else:
|
||||||
w = int(self.frame.width()) / 2
|
w = int(self.frame.width()) / 2
|
||||||
h = int(self.frame.height()) / 2
|
h = int(self.frame.height()) / 2
|
||||||
@ -347,273 +244,3 @@ class Renderer(object):
|
|||||||
if self.bg_image:
|
if self.bg_image:
|
||||||
painter.drawImage(0, 0, self.bg_image)
|
painter.drawImage(0, 0, self.bg_image)
|
||||||
painter.end()
|
painter.end()
|
||||||
log.debug(u'render background End')
|
|
||||||
|
|
||||||
# def _correct_alignment(self, rect, bbox):
|
|
||||||
# """
|
|
||||||
# Corrects the vertical alignment of text.
|
|
||||||
#
|
|
||||||
# ``rect``
|
|
||||||
# The block dimentions.
|
|
||||||
#
|
|
||||||
# ``bbox``
|
|
||||||
# Footer dimensions?
|
|
||||||
# """
|
|
||||||
# x = rect.left()
|
|
||||||
# if self._theme.display_verticalAlign == 0:
|
|
||||||
# # top align
|
|
||||||
# y = rect.top()
|
|
||||||
# elif self._theme.display_verticalAlign == 2:
|
|
||||||
# # bottom align
|
|
||||||
# y = rect.bottom() - bbox.height()
|
|
||||||
# elif self._theme.display_verticalAlign == 1:
|
|
||||||
# # centre align
|
|
||||||
# y = rect.top() + (rect.height() - bbox.height()) / 2
|
|
||||||
# else:
|
|
||||||
# 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),
|
|
||||||
# live=False):
|
|
||||||
# """
|
|
||||||
# Given a list of lines to render, render each one in turn (using the
|
|
||||||
# ``_render_single_line`` fn - which may result in going off the bottom).
|
|
||||||
# They are expected to be pre-arranged to less than a screenful (eg. by
|
|
||||||
# using split_set_of_lines).
|
|
||||||
#
|
|
||||||
# Returns the bounding box of the text as QRect.
|
|
||||||
#
|
|
||||||
# ``lines``
|
|
||||||
# The lines of text to render.
|
|
||||||
#
|
|
||||||
# ``footer``
|
|
||||||
# The slide footer.
|
|
||||||
#
|
|
||||||
# ``tlcorner``
|
|
||||||
# Defaults to *``(0, 0)``*. Co-ordinates of the top left corner.
|
|
||||||
#
|
|
||||||
# ``live``
|
|
||||||
# Defaults to *False*. Whether or not this is a live screen.
|
|
||||||
# """
|
|
||||||
# x, y = tlcorner
|
|
||||||
# brx = x
|
|
||||||
# bry = y
|
|
||||||
# for line in lines:
|
|
||||||
# # render after current bottom, but at original left edge
|
|
||||||
# # keep track of right edge to see which is biggest
|
|
||||||
# (thisx, bry) = self._render_and_wrap_single_line(line, footer,
|
|
||||||
# (x, bry), live)
|
|
||||||
# if (thisx > brx):
|
|
||||||
# brx = thisx
|
|
||||||
# retval = QtCore.QRect(x, y, brx - x, bry - y)
|
|
||||||
# if self._debug:
|
|
||||||
# painter = QtGui.QPainter()
|
|
||||||
# painter.begin(self.frame)
|
|
||||||
# painter.setPen(QtGui.QPen(QtGui.QColor(0, 0, 255)))
|
|
||||||
# painter.drawRect(retval)
|
|
||||||
# painter.end()
|
|
||||||
# return retval
|
|
||||||
#
|
|
||||||
# def _render_and_wrap_single_line(self, line, footer, tlcorner=(0, 0),
|
|
||||||
# live=False):
|
|
||||||
# """
|
|
||||||
# Render a single line of words onto the DC, top left corner specified.
|
|
||||||
# If the line is too wide for the context, it wraps, but 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).
|
|
||||||
#
|
|
||||||
# ``line``
|
|
||||||
# Line of text to be rendered.
|
|
||||||
#
|
|
||||||
# ``footer``
|
|
||||||
# The footer of the slide.
|
|
||||||
#
|
|
||||||
# ``tlcorner``
|
|
||||||
# Defaults to *``(0, 0)``*. The top left corner.
|
|
||||||
#
|
|
||||||
# ``live``
|
|
||||||
# Defaults to *False*. Whether or not this is a live screen.
|
|
||||||
# """
|
|
||||||
# x, y = tlcorner
|
|
||||||
# maxx = self._rect.width()
|
|
||||||
# maxy = self._rect.height()
|
|
||||||
# lines = []
|
|
||||||
# lines.append(line)
|
|
||||||
# startx = x
|
|
||||||
# starty = y
|
|
||||||
# rightextent = None
|
|
||||||
# self.painter = QtGui.QPainter()
|
|
||||||
# self.painter.begin(self.frame)
|
|
||||||
# self.painter.setRenderHint(QtGui.QPainter.Antialiasing)
|
|
||||||
# if self._theme.display_slideTransition:
|
|
||||||
# self.painter2 = QtGui.QPainter()
|
|
||||||
# self.painter2.begin(self.frame_opaque)
|
|
||||||
# self.painter2.setRenderHint(QtGui.QPainter.Antialiasing)
|
|
||||||
# self.painter2.setOpacity(0.7)
|
|
||||||
# # dont allow alignment messing with footers
|
|
||||||
# if footer:
|
|
||||||
# align = 0
|
|
||||||
# display_shadow_size = self._display_shadow_size_footer
|
|
||||||
# display_outline_size = self._display_outline_size_footer
|
|
||||||
# else:
|
|
||||||
# align = self._theme.display_horizontalAlign
|
|
||||||
# display_shadow_size = int(self._theme.display_shadow_size)
|
|
||||||
# display_outline_size = int(self._theme.display_outline_size)
|
|
||||||
# for linenum in range(len(lines)):
|
|
||||||
# line = lines[linenum]
|
|
||||||
# #find out how wide line is
|
|
||||||
# w, h = self._get_extent_and_render(line, footer, tlcorner=(x, y),
|
|
||||||
# draw=False)
|
|
||||||
# if self._theme.display_shadow:
|
|
||||||
# w += display_shadow_size
|
|
||||||
# h += display_shadow_size
|
|
||||||
# if self._theme.display_outline:
|
|
||||||
# # pixels either side
|
|
||||||
# w += 2 * display_outline_size
|
|
||||||
# # pixels top/bottom
|
|
||||||
# h += 2 * display_outline_size
|
|
||||||
# if align == 0: # left align
|
|
||||||
# rightextent = x + w
|
|
||||||
# # shift right from last line's rh edge
|
|
||||||
# if self._theme.display_wrapStyle == 1 and linenum != 0:
|
|
||||||
# rightextent = self._first_line_right_extent
|
|
||||||
# if rightextent > maxx:
|
|
||||||
# rightextent = maxx
|
|
||||||
# x = rightextent - w
|
|
||||||
# # right align
|
|
||||||
# elif align == 1:
|
|
||||||
# rightextent = maxx
|
|
||||||
# x = maxx - w
|
|
||||||
# # centre
|
|
||||||
# elif align == 2:
|
|
||||||
# x = (maxx - w) / 2
|
|
||||||
# rightextent = x + w
|
|
||||||
# if live:
|
|
||||||
# # now draw the text, and any outlines/shadows
|
|
||||||
# if self._theme.display_shadow:
|
|
||||||
# self._get_extent_and_render(line, footer,
|
|
||||||
# tlcorner=(x + display_shadow_size,
|
|
||||||
# y + display_shadow_size),
|
|
||||||
# draw=True, color=self._theme.display_shadow_color)
|
|
||||||
# self._get_extent_and_render(line, footer, tlcorner=(x, y),
|
|
||||||
# draw=True, outline_size=display_outline_size)
|
|
||||||
# y += h
|
|
||||||
# if linenum == 0:
|
|
||||||
# self._first_line_right_extent = rightextent
|
|
||||||
# # draw a box around the text - debug only
|
|
||||||
#
|
|
||||||
# if self._debug:
|
|
||||||
# self.painter.setPen(QtGui.QPen(QtGui.QColor(0, 255, 0)))
|
|
||||||
# self.painter.drawRect(startx, starty, rightextent-startx, y-starty)
|
|
||||||
# brcorner = (rightextent, y)
|
|
||||||
# self.painter.end()
|
|
||||||
# if self._theme.display_slideTransition:
|
|
||||||
# self.painter2.end()
|
|
||||||
# return brcorner
|
|
||||||
#
|
|
||||||
# def _set_theme_font(self):
|
|
||||||
# """
|
|
||||||
# Set the fonts from the current theme settings.
|
|
||||||
# """
|
|
||||||
# footer_weight = 50
|
|
||||||
# if self._theme.font_footer_weight == u'Bold':
|
|
||||||
# footer_weight = 75
|
|
||||||
# #TODO Add myfont.setPixelSize((screen_height / 100) * font_size)
|
|
||||||
# self.footer_font = QtGui.QFont(self._theme.font_footer_name,
|
|
||||||
# self._theme.font_footer_proportion, # size
|
|
||||||
# footer_weight, # weight
|
|
||||||
# self._theme.font_footer_italics) # italic
|
|
||||||
# self.footer_font.setPixelSize(self._theme.font_footer_proportion)
|
|
||||||
# main_weight = 50
|
|
||||||
# if self._theme.font_main_weight == u'Bold':
|
|
||||||
# main_weight = 75
|
|
||||||
# self.main_font = QtGui.QFont(self._theme.font_main_name,
|
|
||||||
# self._theme.font_main_proportion, # size
|
|
||||||
# main_weight, # weight
|
|
||||||
# self._theme.font_main_italics)# italic
|
|
||||||
# self.main_font.setPixelSize(self._theme.font_main_proportion)
|
|
||||||
#
|
|
||||||
# def _get_extent_and_render(self, line, footer, tlcorner=(0, 0), draw=False,
|
|
||||||
# color=None, outline_size=0):
|
|
||||||
# """
|
|
||||||
# Find bounding box of text - as render_single_line. If draw is set,
|
|
||||||
# actually draw the text to the current DC as well return width and
|
|
||||||
# height of text as a tuple (w, h).
|
|
||||||
#
|
|
||||||
# ``line``
|
|
||||||
# The line of text to render.
|
|
||||||
#
|
|
||||||
# ``footer``
|
|
||||||
# The footer text.
|
|
||||||
#
|
|
||||||
# ``tlcorner``
|
|
||||||
# Defaults to *``(0, 0)``*. The top left corner co-ordinates.
|
|
||||||
#
|
|
||||||
# ``draw``
|
|
||||||
# Defaults to *False*. Draw the text to the current surface.
|
|
||||||
#
|
|
||||||
# ``color``
|
|
||||||
# Defaults to *None*. The colour to draw with.
|
|
||||||
# """
|
|
||||||
# # setup defaults
|
|
||||||
# if footer:
|
|
||||||
# font = self.footer_font
|
|
||||||
# else:
|
|
||||||
# font = self.main_font
|
|
||||||
# metrics = QtGui.QFontMetrics(font)
|
|
||||||
# w = metrics.width(line)
|
|
||||||
# if footer:
|
|
||||||
# h = metrics.height()
|
|
||||||
# else:
|
|
||||||
# h = metrics.height() + int(self._theme.font_main_line_adjustment)
|
|
||||||
# if draw:
|
|
||||||
# self.painter.setFont(font)
|
|
||||||
# if color is None:
|
|
||||||
# if footer:
|
|
||||||
# pen = QtGui.QColor(self._theme.font_footer_color)
|
|
||||||
# else:
|
|
||||||
# pen = QtGui.QColor(self._theme.font_main_color)
|
|
||||||
# else:
|
|
||||||
# pen = QtGui.QColor(color)
|
|
||||||
# x, y = tlcorner
|
|
||||||
# rowpos = y + metrics.ascent()
|
|
||||||
# if self._theme.display_outline and outline_size != 0 and not footer:
|
|
||||||
# path = QtGui.QPainterPath()
|
|
||||||
# path.addText(QtCore.QPointF(x, rowpos), font, line)
|
|
||||||
# self.painter.setBrush(self.painter.pen().brush())
|
|
||||||
# self.painter.setPen(QtGui.QPen(QtGui.QColor(
|
|
||||||
# self._theme.display_outline_color), outline_size))
|
|
||||||
# self.painter.drawPath(path)
|
|
||||||
# self.painter.setPen(pen)
|
|
||||||
# self.painter.drawText(x, rowpos, line)
|
|
||||||
# if self._theme.display_slideTransition:
|
|
||||||
# # Print 2nd image with 70% weight
|
|
||||||
# if self._theme.display_outline and outline_size != 0 and \
|
|
||||||
# not footer:
|
|
||||||
# path = QtGui.QPainterPath()
|
|
||||||
# path.addText(QtCore.QPointF(x, rowpos), font, line)
|
|
||||||
# self.painter2.setBrush(self.painter2.pen().brush())
|
|
||||||
# self.painter2.setPen(QtGui.QPen(
|
|
||||||
# QtGui.QColor(self._theme.display_outline_color),
|
|
||||||
# outline_size))
|
|
||||||
# self.painter2.drawPath(path)
|
|
||||||
# self.painter2.setFont(font)
|
|
||||||
# self.painter2.setPen(pen)
|
|
||||||
# self.painter2.drawText(x, rowpos, line)
|
|
||||||
# return (w, h)
|
|
||||||
#
|
|
||||||
# def snoop_image(self, image, image2=None):
|
|
||||||
# """
|
|
||||||
# Debugging method to allow images to be viewed.
|
|
||||||
#
|
|
||||||
# ``image``
|
|
||||||
# An image to save to disk.
|
|
||||||
#
|
|
||||||
# ``image2``
|
|
||||||
# Defaults to *None*. Another image to save to disk.
|
|
||||||
# """
|
|
||||||
# image.save(u'renderer.png', u'png')
|
|
||||||
# if image2:
|
|
||||||
# image2.save(u'renderer2.png', u'png')
|
|
||||||
|
@ -68,16 +68,6 @@ class RenderManager(object):
|
|||||||
self.themedata = None
|
self.themedata = None
|
||||||
self.alertTab = None
|
self.alertTab = None
|
||||||
|
|
||||||
# TODO make external and configurable
|
|
||||||
self.html_expands = {
|
|
||||||
u'{r}': u'<font color=red>',
|
|
||||||
u'{b}': u'<font color=black>',
|
|
||||||
u'{u}': u'<font color=blue>',
|
|
||||||
u'{y}': u'<font color=yellow>',
|
|
||||||
u'{g}': u'<font color=green>',
|
|
||||||
u'{/}': u'</font>'
|
|
||||||
}
|
|
||||||
|
|
||||||
def update_display(self):
|
def update_display(self):
|
||||||
"""
|
"""
|
||||||
Updates the render manager's information about the current screen.
|
Updates the render manager's information about the current screen.
|
||||||
@ -208,8 +198,8 @@ class RenderManager(object):
|
|||||||
serviceItem.theme = themedata
|
serviceItem.theme = themedata
|
||||||
serviceItem.add_from_text(u'', verse, footer)
|
serviceItem.add_from_text(u'', verse, footer)
|
||||||
serviceItem.render_manager = self
|
serviceItem.render_manager = self
|
||||||
serviceItem.render(True)
|
|
||||||
serviceItem.raw_footer = footer
|
serviceItem.raw_footer = footer
|
||||||
|
serviceItem.render(True)
|
||||||
self.display.buildHtml(serviceItem)
|
self.display.buildHtml(serviceItem)
|
||||||
frame, raw_html = serviceItem.get_rendered_frame(0)
|
frame, raw_html = serviceItem.get_rendered_frame(0)
|
||||||
preview = self.display.text(raw_html)
|
preview = self.display.text(raw_html)
|
||||||
@ -228,20 +218,6 @@ class RenderManager(object):
|
|||||||
self.build_text_rectangle(self.themedata)
|
self.build_text_rectangle(self.themedata)
|
||||||
return self.renderer.format_slide(words, line_break)
|
return self.renderer.format_slide(words, line_break)
|
||||||
|
|
||||||
# def generate_slide(self, main_text):
|
|
||||||
# """
|
|
||||||
# Generate the actual slide image.
|
|
||||||
#
|
|
||||||
# ``main_text``
|
|
||||||
# The text for the main area of the slide.
|
|
||||||
# """
|
|
||||||
# log.debug(u'generate slide')
|
|
||||||
# self.build_text_rectangle(self.themedata)
|
|
||||||
# self.renderer.set_frame_dest(self.width, self.height)
|
|
||||||
# image = self.previewDisplay.preview(self.renderer.bg_frame,
|
|
||||||
# main_text[0], self.themedata)
|
|
||||||
# return image
|
|
||||||
|
|
||||||
def calculate_default(self, screen):
|
def calculate_default(self, screen):
|
||||||
"""
|
"""
|
||||||
Calculate the default dimentions of the screen.
|
Calculate the default dimentions of the screen.
|
||||||
@ -257,23 +233,3 @@ class RenderManager(object):
|
|||||||
self.width, self.height, self.screen_ratio )
|
self.width, self.height, self.screen_ratio )
|
||||||
# 90% is start of footer
|
# 90% is start of footer
|
||||||
self.footer_start = int(self.height * 0.90)
|
self.footer_start = int(self.height * 0.90)
|
||||||
|
|
||||||
def clean(self, text):
|
|
||||||
"""
|
|
||||||
Remove Tags from text for display
|
|
||||||
"""
|
|
||||||
text = text.replace(u'<br>', u'\n').replace(u'<p>', u'')\
|
|
||||||
.replace(u'</p>', u'').replace(u'<sup>', u'')\
|
|
||||||
.replace(u'</sup>', u'')
|
|
||||||
for key, value in self.html_expands.iteritems():
|
|
||||||
text = text.replace(key, u'')
|
|
||||||
return text
|
|
||||||
|
|
||||||
def expand(self, text):
|
|
||||||
"""
|
|
||||||
Expand tags fto HTML for display
|
|
||||||
"""
|
|
||||||
for key, value in self.html_expands.iteritems():
|
|
||||||
text = text.replace(key, value)
|
|
||||||
return text
|
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ import uuid
|
|||||||
|
|
||||||
from PyQt4 import QtGui
|
from PyQt4 import QtGui
|
||||||
|
|
||||||
from openlp.core.lib import build_icon, resize_image
|
from openlp.core.lib import build_icon, resize_image, clean_tags, expand_tags
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -100,6 +100,11 @@ class ServiceItem(object):
|
|||||||
self.bg_frame = None
|
self.bg_frame = None
|
||||||
|
|
||||||
def _new_item(self):
|
def _new_item(self):
|
||||||
|
"""
|
||||||
|
Method to set the internal id of the item
|
||||||
|
This is used to compare service items to see if they are
|
||||||
|
the same
|
||||||
|
"""
|
||||||
self._uuid = unicode(uuid.uuid1())
|
self._uuid = unicode(uuid.uuid1())
|
||||||
|
|
||||||
def add_capability(self, capability):
|
def add_capability(self, capability):
|
||||||
@ -159,9 +164,9 @@ class ServiceItem(object):
|
|||||||
.format_slide(slide[u'raw_slide'], line_break)
|
.format_slide(slide[u'raw_slide'], line_break)
|
||||||
for page in formated:
|
for page in formated:
|
||||||
self._display_frames.append(
|
self._display_frames.append(
|
||||||
{u'title': self.render_manager.clean(page),
|
{u'title': clean_tags(page),
|
||||||
u'text': self.render_manager.clean(page.rstrip()),
|
u'text': clean_tags(page.rstrip()),
|
||||||
u'html': self.render_manager.expand(page.rstrip()),
|
u'html': expand_tags(page.rstrip()),
|
||||||
u'verseTag': slide[u'verseTag'] })
|
u'verseTag': slide[u'verseTag'] })
|
||||||
log.log(15, u'Formatting took %4s' % (time.time() - before))
|
log.log(15, u'Formatting took %4s' % (time.time() - before))
|
||||||
elif self.service_item_type == ServiceItemType.Image:
|
elif self.service_item_type == ServiceItemType.Image:
|
||||||
|
@ -55,7 +55,6 @@ BLANK_THEME_XML = \
|
|||||||
<proportion>30</proportion>
|
<proportion>30</proportion>
|
||||||
<weight>Normal</weight>
|
<weight>Normal</weight>
|
||||||
<italics>False</italics>
|
<italics>False</italics>
|
||||||
<indentation>0</indentation>
|
|
||||||
<line_adjustment>0</line_adjustment>
|
<line_adjustment>0</line_adjustment>
|
||||||
<location override="False" x="10" y="10" width="1004" height="730"/>
|
<location override="False" x="10" y="10" width="1004" height="730"/>
|
||||||
</font>
|
</font>
|
||||||
@ -65,7 +64,6 @@ BLANK_THEME_XML = \
|
|||||||
<proportion>12</proportion>
|
<proportion>12</proportion>
|
||||||
<weight>Normal</weight>
|
<weight>Normal</weight>
|
||||||
<italics>False</italics>
|
<italics>False</italics>
|
||||||
<indentation>0</indentation>
|
|
||||||
<line_adjustment>0</line_adjustment>
|
<line_adjustment>0</line_adjustment>
|
||||||
<location override="False" x="10" y="730" width="1004" height="38"/>
|
<location override="False" x="10" y="730" width="1004" height="38"/>
|
||||||
</font>
|
</font>
|
||||||
@ -184,7 +182,7 @@ class ThemeXML(object):
|
|||||||
self.child_element(background, u'filename', filename)
|
self.child_element(background, u'filename', filename)
|
||||||
|
|
||||||
def add_font(self, name, color, proportion, override, fonttype=u'main',
|
def add_font(self, name, color, proportion, override, fonttype=u'main',
|
||||||
weight=u'Normal', italics=u'False', indentation=0, line_adjustment=0,
|
weight=u'Normal', italics=u'False', line_adjustment=0,
|
||||||
xpos=0, ypos=0, width=0, height=0):
|
xpos=0, ypos=0, width=0, height=0):
|
||||||
"""
|
"""
|
||||||
Add a Font.
|
Add a Font.
|
||||||
@ -210,9 +208,6 @@ class ThemeXML(object):
|
|||||||
``italics``
|
``italics``
|
||||||
Does the font render to italics Defaults to 0 Normal
|
Does the font render to italics Defaults to 0 Normal
|
||||||
|
|
||||||
``indentation``
|
|
||||||
Number of characters the wrap line is indented
|
|
||||||
|
|
||||||
``xpos``
|
``xpos``
|
||||||
The X position of the text block.
|
The X position of the text block.
|
||||||
|
|
||||||
@ -239,8 +234,6 @@ class ThemeXML(object):
|
|||||||
#Create italics name element
|
#Create italics name element
|
||||||
self.child_element(background, u'italics', italics)
|
self.child_element(background, u'italics', italics)
|
||||||
#Create indentation name element
|
#Create indentation name element
|
||||||
self.child_element(background, u'indentation', unicode(indentation))
|
|
||||||
#Create indentation name element
|
|
||||||
self.child_element(
|
self.child_element(
|
||||||
background, u'line_adjustment', unicode(line_adjustment))
|
background, u'line_adjustment', unicode(line_adjustment))
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
|
||||||
# more details. #
|
# more details. #
|
||||||
# #
|
# #
|
||||||
# You should have received a copy of the GNU General Public License along #
|
# You should have received a copy of the GNU General Pu__init__.pyblic License along #
|
||||||
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
|
||||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@ -27,6 +27,138 @@
|
|||||||
The :mod:`ui` module provides the core user interface for OpenLP
|
The :mod:`ui` module provides the core user interface for OpenLP
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# http://john.nachtimwald.com/2009/08/22/qplaintextedit-with-in-line-spell-check/
|
||||||
|
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
import enchant
|
||||||
|
|
||||||
|
from PyQt4 import QtCore, QtGui
|
||||||
|
from openlp.core.lib import html_expands, translate, context_menu_action
|
||||||
|
|
||||||
|
class SpellTextEdit(QtGui.QPlainTextEdit):
|
||||||
|
|
||||||
|
def __init__(self, *args):
|
||||||
|
QtGui.QPlainTextEdit.__init__(self, *args)
|
||||||
|
# Default dictionary based on the current locale.
|
||||||
|
self.dict = enchant.Dict()
|
||||||
|
self.highlighter = Highlighter(self.document())
|
||||||
|
self.highlighter.setDict(self.dict)
|
||||||
|
|
||||||
|
def mousePressEvent(self, event):
|
||||||
|
if event.button() == QtCore.Qt.RightButton:
|
||||||
|
# Rewrite the mouse event to a left button event so the cursor is
|
||||||
|
# moved to the location of the pointer.
|
||||||
|
event = QtGui.QMouseEvent(QtCore.QEvent.MouseButtonPress, event.pos(),
|
||||||
|
QtCore.Qt.LeftButton, QtCore.Qt.LeftButton, QtCore.Qt.NoModifier)
|
||||||
|
QtGui.QPlainTextEdit.mousePressEvent(self, event)
|
||||||
|
|
||||||
|
def contextMenuEvent(self, event):
|
||||||
|
popup_menu = self.createStandardContextMenu()
|
||||||
|
|
||||||
|
# Select the word under the cursor.
|
||||||
|
cursor = self.textCursor()
|
||||||
|
cursor.select(QtGui.QTextCursor.WordUnderCursor)
|
||||||
|
self.setTextCursor(cursor)
|
||||||
|
|
||||||
|
# Check if the selected word is misspelled and offer spelling
|
||||||
|
# suggestions if it is.
|
||||||
|
if self.textCursor().hasSelection():
|
||||||
|
text = unicode(self.textCursor().selectedText())
|
||||||
|
if not self.dict.check(text):
|
||||||
|
spell_menu = QtGui.QMenu(translate('OpenLP.SpellTextEdit',
|
||||||
|
'Spelling Suggestions'))
|
||||||
|
for word in self.dict.suggest(text):
|
||||||
|
action = SpellAction(word, spell_menu)
|
||||||
|
action.correct.connect(self.correctWord)
|
||||||
|
spell_menu.addAction(action)
|
||||||
|
# Only add the spelling suggests to the menu if there are
|
||||||
|
# suggestions.
|
||||||
|
if len(spell_menu.actions()) != 0:
|
||||||
|
popup_menu.insertSeparator(popup_menu.actions()[0])
|
||||||
|
popup_menu.insertMenu(popup_menu.actions()[0], spell_menu)
|
||||||
|
tag_menu = QtGui.QMenu(translate('OpenLP.SpellTextEdit',
|
||||||
|
'Formatting Tags'))
|
||||||
|
for html in html_expands:
|
||||||
|
action = SpellAction( html[u'desc'], tag_menu)
|
||||||
|
action.correct.connect(self.htmlTag)
|
||||||
|
tag_menu.addAction(action)
|
||||||
|
popup_menu.insertSeparator(popup_menu.actions()[0])
|
||||||
|
popup_menu.insertMenu(popup_menu.actions()[0], tag_menu)
|
||||||
|
|
||||||
|
popup_menu.exec_(event.globalPos())
|
||||||
|
|
||||||
|
def correctWord(self, word):
|
||||||
|
'''
|
||||||
|
Replaces the selected text with word.
|
||||||
|
'''
|
||||||
|
cursor = self.textCursor()
|
||||||
|
cursor.beginEditBlock()
|
||||||
|
|
||||||
|
cursor.removeSelectedText()
|
||||||
|
cursor.insertText(word)
|
||||||
|
|
||||||
|
cursor.endEditBlock()
|
||||||
|
|
||||||
|
def htmlTag(self, tag):
|
||||||
|
'''
|
||||||
|
Replaces the selected text with word.
|
||||||
|
'''
|
||||||
|
for html in html_expands:
|
||||||
|
if tag == html[u'desc']:
|
||||||
|
cursor = self.textCursor()
|
||||||
|
if self.textCursor().hasSelection():
|
||||||
|
text = cursor.selectedText()
|
||||||
|
cursor.beginEditBlock()
|
||||||
|
cursor.removeSelectedText()
|
||||||
|
cursor.insertText(html[u'start tag'])
|
||||||
|
cursor.insertText(text)
|
||||||
|
cursor.insertText(html[u'end tag'])
|
||||||
|
cursor.endEditBlock()
|
||||||
|
else:
|
||||||
|
cursor = self.textCursor()
|
||||||
|
cursor.insertText(html[u'start tag'])
|
||||||
|
cursor.insertText(html[u'end tag'])
|
||||||
|
|
||||||
|
class Highlighter(QtGui.QSyntaxHighlighter):
|
||||||
|
|
||||||
|
WORDS = u'(?iu)[\w\']+'
|
||||||
|
|
||||||
|
def __init__(self, *args):
|
||||||
|
QtGui.QSyntaxHighlighter.__init__(self, *args)
|
||||||
|
|
||||||
|
self.dict = None
|
||||||
|
|
||||||
|
def setDict(self, dict):
|
||||||
|
self.dict = dict
|
||||||
|
|
||||||
|
def highlightBlock(self, text):
|
||||||
|
if not self.dict:
|
||||||
|
return
|
||||||
|
|
||||||
|
text = unicode(text)
|
||||||
|
|
||||||
|
format = QtGui.QTextCharFormat()
|
||||||
|
format.setUnderlineColor(QtCore.Qt.red)
|
||||||
|
format.setUnderlineStyle(QtGui.QTextCharFormat.SpellCheckUnderline)
|
||||||
|
|
||||||
|
for word_object in re.finditer(self.WORDS, text):
|
||||||
|
if not self.dict.check(word_object.group()):
|
||||||
|
self.setFormat(word_object.start(),
|
||||||
|
word_object.end() - word_object.start(), format)
|
||||||
|
|
||||||
|
class SpellAction(QtGui.QAction):
|
||||||
|
'''
|
||||||
|
A special QAction that returns the text in a signal.
|
||||||
|
'''
|
||||||
|
correct = QtCore.pyqtSignal(unicode)
|
||||||
|
|
||||||
|
def __init__(self, *args):
|
||||||
|
QtGui.QAction.__init__(self, *args)
|
||||||
|
|
||||||
|
self.triggered.connect(lambda x: self.correct.emit(
|
||||||
|
unicode(self.text())))
|
||||||
|
|
||||||
class HideMode(object):
|
class HideMode(object):
|
||||||
"""
|
"""
|
||||||
This is basically an enumeration class which specifies the mode of a Bible.
|
This is basically an enumeration class which specifies the mode of a Bible.
|
||||||
|
@ -68,17 +68,6 @@ class Ui_AmendThemeDialog(object):
|
|||||||
self.backgroundLayout.setMargin(8)
|
self.backgroundLayout.setMargin(8)
|
||||||
self.backgroundLayout.setSpacing(8)
|
self.backgroundLayout.setSpacing(8)
|
||||||
self.backgroundLayout.setObjectName(u'backgroundLayout')
|
self.backgroundLayout.setObjectName(u'backgroundLayout')
|
||||||
# self.backgroundLabel = QtGui.QLabel(self.backgroundTab)
|
|
||||||
# self.backgroundLabel.setObjectName(u'backgroundLabel')
|
|
||||||
# self.backgroundLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
|
|
||||||
# self.backgroundLabel)
|
|
||||||
# self.backgroundComboBox = QtGui.QComboBox(self.backgroundTab)
|
|
||||||
# self.backgroundComboBox.setObjectName(u'backgroundComboBox')
|
|
||||||
# self.backgroundLabel.setBuddy(self.backgroundComboBox)
|
|
||||||
# self.backgroundComboBox.addItem(QtCore.QString())
|
|
||||||
# self.backgroundComboBox.addItem(QtCore.QString())
|
|
||||||
# self.backgroundLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
|
|
||||||
# self.backgroundComboBox)
|
|
||||||
self.backgroundTypeLabel = QtGui.QLabel(self.backgroundTab)
|
self.backgroundTypeLabel = QtGui.QLabel(self.backgroundTab)
|
||||||
self.backgroundTypeLabel.setObjectName(u'backgroundTypeLabel')
|
self.backgroundTypeLabel.setObjectName(u'backgroundTypeLabel')
|
||||||
self.backgroundLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
|
self.backgroundLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
|
||||||
@ -216,17 +205,6 @@ class Ui_AmendThemeDialog(object):
|
|||||||
self.fontMainLineAdjustmentSpinBox.setMinimum(-99)
|
self.fontMainLineAdjustmentSpinBox.setMinimum(-99)
|
||||||
self.mainFontLayout.setWidget(4, QtGui.QFormLayout.FieldRole,
|
self.mainFontLayout.setWidget(4, QtGui.QFormLayout.FieldRole,
|
||||||
self.fontMainLineAdjustmentSpinBox)
|
self.fontMainLineAdjustmentSpinBox)
|
||||||
self.fontMainWrapIndentationLabel = QtGui.QLabel(self.fontMainGroupBox)
|
|
||||||
self.fontMainWrapIndentationLabel.setObjectName(
|
|
||||||
u'fontMainWrapIndentationLabel')
|
|
||||||
self.mainFontLayout.setWidget(5, QtGui.QFormLayout.LabelRole,
|
|
||||||
self.fontMainWrapIndentationLabel)
|
|
||||||
self.fontMainLineSpacingSpinBox = QtGui.QSpinBox(self.fontMainGroupBox)
|
|
||||||
self.fontMainLineSpacingSpinBox.setObjectName(
|
|
||||||
u'fontMainLineSpacingSpinBox')
|
|
||||||
self.fontMainLineSpacingSpinBox.setMaximum(10)
|
|
||||||
self.mainFontLayout.setWidget(5, QtGui.QFormLayout.FieldRole,
|
|
||||||
self.fontMainLineSpacingSpinBox)
|
|
||||||
self.fontMainLinesPageLabel = QtGui.QLabel(self.fontMainGroupBox)
|
self.fontMainLinesPageLabel = QtGui.QLabel(self.fontMainGroupBox)
|
||||||
self.fontMainLinesPageLabel.setObjectName(u'fontMainLinesPageLabel')
|
self.fontMainLinesPageLabel.setObjectName(u'fontMainLinesPageLabel')
|
||||||
self.mainFontLayout.addRow(self.fontMainLinesPageLabel)
|
self.mainFontLayout.addRow(self.fontMainLinesPageLabel)
|
||||||
@ -661,12 +639,6 @@ class Ui_AmendThemeDialog(object):
|
|||||||
translate('OpenLP.AmendThemeForm', 'Theme Maintenance'))
|
translate('OpenLP.AmendThemeForm', 'Theme Maintenance'))
|
||||||
self.themeNameLabel.setText(
|
self.themeNameLabel.setText(
|
||||||
translate('OpenLP.AmendThemeForm', 'Theme &name:'))
|
translate('OpenLP.AmendThemeForm', 'Theme &name:'))
|
||||||
# self.backgroundLabel.setText(
|
|
||||||
# translate('OpenLP.AmendThemeForm', '&Visibility:'))
|
|
||||||
# self.backgroundComboBox.setItemText(0,
|
|
||||||
# translate('OpenLP.AmendThemeForm', 'Opaque'))
|
|
||||||
# self.backgroundComboBox.setItemText(1,
|
|
||||||
# translate('OpenLP.AmendThemeForm', 'Transparent'))
|
|
||||||
self.backgroundTypeLabel.setText(
|
self.backgroundTypeLabel.setText(
|
||||||
translate('OpenLP.AmendThemeForm', 'Type:'))
|
translate('OpenLP.AmendThemeForm', 'Type:'))
|
||||||
self.backgroundTypeComboBox.setItemText(0,
|
self.backgroundTypeComboBox.setItemText(0,
|
||||||
@ -700,8 +672,6 @@ class Ui_AmendThemeDialog(object):
|
|||||||
translate('OpenLP.AmendThemeForm', 'Size:'))
|
translate('OpenLP.AmendThemeForm', 'Size:'))
|
||||||
self.fontMainSizeSpinBox.setSuffix(
|
self.fontMainSizeSpinBox.setSuffix(
|
||||||
translate('OpenLP.AmendThemeForm', 'pt'))
|
translate('OpenLP.AmendThemeForm', 'pt'))
|
||||||
self.fontMainWrapIndentationLabel.setText(
|
|
||||||
translate('OpenLP.AmendThemeForm', 'Wrap indentation:'))
|
|
||||||
self.fontMainWrapLineAdjustmentLabel.setText(
|
self.fontMainWrapLineAdjustmentLabel.setText(
|
||||||
translate('OpenLP.AmendThemeForm', 'Adjust line spacing:'))
|
translate('OpenLP.AmendThemeForm', 'Adjust line spacing:'))
|
||||||
self.fontMainWeightComboBox.setItemText(0,
|
self.fontMainWeightComboBox.setItemText(0,
|
||||||
|
@ -50,7 +50,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||||||
self.path = None
|
self.path = None
|
||||||
self.theme = ThemeXML()
|
self.theme = ThemeXML()
|
||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
# define signals
|
|
||||||
# Buttons
|
# Buttons
|
||||||
QtCore.QObject.connect(self.color1PushButton,
|
QtCore.QObject.connect(self.color1PushButton,
|
||||||
QtCore.SIGNAL(u'pressed()'), self.onColor1PushButtonClicked)
|
QtCore.SIGNAL(u'pressed()'), self.onColor1PushButtonClicked)
|
||||||
@ -68,8 +67,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||||||
QtCore.QObject.connect(self.imageToolButton,
|
QtCore.QObject.connect(self.imageToolButton,
|
||||||
QtCore.SIGNAL(u'clicked()'), self.onImageToolButtonClicked)
|
QtCore.SIGNAL(u'clicked()'), self.onImageToolButtonClicked)
|
||||||
# Combo boxes
|
# Combo boxes
|
||||||
# QtCore.QObject.connect(self.backgroundComboBox,
|
|
||||||
# QtCore.SIGNAL(u'activated(int)'), self.onBackgroundComboBoxSelected)
|
|
||||||
QtCore.QObject.connect(self.backgroundTypeComboBox,
|
QtCore.QObject.connect(self.backgroundTypeComboBox,
|
||||||
QtCore.SIGNAL(u'activated(int)'),
|
QtCore.SIGNAL(u'activated(int)'),
|
||||||
self.onBackgroundTypeComboBoxSelected)
|
self.onBackgroundTypeComboBoxSelected)
|
||||||
@ -109,9 +106,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||||||
QtCore.QObject.connect(self.fontMainLineAdjustmentSpinBox,
|
QtCore.QObject.connect(self.fontMainLineAdjustmentSpinBox,
|
||||||
QtCore.SIGNAL(u'editingFinished()'),
|
QtCore.SIGNAL(u'editingFinished()'),
|
||||||
self.onFontMainLineAdjustmentSpinBoxChanged)
|
self.onFontMainLineAdjustmentSpinBoxChanged)
|
||||||
QtCore.QObject.connect(self.fontMainLineSpacingSpinBox,
|
|
||||||
QtCore.SIGNAL(u'editingFinished()'),
|
|
||||||
self.onFontMainLineSpacingSpinBoxChanged)
|
|
||||||
QtCore.QObject.connect(self.fontFooterXSpinBox,
|
QtCore.QObject.connect(self.fontFooterXSpinBox,
|
||||||
QtCore.SIGNAL(u'editingFinished()'),
|
QtCore.SIGNAL(u'editingFinished()'),
|
||||||
self.onFontFooterXSpinBoxChanged)
|
self.onFontFooterXSpinBoxChanged)
|
||||||
@ -151,9 +145,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||||||
new_theme.new_document(theme_name)
|
new_theme.new_document(theme_name)
|
||||||
save_from = None
|
save_from = None
|
||||||
save_to = None
|
save_to = None
|
||||||
# if self.theme.background_mode == u'transparent':
|
|
||||||
# new_theme.add_background_transparent()
|
|
||||||
# else:
|
|
||||||
if self.theme.background_type == u'solid':
|
if self.theme.background_type == u'solid':
|
||||||
new_theme.add_background_solid(
|
new_theme.add_background_solid(
|
||||||
unicode(self.theme.background_color))
|
unicode(self.theme.background_color))
|
||||||
@ -174,7 +165,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||||||
unicode(self.theme.font_main_override), u'main',
|
unicode(self.theme.font_main_override), u'main',
|
||||||
unicode(self.theme.font_main_weight),
|
unicode(self.theme.font_main_weight),
|
||||||
unicode(self.theme.font_main_italics),
|
unicode(self.theme.font_main_italics),
|
||||||
unicode(self.theme.font_main_indentation),
|
|
||||||
unicode(self.theme.font_main_line_adjustment),
|
unicode(self.theme.font_main_line_adjustment),
|
||||||
unicode(self.theme.font_main_x),
|
unicode(self.theme.font_main_x),
|
||||||
unicode(self.theme.font_main_y),
|
unicode(self.theme.font_main_y),
|
||||||
@ -186,7 +176,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||||||
unicode(self.theme.font_footer_override), u'footer',
|
unicode(self.theme.font_footer_override), u'footer',
|
||||||
unicode(self.theme.font_footer_weight),
|
unicode(self.theme.font_footer_weight),
|
||||||
unicode(self.theme.font_footer_italics),
|
unicode(self.theme.font_footer_italics),
|
||||||
0, # indentation
|
|
||||||
0, # line adjustment
|
0, # line adjustment
|
||||||
unicode(self.theme.font_footer_x),
|
unicode(self.theme.font_footer_x),
|
||||||
unicode(self.theme.font_footer_y),
|
unicode(self.theme.font_footer_y),
|
||||||
@ -283,8 +272,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||||||
self.fontMainHeightSpinBox.setValue(self.theme.font_main_height)
|
self.fontMainHeightSpinBox.setValue(self.theme.font_main_height)
|
||||||
self.fontMainLineAdjustmentSpinBox.setValue(
|
self.fontMainLineAdjustmentSpinBox.setValue(
|
||||||
self.theme.font_main_line_adjustment)
|
self.theme.font_main_line_adjustment)
|
||||||
self.fontMainLineSpacingSpinBox.setValue(
|
|
||||||
self.theme.font_main_indentation)
|
|
||||||
self.stateChanging(self.theme)
|
self.stateChanging(self.theme)
|
||||||
self.previewTheme()
|
self.previewTheme()
|
||||||
|
|
||||||
@ -310,13 +297,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||||||
self.fontMainLineAdjustmentSpinBox.value()
|
self.fontMainLineAdjustmentSpinBox.value()
|
||||||
self.previewTheme()
|
self.previewTheme()
|
||||||
|
|
||||||
def onFontMainLineSpacingSpinBoxChanged(self):
|
|
||||||
if self.theme.font_main_indentation != \
|
|
||||||
self.fontMainLineSpacingSpinBox.value():
|
|
||||||
self.theme.font_main_indentation = \
|
|
||||||
self.fontMainLineSpacingSpinBox.value()
|
|
||||||
self.previewTheme()
|
|
||||||
|
|
||||||
def onFontMainHeightSpinBoxChanged(self):
|
def onFontMainHeightSpinBoxChanged(self):
|
||||||
if self.theme.font_main_height != self.fontMainHeightSpinBox.value():
|
if self.theme.font_main_height != self.fontMainHeightSpinBox.value():
|
||||||
self.theme.font_main_height = self.fontMainHeightSpinBox.value()
|
self.theme.font_main_height = self.fontMainHeightSpinBox.value()
|
||||||
@ -410,14 +390,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||||||
self.setBackground(self.backgroundTypeComboBox.currentIndex(),
|
self.setBackground(self.backgroundTypeComboBox.currentIndex(),
|
||||||
currentIndex)
|
currentIndex)
|
||||||
|
|
||||||
# def onBackgroundComboBoxSelected(self, currentIndex):
|
|
||||||
# if currentIndex == 0: # Opaque
|
|
||||||
# self.theme.background_mode = u'opaque'
|
|
||||||
# else:
|
|
||||||
# self.theme.background_mode = u'transparent'
|
|
||||||
# self.stateChanging(self.theme)
|
|
||||||
# self.previewTheme()
|
|
||||||
|
|
||||||
def onBackgroundTypeComboBoxSelected(self, currentIndex):
|
def onBackgroundTypeComboBoxSelected(self, currentIndex):
|
||||||
self.setBackground(currentIndex, self.gradientComboBox.currentIndex())
|
self.setBackground(currentIndex, self.gradientComboBox.currentIndex())
|
||||||
|
|
||||||
@ -543,10 +515,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||||||
self.stateChanging(theme)
|
self.stateChanging(theme)
|
||||||
self.themeNameEdit.setText(self.theme.theme_name)
|
self.themeNameEdit.setText(self.theme.theme_name)
|
||||||
# Background Tab
|
# Background Tab
|
||||||
# if self.theme.background_mode == u'opaque':
|
|
||||||
# self.backgroundComboBox.setCurrentIndex(0)
|
|
||||||
# else:
|
|
||||||
# self.backgroundComboBox.setCurrentIndex(1)
|
|
||||||
self.imageLineEdit.setText(u'')
|
self.imageLineEdit.setText(u'')
|
||||||
if theme.background_type == u'solid':
|
if theme.background_type == u'solid':
|
||||||
self.backgroundTypeComboBox.setCurrentIndex(0)
|
self.backgroundTypeComboBox.setCurrentIndex(0)
|
||||||
@ -576,8 +544,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||||||
self.fontMainWeightComboBox.setCurrentIndex(2)
|
self.fontMainWeightComboBox.setCurrentIndex(2)
|
||||||
else:
|
else:
|
||||||
self.fontMainWeightComboBox.setCurrentIndex(3)
|
self.fontMainWeightComboBox.setCurrentIndex(3)
|
||||||
self.fontMainLineSpacingSpinBox.setValue(
|
|
||||||
self.theme.font_main_indentation)
|
|
||||||
self.fontMainXSpinBox.setValue(self.theme.font_main_x)
|
self.fontMainXSpinBox.setValue(self.theme.font_main_x)
|
||||||
self.fontMainYSpinBox.setValue(self.theme.font_main_y)
|
self.fontMainYSpinBox.setValue(self.theme.font_main_y)
|
||||||
self.fontMainWidthSpinBox.setValue(self.theme.font_main_width)
|
self.fontMainWidthSpinBox.setValue(self.theme.font_main_width)
|
||||||
@ -641,19 +607,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||||||
self.verticalComboBox.setCurrentIndex(self.theme.display_verticalAlign)
|
self.verticalComboBox.setCurrentIndex(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.backgroundTypeComboBox.setVisible(True)
|
||||||
self.backgroundTypeLabel.setVisible(True)
|
self.backgroundTypeLabel.setVisible(True)
|
||||||
if theme.background_type == u'solid':
|
if theme.background_type == u'solid':
|
||||||
|
@ -315,7 +315,7 @@ class MainDisplay(DisplayWidget):
|
|||||||
self.serviceItem = serviceItem
|
self.serviceItem = serviceItem
|
||||||
html = build_html(self.serviceItem, self.screen, self.parent.alertTab)
|
html = build_html(self.serviceItem, self.screen, self.parent.alertTab)
|
||||||
self.webView.setHtml(html)
|
self.webView.setHtml(html)
|
||||||
if serviceItem.footer and serviceItem.foot_text:
|
if serviceItem.foot_text and serviceItem.foot_text:
|
||||||
self.footer(serviceItem.foot_text)
|
self.footer(serviceItem.foot_text)
|
||||||
|
|
||||||
def footer(self, text):
|
def footer(self, text):
|
||||||
|
@ -873,6 +873,7 @@ class ServiceManager(QtGui.QWidget):
|
|||||||
ItemCapabilities.AllowsPreview):
|
ItemCapabilities.AllowsPreview):
|
||||||
self.parent.PreviewController.addServiceManagerItem(
|
self.parent.PreviewController.addServiceManagerItem(
|
||||||
self.serviceItems[item][u'service_item'], 0)
|
self.serviceItems[item][u'service_item'], 0)
|
||||||
|
self.parent.LiveController.PreviewListWidget.setFocus()
|
||||||
else:
|
else:
|
||||||
QtGui.QMessageBox.critical(self,
|
QtGui.QMessageBox.critical(self,
|
||||||
translate('OpenLP.ServiceManager', 'Missing Display Handler'),
|
translate('OpenLP.ServiceManager', 'Missing Display Handler'),
|
||||||
|
@ -957,7 +957,6 @@ class SlideController(QtGui.QWidget):
|
|||||||
"""
|
"""
|
||||||
log.debug(u'SlideController mediaVolume')
|
log.debug(u'SlideController mediaVolume')
|
||||||
self.volume = self.volumeSlider.value()
|
self.volume = self.volumeSlider.value()
|
||||||
print self.volume
|
|
||||||
self.display.videoVolume(self.volume)
|
self.display.videoVolume(self.volume)
|
||||||
|
|
||||||
def onMediaPause(self):
|
def onMediaPause(self):
|
||||||
|
@ -731,8 +731,8 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
theme.display_slideTransition = theme.display_slideTransition
|
theme.display_slideTransition = theme.display_slideTransition
|
||||||
theme.font_footer_color = theme.font_footer_color.strip()
|
theme.font_footer_color = theme.font_footer_color.strip()
|
||||||
theme.font_footer_height = int(theme.font_footer_height.strip())
|
theme.font_footer_height = int(theme.font_footer_height.strip())
|
||||||
theme.font_footer_indentation = \
|
# theme.font_footer_indentation = \
|
||||||
int(theme.font_footer_indentation.strip())
|
# int(theme.font_footer_indentation.strip())
|
||||||
theme.font_footer_italics = str_to_bool(theme.font_footer_italics)
|
theme.font_footer_italics = str_to_bool(theme.font_footer_italics)
|
||||||
theme.font_footer_name = theme.font_footer_name.strip()
|
theme.font_footer_name = theme.font_footer_name.strip()
|
||||||
#theme.font_footer_override
|
#theme.font_footer_override
|
||||||
@ -745,7 +745,7 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
theme.font_main_color = theme.font_main_color.strip()
|
theme.font_main_color = theme.font_main_color.strip()
|
||||||
theme.font_main_height = int(theme.font_main_height.strip())
|
theme.font_main_height = int(theme.font_main_height.strip())
|
||||||
theme.font_main_italics = str_to_bool(theme.font_main_italics)
|
theme.font_main_italics = str_to_bool(theme.font_main_italics)
|
||||||
theme.font_main_indentation = int(theme.font_main_indentation)
|
# theme.font_main_indentation = int(theme.font_main_indentation)
|
||||||
theme.font_main_name = theme.font_main_name.strip()
|
theme.font_main_name = theme.font_main_name.strip()
|
||||||
#theme.font_main_override
|
#theme.font_main_override
|
||||||
theme.font_main_proportion = int(theme.font_main_proportion.strip())
|
theme.font_main_proportion = int(theme.font_main_proportion.strip())
|
||||||
|
@ -59,10 +59,10 @@ class BibleMediaItem(MediaManagerItem):
|
|||||||
self.pluginNameVisible = translate('BiblesPlugin.MediaItem', 'Bible')
|
self.pluginNameVisible = translate('BiblesPlugin.MediaItem', 'Bible')
|
||||||
self.IconPath = u'songs/song'
|
self.IconPath = u'songs/song'
|
||||||
self.ListViewWithDnD_class = BibleListView
|
self.ListViewWithDnD_class = BibleListView
|
||||||
self.lastReference = []
|
|
||||||
MediaManagerItem.__init__(self, parent, icon, title)
|
MediaManagerItem.__init__(self, parent, icon, title)
|
||||||
# place to store the search results
|
# place to store the search results for both bibles
|
||||||
self.search_results = {}
|
self.search_results = {}
|
||||||
|
self.dual_search_results = {}
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
QtCore.SIGNAL(u'bibles_load_list'), self.reloadBibles)
|
QtCore.SIGNAL(u'bibles_load_list'), self.reloadBibles)
|
||||||
|
|
||||||
@ -423,6 +423,7 @@ class BibleMediaItem(MediaManagerItem):
|
|||||||
def onAdvancedSearchButton(self):
|
def onAdvancedSearchButton(self):
|
||||||
log.debug(u'Advanced Search Button pressed')
|
log.debug(u'Advanced Search Button pressed')
|
||||||
bible = unicode(self.AdvancedVersionComboBox.currentText())
|
bible = unicode(self.AdvancedVersionComboBox.currentText())
|
||||||
|
dual_bible = unicode(self.AdvancedSecondBibleComboBox.currentText())
|
||||||
book = unicode(self.AdvancedBookComboBox.currentText())
|
book = unicode(self.AdvancedBookComboBox.currentText())
|
||||||
chapter_from = int(self.AdvancedFromChapter.currentText())
|
chapter_from = int(self.AdvancedFromChapter.currentText())
|
||||||
chapter_to = int(self.AdvancedToChapter.currentText())
|
chapter_to = int(self.AdvancedToChapter.currentText())
|
||||||
@ -431,11 +432,12 @@ class BibleMediaItem(MediaManagerItem):
|
|||||||
versetext = u'%s %s:%s-%s:%s' % (book, chapter_from, verse_from,
|
versetext = u'%s %s:%s-%s:%s' % (book, chapter_from, verse_from,
|
||||||
chapter_to, verse_to)
|
chapter_to, verse_to)
|
||||||
self.search_results = self.parent.manager.get_verses(bible, versetext)
|
self.search_results = self.parent.manager.get_verses(bible, versetext)
|
||||||
|
if dual_bible:
|
||||||
|
self.dual_search_results = self.parent.manager.get_verses(
|
||||||
|
dual_bible, versetext)
|
||||||
if self.ClearAdvancedSearchComboBox.currentIndex() == 0:
|
if self.ClearAdvancedSearchComboBox.currentIndex() == 0:
|
||||||
self.listView.clear()
|
self.listView.clear()
|
||||||
self.lastReference = []
|
self.displayResults(bible, dual_bible)
|
||||||
self.lastReference.append(versetext)
|
|
||||||
self.displayResults(bible)
|
|
||||||
|
|
||||||
def onAdvancedFromChapter(self):
|
def onAdvancedFromChapter(self):
|
||||||
bible = unicode(self.AdvancedVersionComboBox.currentText())
|
bible = unicode(self.AdvancedVersionComboBox.currentText())
|
||||||
@ -450,99 +452,84 @@ class BibleMediaItem(MediaManagerItem):
|
|||||||
def onQuickSearchButton(self):
|
def onQuickSearchButton(self):
|
||||||
log.debug(u'Quick Search Button pressed')
|
log.debug(u'Quick Search Button pressed')
|
||||||
bible = unicode(self.QuickVersionComboBox.currentText())
|
bible = unicode(self.QuickVersionComboBox.currentText())
|
||||||
|
dual_bible = unicode(self.QuickSecondBibleComboBox.currentText())
|
||||||
text = unicode(self.QuickSearchEdit.text())
|
text = unicode(self.QuickSearchEdit.text())
|
||||||
if self.ClearQuickSearchComboBox.currentIndex() == 0:
|
if self.ClearQuickSearchComboBox.currentIndex() == 0:
|
||||||
self.listView.clear()
|
self.listView.clear()
|
||||||
self.lastReference = []
|
|
||||||
self.lastReference.append(text)
|
|
||||||
self.search_results = self.parent.manager.get_verses(bible, text)
|
self.search_results = self.parent.manager.get_verses(bible, text)
|
||||||
|
if dual_bible:
|
||||||
|
self.dual_search_results = self.parent.manager.get_verses(
|
||||||
|
dual_bible, text)
|
||||||
if self.search_results:
|
if self.search_results:
|
||||||
self.displayResults(bible)
|
self.displayResults(bible, dual_bible)
|
||||||
|
|
||||||
def generateSlideData(self, service_item, item=None):
|
def generateSlideData(self, service_item, item=None):
|
||||||
|
'''
|
||||||
|
Generates and formats the slides for the 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:
|
if len(items) == 0:
|
||||||
return False
|
return False
|
||||||
old_chapter = u''
|
|
||||||
raw_slides = []
|
|
||||||
raw_footer = []
|
|
||||||
bible_text = u''
|
bible_text = u''
|
||||||
|
old_chapter = u''
|
||||||
|
raw_footer = []
|
||||||
|
raw_slides = []
|
||||||
service_item.add_capability(ItemCapabilities.AllowsPreview)
|
service_item.add_capability(ItemCapabilities.AllowsPreview)
|
||||||
service_item.add_capability(ItemCapabilities.AllowsLoop)
|
service_item.add_capability(ItemCapabilities.AllowsLoop)
|
||||||
service_item.add_capability(ItemCapabilities.AllowsAdditions)
|
service_item.add_capability(ItemCapabilities.AllowsAdditions)
|
||||||
#If we want to use a 2nd translation / version
|
# Let's loop through the main lot, and assemble our verses.
|
||||||
bible2 = u''
|
|
||||||
if self.SearchTabWidget.currentIndex() == 0:
|
|
||||||
bible2 = unicode(self.QuickSecondBibleComboBox.currentText())
|
|
||||||
else:
|
|
||||||
bible2 = unicode(self.AdvancedSecondBibleComboBox.currentText())
|
|
||||||
if bible2:
|
|
||||||
bible2_verses = []
|
|
||||||
for scripture in self.lastReference:
|
|
||||||
bible2_verses.extend(self.parent.manager.get_verses(bible2,
|
|
||||||
scripture))
|
|
||||||
bible2_version = self.parent.manager.get_meta_data(bible2,
|
|
||||||
u'Version')
|
|
||||||
bible2_copyright = self.parent.manager.get_meta_data(bible2,
|
|
||||||
u'Copyright')
|
|
||||||
bible2_permission = self.parent.manager.get_meta_data(bible2,
|
|
||||||
u'Permissions')
|
|
||||||
if bible2_version:
|
|
||||||
bible2_version = bible2_version.value
|
|
||||||
else:
|
|
||||||
bible2_version = u''
|
|
||||||
if bible2_copyright:
|
|
||||||
bible2_copyright = bible2_copyright.value
|
|
||||||
else:
|
|
||||||
bible2_copyright = u''
|
|
||||||
if bible2_permission:
|
|
||||||
bible2_permission = bible2_permission.value
|
|
||||||
else:
|
|
||||||
bible2_permission = u''
|
|
||||||
# Let's loop through the main lot, and assemble our verses
|
|
||||||
for item in items:
|
for item in items:
|
||||||
bitem = self.listView.item(item.row())
|
bitem = self.listView.item(item.row())
|
||||||
reference = bitem.data(QtCore.Qt.UserRole)
|
reference = bitem.data(QtCore.Qt.UserRole)
|
||||||
if isinstance(reference, QtCore.QVariant):
|
if isinstance(reference, QtCore.QVariant):
|
||||||
reference = reference.toPyObject()
|
reference = reference.toPyObject()
|
||||||
#bible = self._decodeQtObject(reference, 'bible')
|
|
||||||
book = self._decodeQtObject(reference, 'book')
|
book = self._decodeQtObject(reference, 'book')
|
||||||
chapter = self._decodeQtObject(reference, 'chapter')
|
chapter = self._decodeQtObject(reference, 'chapter')
|
||||||
verse = self._decodeQtObject(reference, 'verse')
|
verse = self._decodeQtObject(reference, 'verse')
|
||||||
text = self._decodeQtObject(reference, 'text')
|
bible = self._decodeQtObject(reference, 'bible')
|
||||||
version = self._decodeQtObject(reference, 'version')
|
version = self._decodeQtObject(reference, 'version')
|
||||||
copyright = self._decodeQtObject(reference, 'copyright')
|
copyright = self._decodeQtObject(reference, 'copyright')
|
||||||
#permission = self._decodeQtObject(reference, 'permission')
|
#permission = self._decodeQtObject(reference, 'permission')
|
||||||
|
text = self._decodeQtObject(reference, 'text')
|
||||||
|
dual_bible = self._decodeQtObject(reference, 'dual_bible')
|
||||||
|
if dual_bible:
|
||||||
|
dual_version = self._decodeQtObject(reference,
|
||||||
|
'dual_version')
|
||||||
|
dual_copyright = self._decodeQtObject(reference,
|
||||||
|
'dual_copyright')
|
||||||
|
#dual_permission = self._decodeQtObject(reference,
|
||||||
|
# 'dual_permission')
|
||||||
|
dual_text = self._decodeQtObject(reference, 'dual_text')
|
||||||
if self.parent.settings_tab.display_style == 1:
|
if self.parent.settings_tab.display_style == 1:
|
||||||
verse_text = self.formatVerse(old_chapter, chapter, verse,
|
verse_text = self.formatVerse(old_chapter, chapter, verse,
|
||||||
u'<sup>(', u')</sup>')
|
u'{su}(', u'){/su}')
|
||||||
elif self.parent.settings_tab.display_style == 2:
|
elif self.parent.settings_tab.display_style == 2:
|
||||||
verse_text = self.formatVerse(old_chapter, chapter, verse,
|
verse_text = self.formatVerse(old_chapter, chapter, verse,
|
||||||
u'<sup>{', u'}</sup>')
|
u'{su}{', u'}{/su}')
|
||||||
elif self.parent.settings_tab.display_style == 3:
|
elif self.parent.settings_tab.display_style == 3:
|
||||||
verse_text = self.formatVerse(old_chapter, chapter, verse,
|
verse_text = self.formatVerse(old_chapter, chapter, verse,
|
||||||
u'<sup>[', u']</sup>')
|
u'{su}[', u']{/su}')
|
||||||
else:
|
else:
|
||||||
verse_text = self.formatVerse(old_chapter, chapter, verse,
|
verse_text = self.formatVerse(old_chapter, chapter, verse,
|
||||||
u'<sup>', u'</sup>')
|
u'{su}', u'{/su}')
|
||||||
old_chapter = chapter
|
old_chapter = chapter
|
||||||
footer = u'%s (%s %s)' % (book, version, copyright)
|
footer = u'%s (%s %s)' % (book, version, copyright)
|
||||||
# If not found add to footer
|
# If not found add to footer
|
||||||
if footer not in raw_footer:
|
if footer not in raw_footer:
|
||||||
raw_footer.append(footer)
|
raw_footer.append(footer)
|
||||||
if bible2:
|
if dual_bible:
|
||||||
footer = u'%s (%s %s)' % (book, bible2_version,
|
footer = u'%s (%s %s)' % (book, dual_version,
|
||||||
bible2_copyright)
|
dual_copyright)
|
||||||
#If not found add second version and copyright to footer
|
# If not found add second version and copyright to footer.
|
||||||
if footer not in raw_footer:
|
if footer not in raw_footer:
|
||||||
raw_footer.append(footer)
|
raw_footer.append(footer)
|
||||||
bible_text = u'%s %s \n\n %s %s' % (verse_text, text,
|
bible_text = u'%s %s \n\n %s %s' % (verse_text, text,
|
||||||
verse_text, bible2_verses[item.row()].text)
|
verse_text, dual_text)
|
||||||
raw_slides.append(bible_text)
|
raw_slides.append(bible_text)
|
||||||
bible_text = u''
|
bible_text = u''
|
||||||
else:
|
else:
|
||||||
#Paragraph style force new line per verse
|
# If we are 'Verse Per Line' then force a new line.
|
||||||
if self.parent.settings_tab.layout_style == 1:
|
if self.parent.settings_tab.layout_style == 1:
|
||||||
text = text + u'\n'
|
text = text + u'\n'
|
||||||
else:
|
else:
|
||||||
@ -550,28 +537,50 @@ class BibleMediaItem(MediaManagerItem):
|
|||||||
service_item.add_capability(ItemCapabilities.NoLineBreaks)
|
service_item.add_capability(ItemCapabilities.NoLineBreaks)
|
||||||
text = text + u'\n'
|
text = text + u'\n'
|
||||||
bible_text = u'%s %s %s' % (bible_text, verse_text, text)
|
bible_text = u'%s %s %s' % (bible_text, verse_text, text)
|
||||||
#if we are verse per slide then create slide
|
# If we are 'Verse Per Slide' then create a new slide.
|
||||||
if self.parent.settings_tab.layout_style == 0:
|
if self.parent.settings_tab.layout_style == 0:
|
||||||
raw_slides.append(bible_text)
|
raw_slides.append(bible_text)
|
||||||
bible_text = u''
|
bible_text = u''
|
||||||
|
# If we are not 'Verse Per Slide' we have to make sure, that we
|
||||||
|
# add more verses.
|
||||||
|
else:
|
||||||
|
if item.row() < len(items) - 1:
|
||||||
|
bitem = items[item.row() + 1]
|
||||||
|
reference = bitem.data(QtCore.Qt.UserRole)
|
||||||
|
if isinstance(reference, QtCore.QVariant):
|
||||||
|
reference = reference.toPyObject()
|
||||||
|
bible_new = self._decodeQtObject(reference, 'bible')
|
||||||
|
dual_bible_new = self._decodeQtObject(reference, 'dual_bible')
|
||||||
|
if dual_bible_new:
|
||||||
|
raw_slides.append(bible_text)
|
||||||
|
bible_text = u''
|
||||||
|
elif bible != bible_new:
|
||||||
|
raw_slides.append(bible_text)
|
||||||
|
bible_text = u''
|
||||||
|
else:
|
||||||
|
raw_slides.append(bible_text)
|
||||||
|
bible_text = u''
|
||||||
|
# service item title
|
||||||
if not service_item.title:
|
if not service_item.title:
|
||||||
service_item.title = u'%s %s:%s' % (book, chapter, verse)
|
if dual_bible:
|
||||||
|
service_item.title = u'%s (%s, %s) %s' % (book, version,
|
||||||
|
dual_version, verse_text)
|
||||||
|
else:
|
||||||
|
service_item.title = u'%s (%s) %s' % (book, version, verse_text)
|
||||||
elif service_item.title.find(
|
elif service_item.title.find(
|
||||||
translate('BiblesPlugin.MediaItem', 'etc')) == -1:
|
translate('BiblesPlugin.MediaItem', 'etc')) == -1:
|
||||||
service_item.title = u'%s, %s' % (service_item.title,
|
service_item.title = u'%s, %s' % (service_item.title,
|
||||||
translate('BiblesPlugin.MediaItem', 'etc'))
|
translate('BiblesPlugin.MediaItem', 'etc'))
|
||||||
|
# item theme
|
||||||
if len(self.parent.settings_tab.bible_theme) == 0:
|
if len(self.parent.settings_tab.bible_theme) == 0:
|
||||||
service_item.theme = None
|
service_item.theme = None
|
||||||
else:
|
else:
|
||||||
service_item.theme = self.parent.settings_tab.bible_theme
|
service_item.theme = self.parent.settings_tab.bible_theme
|
||||||
#if we are verse per slide we have already been added
|
|
||||||
if self.parent.settings_tab.layout_style != 0 and not bible2:
|
|
||||||
raw_slides.append(bible_text)
|
|
||||||
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)
|
||||||
if service_item.raw_footer:
|
if service_item.raw_footer:
|
||||||
for foot in raw_footer:
|
for footer in raw_footer:
|
||||||
service_item.raw_footer.append(foot)
|
service_item.raw_footer.append(footer)
|
||||||
else:
|
else:
|
||||||
service_item.raw_footer = raw_footer
|
service_item.raw_footer = raw_footer
|
||||||
return True
|
return True
|
||||||
@ -603,8 +612,8 @@ class BibleMediaItem(MediaManagerItem):
|
|||||||
row, QtCore.QVariant(book[u'chapters']))
|
row, QtCore.QVariant(book[u'chapters']))
|
||||||
if first:
|
if first:
|
||||||
first = False
|
first = False
|
||||||
self.initialiseChapterVerse(
|
self.initialiseChapterVerse(bible, book[u'name'],
|
||||||
bible, book[u'name'], book[u'chapters'])
|
book[u'chapters'])
|
||||||
|
|
||||||
def initialiseChapterVerse(self, bible, book, chapters):
|
def initialiseChapterVerse(self, bible, book, chapters):
|
||||||
log.debug(u'initialiseChapterVerse %s, %s', bible, book)
|
log.debug(u'initialiseChapterVerse %s, %s', bible, book)
|
||||||
@ -628,32 +637,69 @@ class BibleMediaItem(MediaManagerItem):
|
|||||||
for i in range(int(range_from), int(range_to) + 1):
|
for i in range(int(range_from), int(range_to) + 1):
|
||||||
combo.addItem(unicode(i))
|
combo.addItem(unicode(i))
|
||||||
|
|
||||||
def displayResults(self, bible):
|
def displayResults(self, bible, dual_bible=None):
|
||||||
|
'''
|
||||||
|
Displays the search results in the media manager. All data needed for further
|
||||||
|
action is saved for/in each row.
|
||||||
|
'''
|
||||||
version = self.parent.manager.get_meta_data(bible, u'Version')
|
version = self.parent.manager.get_meta_data(bible, u'Version')
|
||||||
copyright = self.parent.manager.get_meta_data(bible, u'Copyright')
|
copyright = self.parent.manager.get_meta_data(bible, u'Copyright')
|
||||||
permission = self.parent.manager.get_meta_data(bible, u'Permissions')
|
permission = self.parent.manager.get_meta_data(bible, u'Permissions')
|
||||||
if not permission:
|
if dual_bible:
|
||||||
permission = u''
|
dual_version = self.parent.manager.get_meta_data(dual_bible,
|
||||||
|
u'Version')
|
||||||
|
dual_copyright = self.parent.manager.get_meta_data(dual_bible,
|
||||||
|
u'Copyright')
|
||||||
|
dual_permission = self.parent.manager.get_meta_data(dual_bible,
|
||||||
|
u'Permissions')
|
||||||
|
if dual_permission:
|
||||||
|
dual_permission = dual_permission.value
|
||||||
else:
|
else:
|
||||||
permission = permission.value
|
dual_permission = u''
|
||||||
|
# We count the number of rows which are maybe already present.
|
||||||
|
start_count = self.listView.count()
|
||||||
for count, verse in enumerate(self.search_results):
|
for count, verse in enumerate(self.search_results):
|
||||||
bible_text = u' %s %d:%d (%s)' % \
|
if dual_bible:
|
||||||
(verse.book.name, verse.chapter, verse.verse, bible)
|
|
||||||
bible_verse = QtGui.QListWidgetItem(bible_text)
|
|
||||||
#bible_verse.setData(QtCore.Qt.UserRole,
|
|
||||||
# QtCore.QVariant(bible_text))
|
|
||||||
vdict = {
|
vdict = {
|
||||||
'bible': QtCore.QVariant(bible),
|
|
||||||
'version': QtCore.QVariant(version.value),
|
|
||||||
'copyright': QtCore.QVariant(copyright.value),
|
|
||||||
'permission': QtCore.QVariant(permission),
|
|
||||||
'book':QtCore.QVariant(verse.book.name),
|
'book':QtCore.QVariant(verse.book.name),
|
||||||
'chapter':QtCore.QVariant(verse.chapter),
|
'chapter':QtCore.QVariant(verse.chapter),
|
||||||
'verse':QtCore.QVariant(verse.verse),
|
'verse':QtCore.QVariant(verse.verse),
|
||||||
'text': QtCore.QVariant(verse.text)
|
'bible':QtCore.QVariant(bible),
|
||||||
|
'version':QtCore.QVariant(version.value),
|
||||||
|
'copyright':QtCore.QVariant(copyright.value),
|
||||||
|
#'permission':QtCore.QVariant(permission.value),
|
||||||
|
'text':QtCore.QVariant(verse.text),
|
||||||
|
'dual_bible':QtCore.QVariant(dual_bible),
|
||||||
|
'dual_version':QtCore.QVariant(dual_version.value),
|
||||||
|
'dual_copyright':QtCore.QVariant(dual_copyright.value),
|
||||||
|
#'dual_permission':QtCore.QVariant(dual_permission),
|
||||||
|
'dual_text':QtCore.QVariant(
|
||||||
|
self.dual_search_results[count].text)
|
||||||
}
|
}
|
||||||
|
bible_text = u' %s %d:%d (%s, %s)' % (verse.book.name,
|
||||||
|
verse.chapter, verse.verse, version.value, dual_version.value)
|
||||||
|
else:
|
||||||
|
vdict = {
|
||||||
|
'book':QtCore.QVariant(verse.book.name),
|
||||||
|
'chapter':QtCore.QVariant(verse.chapter),
|
||||||
|
'verse':QtCore.QVariant(verse.verse),
|
||||||
|
'bible':QtCore.QVariant(bible),
|
||||||
|
'version':QtCore.QVariant(version.value),
|
||||||
|
'copyright':QtCore.QVariant(copyright.value),
|
||||||
|
#'permission':QtCore.QVariant(permission.value),
|
||||||
|
'text':QtCore.QVariant(verse.text),
|
||||||
|
'dual_bible':QtCore.QVariant(dual_bible)
|
||||||
|
}
|
||||||
|
bible_text = u' %s %d:%d (%s)' % (verse.book.name,
|
||||||
|
verse.chapter, verse.verse, version.value)
|
||||||
|
# set the row title
|
||||||
|
bible_verse = QtGui.QListWidgetItem(bible_text)
|
||||||
|
#bible_verse.setData(QtCore.Qt.UserRole,
|
||||||
|
# QtCore.QVariant(bible_text))
|
||||||
bible_verse.setData(QtCore.Qt.UserRole, QtCore.QVariant(vdict))
|
bible_verse.setData(QtCore.Qt.UserRole, QtCore.QVariant(vdict))
|
||||||
self.listView.addItem(bible_verse)
|
self.listView.addItem(bible_verse)
|
||||||
row = self.listView.setCurrentRow(count)
|
row = self.listView.setCurrentRow(count + start_count)
|
||||||
if row:
|
if row:
|
||||||
row.setSelected(True)
|
row.setSelected(True)
|
||||||
|
self.search_results = {}
|
||||||
|
self.dual_search_results = {}
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
from openlp.core.lib import build_icon, translate
|
from openlp.core.lib import build_icon, translate
|
||||||
|
from openlp.core.ui import SpellTextEdit
|
||||||
|
|
||||||
class Ui_CustomEditDialog(object):
|
class Ui_CustomEditDialog(object):
|
||||||
def setupUi(self, customEditDialog):
|
def setupUi(self, customEditDialog):
|
||||||
@ -73,7 +74,7 @@ class Ui_CustomEditDialog(object):
|
|||||||
self.editLayout3.setSpacing(8)
|
self.editLayout3.setSpacing(8)
|
||||||
self.editLayout3.setMargin(0)
|
self.editLayout3.setMargin(0)
|
||||||
self.editLayout3.setObjectName(u'editLayout3')
|
self.editLayout3.setObjectName(u'editLayout3')
|
||||||
self.verseTextEdit = QtGui.QTextEdit(self.editWidget)
|
self.verseTextEdit = SpellTextEdit(self)
|
||||||
self.verseTextEdit.setObjectName(u'verseTextEdit')
|
self.verseTextEdit.setObjectName(u'verseTextEdit')
|
||||||
self.editLayout3.addWidget(self.verseTextEdit)
|
self.editLayout3.addWidget(self.verseTextEdit)
|
||||||
self.buttonWidget = QtGui.QWidget(self.editWidget)
|
self.buttonWidget = QtGui.QWidget(self.editWidget)
|
||||||
|
@ -422,7 +422,9 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
self.VerseDeleteButton.setEnabled(True)
|
self.VerseDeleteButton.setEnabled(True)
|
||||||
|
|
||||||
def onVerseAddButtonClicked(self):
|
def onVerseAddButtonClicked(self):
|
||||||
self.verse_form.setVerse(u'', True)
|
# Allow insert button as you do not know if multiple verses will
|
||||||
|
# be entered.
|
||||||
|
self.verse_form.setVerse(u'')
|
||||||
if self.verse_form.exec_():
|
if self.verse_form.exec_():
|
||||||
afterText, verse, subVerse = self.verse_form.getVerse()
|
afterText, verse, subVerse = self.verse_form.getVerse()
|
||||||
data = u'%s:%s' % (verse, subVerse)
|
data = u'%s:%s' % (verse, subVerse)
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
from openlp.core.lib import build_icon, translate
|
from openlp.core.lib import build_icon, translate
|
||||||
|
from openlp.core.ui import SpellTextEdit
|
||||||
from openlp.plugins.songs.lib import VerseType
|
from openlp.plugins.songs.lib import VerseType
|
||||||
|
|
||||||
class Ui_EditVerseDialog(object):
|
class Ui_EditVerseDialog(object):
|
||||||
@ -38,7 +39,7 @@ class Ui_EditVerseDialog(object):
|
|||||||
self.EditVerseLayout.setSpacing(8)
|
self.EditVerseLayout.setSpacing(8)
|
||||||
self.EditVerseLayout.setMargin(8)
|
self.EditVerseLayout.setMargin(8)
|
||||||
self.EditVerseLayout.setObjectName(u'EditVerseLayout')
|
self.EditVerseLayout.setObjectName(u'EditVerseLayout')
|
||||||
self.VerseTextEdit = QtGui.QPlainTextEdit(EditVerseDialog)
|
self.VerseTextEdit = SpellTextEdit(EditVerseDialog)
|
||||||
self.VerseTextEdit.setObjectName(u'VerseTextEdit')
|
self.VerseTextEdit.setObjectName(u'VerseTextEdit')
|
||||||
self.EditVerseLayout.addWidget(self.VerseTextEdit)
|
self.EditVerseLayout.addWidget(self.VerseTextEdit)
|
||||||
self.VerseTypeLayout = QtGui.QHBoxLayout()
|
self.VerseTypeLayout = QtGui.QHBoxLayout()
|
||||||
|
@ -45,6 +45,9 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
|
|||||||
"""
|
"""
|
||||||
QtGui.QDialog.__init__(self, parent)
|
QtGui.QDialog.__init__(self, parent)
|
||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
|
QtCore.QObject.connect(self.VerseTextEdit,
|
||||||
|
QtCore.SIGNAL('customContextMenuRequested(QPoint)'),
|
||||||
|
self.contextMenu)
|
||||||
QtCore.QObject.connect(
|
QtCore.QObject.connect(
|
||||||
self.InsertButton,
|
self.InsertButton,
|
||||||
QtCore.SIGNAL(u'clicked()'),
|
QtCore.SIGNAL(u'clicked()'),
|
||||||
@ -57,6 +60,10 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
|
|||||||
)
|
)
|
||||||
self.verse_regex = re.compile(r'---\[([-\w]+):([\d]+)\]---')
|
self.verse_regex = re.compile(r'---\[([-\w]+):([\d]+)\]---')
|
||||||
|
|
||||||
|
def contextMenu(self, point):
|
||||||
|
item = self.serviceManagerList.itemAt(point)
|
||||||
|
print item
|
||||||
|
|
||||||
def insertVerse(self, title, num=1):
|
def insertVerse(self, title, num=1):
|
||||||
if self.VerseTextEdit.textCursor().columnNumber() != 0:
|
if self.VerseTextEdit.textCursor().columnNumber() != 0:
|
||||||
self.VerseTextEdit.insertPlainText(u'\n')
|
self.VerseTextEdit.insertPlainText(u'\n')
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
<svg
|
<svg
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
@ -13,7 +14,7 @@
|
|||||||
height="744.09448"
|
height="744.09448"
|
||||||
id="svg5740"
|
id="svg5740"
|
||||||
sodipodi:version="0.32"
|
sodipodi:version="0.32"
|
||||||
inkscape:version="0.46"
|
inkscape:version="0.47 r22583"
|
||||||
version="1.0"
|
version="1.0"
|
||||||
sodipodi:docname="openlp-logo.svg"
|
sodipodi:docname="openlp-logo.svg"
|
||||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||||
@ -262,14 +263,15 @@
|
|||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="1.0119683"
|
inkscape:zoom="1.0119683"
|
||||||
inkscape:cx="513.59551"
|
inkscape:cx="513.59551"
|
||||||
inkscape:cy="369.01895"
|
inkscape:cy="490.71958"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="layer6"
|
inkscape:current-layer="layer6"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
inkscape:window-width="1280"
|
inkscape:window-width="1600"
|
||||||
inkscape:window-height="958"
|
inkscape:window-height="839"
|
||||||
inkscape:window-x="-4"
|
inkscape:window-x="-4"
|
||||||
inkscape:window-y="-4" />
|
inkscape:window-y="-3"
|
||||||
|
inkscape:window-maximized="1" />
|
||||||
<metadata
|
<metadata
|
||||||
id="metadata5745">
|
id="metadata5745">
|
||||||
<rdf:RDF>
|
<rdf:RDF>
|
||||||
@ -314,7 +316,7 @@
|
|||||||
inkscape:export-xdpi="90"
|
inkscape:export-xdpi="90"
|
||||||
inkscape:export-filename="/home/raoul/openlp-logo-0.2.png"
|
inkscape:export-filename="/home/raoul/openlp-logo-0.2.png"
|
||||||
transform="matrix(0.6379835,0,0,0.6379835,-67.554612,-15.189295)"
|
transform="matrix(0.6379835,0,0,0.6379835,-67.554612,-15.189295)"
|
||||||
d="M 833.03006,395.26932 A 357.71872,357.71872 0 1 1 117.59262,395.26932 A 357.71872,357.71872 0 1 1 833.03006,395.26932 z"
|
d="m 833.03006,395.26932 c 0,197.56259 -160.15613,357.71872 -357.71872,357.71872 -197.56259,0 -357.71872,-160.15613 -357.71872,-357.71872 0,-197.5626 160.15613,-357.718722 357.71872,-357.718722 197.56259,0 357.71872,160.156122 357.71872,357.718722 z"
|
||||||
sodipodi:ry="357.71872"
|
sodipodi:ry="357.71872"
|
||||||
sodipodi:rx="357.71872"
|
sodipodi:rx="357.71872"
|
||||||
sodipodi:cy="395.26932"
|
sodipodi:cy="395.26932"
|
||||||
@ -333,14 +335,14 @@
|
|||||||
sodipodi:cy="395.26932"
|
sodipodi:cy="395.26932"
|
||||||
sodipodi:rx="357.71872"
|
sodipodi:rx="357.71872"
|
||||||
sodipodi:ry="357.71872"
|
sodipodi:ry="357.71872"
|
||||||
d="M 833.03006,395.26932 A 357.71872,357.71872 0 1 1 117.59262,395.26932 A 357.71872,357.71872 0 1 1 833.03006,395.26932 z"
|
d="m 833.03006,395.26932 c 0,197.56259 -160.15613,357.71872 -357.71872,357.71872 -197.56259,0 -357.71872,-160.15613 -357.71872,-357.71872 0,-197.5626 160.15613,-357.718722 357.71872,-357.718722 197.56259,0 357.71872,160.156122 357.71872,357.718722 z"
|
||||||
transform="matrix(0.6379835,0,0,0.6379835,-67.554612,-15.189295)" />
|
transform="matrix(0.6379835,0,0,0.6379835,-67.554612,-15.189295)" />
|
||||||
<path
|
<path
|
||||||
inkscape:export-ydpi="90"
|
inkscape:export-ydpi="90"
|
||||||
inkscape:export-xdpi="90"
|
inkscape:export-xdpi="90"
|
||||||
inkscape:export-filename="/home/raoul/openlp-logo-0.2.png"
|
inkscape:export-filename="/home/raoul/openlp-logo-0.2.png"
|
||||||
transform="matrix(0.6317287,0,0,0.6317287,-64.581662,-12.716988)"
|
transform="matrix(0.6317287,0,0,0.6317287,-64.581662,-12.716988)"
|
||||||
d="M 833.03006,395.26932 A 357.71872,357.71872 0 1 1 117.59262,395.26932 A 357.71872,357.71872 0 1 1 833.03006,395.26932 z"
|
d="m 833.03006,395.26932 c 0,197.56259 -160.15613,357.71872 -357.71872,357.71872 -197.56259,0 -357.71872,-160.15613 -357.71872,-357.71872 0,-197.5626 160.15613,-357.718722 357.71872,-357.718722 197.56259,0 357.71872,160.156122 357.71872,357.718722 z"
|
||||||
sodipodi:ry="357.71872"
|
sodipodi:ry="357.71872"
|
||||||
sodipodi:rx="357.71872"
|
sodipodi:rx="357.71872"
|
||||||
sodipodi:cy="395.26932"
|
sodipodi:cy="395.26932"
|
||||||
@ -360,133 +362,5 @@
|
|||||||
d="M 235.67972,13.233984 C 199.75196,13.233984 165.79894,21.722639 135.704,36.792417 L 296.72396,165.96674 L 349.27738,208.13573 C 388.42508,203.26072 423.85383,195.91016 453.73266,186.69491 C 430.89209,87.375898 341.89666,13.233985 235.67972,13.233984 z M 79.118968,77.210299 C 71.146114,85.023824 63.764822,93.431949 57.026574,102.35694 L 274.63156,209.66285 L 282.95948,213.77591 C 290.87301,213.39575 298.68426,212.91815 306.39574,212.35059 L 275.3035,193.86221 L 79.118968,77.210299 z M 24.488653,162.95322 C 21.826867,170.53849 19.56686,178.3145 17.728584,186.24695 C 60.352717,199.56405 114.44154,209.03001 174.67621,212.92072 L 24.488653,162.95322 z"
|
d="M 235.67972,13.233984 C 199.75196,13.233984 165.79894,21.722639 135.704,36.792417 L 296.72396,165.96674 L 349.27738,208.13573 C 388.42508,203.26072 423.85383,195.91016 453.73266,186.69491 C 430.89209,87.375898 341.89666,13.233985 235.67972,13.233984 z M 79.118968,77.210299 C 71.146114,85.023824 63.764822,93.431949 57.026574,102.35694 L 274.63156,209.66285 L 282.95948,213.77591 C 290.87301,213.39575 298.68426,212.91815 306.39574,212.35059 L 275.3035,193.86221 L 79.118968,77.210299 z M 24.488653,162.95322 C 21.826867,170.53849 19.56686,178.3145 17.728584,186.24695 C 60.352717,199.56405 114.44154,209.03001 174.67621,212.92072 L 24.488653,162.95322 z"
|
||||||
style="fill:url(#linearGradient4057);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.80000019;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
|
style="fill:url(#linearGradient4057);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.80000019;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
|
||||||
</g>
|
</g>
|
||||||
<g
|
|
||||||
id="g4025"
|
|
||||||
transform="translate(-0.9881736,-11.858079)">
|
|
||||||
<g
|
|
||||||
id="g3202"
|
|
||||||
transform="matrix(0.6515729,0,0,0.6515729,482.27854,11.483464)">
|
|
||||||
<path
|
|
||||||
inkscape:export-ydpi="90"
|
|
||||||
inkscape:export-xdpi="90"
|
|
||||||
inkscape:export-filename="/home/raoul/openlp-logo-0.2.png"
|
|
||||||
transform="matrix(0.9791437,0,0,0.9791437,6.955563,-15.153813)"
|
|
||||||
d="M 833.03006,395.26932 A 357.71872,357.71872 0 1 1 117.59262,395.26932 A 357.71872,357.71872 0 1 1 833.03006,395.26932 z"
|
|
||||||
sodipodi:ry="357.71872"
|
|
||||||
sodipodi:rx="357.71872"
|
|
||||||
sodipodi:cy="395.26932"
|
|
||||||
sodipodi:cx="475.31134"
|
|
||||||
id="path3204"
|
|
||||||
style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.00028753;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline;filter:url(#filter6926)"
|
|
||||||
sodipodi:type="arc" />
|
|
||||||
<path
|
|
||||||
inkscape:export-ydpi="90"
|
|
||||||
inkscape:export-xdpi="90"
|
|
||||||
inkscape:export-filename="/home/raoul/openlp-logo-0.2.png"
|
|
||||||
sodipodi:type="arc"
|
|
||||||
style="opacity:1;fill:#051e52;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.00028753;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
|
|
||||||
id="path3206"
|
|
||||||
sodipodi:cx="475.31134"
|
|
||||||
sodipodi:cy="395.26932"
|
|
||||||
sodipodi:rx="357.71872"
|
|
||||||
sodipodi:ry="357.71872"
|
|
||||||
d="M 833.03006,395.26932 A 357.71872,357.71872 0 1 1 117.59262,395.26932 A 357.71872,357.71872 0 1 1 833.03006,395.26932 z"
|
|
||||||
transform="matrix(0.9791437,0,0,0.9791437,6.955563,-15.153813)" />
|
|
||||||
<path
|
|
||||||
inkscape:export-ydpi="90"
|
|
||||||
inkscape:export-xdpi="90"
|
|
||||||
inkscape:export-filename="/home/raoul/openlp-logo-0.2.png"
|
|
||||||
transform="matrix(0.9695442,0,0,0.9695442,11.51829,-11.359445)"
|
|
||||||
d="M 833.03006,395.26932 A 357.71872,357.71872 0 1 1 117.59262,395.26932 A 357.71872,357.71872 0 1 1 833.03006,395.26932 z"
|
|
||||||
sodipodi:ry="357.71872"
|
|
||||||
sodipodi:rx="357.71872"
|
|
||||||
sodipodi:cy="395.26932"
|
|
||||||
sodipodi:cx="475.31134"
|
|
||||||
id="path3208"
|
|
||||||
style="opacity:1;fill:url(#linearGradient4047);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.00028753;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
|
|
||||||
sodipodi:type="arc" />
|
|
||||||
<path
|
|
||||||
inkscape:export-ydpi="90"
|
|
||||||
inkscape:export-xdpi="90"
|
|
||||||
inkscape:export-filename="/home/raoul/openlp-logo-0.2.png"
|
|
||||||
id="path3210"
|
|
||||||
d="M 472.34375,28.46875 C 417.2037,28.46875 365.09439,41.496693 318.90625,64.625 L 566.03125,262.875 L 805.59375,455.0625 C 812.23078,428.42209 815.75,400.56059 815.75,371.875 C 815.75,182.3236 661.89515,28.468751 472.34375,28.46875 z M 232.0625,126.65625 C 219.82618,138.64804 208.49776,151.55239 198.15625,165.25 L 532.125,329.9375 L 777.03125,450.71875 L 533.15625,305.6875 L 232.0625,126.65625 z M 148.21875,258.25 C 142.6509,274.11664 138.23633,290.51145 135.03125,307.34375 L 509.9375,399.96875 L 759.8125,461.71875 L 510,378.59375 L 148.21875,258.25 z M 131.375,412.5625 C 133.37791,429.50222 136.58909,446.06205 140.96875,462.15625 L 491.71875,472.15625 L 757.9375,479.78125 L 499.78125,452.0625 L 131.375,412.5625 z M 768.28125,495.84375 L 494,525.125 L 183.96875,558.21875 C 193.11462,572.33688 203.2524,585.75373 214.3125,598.34375 L 485.8125,548.09375 L 768.28125,495.84375 z M 789.4375,503.84375 L 500.34375,599.28125 L 296.21875,666.65625 C 347.72979,697.51903 407.96606,715.24999 472.34375,715.25 C 615.1411,715.25 737.67984,627.95502 789.4375,503.84375 z"
|
|
||||||
style="opacity:1;fill:url(#linearGradient4049);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
|
|
||||||
<path
|
|
||||||
id="path3212"
|
|
||||||
d="M 472.34375,28.46875 C 417.2037,28.46875 365.09439,41.496693 318.90625,64.625 L 566.03125,262.875 L 646.6875,327.59375 C 706.76934,320.11184 761.14353,308.83058 807,294.6875 C 771.94549,142.25788 635.35996,28.468751 472.34375,28.46875 z M 232.0625,126.65625 C 219.82618,138.64804 208.49776,151.55239 198.15625,165.25 L 532.125,329.9375 L 544.90625,336.25 C 557.05152,335.66655 569.03982,334.93356 580.875,334.0625 L 533.15625,305.6875 L 232.0625,126.65625 z M 148.21875,258.25 C 144.13358,269.89147 140.66504,281.82569 137.84375,294 C 203.26104,314.43839 286.27373,328.96625 378.71875,334.9375 L 148.21875,258.25 z"
|
|
||||||
style="opacity:1;fill:url(#linearGradient4051);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.80000019;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
style="fill:#ffffff;fill-opacity:1;filter:url(#filter4005)"
|
|
||||||
id="g2762"
|
|
||||||
transform="matrix(0.8481394,0,0,0.8481394,20.507371,-653.75135)">
|
|
||||||
<path
|
|
||||||
style="fill:#ffffff;fill-opacity:1"
|
|
||||||
id="path2764"
|
|
||||||
d="M 801.444,1038.553 L 817.061,1038.553 C 835.923,1038.553 845.557,1048.997 845.557,1064.514 C 845.557,1079.726 835.923,1090.373 817.061,1090.373 L 808.745,1090.373 L 808.745,1107.512 L 801.444,1107.512 L 801.444,1038.553 L 801.444,1038.553 z M 816.655,1083.984 C 832.172,1083.984 837.952,1075.872 837.952,1064.513 C 837.952,1053.154 832.172,1045.042 816.655,1045.042 L 808.745,1045.042 L 808.745,1083.983 L 816.655,1083.983 L 816.655,1083.984 z" />
|
|
||||||
|
|
||||||
<path
|
|
||||||
style="fill:#ffffff;fill-opacity:1"
|
|
||||||
id="path2766"
|
|
||||||
d="M 852.858,1038.553 L 894.842,1038.553 L 894.842,1045.043 L 860.158,1045.043 L 860.158,1077.393 L 891.089,1077.393 L 891.089,1083.782 L 860.158,1083.782 L 860.158,1101.022 L 896.261,1101.022 L 896.261,1107.512 L 852.858,1107.512 L 852.858,1038.553 z" />
|
|
||||||
|
|
||||||
<path
|
|
||||||
style="fill:#ffffff;fill-opacity:1"
|
|
||||||
id="path2768"
|
|
||||||
d="M 913.197,1059.545 C 911.27,1057.212 908.43,1053.155 908.43,1053.155 C 908.43,1053.155 909.038,1058.023 909.038,1060.965 L 909.038,1107.512 L 902.142,1107.512 L 902.142,1037.843 L 903.359,1037.843 L 944.532,1086.52 C 946.459,1088.853 948.791,1091.683 948.791,1091.683 C 948.791,1091.683 948.791,1088.041 948.791,1085.101 L 948.791,1038.553 L 955.586,1038.553 L 955.586,1108.222 L 954.369,1108.222 L 913.197,1059.545 z" />
|
|
||||||
|
|
||||||
<path
|
|
||||||
style="fill:#ffffff;fill-opacity:1"
|
|
||||||
id="path2770"
|
|
||||||
d="M 677.015,1070.032 C 677.015,1035.196 703.268,1011.468 735.579,1011.468 C 767.89,1011.468 794.143,1035.197 794.143,1070.032 C 794.143,1104.867 767.89,1128.596 735.579,1128.596 C 703.268,1128.596 677.015,1104.868 677.015,1070.032 z M 787.075,1070.032 C 787.075,1040.077 765.03,1017.694 735.579,1017.694 C 706.128,1017.694 684.083,1040.077 684.083,1070.032 C 684.083,1099.988 706.128,1122.37 735.579,1122.37 C 765.03,1122.37 787.075,1099.988 787.075,1070.032 z" />
|
|
||||||
|
|
||||||
<path
|
|
||||||
style="fill:#ffffff;fill-opacity:1"
|
|
||||||
id="path2772"
|
|
||||||
d="M 967.521,1012.814 L 991.082,1012.814 L 991.082,1106.551 L 1042.915,1106.551 L 1042.915,1127.25 L 967.521,1127.25 L 967.521,1012.814 z" />
|
|
||||||
|
|
||||||
<path
|
|
||||||
style="fill:#ffffff;fill-opacity:1"
|
|
||||||
id="path2774"
|
|
||||||
d="M 1054.85,1012.814 L 1086.489,1012.814 C 1118.464,1012.814 1137.649,1029.475 1137.649,1057.074 C 1137.649,1084.674 1118.295,1101.166 1086.489,1101.166 L 1078.411,1101.166 L 1078.411,1127.251 L 1054.85,1127.251 L 1054.85,1012.814 z M 1085.815,1080.467 C 1105,1080.467 1113.414,1072.726 1113.414,1057.074 C 1113.414,1041.255 1104.663,1033.513 1085.815,1033.513 L 1078.41,1033.513 L 1078.41,1080.466 L 1085.815,1080.466 L 1085.815,1080.467 z" />
|
|
||||||
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
style="fill:#000d26;fill-opacity:1"
|
|
||||||
transform="matrix(0.8481394,0,0,0.8481394,20.507371,-653.75135)"
|
|
||||||
id="g3221">
|
|
||||||
<path
|
|
||||||
style="fill:#000d26;fill-opacity:1"
|
|
||||||
d="M 801.444,1038.553 L 817.061,1038.553 C 835.923,1038.553 845.557,1048.997 845.557,1064.514 C 845.557,1079.726 835.923,1090.373 817.061,1090.373 L 808.745,1090.373 L 808.745,1107.512 L 801.444,1107.512 L 801.444,1038.553 L 801.444,1038.553 z M 816.655,1083.984 C 832.172,1083.984 837.952,1075.872 837.952,1064.513 C 837.952,1053.154 832.172,1045.042 816.655,1045.042 L 808.745,1045.042 L 808.745,1083.983 L 816.655,1083.983 L 816.655,1083.984 z"
|
|
||||||
id="path3223" />
|
|
||||||
|
|
||||||
<path
|
|
||||||
style="fill:#000d26;fill-opacity:1"
|
|
||||||
d="M 852.858,1038.553 L 894.842,1038.553 L 894.842,1045.043 L 860.158,1045.043 L 860.158,1077.393 L 891.089,1077.393 L 891.089,1083.782 L 860.158,1083.782 L 860.158,1101.022 L 896.261,1101.022 L 896.261,1107.512 L 852.858,1107.512 L 852.858,1038.553 z"
|
|
||||||
id="path3225" />
|
|
||||||
|
|
||||||
<path
|
|
||||||
style="fill:#000d26;fill-opacity:1"
|
|
||||||
d="M 913.197,1059.545 C 911.27,1057.212 908.43,1053.155 908.43,1053.155 C 908.43,1053.155 909.038,1058.023 909.038,1060.965 L 909.038,1107.512 L 902.142,1107.512 L 902.142,1037.843 L 903.359,1037.843 L 944.532,1086.52 C 946.459,1088.853 948.791,1091.683 948.791,1091.683 C 948.791,1091.683 948.791,1088.041 948.791,1085.101 L 948.791,1038.553 L 955.586,1038.553 L 955.586,1108.222 L 954.369,1108.222 L 913.197,1059.545 z"
|
|
||||||
id="path3227" />
|
|
||||||
|
|
||||||
<path
|
|
||||||
style="fill:#000d26;fill-opacity:1"
|
|
||||||
d="M 677.015,1070.032 C 677.015,1035.196 703.268,1011.468 735.579,1011.468 C 767.89,1011.468 794.143,1035.197 794.143,1070.032 C 794.143,1104.867 767.89,1128.596 735.579,1128.596 C 703.268,1128.596 677.015,1104.868 677.015,1070.032 z M 787.075,1070.032 C 787.075,1040.077 765.03,1017.694 735.579,1017.694 C 706.128,1017.694 684.083,1040.077 684.083,1070.032 C 684.083,1099.988 706.128,1122.37 735.579,1122.37 C 765.03,1122.37 787.075,1099.988 787.075,1070.032 z"
|
|
||||||
id="path3229" />
|
|
||||||
|
|
||||||
<path
|
|
||||||
style="fill:#000d26;fill-opacity:1"
|
|
||||||
d="M 967.521,1012.814 L 991.082,1012.814 L 991.082,1106.551 L 1042.915,1106.551 L 1042.915,1127.25 L 967.521,1127.25 L 967.521,1012.814 z"
|
|
||||||
id="path3231" />
|
|
||||||
|
|
||||||
<path
|
|
||||||
style="fill:#000d26;fill-opacity:1"
|
|
||||||
d="M 1054.85,1012.814 L 1086.489,1012.814 C 1118.464,1012.814 1137.649,1029.475 1137.649,1057.074 C 1137.649,1084.674 1118.295,1101.166 1086.489,1101.166 L 1078.411,1101.166 L 1078.411,1127.251 L 1054.85,1127.251 L 1054.85,1012.814 z M 1085.815,1080.467 C 1105,1080.467 1113.414,1072.726 1113.414,1057.074 C 1113.414,1041.255 1104.663,1033.513 1085.815,1033.513 L 1078.41,1033.513 L 1078.41,1080.466 L 1085.815,1080.466 L 1085.815,1080.467 z"
|
|
||||||
id="path3233" />
|
|
||||||
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 14 KiB |
492
resources/images/openlp.svg
Normal file
492
resources/images/openlp.svg
Normal file
@ -0,0 +1,492 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="1052.3622"
|
||||||
|
height="744.09448"
|
||||||
|
id="svg5740"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.46"
|
||||||
|
version="1.0"
|
||||||
|
sodipodi:docname="openlp-logo.svg"
|
||||||
|
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||||
|
inkscape:export-filename="/home/raoul/openlp-logo-0.2.png"
|
||||||
|
inkscape:export-xdpi="91.860847"
|
||||||
|
inkscape:export-ydpi="91.860847"
|
||||||
|
style="display:inline">
|
||||||
|
<defs
|
||||||
|
id="defs5742">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3208">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0.25098041;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3210" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3212" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3195">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#cdcdff;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3197" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ebebff;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3199" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient6359">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#000d26;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop6361" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#507fda;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop6363" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 526.18109 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||||
|
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||||
|
id="perspective5748" />
|
||||||
|
<filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter6926">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="3.5771872"
|
||||||
|
id="feGaussianBlur6928" />
|
||||||
|
</filter>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3208"
|
||||||
|
id="linearGradient3214"
|
||||||
|
x1="470.25891"
|
||||||
|
y1="276.68851"
|
||||||
|
x2="463.2301"
|
||||||
|
y2="14.822601"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3208"
|
||||||
|
id="linearGradient3229"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="470.25891"
|
||||||
|
y1="276.68851"
|
||||||
|
x2="463.2301"
|
||||||
|
y2="14.822601" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3208"
|
||||||
|
id="linearGradient3279"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="470.25891"
|
||||||
|
y1="276.68851"
|
||||||
|
x2="463.2301"
|
||||||
|
y2="14.822601" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3208"
|
||||||
|
id="linearGradient3287"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="470.25891"
|
||||||
|
y1="276.68851"
|
||||||
|
x2="463.2301"
|
||||||
|
y2="14.822601"
|
||||||
|
gradientTransform="matrix(1.1122448,0,0,1.2037738,-57.29825,4.8849318)" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3195"
|
||||||
|
id="linearGradient3196"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="117.59262"
|
||||||
|
y1="384.05795"
|
||||||
|
x2="418.20981"
|
||||||
|
y2="436.03787" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient6359"
|
||||||
|
id="linearGradient3198"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="815.75"
|
||||||
|
y1="480.55844"
|
||||||
|
x2="201.10622"
|
||||||
|
y2="371.85938" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3208"
|
||||||
|
id="linearGradient3200"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.1122448,0,0,1.2037738,-57.29825,4.8849318)"
|
||||||
|
x1="470.25891"
|
||||||
|
y1="276.68851"
|
||||||
|
x2="469.44925"
|
||||||
|
y2="104.30029" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3195"
|
||||||
|
id="linearGradient3215"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="117.59262"
|
||||||
|
y1="384.05795"
|
||||||
|
x2="418.20981"
|
||||||
|
y2="436.03787" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient6359"
|
||||||
|
id="linearGradient3217"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="815.75"
|
||||||
|
y1="480.55844"
|
||||||
|
x2="201.10622"
|
||||||
|
y2="371.85938" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3208"
|
||||||
|
id="linearGradient3219"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.1122448,0,0,1.2037738,-57.29825,4.8849318)"
|
||||||
|
x1="470.25891"
|
||||||
|
y1="276.68851"
|
||||||
|
x2="469.44925"
|
||||||
|
y2="104.30029" />
|
||||||
|
<filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter4005">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="4.333215"
|
||||||
|
id="feGaussianBlur4007" />
|
||||||
|
</filter>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3208"
|
||||||
|
id="linearGradient4010"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.7247086,0,0,0.7843464,-109.42065,-2.1325924)"
|
||||||
|
x1="470.25891"
|
||||||
|
y1="276.68851"
|
||||||
|
x2="469.44925"
|
||||||
|
y2="104.30029" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient6359"
|
||||||
|
id="linearGradient4013"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="815.75"
|
||||||
|
y1="480.55844"
|
||||||
|
x2="201.10622"
|
||||||
|
y2="371.85938"
|
||||||
|
gradientTransform="matrix(0.6515729,0,0,0.6515729,-72.086668,-5.3154816)" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3195"
|
||||||
|
id="linearGradient4047"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="117.59262"
|
||||||
|
y1="384.05795"
|
||||||
|
x2="418.20981"
|
||||||
|
y2="436.03787" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient6359"
|
||||||
|
id="linearGradient4049"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="815.75"
|
||||||
|
y1="480.55844"
|
||||||
|
x2="201.10622"
|
||||||
|
y2="371.85938" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3208"
|
||||||
|
id="linearGradient4051"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.1122448,0,0,1.2037738,-57.29825,4.8849318)"
|
||||||
|
x1="470.25891"
|
||||||
|
y1="276.68851"
|
||||||
|
x2="469.44925"
|
||||||
|
y2="104.30029" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3195"
|
||||||
|
id="linearGradient4053"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
x1="117.59262"
|
||||||
|
y1="384.05795"
|
||||||
|
x2="418.20981"
|
||||||
|
y2="436.03787" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient6359"
|
||||||
|
id="linearGradient4055"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.6515729,0,0,0.6515729,-72.086668,-5.3154816)"
|
||||||
|
x1="815.75"
|
||||||
|
y1="480.55844"
|
||||||
|
x2="201.10622"
|
||||||
|
y2="371.85938" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3208"
|
||||||
|
id="linearGradient4057"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.7247086,0,0,0.7843464,-109.42065,-2.1325924)"
|
||||||
|
x1="470.25891"
|
||||||
|
y1="276.68851"
|
||||||
|
x2="469.44925"
|
||||||
|
y2="104.30029" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
gridtolerance="10000"
|
||||||
|
guidetolerance="10"
|
||||||
|
objecttolerance="10"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="1.0119683"
|
||||||
|
inkscape:cx="513.59551"
|
||||||
|
inkscape:cy="369.01895"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer6"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:window-width="1280"
|
||||||
|
inkscape:window-height="958"
|
||||||
|
inkscape:window-x="-4"
|
||||||
|
inkscape:window-y="-4" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5745">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Shadow"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
style="display:inline" />
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer5"
|
||||||
|
inkscape:label="Border"
|
||||||
|
style="display:inline" />
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer3"
|
||||||
|
inkscape:label="Rays Background"
|
||||||
|
style="display:inline" />
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer2"
|
||||||
|
inkscape:label="Rays Foreground"
|
||||||
|
style="display:inline" />
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer6"
|
||||||
|
inkscape:label="Reflection"
|
||||||
|
style="display:inline">
|
||||||
|
<g
|
||||||
|
id="g4018"
|
||||||
|
transform="translate(9.8817328,9.8817328)">
|
||||||
|
<path
|
||||||
|
inkscape:export-ydpi="90"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-filename="/home/raoul/openlp-logo-0.2.png"
|
||||||
|
transform="matrix(0.6379835,0,0,0.6379835,-67.554612,-15.189295)"
|
||||||
|
d="M 833.03006,395.26932 A 357.71872,357.71872 0 1 1 117.59262,395.26932 A 357.71872,357.71872 0 1 1 833.03006,395.26932 z"
|
||||||
|
sodipodi:ry="357.71872"
|
||||||
|
sodipodi:rx="357.71872"
|
||||||
|
sodipodi:cy="395.26932"
|
||||||
|
sodipodi:cx="475.31134"
|
||||||
|
id="path6903"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.00028753;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline;filter:url(#filter6926)"
|
||||||
|
sodipodi:type="arc" />
|
||||||
|
<path
|
||||||
|
inkscape:export-ydpi="90"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-filename="/home/raoul/openlp-logo-0.2.png"
|
||||||
|
sodipodi:type="arc"
|
||||||
|
style="fill:#051e52;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.00028753;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
|
||||||
|
id="path6900"
|
||||||
|
sodipodi:cx="475.31134"
|
||||||
|
sodipodi:cy="395.26932"
|
||||||
|
sodipodi:rx="357.71872"
|
||||||
|
sodipodi:ry="357.71872"
|
||||||
|
d="M 833.03006,395.26932 A 357.71872,357.71872 0 1 1 117.59262,395.26932 A 357.71872,357.71872 0 1 1 833.03006,395.26932 z"
|
||||||
|
transform="matrix(0.6379835,0,0,0.6379835,-67.554612,-15.189295)" />
|
||||||
|
<path
|
||||||
|
inkscape:export-ydpi="90"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-filename="/home/raoul/openlp-logo-0.2.png"
|
||||||
|
transform="matrix(0.6317287,0,0,0.6317287,-64.581662,-12.716988)"
|
||||||
|
d="M 833.03006,395.26932 A 357.71872,357.71872 0 1 1 117.59262,395.26932 A 357.71872,357.71872 0 1 1 833.03006,395.26932 z"
|
||||||
|
sodipodi:ry="357.71872"
|
||||||
|
sodipodi:rx="357.71872"
|
||||||
|
sodipodi:cy="395.26932"
|
||||||
|
sodipodi:cx="475.31134"
|
||||||
|
id="path6317"
|
||||||
|
style="fill:url(#linearGradient4053);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.00028753;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
|
||||||
|
sodipodi:type="arc" />
|
||||||
|
<path
|
||||||
|
inkscape:export-ydpi="90"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-filename="/home/raoul/openlp-logo-0.2.png"
|
||||||
|
id="path6327"
|
||||||
|
d="M 235.67972,13.233984 C 199.75196,13.233984 165.79894,21.722639 135.704,36.792417 L 296.72396,165.96674 L 452.81639,291.19091 C 457.1409,273.83274 459.43393,255.67894 459.43393,236.98819 C 459.43393,113.48164 359.18627,13.233985 235.67972,13.233984 z M 79.118968,77.210299 C 71.146114,85.023824 63.764822,93.431949 57.026574,102.35694 L 274.63156,209.66285 L 434.20584,288.36064 L 275.3035,193.86221 L 79.118968,77.210299 z M 24.488653,162.95322 C 20.860793,173.29149 17.984378,183.97391 15.896035,194.94138 L 260.17479,255.29332 L 422.98657,295.52794 L 260.21551,241.36595 L 24.488653,162.95322 z M 13.513722,263.49906 C 14.818764,274.53653 16.911081,285.32646 19.764749,295.81301 L 248.30394,302.32874 L 421.76487,307.29698 L 253.55725,289.23619 L 13.513722,263.49906 z M 428.50457,317.76287 L 249.79034,336.84174 L 47.782384,358.40473 C 53.741585,367.60372 60.347088,376.34577 67.553549,384.54909 L 244.45559,351.80755 L 428.50457,317.76287 z M 442.28941,322.97545 L 253.92376,385.15994 L 120.92144,429.05966 C 154.48464,449.16902 193.73296,460.72203 235.67972,460.72204 C 328.7226,460.72204 408.56552,403.84299 442.28941,322.97545 z"
|
||||||
|
style="fill:url(#linearGradient4055);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
|
||||||
|
<path
|
||||||
|
id="path3203"
|
||||||
|
d="M 235.67972,13.233984 C 199.75196,13.233984 165.79894,21.722639 135.704,36.792417 L 296.72396,165.96674 L 349.27738,208.13573 C 388.42508,203.26072 423.85383,195.91016 453.73266,186.69491 C 430.89209,87.375898 341.89666,13.233985 235.67972,13.233984 z M 79.118968,77.210299 C 71.146114,85.023824 63.764822,93.431949 57.026574,102.35694 L 274.63156,209.66285 L 282.95948,213.77591 C 290.87301,213.39575 298.68426,212.91815 306.39574,212.35059 L 275.3035,193.86221 L 79.118968,77.210299 z M 24.488653,162.95322 C 21.826867,170.53849 19.56686,178.3145 17.728584,186.24695 C 60.352717,199.56405 114.44154,209.03001 174.67621,212.92072 L 24.488653,162.95322 z"
|
||||||
|
style="fill:url(#linearGradient4057);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.80000019;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4025"
|
||||||
|
transform="translate(-0.9881736,-11.858079)">
|
||||||
|
<g
|
||||||
|
id="g3202"
|
||||||
|
transform="matrix(0.6515729,0,0,0.6515729,482.27854,11.483464)">
|
||||||
|
<path
|
||||||
|
inkscape:export-ydpi="90"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-filename="/home/raoul/openlp-logo-0.2.png"
|
||||||
|
transform="matrix(0.9791437,0,0,0.9791437,6.955563,-15.153813)"
|
||||||
|
d="M 833.03006,395.26932 A 357.71872,357.71872 0 1 1 117.59262,395.26932 A 357.71872,357.71872 0 1 1 833.03006,395.26932 z"
|
||||||
|
sodipodi:ry="357.71872"
|
||||||
|
sodipodi:rx="357.71872"
|
||||||
|
sodipodi:cy="395.26932"
|
||||||
|
sodipodi:cx="475.31134"
|
||||||
|
id="path3204"
|
||||||
|
style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.00028753;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline;filter:url(#filter6926)"
|
||||||
|
sodipodi:type="arc" />
|
||||||
|
<path
|
||||||
|
inkscape:export-ydpi="90"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-filename="/home/raoul/openlp-logo-0.2.png"
|
||||||
|
sodipodi:type="arc"
|
||||||
|
style="opacity:1;fill:#051e52;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.00028753;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
|
||||||
|
id="path3206"
|
||||||
|
sodipodi:cx="475.31134"
|
||||||
|
sodipodi:cy="395.26932"
|
||||||
|
sodipodi:rx="357.71872"
|
||||||
|
sodipodi:ry="357.71872"
|
||||||
|
d="M 833.03006,395.26932 A 357.71872,357.71872 0 1 1 117.59262,395.26932 A 357.71872,357.71872 0 1 1 833.03006,395.26932 z"
|
||||||
|
transform="matrix(0.9791437,0,0,0.9791437,6.955563,-15.153813)" />
|
||||||
|
<path
|
||||||
|
inkscape:export-ydpi="90"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-filename="/home/raoul/openlp-logo-0.2.png"
|
||||||
|
transform="matrix(0.9695442,0,0,0.9695442,11.51829,-11.359445)"
|
||||||
|
d="M 833.03006,395.26932 A 357.71872,357.71872 0 1 1 117.59262,395.26932 A 357.71872,357.71872 0 1 1 833.03006,395.26932 z"
|
||||||
|
sodipodi:ry="357.71872"
|
||||||
|
sodipodi:rx="357.71872"
|
||||||
|
sodipodi:cy="395.26932"
|
||||||
|
sodipodi:cx="475.31134"
|
||||||
|
id="path3208"
|
||||||
|
style="opacity:1;fill:url(#linearGradient4047);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.00028753;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
|
||||||
|
sodipodi:type="arc" />
|
||||||
|
<path
|
||||||
|
inkscape:export-ydpi="90"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-filename="/home/raoul/openlp-logo-0.2.png"
|
||||||
|
id="path3210"
|
||||||
|
d="M 472.34375,28.46875 C 417.2037,28.46875 365.09439,41.496693 318.90625,64.625 L 566.03125,262.875 L 805.59375,455.0625 C 812.23078,428.42209 815.75,400.56059 815.75,371.875 C 815.75,182.3236 661.89515,28.468751 472.34375,28.46875 z M 232.0625,126.65625 C 219.82618,138.64804 208.49776,151.55239 198.15625,165.25 L 532.125,329.9375 L 777.03125,450.71875 L 533.15625,305.6875 L 232.0625,126.65625 z M 148.21875,258.25 C 142.6509,274.11664 138.23633,290.51145 135.03125,307.34375 L 509.9375,399.96875 L 759.8125,461.71875 L 510,378.59375 L 148.21875,258.25 z M 131.375,412.5625 C 133.37791,429.50222 136.58909,446.06205 140.96875,462.15625 L 491.71875,472.15625 L 757.9375,479.78125 L 499.78125,452.0625 L 131.375,412.5625 z M 768.28125,495.84375 L 494,525.125 L 183.96875,558.21875 C 193.11462,572.33688 203.2524,585.75373 214.3125,598.34375 L 485.8125,548.09375 L 768.28125,495.84375 z M 789.4375,503.84375 L 500.34375,599.28125 L 296.21875,666.65625 C 347.72979,697.51903 407.96606,715.24999 472.34375,715.25 C 615.1411,715.25 737.67984,627.95502 789.4375,503.84375 z"
|
||||||
|
style="opacity:1;fill:url(#linearGradient4049);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
|
||||||
|
<path
|
||||||
|
id="path3212"
|
||||||
|
d="M 472.34375,28.46875 C 417.2037,28.46875 365.09439,41.496693 318.90625,64.625 L 566.03125,262.875 L 646.6875,327.59375 C 706.76934,320.11184 761.14353,308.83058 807,294.6875 C 771.94549,142.25788 635.35996,28.468751 472.34375,28.46875 z M 232.0625,126.65625 C 219.82618,138.64804 208.49776,151.55239 198.15625,165.25 L 532.125,329.9375 L 544.90625,336.25 C 557.05152,335.66655 569.03982,334.93356 580.875,334.0625 L 533.15625,305.6875 L 232.0625,126.65625 z M 148.21875,258.25 C 144.13358,269.89147 140.66504,281.82569 137.84375,294 C 203.26104,314.43839 286.27373,328.96625 378.71875,334.9375 L 148.21875,258.25 z"
|
||||||
|
style="opacity:1;fill:url(#linearGradient4051);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.80000019;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
style="fill:#ffffff;fill-opacity:1;filter:url(#filter4005)"
|
||||||
|
id="g2762"
|
||||||
|
transform="matrix(0.8481394,0,0,0.8481394,20.507371,-653.75135)">
|
||||||
|
<path
|
||||||
|
style="fill:#ffffff;fill-opacity:1"
|
||||||
|
id="path2764"
|
||||||
|
d="M 801.444,1038.553 L 817.061,1038.553 C 835.923,1038.553 845.557,1048.997 845.557,1064.514 C 845.557,1079.726 835.923,1090.373 817.061,1090.373 L 808.745,1090.373 L 808.745,1107.512 L 801.444,1107.512 L 801.444,1038.553 L 801.444,1038.553 z M 816.655,1083.984 C 832.172,1083.984 837.952,1075.872 837.952,1064.513 C 837.952,1053.154 832.172,1045.042 816.655,1045.042 L 808.745,1045.042 L 808.745,1083.983 L 816.655,1083.983 L 816.655,1083.984 z" />
|
||||||
|
|
||||||
|
<path
|
||||||
|
style="fill:#ffffff;fill-opacity:1"
|
||||||
|
id="path2766"
|
||||||
|
d="M 852.858,1038.553 L 894.842,1038.553 L 894.842,1045.043 L 860.158,1045.043 L 860.158,1077.393 L 891.089,1077.393 L 891.089,1083.782 L 860.158,1083.782 L 860.158,1101.022 L 896.261,1101.022 L 896.261,1107.512 L 852.858,1107.512 L 852.858,1038.553 z" />
|
||||||
|
|
||||||
|
<path
|
||||||
|
style="fill:#ffffff;fill-opacity:1"
|
||||||
|
id="path2768"
|
||||||
|
d="M 913.197,1059.545 C 911.27,1057.212 908.43,1053.155 908.43,1053.155 C 908.43,1053.155 909.038,1058.023 909.038,1060.965 L 909.038,1107.512 L 902.142,1107.512 L 902.142,1037.843 L 903.359,1037.843 L 944.532,1086.52 C 946.459,1088.853 948.791,1091.683 948.791,1091.683 C 948.791,1091.683 948.791,1088.041 948.791,1085.101 L 948.791,1038.553 L 955.586,1038.553 L 955.586,1108.222 L 954.369,1108.222 L 913.197,1059.545 z" />
|
||||||
|
|
||||||
|
<path
|
||||||
|
style="fill:#ffffff;fill-opacity:1"
|
||||||
|
id="path2770"
|
||||||
|
d="M 677.015,1070.032 C 677.015,1035.196 703.268,1011.468 735.579,1011.468 C 767.89,1011.468 794.143,1035.197 794.143,1070.032 C 794.143,1104.867 767.89,1128.596 735.579,1128.596 C 703.268,1128.596 677.015,1104.868 677.015,1070.032 z M 787.075,1070.032 C 787.075,1040.077 765.03,1017.694 735.579,1017.694 C 706.128,1017.694 684.083,1040.077 684.083,1070.032 C 684.083,1099.988 706.128,1122.37 735.579,1122.37 C 765.03,1122.37 787.075,1099.988 787.075,1070.032 z" />
|
||||||
|
|
||||||
|
<path
|
||||||
|
style="fill:#ffffff;fill-opacity:1"
|
||||||
|
id="path2772"
|
||||||
|
d="M 967.521,1012.814 L 991.082,1012.814 L 991.082,1106.551 L 1042.915,1106.551 L 1042.915,1127.25 L 967.521,1127.25 L 967.521,1012.814 z" />
|
||||||
|
|
||||||
|
<path
|
||||||
|
style="fill:#ffffff;fill-opacity:1"
|
||||||
|
id="path2774"
|
||||||
|
d="M 1054.85,1012.814 L 1086.489,1012.814 C 1118.464,1012.814 1137.649,1029.475 1137.649,1057.074 C 1137.649,1084.674 1118.295,1101.166 1086.489,1101.166 L 1078.411,1101.166 L 1078.411,1127.251 L 1054.85,1127.251 L 1054.85,1012.814 z M 1085.815,1080.467 C 1105,1080.467 1113.414,1072.726 1113.414,1057.074 C 1113.414,1041.255 1104.663,1033.513 1085.815,1033.513 L 1078.41,1033.513 L 1078.41,1080.466 L 1085.815,1080.466 L 1085.815,1080.467 z" />
|
||||||
|
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
style="fill:#000d26;fill-opacity:1"
|
||||||
|
transform="matrix(0.8481394,0,0,0.8481394,20.507371,-653.75135)"
|
||||||
|
id="g3221">
|
||||||
|
<path
|
||||||
|
style="fill:#000d26;fill-opacity:1"
|
||||||
|
d="M 801.444,1038.553 L 817.061,1038.553 C 835.923,1038.553 845.557,1048.997 845.557,1064.514 C 845.557,1079.726 835.923,1090.373 817.061,1090.373 L 808.745,1090.373 L 808.745,1107.512 L 801.444,1107.512 L 801.444,1038.553 L 801.444,1038.553 z M 816.655,1083.984 C 832.172,1083.984 837.952,1075.872 837.952,1064.513 C 837.952,1053.154 832.172,1045.042 816.655,1045.042 L 808.745,1045.042 L 808.745,1083.983 L 816.655,1083.983 L 816.655,1083.984 z"
|
||||||
|
id="path3223" />
|
||||||
|
|
||||||
|
<path
|
||||||
|
style="fill:#000d26;fill-opacity:1"
|
||||||
|
d="M 852.858,1038.553 L 894.842,1038.553 L 894.842,1045.043 L 860.158,1045.043 L 860.158,1077.393 L 891.089,1077.393 L 891.089,1083.782 L 860.158,1083.782 L 860.158,1101.022 L 896.261,1101.022 L 896.261,1107.512 L 852.858,1107.512 L 852.858,1038.553 z"
|
||||||
|
id="path3225" />
|
||||||
|
|
||||||
|
<path
|
||||||
|
style="fill:#000d26;fill-opacity:1"
|
||||||
|
d="M 913.197,1059.545 C 911.27,1057.212 908.43,1053.155 908.43,1053.155 C 908.43,1053.155 909.038,1058.023 909.038,1060.965 L 909.038,1107.512 L 902.142,1107.512 L 902.142,1037.843 L 903.359,1037.843 L 944.532,1086.52 C 946.459,1088.853 948.791,1091.683 948.791,1091.683 C 948.791,1091.683 948.791,1088.041 948.791,1085.101 L 948.791,1038.553 L 955.586,1038.553 L 955.586,1108.222 L 954.369,1108.222 L 913.197,1059.545 z"
|
||||||
|
id="path3227" />
|
||||||
|
|
||||||
|
<path
|
||||||
|
style="fill:#000d26;fill-opacity:1"
|
||||||
|
d="M 677.015,1070.032 C 677.015,1035.196 703.268,1011.468 735.579,1011.468 C 767.89,1011.468 794.143,1035.197 794.143,1070.032 C 794.143,1104.867 767.89,1128.596 735.579,1128.596 C 703.268,1128.596 677.015,1104.868 677.015,1070.032 z M 787.075,1070.032 C 787.075,1040.077 765.03,1017.694 735.579,1017.694 C 706.128,1017.694 684.083,1040.077 684.083,1070.032 C 684.083,1099.988 706.128,1122.37 735.579,1122.37 C 765.03,1122.37 787.075,1099.988 787.075,1070.032 z"
|
||||||
|
id="path3229" />
|
||||||
|
|
||||||
|
<path
|
||||||
|
style="fill:#000d26;fill-opacity:1"
|
||||||
|
d="M 967.521,1012.814 L 991.082,1012.814 L 991.082,1106.551 L 1042.915,1106.551 L 1042.915,1127.25 L 967.521,1127.25 L 967.521,1012.814 z"
|
||||||
|
id="path3231" />
|
||||||
|
|
||||||
|
<path
|
||||||
|
style="fill:#000d26;fill-opacity:1"
|
||||||
|
d="M 1054.85,1012.814 L 1086.489,1012.814 C 1118.464,1012.814 1137.649,1029.475 1137.649,1057.074 C 1137.649,1084.674 1118.295,1101.166 1086.489,1101.166 L 1078.411,1101.166 L 1078.411,1127.251 L 1054.85,1127.251 L 1054.85,1012.814 z M 1085.815,1080.467 C 1105,1080.467 1113.414,1072.726 1113.414,1057.074 C 1113.414,1041.255 1104.663,1033.513 1085.815,1033.513 L 1078.41,1033.513 L 1078.41,1080.466 L 1085.815,1080.466 L 1085.815,1080.467 z"
|
||||||
|
id="path3233" />
|
||||||
|
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 24 KiB |
Loading…
Reference in New Issue
Block a user