X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=lib%2Fscripts%2Fprefs2prefs_lfuns.py;h=ec65f97925d8ebd69babbb45ab67a07845d47ff6;hb=fa38ae3fc0f6e957f9b7115d04e72c121b39cf92;hp=3061d3bc238ec91ad255184a204a10f090b125cf;hpb=036aef6f26bdb788574f9a25499aef1b14905056;p=lyx.git diff --git a/lib/scripts/prefs2prefs_lfuns.py b/lib/scripts/prefs2prefs_lfuns.py index 3061d3bc23..ec65f97925 100644 --- a/lib/scripts/prefs2prefs_lfuns.py +++ b/lib/scripts/prefs2prefs_lfuns.py @@ -1,4 +1,3 @@ -#! /usr/bin/env python # -*- coding: utf-8 -*- # file prefs2prefs-lfuns.py @@ -20,18 +19,16 @@ import sys, re -current_format = 1 - ########################################################### # # Actual converter functions # # These accept a line as argument and should return a list: # (bool, newline) -# where the bool indicates whether we changed anything. In -# that case, one normally returns: (False, []). +# where the bool indicates whether we changed anything. If not, +# one normally returns: (False, ""). -no_match = (False, []) +no_match = (False, "") def simple_renaming(line, old, new): if line.find(old) == -1: @@ -40,6 +37,12 @@ def simple_renaming(line, old, new): return (True, line) +def simple_remove(line, old): + if line.find(old) == -1: + return no_match + return (True, "") + + def next_inset_modify(line): return simple_renaming(line, "next-inset-modify", "inset-modify") @@ -49,7 +52,7 @@ def next_inset_toggle(line): def optional_insert(line): - return simple_renaming(line, "argument-insert", "optional-insert") + return simple_renaming(line, "optional-insert", "argument-insert") re_nm = re.compile(r'^(.*)notes-mutate\s+(\w+)\s+(\w+)(.*)$') @@ -112,7 +115,112 @@ def toc_insert(line): return simple_renaming(line, "toc-insert", "inset-insert toc") -# +re_ps = re.compile(r'^(.*)paragraph-spacing\s+(default|single|onehalf|double)\b(.*)$') +re_psother = re.compile(r'^(.*)paragraph-spacing\s+other\s+(\d+\.\d?|\d?\.\d+|\d+)(.*)$') +def paragraph_spacing(line): + # possible args: default, single, onehalf, double, other FLOAT + m = re_ps.search(line) + if m: + arg = m.group(2) + newline = m.group(1) + "paragraph-params \\paragraph-spacing " + arg + \ + m.group(3) + return (True, newline) + + m = re_psother.search(line) + if not m: + return no_match + + arg = m.group(2) + newline = m.group(1) + "paragraph-params \\paragraph-spacing other " + \ + arg + m.group(3) + return (True, newline) + + +def tabular_feature(line): + return simple_renaming(line, "tabular-feature", "inset-modify tabular") + + +re_tabular_feature = re.compile(r"inset-modify\s+tabular(\s+from-dialog)?") +def redo_tabular_feature(line): + # we change as follows: + # inset-modify tabular -> tabular-feature + # but: + # inset-modify tabular from-dialog -> inset-modify tabular + # + # "from-dialog" was never used directly but the user might do, if they + # followed the standard instructions to create a custom shortcut by looking + # at the message panel. The equivalent functionality is now provided by + # inset-modify tabular (without from-dialog). + def change(match): + if match.group(1): + return "inset-modify tabular" + else: + return "tabular-feature" + + result = re_tabular_feature.subn(change, line) + if result[1]: + return (True, result[0]) + else: + return no_match + + +re_Bar2bar = re.compile(r'^(\\(?:bind|unbind))\s+"([^"]*)Bar"(\s+"[^"]+")') +def Bar2bar(line): + m = re_Bar2bar.search(line) + if not m: + return no_match + + btype = m.group(1) + mod = m.group(2) + rest = m.group(3) + newline = btype + " \"" + mod + "bar\"" + rest + return (True, newline) + + +def paragraph_break(line): + return simple_renaming(line, "break-paragraph", "paragraph-break") + + +def tab_group_close(line): + return simple_renaming(line, "close-tab-group", "tab-group-close") + + +def view_split(line): + return simple_renaming(line, "split-view", "view-split") + + +def label_copy_as_reference(line): + return simple_renaming(line, "copy-label-as-reference", "label-copy-as-reference") + + +def remove_print_support(line): + return simple_remove(line, "dialog-show print") + + +def info_rename_vcsauthor(line): + return simple_renaming(line, "info-insert buffer vcs-author", "info-insert vcs author") + + +def info_rename_vcsdate(line): + return simple_renaming(line, "info-insert buffer vcs-date", "info-insert vcs date") + + +def info_rename_vcstime(line): + return simple_renaming(line, "info-insert buffer vcs-time", "info-insert vcs time") + + +def info_rename_vcsrevision(line): + return simple_renaming(line, "info-insert buffer vcs-revision", "info-insert vcs revision") + + +def info_rename_vcstreerevision(line): + return simple_renaming(line, "info-insert buffer vcs-tree-revision", "info-insert vcs tree-revision") + + +def remove_date_insert(line): + return simple_remove(line, "date-insert") + + # ########################################################### @@ -120,14 +228,36 @@ def toc_insert(line): # Conversion chain conversions = [ - [ # this will be a long list of conversions for format 0 + [ 1, [ # this will be a long list of conversions to format 1, LyX 2.0 next_inset_toggle, next_inset_modify, optional_insert, notes_mutate, all_insets_toggle, line_insert, - toc_insert - ] # end conversions for format 0 + toc_insert, + paragraph_spacing, + tabular_feature, + Bar2bar + ]], + [ 2, [ # list of conversions to format 2, LyX 2.1 + paragraph_break, + tab_group_close, + view_split, + label_copy_as_reference + ]], + [ 3, [ # list of conversions to format 3 + remove_print_support + ]], + [ 4, [ # list of conversions to format 4, LyX 2.2 + redo_tabular_feature + ]], + [ 5, [ # list of conversions to format 5, LyX 2.4 + info_rename_vcsauthor, + info_rename_vcsdate, + info_rename_vcstime, + info_rename_vcsrevision, + info_rename_vcstreerevision, + remove_date_insert + ]] ] -