]> git.lyx.org Git - lyx.git/blobdiff - lib/lyx2lyx/lyx_1_6.py
Fileformat change.
[lyx.git] / lib / lyx2lyx / lyx_1_6.py
index 669d35a4400255a5107f707f9025e44b945a94a7..7095e0962f661bd1468fe90e580ea9fba18cd0eb 100644 (file)
@@ -33,7 +33,7 @@ def find_end_of_inset(lines, i):
 
 def wrap_into_ert(string, src, dst):
     " Wrap a something into an ERT"
-    return string.replace(src, '\n\\begin_inset ERT\nstatus collapsed\n\\begin_layout Standard\n' 
+    return string.replace(src, '\n\\begin_inset ERT\nstatus collapsed\n\\begin_layout Standard\n'
       + dst + '\n\\end_layout\n\\end_inset\n')
 
 def add_to_preamble(document, text):
@@ -76,7 +76,13 @@ def convert_tablines(document):
     while True:
         i = find_token(document.body, "\\begin_inset Tabular", i)
         if i == -1:
-            return
+            # LyX 1.3 inserted an extra space between \begin_inset
+            # and Tabular so let us try if this is the case and fix it.
+            i = find_token(document.body, "\\begin_inset  Tabular", i)
+            if i == -1:
+                return
+            else:
+                document.body[i] = "\\begin_inset Tabular"
         j = find_end_of_inset(document.body, i + 1)
         if j == -1:
             document.warning("Malformed LyX document: Could not find end of tabular.")
@@ -286,7 +292,7 @@ def axe_show_label(document):
                     document.warning("Malformed LyX document: show_label neither false nor true.")
         else:
             document.warning("Malformed LyX document: show_label missing in CharStyle.")
-            
+
         i += 1
 
 
@@ -416,8 +422,8 @@ def remove_inzip_options(document):
 def convert_inset_command(document):
     """
         Convert:
-            \begin_inset LatexCommand cmd 
-        to 
+            \begin_inset LatexCommand cmd
+        to
             \begin_inset CommandInset InsetType
             LatexCommand cmd
     """
@@ -455,8 +461,8 @@ def revert_inset_command(document):
         Convert:
             \begin_inset CommandInset InsetType
             LatexCommand cmd
-        to 
-            \begin_inset LatexCommand cmd 
+        to
+            \begin_inset LatexCommand cmd
         Some insets may end up being converted to insets earlier versions of LyX
         will not be able to recognize. Not sure what to do about that.
     """
@@ -514,7 +520,7 @@ def revert_wrapfig_options(document):
 
 def convert_latexcommand_index(document):
     "Convert from LatexCommand form to collapsable form."
-    i = 0 
+    i = 0
     while True:
         i = find_token(document.body, "\\begin_inset CommandInset index", i)
         if i == -1:
@@ -660,7 +666,7 @@ def revert_japanese_encoding(document):
         document.header[j] = "\\inputencoding JIS"
     k = 0
     k = find_token(document.header, "\\inputencoding SJIS-plain", 0)
-    if k != -1: # convert to UTF8 since there is currently no SJIS encoding 
+    if k != -1: # convert to UTF8 since there is currently no SJIS encoding
         document.header[k] = "\\inputencoding UTF8"
 
 
@@ -761,7 +767,7 @@ def convert_url(document):
         i = k
         continue
       newstuff = ["\\begin_inset Flex URL",
-        "status collapsed", "", 
+        "status collapsed", "",
         "\\begin_layout Standard",
         "",
         target,
@@ -838,7 +844,7 @@ def convert_include(document):
     cmd = m.group(1)
     fn  = m.group(2)
     opt = m.group(3)
-    insertion = ["\\begin_inset CommandInset include", 
+    insertion = ["\\begin_inset CommandInset include",
        "LatexCommand " + cmd, previewline,
        "filename \"" + fn + "\""]
     newlines = 2
@@ -1625,6 +1631,121 @@ def revert_protected_hfill(document):
         'hspace*{\n\\backslash\nfill}\n\\end_layout\n\n\\end_inset\n\n')
 
 
+def revert_local_layout(document):
+    ' Revert local layout headers.'
+    i = 0
+    while True:
+        i = find_token(document.header, "\\begin_local_layout", i)
+        if i == -1:
+            return
+        j = find_end_of(document.header, i, "\\begin_local_layout", "\\end_local_layout")
+        if j == -1:
+            # this should not happen
+            break
+        document.header[i : j + 1] = []
+
+
+def convert_pagebreaks(document):
+    ' Convert inline Newpage insets to new format '
+    i = 0
+    while True:
+        i = find_token(document.body, '\\newpage', i)
+        if i == -1:
+            break
+        document.body[i:i+1] = ['\\begin_inset Newpage newpage',
+                             '\\end_inset']
+    i = 0
+    while True:
+        i = find_token(document.body, '\\pagebreak', i)
+        if i == -1:
+            break
+        document.body[i:i+1] = ['\\begin_inset Newpage pagebreak',
+                             '\\end_inset']
+    i = 0
+    while True:
+        i = find_token(document.body, '\\clearpage', i)
+        if i == -1:
+            break
+        document.body[i:i+1] = ['\\begin_inset Newpage clearpage',
+                             '\\end_inset']
+    i = 0
+    while True:
+        i = find_token(document.body, '\\cleardoublepage', i)
+        if i == -1:
+            break
+        document.body[i:i+1] = ['\\begin_inset Newpage cleardoublepage',
+                             '\\end_inset']
+
+
+def revert_pagebreaks(document):
+    ' Revert \\begin_inset Newpage to previous inline format '
+    i = 0
+    while True:
+        i = find_token(document.body, '\\begin_inset Newpage', i)
+        if i == -1:
+            return
+        j = find_end_of_inset(document.body, i)
+        if j == -1:
+            document.warning("Malformed LyX document: Could not find end of Newpage inset.")
+            continue
+        del document.body[j]
+        document.body[i] = document.body[i].replace('\\begin_inset Newpage newpage', '\\newpage')
+        document.body[i] = document.body[i].replace('\\begin_inset Newpage pagebreak', '\\pagebreak')
+        document.body[i] = document.body[i].replace('\\begin_inset Newpage clearpage', '\\clearpage')
+        document.body[i] = document.body[i].replace('\\begin_inset Newpage cleardoublepage', '\\cleardoublepage')
+
+
+def convert_linebreaks(document):
+    ' Convert inline Newline insets to new format '
+    i = 0
+    while True:
+        i = find_token(document.body, '\\newline', i)
+        if i == -1:
+            break
+        document.body[i:i+1] = ['\\begin_inset Newline newline',
+                             '\\end_inset']
+    i = 0
+    while True:
+        i = find_token(document.body, '\\linebreak', i)
+        if i == -1:
+            break
+        document.body[i:i+1] = ['\\begin_inset Newline linebreak',
+                             '\\end_inset']
+
+
+def revert_linebreaks(document):
+    ' Revert \\begin_inset Newline to previous inline format '
+    i = 0
+    while True:
+        i = find_token(document.body, '\\begin_inset Newline', i)
+        if i == -1:
+            return
+        j = find_end_of_inset(document.body, i)
+        if j == -1:
+            document.warning("Malformed LyX document: Could not find end of Newline inset.")
+            continue
+        del document.body[j]
+        document.body[i] = document.body[i].replace('\\begin_inset Newline newline', '\\newline')
+        document.body[i] = document.body[i].replace('\\begin_inset Newline linebreak', '\\linebreak')
+
+
+def convert_japanese_plain(document):
+    "Set language japanese-plain to japanese"
+    i = 0
+    if document.language == "japanese-plain":
+        document.language = "japanese"
+        i = find_token(document.header, "\\language", 0)
+        if i != -1:
+            document.header[i] = "\\language japanese"
+    j = 0
+    while True:
+        j = find_token(document.body, "\\lang japanese-plain", j)
+        if j == -1:
+            return
+        document.body[j] = document.body[j].replace("\\lang japanese-plain", "\\lang japanese")
+        j = j + 1
+
+
 ##
 # Conversion hub
 #
@@ -1674,10 +1795,18 @@ convert = [[277, [fix_wrong_tables]],
            [318, []],
            [319, [convert_spaceinset, convert_hfill]],
            [320, []],
-           [321, [convert_tablines]]
+           [321, [convert_tablines]],
+           [322, []],
+           [323, [convert_pagebreaks]],
+           [324, [convert_linebreaks]],
+           [325, [convert_japanese_plain]],
           ]
 
-revert =  [[320, [revert_tablines]],
+revert =  [[324, []],
+           [323, [revert_linebreaks]],
+           [322, [revert_pagebreaks]],
+           [321, [revert_local_layout]],
+           [320, [revert_tablines]],
            [319, [revert_protected_hfill]],
            [318, [revert_spaceinset, revert_hfills, revert_hspace]],
            [317, [remove_extra_embedded_files]],