mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-25 10:58:52 +00:00
Added support for vertical aligment (using array-package) and also better
support for setting header/footer in longtables. The Inset-Tabular-Layout is now fully functionall! git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@889 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
92682d84a4
commit
9e7821d35b
@ -1,3 +1,12 @@
|
||||
2000-07-17 Juergen Vigna <jug@sad.it>
|
||||
|
||||
* src/tabular.C (Validate): check if array-package is needed.
|
||||
(SetVAlignment): added support for vertical alignment.
|
||||
(SetLTFoot): better support for longtable header/footers
|
||||
(Latex): modified to support added features.
|
||||
|
||||
* src/LaTeXFeatures.[Ch]: added array-package.
|
||||
|
||||
2000-07-17 R. Lahaye <lahaye@postech.ac.kr>
|
||||
|
||||
* src/lyx_gui.C (LyXGUI): make sure that the height is large
|
||||
|
@ -209,6 +209,7 @@
|
||||
%%% Packages
|
||||
\TestPackage{a4}
|
||||
\TestPackage{a4wide}
|
||||
\TestPackage{array}
|
||||
\TestPackage{babel}
|
||||
\TestPackage{color} % this one should be there if graphics.sty is there.
|
||||
\TestPackage{fancyhdr}
|
||||
|
@ -1056,6 +1056,21 @@ a4
|
||||
Other packages
|
||||
\layout Subsection
|
||||
|
||||
array
|
||||
\layout Description
|
||||
|
||||
Found: @chk_array@
|
||||
\layout Description
|
||||
|
||||
CTAN:
|
||||
\family typewriter
|
||||
macros/latex/required/tools/array.dtx
|
||||
\layout Description
|
||||
|
||||
Notes: The package array is needed by LyX to be able to output vertical
|
||||
alignment other then ''top'' for tabulars.
|
||||
\layout Subsection
|
||||
|
||||
algorithm
|
||||
\layout Description
|
||||
|
||||
|
@ -33,6 +33,11 @@ src/frontends/xforms/FormPreferences.C
|
||||
src/frontends/xforms/form_preferences.C
|
||||
src/frontends/xforms/FormPrint.C
|
||||
src/frontends/xforms/form_print.C
|
||||
src/frontends/xforms/forms/form_citation.C
|
||||
src/frontends/xforms/forms/form_copyright.C
|
||||
src/frontends/xforms/forms/form_preferences.C
|
||||
src/frontends/xforms/forms/form_print.C
|
||||
src/frontends/xforms/forms/form_tabular.C
|
||||
src/frontends/xforms/FormTabular.C
|
||||
src/frontends/xforms/form_tabular.C
|
||||
src/gettext.h
|
||||
|
@ -29,6 +29,7 @@ LaTeXFeatures::LaTeXFeatures(BufferParams const & p, int n)
|
||||
: layout(n, false), params(p)
|
||||
{
|
||||
// packages
|
||||
array = false;
|
||||
color = false;
|
||||
graphics = false;
|
||||
setspace = false;
|
||||
@ -73,7 +74,9 @@ LaTeXFeatures::LaTeXFeatures(BufferParams const & p, int n)
|
||||
}
|
||||
|
||||
void LaTeXFeatures::require(string const & name) {
|
||||
if (name == "color") {
|
||||
if (name == "array") {
|
||||
array = true;
|
||||
} else if (name == "color") {
|
||||
color = true;
|
||||
} else if (name == "graphics") {
|
||||
#ifdef USE_GRAPHICX
|
||||
@ -126,6 +129,10 @@ string LaTeXFeatures::getPackages()
|
||||
LyXTextClass const & tclass =
|
||||
textclasslist.TextClass(params.textclass);
|
||||
|
||||
// array-package
|
||||
if (array)
|
||||
packages += "\\usepackage{array}\n";
|
||||
|
||||
// color.sty
|
||||
if (color) {
|
||||
if (params.graphicsDriver == "default")
|
||||
|
@ -55,6 +55,8 @@ struct LaTeXFeatures {
|
||||
//@Man: Packages
|
||||
//@{
|
||||
///
|
||||
bool array;
|
||||
///
|
||||
bool color; // color.sty
|
||||
#ifdef USE_GRAPHICX
|
||||
///
|
||||
|
@ -220,7 +220,7 @@ void FormTabular::InputCB(FL_OBJECT * ob, long l)
|
||||
}
|
||||
|
||||
|
||||
bool FormTabular::local_update(bool flag)
|
||||
bool FormTabular::local_update(bool)
|
||||
{
|
||||
if (!inset_ || !inset_->tabular)
|
||||
return false;
|
||||
@ -249,48 +249,158 @@ bool FormTabular::local_update(bool flag)
|
||||
sprintf(buf,"%d",row);
|
||||
fl_set_input(dialog_->input_tabular_row, buf);
|
||||
fl_deactivate_object(dialog_->input_tabular_row);
|
||||
if (tabular->IsMultiColumn(cell))
|
||||
if (tabular->IsMultiColumn(cell)) {
|
||||
fl_set_button(cell_options_->radio_multicolumn, 1);
|
||||
else
|
||||
fl_set_button(cell_options_->radio_border_top,
|
||||
tabular->TopLine(cell)?1:0);
|
||||
fl_activate_object(cell_options_->radio_border_top);
|
||||
fl_set_object_lcol(cell_options_->radio_border_top, FL_BLACK);
|
||||
fl_set_button(cell_options_->radio_border_bottom,
|
||||
tabular->BottomLine(cell)?1:0);
|
||||
fl_activate_object(cell_options_->radio_border_bottom);
|
||||
fl_set_object_lcol(cell_options_->radio_border_bottom, FL_BLACK);
|
||||
fl_set_button(cell_options_->radio_border_left,
|
||||
tabular->LeftLine(cell)?1:0);
|
||||
fl_activate_object(cell_options_->radio_border_left);
|
||||
fl_set_object_lcol(cell_options_->radio_border_left, FL_BLACK);
|
||||
fl_set_button(cell_options_->radio_border_right,
|
||||
tabular->RightLine(cell)?1:0);
|
||||
fl_activate_object(cell_options_->radio_border_right);
|
||||
fl_set_object_lcol(cell_options_->radio_border_right, FL_BLACK);
|
||||
pwidth = tabular->GetMColumnPWidth(cell);
|
||||
align = tabular->GetAlignment(cell);
|
||||
if (!pwidth.empty() || (align == LYX_ALIGN_LEFT))
|
||||
fl_set_button(cell_options_->radio_align_left, 1);
|
||||
else if (align == LYX_ALIGN_RIGHT)
|
||||
fl_set_button(cell_options_->radio_align_right, 1);
|
||||
else
|
||||
fl_set_button(cell_options_->radio_align_center, 1);
|
||||
fl_activate_object(cell_options_->radio_align_left);
|
||||
fl_set_object_lcol(cell_options_->radio_align_left, FL_BLACK);
|
||||
fl_activate_object(cell_options_->radio_align_right);
|
||||
fl_set_object_lcol(cell_options_->radio_align_right, FL_BLACK);
|
||||
fl_activate_object(cell_options_->radio_align_center);
|
||||
fl_set_object_lcol(cell_options_->radio_align_center, FL_BLACK);
|
||||
align = tabular->GetVAlignment(cell);
|
||||
fl_set_button(cell_options_->radio_valign_top, 0);
|
||||
fl_set_button(cell_options_->radio_valign_bottom, 0);
|
||||
fl_set_button(cell_options_->radio_valign_center, 0);
|
||||
if (pwidth.empty() || (align == LyXTabular::LYX_VALIGN_CENTER))
|
||||
fl_set_button(cell_options_->radio_valign_center, 1);
|
||||
else if (align == LyXTabular::LYX_VALIGN_BOTTOM)
|
||||
fl_set_button(cell_options_->radio_valign_bottom, 1);
|
||||
else
|
||||
fl_set_button(cell_options_->radio_valign_top, 1);
|
||||
fl_activate_object(cell_options_->radio_valign_top);
|
||||
fl_set_object_lcol(cell_options_->radio_valign_top, FL_BLACK);
|
||||
fl_activate_object(cell_options_->radio_valign_bottom);
|
||||
fl_set_object_lcol(cell_options_->radio_valign_bottom, FL_BLACK);
|
||||
fl_activate_object(cell_options_->radio_valign_center);
|
||||
fl_set_object_lcol(cell_options_->radio_valign_center, FL_BLACK);
|
||||
special = tabular->GetAlignSpecial(cell,LyXTabular::SET_SPECIAL_MULTI);
|
||||
fl_set_input(cell_options_->input_special_multialign, special.c_str());
|
||||
fl_set_input(cell_options_->input_mcolumn_width,pwidth.c_str());
|
||||
if (!lv_->buffer()->isReadonly()) {
|
||||
fl_activate_object(cell_options_->input_special_multialign);
|
||||
fl_set_object_lcol(cell_options_->input_special_multialign,
|
||||
FL_BLACK);
|
||||
fl_activate_object(cell_options_->input_mcolumn_width);
|
||||
fl_set_object_lcol(cell_options_->input_mcolumn_width, FL_BLACK);
|
||||
}
|
||||
if (!pwidth.empty()) {
|
||||
fl_deactivate_object(cell_options_->radio_align_left);
|
||||
fl_deactivate_object(cell_options_->radio_align_right);
|
||||
fl_deactivate_object(cell_options_->radio_align_center);
|
||||
fl_set_object_lcol(cell_options_->radio_align_left, FL_INACTIVE);
|
||||
fl_set_object_lcol(cell_options_->radio_align_right, FL_INACTIVE);
|
||||
fl_set_object_lcol(cell_options_->radio_align_center, FL_INACTIVE);
|
||||
fl_activate_object(cell_options_->radio_valign_top);
|
||||
fl_activate_object(cell_options_->radio_valign_bottom);
|
||||
fl_activate_object(cell_options_->radio_valign_center);
|
||||
fl_set_object_lcol(cell_options_->radio_valign_top, FL_BLACK);
|
||||
fl_set_object_lcol(cell_options_->radio_valign_bottom, FL_BLACK);
|
||||
fl_set_object_lcol(cell_options_->radio_valign_center, FL_BLACK);
|
||||
} else {
|
||||
fl_activate_object(cell_options_->radio_align_left);
|
||||
fl_activate_object(cell_options_->radio_align_right);
|
||||
fl_activate_object(cell_options_->radio_align_center);
|
||||
fl_set_object_lcol(cell_options_->radio_align_left, FL_BLACK);
|
||||
fl_set_object_lcol(cell_options_->radio_align_right, FL_BLACK);
|
||||
fl_set_object_lcol(cell_options_->radio_align_center, FL_BLACK);
|
||||
fl_deactivate_object(cell_options_->radio_valign_top);
|
||||
fl_deactivate_object(cell_options_->radio_valign_bottom);
|
||||
fl_deactivate_object(cell_options_->radio_valign_center);
|
||||
fl_set_object_lcol(cell_options_->radio_valign_top, FL_INACTIVE);
|
||||
fl_set_object_lcol(cell_options_->radio_valign_bottom,FL_INACTIVE);
|
||||
fl_set_object_lcol(cell_options_->radio_valign_center,FL_INACTIVE);
|
||||
}
|
||||
} else {
|
||||
fl_set_button(cell_options_->radio_multicolumn, 0);
|
||||
fl_set_button(cell_options_->radio_border_top, 0);
|
||||
fl_deactivate_object(cell_options_->radio_border_top);
|
||||
fl_set_object_lcol(cell_options_->radio_border_top, FL_INACTIVE);
|
||||
fl_set_button(cell_options_->radio_border_bottom, 0);
|
||||
fl_deactivate_object(cell_options_->radio_border_bottom);
|
||||
fl_set_object_lcol(cell_options_->radio_border_bottom, FL_INACTIVE);
|
||||
fl_set_button(cell_options_->radio_border_left, 0);
|
||||
fl_deactivate_object(cell_options_->radio_border_left);
|
||||
fl_set_object_lcol(cell_options_->radio_border_left, FL_INACTIVE);
|
||||
fl_set_button(cell_options_->radio_border_right, 0);
|
||||
fl_deactivate_object(cell_options_->radio_border_right);
|
||||
fl_set_object_lcol(cell_options_->radio_border_right, FL_INACTIVE);
|
||||
fl_set_button(cell_options_->radio_align_left, 0);
|
||||
fl_deactivate_object(cell_options_->radio_align_left);
|
||||
fl_set_object_lcol(cell_options_->radio_align_left, FL_INACTIVE);
|
||||
fl_set_button(cell_options_->radio_align_right, 0);
|
||||
fl_deactivate_object(cell_options_->radio_align_right);
|
||||
fl_set_object_lcol(cell_options_->radio_align_right, FL_INACTIVE);
|
||||
fl_set_button(cell_options_->radio_align_center, 0);
|
||||
fl_deactivate_object(cell_options_->radio_align_center);
|
||||
fl_set_object_lcol(cell_options_->radio_align_center, FL_INACTIVE);
|
||||
fl_set_button(cell_options_->radio_valign_top, 0);
|
||||
fl_deactivate_object(cell_options_->radio_valign_top);
|
||||
fl_set_object_lcol(cell_options_->radio_valign_top, FL_INACTIVE);
|
||||
fl_set_button(cell_options_->radio_valign_bottom, 0);
|
||||
fl_deactivate_object(cell_options_->radio_valign_bottom);
|
||||
fl_set_object_lcol(cell_options_->radio_valign_bottom, FL_INACTIVE);
|
||||
fl_set_button(cell_options_->radio_valign_center, 0);
|
||||
fl_deactivate_object(cell_options_->radio_valign_center);
|
||||
fl_set_object_lcol(cell_options_->radio_valign_center, FL_INACTIVE);
|
||||
fl_set_input(cell_options_->input_special_multialign, "");
|
||||
fl_deactivate_object(cell_options_->input_special_multialign);
|
||||
fl_set_object_lcol(cell_options_->input_special_multialign, FL_INACTIVE);
|
||||
fl_set_input(cell_options_->input_mcolumn_width,"");
|
||||
fl_deactivate_object(cell_options_->input_mcolumn_width);
|
||||
fl_set_object_lcol(cell_options_->input_mcolumn_width, FL_INACTIVE);
|
||||
}
|
||||
if (tabular->GetRotateCell(cell))
|
||||
fl_set_button(cell_options_->radio_rotate_cell, 1);
|
||||
else
|
||||
fl_set_button(cell_options_->radio_rotate_cell, 0);
|
||||
if (tabular->TopLine(cell))
|
||||
if (tabular->TopLine(cell, true))
|
||||
fl_set_button(column_options_->radio_border_top, 1);
|
||||
else
|
||||
fl_set_button(column_options_->radio_border_top, 0);
|
||||
if (tabular->BottomLine(cell))
|
||||
if (tabular->BottomLine(cell, true))
|
||||
fl_set_button(column_options_->radio_border_bottom, 1);
|
||||
else
|
||||
fl_set_button(column_options_->radio_border_bottom, 0);
|
||||
if (tabular->LeftLine(cell))
|
||||
if (tabular->LeftLine(cell, true))
|
||||
fl_set_button(column_options_->radio_border_left, 1);
|
||||
else
|
||||
fl_set_button(column_options_->radio_border_left, 0);
|
||||
if (tabular->RightLine(cell))
|
||||
if (tabular->RightLine(cell, true))
|
||||
fl_set_button(column_options_->radio_border_right, 1);
|
||||
else
|
||||
fl_set_button(column_options_->radio_border_right, 0);
|
||||
align = tabular->GetAlignment(cell);
|
||||
fl_set_button(column_options_->radio_align_left, 0);
|
||||
fl_set_button(column_options_->radio_align_right, 0);
|
||||
fl_set_button(column_options_->radio_align_center, 0);
|
||||
special = tabular->GetAlignSpecial(cell,LyXTabular::SET_SPECIAL_COLUMN);
|
||||
if (flag)
|
||||
fl_set_input(column_options_->input_special_alignment,
|
||||
special.c_str());
|
||||
fl_set_input(column_options_->input_special_alignment, special.c_str());
|
||||
if (lv_->buffer()->isReadonly())
|
||||
fl_deactivate_object(column_options_->input_special_alignment);
|
||||
special = tabular->GetAlignSpecial(cell,LyXTabular::SET_SPECIAL_MULTI);
|
||||
if (flag)
|
||||
fl_set_input(cell_options_->input_special_multialign, special.c_str());
|
||||
if (lv_->buffer()->isReadonly())
|
||||
fl_deactivate_object(cell_options_->input_special_multialign);
|
||||
pwidth = tabular->GetPWidth(cell);
|
||||
if (flag)
|
||||
fl_set_input(column_options_->input_column_width,pwidth.c_str());
|
||||
else
|
||||
fl_activate_object(column_options_->input_special_alignment);
|
||||
pwidth = tabular->GetColumnPWidth(cell);
|
||||
fl_set_input(column_options_->input_column_width,pwidth.c_str());
|
||||
if (lv_->buffer()->isReadonly()) {
|
||||
fl_deactivate_object(column_options_->input_column_width);
|
||||
} else {
|
||||
@ -306,20 +416,39 @@ bool FormTabular::local_update(bool flag)
|
||||
fl_set_object_lcol(cell_options_->radio_linebreak_cell, FL_INACTIVE);
|
||||
fl_set_button(cell_options_->radio_linebreak_cell,0);
|
||||
}
|
||||
if ((!pwidth.empty() && !tabular->IsMultiColumn(cell)) ||
|
||||
(align == LYX_ALIGN_LEFT))
|
||||
align = tabular->GetAlignment(cell, true);
|
||||
fl_set_button(column_options_->radio_align_left, 0);
|
||||
fl_set_button(column_options_->radio_align_right, 0);
|
||||
fl_set_button(column_options_->radio_align_center, 0);
|
||||
if (!pwidth.empty() || (align == LYX_ALIGN_LEFT))
|
||||
fl_set_button(column_options_->radio_align_left, 1);
|
||||
else if (align == LYX_ALIGN_RIGHT)
|
||||
fl_set_button(column_options_->radio_align_right, 1);
|
||||
else
|
||||
fl_set_button(column_options_->radio_align_center, 1);
|
||||
if (!pwidth.empty() && !tabular->IsMultiColumn(cell)) {
|
||||
align = tabular->GetVAlignment(cell, true);
|
||||
fl_set_button(column_options_->radio_valign_top, 0);
|
||||
fl_set_button(column_options_->radio_valign_bottom, 0);
|
||||
fl_set_button(column_options_->radio_valign_center, 0);
|
||||
if (pwidth.empty() || (align == LyXTabular::LYX_VALIGN_CENTER))
|
||||
fl_set_button(column_options_->radio_valign_center, 1);
|
||||
else if (align == LyXTabular::LYX_VALIGN_BOTTOM)
|
||||
fl_set_button(column_options_->radio_valign_bottom, 1);
|
||||
else
|
||||
fl_set_button(column_options_->radio_valign_top, 1);
|
||||
if (!pwidth.empty()) {
|
||||
fl_deactivate_object(column_options_->radio_align_left);
|
||||
fl_deactivate_object(column_options_->radio_align_right);
|
||||
fl_deactivate_object(column_options_->radio_align_center);
|
||||
fl_set_object_lcol(column_options_->radio_align_left, FL_INACTIVE);
|
||||
fl_set_object_lcol(column_options_->radio_align_right, FL_INACTIVE);
|
||||
fl_set_object_lcol(column_options_->radio_align_center, FL_INACTIVE);
|
||||
fl_activate_object(column_options_->radio_valign_top);
|
||||
fl_activate_object(column_options_->radio_valign_bottom);
|
||||
fl_activate_object(column_options_->radio_valign_center);
|
||||
fl_set_object_lcol(column_options_->radio_valign_top, FL_BLACK);
|
||||
fl_set_object_lcol(column_options_->radio_valign_bottom, FL_BLACK);
|
||||
fl_set_object_lcol(column_options_->radio_valign_center, FL_BLACK);
|
||||
} else {
|
||||
fl_activate_object(column_options_->radio_align_left);
|
||||
fl_activate_object(column_options_->radio_align_right);
|
||||
@ -327,6 +456,12 @@ bool FormTabular::local_update(bool flag)
|
||||
fl_set_object_lcol(column_options_->radio_align_left, FL_BLACK);
|
||||
fl_set_object_lcol(column_options_->radio_align_right, FL_BLACK);
|
||||
fl_set_object_lcol(column_options_->radio_align_center, FL_BLACK);
|
||||
fl_deactivate_object(column_options_->radio_valign_top);
|
||||
fl_deactivate_object(column_options_->radio_valign_bottom);
|
||||
fl_deactivate_object(column_options_->radio_valign_center);
|
||||
fl_set_object_lcol(column_options_->radio_valign_top, FL_INACTIVE);
|
||||
fl_set_object_lcol(column_options_->radio_valign_bottom, FL_INACTIVE);
|
||||
fl_set_object_lcol(column_options_->radio_valign_center, FL_INACTIVE);
|
||||
}
|
||||
fl_set_button(tabular_options_->radio_longtable,
|
||||
tabular->IsLongTabular());
|
||||
@ -341,14 +476,15 @@ bool FormTabular::local_update(bool flag)
|
||||
fl_set_object_lcol(longtable_options_->radio_lt_foot, FL_BLACK);
|
||||
fl_set_object_lcol(longtable_options_->radio_lt_lastfoot, FL_BLACK);
|
||||
fl_set_object_lcol(longtable_options_->radio_lt_newpage, FL_BLACK);
|
||||
int dummy;
|
||||
fl_set_button(longtable_options_->radio_lt_firsthead,
|
||||
tabular->GetRowOfLTFirstHead(cell));
|
||||
tabular->GetRowOfLTFirstHead(cell, dummy));
|
||||
fl_set_button(longtable_options_->radio_lt_head,
|
||||
tabular->GetRowOfLTHead(cell));
|
||||
tabular->GetRowOfLTHead(cell, dummy));
|
||||
fl_set_button(longtable_options_->radio_lt_foot,
|
||||
tabular->GetRowOfLTFoot(cell));
|
||||
tabular->GetRowOfLTFoot(cell, dummy));
|
||||
fl_set_button(longtable_options_->radio_lt_lastfoot,
|
||||
tabular->GetRowOfLTLastFoot(cell));
|
||||
tabular->GetRowOfLTLastFoot(cell, dummy));
|
||||
fl_set_button(longtable_options_->radio_lt_newpage,
|
||||
tabular->GetLTNewPage(cell));
|
||||
} else {
|
||||
@ -416,6 +552,20 @@ void FormTabular::SetTabularOptions(FL_OBJECT * ob, long)
|
||||
local_update(false); // update for alignment
|
||||
return;
|
||||
}
|
||||
if (ob == cell_options_->input_mcolumn_width) {
|
||||
string
|
||||
str;
|
||||
str = fl_get_input(ob);
|
||||
if (!str.empty() && !isValidLength(str)) {
|
||||
fl_set_object_label(dialog_->text_warning,
|
||||
_("Warning: Invalid Length (valid example: 10mm)"));
|
||||
fl_show_object(dialog_->text_warning);
|
||||
return;
|
||||
}
|
||||
inset_->TabularFeatures(lv_->view(), LyXTabular::SET_MPWIDTH,str);
|
||||
local_update(false); // update for alignment
|
||||
return;
|
||||
}
|
||||
str = fl_get_input(column_options_->input_column_width);
|
||||
if (!str.empty() && !isValidLength(str)) {
|
||||
fl_set_object_label(
|
||||
@ -450,6 +600,12 @@ void FormTabular::SetTabularOptions(FL_OBJECT * ob, long)
|
||||
num = LyXTabular::ALIGN_RIGHT;
|
||||
else if (ob == column_options_->radio_align_center)
|
||||
num = LyXTabular::ALIGN_CENTER;
|
||||
else if (ob == column_options_->radio_valign_top)
|
||||
num = LyXTabular::VALIGN_TOP;
|
||||
else if (ob == column_options_->radio_valign_bottom)
|
||||
num = LyXTabular::VALIGN_BOTTOM;
|
||||
else if (ob == column_options_->radio_valign_center)
|
||||
num = LyXTabular::VALIGN_CENTER;
|
||||
else if (ob == cell_options_->radio_multicolumn)
|
||||
num = LyXTabular::MULTICOLUMN;
|
||||
else if (ob == tabular_options_->radio_longtable) {
|
||||
@ -461,14 +617,15 @@ void FormTabular::SetTabularOptions(FL_OBJECT * ob, long)
|
||||
fl_activate_object(longtable_options_->radio_lt_foot);
|
||||
fl_activate_object(longtable_options_->radio_lt_lastfoot);
|
||||
fl_activate_object(longtable_options_->radio_lt_newpage);
|
||||
int dummy;
|
||||
fl_set_button(longtable_options_->radio_lt_firsthead,
|
||||
tabular->GetRowOfLTFirstHead(cell));
|
||||
tabular->GetRowOfLTFirstHead(cell, dummy));
|
||||
fl_set_button(longtable_options_->radio_lt_head,
|
||||
tabular->GetRowOfLTHead(cell));
|
||||
tabular->GetRowOfLTHead(cell, dummy));
|
||||
fl_set_button(longtable_options_->radio_lt_foot,
|
||||
tabular->GetRowOfLTFoot(cell));
|
||||
tabular->GetRowOfLTFoot(cell, dummy));
|
||||
fl_set_button(longtable_options_->radio_lt_lastfoot,
|
||||
tabular->GetRowOfLTLastFoot(cell));
|
||||
tabular->GetRowOfLTLastFoot(cell, dummy));
|
||||
fl_set_button(longtable_options_->radio_lt_firsthead,
|
||||
tabular->GetLTNewPage(cell));
|
||||
} else {
|
||||
@ -522,7 +679,27 @@ void FormTabular::SetTabularOptions(FL_OBJECT * ob, long)
|
||||
} else if (ob == cell_options_->input_special_multialign) {
|
||||
special = fl_get_input(cell_options_->input_special_multialign);
|
||||
num = LyXTabular::SET_SPECIAL_MULTI;
|
||||
} else
|
||||
} else if (ob == cell_options_->radio_border_top)
|
||||
num = LyXTabular::M_TOGGLE_LINE_TOP;
|
||||
else if (ob == cell_options_->radio_border_bottom)
|
||||
num = LyXTabular::M_TOGGLE_LINE_BOTTOM;
|
||||
else if (ob == cell_options_->radio_border_left)
|
||||
num = LyXTabular::M_TOGGLE_LINE_LEFT;
|
||||
else if (ob == cell_options_->radio_border_right)
|
||||
num = LyXTabular::M_TOGGLE_LINE_RIGHT;
|
||||
else if (ob == cell_options_->radio_align_left)
|
||||
num = LyXTabular::M_ALIGN_LEFT;
|
||||
else if (ob == cell_options_->radio_align_right)
|
||||
num = LyXTabular::M_ALIGN_RIGHT;
|
||||
else if (ob == cell_options_->radio_align_center)
|
||||
num = LyXTabular::M_ALIGN_CENTER;
|
||||
else if (ob == cell_options_->radio_valign_top)
|
||||
num = LyXTabular::M_VALIGN_TOP;
|
||||
else if (ob == cell_options_->radio_valign_bottom)
|
||||
num = LyXTabular::M_VALIGN_BOTTOM;
|
||||
else if (ob == cell_options_->radio_valign_center)
|
||||
num = LyXTabular::M_VALIGN_CENTER;
|
||||
else
|
||||
return;
|
||||
|
||||
inset_->TabularFeatures(lv_->view(), num, special);
|
||||
|
@ -23,10 +23,10 @@ FD_form_tabular * FormTabular::build_tabular()
|
||||
fdui->button_close = obj = fl_add_button(FL_NORMAL_BUTTON, 415, 250, 90, 30, idex(_("Close|#C")));fl_set_button_shortcut(obj, scex(_("Close|#C")), 1);
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_callback(obj, C_FormTabularCloseCB, 0);
|
||||
fdui->input_tabular_column = obj = fl_add_input(FL_NORMAL_INPUT, 5, 250, 60, 30, "");
|
||||
fdui->input_tabular_column = obj = fl_add_input(FL_NORMAL_INPUT, 64, 250, 60, 30, "");
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_lalign(obj, FL_ALIGN_TOP_LEFT);
|
||||
fdui->input_tabular_row = obj = fl_add_input(FL_NORMAL_INPUT, 65, 250, 60, 30, "");
|
||||
fdui->input_tabular_row = obj = fl_add_input(FL_NORMAL_INPUT, 5, 250, 60, 30, "");
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_lalign(obj, FL_ALIGN_TOP_LEFT);
|
||||
fdui->text_warning = obj = fl_add_text(FL_NORMAL_TEXT, 125, 250, 290, 30, "");
|
||||
@ -125,10 +125,10 @@ FD_form_column_options * FormTabular::build_column_options()
|
||||
fdui->radio_align_left = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 205, 30, 110, 25, idex(_("Left|#e")));fl_set_button_shortcut(obj, scex(_("Left|#e")), 1);
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_callback(obj, C_FormTabularInputCB, 0);
|
||||
fdui->radio_align_right = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 205, 55, 115, 25, idex(_("Right|#i")));fl_set_button_shortcut(obj, scex(_("Right|#i")), 1);
|
||||
fdui->radio_align_right = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 205, 80, 115, 25, idex(_("Right|#i")));fl_set_button_shortcut(obj, scex(_("Right|#i")), 1);
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_callback(obj, C_FormTabularInputCB, 0);
|
||||
fdui->radio_align_center = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 205, 80, 115, 25, idex(_("Center|#c")));fl_set_button_shortcut(obj, scex(_("Center|#c")), 1);
|
||||
fdui->radio_align_center = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 205, 55, 115, 25, idex(_("Center|#c")));fl_set_button_shortcut(obj, scex(_("Center|#c")), 1);
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_callback(obj, C_FormTabularInputCB, 0);
|
||||
fdui->input_column_width = obj = fl_add_input(FL_NORMAL_INPUT, 375, 150, 95, 30, _("Width of column:"));
|
||||
@ -136,15 +136,6 @@ FD_form_column_options * FormTabular::build_column_options()
|
||||
fl_set_object_callback(obj, C_FormTabularInputCB, 0);
|
||||
obj = fl_add_frame(FL_ENGRAVED_FRAME, 340, 20, 130, 105, "");
|
||||
fl_set_object_color(obj, FL_COL1, FL_COL1);
|
||||
fdui->radio_valign_top = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 345, 30, 110, 25, idex(_("Top|#p")));fl_set_button_shortcut(obj, scex(_("Top|#p")), 1);
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_callback(obj, C_FormTabularInputCB, 0);
|
||||
fdui->radio_valign_center = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 345, 55, 115, 25, idex(_("Center|#n")));fl_set_button_shortcut(obj, scex(_("Center|#n")), 1);
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_callback(obj, C_FormTabularInputCB, 0);
|
||||
fdui->radio_valign_bottom = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 345, 80, 115, 25, idex(_("Bottom|#o")));fl_set_button_shortcut(obj, scex(_("Bottom|#o")), 1);
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_callback(obj, C_FormTabularInputCB, 0);
|
||||
obj = fl_add_text(FL_NORMAL_TEXT, 345, 10, 115, 20, _("V. Alignment"));
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_lalign(obj, FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
|
||||
@ -159,6 +150,15 @@ FD_form_column_options * FormTabular::build_column_options()
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_lalign(obj, FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
|
||||
fl_set_object_lstyle(obj, FL_BOLD_STYLE);
|
||||
fdui->radio_valign_top = obj = fl_add_checkbutton(FL_PUSH_BUTTON, 345, 30, 125, 25, idex(_("Top|#p")));fl_set_button_shortcut(obj, scex(_("Top|#p")), 1);
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_callback(obj, C_FormTabularInputCB, 0);
|
||||
fdui->radio_valign_center = obj = fl_add_checkbutton(FL_PUSH_BUTTON, 345, 55, 125, 25, idex(_("Center|#n")));fl_set_button_shortcut(obj, scex(_("Center|#n")), 1);
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_callback(obj, C_FormTabularInputCB, 0);
|
||||
fdui->radio_valign_bottom = obj = fl_add_checkbutton(FL_PUSH_BUTTON, 345, 80, 120, 25, idex(_("Bottom|#o")));fl_set_button_shortcut(obj, scex(_("Bottom|#o")), 1);
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_callback(obj, C_FormTabularInputCB, 0);
|
||||
fl_end_form();
|
||||
|
||||
fdui->form_column_options->fdui = fdui;
|
||||
@ -175,6 +175,7 @@ FD_form_cell_options * FormTabular::build_cell_options()
|
||||
fdui->form_cell_options = fl_bgn_form(FL_NO_BOX, 505, 227);
|
||||
fdui->form_cell_options->u_vdata = this;
|
||||
obj = fl_add_box(FL_UP_BOX, 0, 0, 505, 227, "");
|
||||
obj = fl_add_frame(FL_ENGRAVED_FRAME, 335, 110, 155, 100, "");
|
||||
obj = fl_add_frame(FL_ENGRAVED_FRAME, 10, 110, 180, 100, "");
|
||||
fl_set_object_color(obj, FL_COL1, FL_COL1);
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
@ -188,8 +189,6 @@ FD_form_cell_options * FormTabular::build_cell_options()
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_lalign(obj, FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
|
||||
fl_set_object_lstyle(obj, FL_BOLD_STYLE);
|
||||
obj = fl_add_frame(FL_ENGRAVED_FRAME, 340, 110, 130, 100, "");
|
||||
fl_set_object_color(obj, FL_COL1, FL_COL1);
|
||||
obj = fl_add_text(FL_NORMAL_TEXT, 345, 100, 115, 20, _("V. Alignment"));
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_lalign(obj, FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
|
||||
@ -205,17 +204,17 @@ FD_form_cell_options * FormTabular::build_cell_options()
|
||||
fl_set_object_callback(obj, C_FormTabularInputCB, 0);
|
||||
fdui->radio_rotate_cell = obj = fl_add_checkbutton(FL_PUSH_BUTTON, 10, 75, 145, 25, _("Rotate 90°"));
|
||||
fl_set_object_callback(obj, C_FormTabularInputCB, 0);
|
||||
obj = fl_add_frame(FL_ENGRAVED_FRAME, 165, 15, 305, 85, "");
|
||||
obj = fl_add_frame(FL_ENGRAVED_FRAME, 165, 15, 325, 85, "");
|
||||
fl_set_object_color(obj, FL_COL1, FL_COL1);
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fdui->input_special_multialign = obj = fl_add_input(FL_NORMAL_INPUT, 175, 30, 280, 30, "");
|
||||
fdui->input_special_multialign = obj = fl_add_input(FL_NORMAL_INPUT, 175, 30, 310, 30, "");
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_callback(obj, C_FormTabularInputCB, 0);
|
||||
obj = fl_add_text(FL_NORMAL_TEXT, 170, 5, 290, 20, _("Special Multicolumn Alignment"));
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_lalign(obj, FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
|
||||
fl_set_object_lstyle(obj, FL_BOLD_STYLE);
|
||||
fdui->input_mcolumn_width = obj = fl_add_input(FL_NORMAL_INPUT, 360, 65, 95, 30, _("Width of multi-column:"));
|
||||
fdui->input_mcolumn_width = obj = fl_add_input(FL_NORMAL_INPUT, 360, 65, 125, 30, _("Width of multi-column:"));
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_callback(obj, C_FormTabularInputCB, 0);
|
||||
fdui->radio_border_top = obj = fl_add_checkbutton(FL_PUSH_BUTTON, 75, 135, 25, 25, idex(_("Top|#t")));fl_set_button_shortcut(obj, scex(_("Top|#t")), 1);
|
||||
@ -237,19 +236,19 @@ FD_form_cell_options * FormTabular::build_cell_options()
|
||||
fdui->radio_align_left = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 195, 120, 110, 25, idex(_("Left|#e")));fl_set_button_shortcut(obj, scex(_("Left|#e")), 1);
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_callback(obj, C_FormTabularInputCB, 0);
|
||||
fdui->radio_align_right = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 195, 145, 115, 25, idex(_("Right|#i")));fl_set_button_shortcut(obj, scex(_("Right|#i")), 1);
|
||||
fdui->radio_align_right = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 195, 170, 115, 25, idex(_("Right|#i")));fl_set_button_shortcut(obj, scex(_("Right|#i")), 1);
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_callback(obj, C_FormTabularInputCB, 0);
|
||||
fdui->radio_align_center = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 195, 170, 115, 25, idex(_("Center|#c")));fl_set_button_shortcut(obj, scex(_("Center|#c")), 1);
|
||||
fdui->radio_align_center = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 195, 145, 115, 25, idex(_("Center|#c")));fl_set_button_shortcut(obj, scex(_("Center|#c")), 1);
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_callback(obj, C_FormTabularInputCB, 0);
|
||||
fdui->radio_valign_top = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 340, 120, 110, 25, idex(_("Top|#p")));fl_set_button_shortcut(obj, scex(_("Top|#p")), 1);
|
||||
fdui->radio_valign_top = obj = fl_add_checkbutton(FL_PUSH_BUTTON, 345, 120, 140, 25, idex(_("Top|#p")));fl_set_button_shortcut(obj, scex(_("Top|#p")), 1);
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_callback(obj, C_FormTabularInputCB, 0);
|
||||
fdui->radio_valign_center = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 340, 145, 115, 25, idex(_("Center|#n")));fl_set_button_shortcut(obj, scex(_("Center|#n")), 1);
|
||||
fdui->radio_valign_center = obj = fl_add_checkbutton(FL_PUSH_BUTTON, 345, 145, 140, 25, idex(_("Center|#n")));fl_set_button_shortcut(obj, scex(_("Center|#n")), 1);
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_callback(obj, C_FormTabularInputCB, 0);
|
||||
fdui->radio_valign_bottom = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 340, 170, 115, 25, idex(_("Bottom|#o")));fl_set_button_shortcut(obj, scex(_("Bottom|#o")), 1);
|
||||
fdui->radio_valign_bottom = obj = fl_add_checkbutton(FL_PUSH_BUTTON, 345, 170, 140, 25, idex(_("Bottom|#o")));fl_set_button_shortcut(obj, scex(_("Bottom|#o")), 1);
|
||||
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
|
||||
fl_set_object_callback(obj, C_FormTabularInputCB, 0);
|
||||
fl_end_form();
|
||||
|
@ -1,4 +1,4 @@
|
||||
/** Header file generated with fdesign on Fri Jul 14 15:53:33 2000.**/
|
||||
/** Header file generated with fdesign on Mon Jul 17 13:48:45 2000.**/
|
||||
|
||||
#ifndef FD_form_tabular_h_
|
||||
#define FD_form_tabular_h_
|
||||
@ -52,10 +52,10 @@ struct FD_form_column_options {
|
||||
FL_OBJECT *radio_align_right;
|
||||
FL_OBJECT *radio_align_center;
|
||||
FL_OBJECT *input_column_width;
|
||||
FL_OBJECT *input_special_alignment;
|
||||
FL_OBJECT *radio_valign_top;
|
||||
FL_OBJECT *radio_valign_center;
|
||||
FL_OBJECT *radio_valign_bottom;
|
||||
FL_OBJECT *input_special_alignment;
|
||||
};
|
||||
struct FD_form_cell_options {
|
||||
|
||||
|
@ -514,7 +514,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_CHECKBUTTON
|
||||
type: RADIO_BUTTON
|
||||
box: 205 55 115 25
|
||||
box: 205 80 115 25
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_YELLOW
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -532,7 +532,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_CHECKBUTTON
|
||||
type: RADIO_BUTTON
|
||||
box: 205 80 115 25
|
||||
box: 205 55 115 25
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_YELLOW
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -583,60 +583,6 @@ name:
|
||||
callback:
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
class: FL_CHECKBUTTON
|
||||
type: RADIO_BUTTON
|
||||
box: 345 30 110 25
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_YELLOW
|
||||
alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Top|#p
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: radio_valign_top
|
||||
callback: C_FormTabularInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
class: FL_CHECKBUTTON
|
||||
type: RADIO_BUTTON
|
||||
box: 345 55 115 25
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_YELLOW
|
||||
alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Center|#n
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: radio_valign_center
|
||||
callback: C_FormTabularInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
class: FL_CHECKBUTTON
|
||||
type: RADIO_BUTTON
|
||||
box: 345 80 115 25
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_YELLOW
|
||||
alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Bottom|#o
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: radio_valign_bottom
|
||||
callback: C_FormTabularInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
class: FL_TEXT
|
||||
type: NORMAL_TEXT
|
||||
@ -709,6 +655,60 @@ name:
|
||||
callback:
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
class: FL_CHECKBUTTON
|
||||
type: PUSH_BUTTON
|
||||
box: 345 30 125 25
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_YELLOW
|
||||
alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Top|#p
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: radio_valign_top
|
||||
callback: C_FormTabularInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
class: FL_CHECKBUTTON
|
||||
type: PUSH_BUTTON
|
||||
box: 345 55 125 25
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_YELLOW
|
||||
alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Center|#n
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: radio_valign_center
|
||||
callback: C_FormTabularInputCB
|
||||
argument: 0
|
||||
|
||||
--------------------
|
||||
class: FL_CHECKBUTTON
|
||||
type: PUSH_BUTTON
|
||||
box: 345 80 120 25
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_YELLOW
|
||||
alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_NORMAL_SIZE
|
||||
lcol: FL_BLACK
|
||||
label: Bottom|#o
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name: radio_valign_bottom
|
||||
callback: C_FormTabularInputCB
|
||||
argument: 0
|
||||
|
||||
=============== FORM ===============
|
||||
Name: form_cell_options
|
||||
Width: 505
|
||||
@ -733,6 +733,24 @@ name:
|
||||
callback:
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
class: FL_FRAME
|
||||
type: ENGRAVED_FRAME
|
||||
box: 335 110 155 100
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_BLACK FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_DEFAULT_SIZE
|
||||
lcol: FL_BLACK
|
||||
label:
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name:
|
||||
callback:
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
class: FL_FRAME
|
||||
type: ENGRAVED_FRAME
|
||||
@ -805,24 +823,6 @@ name:
|
||||
callback:
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
class: FL_FRAME
|
||||
type: ENGRAVED_FRAME
|
||||
box: 340 110 130 100
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
style: FL_NORMAL_STYLE
|
||||
size: FL_DEFAULT_SIZE
|
||||
lcol: FL_BLACK
|
||||
label:
|
||||
shortcut:
|
||||
resize: FL_RESIZE_ALL
|
||||
gravity: FL_NoGravity FL_NoGravity
|
||||
name:
|
||||
callback:
|
||||
argument:
|
||||
|
||||
--------------------
|
||||
class: FL_TEXT
|
||||
type: NORMAL_TEXT
|
||||
@ -934,7 +934,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_FRAME
|
||||
type: ENGRAVED_FRAME
|
||||
box: 165 15 305 85
|
||||
box: 165 15 325 85
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_COL1
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -952,7 +952,7 @@ argument:
|
||||
--------------------
|
||||
class: FL_INPUT
|
||||
type: NORMAL_INPUT
|
||||
box: 175 30 280 30
|
||||
box: 175 30 310 30
|
||||
boxtype: FL_DOWN_BOX
|
||||
colors: FL_COL1 FL_MCOL
|
||||
alignment: FL_ALIGN_LEFT
|
||||
@ -988,7 +988,7 @@ argument:
|
||||
--------------------
|
||||
class: FL_INPUT
|
||||
type: NORMAL_INPUT
|
||||
box: 360 65 95 30
|
||||
box: 360 65 125 30
|
||||
boxtype: FL_DOWN_BOX
|
||||
colors: FL_COL1 FL_MCOL
|
||||
alignment: FL_ALIGN_LEFT
|
||||
@ -1096,7 +1096,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_CHECKBUTTON
|
||||
type: RADIO_BUTTON
|
||||
box: 195 145 115 25
|
||||
box: 195 170 115 25
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_YELLOW
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -1114,7 +1114,7 @@ argument: 0
|
||||
--------------------
|
||||
class: FL_CHECKBUTTON
|
||||
type: RADIO_BUTTON
|
||||
box: 195 170 115 25
|
||||
box: 195 145 115 25
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_YELLOW
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -1131,8 +1131,8 @@ argument: 0
|
||||
|
||||
--------------------
|
||||
class: FL_CHECKBUTTON
|
||||
type: RADIO_BUTTON
|
||||
box: 340 120 110 25
|
||||
type: PUSH_BUTTON
|
||||
box: 345 120 140 25
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_YELLOW
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -1149,8 +1149,8 @@ argument: 0
|
||||
|
||||
--------------------
|
||||
class: FL_CHECKBUTTON
|
||||
type: RADIO_BUTTON
|
||||
box: 340 145 115 25
|
||||
type: PUSH_BUTTON
|
||||
box: 345 145 140 25
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_YELLOW
|
||||
alignment: FL_ALIGN_CENTER
|
||||
@ -1167,8 +1167,8 @@ argument: 0
|
||||
|
||||
--------------------
|
||||
class: FL_CHECKBUTTON
|
||||
type: RADIO_BUTTON
|
||||
box: 340 170 115 25
|
||||
type: PUSH_BUTTON
|
||||
box: 345 170 140 25
|
||||
boxtype: FL_NO_BOX
|
||||
colors: FL_COL1 FL_YELLOW
|
||||
alignment: FL_ALIGN_CENTER
|
||||
|
@ -1038,15 +1038,30 @@ void InsetTabular::TabularFeatures(BufferView * bv, int feature, string val)
|
||||
what;
|
||||
|
||||
switch (feature) {
|
||||
case LyXTabular::M_ALIGN_LEFT:
|
||||
case LyXTabular::ALIGN_LEFT:
|
||||
setAlign=LYX_ALIGN_LEFT;
|
||||
break;
|
||||
case LyXTabular::M_ALIGN_RIGHT:
|
||||
case LyXTabular::ALIGN_RIGHT:
|
||||
setAlign=LYX_ALIGN_RIGHT;
|
||||
break;
|
||||
case LyXTabular::M_ALIGN_CENTER:
|
||||
case LyXTabular::ALIGN_CENTER:
|
||||
setAlign=LYX_ALIGN_CENTER;
|
||||
break;
|
||||
case LyXTabular::M_VALIGN_TOP:
|
||||
case LyXTabular::VALIGN_TOP:
|
||||
setAlign=LyXTabular::LYX_VALIGN_TOP;
|
||||
break;
|
||||
case LyXTabular::M_VALIGN_BOTTOM:
|
||||
case LyXTabular::VALIGN_BOTTOM:
|
||||
setAlign=LyXTabular::LYX_VALIGN_BOTTOM;
|
||||
break;
|
||||
case LyXTabular::M_VALIGN_CENTER:
|
||||
case LyXTabular::VALIGN_CENTER:
|
||||
setAlign=LyXTabular::LYX_VALIGN_CENTER;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1078,16 +1093,30 @@ void InsetTabular::TabularFeatures(BufferView * bv, int feature, string val)
|
||||
|
||||
int row = tabular->row_of_cell(actcell);
|
||||
int column = tabular->column_of_cell(actcell);
|
||||
|
||||
bool flag = true;
|
||||
|
||||
switch (feature) {
|
||||
case LyXTabular::SET_PWIDTH:
|
||||
{
|
||||
bool update = (tabular->GetPWidth(actcell) != val);
|
||||
tabular->SetPWidth(actcell,val);
|
||||
bool update = (tabular->GetColumnPWidth(actcell) != val);
|
||||
tabular->SetColumnPWidth(actcell,val);
|
||||
if (update) {
|
||||
for (int i=0; i < tabular->rows(); ++i) {
|
||||
tabular->GetCellInset(tabular->GetCellNumber(i, column))->
|
||||
deleteLyXText(bv);
|
||||
resizeLyXText(bv);
|
||||
}
|
||||
UpdateLocal(bv, INIT, true);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case LyXTabular::SET_MPWIDTH:
|
||||
{
|
||||
bool update = (tabular->GetPWidth(actcell) != val);
|
||||
tabular->SetMColumnPWidth(actcell,val);
|
||||
if (update) {
|
||||
for (int i=0; i < tabular->rows(); ++i) {
|
||||
tabular->GetCellInset(tabular->GetCellNumber(i, column))->
|
||||
resizeLyXText(bv);
|
||||
}
|
||||
UpdateLocal(bv, INIT, true);
|
||||
}
|
||||
@ -1123,43 +1152,75 @@ void InsetTabular::TabularFeatures(BufferView * bv, int feature, string val)
|
||||
actcell = tabular->GetCellNumber(row, column);
|
||||
UpdateLocal(bv, INIT, true);
|
||||
break;
|
||||
case LyXTabular::M_TOGGLE_LINE_TOP:
|
||||
flag = false;
|
||||
case LyXTabular::TOGGLE_LINE_TOP:
|
||||
lineSet = !tabular->TopLine(actcell);
|
||||
lineSet = !tabular->TopLine(actcell, flag);
|
||||
for(i=sel_row_start; i<=sel_row_end; ++i)
|
||||
for(j=sel_col_start; j<=sel_col_end; ++j)
|
||||
tabular->SetTopLine(tabular->GetCellNumber(i,j),lineSet);
|
||||
tabular->SetTopLine(tabular->GetCellNumber(i,j),lineSet, flag);
|
||||
UpdateLocal(bv, INIT, true);
|
||||
break;
|
||||
|
||||
case LyXTabular::M_TOGGLE_LINE_BOTTOM:
|
||||
flag = false;
|
||||
case LyXTabular::TOGGLE_LINE_BOTTOM:
|
||||
lineSet = !tabular->BottomLine(actcell);
|
||||
lineSet = !tabular->BottomLine(actcell, flag);
|
||||
for(i=sel_row_start; i<=sel_row_end; ++i)
|
||||
for(j=sel_col_start; j<=sel_col_end; ++j)
|
||||
tabular->SetBottomLine(tabular->GetCellNumber(i,j),lineSet);
|
||||
tabular->SetBottomLine(tabular->GetCellNumber(i,j),lineSet,
|
||||
flag);
|
||||
UpdateLocal(bv, INIT, true);
|
||||
break;
|
||||
|
||||
case LyXTabular::M_TOGGLE_LINE_LEFT:
|
||||
flag = false;
|
||||
case LyXTabular::TOGGLE_LINE_LEFT:
|
||||
lineSet = !tabular->LeftLine(actcell);
|
||||
lineSet = !tabular->LeftLine(actcell, flag);
|
||||
for(i=sel_row_start; i<=sel_row_end; ++i)
|
||||
for(j=sel_col_start; j<=sel_col_end; ++j)
|
||||
tabular->SetLeftLine(tabular->GetCellNumber(i,j),lineSet);
|
||||
tabular->SetLeftLine(tabular->GetCellNumber(i,j),lineSet,
|
||||
flag);
|
||||
UpdateLocal(bv, INIT, true);
|
||||
break;
|
||||
|
||||
case LyXTabular::M_TOGGLE_LINE_RIGHT:
|
||||
flag = false;
|
||||
case LyXTabular::TOGGLE_LINE_RIGHT:
|
||||
lineSet = !tabular->RightLine(actcell);
|
||||
lineSet = !tabular->RightLine(actcell, flag);
|
||||
for(i=sel_row_start; i<=sel_row_end; ++i)
|
||||
for(j=sel_col_start; j<=sel_col_end; ++j)
|
||||
tabular->SetRightLine(tabular->GetCellNumber(i,j),lineSet);
|
||||
tabular->SetRightLine(tabular->GetCellNumber(i,j),lineSet,
|
||||
flag);
|
||||
UpdateLocal(bv, INIT, true);
|
||||
break;
|
||||
case LyXTabular::M_ALIGN_LEFT:
|
||||
case LyXTabular::M_ALIGN_RIGHT:
|
||||
case LyXTabular::M_ALIGN_CENTER:
|
||||
flag = false;
|
||||
case LyXTabular::ALIGN_LEFT:
|
||||
case LyXTabular::ALIGN_RIGHT:
|
||||
case LyXTabular::ALIGN_CENTER:
|
||||
for(i=sel_row_start; i<=sel_row_end; ++i)
|
||||
for(j=sel_col_start; j<=sel_col_end; ++j)
|
||||
tabular->SetAlignment(tabular->GetCellNumber(i,j),setAlign);
|
||||
tabular->SetAlignment(tabular->GetCellNumber(i,j),setAlign,
|
||||
flag);
|
||||
if (hasSelection())
|
||||
UpdateLocal(bv, INIT, true);
|
||||
else
|
||||
UpdateLocal(bv, CELL, true);
|
||||
break;
|
||||
case LyXTabular::M_VALIGN_TOP:
|
||||
case LyXTabular::M_VALIGN_BOTTOM:
|
||||
case LyXTabular::M_VALIGN_CENTER:
|
||||
flag = false;
|
||||
case LyXTabular::VALIGN_TOP:
|
||||
case LyXTabular::VALIGN_BOTTOM:
|
||||
case LyXTabular::VALIGN_CENTER:
|
||||
for(i=sel_row_start; i<=sel_row_end; ++i)
|
||||
for(j=sel_col_start; j<=sel_col_end; ++j)
|
||||
tabular->SetVAlignment(tabular->GetCellNumber(i,j), setAlign,
|
||||
flag);
|
||||
if (hasSelection())
|
||||
UpdateLocal(bv, INIT, true);
|
||||
else
|
||||
|
269
src/tabular.C
269
src/tabular.C
@ -187,10 +187,10 @@ void LyXTabular::Init(int rows_arg, int columns_arg)
|
||||
set_row_column_number_info();
|
||||
is_long_tabular = false;
|
||||
rotate = 0;
|
||||
endhead = -1;
|
||||
endfirsthead = -1;
|
||||
endfoot = -1;
|
||||
endlastfoot = -1;
|
||||
endhead = 0;
|
||||
endfirsthead = 0;
|
||||
endfoot = 0;
|
||||
endlastfoot = 0;
|
||||
}
|
||||
|
||||
|
||||
@ -380,36 +380,40 @@ int LyXTabular::NumberOfCellsInRow(int cell) const
|
||||
|
||||
|
||||
/* returns 1 if there is a topline, returns 0 if not */
|
||||
bool LyXTabular::TopLine(int cell) const
|
||||
bool LyXTabular::TopLine(int cell, bool onlycolumn) const
|
||||
{
|
||||
int row = row_of_cell(cell);
|
||||
|
||||
if (IsMultiColumn(cell))
|
||||
if (!onlycolumn && IsMultiColumn(cell))
|
||||
return cellinfo_of_cell(cell)->top_line;
|
||||
return row_info[row].top_line;
|
||||
}
|
||||
|
||||
|
||||
bool LyXTabular::BottomLine(int cell) const
|
||||
bool LyXTabular::BottomLine(int cell, bool onlycolumn) const
|
||||
{
|
||||
//no bottom line underneath non-existent cells if you please
|
||||
if(cell >= numberofcells)
|
||||
return false;
|
||||
|
||||
if (IsMultiColumn(cell))
|
||||
if (!onlycolumn && IsMultiColumn(cell))
|
||||
return cellinfo_of_cell(cell)->bottom_line;
|
||||
return row_info[row_of_cell(cell)].bottom_line;
|
||||
}
|
||||
|
||||
|
||||
bool LyXTabular::LeftLine(int cell) const
|
||||
bool LyXTabular::LeftLine(int cell, bool onlycolumn) const
|
||||
{
|
||||
if (!onlycolumn && IsMultiColumn(cell))
|
||||
return cellinfo_of_cell(cell)->left_line;
|
||||
return column_info[column_of_cell(cell)].left_line;
|
||||
}
|
||||
|
||||
|
||||
bool LyXTabular::RightLine(int cell) const
|
||||
bool LyXTabular::RightLine(int cell, bool onlycolumn) const
|
||||
{
|
||||
if (!onlycolumn && IsMultiColumn(cell))
|
||||
return cellinfo_of_cell(cell)->right_line;
|
||||
return column_info[right_column_of_cell(cell)].right_line;
|
||||
}
|
||||
|
||||
@ -604,38 +608,57 @@ bool LyXTabular::SetWidthOfCell(int cell, int new_width)
|
||||
}
|
||||
|
||||
|
||||
bool LyXTabular::SetAlignment(int cell, char align)
|
||||
bool LyXTabular::SetAlignment(int cell, char align, bool onlycolumn)
|
||||
{
|
||||
if (!IsMultiColumn(cell))
|
||||
if (!IsMultiColumn(cell) || onlycolumn)
|
||||
column_info[column_of_cell(cell)].alignment = align;
|
||||
cellinfo_of_cell(cell)->alignment = align;
|
||||
if (!onlycolumn)
|
||||
cellinfo_of_cell(cell)->alignment = align;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool LyXTabular::SetPWidth(int cell, string const & width)
|
||||
bool LyXTabular::SetVAlignment(int cell, char align, bool onlycolumn)
|
||||
{
|
||||
if (!IsMultiColumn(cell) || onlycolumn)
|
||||
column_info[column_of_cell(cell)].valignment = align;
|
||||
if (!onlycolumn)
|
||||
cellinfo_of_cell(cell)->valignment = align;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool LyXTabular::SetColumnPWidth(int cell, string const & width)
|
||||
{
|
||||
bool flag = !width.empty();
|
||||
|
||||
if (IsMultiColumn(cell)) {
|
||||
cellinfo_of_cell(cell)->p_width = width;
|
||||
GetCellInset(cell)->SetAutoBreakRows(flag);
|
||||
} else {
|
||||
int j = column_of_cell(cell);
|
||||
int c;
|
||||
column_info[j].p_width = width;
|
||||
if (flag) // do this only if there is a width
|
||||
SetAlignment(cell, LYX_ALIGN_LEFT);
|
||||
for(int i=0; i < rows_; ++i) {
|
||||
c = GetCellNumber(i, j);
|
||||
flag = !GetPWidth(c).empty(); // because of multicolumns!
|
||||
GetCellInset(c)->SetAutoBreakRows(flag);
|
||||
}
|
||||
int j = column_of_cell(cell);
|
||||
int c;
|
||||
column_info[j].p_width = width;
|
||||
if (flag) // do this only if there is a width
|
||||
SetAlignment(cell, LYX_ALIGN_LEFT);
|
||||
for(int i=0; i < rows_; ++i) {
|
||||
c = GetCellNumber(i, j);
|
||||
flag = !GetPWidth(c).empty(); // because of multicolumns!
|
||||
GetCellInset(c)->SetAutoBreakRows(flag);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool LyXTabular::SetMColumnPWidth(int cell, string const & width)
|
||||
{
|
||||
bool flag = !width.empty();
|
||||
|
||||
cellinfo_of_cell(cell)->p_width = width;
|
||||
if (IsMultiColumn(cell)) {
|
||||
GetCellInset(cell)->SetAutoBreakRows(flag);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool LyXTabular::SetAlignSpecial(int cell, string const & special, int what)
|
||||
{
|
||||
if (what == SET_SPECIAL_MULTI)
|
||||
@ -656,11 +679,11 @@ bool LyXTabular::SetAllLines(int cell, bool line)
|
||||
}
|
||||
|
||||
|
||||
bool LyXTabular::SetTopLine(int cell, bool line)
|
||||
bool LyXTabular::SetTopLine(int cell, bool line, bool onlycolumn)
|
||||
{
|
||||
int row = row_of_cell(cell);
|
||||
|
||||
if (!IsMultiColumn(cell))
|
||||
if (onlycolumn || !IsMultiColumn(cell))
|
||||
row_info[row].top_line = line;
|
||||
else
|
||||
cellinfo_of_cell(cell)->top_line = line;
|
||||
@ -668,9 +691,9 @@ bool LyXTabular::SetTopLine(int cell, bool line)
|
||||
}
|
||||
|
||||
|
||||
bool LyXTabular::SetBottomLine(int cell, bool line)
|
||||
bool LyXTabular::SetBottomLine(int cell, bool line, bool onlycolumn)
|
||||
{
|
||||
if (!IsMultiColumn(cell))
|
||||
if (onlycolumn || !IsMultiColumn(cell))
|
||||
row_info[row_of_cell(cell)].bottom_line = line;
|
||||
else
|
||||
cellinfo_of_cell(cell)->bottom_line = line;
|
||||
@ -678,29 +701,44 @@ bool LyXTabular::SetBottomLine(int cell, bool line)
|
||||
}
|
||||
|
||||
|
||||
bool LyXTabular::SetLeftLine(int cell, bool line)
|
||||
bool LyXTabular::SetLeftLine(int cell, bool line, bool onlycolumn)
|
||||
{
|
||||
column_info[column_of_cell(cell)].left_line = line;
|
||||
if (onlycolumn || !IsMultiColumn(cell))
|
||||
column_info[column_of_cell(cell)].left_line = line;
|
||||
else
|
||||
cellinfo_of_cell(cell)->left_line = line;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool LyXTabular::SetRightLine(int cell, bool line)
|
||||
bool LyXTabular::SetRightLine(int cell, bool line, bool onlycolumn)
|
||||
{
|
||||
column_info[right_column_of_cell(cell)].right_line = line;
|
||||
if (onlycolumn || !IsMultiColumn(cell))
|
||||
column_info[right_column_of_cell(cell)].right_line = line;
|
||||
else
|
||||
cellinfo_of_cell(cell)->right_line = line;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
char LyXTabular::GetAlignment(int cell) const
|
||||
char LyXTabular::GetAlignment(int cell, bool onlycolumn) const
|
||||
{
|
||||
if (IsMultiColumn(cell))
|
||||
if (!onlycolumn && IsMultiColumn(cell))
|
||||
return cellinfo_of_cell(cell)->alignment;
|
||||
else
|
||||
return column_info[column_of_cell(cell)].alignment;
|
||||
}
|
||||
|
||||
|
||||
char LyXTabular::GetVAlignment(int cell, bool onlycolumn) const
|
||||
{
|
||||
if (!onlycolumn && IsMultiColumn(cell))
|
||||
return cellinfo_of_cell(cell)->valignment;
|
||||
else
|
||||
return column_info[column_of_cell(cell)].valignment;
|
||||
}
|
||||
|
||||
|
||||
string LyXTabular::GetPWidth(int cell) const
|
||||
{
|
||||
if (IsMultiColumn(cell))
|
||||
@ -709,6 +747,20 @@ string LyXTabular::GetPWidth(int cell) const
|
||||
}
|
||||
|
||||
|
||||
string LyXTabular::GetColumnPWidth(int cell) const
|
||||
{
|
||||
return column_info[column_of_cell(cell)].p_width;
|
||||
}
|
||||
|
||||
|
||||
string LyXTabular::GetMColumnPWidth(int cell) const
|
||||
{
|
||||
if (IsMultiColumn(cell))
|
||||
return cellinfo_of_cell(cell)->p_width;
|
||||
return string();
|
||||
}
|
||||
|
||||
|
||||
string LyXTabular::GetAlignSpecial(int cell, int what) const
|
||||
{
|
||||
if (what == SET_SPECIAL_MULTI)
|
||||
@ -871,6 +923,7 @@ void LyXTabular::Write(Buffer const * buf, ostream & os) const
|
||||
for (j = 0; j < columns_; ++j) {
|
||||
if (!i) {
|
||||
os << "<Column alignment=" << column_info[j].alignment <<
|
||||
" valignment=" << column_info[j].valignment <<
|
||||
" leftline=" << column_info[j].left_line <<
|
||||
" rightline=" << column_info[j].right_line <<
|
||||
" width=\"" << VSpace(column_info[j].p_width).asLyXCommand() <<
|
||||
@ -881,8 +934,11 @@ void LyXTabular::Write(Buffer const * buf, ostream & os) const
|
||||
}
|
||||
os << "<Cell multicolumn=" << cell_info[i][j].multicolumn <<
|
||||
" alignment=" << cell_info[i][j].alignment <<
|
||||
" valignment=" << cell_info[i][j].valignment <<
|
||||
" topline=" << cell_info[i][j].top_line <<
|
||||
" bottomline=" << cell_info[i][j].bottom_line <<
|
||||
" leftline=" << cell_info[i][j].left_line <<
|
||||
" rightline=" << cell_info[i][j].right_line <<
|
||||
" rotate=" << cell_info[i][j].rotate <<
|
||||
" linebreaks=" << cell_info[i][j].linebreaks <<
|
||||
" width=\"" << cell_info[i][j].p_width <<
|
||||
@ -1034,6 +1090,7 @@ void LyXTabular::Read(Buffer const * buf, LyXLex & lex)
|
||||
}
|
||||
if (!i) {
|
||||
(void)getTokenValue(line, "alignment", column_info[j].alignment);
|
||||
(void)getTokenValue(line, "valignment", column_info[j].valignment);
|
||||
(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);
|
||||
@ -1047,8 +1104,11 @@ void LyXTabular::Read(Buffer const * buf, LyXLex & lex)
|
||||
}
|
||||
(void)getTokenValue(line, "multicolumn", cell_info[i][j].multicolumn);
|
||||
(void)getTokenValue(line, "alignment", cell_info[i][j].alignment);
|
||||
(void)getTokenValue(line, "valignment", cell_info[i][j].valignment);
|
||||
(void)getTokenValue(line, "topline", cell_info[i][j].top_line);
|
||||
(void)getTokenValue(line, "bottomline", cell_info[i][j].bottom_line);
|
||||
(void)getTokenValue(line, "leftline", cell_info[i][j].left_line);
|
||||
(void)getTokenValue(line, "rightline", cell_info[i][j].right_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);
|
||||
@ -1636,67 +1696,73 @@ bool LyXTabular::GetLinebreaks(int cell) const
|
||||
void LyXTabular::SetLTHead(int cell, bool first)
|
||||
{
|
||||
int row = row_of_cell(cell);
|
||||
int val = (row+1) * (column_of_cell(cell)? 1:-1);
|
||||
|
||||
if (first) {
|
||||
if (row == endfirsthead)
|
||||
endfirsthead = -1;
|
||||
if (endfirsthead == val)
|
||||
endfirsthead = 0;
|
||||
else
|
||||
endfirsthead = row;
|
||||
endfirsthead = val;
|
||||
} else {
|
||||
if (row == endhead)
|
||||
endhead = -1;
|
||||
if (endhead == val)
|
||||
endhead = 0;
|
||||
else
|
||||
endhead = row;
|
||||
endhead = val;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool LyXTabular::GetRowOfLTHead(int cell) const
|
||||
bool LyXTabular::GetRowOfLTHead(int cell, int & row) const
|
||||
{
|
||||
if ((endhead+1) > rows_)
|
||||
row = endhead;
|
||||
if (abs(endhead) > rows_)
|
||||
return false;
|
||||
return (row_of_cell(cell) == endhead);
|
||||
return (row_of_cell(cell) == (abs(endhead)-1));
|
||||
}
|
||||
|
||||
|
||||
bool LyXTabular::GetRowOfLTFirstHead(int cell) const
|
||||
bool LyXTabular::GetRowOfLTFirstHead(int cell, int & row) const
|
||||
{
|
||||
if ((endfirsthead+1) > rows_)
|
||||
row = endfirsthead;
|
||||
if (abs(endfirsthead) > rows_)
|
||||
return false;
|
||||
return (row_of_cell(cell) == endfirsthead);
|
||||
return (row_of_cell(cell) == (abs(endfirsthead)-1));
|
||||
}
|
||||
|
||||
|
||||
void LyXTabular::SetLTFoot(int cell, bool last)
|
||||
{
|
||||
int row = row_of_cell(cell);
|
||||
int val = (row + 1) * (column_of_cell(cell)? 1:-1);
|
||||
|
||||
if (last) {
|
||||
if (row == endlastfoot)
|
||||
endlastfoot = -1;
|
||||
if (endlastfoot == val)
|
||||
endlastfoot = 0;
|
||||
else
|
||||
endlastfoot = row;
|
||||
endlastfoot = val;
|
||||
} else {
|
||||
if (row == endfoot)
|
||||
endfoot = -1;
|
||||
if (endfoot == val)
|
||||
endfoot = 0;
|
||||
else
|
||||
endfoot = row;
|
||||
endfoot = val;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool LyXTabular::GetRowOfLTFoot(int cell) const
|
||||
bool LyXTabular::GetRowOfLTFoot(int cell, int & row) const
|
||||
{
|
||||
row = endfoot;
|
||||
if ((endfoot+1) > rows_)
|
||||
return false;
|
||||
return (row_of_cell(cell) == endfoot);
|
||||
return (row_of_cell(cell) == (abs(endfoot)-1));
|
||||
}
|
||||
|
||||
bool LyXTabular::GetRowOfLTLastFoot(int cell) const
|
||||
bool LyXTabular::GetRowOfLTLastFoot(int cell, int & row) const
|
||||
{
|
||||
if ((endlastfoot+1) > rows_)
|
||||
row = endlastfoot;
|
||||
if (abs(endlastfoot) > rows_)
|
||||
return false;
|
||||
return (row_of_cell(cell) == endlastfoot);
|
||||
return (row_of_cell(cell) == (abs(endlastfoot)-1));
|
||||
}
|
||||
|
||||
|
||||
@ -1845,7 +1911,18 @@ int LyXTabular::TeXCellPreamble(ostream & os, int cell) const
|
||||
if (LeftLine(cell))
|
||||
os << '|';
|
||||
if (!GetPWidth(cell).empty()) {
|
||||
os << "p{" << GetPWidth(cell) << '}';
|
||||
switch(GetVAlignment(cell)) {
|
||||
case LYX_VALIGN_TOP:
|
||||
os << "p";
|
||||
break;
|
||||
case LYX_VALIGN_CENTER:
|
||||
os << "m";
|
||||
break;
|
||||
case LYX_VALIGN_BOTTOM:
|
||||
os << "b";
|
||||
break;
|
||||
}
|
||||
os << "{" << GetPWidth(cell) << '}';
|
||||
} else {
|
||||
switch (GetAlignment(cell)) {
|
||||
case LYX_ALIGN_LEFT:
|
||||
@ -1868,7 +1945,19 @@ int LyXTabular::TeXCellPreamble(ostream & os, int cell) const
|
||||
}
|
||||
}
|
||||
if (GetLinebreaks(cell)) {
|
||||
os << "\\parbox[t]{" << GetPWidth(cell) << "}{\\smallskip{}";
|
||||
os << "\\parbox[";
|
||||
switch(GetVAlignment(cell)) {
|
||||
case LYX_VALIGN_TOP:
|
||||
os << "t";
|
||||
break;
|
||||
case LYX_VALIGN_CENTER:
|
||||
os << "c";
|
||||
break;
|
||||
case LYX_VALIGN_BOTTOM:
|
||||
os << "b";
|
||||
break;
|
||||
}
|
||||
os << "]{" << GetPWidth(cell) << "}{\\smallskip{}";
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -1916,7 +2005,18 @@ int LyXTabular::Latex(Buffer const * buf, ostream & os, bool fragile, bool fp) c
|
||||
if (!column_info[i].align_special.empty()) {
|
||||
os << column_info[i].align_special;
|
||||
} else if (!column_info[i].p_width.empty()) {
|
||||
os << "p{"
|
||||
switch(column_info[i].valignment) {
|
||||
case LYX_VALIGN_TOP:
|
||||
os << "p";
|
||||
break;
|
||||
case LYX_VALIGN_CENTER:
|
||||
os << "m";
|
||||
break;
|
||||
case LYX_VALIGN_BOTTOM:
|
||||
os << "b";
|
||||
break;
|
||||
}
|
||||
os << "{"
|
||||
<< column_info[i].p_width
|
||||
<< '}';
|
||||
} else {
|
||||
@ -1942,8 +2042,33 @@ int LyXTabular::Latex(Buffer const * buf, ostream & os, bool fragile, bool fp) c
|
||||
//+ the single row and columns (cells) +
|
||||
//+---------------------------------------------------------------------
|
||||
|
||||
int bret;
|
||||
for(i=0; i < rows_; ++i) {
|
||||
ret += TeXTopHLine(os, i);
|
||||
bret = ret;
|
||||
if (IsLongTabular()) {
|
||||
if ((endhead < 0) && (i == (abs(endhead)-1))) {
|
||||
os << "\\endhead\n";
|
||||
++ret;
|
||||
}
|
||||
if ((endfirsthead < 0) && (i == (abs(endfirsthead)-1))) {
|
||||
os << "\\endfirsthead\n";
|
||||
++ret;
|
||||
}
|
||||
if ((endfoot < 0) && (i == (abs(endfoot)-1))) {
|
||||
os << "\\endfoot\n";
|
||||
++ret;
|
||||
}
|
||||
if ((endlastfoot < 0) && (i == (abs(endlastfoot)-1))) {
|
||||
os << "\\endlastfoot\n";
|
||||
++ret;
|
||||
}
|
||||
}
|
||||
if (ret > bret) {
|
||||
if (i > 0)
|
||||
ret += TeXBottomHLine(os, i-1);
|
||||
ret += TeXTopHLine(os, i);
|
||||
}
|
||||
for(j=0; j < columns_; ++j) {
|
||||
if (IsPartOfMultiColumn(i,j))
|
||||
continue;
|
||||
@ -1958,23 +2083,26 @@ int LyXTabular::Latex(Buffer const * buf, ostream & os, bool fragile, bool fp) c
|
||||
}
|
||||
os << "\\\\" << endl;
|
||||
ret += TeXBottomHLine(os, i);
|
||||
bret = ret;
|
||||
if (IsLongTabular()) {
|
||||
if (i == endhead) {
|
||||
if ((endhead > 0) && (i == (endhead-1))) {
|
||||
os << "\\endhead\n";
|
||||
++ret;
|
||||
}
|
||||
if (i == endfirsthead) {
|
||||
if ((endfirsthead > 0) && (i == (endfirsthead-1))) {
|
||||
os << "\\endfirsthead\n";
|
||||
++ret;
|
||||
}
|
||||
if (i == endfoot) {
|
||||
if ((endfoot > 0) && (i == (endfoot-1))) {
|
||||
os << "\\endfoot\n";
|
||||
++ret;
|
||||
}
|
||||
if (i == endlastfoot) {
|
||||
if ((endlastfoot > 0) && (i == (endlastfoot-1))) {
|
||||
os << "\\endlastfoot\n";
|
||||
++ret;
|
||||
}
|
||||
if (ret > bret)
|
||||
ret += TeXBottomHLine(os, i);
|
||||
if (row_info[i].newpage) {
|
||||
os << "\\newpage\n";
|
||||
++ret;
|
||||
@ -2010,6 +2138,9 @@ void LyXTabular::Validate(LaTeXFeatures & features) const
|
||||
features.longtable = true;
|
||||
if (NeedRotating())
|
||||
features.rotating = true;
|
||||
for(int cell = 0; cell < numberofcells; ++cell)
|
||||
for(int cell = 0; cell < numberofcells; ++cell) {
|
||||
if (GetVAlignment(cell) != LYX_VALIGN_TOP)
|
||||
features.array = true;
|
||||
GetCellInset(cell)->Validate(features);
|
||||
}
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ class Buffer;
|
||||
///
|
||||
class LyXTabular {
|
||||
public:
|
||||
// Are the values of these enums important? (Lgb)
|
||||
|
||||
enum {
|
||||
APPEND_ROW = 0,
|
||||
APPEND_COLUMN,
|
||||
@ -40,9 +40,22 @@ public:
|
||||
TOGGLE_LINE_BOTTOM,
|
||||
TOGGLE_LINE_LEFT,
|
||||
TOGGLE_LINE_RIGHT,
|
||||
ALIGN_LEFT, // what are these alignment enums used for?
|
||||
ALIGN_LEFT,
|
||||
ALIGN_RIGHT,
|
||||
ALIGN_CENTER,
|
||||
VALIGN_TOP,
|
||||
VALIGN_BOTTOM,
|
||||
VALIGN_CENTER,
|
||||
M_TOGGLE_LINE_TOP,
|
||||
M_TOGGLE_LINE_BOTTOM,
|
||||
M_TOGGLE_LINE_LEFT,
|
||||
M_TOGGLE_LINE_RIGHT,
|
||||
M_ALIGN_LEFT,
|
||||
M_ALIGN_RIGHT,
|
||||
M_ALIGN_CENTER,
|
||||
M_VALIGN_TOP,
|
||||
M_VALIGN_BOTTOM,
|
||||
M_VALIGN_CENTER,
|
||||
DELETE_TABULAR,
|
||||
MULTICOLUMN,
|
||||
SET_ALL_LINES,
|
||||
@ -50,6 +63,7 @@ public:
|
||||
SET_LONGTABULAR,
|
||||
UNSET_LONGTABULAR,
|
||||
SET_PWIDTH,
|
||||
SET_MPWIDTH,
|
||||
SET_ROTATE_TABULAR,
|
||||
UNSET_ROTATE_TABULAR,
|
||||
SET_ROTATE_CELL,
|
||||
@ -69,6 +83,17 @@ public:
|
||||
CELL_BEGIN_OF_MULTICOLUMN,
|
||||
CELL_PART_OF_MULTICOLUMN
|
||||
};
|
||||
|
||||
///
|
||||
enum VAlignment {
|
||||
///
|
||||
LYX_VALIGN_TOP = 0,
|
||||
///
|
||||
LYX_VALIGN_BOTTOM = 1,
|
||||
///
|
||||
LYX_VALIGN_CENTER = 2
|
||||
};
|
||||
|
||||
/* konstruktor */
|
||||
///
|
||||
LyXTabular(InsetTabular *, int columns_arg, int rows_arg);
|
||||
@ -86,13 +111,13 @@ public:
|
||||
LyXTabular * Clone(InsetTabular *);
|
||||
|
||||
/// Returns true if there is a topline, returns false if not
|
||||
bool TopLine(int cell) const;
|
||||
bool TopLine(int cell, bool onlycolumn=false) const;
|
||||
/// Returns true if there is a topline, returns false if not
|
||||
bool BottomLine(int cell) const;
|
||||
bool BottomLine(int cell, bool onlycolumn=false) const;
|
||||
/// Returns true if there is a topline, returns false if not
|
||||
bool LeftLine(int cell) const;
|
||||
bool LeftLine(int cell, bool onlycolumn=false) const;
|
||||
/// Returns true if there is a topline, returns false if not
|
||||
bool RightLine(int cell) const;
|
||||
bool RightLine(int cell, bool onlycolumn=false) const;
|
||||
|
||||
///
|
||||
bool TopAlreadyDrawed(int cell) const;
|
||||
@ -126,24 +151,34 @@ public:
|
||||
/// Returns true if a complete update is necessary, otherwise false
|
||||
bool SetAllLines(int cell, bool line);
|
||||
/// Returns true if a complete update is necessary, otherwise false
|
||||
bool SetTopLine(int cell, bool line);
|
||||
bool SetTopLine(int cell, bool line, bool onlycolumn=false);
|
||||
/// Returns true if a complete update is necessary, otherwise false
|
||||
bool SetBottomLine(int cell, bool line);
|
||||
bool SetBottomLine(int cell, bool line, bool onlycolumn=false);
|
||||
/// Returns true if a complete update is necessary, otherwise false
|
||||
bool SetLeftLine(int cell, bool line);
|
||||
bool SetLeftLine(int cell, bool line, bool onlycolumn=false);
|
||||
/// Returns true if a complete update is necessary, otherwise false
|
||||
bool SetRightLine(int cell, bool line);
|
||||
bool SetRightLine(int cell, bool line, bool onlycolumn=false);
|
||||
/// Returns true if a complete update is necessary, otherwise false
|
||||
bool SetAlignment(int cell, char align);
|
||||
bool SetAlignment(int cell, char align, bool onlycolumn = false);
|
||||
/// Returns true if a complete update is necessary, otherwise false
|
||||
bool SetVAlignment(int cell, char align, bool onlycolumn = false);
|
||||
///
|
||||
bool SetPWidth(int cell, string const & width);
|
||||
bool SetColumnPWidth(int cell, string const & width);
|
||||
///
|
||||
bool SetMColumnPWidth(int cell, string const & width);
|
||||
///
|
||||
bool SetAlignSpecial(int cell, string const & special, int what);
|
||||
///
|
||||
char GetAlignment(int cell) const; // add approp. signedness
|
||||
char GetAlignment(int cell, bool onlycolumn = false) const;
|
||||
///
|
||||
char GetVAlignment(int cell, bool onlycolumn = false) const;
|
||||
///
|
||||
string GetPWidth(int cell) const;
|
||||
///
|
||||
string GetColumnPWidth(int cell) const;
|
||||
///
|
||||
string GetMColumnPWidth(int cell) const;
|
||||
///
|
||||
string GetAlignSpecial(int cell, int what) const;
|
||||
///
|
||||
int GetWidthOfCell(int cell) const;
|
||||
@ -242,15 +277,15 @@ public:
|
||||
///
|
||||
void SetLTHead(int cell, bool first);
|
||||
///
|
||||
bool GetRowOfLTHead(int cell) const;
|
||||
bool GetRowOfLTHead(int cell, int & row) const;
|
||||
///
|
||||
bool GetRowOfLTFirstHead(int cell) const;
|
||||
bool GetRowOfLTFirstHead(int cell, int & row) const;
|
||||
///
|
||||
void SetLTFoot(int cell, bool last);
|
||||
///
|
||||
bool GetRowOfLTFoot(int cell) const;
|
||||
bool GetRowOfLTFoot(int cell, int & row) const;
|
||||
///
|
||||
bool GetRowOfLTLastFoot(int cell) const;
|
||||
bool GetRowOfLTLastFoot(int cell, int & row) const;
|
||||
///
|
||||
void SetLTNewPage(int cell, bool what);
|
||||
///
|
||||
@ -284,9 +319,11 @@ private: //////////////////////////////////////////////////////////////////
|
||||
///
|
||||
int width_of_cell;
|
||||
///
|
||||
int multicolumn; // add approp. signedness
|
||||
int multicolumn;
|
||||
///
|
||||
int alignment; // add approp. signedness
|
||||
int alignment;
|
||||
///
|
||||
int valignment;
|
||||
///
|
||||
bool top_line;
|
||||
///
|
||||
@ -336,7 +373,8 @@ private: //////////////////////////////////////////////////////////////////
|
||||
///
|
||||
//columnstruct & operator=(columnstruct const &);
|
||||
///
|
||||
int alignment; // add approp. signedness
|
||||
int alignment;
|
||||
int valignment;
|
||||
bool left_line;
|
||||
bool right_line;
|
||||
int width_of_column;
|
||||
|
Loading…
Reference in New Issue
Block a user