]> git.lyx.org Git - lyx.git/blobdiff - lib/lyx2lyx/lyx_2_2.py
EmbeddedObjects.lyx: more updates for the box description
[lyx.git] / lib / lyx2lyx / lyx_2_2.py
index d9d64e6f8f2d211496f6dd85adec524c9b713130..562507be9c12d6a1f327dccc8fc59bf17da0c5eb 100644 (file)
@@ -1096,7 +1096,7 @@ def revert_colorbox(document):
 
     i = 0
     defaultframecolor = "black"
-    defaultbackcolor = "white"
+    defaultbackcolor = "none"
     while True:
         i = find_token(document.body, "framecolor", i)
         if i == -1:
@@ -1108,17 +1108,26 @@ def revert_colorbox(document):
         beg = document.body[i+1].find('"');
         end = document.body[i+1].rfind('"');
         backcolor = document.body[i+1][beg+1:end];
+        j = find_end_of_inset(document.body, i)
+        if j == -1:
+            document.warning("Malformed LyX document: Can't find end of box inset!")
+            i += 1
+            continue
         # delete the specification
         del document.body[i:i+2]
         # output TeX code
         # first output the closing brace
         if framecolor != defaultframecolor or backcolor != defaultbackcolor:
-            document.body[i + 9 : i + 9] = put_cmd_in_ert("}")
+            document.body[j + 1 : j + 1] = put_cmd_in_ert("}")
         # now output the box commands
         if framecolor != defaultframecolor or backcolor != defaultbackcolor:
             document.body[i - 14 : i - 14] = put_cmd_in_ert("{")
         if framecolor != defaultframecolor:
-            document.body[i - 9 : i - 8] = ["\\backslash fboxcolor{" + framecolor + "}{" + backcolor + "}{"]
+            document.body[i - 9 : i - 8] = ["\\backslash fcolorbox{" + framecolor + "}{" + backcolor + "}{"]
+            k = find_token(document.body, "\\begin_inset Box Boxed", i - 16)
+            if k != -1:
+                # \fcolorbox is already framed box thus remove the frame
+                document.body[k : k + 1] = ["\\begin_inset Box Frameless"]
         if backcolor != defaultbackcolor and framecolor == defaultframecolor:
             document.body[i - 9 : i - 8] = ["\\backslash colorbox{" + backcolor + "}{"]
         i = i + 11
@@ -1160,53 +1169,6 @@ def revert_mathmulticol(document):
             i = j
 
 
-def revert_Argument_to_TeX_brace(document, line, endline, n, nmax, environment, opt):
-    '''
-    Reverts an InsetArgument to TeX-code
-    usage:
-    revert_Argument_to_TeX_brace(document, LineOfBegin, LineOfEnd, StartArgument, EndArgument, isEnvironment, isOpt)
-    LineOfBegin is the line  of the \begin_layout or \begin_inset statement
-    LineOfEnd is the line  of the \end_layout or \end_inset statement, if "0" is given, the end of the file is used instead
-    StartArgument is the number of the first argument that needs to be converted
-    EndArgument is the number of the last argument that needs to be converted or the last defined one
-    isEnvironment must be true, if the layout is for a LaTeX environment
-    isOpt must be true, if the argument is an optional one
-    '''
-    lineArg = 0
-    wasOpt = False
-    while lineArg != -1 and n < nmax + 1:
-      lineArg = find_token(document.body, "\\begin_inset Argument " + str(n), line)
-      if lineArg > endline and endline != 0:
-        return wasOpt
-      if lineArg != -1:
-        beginPlain = find_token(document.body, "\\begin_layout Plain Layout", lineArg)
-        # we have to assure that no other inset is in the Argument
-        beginInset = find_token(document.body, "\\begin_inset", beginPlain)
-        endInset = find_token(document.body, "\\end_inset", beginPlain)
-        k = beginPlain + 1
-        l = k
-        while beginInset < endInset and beginInset != -1:
-          beginInset = find_token(document.body, "\\begin_inset", k)
-          endInset = find_token(document.body, "\\end_inset", l)
-          k = beginInset + 1
-          l = endInset + 1
-        if environment == False:
-          if opt == False:
-            document.body[endInset - 2 : endInset + 1] = put_cmd_in_ert("}{")
-            del(document.body[lineArg : beginPlain + 1])
-            wasOpt = False
-          else:
-            document.body[endInset - 2 : endInset + 1] = put_cmd_in_ert("]")
-            document.body[lineArg : beginPlain + 1] = put_cmd_in_ert("[")
-            wasOpt = True
-        else:
-          document.body[endInset - 2 : endInset + 1] = put_cmd_in_ert("}")
-          document.body[lineArg : beginPlain + 1] = put_cmd_in_ert("{")
-          wasOpt = False
-        n += 1
-    return wasOpt
-
-
 def revert_jss(document):
     " Reverts JSS In_Preamble commands to ERT in preamble "
 
