]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/xforms/FormInclude.C
get rid of broken_header.h and some unneeded tests
[lyx.git] / src / frontends / xforms / FormInclude.C
index dbf38964d4bfc3def15cd8f2ef42afb92e6cd798..57bbb468e5fab34ad7f0fc43344aae83e535dec6 100644 (file)
 /**
  * \file FormInclude.C
- * Copyright 2001 the LyX Team
- * Read the file COPYING
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
  * \author Alejandro Aguilar Sierra
- * \author John Levon, moz@compsoc.man.ac.uk
- * \author Angus Leeming, a.leeming@ic.ac.uk
+ * \author John Levon
+ * \author Angus Leeming
+ *
+ * Full author contact details are available in file CREDITS.
  */
 
 #include <config.h>
-#include <algorithm>
-
-#ifdef __GNUG__
-#pragma implementation
-#endif
 
-#include "xformsBC.h"
-#include "ControlInclude.h"
 #include "FormInclude.h"
-#include "form_include.h"
-#include "insets/insetinclude.h"
+#include "ControlInclude.h"
+#include "forms/form_include.h"
+
+#include "Tooltips.h"
 #include "xforms_helpers.h" // setEnabled
+#include "xformsBC.h"
+
 #include "support/lstrings.h" // strip
 
-typedef FormCB<ControlInclude, FormDB<FD_form_include> > base_class;
+#include "lyx_forms.h"
 
