]> git.lyx.org Git - lyx.git/blobdiff - lib/lyx2lyx/lyx_1_6.py
Remove the FIXME.
[lyx.git] / lib / lyx2lyx / lyx_1_6.py
index 28c54942a2fd691ad6868bd03c3f66e1591fcd51..0c10ed8ff21231d3dc93846acf809d0dfdeee3db 100644 (file)
@@ -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 
@@ -1181,7 +1198,7 @@ def revert_include(document):
   r0 = re.compile('preview.*')
   r1 = re.compile('LatexCommand (.+)')
   r2 = re.compile('filename (.+)')
-  r3 = re.compile('options (.*)')
+  r3 = re.compile('lstparams "(.*)"')
   while True:
     i = find_token(document.body, "\\begin_inset CommandInset include", i)
     if i == -1:
@@ -1832,7 +1849,6 @@ def revert_external_embedding(document):
     revert_inset_embedding(document, 'External')
 
 
-# FIXME This code can still be cleaned up a fair bit.
 def convert_subfig(document):
     " Convert subfigures to subfloats. "
     i = 0
@@ -1847,28 +1863,28 @@ def convert_subfig(document):
             continue
         k = find_token(document.body, '\tsubcaption', i, endInset)
         if k == -1:
-            i += 1
+            i = endInset
             continue
         l = find_token(document.body, '\tsubcaptionText', i, endInset)
+        if l == -1:
+            document.warning("Malformed lyx document: Can't find subcaptionText!")
+            i = endInset
+            continue
         caption = document.body[l][16:].strip('"')
-        savestr = document.body[i]
-        laststr = document.body[endInset]
         del document.body[l]
         del document.body[k]
         addedLines = -2
-        # savestr should no longer be needed here.
         subst = ['\\begin_inset Float figure', 'wide false', 'sideways false', 
                  'status open', '', '\\begin_layout Plain Layout', '\\begin_inset Caption', 
                  '', '\\begin_layout Plain Layout',
                  caption, '\\end_layout', '', '\\end_inset', '', 
-                 '\\end_layout', '', '\\begin_layout Plain Layout', savestr]
-        document.body[i : i+1] = subst
-        addedLines += len(subst) - 1
+                 '\\end_layout', '', '\\begin_layout Plain Layout']
+        document.body[i : i] = subst
+        addedLines += len(subst)
         endInset += addedLines
-        # There should be an easier way to do this.
-        subst = ['', '\\end_inset', '', '\\end_layout', laststr]
-        document.body[endInset : endInset+1] = subst
-        addedLines += len(subst) - 1
+        subst = ['', '\\end_inset', '', '\\end_layout']
+        document.body[endInset : endInset] = subst
+        addedLines += len(subst)
         i += addedLines + 1
 
 
@@ -1986,18 +2002,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):