diff --git a/development/ChangeLog b/development/ChangeLog index e38452a716..ddfbe3f67b 100644 --- a/development/ChangeLog +++ b/development/ChangeLog @@ -1,6 +1,6 @@ 2003-12-10 Angus Leeming - * FORMAT: document format 226. + * FORMAT: document formats 226 and 227 2003-12-01 André Pönitz diff --git a/development/FORMAT b/development/FORMAT index 1ad361c6be..b2c3c2a2b7 100644 --- a/development/FORMAT +++ b/development/FORMAT @@ -1,6 +1,16 @@ LyX file-format changes ----------------------- +2003-12-10 Angus Leeming + + * 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 * Change the output of InsetNote: diff --git a/lib/lyx2lyx/ChangeLog b/lib/lyx2lyx/ChangeLog index 1a1a329001..77c686796d 100644 --- a/lib/lyx2lyx/ChangeLog +++ b/lib/lyx2lyx/ChangeLog @@ -1,3 +1,12 @@ +2003-12-10 Angus Leeming + + * 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 * lyx2lyx: up the format to 226. diff --git a/lib/lyx2lyx/lyx2lyx b/lib/lyx2lyx/lyx2lyx index 1fb1593497..c314816c5f 100755 --- a/lib/lyx2lyx/lyx2lyx +++ b/lib/lyx2lyx/lyx2lyx @@ -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 index 0000000000..5c86f3f8b0 --- /dev/null +++ b/lib/lyx2lyx/lyxconvert_226.py @@ -0,0 +1,39 @@ +# This file is part of lyx2lyx +# Copyright (C) 2003 José Matos +# +# 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 index 0000000000..8b2e024ca1 --- /dev/null +++ b/lib/lyx2lyx/lyxrevert_227.py @@ -0,0 +1,35 @@ +# This file is part of lyx2lyx +# Copyright (C) 2003 José Matos +# +# 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 diff --git a/src/ChangeLog b/src/ChangeLog index 8529d4a9c6..55f2d39015 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2003-12-10 Angus Leeming + + * buffer.C: up the format to 227. + + * factory.C: the box inset is now identified simply by 'Box'. + 2003-12-10 Angus Leeming * buffer.C: up the format to 226. diff --git a/src/buffer.C b/src/buffer.C index e28f687035..53c5b39230 100644 --- a/src/buffer.C +++ b/src/buffer.C @@ -132,7 +132,7 @@ extern BufferList bufferlist; namespace { -const int LYX_FORMAT = 226; +const int LYX_FORMAT = 227; } // namespace anon diff --git a/src/factory.C b/src/factory.C index 747fc7a589..f2b61dbd4c 100644 --- a/src/factory.C +++ b/src/factory.C @@ -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(); diff --git a/src/insets/ChangeLog b/src/insets/ChangeLog index 706bfe102b..de90a8f3e7 100644 --- a/src/insets/ChangeLog +++ b/src/insets/ChangeLog @@ -1,3 +1,10 @@ +2003-12-10 Angus Leeming + + * 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 * 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. diff --git a/src/insets/insetbox.C b/src/insets/insetbox.C index 1a43486ff8..a1b0c57847 100644 --- a/src/insets/insetbox.C +++ b/src/insets/insetbox.C @@ -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 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(); diff --git a/src/insets/insetbox.h b/src/insets/insetbox.h index 7c684b8150..7be734f89e 100644 --- a/src/insets/insetbox.h +++ b/src/insets/insetbox.h @@ -16,7 +16,6 @@ #include "insetcollapsable.h" #include "lyxlength.h" -#include "support/translator.h" struct InsetBoxParams { @@ -119,15 +118,6 @@ private: }; -namespace { - -typedef Translator BoxTranslator; -BoxTranslator const & boxtranslator(); -BoxTranslator const & boxtranslator_loc(); - -} // anon - - #include "mailinset.h" class InsetBoxMailer : public MailInset {