"""A file handler for Ciomemo XML files."""
from os.path import join, dirname, normpath
from ciowarehouse.lib.handler import LAYOUT_VIEW_PT, LAYOUT_EDIT_PT
from ciowarehouse.lib.handler import CHRYSALIO_JS
from ...lib.i18n import _, translate
from ..handler_xml import HANDLER_CSS, HANDLER_XML_CSS, CODEMIRROR_CSS
from ..handler_xml import HandlerXml
CIOMEMO_CSS = ('/cioxml/css/handler_ciomemo.css',)
CIOMEMO_PROOFING_CSS = ('/cioxml/css/handler_ciomemo_proofing.css',)
CIOMEMO_CXE_CSS = ('/cioxml/css/handler_ciomemo_cxe.css',)
CIOMEMO_CXE_JS = ('/cioxml/js/cxe4ciomemo.js',)
CODEMIRROR_JS = ('/cioxml/js/cm4ciomemo.js',)
RELAXNG_CIOMEMO = {
'root': 'ciomemo', 'version': '1.0', 'file': join(
dirname(__file__), '..', '..', 'Processors', 'CiomemoValidate',
'RelaxNG', 'ciomemo.rng')}
# =============================================================================
[docs]
def includeme(configurator):
"""Function to include WBWarehouse a handler.
:type configurator: pyramid.config.Configurator
:param configurator:
Object used to do configuration declaration within the application.
"""
HandlerXml.register(configurator, HandlerCiomemo)
# =============================================================================
[docs]
class HandlerCiomemo(HandlerXml):
"""Class to manage a Ciomemo XML file."""
uid = 'ciomemo'
label = _('Ciomemo XML file handling')
extensions = ('.xml',)
content_regex = b'<ciomemo '
seeds = {
'ciomemo': (
'/cioxml/images/seed_ciomemo.png', _('Memo'),
join('Seeds', 'ciomemo.xml'))}
viewings = (
{'name': 'preview', 'label': _('Ciomemo Preview'),
'template': LAYOUT_VIEW_PT,
'css': HANDLER_CSS + CIOMEMO_CSS,
'js': CHRYSALIO_JS,
'xsl': join('Xsl', 'ciomemo_preview.xsl')},
{'name': 'proofing', 'label': _('Ciomemo Proofing'),
'template': LAYOUT_VIEW_PT,
'css': HANDLER_CSS + CIOMEMO_PROOFING_CSS,
'js': CHRYSALIO_JS,
'xsl': join('Xsl', 'ciomemo_proofing.xsl')},
{'name': 'xml', 'label': _('XML'),
'template': LAYOUT_VIEW_PT,
'css': HANDLER_XML_CSS,
'js': CHRYSALIO_JS})
editings = (
{'name': 'cxe', 'label': _('Wysiwym'),
'template': LAYOUT_EDIT_PT,
'css': HANDLER_CSS + CIOMEMO_CXE_CSS,
'js': CHRYSALIO_JS + CIOMEMO_CXE_JS,
'only_groups': set(('cxe',))},
{'name': 'xml', 'label': _('XML'),
'template': LAYOUT_EDIT_PT,
'css': CODEMIRROR_CSS,
'js': CHRYSALIO_JS + CODEMIRROR_JS})
thumbnailing = {
'css': normpath(join(
dirname(__file__), '..', '..', 'Static', 'Css',
'handler_ciomemo.css')),
'xsl': join('Xsl', 'ciomemo_thumbnail.xsl'),
'image_paths': ('{directory}/Images', '{directory}')}
relaxng = RELAXNG_CIOMEMO
_home = dirname(__file__)
# -------------------------------------------------------------------------
@classmethod
def _edit_cxe_i18n(cls, request):
"""Return a string of data-i18n_* attributes for translations in
CioXmlEditor.
See: :meth:.handlers.handler_xml.HandlerXml._edit_cse_i18n
"""
return '{data}'\
' data-i18n_tag_title="{tag_title}"'\
' data-i18n_tag_sup="{tag_sup}"'\
' data-i18n_tag_strong="{tag_strong}"'.format(
data=HandlerXml._edit_cxe_i18n(request),
tag_title=translate(_('Title'), request=request),
tag_sup=translate(_('Exponent'), request=request),
tag_strong=translate(
_('Highlighting (Ctrl-b)'), request=request))