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__)
|
||||
|
||||
# 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):
|
||||
"""
|
||||
A special shortcut method to wrap around the Qt4 translation functions.
|
||||
@ -183,7 +244,7 @@ def image_to_byte(image):
|
||||
else:
|
||||
pixmap = QtGui.QPixmap(image)
|
||||
pixmap.save(buffie, "PNG")
|
||||
#convert to base64 encoding so does not get missed!
|
||||
# convert to base64 encoding so does not get missed!
|
||||
return byte_array.toBase64()
|
||||
|
||||
def resize_image(image, width, height, background=QtCore.Qt.black):
|
||||
@ -201,7 +262,7 @@ def resize_image(image, width, height, background=QtCore.Qt.black):
|
||||
"""
|
||||
preview = QtGui.QImage(image)
|
||||
if not preview.isNull():
|
||||
#Only resize if different size
|
||||
# Only resize if different size
|
||||
if preview.width() == width and preview.height == height:
|
||||
return preview
|
||||
preview = preview.scaled(width, height, QtCore.Qt.KeepAspectRatio,
|
||||
@ -232,6 +293,25 @@ def check_item_selected(list_widget, message):
|
||||
return False
|
||||
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 settingsmanager import SettingsManager
|
||||
from plugin import PluginStatus, Plugin
|
||||
|
@ -40,30 +40,30 @@ body {
|
||||
background-color: black;
|
||||
}
|
||||
.dim {
|
||||
position: absolute;
|
||||
left: 0px;
|
||||
position: absolute;
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
width: %spx;
|
||||
height: %spx;
|
||||
width: %spx;
|
||||
height: %spx;
|
||||
}
|
||||
#black {
|
||||
#black {
|
||||
z-index:8;
|
||||
background-color: black;
|
||||
background-color: black;
|
||||
display: none;
|
||||
}
|
||||
#video {
|
||||
z-index:2;
|
||||
#video {
|
||||
z-index:2;
|
||||
}
|
||||
#alert {
|
||||
position: absolute;
|
||||
left: 0px;
|
||||
position: absolute;
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
z-index:10;
|
||||
z-index:10;
|
||||
%s
|
||||
}
|
||||
#footer {
|
||||
position: absolute;
|
||||
z-index:5;
|
||||
position: absolute;
|
||||
z-index:5;
|
||||
%s
|
||||
}
|
||||
/* lyric css */
|
||||
@ -116,6 +116,7 @@ body {
|
||||
else
|
||||
img.style.display = 'block';
|
||||
}
|
||||
|
||||
function show_blank(state){
|
||||
var black = 'none';
|
||||
var lyrics = '';
|
||||
@ -163,11 +164,11 @@ body {
|
||||
text.style.top = '0px';
|
||||
break;
|
||||
case 'middle':
|
||||
text.style.top = ((window.innerHeight - text.clientHeight) / 2)
|
||||
text.style.top = ((window.innerHeight - text.clientHeight) / 2)
|
||||
+ 'px';
|
||||
break;
|
||||
case 'bottom':
|
||||
text.style.top = (window.innerHeight - text.clientHeight)
|
||||
text.style.top = (window.innerHeight - text.clientHeight)
|
||||
+ 'px';
|
||||
break;
|
||||
}
|
||||
@ -175,10 +176,10 @@ body {
|
||||
return text.clientHeight;
|
||||
}
|
||||
|
||||
function show_footer(text){
|
||||
document.getElementById('footer').innerHTML(text);
|
||||
function show_footer(footertext){
|
||||
document.getElementById('footer').innerHTML(footertext);
|
||||
}
|
||||
|
||||
|
||||
function show_text(newtext){
|
||||
var text1 = document.getElementById('lyricsmain');
|
||||
var texto1 = document.getElementById('lyricsoutline');
|
||||
@ -389,14 +390,14 @@ def build_footer(item):
|
||||
Service Item to be processed.
|
||||
"""
|
||||
style = """
|
||||
left: %spx;
|
||||
top: %spx;
|
||||
width: %spx;
|
||||
left: %spx;
|
||||
top: %spx;
|
||||
width: %spx;
|
||||
height: %spx;
|
||||
font-family: %s;
|
||||
font-size: %spx;
|
||||
color: %s;
|
||||
align: %s;
|
||||
font-family: %s;
|
||||
font-size: %spx;
|
||||
color: %s;
|
||||
align: %s;
|
||||
"""
|
||||
theme = item.themedata
|
||||
if not theme:
|
||||
@ -407,8 +408,8 @@ def build_footer(item):
|
||||
align = u'right'
|
||||
else:
|
||||
align = u'left'
|
||||
lyrics_html = style % (item.footer.x(), item.footer.y(),
|
||||
item.footer.width(), item.footer.height(), theme.font_footer_name,
|
||||
lyrics_html = style % (item.footer.x(), item.footer.y(),
|
||||
item.footer.width(), item.footer.height(), theme.font_footer_name,
|
||||
theme.font_footer_proportion, theme.font_footer_color, align)
|
||||
return lyrics_html
|
||||
|
||||
@ -420,11 +421,11 @@ def build_alert(alertTab, width):
|
||||
Details from the Alert tab for fonts etc
|
||||
"""
|
||||
style = """
|
||||
width: %s;
|
||||
vertical-align: %s;
|
||||
font-family %s;
|
||||
font-size: %spx;
|
||||
color: %s;
|
||||
width: %s;
|
||||
vertical-align: %s;
|
||||
font-family %s;
|
||||
font-size: %spx;
|
||||
color: %s;
|
||||
background-color: %s;
|
||||
"""
|
||||
if not alertTab:
|
||||
@ -436,6 +437,6 @@ def build_alert(alertTab, width):
|
||||
align = u'middle'
|
||||
else:
|
||||
align = u'top'
|
||||
alert = style % (width, align, alertTab.font_face, alertTab.font_size,
|
||||
alert = style % (width, align, alertTab.font_face, alertTab.font_size,
|
||||
alertTab.font_color, alertTab.bg_color)
|
||||
return alert
|
||||
|
@ -31,7 +31,7 @@ import logging
|
||||
|
||||
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__)
|
||||
|
||||
@ -80,7 +80,6 @@ class Renderer(object):
|
||||
self.bg_image = None
|
||||
self._bg_image_filename = None
|
||||
self.theme_name = theme.theme_name
|
||||
#self._set_theme_font()
|
||||
if theme.background_type == u'image':
|
||||
if theme.background_filename:
|
||||
self.set_bg_image(theme.background_filename)
|
||||
@ -169,15 +168,24 @@ class Renderer(object):
|
||||
doc.setDefaultFont(df)
|
||||
layout = doc.documentLayout()
|
||||
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''
|
||||
old_html_text = u''
|
||||
for line in text:
|
||||
# mark line ends
|
||||
temp_text = temp_text + line + line_end
|
||||
html_text = shell % temp_text
|
||||
html_text = shell % expand_tags(temp_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:
|
||||
formatted.append(shell % old_html_text)
|
||||
temp_text = line
|
||||
@ -186,126 +194,17 @@ class Renderer(object):
|
||||
log.debug(u'format_slide - End')
|
||||
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):
|
||||
"""
|
||||
Generate a background frame to the same size as the frame to be used.
|
||||
Results are cached for performance reasons.
|
||||
"""
|
||||
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.frame.height(), QtGui.QImage.Format_ARGB32_Premultiplied)
|
||||
log.debug(u'render background %s start', self._theme.background_type)
|
||||
painter = QtGui.QPainter()
|
||||
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':
|
||||
painter.fillRect(self.frame.rect(),
|
||||
QtGui.QColor(self._theme.background_color))
|
||||
@ -315,13 +214,11 @@ class Renderer(object):
|
||||
if self._theme.background_direction == u'horizontal':
|
||||
w = int(self.frame.width()) / 2
|
||||
# vertical
|
||||
gradient = QtGui.QLinearGradient(w, 0, w,
|
||||
self.frame.height())
|
||||
gradient = QtGui.QLinearGradient(w, 0, w, self.frame.height())
|
||||
elif self._theme.background_direction == u'vertical':
|
||||
h = int(self.frame.height()) / 2
|
||||
# Horizontal
|
||||
gradient = QtGui.QLinearGradient(0, h, self.frame.width(),
|
||||
h)
|
||||
gradient = QtGui.QLinearGradient(0, h, self.frame.width(), h)
|
||||
else:
|
||||
w = int(self.frame.width()) / 2
|
||||
h = int(self.frame.height()) / 2
|
||||
@ -347,273 +244,3 @@ class Renderer(object):
|
||||
if self.bg_image:
|
||||
painter.drawImage(0, 0, self.bg_image)
|
||||
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.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):
|
||||
"""
|
||||
Updates the render manager's information about the current screen.
|
||||
@ -208,8 +198,8 @@ class RenderManager(object):
|
||||
serviceItem.theme = themedata
|
||||
serviceItem.add_from_text(u'', verse, footer)
|
||||
serviceItem.render_manager = self
|
||||
serviceItem.render(True)
|
||||
serviceItem.raw_footer = footer
|
||||
serviceItem.render(True)
|
||||
self.display.buildHtml(serviceItem)
|
||||
frame, raw_html = serviceItem.get_rendered_frame(0)
|
||||
preview = self.display.text(raw_html)
|
||||
@ -228,20 +218,6 @@ class RenderManager(object):
|
||||
self.build_text_rectangle(self.themedata)
|
||||
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):
|
||||
"""
|
||||
Calculate the default dimentions of the screen.
|
||||
@ -257,23 +233,3 @@ class RenderManager(object):
|
||||
self.width, self.height, self.screen_ratio )
|
||||
# 90% is start of footer
|
||||
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 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__)
|
||||
|
||||
@ -100,6 +100,11 @@ class ServiceItem(object):
|
||||
self.bg_frame = None
|
||||
|
||||
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())
|
||||
|
||||
def add_capability(self, capability):
|
||||
@ -159,9 +164,9 @@ class ServiceItem(object):
|
||||
.format_slide(slide[u'raw_slide'], line_break)
|
||||
for page in formated:
|
||||
self._display_frames.append(
|
||||
{u'title': self.render_manager.clean(page),
|
||||
u'text': self.render_manager.clean(page.rstrip()),
|
||||
u'html': self.render_manager.expand(page.rstrip()),
|
||||
{u'title': clean_tags(page),
|
||||
u'text': clean_tags(page.rstrip()),
|
||||
u'html': expand_tags(page.rstrip()),
|
||||
u'verseTag': slide[u'verseTag'] })
|
||||
log.log(15, u'Formatting took %4s' % (time.time() - before))
|
||||
elif self.service_item_type == ServiceItemType.Image:
|
||||
|
@ -55,7 +55,6 @@ BLANK_THEME_XML = \
|
||||
<proportion>30</proportion>
|
||||
<weight>Normal</weight>
|
||||
<italics>False</italics>
|
||||
<indentation>0</indentation>
|
||||
<line_adjustment>0</line_adjustment>
|
||||
<location override="False" x="10" y="10" width="1004" height="730"/>
|
||||
</font>
|
||||
@ -65,7 +64,6 @@ BLANK_THEME_XML = \
|
||||
<proportion>12</proportion>
|
||||
<weight>Normal</weight>
|
||||
<italics>False</italics>
|
||||
<indentation>0</indentation>
|
||||
<line_adjustment>0</line_adjustment>
|
||||
<location override="False" x="10" y="730" width="1004" height="38"/>
|
||||
</font>
|
||||
@ -184,7 +182,7 @@ class ThemeXML(object):
|
||||
self.child_element(background, u'filename', filename)
|
||||
|
||||
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):
|
||||
"""
|
||||
Add a Font.
|
||||
@ -210,9 +208,6 @@ class ThemeXML(object):
|
||||
``italics``
|
||||
Does the font render to italics Defaults to 0 Normal
|
||||
|
||||
``indentation``
|
||||
Number of characters the wrap line is indented
|
||||
|
||||
``xpos``
|
||||
The X position of the text block.
|
||||
|
||||
@ -239,8 +234,6 @@ class ThemeXML(object):
|
||||
#Create italics name element
|
||||
self.child_element(background, u'italics', italics)
|
||||
#Create indentation name element
|
||||
self.child_element(background, u'indentation', unicode(indentation))
|
||||
#Create indentation name element
|
||||
self.child_element(
|
||||
background, u'line_adjustment', unicode(line_adjustment))
|
||||
|
||||
|
@ -19,7 +19,7 @@
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
|
||||
# more details. #
|
||||
# #
|
||||
# You should have received a copy of the GNU General Public License along #
|
||||
# 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 #
|
||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
###############################################################################
|
||||
@ -27,6 +27,138 @@
|
||||
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):
|
||||
"""
|
||||
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.setSpacing(8)
|
||||
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.setObjectName(u'backgroundTypeLabel')
|
||||
self.backgroundLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
|
||||
@ -216,17 +205,6 @@ class Ui_AmendThemeDialog(object):
|
||||
self.fontMainLineAdjustmentSpinBox.setMinimum(-99)
|
||||
self.mainFontLayout.setWidget(4, QtGui.QFormLayout.FieldRole,
|
||||
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.setObjectName(u'fontMainLinesPageLabel')
|
||||
self.mainFontLayout.addRow(self.fontMainLinesPageLabel)
|
||||
@ -661,12 +639,6 @@ class Ui_AmendThemeDialog(object):
|
||||
translate('OpenLP.AmendThemeForm', 'Theme Maintenance'))
|
||||
self.themeNameLabel.setText(
|
||||
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(
|
||||
translate('OpenLP.AmendThemeForm', 'Type:'))
|
||||
self.backgroundTypeComboBox.setItemText(0,
|
||||
@ -700,8 +672,6 @@ class Ui_AmendThemeDialog(object):
|
||||
translate('OpenLP.AmendThemeForm', 'Size:'))
|
||||
self.fontMainSizeSpinBox.setSuffix(
|
||||
translate('OpenLP.AmendThemeForm', 'pt'))
|
||||
self.fontMainWrapIndentationLabel.setText(
|
||||
translate('OpenLP.AmendThemeForm', 'Wrap indentation:'))
|
||||
self.fontMainWrapLineAdjustmentLabel.setText(
|
||||
translate('OpenLP.AmendThemeForm', 'Adjust line spacing:'))
|
||||
self.fontMainWeightComboBox.setItemText(0,
|
||||
|
@ -50,7 +50,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||
self.path = None
|
||||
self.theme = ThemeXML()
|
||||
self.setupUi(self)
|
||||
# define signals
|
||||
# Buttons
|
||||
QtCore.QObject.connect(self.color1PushButton,
|
||||
QtCore.SIGNAL(u'pressed()'), self.onColor1PushButtonClicked)
|
||||
@ -68,8 +67,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||
QtCore.QObject.connect(self.imageToolButton,
|
||||
QtCore.SIGNAL(u'clicked()'), self.onImageToolButtonClicked)
|
||||
# Combo boxes
|
||||
# QtCore.QObject.connect(self.backgroundComboBox,
|
||||
# QtCore.SIGNAL(u'activated(int)'), self.onBackgroundComboBoxSelected)
|
||||
QtCore.QObject.connect(self.backgroundTypeComboBox,
|
||||
QtCore.SIGNAL(u'activated(int)'),
|
||||
self.onBackgroundTypeComboBoxSelected)
|
||||
@ -109,9 +106,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||
QtCore.QObject.connect(self.fontMainLineAdjustmentSpinBox,
|
||||
QtCore.SIGNAL(u'editingFinished()'),
|
||||
self.onFontMainLineAdjustmentSpinBoxChanged)
|
||||
QtCore.QObject.connect(self.fontMainLineSpacingSpinBox,
|
||||
QtCore.SIGNAL(u'editingFinished()'),
|
||||
self.onFontMainLineSpacingSpinBoxChanged)
|
||||
QtCore.QObject.connect(self.fontFooterXSpinBox,
|
||||
QtCore.SIGNAL(u'editingFinished()'),
|
||||
self.onFontFooterXSpinBoxChanged)
|
||||
@ -151,9 +145,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||
new_theme.new_document(theme_name)
|
||||
save_from = None
|
||||
save_to = None
|
||||
# if self.theme.background_mode == u'transparent':
|
||||
# new_theme.add_background_transparent()
|
||||
# else:
|
||||
if self.theme.background_type == u'solid':
|
||||
new_theme.add_background_solid(
|
||||
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_weight),
|
||||
unicode(self.theme.font_main_italics),
|
||||
unicode(self.theme.font_main_indentation),
|
||||
unicode(self.theme.font_main_line_adjustment),
|
||||
unicode(self.theme.font_main_x),
|
||||
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_weight),
|
||||
unicode(self.theme.font_footer_italics),
|
||||
0, # indentation
|
||||
0, # line adjustment
|
||||
unicode(self.theme.font_footer_x),
|
||||
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.fontMainLineAdjustmentSpinBox.setValue(
|
||||
self.theme.font_main_line_adjustment)
|
||||
self.fontMainLineSpacingSpinBox.setValue(
|
||||
self.theme.font_main_indentation)
|
||||
self.stateChanging(self.theme)
|
||||
self.previewTheme()
|
||||
|
||||
@ -310,13 +297,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||
self.fontMainLineAdjustmentSpinBox.value()
|
||||
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):
|
||||
if 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(),
|
||||
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):
|
||||
self.setBackground(currentIndex, self.gradientComboBox.currentIndex())
|
||||
|
||||
@ -543,10 +515,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||
self.stateChanging(theme)
|
||||
self.themeNameEdit.setText(self.theme.theme_name)
|
||||
# Background Tab
|
||||
# if self.theme.background_mode == u'opaque':
|
||||
# self.backgroundComboBox.setCurrentIndex(0)
|
||||
# else:
|
||||
# self.backgroundComboBox.setCurrentIndex(1)
|
||||
self.imageLineEdit.setText(u'')
|
||||
if theme.background_type == u'solid':
|
||||
self.backgroundTypeComboBox.setCurrentIndex(0)
|
||||
@ -576,8 +544,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
||||
self.fontMainWeightComboBox.setCurrentIndex(2)
|
||||
else:
|
||||
self.fontMainWeightComboBox.setCurrentIndex(3)
|
||||
self.fontMainLineSpacingSpinBox.setValue(
|
||||
self.theme.font_main_indentation)
|
||||
self.fontMainXSpinBox.setValue(self.theme.font_main_x)
|
||||
self.fontMainYSpinBox.setValue(self.theme.font_main_y)
|
||||
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)
|
||||
|
||||
def stateChanging(self, theme):
|
||||
# if theme.background_mode == u'transparent':
|
||||
# self.color1Label.setVisible(False)
|
||||
# self.color1PushButton.setVisible(False)
|
||||
# self.color2Label.setVisible(False)
|
||||
# self.color2PushButton.setVisible(False)
|
||||
# self.imageLabel.setVisible(False)
|
||||
# self.imageLineEdit.setVisible(False)
|
||||
# self.imageFilenameWidget.setVisible(False)
|
||||
# self.gradientLabel.setVisible(False)
|
||||
# self.gradientComboBox.setVisible(False)
|
||||
# self.backgroundTypeComboBox.setVisible(False)
|
||||
# self.backgroundTypeLabel.setVisible(False)
|
||||
# else:
|
||||
self.backgroundTypeComboBox.setVisible(True)
|
||||
self.backgroundTypeLabel.setVisible(True)
|
||||
if theme.background_type == u'solid':
|
||||
|
@ -178,7 +178,7 @@ class MainDisplay(DisplayWidget):
|
||||
or not self.isVisible():
|
||||
shrink = True
|
||||
else:
|
||||
shrink = False
|
||||
shrink = False
|
||||
js = u'show_alert("%s", "%s")' % (
|
||||
text.replace(u'\\', u'\\\\').replace(u'\"', u'\\\"'),
|
||||
u'top' if shrink else u'')
|
||||
@ -315,13 +315,13 @@ class MainDisplay(DisplayWidget):
|
||||
self.serviceItem = serviceItem
|
||||
html = build_html(self.serviceItem, self.screen, self.parent.alertTab)
|
||||
self.webView.setHtml(html)
|
||||
if serviceItem.footer and serviceItem.foot_text:
|
||||
if serviceItem.foot_text and serviceItem.foot_text:
|
||||
self.footer(serviceItem.foot_text)
|
||||
|
||||
def footer(self, text):
|
||||
log.debug(u'footer')
|
||||
js = "show_footer('" + \
|
||||
text.replace("\\", "\\\\").replace("\'", "\\\'") + "')"
|
||||
text.replace("\\", "\\\\").replace("\'", "\\\'") + "')"
|
||||
self.frame.evaluateJavaScript(js)
|
||||
|
||||
def hideDisplay(self, mode=HideMode.Screen):
|
||||
|
@ -873,6 +873,7 @@ class ServiceManager(QtGui.QWidget):
|
||||
ItemCapabilities.AllowsPreview):
|
||||
self.parent.PreviewController.addServiceManagerItem(
|
||||
self.serviceItems[item][u'service_item'], 0)
|
||||
self.parent.LiveController.PreviewListWidget.setFocus()
|
||||
else:
|
||||
QtGui.QMessageBox.critical(self,
|
||||
translate('OpenLP.ServiceManager', 'Missing Display Handler'),
|
||||
|
@ -957,7 +957,6 @@ class SlideController(QtGui.QWidget):
|
||||
"""
|
||||
log.debug(u'SlideController mediaVolume')
|
||||
self.volume = self.volumeSlider.value()
|
||||
print self.volume
|
||||
self.display.videoVolume(self.volume)
|
||||
|
||||
def onMediaPause(self):
|
||||
|
@ -731,8 +731,8 @@ class ThemeManager(QtGui.QWidget):
|
||||
theme.display_slideTransition = theme.display_slideTransition
|
||||
theme.font_footer_color = theme.font_footer_color.strip()
|
||||
theme.font_footer_height = int(theme.font_footer_height.strip())
|
||||
theme.font_footer_indentation = \
|
||||
int(theme.font_footer_indentation.strip())
|
||||
# theme.font_footer_indentation = \
|
||||
# int(theme.font_footer_indentation.strip())
|
||||
theme.font_footer_italics = str_to_bool(theme.font_footer_italics)
|
||||
theme.font_footer_name = theme.font_footer_name.strip()
|
||||
#theme.font_footer_override
|
||||
@ -745,7 +745,7 @@ class ThemeManager(QtGui.QWidget):
|
||||
theme.font_main_color = theme.font_main_color.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_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_override
|
||||
theme.font_main_proportion = int(theme.font_main_proportion.strip())
|
||||
|
@ -59,10 +59,10 @@ class BibleMediaItem(MediaManagerItem):
|
||||
self.pluginNameVisible = translate('BiblesPlugin.MediaItem', 'Bible')
|
||||
self.IconPath = u'songs/song'
|
||||
self.ListViewWithDnD_class = BibleListView
|
||||
self.lastReference = []
|
||||
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.dual_search_results = {}
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'bibles_load_list'), self.reloadBibles)
|
||||
|
||||
@ -344,7 +344,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||
self.QuickMessage.setText(text)
|
||||
self.AdvancedMessage.setText(text)
|
||||
Receiver.send_message(u'openlp_process_events')
|
||||
#minor delay to get the events processed
|
||||
# minor delay to get the events processed
|
||||
time.sleep(0.1)
|
||||
|
||||
def loadBibles(self):
|
||||
@ -387,7 +387,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||
QtGui.QMessageBox.critical(self,
|
||||
translate('BiblesPlugin.MediaItem', 'No Book Found'),
|
||||
translate('BiblesPlugin.MediaItem',
|
||||
'No matching book could be found in this Bible.'))
|
||||
'No matching book could be found in this Bible.'))
|
||||
|
||||
def onAdvancedVersionComboBox(self):
|
||||
self.initialiseBible(
|
||||
@ -423,6 +423,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||
def onAdvancedSearchButton(self):
|
||||
log.debug(u'Advanced Search Button pressed')
|
||||
bible = unicode(self.AdvancedVersionComboBox.currentText())
|
||||
dual_bible = unicode(self.AdvancedSecondBibleComboBox.currentText())
|
||||
book = unicode(self.AdvancedBookComboBox.currentText())
|
||||
chapter_from = int(self.AdvancedFromChapter.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,
|
||||
chapter_to, verse_to)
|
||||
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:
|
||||
self.listView.clear()
|
||||
self.lastReference = []
|
||||
self.lastReference.append(versetext)
|
||||
self.displayResults(bible)
|
||||
self.displayResults(bible, dual_bible)
|
||||
|
||||
def onAdvancedFromChapter(self):
|
||||
bible = unicode(self.AdvancedVersionComboBox.currentText())
|
||||
@ -450,99 +452,84 @@ class BibleMediaItem(MediaManagerItem):
|
||||
def onQuickSearchButton(self):
|
||||
log.debug(u'Quick Search Button pressed')
|
||||
bible = unicode(self.QuickVersionComboBox.currentText())
|
||||
dual_bible = unicode(self.QuickSecondBibleComboBox.currentText())
|
||||
text = unicode(self.QuickSearchEdit.text())
|
||||
if self.ClearQuickSearchComboBox.currentIndex() == 0:
|
||||
self.listView.clear()
|
||||
self.lastReference = []
|
||||
self.lastReference.append(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:
|
||||
self.displayResults(bible)
|
||||
self.displayResults(bible, dual_bible)
|
||||
|
||||
def generateSlideData(self, service_item, item=None):
|
||||
'''
|
||||
Generates and formats the slides for the service item.
|
||||
'''
|
||||
log.debug(u'generating slide data')
|
||||
items = self.listView.selectedIndexes()
|
||||
if len(items) == 0:
|
||||
return False
|
||||
old_chapter = u''
|
||||
raw_slides = []
|
||||
raw_footer = []
|
||||
bible_text = u''
|
||||
old_chapter = u''
|
||||
raw_footer = []
|
||||
raw_slides = []
|
||||
service_item.add_capability(ItemCapabilities.AllowsPreview)
|
||||
service_item.add_capability(ItemCapabilities.AllowsLoop)
|
||||
service_item.add_capability(ItemCapabilities.AllowsAdditions)
|
||||
#If we want to use a 2nd translation / version
|
||||
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
|
||||
# Let's loop through the main lot, and assemble our verses.
|
||||
for item in items:
|
||||
bitem = self.listView.item(item.row())
|
||||
reference = bitem.data(QtCore.Qt.UserRole)
|
||||
if isinstance(reference, QtCore.QVariant):
|
||||
reference = reference.toPyObject()
|
||||
#bible = self._decodeQtObject(reference, 'bible')
|
||||
book = self._decodeQtObject(reference, 'book')
|
||||
chapter = self._decodeQtObject(reference, 'chapter')
|
||||
verse = self._decodeQtObject(reference, 'verse')
|
||||
text = self._decodeQtObject(reference, 'text')
|
||||
bible = self._decodeQtObject(reference, 'bible')
|
||||
version = self._decodeQtObject(reference, 'version')
|
||||
copyright = self._decodeQtObject(reference, 'copyright')
|
||||
#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:
|
||||
verse_text = self.formatVerse(old_chapter, chapter, verse,
|
||||
u'<sup>(', u')</sup>')
|
||||
u'{su}(', u'){/su}')
|
||||
elif self.parent.settings_tab.display_style == 2:
|
||||
verse_text = self.formatVerse(old_chapter, chapter, verse,
|
||||
u'<sup>{', u'}</sup>')
|
||||
u'{su}{', u'}{/su}')
|
||||
elif self.parent.settings_tab.display_style == 3:
|
||||
verse_text = self.formatVerse(old_chapter, chapter, verse,
|
||||
u'<sup>[', u']</sup>')
|
||||
u'{su}[', u']{/su}')
|
||||
else:
|
||||
verse_text = self.formatVerse(old_chapter, chapter, verse,
|
||||
u'<sup>', u'</sup>')
|
||||
u'{su}', u'{/su}')
|
||||
old_chapter = chapter
|
||||
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:
|
||||
raw_footer.append(footer)
|
||||
if bible2:
|
||||
footer = u'%s (%s %s)' % (book, bible2_version,
|
||||
bible2_copyright)
|
||||
#If not found add second version and copyright to footer
|
||||
if dual_bible:
|
||||
footer = u'%s (%s %s)' % (book, dual_version,
|
||||
dual_copyright)
|
||||
# If not found add second version and copyright to footer.
|
||||
if footer not in raw_footer:
|
||||
raw_footer.append(footer)
|
||||
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)
|
||||
bible_text = u''
|
||||
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:
|
||||
text = text + u'\n'
|
||||
else:
|
||||
@ -550,28 +537,50 @@ class BibleMediaItem(MediaManagerItem):
|
||||
service_item.add_capability(ItemCapabilities.NoLineBreaks)
|
||||
text = text + u'\n'
|
||||
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:
|
||||
raw_slides.append(bible_text)
|
||||
bible_text = u''
|
||||
if not service_item.title:
|
||||
service_item.title = u'%s %s:%s' % (book, chapter, verse)
|
||||
elif service_item.title.find(
|
||||
translate('BiblesPlugin.MediaItem', 'etc')) == -1:
|
||||
service_item.title = u'%s, %s' % (service_item.title,
|
||||
translate('BiblesPlugin.MediaItem', 'etc'))
|
||||
# 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 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(
|
||||
translate('BiblesPlugin.MediaItem', 'etc')) == -1:
|
||||
service_item.title = u'%s, %s' % (service_item.title,
|
||||
translate('BiblesPlugin.MediaItem', 'etc'))
|
||||
# item theme
|
||||
if len(self.parent.settings_tab.bible_theme) == 0:
|
||||
service_item.theme = None
|
||||
else:
|
||||
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:
|
||||
service_item.add_from_text(slide[:30], slide)
|
||||
if service_item.raw_footer:
|
||||
for foot in raw_footer:
|
||||
service_item.raw_footer.append(foot)
|
||||
for footer in raw_footer:
|
||||
service_item.raw_footer.append(footer)
|
||||
else:
|
||||
service_item.raw_footer = raw_footer
|
||||
return True
|
||||
@ -603,8 +612,8 @@ class BibleMediaItem(MediaManagerItem):
|
||||
row, QtCore.QVariant(book[u'chapters']))
|
||||
if first:
|
||||
first = False
|
||||
self.initialiseChapterVerse(
|
||||
bible, book[u'name'], book[u'chapters'])
|
||||
self.initialiseChapterVerse(bible, book[u'name'],
|
||||
book[u'chapters'])
|
||||
|
||||
def initialiseChapterVerse(self, bible, book, chapters):
|
||||
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):
|
||||
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')
|
||||
copyright = self.parent.manager.get_meta_data(bible, u'Copyright')
|
||||
permission = self.parent.manager.get_meta_data(bible, u'Permissions')
|
||||
if not permission:
|
||||
permission = u''
|
||||
else:
|
||||
permission = permission.value
|
||||
if dual_bible:
|
||||
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:
|
||||
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):
|
||||
bible_text = u' %s %d:%d (%s)' % \
|
||||
(verse.book.name, verse.chapter, verse.verse, bible)
|
||||
if dual_bible:
|
||||
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),
|
||||
'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))
|
||||
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),
|
||||
'chapter': QtCore.QVariant(verse.chapter),
|
||||
'verse': QtCore.QVariant(verse.verse),
|
||||
'text': QtCore.QVariant(verse.text)
|
||||
}
|
||||
bible_verse.setData(QtCore.Qt.UserRole, QtCore.QVariant(vdict))
|
||||
self.listView.addItem(bible_verse)
|
||||
row = self.listView.setCurrentRow(count)
|
||||
row = self.listView.setCurrentRow(count + start_count)
|
||||
if row:
|
||||
row.setSelected(True)
|
||||
self.search_results = {}
|
||||
self.dual_search_results = {}
|
||||
|
@ -27,6 +27,7 @@
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import build_icon, translate
|
||||
from openlp.core.ui import SpellTextEdit
|
||||
|
||||
class Ui_CustomEditDialog(object):
|
||||
def setupUi(self, customEditDialog):
|
||||
@ -73,7 +74,7 @@ class Ui_CustomEditDialog(object):
|
||||
self.editLayout3.setSpacing(8)
|
||||
self.editLayout3.setMargin(0)
|
||||
self.editLayout3.setObjectName(u'editLayout3')
|
||||
self.verseTextEdit = QtGui.QTextEdit(self.editWidget)
|
||||
self.verseTextEdit = SpellTextEdit(self)
|
||||
self.verseTextEdit.setObjectName(u'verseTextEdit')
|
||||
self.editLayout3.addWidget(self.verseTextEdit)
|
||||
self.buttonWidget = QtGui.QWidget(self.editWidget)
|
||||
|
@ -314,7 +314,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
||||
author = self.songmanager.get_object(Author, item_id)
|
||||
if author in self.song.authors:
|
||||
QtGui.QMessageBox.warning(self,
|
||||
translate('SongsPlugin.EditSongForm', 'Error'),
|
||||
translate('SongsPlugin.EditSongForm', 'Error'),
|
||||
translate('SongsPlugin.EditSongForm', 'This author is '
|
||||
'already in the list.'))
|
||||
else:
|
||||
@ -422,7 +422,9 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
||||
self.VerseDeleteButton.setEnabled(True)
|
||||
|
||||
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_():
|
||||
afterText, verse, subVerse = self.verse_form.getVerse()
|
||||
data = u'%s:%s' % (verse, subVerse)
|
||||
|
@ -27,6 +27,7 @@
|
||||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import build_icon, translate
|
||||
from openlp.core.ui import SpellTextEdit
|
||||
from openlp.plugins.songs.lib import VerseType
|
||||
|
||||
class Ui_EditVerseDialog(object):
|
||||
@ -38,7 +39,7 @@ class Ui_EditVerseDialog(object):
|
||||
self.EditVerseLayout.setSpacing(8)
|
||||
self.EditVerseLayout.setMargin(8)
|
||||
self.EditVerseLayout.setObjectName(u'EditVerseLayout')
|
||||
self.VerseTextEdit = QtGui.QPlainTextEdit(EditVerseDialog)
|
||||
self.VerseTextEdit = SpellTextEdit(EditVerseDialog)
|
||||
self.VerseTextEdit.setObjectName(u'VerseTextEdit')
|
||||
self.EditVerseLayout.addWidget(self.VerseTextEdit)
|
||||
self.VerseTypeLayout = QtGui.QHBoxLayout()
|
||||
|
@ -45,6 +45,9 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
|
||||
"""
|
||||
QtGui.QDialog.__init__(self, parent)
|
||||
self.setupUi(self)
|
||||
QtCore.QObject.connect(self.VerseTextEdit,
|
||||
QtCore.SIGNAL('customContextMenuRequested(QPoint)'),
|
||||
self.contextMenu)
|
||||
QtCore.QObject.connect(
|
||||
self.InsertButton,
|
||||
QtCore.SIGNAL(u'clicked()'),
|
||||
@ -57,6 +60,10 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
|
||||
)
|
||||
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):
|
||||
if self.VerseTextEdit.textCursor().columnNumber() != 0:
|
||||
self.VerseTextEdit.insertPlainText(u'\n')
|
||||
|
@ -1,5 +1,6 @@
|
||||
<?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#"
|
||||
@ -13,7 +14,7 @@
|
||||
height="744.09448"
|
||||
id="svg5740"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46"
|
||||
inkscape:version="0.47 r22583"
|
||||
version="1.0"
|
||||
sodipodi:docname="openlp-logo.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
@ -262,14 +263,15 @@
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.0119683"
|
||||
inkscape:cx="513.59551"
|
||||
inkscape:cy="369.01895"
|
||||
inkscape:cy="490.71958"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer6"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="958"
|
||||
inkscape:window-width="1600"
|
||||
inkscape:window-height="839"
|
||||
inkscape:window-x="-4"
|
||||
inkscape:window-y="-4" />
|
||||
inkscape:window-y="-3"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5745">
|
||||
<rdf:RDF>
|
||||
@ -314,7 +316,7 @@
|
||||
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"
|
||||
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:rx="357.71872"
|
||||
sodipodi:cy="395.26932"
|
||||
@ -333,14 +335,14 @@
|
||||
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"
|
||||
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)" />
|
||||
<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"
|
||||
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:rx="357.71872"
|
||||
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"
|
||||
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>
|
||||
|
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