From: Angus Leeming Date: Tue, 23 Oct 2001 09:00:12 +0000 (+0000) Subject: J�rgen Spitzm�ller's changes to the document dialog. X-Git-Tag: 1.6.10~20449 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=13fbbbdc44bd42fb3775b13521dcf72d6c179ab4;p=features.git J�rgen Spitzm�ller's changes to the document dialog. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@2914 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/frontends/xforms/ChangeLog b/src/frontends/xforms/ChangeLog index ab34a22f8d..6bab7bb1e8 100644 --- a/src/frontends/xforms/ChangeLog +++ b/src/frontends/xforms/ChangeLog @@ -1,3 +1,13 @@ +2001-10-19 Jürgen Spitzmüller + + * 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 * FormDocument.C: fixed some bugs in the Paper tab. diff --git a/src/frontends/xforms/FormDocument.C b/src/frontends/xforms/FormDocument.C index 77bc376f6b..2fda2c10b7 100644 --- a/src/frontends/xforms/FormDocument.C +++ b/src/frontends/xforms/FormDocument.C @@ -203,10 +203,16 @@ void FormDocument::build() "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); @@ -399,6 +405,31 @@ bool FormDocument::input( FL_OBJECT * ob, long data ) 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)); @@ -644,11 +675,16 @@ bool FormDocument::class_apply() 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; } @@ -869,6 +905,11 @@ void FormDocument::class_update(BufferParams const & params) 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); @@ -879,17 +920,26 @@ void FormDocument::class_update(BufferParams const & params) 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 @@ -901,6 +951,9 @@ void FormDocument::class_update(BufferParams const & params) 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: @@ -1097,7 +1150,7 @@ void FormDocument::checkReadOnly() } -bool FormDocument::CheckDocumentInput(FL_OBJECT * ob, long) +bool FormDocument::CheckDocumentInput(FL_OBJECT *, long) { string str; bool ok = true; @@ -1106,20 +1159,6 @@ bool FormDocument::CheckDocumentInput(FL_OBJECT * ob, long) // "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) @@ -1128,7 +1167,7 @@ bool FormDocument::CheckDocumentInput(FL_OBJECT * ob, long) 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; } diff --git a/src/frontends/xforms/form_document.C b/src/frontends/xforms/form_document.C index 5c53e0480b..c3513c60bd 100644 --- a/src/frontends/xforms/form_document.C +++ b/src/frontends/xforms/form_document.C @@ -250,13 +250,13 @@ FD_form_doc_class * FormDocument::build_doc_class() 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); { @@ -293,7 +293,7 @@ FD_form_doc_class * FormDocument::build_doc_class() 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); @@ -306,12 +306,12 @@ FD_form_doc_class * FormDocument::build_doc_class() } 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); @@ -357,14 +357,14 @@ FD_form_doc_class * FormDocument::build_doc_class() 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); @@ -372,9 +372,12 @@ FD_form_doc_class * FormDocument::build_doc_class() 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; diff --git a/src/frontends/xforms/form_document.h b/src/frontends/xforms/form_document.h index 56a4cf2e8a..eb10ca877a 100644 --- a/src/frontends/xforms/form_document.h +++ b/src/frontends/xforms/form_document.h @@ -87,6 +87,7 @@ struct FD_form_doc_class { 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(); diff --git a/src/frontends/xforms/forms/form_document.fd b/src/frontends/xforms/forms/form_document.fd index 768ff67e1a..f0b6889889 100644 --- a/src/frontends/xforms/forms/form_document.fd +++ b/src/frontends/xforms/forms/form_document.fd @@ -707,7 +707,7 @@ argument: 0 Name: form_doc_class Width: 440 Height: 345 -Number of Objects: 25 +Number of Objects: 26 -------------------- class: FL_BOX @@ -730,7 +730,7 @@ argument: -------------------- 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 @@ -748,7 +748,7 @@ argument: -------------------- 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 @@ -766,7 +766,7 @@ argument: -------------------- 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 @@ -856,7 +856,7 @@ argument: INPUT -------------------- 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 @@ -892,7 +892,7 @@ argument: INPUT -------------------- 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 @@ -910,7 +910,7 @@ argument: INPUT -------------------- 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 @@ -1090,7 +1090,7 @@ argument: -------------------- 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 @@ -1108,7 +1108,7 @@ argument: INPUT -------------------- 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 @@ -1145,7 +1145,7 @@ argument: -------------------- 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 @@ -1160,6 +1160,24 @@ name: input_doc_spacing 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