forked from openlp/openlp
Few performance changes and fixes to prevent possible bugs
This commit is contained in:
parent
dd4d9b9255
commit
bbb2fa935c
@ -400,7 +400,7 @@ def get_images_filter():
|
||||
global IMAGES_FILTER
|
||||
if not IMAGES_FILTER:
|
||||
log.debug('Generating images filter.')
|
||||
formats = list(map(bytes.decode, list(map(bytes, QtGui.QImageReader.supportedImageFormats()))))
|
||||
formats = list(map(bytes.decode, map(bytes, QtGui.QImageReader.supportedImageFormats())))
|
||||
visible_formats = '(*.{text})'.format(text='; *.'.join(formats))
|
||||
actual_formats = '(*.{text})'.format(text=' *.'.join(formats))
|
||||
IMAGES_FILTER = '{text} {visible} {actual}'.format(text=translate('OpenLP', 'Image Files'),
|
||||
|
@ -260,7 +260,7 @@ class ActionList(object):
|
||||
return
|
||||
# We have to do this to ensure that the loaded shortcut list e. g. STRG+O (German) is converted to CTRL+O,
|
||||
# which is only done when we convert the strings in this way (QKeySequencet -> uncode).
|
||||
shortcuts = list(map(QtGui.QKeySequence.toString, list(map(QtGui.QKeySequence, shortcuts))))
|
||||
shortcuts = list(map(QtGui.QKeySequence.toString, map(QtGui.QKeySequence, shortcuts)))
|
||||
# Check the alternate shortcut first, to avoid problems when the alternate shortcut becomes the primary shortcut
|
||||
# after removing the (initial) primary shortcut due to conflicts.
|
||||
if len(shortcuts) == 2:
|
||||
|
@ -281,8 +281,9 @@ var Display = {
|
||||
* Checks if the present slide content fits within the slide
|
||||
*/
|
||||
doesContentFit: function () {
|
||||
console.debug("scrollHeight: " + $(".slides")[0].scrollHeight + ", clientHeight: " + $(".slides")[0].clientHeight);
|
||||
return $(".slides")[0].clientHeight >= $(".slides")[0].scrollHeight;
|
||||
var currSlide = $(".slides")[0];
|
||||
console.debug("scrollHeight: " + currSlide.scrollHeight + ", clientHeight: " + currSlide.clientHeight);
|
||||
return currSlide.clientHeight >= currSlide.scrollHeight;
|
||||
},
|
||||
/**
|
||||
* Generate the OpenLP startup splashscreen
|
||||
@ -333,7 +334,7 @@ var Display = {
|
||||
/**
|
||||
* Set fullscreen image from base64 data
|
||||
* @param {string} bg_color - The background color
|
||||
* @param {string} image - Path to the image
|
||||
* @param {string} image_data - base64 encoded image data
|
||||
*/
|
||||
setFullscreenImageFromData: function(bg_color, image_data) {
|
||||
Display.clearSlides();
|
||||
@ -372,7 +373,6 @@ var Display = {
|
||||
* @param {string} verse - The verse number, e.g. "v1"
|
||||
* @param {string} text - The HTML for the verse, e.g. "line1<br>line2"
|
||||
* @param {string} footer_text - The HTML for the footer"
|
||||
* @param {bool} [reinit=true] - Re-initialize Reveal. Defaults to true.
|
||||
*/
|
||||
addTextSlide: function (verse, text, footer_text) {
|
||||
var html = _prepareText(text);
|
||||
@ -476,7 +476,8 @@ var Display = {
|
||||
* Play a video
|
||||
*/
|
||||
playVideo: function () {
|
||||
if ($("#video").length == 1) {
|
||||
var videoElem = $("#video");
|
||||
if (videoElem.length == 1) {
|
||||
$("#video")[0].play();
|
||||
}
|
||||
},
|
||||
@ -484,17 +485,19 @@ var Display = {
|
||||
* Pause a video
|
||||
*/
|
||||
pauseVideo: function () {
|
||||
if ($("#video").length == 1) {
|
||||
$("#video")[0].pause();
|
||||
var videoElem = $("#video");
|
||||
if ($videoElem.length == 1) {
|
||||
videoElem[0].pause();
|
||||
}
|
||||
},
|
||||
/**
|
||||
* Stop a video
|
||||
*/
|
||||
stopVideo: function () {
|
||||
if ($("#video").length == 1) {
|
||||
$("#video")[0].pause();
|
||||
$("#video")[0].currentTime = 0.0;
|
||||
var videoElem = $("#video");
|
||||
if (videoElem.length == 1) {
|
||||
videoElem[0].pause();
|
||||
videoElem[0].currentTime = 0.0;
|
||||
}
|
||||
},
|
||||
/**
|
||||
@ -502,8 +505,9 @@ var Display = {
|
||||
* @param seconds The position in seconds to seek to
|
||||
*/
|
||||
seekVideo: function (seconds) {
|
||||
if ($("#video").length == 1) {
|
||||
$("#video")[0].currentTime = seconds;
|
||||
var videoElem = $("#video");
|
||||
if (videoElem.length == 1) {
|
||||
videoElem[0].currentTime = seconds;
|
||||
}
|
||||
},
|
||||
/**
|
||||
@ -511,8 +515,9 @@ var Display = {
|
||||
* @param rate A Double of the rate. 1.0 => 100% speed, 0.75 => 75% speed, 1.25 => 125% speed, etc.
|
||||
*/
|
||||
setPlaybackRate: function (rate) {
|
||||
if ($("#video").length == 1) {
|
||||
$("#video")[0].playbackRate = rate;
|
||||
var videoElem = $("#video");
|
||||
if (videoElem.length == 1) {
|
||||
videoElem[0].playbackRate = rate;
|
||||
}
|
||||
},
|
||||
/**
|
||||
@ -520,24 +525,27 @@ var Display = {
|
||||
* @param level The volume level from 0 to 100.
|
||||
*/
|
||||
setVideoVolume: function (level) {
|
||||
if ($("#video").length == 1) {
|
||||
$("#video")[0].volume = level / 100.0;
|
||||
var videoElem = $("#video");
|
||||
if (videoElem.length == 1) {
|
||||
videoElem[0].volume = level / 100.0;
|
||||
}
|
||||
},
|
||||
/**
|
||||
* Mute the volume
|
||||
*/
|
||||
toggleVideoMute: function () {
|
||||
if ($("#video").length == 1) {
|
||||
$("#video")[0].muted = !$("#video")[0].muted;
|
||||
var videoElem = $("#video");
|
||||
if (videoElem.length == 1) {
|
||||
videoElem[0].muted = !videoElem[0].muted;
|
||||
}
|
||||
},
|
||||
/**
|
||||
* Clear the background audio playlist
|
||||
*/
|
||||
clearPlaylist: function () {
|
||||
if ($("#background-audio").length == 1) {
|
||||
var audio = $("#background-audio")[0];
|
||||
var backgroundAudoElem = $("#background-audio");
|
||||
if (backgroundAudoElem.length == 1) {
|
||||
var audio = backgroundAudoElem[0];
|
||||
/* audio.playList */
|
||||
}
|
||||
},
|
||||
@ -619,7 +627,6 @@ var Display = {
|
||||
},
|
||||
setTheme: function (theme) {
|
||||
this._theme = theme;
|
||||
var slidesDiv = $(".slides")
|
||||
// Set the background
|
||||
var globalBackground = $("#global-background")[0];
|
||||
var backgroundStyle = {};
|
||||
@ -721,6 +728,7 @@ var Display = {
|
||||
for (var key in mainStyle) {
|
||||
if (mainStyle.hasOwnProperty(key)) {
|
||||
slidesDiv.style.setProperty(key, mainStyle[key]);
|
||||
console.log(slidesDiv.style.getPropertyValue("font-family"));
|
||||
}
|
||||
}
|
||||
// Set up the footer
|
||||
|
@ -47,7 +47,7 @@ log = logging.getLogger(__name__)
|
||||
|
||||
SLIM_CHARS = 'fiíIÍjlĺľrtť.,;/ ()|"\'!:\\'
|
||||
CHORD_LINE_MATCH = re.compile(r'\[(.*?)\]([\u0080-\uFFFF,\w]*)'
|
||||
r'([\u0080-\uFFFF,\w,\s,\.,\,,\!,\?,\;,\:,\|,\",\',\-,\_]*)(\Z)?')
|
||||
r'([\u0080-\uFFFF\w\s\.\,\!\?\;\:\|\"\'\-\_]*)(\Z)?')
|
||||
CHORD_TEMPLATE = '<span class="chordline">{chord}</span>'
|
||||
FIRST_CHORD_TEMPLATE = '<span class="chordline firstchordline">{chord}</span>'
|
||||
CHORD_LINE_TEMPLATE = '<span class="chord"><span><strong>{chord}</strong></span></span>{tail}{whitespace}{remainder}'
|
||||
|
@ -170,6 +170,7 @@ class Theme(object):
|
||||
jsn = get_text_file_string(json_path)
|
||||
self.load_theme(jsn)
|
||||
self.background_filename = None
|
||||
self.version = 2
|
||||
|
||||
def expand_json(self, var, prev=None):
|
||||
"""
|
||||
|
@ -146,7 +146,9 @@ class CCLIFileImport(SongImport):
|
||||
"""
|
||||
log.debug('USR file text: {text}'.format(text=text_list))
|
||||
song_author = ''
|
||||
song_fields = ''
|
||||
song_topics = ''
|
||||
song_words = ''
|
||||
for line in text_list:
|
||||
if line.startswith('[S '):
|
||||
ccli, line = line.split(']', 1)
|
||||
|
@ -87,6 +87,7 @@ class DreamBeamImport(SongImport):
|
||||
if self.stop_import_flag:
|
||||
return
|
||||
self.set_defaults()
|
||||
author_copyright = ''
|
||||
parser = etree.XMLParser(remove_blank_text=True)
|
||||
try:
|
||||
with file_path.open('r') as xml_file:
|
||||
@ -142,7 +143,7 @@ class DreamBeamImport(SongImport):
|
||||
author_copyright = song_xml.Text2.Text.text
|
||||
if author_copyright:
|
||||
author_copyright = str(author_copyright)
|
||||
if author_copyright.find(str(SongStrings.CopyrightSymbol)) >= 0:
|
||||
if author_copyright.find(SongStrings.CopyrightSymbol) >= 0:
|
||||
self.add_copyright(author_copyright)
|
||||
else:
|
||||
self.parse_author(author_copyright)
|
||||
|
@ -137,9 +137,11 @@ class EasySlidesImport(SongImport):
|
||||
except UnicodeDecodeError:
|
||||
log.exception('Unicode decode error while decoding Contents')
|
||||
self._success = False
|
||||
return
|
||||
except AttributeError:
|
||||
log.exception('no Contents')
|
||||
self._success = False
|
||||
return
|
||||
lines = lyrics.split('\n')
|
||||
# we go over all lines first, to determine information,
|
||||
# which tells us how to parse verses later
|
||||
|
@ -268,13 +268,13 @@ class EasyWorshipSongImport(SongImport):
|
||||
self.db_set_record_struct(field_descriptions)
|
||||
# Pick out the field description indexes we will need
|
||||
try:
|
||||
success = True
|
||||
fi_title = self.db_find_field(b'Title')
|
||||
fi_author = self.db_find_field(b'Author')
|
||||
fi_copy = self.db_find_field(b'Copyright')
|
||||
fi_admin = self.db_find_field(b'Administrator')
|
||||
fi_words = self.db_find_field(b'Words')
|
||||
fi_ccli = self.db_find_field(b'Song Number')
|
||||
success = True
|
||||
except IndexError:
|
||||
# This is the wrong table
|
||||
success = False
|
||||
|
Loading…
Reference in New Issue
Block a user