- if (!dialog_.get())
- return;
-
- // Do this first; some objects may be de/activated subsequently.
- bc_.readOnly(lv_->buffer()->isReadonly());
-
- Buffer * buf = lv_->view()->buffer();
-
- /// Record the paragraph
- par_ = getCurrentParagraph();
-
- fl_set_input(dialog_->input_labelwidth,
- par_->getLabelWidthString().c_str());
- setEnabled(dialog_->input_labelwidth,
- (par_->getLabelWidthString() != _("Senseless with this layout!")));
-
- fl_set_button(dialog_->radio_align_right, 0);
- fl_set_button(dialog_->radio_align_left, 0);
- fl_set_button(dialog_->radio_align_center, 0);
- fl_set_button(dialog_->radio_align_block, 0);
-
- int align = par_->getAlign();
- if (align == LYX_ALIGN_LAYOUT)
- align = textclasslist.Style(buf->params.textclass,
- par_->getLayout()).align;
-
- switch (align) {
- case LYX_ALIGN_RIGHT:
- fl_set_button(dialog_->radio_align_right, 1);
- break;
- case LYX_ALIGN_LEFT:
- fl_set_button(dialog_->radio_align_left, 1);
- break;
- case LYX_ALIGN_CENTER:
- fl_set_button(dialog_->radio_align_center, 1);
- break;
- default:
- fl_set_button(dialog_->radio_align_block, 1);
- break;
- }
-
- LyXAlignment alignpos =
- textclasslist.Style(buf->params.textclass,
- par_->getLayout()).alignpossible;
-
- setEnabled(dialog_->radio_align_block, bool(alignpos & LYX_ALIGN_BLOCK));
- setEnabled(dialog_->radio_align_center, bool(alignpos & LYX_ALIGN_CENTER));
- setEnabled(dialog_->radio_align_left, bool(alignpos & LYX_ALIGN_LEFT));
- setEnabled(dialog_->radio_align_right, bool(alignpos & LYX_ALIGN_RIGHT));
-
- // no inset-text-owned paragraph may have pagebreaks
- setEnabled(dialog_->check_pagebreaks_top, !par_->inInset());
- setEnabled(dialog_->check_pagebreaks_bottom, !par_->inInset());
-
- fl_set_button(dialog_->check_lines_top,
- par_->params().lineTop());
- fl_set_button(dialog_->check_lines_bottom,
- par_->params().lineBottom());
- fl_set_button(dialog_->check_pagebreaks_top,
- par_->params().pagebreakTop());
- fl_set_button(dialog_->check_pagebreaks_bottom,
- par_->params().pagebreakBottom());
- fl_set_button(dialog_->check_noindent,
- par_->params().noindent());
-
- int linespacing;
- Spacing const space = par_->params().spacing();
-
- switch (space.getSpace()) {
- default: linespacing = 1; break;
- case Spacing::Single: linespacing = 2; break;
- case Spacing::Onehalf: linespacing = 3; break;
- case Spacing::Double: linespacing = 4; break;
- case Spacing::Other: linespacing = 5; break;
- }
-
- fl_set_choice(dialog_->choice_linespacing, linespacing);
- if (space.getSpace() == Spacing::Other) {
- string const sp = tostr(space.getValue());
- fl_set_input(dialog_->input_linespacing, sp.c_str());
- setEnabled(dialog_->input_linespacing, true);
- } else {
- fl_set_input(dialog_->input_linespacing, "");
- setEnabled(dialog_->input_linespacing, false);
- }
-
- fl_set_input (dialog_->input_space_above, "");
-
- setEnabled(dialog_->input_space_above, false);
- setEnabled(dialog_->choice_value_space_above, false);
- switch (par_->params().spaceTop().kind()) {
- case VSpace::NONE:
- fl_set_choice (dialog_->choice_space_above, 1);
- break;
- case VSpace::DEFSKIP:
- fl_set_choice (dialog_->choice_space_above, 2);
- break;
- case VSpace::SMALLSKIP:
- fl_set_choice (dialog_->choice_space_above, 3);
- break;
- case VSpace::MEDSKIP:
- fl_set_choice (dialog_->choice_space_above, 4);
- break;
- case VSpace::BIGSKIP:
- fl_set_choice (dialog_->choice_space_above, 5);
- break;
- case VSpace::VFILL:
- fl_set_choice (dialog_->choice_space_above, 6);
- break;
- case VSpace::LENGTH:
- {
- fl_set_choice (dialog_->choice_space_above, 7);
- setEnabled(dialog_->input_space_above, true);
- setEnabled(dialog_->choice_value_space_above, true);
- bool const metric = lyxrc.default_papersize > 3;
- string const default_unit = metric ? "cm" : "in";
- string const length = par_->params().spaceTop().length().asString();
- updateWidgetsFromLengthString(dialog_->input_space_above,
- dialog_->choice_value_space_above,
- length, default_unit);
- break;
- }
- }
-
- fl_set_button (dialog_->check_space_above,
- par_->params().spaceTop().keep());
- fl_set_input (dialog_->input_space_below, "");
-
- setEnabled(dialog_->input_space_below, false);
- setEnabled(dialog_->choice_value_space_below, false);
- switch (par_->params().spaceBottom().kind()) {
- case VSpace::NONE:
- fl_set_choice (dialog_->choice_space_below, 1);
- break;
- case VSpace::DEFSKIP:
- fl_set_choice (dialog_->choice_space_below, 2);
- break;
- case VSpace::SMALLSKIP:
- fl_set_choice (dialog_->choice_space_below, 3);
- break;
- case VSpace::MEDSKIP:
- fl_set_choice (dialog_->choice_space_below, 4);
- break;
- case VSpace::BIGSKIP:
- fl_set_choice (dialog_->choice_space_below, 5);
- break;
- case VSpace::VFILL:
- fl_set_choice (dialog_->choice_space_below, 6);
- break;
- case VSpace::LENGTH:
- {
- fl_set_choice (dialog_->choice_space_below, 7);
- setEnabled(dialog_->input_space_below, true);
- setEnabled(dialog_->choice_value_space_below, true);
- bool const metric = lyxrc.default_papersize > 3;
- string const default_unit = metric ? "cm" : "in";
- string const length =
- par_->params().spaceBottom().length().asString();
- updateWidgetsFromLengthString(dialog_->input_space_below,
- dialog_->choice_value_space_below,
- length, default_unit);
- break;
- }
- }
-
- fl_set_button(dialog_->check_space_below,
- par_->params().spaceBottom().keep());
- fl_set_button(dialog_->check_noindent,
- par_->params().noindent());
+ if (!dialog_.get())
+ return;
+
+ // label width
+ string const labelwidth = controller().params().labelWidthString();
+ fl_set_input(dialog_->input_labelwidth, labelwidth.c_str());
+ setEnabled(dialog_->input_labelwidth,
+ labelwidth != _("Senseless with this layout!"));
+
+ // alignment
+ alignment_.set(controller().params().align());
+
+ // mark default alignment
+ LyXAlignment const default_alignment = controller().alignDefault();
+
+ string label = _("Block");
+ if (default_alignment == LYX_ALIGN_BLOCK) {
+ label += _(" (default)");
+ }
+ fl_set_object_label(dialog_->radio_align_block, label.c_str());
+ fl_set_button_shortcut(dialog_->radio_align_block, "#B", 1);
+
+ label = _("Center");
+ if (default_alignment == LYX_ALIGN_CENTER) {
+ label += _(" (default)");
+ }
+ fl_set_object_label(dialog_->radio_align_center, label.c_str());
+ fl_set_button_shortcut(dialog_->radio_align_center, "#C", 1);
+
+ label = _("Left");
+ if (default_alignment == LYX_ALIGN_LEFT) {
+ label += _(" (default)");
+ }
+ fl_set_object_label(dialog_->radio_align_left, label.c_str());
+ fl_set_button_shortcut(dialog_->radio_align_left, "#L", 1);
+
+ label = _("Right");
+ if (default_alignment == LYX_ALIGN_RIGHT) {
+ label = _(" (default)");
+ }
+ fl_set_object_label(dialog_->radio_align_right, label.c_str());
+ fl_set_button_shortcut(dialog_->radio_align_right, "#R", 1);
+
+ // Ensure that there's no crud left on the screen from this change
+ // of labels.
+ fl_redraw_form(form());
+
+ LyXAlignment alignpos = controller().alignPossible();
+ setEnabled(dialog_->radio_align_block,
+ bool(alignpos & LYX_ALIGN_BLOCK));
+ setEnabled(dialog_->radio_align_center,
+ bool(alignpos & LYX_ALIGN_CENTER));
+ setEnabled(dialog_->radio_align_left,
+ bool(alignpos & LYX_ALIGN_LEFT));
+ setEnabled(dialog_->radio_align_right,
+ bool(alignpos & LYX_ALIGN_RIGHT));
+
+ // lines, pagebreaks and indent
+ fl_set_button(dialog_->check_noindent,
+ controller().params().noindent());
+
+ // linespacing
+ Spacing const space = controller().params().spacing();
+
+ int pos;
+ switch (space.getSpace()) {
+ case Spacing::Other:
+ pos = 5;
+ break;
+ case Spacing::Double:
+ pos = 4;
+ break;
+ case Spacing::Onehalf:
+ pos = 3;
+ break;
+ case Spacing::Single:
+ pos = 2;
+ break;
+ case Spacing::Default:
+ default:
+ pos = 1;
+ break;
+ }
+ fl_set_choice(dialog_->choice_linespacing, pos);
+
+ bool const spacing_other = space.getSpace() == Spacing::Other;
+ setEnabled(dialog_->input_linespacing, spacing_other);
+ if (spacing_other) {
+ fl_set_input(dialog_->input_linespacing,
+ space.getValueAsString().c_str());
+ } else {
+ fl_set_input(dialog_->input_linespacing, "");
+ }
+
+ // no indent
+ fl_set_button(dialog_->check_noindent,
+ controller().params().noindent());