]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/xforms/FormMinipage.C
Bugfixes: checkboxes to radiobuttons (from J�rgen S) and remove a little
[lyx.git] / src / frontends / xforms / FormMinipage.C
index 7ca95f30f73bbcbe39990d284b1880b224bb7141..4e9ec3a12645f46e548a2f353cbde73db341ceef 100644 (file)
@@ -22,6 +22,9 @@
 #include "FormMinipage.h"
 #include "form_minipage.h"
 #include "support/lstrings.h"
+#include "helper_funcs.h"
+#include "debug.h"
+#include "xforms_helpers.h"
 
 typedef FormCB<ControlMinipage, FormDB<FD_form_minipage> > base_class;
 
@@ -35,29 +38,30 @@ void FormMinipage::build()
        dialog_.reset(build_minipage());
 
        fl_set_input_return(dialog_->input_width, FL_RETURN_CHANGED);
-       fl_set_input_return(dialog_->input_widthp, FL_RETURN_CHANGED);
+
+       string const choice = getStringFromVector(getLatexUnits(), "|");
+       fl_addto_choice(dialog_->choice_width_units, subst(choice, "%", "%%").c_str());
 
        // Manage the ok, apply and cancel/close buttons
        bc().setOK(dialog_->button_ok);
        bc().setApply(dialog_->button_apply);
        bc().setCancel(dialog_->button_cancel);
-       bc().setUndoAll(dialog_->button_restore);
+       bc().setRestore(dialog_->button_restore);
 
        bc().addReadOnly(dialog_->input_width);
-       bc().addReadOnly(dialog_->input_widthp);
+       bc().addReadOnly(dialog_->choice_width_units);
+       bc().addReadOnly(dialog_->group_alignment);
        bc().addReadOnly(dialog_->radio_top);
        bc().addReadOnly(dialog_->radio_middle);
        bc().addReadOnly(dialog_->radio_bottom);
-
-       bc().refresh();
 }
 
 
 void FormMinipage::apply()
 {
-       controller().params().width = fl_get_input(dialog_->input_width);
-       controller().params().widthp =
-               strToInt(fl_get_input(dialog_->input_widthp));
+       controller().params().pageWidth =
+               LyXLength(getLengthFromWidgets(dialog_->input_width,
+                       dialog_->choice_width_units));
 
        if (fl_get_button(dialog_->radio_top))
                controller().params().pos = InsetMinipage::top;
@@ -70,11 +74,10 @@ void FormMinipage::apply()
 
 void FormMinipage::update()
 {
-    fl_set_input(dialog_->input_width,
-                controller().params().width.c_str());
-    fl_set_input(dialog_->input_widthp,
-                tostr(controller().params().widthp).c_str());
-                
+    LyXLength len(controller().params().pageWidth);
+    fl_set_input(dialog_->input_width, tostr(len.value()).c_str());
+    fl_set_choice(dialog_->choice_width_units, len.unit() + 1);
+
     switch (controller().params().pos) {
     case InsetMinipage::top:
        fl_set_button(dialog_->radio_top, 1);