*
* \author Alejandro Aguilar Sierra
* \author John Levon
- * \author Angus Leeming
+ * \author Angus Leeming
*
- * Full author contact details are available in file CREDITS
+ * Full author contact details are available in file CREDITS.
*/
#include <config.h>
-#include <algorithm>
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
-#include "debug.h"
-
-#include "xformsBC.h"
-#include "ControlInclude.h"
#include "FormInclude.h"
+#include "ControlInclude.h"
#include "forms/form_include.h"
-#include "insets/insetinclude.h"
+
+#include "Tooltips.h"
#include "xforms_helpers.h" // setEnabled
+#include "xformsBC.h"
+
#include "support/lstrings.h" // strip
-#include FORMS_H_LOCATION
-typedef FormCB<ControlInclude, FormDB<FD_include> > base_class;
+#include "lyx_forms.h"
+
+using std::string;
-FormInclude::FormInclude()
- : base_class(_("Include file"))
+namespace lyx {
+
+using support::rtrim;
+
+namespace frontend {
+
+typedef FormController<ControlInclude, FormView<FD_include> > base_class;
+
+FormInclude::FormInclude(Dialog & parent)
+ : base_class(parent, _("Child Document"))
{}
{
dialog_.reset(build_include(this));
- fl_set_input_return(dialog_->input_filename, FL_RETURN_CHANGED);
+ // Manage the ok and cancel buttons
+ bcview().setOK(dialog_->button_ok);
+ bcview().setCancel(dialog_->button_close);
+
+ // trigger an input event for cut&paste with middle mouse button.
setPrehandler(dialog_->input_filename);
- // Manage the ok and cancel buttons
- bc().setOK(dialog_->button_ok);
- bc().setCancel(dialog_->button_close);
+ fl_set_input_return(dialog_->input_filename, FL_RETURN_CHANGED);
- bc().addReadOnly(dialog_->button_browse);
- bc().addReadOnly(dialog_->radio_verbatim);
- bc().addReadOnly(dialog_->radio_useinput);
- bc().addReadOnly(dialog_->radio_useinclude);
+ // disable for read-only documents
+ bcview().addReadOnly(dialog_->button_browse);
+ bcview().addReadOnly(dialog_->radio_useinput);
+ bcview().addReadOnly(dialog_->radio_useinclude);
+ bcview().addReadOnly(dialog_->radio_verbatim);
+
+ type_.init(dialog_->radio_useinput, ControlInclude::INPUT);
+ type_.init(dialog_->radio_useinclude, ControlInclude::INCLUDE);
+ type_.init(dialog_->radio_verbatim, ControlInclude::VERBATIM);
+
+ // set up the tooltips
+ string str = _("File name to include.");
+ tooltips().init(dialog_->input_filename, str);
+ str = _("Browse directories for file name.");
+ tooltips().init(dialog_->button_browse, str);
+ str = _("Use LaTeX \\input.");
+ tooltips().init(dialog_->radio_useinput, str);
+ str = _("Use LaTeX \\include.");
+ tooltips().init(dialog_->radio_useinclude, str);
+ str = _("Use LaTeX \\verbatiminput.");
+ tooltips().init(dialog_->radio_verbatim, str);
+ str = _("Underline spaces in generated output.");
+ tooltips().init(dialog_->check_visiblespace, str);
+ str = _("Show LaTeX preview.");
+ tooltips().init(dialog_->check_preview, str);
+ str = _("Load the file.");
+ tooltips().init(dialog_->button_load, str);
}
void FormInclude::update()
{
- fl_set_input(dialog_->input_filename,
- controller().params().cparams.getContents().c_str());
+ string const filename = controller().params().getContents();
+ string const cmdname = controller().params().getCmdName();
+ bool const preview = static_cast<bool>((controller().params().preview()));
- string const cmdname = controller().params().cparams.getCmdName();
+ fl_set_input(dialog_->input_filename, filename.c_str());
- lyxerr << cmdname << endl;
- if (cmdname == "input")
- fl_set_button(dialog_->check_preview,
- int(controller().params().cparams.preview()));
- else
- fl_set_button(dialog_->check_preview, 0);
+ bool const inputCommand = cmdname == "input";
+ bool const includeCommand = cmdname == "include";
+ bool const verbatimStarCommand = cmdname == "verbatiminput*";
+ bool const verbatimCommand = cmdname == "verbatiminput";
- setEnabled(dialog_->check_preview, (cmdname == "input"));
+ setEnabled(dialog_->check_preview, inputCommand);
+ fl_set_button(dialog_->check_preview, inputCommand ? preview : 0);
- fl_set_button(dialog_->radio_useinput, cmdname == "input");
- fl_set_button(dialog_->radio_useinclude, cmdname == "include");
- if (cmdname == "verbatiminput" || cmdname == "verbatiminput*") {
- fl_set_button(dialog_->radio_verbatim, 1);
- fl_set_button(dialog_->check_visiblespace, cmdname == "verbatiminput*");
+ if (cmdname.empty())
+ type_.set(ControlInclude::INPUT);
+
+ if (includeCommand)
+ type_.set(ControlInclude::INCLUDE);
+
+ if (verbatimCommand || verbatimStarCommand) {
+ type_.set(ControlInclude::VERBATIM);
+ fl_set_button(dialog_->check_visiblespace, verbatimStarCommand);
setEnabled(dialog_->check_visiblespace, true);
setEnabled(dialog_->button_load, false);
} else {
setEnabled(dialog_->check_visiblespace, false);
setEnabled(dialog_->button_load, true);
}
-
- if (cmdname.empty())
- fl_set_button(dialog_->radio_useinclude, 1);
}
void FormInclude::apply()
{
- controller().params().cparams
- .preview(fl_get_button(dialog_->check_preview));
-
- string const file = fl_get_input(dialog_->input_filename);
- if (controller().fileExists(file))
- controller().params().cparams.setContents(file);
- else
- controller().params().cparams.setContents("");
-
- if (fl_get_button(dialog_->radio_useinput))
- controller().params().flag = InsetInclude::INPUT;
- else if (fl_get_button(dialog_->radio_useinclude))
- controller().params().flag = InsetInclude::INCLUDE;
- else if (fl_get_button(dialog_->radio_verbatim)) {
+ InsetCommandParams params = controller().params();
+
+ params.preview(fl_get_button(dialog_->check_preview));
+ params.setContents(getString(dialog_->input_filename));
+
+ ControlInclude::Type const type = ControlInclude::Type(type_.get());
+ if (type == ControlInclude::INPUT)
+ params.setCmdName("input");
+ else if (type == ControlInclude::INCLUDE)
+ params.setCmdName("include");
+ else if (type == ControlInclude::VERBATIM) {
if (fl_get_button(dialog_->check_visiblespace))
- controller().params().flag = InsetInclude::VERBAST;
+ params.setCmdName("verbatiminput*");
else
- controller().params().flag = InsetInclude::VERB;
+ params.setCmdName("verbatiminput");
}
+
+ controller().setParams(params);
}
ButtonPolicy::SMInput action = ButtonPolicy::SMI_VALID;
if (ob == dialog_->button_browse) {
- ControlInclude::Type type;
- if (fl_get_button(dialog_->radio_useinput))
- type = ControlInclude::INPUT;
- else if (fl_get_button(dialog_->radio_verbatim))
- type = ControlInclude::VERBATIM;
- else
- type = ControlInclude::INCLUDE;
-
- string const in_name = fl_get_input(dialog_->input_filename);
+ string const in_name = getString(dialog_->input_filename);
fl_freeze_form(form());
- string const out_name = controller().Browse(in_name, type);
+ ControlInclude::Type const type = ControlInclude::Type(type_.get());
+ string const out_name = controller().browse(in_name, type);
fl_set_input(dialog_->input_filename, out_name.c_str());
fl_unfreeze_form(form());
} else if (ob == dialog_->button_load) {
- string const in_name = fl_get_input(dialog_->input_filename);
+ string const in_name = getString(dialog_->input_filename);
if (!rtrim(in_name).empty() && controller().fileExists(in_name)) {
- controller().OKButton();
+ dialog().OKButton();
controller().load(rtrim(in_name));
action = ButtonPolicy::SMI_NOOP;
}
setEnabled(dialog_->button_load, true);
} else if (ob == dialog_->input_filename) {
- string const in_name = fl_get_input(dialog_->input_filename);
+ string const in_name = getString(dialog_->input_filename);
if (rtrim(in_name).empty())
action = ButtonPolicy::SMI_INVALID;
}
return action;
}
+
+} // namespace frontend
+} // namespace lyx