]> git.lyx.org Git - lyx.git/blob - src/frontends/xforms/FormExternal.C
remove defaults stuff, let Qt handle no toolbar
[lyx.git] / src / frontends / xforms / FormExternal.C
1 /**
2  * \file FormExternal.C
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author Asger Alstrup
7  * \author John Levon
8  * \author Angus Leeming
9  *
10  * Full author contact details are available in file CREDITS
11  */
12
13 #include <config.h>
14
15
16 #include "xformsBC.h"
17 #include "ControlExternal.h"
18 #include "FormExternal.h"
19 #include "forms/form_external.h"
20 #include "gettext.h"
21 #include "xforms_helpers.h"
22 #include "helper_funcs.h"
23
24 #include "support/lstrings.h"
25 #include FORMS_H_LOCATION
26
27 typedef FormController<ControlExternal, FormView<FD_external> > base_class;
28
29 FormExternal::FormExternal(Dialog & parent)
30         : base_class(parent, _("Edit external file"))
31 {}
32
33
34 void FormExternal::apply()
35 {
36         InsetExternal::Params params = controller().params();
37
38         params.filename = fl_get_input(dialog_->input_filename);
39         params.parameters = fl_get_input(dialog_->input_parameters);
40
41         int const choice = fl_get_choice(dialog_->choice_template) - 1;
42         params.templ = controller().getTemplate(choice);
43
44         controller().setParams(params);
45 }
46
47
48 void FormExternal::build()
49 {
50         dialog_.reset(build_external(this));
51
52         string const choice =
53                 ' ' + getStringFromVector(controller().getTemplates(), " | ") + ' ';
54         fl_addto_choice(dialog_->choice_template, choice.c_str());
55
56         fl_set_input_return (dialog_->input_filename,  FL_RETURN_CHANGED);
57         fl_set_input_return (dialog_->input_parameters, FL_RETURN_CHANGED);
58
59         setPrehandler(dialog_->input_filename);
60         setPrehandler(dialog_->input_parameters);
61
62         bcview().setOK(dialog_->button_ok);
63         bcview().setApply(dialog_->button_apply);
64         bcview().setCancel(dialog_->button_close);
65
66         bcview().addReadOnly(dialog_->input_filename);
67         bcview().addReadOnly(dialog_->button_filenamebrowse);
68         bcview().addReadOnly(dialog_->input_parameters);
69 }
70
71
72 void FormExternal::update()
73 {
74         InsetExternal::Params const & params = controller().params();
75
76         fl_set_input(dialog_->input_filename, params.filename.c_str());
77         fl_set_input(dialog_->input_parameters, params.parameters.c_str());
78
79         int const ID = controller().getTemplateNumber(params.templ.lyxName);
80         if (ID >= 0) {
81                 setEnabled(dialog_->choice_template, true);
82                 fl_set_choice(dialog_->choice_template, ID+1);
83         } else
84                 setEnabled(dialog_->choice_template, false);
85
86         updateComboChange();
87 }
88
89
90 ButtonPolicy::SMInput FormExternal::input(FL_OBJECT * ob, long)
91 {
92         if (ob == dialog_->choice_template) {
93
94                 // set to the chosen template
95                 int const choice = fl_get_choice(dialog_->choice_template) - 1;
96                 InsetExternal::Params params = controller().params();
97                 params.templ = controller().getTemplate(choice);
98                 controller().setParams(params);
99
100                 updateComboChange();
101
102         } else if (ob == dialog_->button_filenamebrowse) {
103
104                 string const in_name  = fl_get_input(dialog_->input_filename);
105                 string const out_name = controller().Browse(in_name);
106                 fl_set_input(dialog_->input_filename, out_name.c_str());
107
108         } else if (ob == dialog_->button_edit) {
109                 controller().editExternal();
110
111         } else if (ob == dialog_->button_view) {
112                 controller().viewExternal();
113
114         } else if (ob == dialog_->button_update) {
115                 controller().updateExternal();
116         }
117
118         return ButtonPolicy::SMI_VALID;
119 }
120
121
122 void FormExternal::updateComboChange()
123 {
124         // Update the help text
125         fl_clear_browser(dialog_->browser_helptext);
126         fl_addto_browser(dialog_->browser_helptext,
127                          controller().params().templ.helpText.c_str());
128         fl_set_browser_topline(dialog_->browser_helptext, 0);
129
130         bool const enabled = (!controller().params().templ.automaticProduction);
131         setEnabled(dialog_->button_update, enabled);
132 }