Source code for cioxml.handlers.handler_cioset

"""A file handler for Cioset 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 cioprocessor.relaxng import RELAXNG_CIOSET
from ..handler_xml import HANDLER_XML_CSS, CODEMIRROR_CSS
from ...lib.i18n import _, translate
from ...lib.cioset import cioset_update
from ..handler_xml import HandlerXml
from .panel_cioset import PanelCioset

CIOSET_CSS = ('/cioxml/css/handler_cioset.css',)
CIOSET_JS = ('/js/jquery-ui.js', '/cioxml/js/cioset.js')
CIOSET_MASK_CSS = ('/cioxml/css/handler_cioset_mask.css',)
CIOSET_CXE_CSS = ('/cioxml/css/handler_cioset_cxe.css',)
CIOSET_CXE_JS = ('/cioxml/js/cxe4cioset.js',)
CODEMIRROR_JS = ('/cioxml/js/cm4cioset.js',)
IMAGE_PATHS = ('{directory}',)
FILE_PATHS = ('{directory}',)


# =============================================================================
[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, HandlerCioset)
# =============================================================================
[docs]class HandlerCioset(HandlerXml): """Class to manage a Cioset XML file.""" uid = 'cioset' label = _('Cioset XML file handling') extensions = ('.cioset',) seeds = { 'cioset': ( '/cioxml/images/seed_cioset.png', _('Assembly'), join('Seeds', 'cioset.cioset'))} viewings = ( {'name': 'preview', 'label': _('Preview'), 'template': LAYOUT_VIEW_PT, 'css': CIOSET_CSS, 'js': CHRYSALIO_JS + CIOSET_JS, 'xsl': join('Xsl', 'cioset_preview.xsl'), 'image_paths': IMAGE_PATHS}, {'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': CIOSET_CXE_CSS, 'js': CHRYSALIO_JS + CIOSET_CXE_JS, 'xsl': (join('Xsl', 'cioset_cxe_in.xsl'), join('Xsl', 'cioset_cxe_out.xsl')), 'regex': (None, join('Regex', 'cioset_cxe_out.regex')), 'image_paths': IMAGE_PATHS, 'file_paths': FILE_PATHS}, # {'name': 'mask', 'label': _('Mask'), # 'template': LAYOUT_EDIT_PT, # 'css': CIOSET_MASK_CSS, # 'js': CHRYSALIO_JS + CIOSET_JS, # 'xsl': join('Xsl', 'cioset_mask.xsl'), # 'image_paths': IMAGE_PATHS}, {'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_cioset.css')), 'xsl': join('Xsl', 'cioset_thumbnail.xsl')} panel = PanelCioset relaxng = RELAXNG_CIOSET class_xpath = '/*/@class' _home = dirname(__file__) # ------------------------------------------------------------------------- def _save_mask(self, request, warehouse, path, original, values, go_on): """Update XML according to a mask. See: :meth:`cioxml.handlers.handler_xml.HandlerXml._save_mask` """ # pylint: disable = too-many-arguments # Update XML updated = cioset_update(original, values) if updated is None: return translate(_('Cannot be updated!'), request=request) # Validate and save XML return super(HandlerCioset, self)._save_mask( request, warehouse, path, updated, values, go_on) # ------------------------------------------------------------------------- @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_head="{tag_title_head}"'\ ' data-i18n_tag_picture="{tag_picture}"'\ ' data-i18n_files="{files}"'\ ' data-i18n_assembly="{assembly}"'\ ' data-i18n_defines="{defines}"'\ ' data-i18n_tag_define="{tag_define}"'\ ' data-i18n_tag_define_files="{tag_define_files}"'\ ' data-i18n_tag_define_text_files="{tag_define_text_files}"'\ ' data-i18n_tag_define_boolean_files="{tag_define_boolean_files}"'\ ' data-i18n_tag_define_list_files="{tag_define_list_files}"'\ ' data-i18n_attr_name="{attr_name}"'\ ' data-i18n_attr_type="{attr_type}"'\ ' data-i18n_options_list="{options_list}"'\ ' data-i18n_tag_division="{tag_division}"'\ ' data-i18n_tag_define_division="{tag_define_division}"'\ ' data-i18n_tag_define_text_division="{tag_define_text_division}"'\ ' data-i18n_tag_define_boolean_division="{tag_define_bool_div}"'\ ' data-i18n_tag_define_list_division="{tag_define_list_division}"'\ ' data-i18n_tag_title_division="{tag_title_division}"'\ ' data-i18n_tag_file="{tag_file}"'\ ' data-i18n_tag_title_file="{tag_title_file}"'\ ' data-i18n_tag_define_file="{tag_define_file}"'\ ' data-i18n_tag_define_text_file="{tag_define_text_file}"'\ ' data-i18n_tag_define_boolean_file="{tag_define_boolean_file}"'\ ' data-i18n_tag_define_list_file="{tag_define_list_file}"'\ ' data-i18n_tag_path="{tag_path}"'\ ' data-i18n_resources="{resources}"'\ ' data-i18n_tag_resources="{tag_resources}"'\ ' data-i18n_tag_resource="{tag_resource}"'\ ' data-i18n_copies="{copies}"'\ ' data-i18n_tag_copies="{tag_copies}"'\ ' data-i18n_tag_copy="{tag_copy}"'\ ' data-i18n_values="{values}"'\ ' data-i18n_tag_values="{tag_values}"'\ ' data-i18n_tag_value="{tag_value}"'\ ' data-i18n_tag_value_text="{tag_value_text}"'\ ' data-i18n_tag_value_boolean="{tag_value_boolean}"'\ ' data-i18n_tag_value_list="{tag_value_list}"'\ ' data-i18n_attr_src="{attr_src}"'\ ' data-i18n_attr_for="{attr_for}"'.format( data=HandlerXml._edit_cxe_i18n(request), tag_title_head=translate(_('Assembly title'), request=request), tag_picture=translate(_('Cover'), request=request), files=translate(_('Files'), request=request), assembly=translate(_('Assembly: '), request=request), defines=translate(_('Constants'), request=request), tag_define=translate(_('Constant'), request=request), tag_define_files=translate( _('Global constant'), request=request), tag_define_text_files=translate( _('Global text constant'), request=request), tag_define_boolean_files=translate( _('Global boolean constant'), request=request), tag_define_list_files=translate( _('Global constant from a list'), request=request), attr_name=translate(_('name'), request=request), attr_type=translate(_('type'), request=request), options_list=translate( _('‖ separated options'), request=request), tag_division=translate( _('Division (Ctrl- above, Shift- sub-division)'), request=request), tag_define_division=translate( _('Division constant'), request=request), tag_define_text_division=translate( _('Division text constant'), request=request), tag_define_bool_div=translate( _('Division boolean constant'), request=request), tag_define_list_division=translate( _('Division constant from a list'), request=request), tag_title_division=translate( _('Division title'), request=request), tag_file=translate(_('File'), request=request), tag_define_file=translate(_('File constant'), request=request), tag_define_text_file=translate( _('File text constant'), request=request), tag_define_boolean_file=translate( _('File boolean constant'), request=request), tag_define_list_file=translate( _('File constant from a list'), request=request), tag_title_file=translate(_('File title'), request=request), tag_path=translate(_('File path'), request=request), resources=translate(_('Resources'), request=request), tag_resources=translate( _('Group of resources'), request=request), tag_resource=translate(_('Resource'), request=request), copies=translate(_('Copies'), request=request), tag_copies=translate(_('Groupe of copies'), request=request), tag_copy=translate(_('Copy'), request=request), values=translate(_('Values'), request=request), tag_values=translate(_('Group of values'), request=request), tag_value=translate(_('Value'), request=request), tag_value_text=translate(_('Text value'), request=request), tag_value_boolean=translate( _('Boolean value'), request=request), tag_value_list=translate( _('Value from a list'), request=request), attr_src=translate(_('Source'), request=request), attr_for=translate(_('For'), request=request))