forked from openlp/openlp
fixed regression, reworked staticmethods, changed button behaviour to reflect the internal actions
This commit is contained in:
parent
1f1bcc954f
commit
5959ee5158
@ -46,13 +46,36 @@ class FormattingTags(object):
|
|||||||
"""
|
"""
|
||||||
Provide access to the html_expands list.
|
Provide access to the html_expands list.
|
||||||
"""
|
"""
|
||||||
# Load user defined tags otherwise user defined tags are not present.
|
|
||||||
return FormattingTags.html_expands
|
return FormattingTags.html_expands
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def reset_html_tags():
|
def save_html_tags():
|
||||||
"""
|
"""
|
||||||
Resets the html_expands list.
|
Saves all formatting tags except protected ones.
|
||||||
|
"""
|
||||||
|
tags = []
|
||||||
|
for tag in FormattingTags.html_expands:
|
||||||
|
if not tag[u'protected'] and not tag.get(u'temporary'):
|
||||||
|
# Using dict ensures that copy is made and encoding of values
|
||||||
|
# a little later does not affect tags in the original list
|
||||||
|
tags.append(dict(tag))
|
||||||
|
tag = tags[-1]
|
||||||
|
# Remove key 'temporary' from tags.
|
||||||
|
# It is not needed to be saved.
|
||||||
|
if u'temporary' in tag:
|
||||||
|
del tag[u'temporary']
|
||||||
|
for element in tag:
|
||||||
|
if isinstance(tag[element], unicode):
|
||||||
|
tag[element] = tag[element].encode('utf8')
|
||||||
|
# Formatting Tags were also known as display tags.
|
||||||
|
QtCore.QSettings().setValue(u'displayTags/html_tags',
|
||||||
|
QtCore.QVariant(cPickle.dumps(tags) if tags else u''))
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def load_tags():
|
||||||
|
"""
|
||||||
|
Load the Tags from store so can be used in the system or used to
|
||||||
|
update the display.
|
||||||
"""
|
"""
|
||||||
temporary_tags = [tag for tag in FormattingTags.html_expands
|
temporary_tags = [tag for tag in FormattingTags.html_expands
|
||||||
if tag.get(u'temporary')]
|
if tag.get(u'temporary')]
|
||||||
@ -140,38 +163,6 @@ class FormattingTags(object):
|
|||||||
FormattingTags.add_html_tags(base_tags)
|
FormattingTags.add_html_tags(base_tags)
|
||||||
FormattingTags.add_html_tags(temporary_tags)
|
FormattingTags.add_html_tags(temporary_tags)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def save_html_tags():
|
|
||||||
"""
|
|
||||||
Saves all formatting tags except protected ones.
|
|
||||||
"""
|
|
||||||
tags = []
|
|
||||||
for tag in FormattingTags.html_expands:
|
|
||||||
if not tag[u'protected'] and not tag.get(u'temporary'):
|
|
||||||
# Using dict ensures that copy is made and encoding of values
|
|
||||||
# a little later does not affect tags in the original list
|
|
||||||
tags.append(dict(tag))
|
|
||||||
tag = tags[-1]
|
|
||||||
# Remove key 'temporary' from tags.
|
|
||||||
# It is not needed to be saved.
|
|
||||||
if u'temporary' in tag:
|
|
||||||
del tag[u'temporary']
|
|
||||||
for element in tag:
|
|
||||||
if isinstance(tag[element], unicode):
|
|
||||||
tag[element] = tag[element].encode('utf8')
|
|
||||||
# Formatting Tags were also known as display tags.
|
|
||||||
QtCore.QSettings().setValue(u'displayTags/html_tags',
|
|
||||||
QtCore.QVariant(cPickle.dumps(tags) if tags else u''))
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def load_tags():
|
|
||||||
"""
|
|
||||||
Load the Tags from store so can be used in the system or used to
|
|
||||||
update the display. If Cancel was selected this is needed to reset the
|
|
||||||
dsiplay to the correct version.
|
|
||||||
"""
|
|
||||||
# Initial Load of the Tags
|
|
||||||
FormattingTags.reset_html_tags()
|
|
||||||
# Formatting Tags were also known as display tags.
|
# Formatting Tags were also known as display tags.
|
||||||
user_expands = QtCore.QSettings().value(u'displayTags/html_tags',
|
user_expands = QtCore.QSettings().value(u'displayTags/html_tags',
|
||||||
QtCore.QVariant(u'')).toString()
|
QtCore.QVariant(u'')).toString()
|
||||||
@ -187,17 +178,13 @@ class FormattingTags(object):
|
|||||||
FormattingTags.add_html_tags(user_tags)
|
FormattingTags.add_html_tags(user_tags)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def add_html_tags(tags, save=False):
|
def add_html_tags(tags):
|
||||||
"""
|
"""
|
||||||
Add a list of tags to the list.
|
Add a list of tags to the list.
|
||||||
|
|
||||||
``tags``
|
``tags``
|
||||||
The list with tags to add.
|
The list with tags to add.
|
||||||
|
|
||||||
``save``
|
|
||||||
Defaults to ``False``. If set to ``True`` the given ``tags`` are
|
|
||||||
saved to the config.
|
|
||||||
|
|
||||||
Each **tag** has to be a ``dict`` and should have the following keys:
|
Each **tag** has to be a ``dict`` and should have the following keys:
|
||||||
|
|
||||||
* desc
|
* desc
|
||||||
@ -225,8 +212,6 @@ class FormattingTags(object):
|
|||||||
displaying text containing the tag. It has to be a ``boolean``.
|
displaying text containing the tag. It has to be a ``boolean``.
|
||||||
"""
|
"""
|
||||||
FormattingTags.html_expands.extend(tags)
|
FormattingTags.html_expands.extend(tags)
|
||||||
if save:
|
|
||||||
FormattingTags.save_html_tags()
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def remove_html_tag(tag_id):
|
def remove_html_tag(tag_id):
|
||||||
|
@ -57,6 +57,14 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
|
|||||||
QtCore.SIGNAL(u'clicked()'), self.onDeleteClicked)
|
QtCore.SIGNAL(u'clicked()'), self.onDeleteClicked)
|
||||||
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'),
|
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'),
|
||||||
self.close)
|
self.close)
|
||||||
|
QtCore.QObject.connect(self.descriptionLineEdit,
|
||||||
|
QtCore.SIGNAL(u'textEdited(QString)'), self.onTextEdited)
|
||||||
|
QtCore.QObject.connect(self.tagLineEdit,
|
||||||
|
QtCore.SIGNAL(u'textEdited(QString)'), self.onTextEdited)
|
||||||
|
QtCore.QObject.connect(self.startTagLineEdit,
|
||||||
|
QtCore.SIGNAL(u'textEdited(QString)'), self.onTextEdited)
|
||||||
|
QtCore.QObject.connect(self.endTagLineEdit,
|
||||||
|
QtCore.SIGNAL(u'textEdited(QString)'), self.onTextEdited)
|
||||||
# Forces reloading of tags from openlp configuration.
|
# Forces reloading of tags from openlp configuration.
|
||||||
FormattingTags.load_tags()
|
FormattingTags.load_tags()
|
||||||
|
|
||||||
@ -65,7 +73,7 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
|
|||||||
Load Display and set field state.
|
Load Display and set field state.
|
||||||
"""
|
"""
|
||||||
# Create initial copy from master
|
# Create initial copy from master
|
||||||
self._resetTable()
|
self._reloadTable()
|
||||||
self.selected = -1
|
self.selected = -1
|
||||||
return QtGui.QDialog.exec_(self)
|
return QtGui.QDialog.exec_(self)
|
||||||
|
|
||||||
@ -73,9 +81,9 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
|
|||||||
"""
|
"""
|
||||||
Table Row selected so display items and set field state.
|
Table Row selected so display items and set field state.
|
||||||
"""
|
"""
|
||||||
row = self.tagTableWidget.currentRow()
|
self.savePushButton.setEnabled(False)
|
||||||
html = FormattingTags.html_expands[row]
|
self.selected = self.tagTableWidget.currentRow()
|
||||||
self.selected = row
|
html = FormattingTags.get_html_tags()[self.selected]
|
||||||
self.descriptionLineEdit.setText(html[u'desc'])
|
self.descriptionLineEdit.setText(html[u'desc'])
|
||||||
self.tagLineEdit.setText(self._strip(html[u'start tag']))
|
self.tagLineEdit.setText(self._strip(html[u'start tag']))
|
||||||
self.startTagLineEdit.setText(html[u'start html'])
|
self.startTagLineEdit.setText(html[u'start html'])
|
||||||
@ -85,21 +93,26 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
|
|||||||
self.tagLineEdit.setEnabled(False)
|
self.tagLineEdit.setEnabled(False)
|
||||||
self.startTagLineEdit.setEnabled(False)
|
self.startTagLineEdit.setEnabled(False)
|
||||||
self.endTagLineEdit.setEnabled(False)
|
self.endTagLineEdit.setEnabled(False)
|
||||||
self.savePushButton.setEnabled(False)
|
|
||||||
self.deletePushButton.setEnabled(False)
|
self.deletePushButton.setEnabled(False)
|
||||||
else:
|
else:
|
||||||
self.descriptionLineEdit.setEnabled(True)
|
self.descriptionLineEdit.setEnabled(True)
|
||||||
self.tagLineEdit.setEnabled(True)
|
self.tagLineEdit.setEnabled(True)
|
||||||
self.startTagLineEdit.setEnabled(True)
|
self.startTagLineEdit.setEnabled(True)
|
||||||
self.endTagLineEdit.setEnabled(True)
|
self.endTagLineEdit.setEnabled(True)
|
||||||
self.savePushButton.setEnabled(True)
|
|
||||||
self.deletePushButton.setEnabled(True)
|
self.deletePushButton.setEnabled(True)
|
||||||
|
|
||||||
|
def onTextEdited(self, text):
|
||||||
|
"""
|
||||||
|
Enable the ``savePushButton`` when any of the selected tag's properties
|
||||||
|
has been changed.
|
||||||
|
"""
|
||||||
|
self.savePushButton.setEnabled(True)
|
||||||
|
|
||||||
def onNewClicked(self):
|
def onNewClicked(self):
|
||||||
"""
|
"""
|
||||||
Add a new tag to list only if it is not a duplicate.
|
Add a new tag to list only if it is not a duplicate.
|
||||||
"""
|
"""
|
||||||
for html in FormattingTags.html_expands:
|
for html in FormattingTags.get_html_tags():
|
||||||
if self._strip(html[u'start tag']) == u'n':
|
if self._strip(html[u'start tag']) == u'n':
|
||||||
critical_error_message_box(
|
critical_error_message_box(
|
||||||
translate('OpenLP.FormattingTagForm', 'Update Error'),
|
translate('OpenLP.FormattingTagForm', 'Update Error'),
|
||||||
@ -117,11 +130,13 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
|
|||||||
u'temporary': False
|
u'temporary': False
|
||||||
}
|
}
|
||||||
FormattingTags.add_html_tags([tag])
|
FormattingTags.add_html_tags([tag])
|
||||||
self._resetTable()
|
FormattingTags.save_html_tags()
|
||||||
|
self._reloadTable()
|
||||||
# Highlight new row
|
# Highlight new row
|
||||||
self.tagTableWidget.selectRow(self.tagTableWidget.rowCount() - 1)
|
self.tagTableWidget.selectRow(self.tagTableWidget.rowCount() - 1)
|
||||||
self.onRowSelected()
|
self.onRowSelected()
|
||||||
self.tagTableWidget.scrollToBottom()
|
self.tagTableWidget.scrollToBottom()
|
||||||
|
#self.savePushButton.setEnabled(False)
|
||||||
|
|
||||||
def onDeleteClicked(self):
|
def onDeleteClicked(self):
|
||||||
"""
|
"""
|
||||||
@ -130,14 +145,14 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
|
|||||||
if self.selected != -1:
|
if self.selected != -1:
|
||||||
FormattingTags.remove_html_tag(self.selected)
|
FormattingTags.remove_html_tag(self.selected)
|
||||||
self.selected = -1
|
self.selected = -1
|
||||||
self._resetTable()
|
FormattingTags.save_html_tags()
|
||||||
FormattingTags.save_html_tags()
|
self._reloadTable()
|
||||||
|
|
||||||
def onSavedClicked(self):
|
def onSavedClicked(self):
|
||||||
"""
|
"""
|
||||||
Update Custom Tag details if not duplicate and save the data.
|
Update Custom Tag details if not duplicate and save the data.
|
||||||
"""
|
"""
|
||||||
html_expands = FormattingTags.html_expands
|
html_expands = FormattingTags.get_html_tags()
|
||||||
if self.selected != -1:
|
if self.selected != -1:
|
||||||
html = html_expands[self.selected]
|
html = html_expands[self.selected]
|
||||||
tag = unicode(self.tagLineEdit.text())
|
tag = unicode(self.tagLineEdit.text())
|
||||||
@ -157,14 +172,13 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
|
|||||||
# Keep temporary tags when the user changes one.
|
# Keep temporary tags when the user changes one.
|
||||||
html[u'temporary'] = False
|
html[u'temporary'] = False
|
||||||
self.selected = -1
|
self.selected = -1
|
||||||
self._resetTable()
|
|
||||||
FormattingTags.save_html_tags()
|
FormattingTags.save_html_tags()
|
||||||
|
self._reloadTable()
|
||||||
|
|
||||||
def _resetTable(self):
|
def _reloadTable(self):
|
||||||
"""
|
"""
|
||||||
Reset List for loading.
|
Reset List for loading.
|
||||||
"""
|
"""
|
||||||
FormattingTags.load_tags()
|
|
||||||
self.tagTableWidget.clearContents()
|
self.tagTableWidget.clearContents()
|
||||||
self.tagTableWidget.setRowCount(0)
|
self.tagTableWidget.setRowCount(0)
|
||||||
self.newPushButton.setEnabled(True)
|
self.newPushButton.setEnabled(True)
|
||||||
|
@ -317,9 +317,7 @@ class OpenLyrics(object):
|
|||||||
tags_element = None
|
tags_element = None
|
||||||
match = re.search(u'\{/?\w+\}', song.lyrics, re.UNICODE)
|
match = re.search(u'\{/?\w+\}', song.lyrics, re.UNICODE)
|
||||||
if match:
|
if match:
|
||||||
# Reset available tags.
|
# Named 'format_' - 'format' is built-in fuction in Python.
|
||||||
FormattingTags.reset_html_tags()
|
|
||||||
# Named 'formatting' - 'format' is built-in fuction in Python.
|
|
||||||
format_ = etree.SubElement(song_xml, u'format')
|
format_ = etree.SubElement(song_xml, u'format')
|
||||||
tags_element = etree.SubElement(format_, u'tags')
|
tags_element = etree.SubElement(format_, u'tags')
|
||||||
tags_element.set(u'application', u'OpenLP')
|
tags_element.set(u'application', u'OpenLP')
|
||||||
@ -572,7 +570,8 @@ class OpenLyrics(object):
|
|||||||
for tag in FormattingTags.get_html_tags()]
|
for tag in FormattingTags.get_html_tags()]
|
||||||
new_tags = [tag for tag in found_tags
|
new_tags = [tag for tag in found_tags
|
||||||
if tag[u'start tag'] not in existing_tag_ids]
|
if tag[u'start tag'] not in existing_tag_ids]
|
||||||
FormattingTags.add_html_tags(new_tags, True)
|
FormattingTags.add_html_tags(new_tags)
|
||||||
|
FormattingTags.save_html_tags()
|
||||||
|
|
||||||
def _process_lines_mixed_content(self, element, newlines=True):
|
def _process_lines_mixed_content(self, element, newlines=True):
|
||||||
"""
|
"""
|
||||||
|
Loading…
Reference in New Issue
Block a user