1 /* This file is part of
2 * ======================================================
4 * LyX, The Document Processor
6 * Copyright 2001 The LyX Team.
8 * ======================================================
16 #pragma implementation
20 #include "ControlFloat.h"
21 #include "FormFloat.h"
22 #include "form_float.h"
23 #include "support/lstrings.h"
24 #include "xforms_helpers.h"
26 typedef FormCB<ControlFloat, FormDB<FD_form_float> > base_class;
28 FormFloat::FormFloat(ControlFloat & c)
29 : base_class(c, _("Float Options"))
33 // FIX: Needs to be implemented. (Lgb)
34 // A way to set to float default is missing.
35 // A way to set "force[!]" is missing.
37 void FormFloat::build()
39 dialog_.reset(build_float());
41 // Manage the ok, apply and cancel/close buttons
42 bc().setOK(dialog_->button_ok);
43 bc().setApply(dialog_->button_apply);
44 bc().setCancel(dialog_->button_cancel);
45 bc().setRestore(dialog_->button_restore);
47 bc().addReadOnly(dialog_->radio_top);
48 bc().addReadOnly(dialog_->radio_bottom);
49 bc().addReadOnly(dialog_->radio_page);
50 bc().addReadOnly(dialog_->radio_here);
51 bc().addReadOnly(dialog_->button_here_definitely);
55 void FormFloat::apply()
58 if (fl_get_button(dialog_->button_here_definitely)) {
61 if (fl_get_button(dialog_->radio_top)) {
64 if (fl_get_button(dialog_->radio_bottom)) {
67 if (fl_get_button(dialog_->radio_page)) {
70 if (fl_get_button(dialog_->radio_here)) {
74 controller().params().placement = placement;
78 void FormFloat::update()
84 bool here_definitely = false;
86 string placement(controller().params().placement);
88 if (contains(placement, "H")) {
89 here_definitely = true;
91 if (contains(placement, "t")) {
94 if (contains(placement, "b")) {
97 if (contains(placement, "p")) {
100 if (contains(placement, "h")) {
104 fl_set_button(dialog_->radio_top, top);
105 fl_set_button(dialog_->radio_bottom, bottom);
106 fl_set_button(dialog_->radio_page, page);
107 fl_set_button(dialog_->radio_here, here);
108 fl_set_button(dialog_->button_here_definitely, here_definitely);
109 setEnabled(dialog_->button_here_definitely, controller().params().allow_here_definitely);
113 ButtonPolicy::SMInput FormFloat::input(FL_OBJECT * ob, long)
115 if (ob == dialog_->button_here_definitely) {
116 if (fl_get_button(dialog_->button_here_definitely)) {
117 fl_set_button(dialog_->radio_top, false);
118 fl_set_button(dialog_->radio_bottom, false);
119 fl_set_button(dialog_->radio_page, false);
120 fl_set_button(dialog_->radio_here, false);
123 if (fl_get_button(dialog_->button_here_definitely)) {
124 fl_set_button(dialog_->button_here_definitely, false);
128 return ButtonPolicy::SMI_VALID;