-FormInclude::FormInclude(ControlInclude & c)
-       : base_class(c, _("Include file"))
+using std::string;
+
+namespace lyx {
+
+using support::rtrim;
+
+namespace frontend {
+
+typedef FormController<ControlInclude, FormView<FD_include> > base_class;
+
+FormInclude::FormInclude(Dialog & parent)
+       : base_class(parent, _("Child Document"))
 {}
 
 
 void FormInclude::build()
 {
-       dialog_.reset(build_include());
+       dialog_.reset(build_include(this));
+
+       // 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);
 
        fl_set_input_return(dialog_->input_filename, FL_RETURN_CHANGED);
 
-       // Manage the ok and cancel buttons
-       bc().setOK(dialog_->button_ok);
-       bc().setCancel(dialog_->button_cancel);
-
-       bc().addReadOnly(dialog_->button_browse);
-       bc().addReadOnly(dialog_->check_verbatim);
-       bc().addReadOnly(dialog_->check_typeset);
-       bc().addReadOnly(dialog_->check_useinput);
-       bc().addReadOnly(dialog_->check_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()
 {
-       if (controller().params().noload) {
-               fl_set_input(dialog_->input_filename, "");
-               fl_set_button(dialog_->check_typeset, 0);
-               fl_set_button(dialog_->check_useinput, 0);
-               fl_set_button(dialog_->check_useinclude, 1);
-               fl_set_button(dialog_->check_verbatim, 0);
-               fl_set_button(dialog_->check_visiblespace, 0);
-               fl_deactivate_object(dialog_->check_visiblespace);
-               fl_set_object_lcol(dialog_->check_visiblespace, FL_INACTIVE);
-               return;
-       }
+       string const filename = controller().params().getContents();
+       string const cmdname = controller().params().getCmdName();
+       bool const preview = static_cast<bool>((controller().params().preview()));
+
+       fl_set_input(dialog_->input_filename, filename.c_str());
 
-       fl_set_input(dialog_->input_filename,
-                    controller().params().cparams.getContents().c_str());
+       bool const inputCommand = cmdname == "input";
+       bool const includeCommand = cmdname == "include";
+       bool const verbatimStarCommand = cmdname == "verbatiminput*";
+       bool const verbatimCommand = cmdname == "verbatiminput";
 
-       string const cmdname = controller().params().cparams.getCmdName();
+       setEnabled(dialog_->check_preview, inputCommand);
+       fl_set_button(dialog_->check_preview, inputCommand ? preview : 0);
 
-       fl_set_button(dialog_->check_typeset,
-                     int(controller().params().noload));
+       if (cmdname.empty())
+               type_.set(ControlInclude::INPUT);
+
+       if (includeCommand)
+               type_.set(ControlInclude::INCLUDE);
 
-       fl_set_button(dialog_->check_useinput, cmdname == "input");
-       fl_set_button(dialog_->check_useinclude, cmdname == "include");
-       if (cmdname == "verbatiminput" || cmdname == "verbatiminput*") {
-               fl_set_button(dialog_->check_verbatim, 1);
-               fl_set_button(dialog_->check_visiblespace, cmdname == "verbatiminput*");
+       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 {
                fl_set_button(dialog_->check_visiblespace, 0);
                setEnabled(dialog_->check_visiblespace, false);
+               setEnabled(dialog_->button_load, true);
        }
-       if (cmdname.empty())
-               fl_set_button(dialog_->check_useinclude, 1);
 }
 
 
 void FormInclude::apply()
 {
-       controller().params().noload = fl_get_button(dialog_->check_typeset);
-
-       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_->check_useinput))
-               controller().params().flag = InsetInclude::INPUT;
-       else if (fl_get_button(dialog_->check_useinclude))
-               controller().params().flag = InsetInclude::INCLUDE;
-       else if (fl_get_button(dialog_->check_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);
 }
 
 
@@ -114,42 +145,47 @@ ButtonPolicy::SMInput FormInclude::input(FL_OBJECT * ob, long)
        ButtonPolicy::SMInput action = ButtonPolicy::SMI_VALID;
 
        if (ob == dialog_->button_browse) {
-               ControlInclude::Type type;
-               if (fl_get_button(dialog_->check_useinput))
-                       type = ControlInclude::INPUT;
-               else if (fl_get_button(dialog_->check_verbatim))
-                       type = ControlInclude::VERBATIM;
-               else
-                       type = ControlInclude::INCLUDE;
-
-               string const in_name  = fl_get_input(dialog_->input_filename);
-               fl_freeze_form(form()); 
-               string const out_name = controller().Browse(in_name, type);
+               string const in_name = getString(dialog_->input_filename);
+               fl_freeze_form(form());
+               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()); 
+               fl_unfreeze_form(form());
 
        } else if (ob == dialog_->button_load) {
-               string const in_name = fl_get_input(dialog_->input_filename);
-               if (!strip(in_name).empty() && controller().fileExists(in_name)) {
-//                     ApplyButton();
-                       OKButton();
-                       controller().load(strip(in_name));
+               string const in_name = getString(dialog_->input_filename);
+               if (!rtrim(in_name).empty() && controller().fileExists(in_name)) {
+                       dialog().OKButton();
+                       controller().load(rtrim(in_name));
                        action = ButtonPolicy::SMI_NOOP;
                }
 
-       } else if (ob == dialog_->check_verbatim) {
+       } else if (ob == dialog_->radio_verbatim) {
                setEnabled(dialog_->check_visiblespace, true);
+               setEnabled(dialog_->button_load, false);
 
-       } else if (ob == dialog_->check_useinclude ||
-                  ob == dialog_->check_useinput) {
+       } else if (ob == dialog_->radio_useinclude ||
+                  ob == dialog_->radio_useinput) {
                fl_set_button(dialog_->check_visiblespace, 0);
                setEnabled(dialog_->check_visiblespace, false);
+               setEnabled(dialog_->button_load, true);
 
        } else if (ob == dialog_->input_filename) {
-               string const in_name = fl_get_input(dialog_->input_filename);
-               if (strip(in_name).empty())
+               string const in_name = getString(dialog_->input_filename);
+               if (rtrim(in_name).empty())
                        action = ButtonPolicy::SMI_INVALID;
        }
-       
+
+       if (ob == dialog_->radio_useinput) {
+               setEnabled(dialog_->check_preview, true);
+       } else if (ob == dialog_->radio_verbatim ||
+                  ob == dialog_->radio_useinclude) {
+               fl_set_button(dialog_->check_preview, 0);
+               setEnabled(dialog_->check_preview, false);
+       }
+
        return action;
 }
+
+} // namespace frontend
+} // namespace lyx