]> git.lyx.org Git - lyx.git/blob - src/frontends/xforms/FormMinipage.C
Add fl_set_input_return to input_paperoption.
[lyx.git] / src / frontends / xforms / FormMinipage.C
1 /* This file is part of
2  * ====================================================== 
3  *
4  *           LyX, The Document Processor
5  *
6  *           Copyright 2001 The LyX Team.
7  *
8  * ======================================================
9  *
10  * \file FormMinipage.C
11  * \author Jürgen Vigna, jug@sad.it
12  */
13
14 #include <config.h>
15
16 #ifdef __GNUG__
17 #pragma implementation
18 #endif
19
20 #include "xformsBC.h"
21 #include "ControlMinipage.h"
22 #include "FormMinipage.h"
23 #include "form_minipage.h"
24 #include "support/lstrings.h"
25 #include "helper_funcs.h"
26 #include "debug.h"
27
28 typedef FormCB<ControlMinipage, FormDB<FD_form_minipage> > base_class;
29
30 FormMinipage::FormMinipage(ControlMinipage & c)
31         : base_class(c, _("Minipage Options"))
32 {}
33
34
35 void FormMinipage::build()
36 {
37         dialog_.reset(build_minipage());
38
39         fl_set_input_return(dialog_->input_width, FL_RETURN_CHANGED);
40
41         string const choice = getStringFromVector(minipage::getUnits(), "|");
42         fl_addto_choice(dialog_->choice_width_units, subst(choice, "%", "%%").c_str());
43
44         // Manage the ok, apply and cancel/close buttons
45         bc().setOK(dialog_->button_ok);
46         bc().setApply(dialog_->button_apply);
47         bc().setCancel(dialog_->button_cancel);
48         bc().setRestore(dialog_->button_restore);
49
50         bc().addReadOnly(dialog_->input_width);
51         bc().addReadOnly(dialog_->choice_width_units);
52         bc().addReadOnly(dialog_->group_alignment);
53         bc().addReadOnly(dialog_->radio_top);
54         bc().addReadOnly(dialog_->radio_middle);
55         bc().addReadOnly(dialog_->radio_bottom);
56 }
57
58
59 void FormMinipage::apply()
60 {
61         string const units = fl_get_choice_text(dialog_->choice_width_units);
62         double const val = strToDbl(fl_get_input(dialog_->input_width));
63
64         controller().params().width =
65                 tostr(val) + frontStrip(strip(subst(units,"%%","%")));
66
67         if (fl_get_button(dialog_->radio_top))
68                 controller().params().pos = InsetMinipage::top;
69         else if (fl_get_button(dialog_->radio_middle))
70                 controller().params().pos = InsetMinipage::center;
71         else
72                 controller().params().pos = InsetMinipage::bottom;
73 }
74
75
76 void FormMinipage::update()
77 {
78     LyXLength len(controller().params().width.c_str());
79     fl_set_input(dialog_->input_width,tostr(len.value()).c_str());
80     fl_set_choice(dialog_->choice_width_units, len.unit()+1);
81
82     switch (controller().params().pos) {
83     case InsetMinipage::top:
84         fl_set_button(dialog_->radio_top, 1);
85         break;
86     case InsetMinipage::center:
87         fl_set_button(dialog_->radio_middle, 1);
88         break;
89     case InsetMinipage::bottom:
90         fl_set_button(dialog_->radio_bottom, 1);
91         break;
92     }
93 }