+2001-10-19 Jürgen Spitzmüller <j.spitzmueller@gmx.de>
+
+ * forms/form_document.fd:
+ Class: add a value choice for Default Skip.
+ Some rearrangements (minor tweaks).
+ * FormDocument.C: Handle that choice, minor tweaks.
+ * forms/form_paragraph.fd: Add value choices
+ * FormParagraph.C: Handle that choices.
+ * FormMinipage.C/FormGraphics.C: Small tweaks.
+
2001-10-15 Angus Leeming <a.leeming@ic.ac.uk>
* FormDocument.C: fixed some bugs in the Paper tab.
"default|empty|plain|headings|fancy");
fl_addto_choice(class_->choice_doc_skip,
_(" Smallskip | Medskip | Bigskip | Length "));
+ fl_addto_choice(class_->choice_default_skip_units, units.c_str());
fl_set_input_return(class_->input_doc_extra, FL_RETURN_CHANGED);
fl_set_input_return(class_->input_doc_skip, FL_RETURN_CHANGED);
fl_set_input_return(class_->input_doc_spacing, FL_RETURN_CHANGED);
+ // Set input filters on doc skip to make it accept only
+ // unsigned numbers.
+ fl_set_input_filter(class_->input_doc_skip,
+ fl_unsigned_float_filter);
+
bc().addReadOnly (class_->radio_doc_indent);
bc().addReadOnly (class_->radio_doc_skip);
break;
}
+ bool const length_input = fl_get_choice(class_->choice_doc_skip) == 4;
+ if (ob == class_->choice_doc_skip) {
+ setEnabled(class_->input_doc_skip, length_input);
+ setEnabled(class_->choice_default_skip_units, length_input);
+ }
+
+ if (ob == class_->choice_doc_spacing)
+ setEnabled(class_->input_doc_spacing,
+ fl_get_choice(class_->choice_doc_spacing) == 4);
+
+ bool const skip_used = fl_get_button(class_->radio_doc_skip);
+ if (ob == class_->radio_doc_skip ||
+ ob == class_->radio_doc_indent) {
+ setEnabled(class_->choice_doc_skip, skip_used);
+ setEnabled(class_->input_doc_skip, skip_used);
+ setEnabled(class_->choice_default_skip_units, skip_used);
+ // Default unit choice is cm if metric, inches if US paper.
+ int const paperchoice = fl_get_choice(paper_->choice_papersize);
+ bool const metric = paperchoice < 3 || paperchoice > 5;
+ int const default_unit = metric ? 8 : 9;
+ if (strip(fl_get_input(class_->input_doc_skip)).empty())
+ fl_set_choice(class_->choice_default_skip_units,
+ default_unit);
+ }
+
if (ob == options_->check_use_natbib) {
setEnabled(options_->choice_citation_format,
fl_get_button(options_->check_use_natbib));
params.setDefSkip(VSpace(VSpace::BIGSKIP));
break;
case 4:
- params.setDefSkip
- (VSpace(LyXGlueLength(fl_get_input(class_->input_doc_skip))));
+ {
+ string const length =
+ getLengthFromWidgets(class_->input_doc_skip,
+ class_->choice_default_skip_units);
+
+ params.setDefSkip(VSpace(LyXGlueLength(length)));
break;
- // DocumentDefskipCB assures that this never happens
+ }
default:
+ // DocumentDefskipCB assures that this never happens
params.setDefSkip(VSpace(VSpace::MEDSKIP));
break;
}
fl_set_button(class_->radio_doc_indent, 1);
else
fl_set_button(class_->radio_doc_skip, 1);
+
+ bool const input_length = fl_get_choice(class_->choice_doc_skip) == 4;
+ setEnabled(class_->choice_default_skip_units, input_length);
+ setEnabled(class_->input_doc_skip, input_length);
+
switch (params.getDefSkip().kind()) {
case VSpace::SMALLSKIP:
fl_set_choice (class_->choice_doc_skip, 1);
case VSpace::BIGSKIP:
fl_set_choice (class_->choice_doc_skip, 3);
break;
- case VSpace::LENGTH:
- fl_set_choice (class_->choice_doc_skip, 4);
- fl_set_input (class_->input_doc_skip,
- params.getDefSkip().asLyXCommand().c_str());
+ case VSpace::LENGTH:
+ {
+ int const paperchoice = params.papersize2 + 1;
+ bool const metric = paperchoice < 3 || paperchoice > 5;
+ string const default_unit = metric ? "cm" : "in";
+ string const length = params.getDefSkip().asLyXCommand();
+ updateWidgetsFromLengthString(class_->input_doc_skip,
+ class_->choice_default_skip_units,
+ length, default_unit);
break;
+ }
default:
fl_set_choice (class_->choice_doc_skip, 2);
break;
}
fl_set_button(class_->radio_doc_sides_one, 0);
fl_set_button(class_->radio_doc_sides_two, 0);
+ setEnabled(class_->choice_doc_skip,
+ fl_get_button(class_->radio_doc_skip));
+
if (params.sides == LyXTextClass::TwoSides)
fl_set_button(class_->radio_doc_sides_two, 1);
else
else
fl_set_button(class_->radio_doc_columns_one, 1);
fl_set_input(class_->input_doc_spacing, "");
+
+ setEnabled(class_->input_doc_spacing, input_length);
+
switch (params.spacing.getSpace()) {
case Spacing::Default: // nothing bad should happen with this
case Spacing::Single:
}
-bool FormDocument::CheckDocumentInput(FL_OBJECT * ob, long)
+bool FormDocument::CheckDocumentInput(FL_OBJECT *, long)
{
string str;
bool ok = true;
// "Synchronize" the choice and the input field, so that it
// is impossible to commit senseless data.
input = fl_get_input (class_->input_doc_skip);
- if (ob == class_->input_doc_skip) {
- if (!*input) {
- fl_set_choice (class_->choice_doc_skip, 2);
- } else if (isValidGlueLength (input)) {
- fl_set_choice (class_->choice_doc_skip, 4);
- } else {
- fl_set_choice(class_->choice_doc_skip, 4);
- ok = false;
- }
- } else {
- if (*input && !isValidGlueLength(input))
- ok = false;
- }
-
if ((fl_get_choice(class_->choice_doc_skip) == 4) && !*input)
ok = false;
else if (fl_get_choice(class_->choice_doc_skip) != 4)
input = fl_get_input(class_->input_doc_spacing);
if ((fl_get_choice(class_->choice_doc_spacing) == 4) && !*input)
ok = false;
- else if (fl_get_choice(class_->choice_doc_spacing) != 4)
+ else if (fl_get_choice(class_->choice_doc_spacing) != 4)
fl_set_input (class_->input_doc_spacing, "");
return ok;
}
fdui->form = fl_bgn_form(FL_NO_BOX, 440, 345);
fdui->form->u_vdata = this;
obj = fl_add_box(FL_FLAT_BOX, 0, 0, 440, 345, "");
- obj = fl_add_labelframe(FL_ENGRAVED_FRAME, 300, 200, 120, 80, _("Separation"));
+ obj = fl_add_labelframe(FL_ENGRAVED_FRAME, 20, 245, 400, 85, _("Separation"));
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
fl_set_object_lstyle(obj, FL_BOLD_STYLE);
- obj = fl_add_labelframe(FL_ENGRAVED_FRAME, 300, 110, 120, 70, _("Page cols"));
+ obj = fl_add_labelframe(FL_ENGRAVED_FRAME, 300, 110, 115, 80, _("Page cols"));
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
fl_set_object_lstyle(obj, FL_BOLD_STYLE);
- obj = fl_add_labelframe(FL_ENGRAVED_FRAME, 300, 20, 120, 70, _("Sides"));
+ obj = fl_add_labelframe(FL_ENGRAVED_FRAME, 300, 20, 120, 75, _("Sides"));
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
fl_set_object_lstyle(obj, FL_BOLD_STYLE);
{
fl_set_object_callback(obj, C_FormBaseDeprecatedInputCB, INPUT);
{
char const * const dummy = N_("Spacing|#g");
- fdui->choice_doc_spacing = obj = fl_add_choice(FL_NORMAL_CHOICE, 120, 240, 90, 30, idex(_(dummy)));
+ fdui->choice_doc_spacing = obj = fl_add_choice(FL_NORMAL_CHOICE, 120, 200, 160, 30, idex(_(dummy)));
fl_set_button_shortcut(obj, scex(_(dummy)), 1);
}
fl_set_object_boxtype(obj, FL_FRAME_BOX);
}
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
fl_set_object_callback(obj, C_FormBaseDeprecatedInputCB, INPUT);
- fdui->input_doc_skip = obj = fl_add_input(FL_NORMAL_INPUT, 220, 200, 60, 30, "");
+ fdui->input_doc_skip = obj = fl_add_input(FL_NORMAL_INPUT, 285, 290, 60, 30, "");
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
fl_set_object_callback(obj, C_FormBaseDeprecatedInputCB, INPUT);
{
char const * const dummy = N_("Default Skip:|#u");
- fdui->choice_doc_skip = obj = fl_add_choice(FL_NORMAL_CHOICE, 120, 200, 90, 30, idex(_(dummy)));
+ fdui->choice_doc_skip = obj = fl_add_choice(FL_NORMAL_CHOICE, 285, 255, 125, 30, idex(_(dummy)));
fl_set_button_shortcut(obj, scex(_(dummy)), 1);
}
fl_set_object_boxtype(obj, FL_FRAME_BOX);
fdui->group_doc_sep = fl_bgn_group();
{
char const * const dummy = N_("Indent|#I");
- fdui->radio_doc_indent = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 300, 210, 110, 30, idex(_(dummy)));
+ fdui->radio_doc_indent = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 50, 260, 110, 30, idex(_(dummy)));
fl_set_button_shortcut(obj, scex(_(dummy)), 1);
}
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
fl_set_object_callback(obj, C_FormBaseDeprecatedInputCB, INPUT);
{
char const * const dummy = N_("Skip|#K");
- fdui->radio_doc_skip = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 300, 240, 110, 30, idex(_(dummy)));
+ fdui->radio_doc_skip = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 50, 290, 110, 30, idex(_(dummy)));
fl_set_button_shortcut(obj, scex(_(dummy)), 1);
}
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
fl_set_button(obj, 1);
fl_end_group();
- fdui->input_doc_spacing = obj = fl_add_input(FL_NORMAL_INPUT, 220, 240, 60, 30, "");
+ fdui->input_doc_spacing = obj = fl_add_input(FL_NORMAL_INPUT, 300, 200, 115, 30, "");
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
fl_set_object_callback(obj, C_FormBaseDeprecatedInputCB, INPUT);
+ fdui->choice_default_skip_units = obj = fl_add_choice(FL_NORMAL_CHOICE, 350, 290, 60, 30, "");
+ fl_set_object_boxtype(obj, FL_FRAME_BOX);
+ fl_set_object_callback(obj, C_FormBaseDeprecatedInputCB, 0);
fl_end_form();
fdui->form->fdui = fdui;
FL_OBJECT *radio_doc_indent;
FL_OBJECT *radio_doc_skip;
FL_OBJECT *input_doc_spacing;
+ FL_OBJECT *choice_default_skip_units;
};
struct FD_form_doc_language {
~FD_form_doc_language();
Name: form_doc_class
Width: 440
Height: 345
-Number of Objects: 25
+Number of Objects: 26
--------------------
class: FL_BOX
--------------------
class: FL_LABELFRAME
type: ENGRAVED_FRAME
-box: 300 200 120 80
+box: 20 245 400 85
boxtype: FL_NO_BOX
colors: FL_BLACK FL_COL1
alignment: FL_ALIGN_TOP_LEFT
--------------------
class: FL_LABELFRAME
type: ENGRAVED_FRAME
-box: 300 110 120 70
+box: 300 110 115 80
boxtype: FL_NO_BOX
colors: FL_BLACK FL_COL1
alignment: FL_ALIGN_TOP_LEFT
--------------------
class: FL_LABELFRAME
type: ENGRAVED_FRAME
-box: 300 20 120 70
+box: 300 20 120 75
boxtype: FL_NO_BOX
colors: FL_BLACK FL_COL1
alignment: FL_ALIGN_TOP_LEFT
--------------------
class: FL_CHOICE
type: NORMAL_CHOICE
-box: 120 240 90 30
+box: 120 200 160 30
boxtype: FL_FRAME_BOX
colors: FL_COL1 FL_BLACK
alignment: FL_ALIGN_LEFT
--------------------
class: FL_INPUT
type: NORMAL_INPUT
-box: 220 200 60 30
+box: 285 290 60 30
boxtype: FL_DOWN_BOX
colors: FL_COL1 FL_MCOL
alignment: FL_ALIGN_LEFT
--------------------
class: FL_CHOICE
type: NORMAL_CHOICE
-box: 120 200 90 30
+box: 285 255 125 30
boxtype: FL_FRAME_BOX
colors: FL_COL1 FL_BLACK
alignment: FL_ALIGN_LEFT
--------------------
class: FL_CHECKBUTTON
type: RADIO_BUTTON
-box: 300 210 110 30
+box: 50 260 110 30
boxtype: FL_NO_BOX
colors: FL_COL1 FL_YELLOW
alignment: FL_ALIGN_CENTER
--------------------
class: FL_CHECKBUTTON
type: RADIO_BUTTON
-box: 300 240 110 30
+box: 50 290 110 30
boxtype: FL_NO_BOX
colors: FL_COL1 FL_YELLOW
alignment: FL_ALIGN_CENTER
--------------------
class: FL_INPUT
type: NORMAL_INPUT
-box: 220 240 60 30
+box: 300 200 115 30
boxtype: FL_DOWN_BOX
colors: FL_COL1 FL_MCOL
alignment: FL_ALIGN_LEFT
callback: C_FormBaseDeprecatedInputCB
argument: INPUT
+--------------------
+class: FL_CHOICE
+type: NORMAL_CHOICE
+box: 350 290 60 30
+boxtype: FL_FRAME_BOX
+colors: FL_COL1 FL_BLACK
+alignment: FL_ALIGN_LEFT
+style: FL_NORMAL_STYLE
+size: FL_DEFAULT_SIZE
+lcol: FL_BLACK
+label:
+shortcut:
+resize: FL_RESIZE_ALL
+gravity: FL_NoGravity FL_NoGravity
+name: choice_default_skip_units
+callback: C_FormBaseDeprecatedInputCB
+argument: 0
+
=============== FORM ===============
Name: form_doc_language
Width: 440