frontends, jp, templates: added XHTMLBox widget:

for jp, the XHTML is rendered for now using markdown.
This commit is contained in:
Goffi 2019-01-19 11:39:02 +01:00
commit 37ea73b19f
2 changed files with 44 additions and 0 deletions

View file

@ -238,6 +238,18 @@ class TextBoxWidget(xmlui_base.TextWidget, StringWidget):
type = u"textbox"
class XHTMLBoxWidget(xmlui_base.XHTMLBoxWidget, StringWidget):
type = u"xhtmlbox"
def show(self):
# FIXME: we use bridge in a blocking way as permitted by python-dbus
# this only for now to make it simpler, it must be refactored
# to use async when jp will be fully async (expected for 0.8)
self.value = self.host.bridge.syntaxConvert(
self.value, C.SYNTAX_XHTML, "markdown", False, self.host.profile)
super(XHTMLBoxWidget, self).show()
class ListWidget(xmlui_base.ListWidget, OptionsWidget):
type = u"list"
# TODO: handle flags, notably multi

View file

@ -116,12 +116,22 @@ class PasswordWidget(Widget):
class TextBoxWidget(Widget):
"""Input widget with require a long, possibly multilines string
often called TextArea in toolkits
"""
pass
class XHTMLBoxWidget(Widget):
"""Input widget specialised in XHTML editing,
a WYSIWYG or specialised editor is expected
"""
pass
class BoolWidget(Widget):
"""Input widget with require a boolean value
often called CheckBox in toolkits
@ -582,6 +592,11 @@ class XMLUIPanel(XMLUIBase):
_xmlui_parent, value, self._isAttrSet("read_only", node)
)
self.ctrl_list[name] = {"type": type_, "control": ctrl}
elif type_ == "xhtmlbox":
ctrl = self.widget_factory.createXHTMLBoxWidget(
_xmlui_parent, value, self._isAttrSet("read_only", node)
)
self.ctrl_list[name] = {"type": type_, "control": ctrl}
elif type_ == "bool":
ctrl = self.widget_factory.createBoolWidget(
_xmlui_parent,