mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
UI for TXT input options
This commit is contained in:
parent
f198117f08
commit
feb784272a
@ -22,13 +22,14 @@ add_extra_css(def():
|
|||||||
style += build_rule(sel + 'label.vertical', display='block')
|
style += build_rule(sel + 'label.vertical', display='block')
|
||||||
style += build_rule(sel + 'label.vertical > *', display='block', padding_bottom='1ex', padding_right='1rem')
|
style += build_rule(sel + 'label.vertical > *', display='block', padding_bottom='1ex', padding_right='1rem')
|
||||||
style += build_rule(sel + '[data-profile]', margin_left='2em', text_indent='-2em', font_size='smaller', margin_bottom='1ex')
|
style += build_rule(sel + '[data-profile]', margin_left='2em', text_indent='-2em', font_size='smaller', margin_bottom='1ex')
|
||||||
|
style += build_rule(sel + '.subset-choice label', display='block', margin_bottom='1ex')
|
||||||
return style
|
return style
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# globals {{{
|
# globals {{{
|
||||||
container_id = None
|
container_id = None
|
||||||
get_option_value = get_option_default_value = is_option_disabled = get_option_help = profiles = None
|
get_option_value = get_option_default_value = is_option_disabled = get_option_help = profiles = ui_data = None
|
||||||
entry_points = {}
|
entry_points = {}
|
||||||
registry = {}
|
registry = {}
|
||||||
listeners = {}
|
listeners = {}
|
||||||
@ -55,6 +56,36 @@ def sanitize_accelerator(text):
|
|||||||
return text.replace('&', '')
|
return text.replace('&', '')
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
def subset_choice(name, choices, tooltip=None): # {{{
|
||||||
|
if get_option_default_value(name) is undefined:
|
||||||
|
raise KeyError(f'{name} is not a known option')
|
||||||
|
ans = E.div(data_option_name=name, class_='subset-choice')
|
||||||
|
if tooltip is not None:
|
||||||
|
ans.setAttribute('title', tooltip or get_option_help(name))
|
||||||
|
names = Object.keys(choices)
|
||||||
|
for cname in names:
|
||||||
|
ans.appendChild(E.label(E.input(type='checkbox', name=cname), '\xa0' + choices[cname]))
|
||||||
|
ops = {
|
||||||
|
'get': def (container):
|
||||||
|
ans = v'[]'
|
||||||
|
for w in container.querySelectorAll('input'):
|
||||||
|
if w.checked:
|
||||||
|
ans.push(w.name)
|
||||||
|
return ','.join(ans)
|
||||||
|
,
|
||||||
|
'set': def (container, val):
|
||||||
|
q = {x.strip():True for x in (val or '').split(',')}
|
||||||
|
for w in container.querySelectorAll('input'):
|
||||||
|
w.checked = bool(q[w.name])
|
||||||
|
,
|
||||||
|
'set_disabled': def (container, val):
|
||||||
|
pass
|
||||||
|
}
|
||||||
|
registry[name] = ops
|
||||||
|
ops.set(ans, get_option_value(name))
|
||||||
|
return ans
|
||||||
|
# }}}
|
||||||
|
|
||||||
def create_simple_widget(name, text, tooltip, input_widget_, getter, setter, suffix): # {{{
|
def create_simple_widget(name, text, tooltip, input_widget_, getter, setter, suffix): # {{{
|
||||||
if get_option_default_value(name) is undefined:
|
if get_option_default_value(name) is undefined:
|
||||||
raise KeyError(f'{name} is not a known option')
|
raise KeyError(f'{name} is not a known option')
|
||||||
@ -475,15 +506,35 @@ def docx_input(container):
|
|||||||
g.appendChild(checkbox('docx_inline_subsup', _('Render &superscripts and subscripts so that they do not affect the line height')))
|
g.appendChild(checkbox('docx_inline_subsup', _('Render &superscripts and subscripts so that they do not affect the line height')))
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
# TXT Input {{{
|
||||||
|
@ep
|
||||||
|
def txt_input(container):
|
||||||
|
g = E.div(class_='simple-group')
|
||||||
|
container.appendChild(g)
|
||||||
|
g.appendChild(choices('paragraph_type', _('Para&graph style:'), ui_data.paragraph_types))
|
||||||
|
g.appendChild(choices('formatting_type', _('Forma&tting style:'), ui_data.formatting_types))
|
||||||
|
g.appendChild(checkbox('preserve_spaces', _('Preserve &spaces')))
|
||||||
|
g.appendChild(checkbox('txt_in_remove_indents', _('Remove &indents at the beginning of lines')))
|
||||||
|
|
||||||
|
container.appendChild(E.div(
|
||||||
|
style='margin-top: 1ex',
|
||||||
|
_('Allowed Markdown extensions:'),
|
||||||
|
E.div(
|
||||||
|
style='margin-left: 1em; margin-top: 1ex',
|
||||||
|
subset_choice('markdown_extensions', ui_data.md_extensions)
|
||||||
|
)
|
||||||
|
))
|
||||||
|
# }}}
|
||||||
|
|
||||||
def restore_defaults():
|
def restore_defaults():
|
||||||
for setting in registry:
|
for setting in registry:
|
||||||
set(setting, get_option_default_value(setting))
|
set(setting, get_option_default_value(setting))
|
||||||
|
|
||||||
|
|
||||||
def create_option_group(group_name, profiles_, container, get_option_value_, get_option_default_value_, is_option_disabled_, get_option_help_, on_close):
|
def create_option_group(group_name, ui_data_, profiles_, container, get_option_value_, get_option_default_value_, is_option_disabled_, get_option_help_, on_close):
|
||||||
nonlocal get_option_value, get_option_default_value, is_option_disabled, container_id, registry, listeners, get_option_help, profiles
|
nonlocal get_option_value, get_option_default_value, is_option_disabled, container_id, registry, listeners, get_option_help, profiles, ui_data
|
||||||
get_option_value, get_option_default_value, is_option_disabled, get_option_help = get_option_value_, get_option_default_value_, is_option_disabled_, get_option_help_
|
get_option_value, get_option_default_value, is_option_disabled, get_option_help = get_option_value_, get_option_default_value_, is_option_disabled_, get_option_help_
|
||||||
profiles = profiles_
|
profiles, ui_data = profiles_, ui_data_
|
||||||
registry = {}
|
registry = {}
|
||||||
listeners = {}
|
listeners = {}
|
||||||
container_id = ensure_id(container)
|
container_id = ensure_id(container)
|
||||||
|
@ -335,11 +335,14 @@ def create_configure_group_markup():
|
|||||||
panel = E.div()
|
panel = E.div()
|
||||||
container.appendChild(panel)
|
container.appendChild(panel)
|
||||||
g = conversion_data.configuring_group
|
g = conversion_data.configuring_group
|
||||||
|
ui_data = None
|
||||||
if g is 'input_fmt':
|
if g is 'input_fmt':
|
||||||
g = conversion_data.conversion_options.input_plugin_name
|
g = conversion_data.conversion_options.input_plugin_name
|
||||||
|
ui_data = conversion_data.conversion_options.input_ui_data
|
||||||
elif g is 'output_fmt':
|
elif g is 'output_fmt':
|
||||||
g = conversion_data.conversion_options.output_plugin_name
|
g = conversion_data.conversion_options.output_plugin_name
|
||||||
create_option_group(g, conversion_data.profiles, container, get_option_value, get_option_default_value, is_option_disabled, get_option_help, on_close)
|
ui_data = conversion_data.conversion_options.output_ui_data
|
||||||
|
create_option_group(g, ui_data, conversion_data.profiles, container, get_option_value, get_option_default_value, is_option_disabled, get_option_help, on_close)
|
||||||
|
|
||||||
return ans, init
|
return ans, init
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user