~alisonken1/openlp/pjlink2-f

« back to all changes in this revision

Viewing changes to openlp/core/lib/serviceitem.py

  • Committer: Tim Bentley
  • Author(s): Tomas Groth
  • Date: 2017-05-17 20:30:47 UTC
  • mfrom: (2587.3.78 chords)
  • Revision ID: tim.bentley@gmail.com-20170517203047-o11dl9bfu3re2tu0
Added support for chords in Chord Pro format (using brackets), with support for chord transposing and 3 different notations.
Added support for import of song in ChordPro file format
Added support for importing chords and verseorder from songbeamer.
Add support for export and import of chords in openlyrics
Added support for importing chords from opensong.
Added support for importing chords from videopsalm.
Added support for printing chords.

Show diffs side-by-side

added added

removed removed

Lines of Context:
34
34
from PyQt5 import QtGui
35
35
 
36
36
from openlp.core.common import RegistryProperties, Settings, translate, AppLocation, md5_hash
37
 
from openlp.core.lib import ImageSource, build_icon, clean_tags, expand_tags
 
37
from openlp.core.lib import ImageSource, build_icon, clean_tags, expand_tags, expand_chords, create_thumb
38
38
 
39
39
log = logging.getLogger(__name__)
40
40
 
117
117
 
118
118
    ``HasThumbnails``
119
119
            The item has related thumbnails available
120
 
 
121
120
    """
122
121
    CanPreview = 1
123
122
    CanEdit = 2
247
246
            self.renderer.set_item_theme(self.theme)
248
247
            self.theme_data, self.main, self.footer = self.renderer.pre_render()
249
248
        if self.service_item_type == ServiceItemType.Text:
 
249
            expand_chord_tags = hasattr(self, 'name') and self.name == 'songs' and Settings().value(
 
250
                'songs/enable chords')
250
251
            log.debug('Formatting slides: {title}'.format(title=self.title))
251
252
            # Save rendered pages to this dict. In the case that a slide is used twice we can use the pages saved to
252
253
            # the dict instead of rendering them again.
260
261
                    previous_pages[verse_tag] = (slide['raw_slide'], pages)
261
262
                for page in pages:
262
263
                    page = page.replace('<br>', '{br}')
263
 
                    html_data = expand_tags(html.escape(page.rstrip()))
264
 
                    self._display_frames.append({
 
264
                    html_data = expand_tags(page.rstrip(), expand_chord_tags)
 
265
                    new_frame = {
265
266
                        'title': clean_tags(page),
266
 
                        'text': clean_tags(page.rstrip()),
 
267
                        'text': clean_tags(page.rstrip(), expand_chord_tags),
 
268
                        'chords_text': expand_chords(clean_tags(page.rstrip(), False)),
267
269
                        'html': html_data.replace('&amp;nbsp;', '&nbsp;'),
268
 
                        'verseTag': verse_tag
269
 
                    })
 
270
                        'printing_html': expand_tags(html.escape(page.rstrip()), expand_chord_tags, True),
 
271
                        'verseTag': verse_tag,
 
272
                    }
 
273
                    self._display_frames.append(new_frame)
270
274
        elif self.service_item_type == ServiceItemType.Image or self.service_item_type == ServiceItemType.Command:
271
275
            pass
272
276
        else: