- int version;
- int i, j;
- int rows_arg = 0;
- int columns_arg = 0;
- int is_long_tabular_arg = false;
- int rotate_arg = false;
- int a = -1;
- int b = -1;
- int c = -1;
- int d = -1;
- int e = 0;
- int f = 0;
- int g = 0;
- int h = 0;
-
- string s;
- getline(is, s);
- if (s.length() > 8)
- version = atoi(s.c_str() + 8);
- else
- version = 1;
- if (version < 5) {
- lyxerr << "Tabular format < 5 is not supported anymore\n"
- "Get an older version of LyX (< 1.1.x) for conversion!"
- << endl;
- WriteAlert(_("Warning:"),
- _("Tabular format < 5 is not supported anymore\n"),
- _("Get an older version of LyX (< 1.1.x) for conversion!"));
- if (version > 2) {
- is >> rows_arg >> columns_arg >> is_long_tabular_arg
- >> rotate_arg >> a >> b >> c >> d;
- } else
- is >> rows_arg >> columns_arg;
- Init(rows_arg, columns_arg);
- SetLongTabular(is_long_tabular_arg);
- SetRotateTabular(rotate_arg);
- string tmp;
- for (i = 0; i < rows_; ++i) {
- getline(is, tmp);
- }
- for (i = 0; i < columns_; ++i) {
- getline(is, tmp);
- }
- for (i = 0; i < rows_; ++i) {
- for (j = 0; j < columns_; ++j) {
- getline(is, tmp);
- }
- }
- set_row_column_number_info();
+ getline(is, str);
+ while(str.empty())
+ getline(is, str);
+}
+
+void LyXTabular::Read(LyXLex & lex)
+{
+ string line;
+ istream & is = lex.getStream();
+
+ l_getline(is, line);
+ if (!prefixIs(line, "<LyXTabular ")) {
+ OldFormatRead(is, line);
+ return;
+ }
+
+ int version;
+ int rows_arg;
+ int columns_arg;
+ if (!getTokenValue(line, "version", version))
+ return;
+ if (!getTokenValue(line, "rows", rows_arg))
+ return;
+ if (!getTokenValue(line, "columns", columns_arg))
+ return;
+ Init(rows_arg, columns_arg);
+ l_getline(is, line);
+ if (!prefixIs(line, "<Features ")) {
+ lyxerr << "Wrong tabular format (expected <Feture ...> got" <<
+ line << ")" << endl;
+ return;
+ }
+ (void)getTokenValue(line, "islongtable", is_long_tabular);
+ (void)getTokenValue(line, "endhead", endhead);
+ (void)getTokenValue(line, "endfirsthead", endfirsthead);
+ (void)getTokenValue(line, "endfoot", endfoot);
+ (void)getTokenValue(line, "endlastfoot", endlastfoot);
+ int i, j;
+ for(i = 0; i < rows_; ++i) {
+ l_getline(is, line);
+ if (!prefixIs(line, "<Row ")) {
+ lyxerr << "Wrong tabular format (expected <Row ...> got" <<
+ line << ")" << endl;
+ return;
+ }
+ (void)getTokenValue(line, "topline", row_info[i].top_line);
+ (void)getTokenValue(line, "bottomline", row_info[i].bottom_line);
+ (void)getTokenValue(line, "newpage", row_info[i].newpage);
+ for (j = 0; j < columns_; ++j) {
+ l_getline(is,line);
+ if (!prefixIs(line,"<Column")) {
+ lyxerr << "Wrong tabular format (expected <Column ...> got" <<
+ line << ")" << endl;
+ return;
+ }
+ if (!i) {
+ (void)getTokenValue(line, "alignment", column_info[j].alignment);
+ (void)getTokenValue(line, "leftline", column_info[j].left_line);
+ (void)getTokenValue(line, "rightline", column_info[j].right_line);
+ (void)getTokenValue(line, "width", column_info[j].p_width);
+ (void)getTokenValue(line, "special", column_info[j].align_special);
+ }
+ l_getline(is, line);
+ if (!prefixIs(line, "<Cell")) {
+ lyxerr << "Wrong tabular format (expected <Cell ...> got" <<
+ line << ")" << endl;
+ return;
+ }
+ (void)getTokenValue(line, "multicolumn", cell_info[i][j].multicolumn);
+ (void)getTokenValue(line, "alignment", cell_info[i][j].alignment);
+ (void)getTokenValue(line, "topline", cell_info[i][j].top_line);
+ (void)getTokenValue(line, "bottomline", cell_info[i][j].bottom_line);
+ (void)getTokenValue(line, "rotate", cell_info[i][j].rotate);
+ (void)getTokenValue(line, "linebreaks", cell_info[i][j].linebreaks);
+ (void)getTokenValue(line, "width", cell_info[i][j].p_width);
+ (void)getTokenValue(line, "special", cell_info[i][j].align_special);
+ l_getline(is, line);
+ if (prefixIs(line, "\\begin_inset")) {
+ cell_info[i][j].inset->Read(lex);
+ l_getline(is, line);
+ }
+ if (line != "</Cell>") {
+ lyxerr << "Wrong tabular format (expected </Cell> got" <<
+ line << ")" << endl;
+ return;
+ }
+ l_getline(is, line);
+ if (line != "</Column>") {
+ lyxerr << "Wrong tabular format (expected </Column> got" <<
+ line << ")" << endl;