From e07caa5f526570c3eba463f769624e9276629793 Mon Sep 17 00:00:00 2001 From: Richard Heck Date: Mon, 7 Jul 2008 18:09:29 +0000 Subject: [PATCH] Fix up some of the reversion and conversion routines. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25485 a592a061-630c-0410-9148-cb99ea01b6c8 --- lib/lyx2lyx/lyx_1_6.py | 54 +++++++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/lib/lyx2lyx/lyx_1_6.py b/lib/lyx2lyx/lyx_1_6.py index 28c54942a2..7e685475b7 100644 --- a/lib/lyx2lyx/lyx_1_6.py +++ b/lib/lyx2lyx/lyx_1_6.py @@ -748,17 +748,34 @@ def revert_wrapfig_options(document): "Revert optional options for wrap floats (wrapfig)." i = 0 while True: - i = find_token(document.body, "lines", i) + i = find_token(document.body, "\\begin_inset Wrap figure", i) if i == -1: return - j = find_token(document.body, "overhang", i+1) - if j != i + 2 and j != -1: - document.warning("Malformed LyX document: Couldn't find overhang parameter of wrap float.") + j = find_end_of_inset(document.body, i) if j == -1: - return - del document.body[i] - del document.body[j-1] - i = i + 1 + document.warning("Can't find end of Wrap inset at line " + str(i)) + i += 1 + continue + k = find_default_layout(document, i, j) + if k == -1: + document.warning("Can't find default layout for Wrap figure!") + i = j + continue + # Options should be between i and k now + l = find_token(document.body, "lines", i, k) + if l == -1: + document.warning("Can't find lines option for Wrap figure!") + i = k + continue + m = find_token(document.body, "overhang", i + 1, k) + if m == -1: + document.warning("Malformed LyX document: Couldn't find overhang parameter of wrap float!") + i = k + continue + # Do these in reverse order + del document.body[m] + del document.body[l] + i = k # To convert and revert indices, we need to convert between LaTeX @@ -1986,18 +2003,21 @@ def revert_wrapplacement(document): " Revert placement options wrap floats (wrapfig). " i = 0 while True: - i = find_token(document.body, "lines", i) + i = find_token(document.body, "\\begin_inset Wrap figure", i) if i == -1: return - j = find_token(document.body, "placement", i+1) - if j != i + 1: + e = find_end_of_inset(document.body, i) + j = find_token(document.body, "placement", i + 1, e) + if j == -1: document.warning("Malformed LyX document: Couldn't find placement parameter of wrap float.") - return - document.body[j] = document.body[j].replace("placement O", "placement o") - document.body[j] = document.body[j].replace("placement I", "placement i") - document.body[j] = document.body[j].replace("placement L", "placement l") - document.body[j] = document.body[j].replace("placement R", "placement r") - i = i + 1 + i += 1 + continue + r = re.compile("placement (o|i|l|r)") + m = r.match(document.body[j]) + if m == None: + document.warning("Malformed LyX document: Placement option isn't O|I|R|L!") + document.body[j] = "placement " + m.group(1).lower() + i = j def remove_extra_embedded_files(document): -- 2.39.2