mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-25 22:06:15 +00:00
Fix bug 518 (thanks to Jean Marc and Martin for the help)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19455 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
8622ebaa4d
commit
ca81b43f03
@ -30,7 +30,7 @@ try:
|
|||||||
import lyx2lyx_version
|
import lyx2lyx_version
|
||||||
version_lyx2lyx = lyx2lyx_version.version
|
version_lyx2lyx = lyx2lyx_version.version
|
||||||
except: # we are running from build directory so assume the last version
|
except: # we are running from build directory so assume the last version
|
||||||
version_lyx2lyx = '1.5.0svn'
|
version_lyx2lyx = '1.6.0svn'
|
||||||
|
|
||||||
default_debug_level = 2
|
default_debug_level = 2
|
||||||
|
|
||||||
@ -77,7 +77,8 @@ format_relation = [("0_06", [200], generate_minor_versions("0.6" , 4)),
|
|||||||
("1_2", [220], generate_minor_versions("1.2" , 4)),
|
("1_2", [220], generate_minor_versions("1.2" , 4)),
|
||||||
("1_3", [221], generate_minor_versions("1.3" , 7)),
|
("1_3", [221], generate_minor_versions("1.3" , 7)),
|
||||||
("1_4", range(222,246), generate_minor_versions("1.4" , 5)),
|
("1_4", range(222,246), generate_minor_versions("1.4" , 5)),
|
||||||
("1_5", range(246,277), generate_minor_versions("1.5" , 0))]
|
("1_5", range(246,277), generate_minor_versions("1.5" , 1)),
|
||||||
|
("1_6", range(277,278), generate_minor_versions("1.6" , 0))]
|
||||||
|
|
||||||
|
|
||||||
def formats_list():
|
def formats_list():
|
||||||
@ -470,7 +471,7 @@ class LyX_Base:
|
|||||||
first_step = 1
|
first_step = 1
|
||||||
for step in format_relation:
|
for step in format_relation:
|
||||||
if initial_step <= step[0] <= final_step:
|
if initial_step <= step[0] <= final_step:
|
||||||
if first_step and len(step[1]) == 1:
|
if first_step:
|
||||||
first_step = 0
|
first_step = 0
|
||||||
continue
|
continue
|
||||||
steps.append(step[0])
|
steps.append(step[0])
|
||||||
@ -488,6 +489,7 @@ class LyX_Base:
|
|||||||
if last_step[1][-1] == self.end_format:
|
if last_step[1][-1] == self.end_format:
|
||||||
steps.pop()
|
steps.pop()
|
||||||
|
|
||||||
|
self.warning("Convertion mode: %s\tsteps%s" %(mode, steps), 10)
|
||||||
return mode, steps
|
return mode, steps
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@ dist_lyx2lyx_PYTHON = \
|
|||||||
lyx_1_3.py \
|
lyx_1_3.py \
|
||||||
lyx_1_4.py \
|
lyx_1_4.py \
|
||||||
lyx_1_5.py \
|
lyx_1_5.py \
|
||||||
|
lyx_1_6.py \
|
||||||
profiling.py \
|
profiling.py \
|
||||||
test_parser_tools.py
|
test_parser_tools.py
|
||||||
|
|
||||||
|
85
lib/lyx2lyx/lyx_1_6.py
Normal file
85
lib/lyx2lyx/lyx_1_6.py
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
# This file is part of lyx2lyx
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright (C) 2007 José Matos <jamatos@lyx.org>
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
""" Convert files to the file format generated by lyx 1.6"""
|
||||||
|
|
||||||
|
import re
|
||||||
|
import unicodedata
|
||||||
|
import sys, os
|
||||||
|
|
||||||
|
from parser_tools import find_token, find_end_of
|
||||||
|
|
||||||
|
####################################################################
|
||||||
|
# Private helper functions
|
||||||
|
|
||||||
|
def find_end_of_inset(lines, i):
|
||||||
|
" Find end of inset, where lines[i] is included."
|
||||||
|
return find_end_of(lines, i, "\\begin_inset", "\\end_inset")
|
||||||
|
|
||||||
|
####################################################################
|
||||||
|
|
||||||
|
def fix_wrong_tables(document):
|
||||||
|
i = 0
|
||||||
|
while True:
|
||||||
|
i = find_token(document.body, "\\begin_inset Tabular", i)
|
||||||
|
if i == -1:
|
||||||
|
return
|
||||||
|
j = find_end_of_inset(document.body, i + 1)
|
||||||
|
if j == -1:
|
||||||
|
document.warning("Malformed LyX document: Could not find end of tabular.")
|
||||||
|
continue
|
||||||
|
|
||||||
|
m = i + 1
|
||||||
|
nrows = int(document.body[i+1].split('"')[3])
|
||||||
|
ncols = int(document.body[i+1].split('"')[5])
|
||||||
|
|
||||||
|
for l in range(nrows):
|
||||||
|
prev_multicolumn = 0
|
||||||
|
for k in range(ncols):
|
||||||
|
m = find_token(document.body, '<cell', m)
|
||||||
|
|
||||||
|
if document.body[m].find('multicolumn') != -1:
|
||||||
|
multicol_cont = int(document.body[m].split('"')[1])
|
||||||
|
|
||||||
|
if multicol_cont == 2 and (k == 0 or prev_multicolumn == 0):
|
||||||
|
document.body[m] = document.body[m][:5] + document.body[m][21:]
|
||||||
|
prev_multicolumn = 0
|
||||||
|
else:
|
||||||
|
prev_multicolumn = multicol_cont
|
||||||
|
else:
|
||||||
|
prev_multicolumn = 0
|
||||||
|
|
||||||
|
i = j + 1
|
||||||
|
|
||||||
|
|
||||||
|
##
|
||||||
|
# Conversion hub
|
||||||
|
#
|
||||||
|
|
||||||
|
supported_versions = ["1.6.0","1.6"]
|
||||||
|
convert = [
|
||||||
|
[277, [fix_wrong_tables]],
|
||||||
|
]
|
||||||
|
|
||||||
|
revert = [
|
||||||
|
[276, []],
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
pass
|
@ -135,7 +135,7 @@ namespace fs = boost::filesystem;
|
|||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
int const LYX_FORMAT = 276;
|
int const LYX_FORMAT = 277;
|
||||||
|
|
||||||
} // namespace anon
|
} // namespace anon
|
||||||
|
|
||||||
|
@ -721,8 +721,15 @@ void Tabular::deleteColumn(col_type const column)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
column_info.erase(column_info.begin() + column);
|
column_info.erase(column_info.begin() + column);
|
||||||
for (row_type i = 0; i < rows_; ++i)
|
for (row_type i = 0; i < rows_; ++i) {
|
||||||
|
// Care about multicolumn cells
|
||||||
|
if (column + 1 < columns_ &&
|
||||||
|
cell_info[i][column].multicolumn == CELL_BEGIN_OF_MULTICOLUMN &&
|
||||||
|
cell_info[i][column + 1].multicolumn == CELL_PART_OF_MULTICOLUMN) {
|
||||||
|
cell_info[i][column + 1].multicolumn = CELL_BEGIN_OF_MULTICOLUMN;
|
||||||
|
}
|
||||||
cell_info[i].erase(cell_info[i].begin() + column);
|
cell_info[i].erase(cell_info[i].begin() + column);
|
||||||
|
}
|
||||||
--columns_;
|
--columns_;
|
||||||
fixCellNums();
|
fixCellNums();
|
||||||
}
|
}
|
||||||
@ -747,22 +754,10 @@ void Tabular::copyColumn(BufferParams const & bp, col_type const column)
|
|||||||
void Tabular::set_row_column_number_info()
|
void Tabular::set_row_column_number_info()
|
||||||
{
|
{
|
||||||
numberofcells = 0;
|
numberofcells = 0;
|
||||||
|
// Count only non-multicol cells plus begin multicol
|
||||||
|
// cells, ignore non-begin multicol cells:
|
||||||
for (row_type row = 0; row < rows_; ++row) {
|
for (row_type row = 0; row < rows_; ++row) {
|
||||||
for (col_type column = 0; column < columns_; ++column) {
|
for (col_type column = 0; column < columns_; ++column) {
|
||||||
|
|
||||||
// If on its left is either the edge, or a normal cell,
|
|
||||||
// then this cannot be a non-begin multicol cell.
|
|
||||||
// Clean up as well as we can:
|
|
||||||
if (cell_info[row][column].multicolumn
|
|
||||||
== CELL_PART_OF_MULTICOLUMN) {
|
|
||||||
if (column == 0 ||
|
|
||||||
cell_info[row][column - 1]
|
|
||||||
.multicolumn == CELL_NORMAL)
|
|
||||||
cell_info[row][column].multicolumn =
|
|
||||||
CELL_NORMAL;
|
|
||||||
}
|
|
||||||
// Count only non-multicol cells plus begin multicol
|
|
||||||
// cells, ignore non-begin multicol cells:
|
|
||||||
if (cell_info[row][column].multicolumn
|
if (cell_info[row][column].multicolumn
|
||||||
!= Tabular::CELL_PART_OF_MULTICOLUMN)
|
!= Tabular::CELL_PART_OF_MULTICOLUMN)
|
||||||
++numberofcells;
|
++numberofcells;
|
||||||
|
Loading…
Reference in New Issue
Block a user