]> git.lyx.org Git - features.git/commitdiff
Modify the InsetBox format to always start 'Box'.
authorAngus Leeming <leeming@lyx.org>
Wed, 10 Dec 2003 21:48:40 +0000 (21:48 +0000)
committerAngus Leeming <leeming@lyx.org>
Wed, 10 Dec 2003 21:48:40 +0000 (21:48 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@8229 a592a061-630c-0410-9148-cb99ea01b6c8

12 files changed:
development/ChangeLog
development/FORMAT
lib/lyx2lyx/ChangeLog
lib/lyx2lyx/lyx2lyx
lib/lyx2lyx/lyxconvert_226.py [new file with mode: 0644]
lib/lyx2lyx/lyxrevert_227.py [new file with mode: 0644]
src/ChangeLog
src/buffer.C
src/factory.C
src/insets/ChangeLog
src/insets/insetbox.C
src/insets/insetbox.h

index e38452a716a8cb1f5828eb70866b1df5c9bdf69e..ddfbe3f67bce1763f0864baa9387ef1b9b8e59e8 100644 (file)
@@ -1,6 +1,6 @@
 2003-12-10  Angus Leeming  <leeming@lyx.org>
 
-       * FORMAT: document format 226.
+       * FORMAT: document formats 226 and 227
 
 2003-12-01  André Pönitz  <poenitz@gmx.net>
 
index 1ad361c6bec76f716e2283ba3d2a564cac03a01f..b2c3c2a2b73a80cdcc1a98adf531beb4c37faef4 100644 (file)
@@ -1,6 +1,16 @@
 LyX file-format changes
 -----------------------
 
+2003-12-10  Angus Leeming  <leeming@lyx.org>
+
+       * Change the output of InsetBox:
+       \begin_inset Boxed -> \begin_inset Box Boxed
+       \begin_inset Doublebox -> \begin_inset Box Doublebox
+       \begin_inset Frameless -> \begin_inset Box Frameless
+       \begin_inset ovalbox -> \begin_inset Box ovalbox
+       \begin_inset Ovalbox -> \begin_inset Box Ovalbox
+       \begin_inset Shadowbox -> \begin_inset Box Shadowbox
+
 2003-12-10  Angus Leeming  <leeming@lyx.org>
 
        * Change the output of InsetNote:
index 1a1a3290010cbc450ad05fad8e3b77293d008e6f..77c686796d8e5826b3b00f6764b22d87035db686 100644 (file)
@@ -1,3 +1,12 @@
+2003-12-10  Angus Leeming  <leeming@lyx.org>
+
+       * lyx2lyx: up the format to 227.
+       (lyxformat): squash latent bug when reporting an inability to convert
+       to the desired format.
+
+       * lyxconvert_226.py:
+       * lyxrevert_227.py: convert the Box inset between formats 226 and 227.
+
 2003-12-10  Angus Leeming  <leeming@lyx.org>
 
        * lyx2lyx: up the format to 226.
index 1fb1593497328d0b5bba92389b0ebcd125a2aa58..c314816c5f367d7738108fee4789045fb459d961 100755 (executable)
@@ -40,7 +40,7 @@ opt.quiet = 0
 
 format = re.compile(r"(\d)[\.,]?(\d\d)")
 fileformat = re.compile(r"\\lyxformat\s*(\S*)")
-lst_ft = [210, 215, 216, 217,  218, 220, 221, 223, 224, 225, 226]
+lst_ft = [210, 215, 216, 217,  218, 220, 221, 223, 224, 225, 226, 227]
 
 def usage():
     print """Usage: lyx2lyx [options] [file]
@@ -115,7 +115,7 @@ def lyxformat(fmt):
     if fmt in lst_ft:
         return fmt
 
-    opt.err.write(fmt + ": " + error.format_not_supported)
+    opt.err.write(str(fmt) + ": " + error.format_not_supported)
     sys.exit(1)
 
 def read_file(file, header, body):
diff --git a/lib/lyx2lyx/lyxconvert_226.py b/lib/lyx2lyx/lyxconvert_226.py
new file mode 100644 (file)
index 0000000..5c86f3f
--- /dev/null
@@ -0,0 +1,39 @@
+# This file is part of lyx2lyx
+# Copyright (C) 2003 José Matos <jamatos@fep.up.pt>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+from parser_tools import find_tokens
+
+def convert_box(lines):
+    i = 0
+    while 1:
+        i = find_tokens(lines, ["\\begin_inset Boxed",
+                                "\\begin_inset Doublebox",
+                                "\\begin_inset Frameless",
+                                "\\begin_inset ovalbox",
+                                "\\begin_inset Ovalbox",
+                                "\\begin_inset Shadowbox"], i)
+        if i == -1:
+            break
+
+        lines[i] = lines[i][0:13] + 'Box ' + lines[i][13:]
+        i = i + 1
+
+def convert(header, body):
+    convert_box(body)
+
+if __name__ == "__main__":
+    pass
diff --git a/lib/lyx2lyx/lyxrevert_227.py b/lib/lyx2lyx/lyxrevert_227.py
new file mode 100644 (file)
index 0000000..8b2e024
--- /dev/null
@@ -0,0 +1,35 @@
+# This file is part of lyx2lyx
+# Copyright (C) 2003 Jos\81é Matos <jamatos@fep.up.pt>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+from parser_tools import find_token
+
+def convert_box(lines):
+    box_header = "\\begin_inset Box "
+    i = 0
+    while 1:
+        i = find_token(lines, box_header, i)
+        if i == -1:
+            break
+
+        lines[i] = "\\begin_inset " + lines[i][len(box_header):]
+        i = i + 1
+
+def convert(header, body):
+    convert_box(body)
+
+if __name__ == "__main__":
+    pass
index 8529d4a9c63ee4fc8586bd86200fbe94f9839155..55f2d39015dd0998aab1ae2e1c5c6d716a8ccfcd 100644 (file)
@@ -1,3 +1,9 @@
+2003-12-10  Angus Leeming  <leeming@lyx.org>
+
+       * buffer.C: up the format to 227.
+
+       * factory.C: the box inset is now identified simply by 'Box'.
+
 2003-12-10  Angus Leeming  <leeming@lyx.org>
 
        * buffer.C: up the format to 226.
index e28f687035a8fdbf22b150f7f330bc80f2fd8df8..53c5b39230c8157898026e93bb677985fe9c5da7 100644 (file)
@@ -132,7 +132,7 @@ extern BufferList bufferlist;
 
 namespace {
 
-const int LYX_FORMAT = 226;
+const int LYX_FORMAT = 227;
 
 } // namespace anon
 
index 747fc7a5897ba2b85ac26b88280c94690b4dbe66..f2b61dbd4c0b5c537a228c9aae56804fea8c3757 100644 (file)
@@ -404,9 +404,7 @@ InsetOld * readInset(LyXLex & lex, Buffer const & buf)
                        inset.reset(new InsetGraphics);
                } else if (tmptok == "Note") {
                        inset.reset(new InsetNote(buf.params(), tmptok));
-               } else if (tmptok == "Boxed" || tmptok == "ovalbox"
-                       || tmptok == "Shadowbox" || tmptok == "Doublebox"
-                       || tmptok == "Ovalbox" || tmptok == "Frameless") {
+               } else if (tmptok == "Box") {
                        inset.reset(new InsetBox(buf.params(), tmptok));
                } else if (tmptok == "CharStyle") {
                        lex.next();
index 706bfe102b058b408061b87080920366883bfb91..de90a8f3e7c5e38f1a2e5237d4567125f6616daa 100644 (file)
@@ -1,3 +1,10 @@
+2003-12-10  Angus Leeming  <leeming@lyx.org>
+
+       * insetbox.C: (read, write): now prepend the inset contents with
+       'Box' to identify the inset as a box inset.
+
+       * insetbox.h: move the translators out of sight.
+
 2003-12-10  Angus Leeming  <leeming@lyx.org>
 
        * insetert.C (string2params): clean-up using the new lyxlex interface.
@@ -36,7 +43,8 @@
 
        * insetexternal.C (draw): update the xo_, yo_ cache.
 
-       * ExternalTransforms.[Ch] (ResizeData): add a usingScale member function.
+       * ExternalTransforms.[Ch] (ResizeData): add a usingScale member
+       function.
        (RotationDataType): new helper struct wrapping the
        RotationData::OriginType enum.
 
index 1a43486ff843dbd830a958064ebb9ded3867960e..a1b0c57847604f1e47a067a9e22903048cc8b19d 100644 (file)
@@ -26,6 +26,7 @@
 #include "paragraph.h"
 
 #include "support/std_sstream.h"
+#include "support/translator.h"
 
 using std::auto_ptr;
 using std::string;
@@ -37,6 +38,8 @@ using std::endl;
 
 namespace {
 
+typedef Translator<std::string, InsetBox::BoxType> BoxTranslator;
+
 BoxTranslator const init_boxtranslator() {
        BoxTranslator translator("Boxed", InsetBox::Boxed);
        translator.addPair("Frameless", InsetBox::Frameless);
@@ -418,7 +421,7 @@ string const InsetBoxMailer::params2string(InsetBoxParams const & params)
 
 
 void InsetBoxMailer::string2params(string const & in,
-       InsetBoxParams & params)
+                                  InsetBoxParams & params)
 {
        params = InsetBoxParams(string());
 
@@ -429,10 +432,20 @@ void InsetBoxMailer::string2params(string const & in,
        LyXLex lex(0,0);
        lex.setStream(data);
 
-       string token;
-       lex.next();
-       token = lex.getString();
-       lex.next();
+       string name;
+       lex >> name;
+       if (!lex || name != name_) {
+               lyxerr << "InsetBoxMailer::string2params(" << in << ")\n"
+                      << "Missing identifier \"" << name_ << '"' << std::endl;
+               return;
+       }
+
+       // This is part of the inset proper that is usually swallowed
+       // by LyXText::readInset
+       string inset_id;
+       lex >> inset_id;
+       if (!lex || inset_id != "Box")
+               return;
 
        params.read(lex);
 }
@@ -454,7 +467,7 @@ InsetBoxParams::InsetBoxParams(string const & label)
 
 void InsetBoxParams::write(ostream & os) const
 {
-       os << type << "\n";
+       os << "Box " << type << "\n";
        os << "position \"" << pos << "\"\n";
        os << "hor_pos \"" << hor_pos << "\"\n";
        os << "has_inner_box " << inner_box << "\n";
@@ -469,13 +482,17 @@ void InsetBoxParams::write(ostream & os) const
 
 void InsetBoxParams::read(LyXLex & lex)
 {
+       if (!lex.isOK())
+               return;
+
        if (lex.isOK()) {
+               lex.next();
                type = lex.getString();
        }
-       string token;
        if (!lex.isOK())
                return;
        lex.next();
+       string token;
        token = lex.getString();
        if (token == "position") {
                lex.next();
index 7c684b81508b20de6b1bdd784bf79f6aabc3d98c..7be734f89e1c78ac0d2b0ae77f4276b04df235aa 100644 (file)
@@ -16,7 +16,6 @@
 
 #include "insetcollapsable.h"
 #include "lyxlength.h"
-#include "support/translator.h"
 
 
 struct InsetBoxParams {
@@ -119,15 +118,6 @@ private:
 };
 
 
-namespace {
-
-typedef Translator<std::string, InsetBox::BoxType> BoxTranslator;
-BoxTranslator const & boxtranslator();
-BoxTranslator const & boxtranslator_loc();
-
-} // anon
-
-
 #include "mailinset.h"
 
 class InsetBoxMailer : public MailInset {