mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 05:16:21 +00:00
Format and reversion code for new counter inset.
This commit is contained in:
parent
684d27c0fb
commit
9a1b26a156
@ -3687,6 +3687,78 @@ def revert_counter_maintenance(document):
|
||||
else:
|
||||
document.header[i] = "\\maintain_unincluded_children true"
|
||||
|
||||
|
||||
def revert_counter_inset(document):
|
||||
" Revert counter inset to ERT, where possible"
|
||||
i = 0
|
||||
needed_counters = {}
|
||||
while True:
|
||||
i = find_token(document.body, "\\begin_inset CommandInset counter", i)
|
||||
if i == -1:
|
||||
break
|
||||
j = find_end_of_inset(document.body, i)
|
||||
if j == -1:
|
||||
document.warning("Can't find end of counter inset at line %d!" % i)
|
||||
i += 1
|
||||
continue
|
||||
lyx = get_quoted_value(document.body, "lyxonly", i, j)
|
||||
if lyx == "true":
|
||||
# there is nothing we can do to affect the LyX counters
|
||||
document.body[i : j + 1] = []
|
||||
i = j + 1
|
||||
continue
|
||||
cnt = get_quoted_value(document.body, "counter", i, j)
|
||||
if not cnt:
|
||||
document.warning("No counter given for inset at line %d!" % i)
|
||||
i = j + 1
|
||||
continue
|
||||
|
||||
cmd = get_quoted_value(document.body, "LatexCommand", i, j)
|
||||
document.warning(cmd)
|
||||
ert = ""
|
||||
if cmd == "set":
|
||||
val = get_quoted_value(document.body, "value", i, j)
|
||||
if not val:
|
||||
document.warning("Can't convert counter inset at line %d!" % i)
|
||||
else:
|
||||
ert = put_cmd_in_ert("\\setcounter{%s}{%s}" % (cnt, val))
|
||||
elif cmd == "addto":
|
||||
val = get_quoted_value(document.body, "value", i, j)
|
||||
if not val:
|
||||
document.warning("Can't convert counter inset at line %d!" % i)
|
||||
else:
|
||||
ert = put_cmd_in_ert("\\addtocounter{%s}{%s}" % (cnt, val))
|
||||
elif cmd == "reset":
|
||||
ert = put_cmd_in_ert("\\setcounter{%s}{0}" % (cnt))
|
||||
elif cmd == "value":
|
||||
vty = get_quoted_value(document.body, "vtype", i, j)
|
||||
if not vty:
|
||||
document.warning("Can't convert counter inset at line %d!" % i)
|
||||
else:
|
||||
ert = put_cmd_in_ert("\\%s{%s}" % (vty, cnt))
|
||||
elif cmd == "save":
|
||||
needed_counters[cnt] = 1
|
||||
savecnt = "LyXSave" + cnt
|
||||
ert = put_cmd_in_ert("\\setcounter{%s}{\\value{%s}}" % (savecnt, cnt))
|
||||
elif cmd == "restore":
|
||||
needed_counters[cnt] = 1
|
||||
savecnt = "LyXSave" + cnt
|
||||
ert = put_cmd_in_ert("\\setcounter{%s}{\\value{%s}}" % (cnt, savecnt))
|
||||
else:
|
||||
document.warning("Unknown counter command `%s' in inset at line %d!" % (cnt, i))
|
||||
|
||||
if ert:
|
||||
document.body[i : j + 1] = ert
|
||||
i += 1
|
||||
continue
|
||||
|
||||
pretext = []
|
||||
for cnt in needed_counters:
|
||||
pretext.append("\\newcounter{LyXSave%s}" % (cnt))
|
||||
if pretext:
|
||||
add_to_preamble(document, pretext)
|
||||
|
||||
|
||||
##
|
||||
# Conversion hub
|
||||
#
|
||||
@ -3741,10 +3813,12 @@ convert = [
|
||||
[590, [convert_changebars]],
|
||||
[591, [convert_postpone_fragile]],
|
||||
[592, []],
|
||||
[593, [convert_counter_maintenance]]
|
||||
[593, [convert_counter_maintenance]],
|
||||
[594, []]
|
||||
]
|
||||
|
||||
revert = [[592, [revert_counter_maintenance]],
|
||||
revert = [[593, [revert_counter_inset]],
|
||||
[592, [revert_counter_maintenance]],
|
||||
[591, [revert_colrow_tracking]],
|
||||
[590, [revert_postpone_fragile]],
|
||||
[589, [revert_changebars]],
|
||||
|
@ -66,6 +66,7 @@ get_value(lines, token[, start[, end[, default[, delete]]]]):
|
||||
is stripped.) The final argument, default, defaults to "",
|
||||
and is what is returned if we do not find anything. So you
|
||||
can use that to set a default.
|
||||
If delete is True, then delete the line if found.
|
||||
|
||||
get_quoted_value(lines, token[, start[, end[, default[, delete]]]]):
|
||||
Similar to get_value, but it will strip quotes off the
|
||||
|
@ -32,8 +32,8 @@ extern char const * const lyx_version_info;
|
||||
|
||||
// Do not remove the comment below, so we get merge conflict in
|
||||
// independent branches. Instead add your own.
|
||||
#define LYX_FORMAT_LYX 593 // spitz: maintain counter/references
|
||||
#define LYX_FORMAT_TEX2LYX 593
|
||||
#define LYX_FORMAT_LYX 594 // rikiheck: counter insets
|
||||
#define LYX_FORMAT_TEX2LYX 594
|
||||
|
||||
#if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX
|
||||
#ifndef _MSC_VER
|
||||
|
Loading…
Reference in New Issue
Block a user