@@ -1223,7 +1185,7 @@ def revert_jss(document):
       while m != -1 or j != -1 or h != -1 or k != -1 or n != -1:
         # \pkg
         if h != -1:
-          h = find_token(document.body, "\\begin_inset Flex pkg", h)
+          h = find_token(document.body, "\\begin_inset Flex Pkg", h)
         if h != -1:
           endh = find_end_of_inset(document.body, h)
           document.body[endh - 2 : endh + 1] = put_cmd_in_ert("}")
@@ -1231,7 +1193,7 @@ def revert_jss(document):
           h = h + 5
         # \proglang
         if m != -1:
-          m = find_token(document.body, "\\begin_inset Flex proglang", m)
+          m = find_token(document.body, "\\begin_inset Flex Proglang", m)
         if m != -1:
           endm = find_end_of_inset(document.body, m)
           document.body[endm - 2 : endm + 1] = put_cmd_in_ert("}")
@@ -1239,12 +1201,16 @@ def revert_jss(document):
           m = m + 5
         # \code
         if j != -1:
-          j = find_token(document.body, "\\begin_inset Flex code", j)
+          j = find_token(document.body, "\\begin_inset Flex Code", j)
         if j != -1:
-          endj = find_end_of_inset(document.body, j)
-          document.body[endj - 2 : endj + 1] = put_cmd_in_ert("}")
-          document.body[j : j + 4] = put_cmd_in_ert("\\code{")
-          j = j + 5
+          # assure that we are not in a Code Chunk inset
+          if document.body[j][-1] == "e":
+              endj = find_end_of_inset(document.body, j)
+              document.body[endj - 2 : endj + 1] = put_cmd_in_ert("}")
+              document.body[j : j + 4] = put_cmd_in_ert("\\code{")
+              j = j + 5
+          else:
+              j = j + 1
         # \email
         if k != -1:
           k = find_token(document.body, "\\begin_inset Flex E-mail", k)
@@ -1378,28 +1344,14 @@ def revert_jss(document):
       while m != -1 or j != -1 or h != -1 or k != -1:
         # \CodeChunk
         if h != -1:
-          h = find_token(document.body, "\\begin_layout Code Chunk", h)
+          h = find_token(document.body, "\\begin_inset Flex Code Chunk", h)
         if h != -1:
-          endh = find_end_of_layout(document.body, h)
-          begindeeper = find_token(document.body, "\\begin_deeper", h)
-          enddeeper = find_token(document.body, "\\end_deeper", h)
-          document.body[enddeeper + 1 : enddeeper] = ["\\end_layout"]
-          document.body[enddeeper : enddeeper + 1] = put_cmd_in_ert("\\end{CodeChunk}")
-          del document.body[begindeeper]
+          endh = find_end_of_inset(document.body, h)
+          document.body[endh + 1 : endh] = ["\\end_layout"]
+          document.body[endh : endh + 1] = put_cmd_in_ert("\\end{CodeChunk}")
           document.body[h : h + 3] = put_cmd_in_ert("\\begin{CodeChunk}")
           document.body[h - 1 : h] = ["\\begin_layout Standard"]
           h = h + 1
-        # \Code
-        if m != -1:
-          m = find_token(document.body, "\\begin_layout Standard Code", m)
-        if m != -1:
-          endm = find_end_of_layout(document.body, m)
-          document.body[endm : endm + 1] = ["\\end_layout", "", "\\begin_layout Standard"]
-          document.body[endm + 3 : endm + 4] = put_cmd_in_ert("\\end{Code}")
-          document.body[endm + 13 : endm + 13] = ["\\end_layout", "", "\\begin_layout Standard"]
-          document.body[m + 1 : m] = ["\\end_layout", "", "\\begin_layout Standard"]
-          document.body[m : m + 1] = put_cmd_in_ert("\\begin{Code}")
-          m = m + 1
         # \CodeInput
         if j != -1:
           j = find_token(document.body, "\\begin_layout Code Input", j)
@@ -1422,6 +1374,17 @@ def revert_jss(document):
           document.body[k + 1 : k] = ["\\end_layout", "", "\\begin_layout Standard"]
           document.body[k : k + 1] = put_cmd_in_ert("\\begin{CodeOutput}")
           k = k + 1
+        # \Code
+        if m != -1:
+          m = find_token(document.body, "\\begin_layout Code", m)
+        if m != -1:
+          endm = find_end_of_layout(document.body, m)
+          document.body[endm : endm + 1] = ["\\end_layout", "", "\\begin_layout Standard"]
+          document.body[endm + 3 : endm + 4] = put_cmd_in_ert("\\end{Code}")
+          document.body[endm + 13 : endm + 13] = ["\\end_layout", "", "\\begin_layout Standard"]
+          document.body[m + 1 : m] = ["\\end_layout", "", "\\begin_layout Standard"]
+          document.body[m : m + 1] = put_cmd_in_ert("\\begin{Code}")
+          m = m + 1
 
 
 def convert_subref(document):