X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fxforms%2FFormInclude.C;h=636574b121c51444b9c75c75c1a59a348c1d4714;hb=27652900a60fd078f161ce866ddaed21dba21eff;hp=78f80f27381f7a4cd184062cc0cd94e6522b049e;hpb=58d99b4a97b85a750704cf84c9639b408117271c;p=lyx.git diff --git a/src/frontends/xforms/FormInclude.C b/src/frontends/xforms/FormInclude.C index 78f80f2738..636574b121 100644 --- a/src/frontends/xforms/FormInclude.C +++ b/src/frontends/xforms/FormInclude.C @@ -21,7 +21,7 @@ #include "form_include.h" #include "insets/insetinclude.h" #include "xforms_helpers.h" // setEnabled -#include "support/lstrings.h" // compare +#include "support/lstrings.h" // strip typedef FormCB > base_class; @@ -34,10 +34,11 @@ void FormInclude::build() { dialog_.reset(build_include()); + 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().refresh(); bc().addReadOnly(dialog_->button_browse); bc().addReadOnly(dialog_->check_verbatim); @@ -89,8 +90,11 @@ void FormInclude::apply() { controller().params().noload = fl_get_button(dialog_->check_typeset); - controller().params().cparams. - setContents(fl_get_input(dialog_->input_filename)); + 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; @@ -107,6 +111,8 @@ void FormInclude::apply() 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)) @@ -122,24 +128,28 @@ ButtonPolicy::SMInput FormInclude::input(FL_OBJECT * ob, long) fl_set_input(dialog_->input_filename, out_name.c_str()); fl_unfreeze_form(form()); - return ButtonPolicy::SMI_VALID; - } - - if (ob == dialog_->button_load) { - if (compare(fl_get_input(dialog_->input_filename),"")) { - ApplyButton(); - return ButtonPolicy::SMI_NOOP; + } 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)); + action = ButtonPolicy::SMI_NOOP; } - } - if (ob == dialog_->check_verbatim) { + } else if (ob == dialog_->check_verbatim) { setEnabled(dialog_->check_visiblespace, true); } else if (ob == dialog_->check_useinclude || ob == dialog_->check_useinput) { fl_set_button(dialog_->check_visiblespace, 0); setEnabled(dialog_->check_visiblespace, false); + + } else if (ob == dialog_->input_filename) { + string const in_name = fl_get_input(dialog_->input_filename); + if (strip(in_name).empty()) + action = ButtonPolicy::SMI_INVALID; } - return ButtonPolicy::SMI_VALID; + return action; }