]> git.lyx.org Git - lyx.git/blob - src/frontends/qt4/QInclude.C
Add vertical spacer.
[lyx.git] / src / frontends / qt4 / QInclude.C
1 /**
2  * \file QInclude.C
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author John Levon
7  *
8  * Full author contact details are available in file CREDITS.
9  */
10
11 #include <config.h>
12
13 #include "support/os.h"
14
15 #include "QIncludeDialog.h"
16 #include "QInclude.h"
17
18 #include "checkedwidgets.h"
19 #include "Qt2BC.h"
20 #include "qt_helpers.h"
21 #include "validators.h"
22
23 #include "lyxrc.h"
24
25 #include "controllers/ControlInclude.h"
26
27 #include <qlineedit.h>
28 #include <qpushbutton.h>
29 #include <qcheckbox.h>
30
31 using std::string;
32
33 using lyx::support::os::internal_path;
34
35 namespace lyx {
36 namespace frontend {
37
38 typedef QController<ControlInclude, QView<QIncludeDialog> > include_base_class;
39
40
41 QInclude::QInclude(Dialog & parent)
42         : include_base_class(parent, _("Child Document"))
43 {}
44
45
46 void QInclude::build_dialog()
47 {
48         dialog_.reset(new QIncludeDialog(this));
49
50         bcview().setOK(dialog_->okPB);
51         bcview().setCancel(dialog_->closePB);
52         bcview().addReadOnly(dialog_->filenameED);
53         bcview().addReadOnly(dialog_->browsePB);
54         bcview().addReadOnly(dialog_->visiblespaceCB);
55         bcview().addReadOnly(dialog_->typeCO);
56
57         addCheckedLineEdit(bcview(), dialog_->filenameED, dialog_->filenameLA);
58 }
59
60
61 void QInclude::update_contents()
62 {
63         PathValidator * path_validator = getPathValidator(dialog_->filenameED);
64         if (path_validator)
65                 path_validator->setChecker(kernel().docType(), lyxrc);
66
67         InsetCommandParams const & params = controller().params();
68
69         dialog_->filenameED->setText(toqstr(params["filename"]));
70
71         dialog_->visiblespaceCB->setChecked(false);
72         dialog_->visiblespaceCB->setEnabled(false);
73         dialog_->previewCB->setChecked(false);
74         dialog_->previewCB->setEnabled(false);
75
76         string cmdname = controller().params().getCmdName();
77         if (cmdname != "include" &&
78             cmdname != "verbatiminput" &&
79             cmdname != "verbatiminput*")
80                 cmdname = "input";
81
82         if (cmdname == "include") {
83                 dialog_->typeCO->setCurrentIndex(0);
84
85         } else if (cmdname == "input") {
86                 dialog_->typeCO->setCurrentIndex(1);
87                 dialog_->previewCB->setEnabled(true);
88                 dialog_->previewCB->setChecked(params.preview());
89
90         } else if (cmdname == "verbatiminput*") {
91                 dialog_->typeCO->setCurrentIndex(2);
92                 dialog_->visiblespaceCB->setEnabled(true);
93                 dialog_->visiblespaceCB->setChecked(true);
94
95         } else if (cmdname == "verbatiminput") {
96                 dialog_->typeCO->setCurrentIndex(2);
97                 dialog_->visiblespaceCB->setEnabled(true);
98         }
99 }
100
101
102 void QInclude::apply()
103 {
104         InsetCommandParams params = controller().params();
105
106         params["filename"] = from_utf8(internal_path(fromqstr(dialog_->filenameED->text())));
107         params.preview(dialog_->previewCB->isChecked());
108
109         int const item = dialog_->typeCO->currentIndex();
110         if (item == 0)
111                 params.setCmdName("include");
112         else if (item == 1)
113                 params.setCmdName("input");
114         else {
115                 if (dialog_->visiblespaceCB->isChecked())
116                         params.setCmdName("verbatiminput*");
117                 else
118                         params.setCmdName("verbatiminput");
119         }
120         controller().setParams(params);
121 }
122
123
124 void QInclude::browse()
125 {
126         ControlInclude::Type type;
127
128         int const item = dialog_->typeCO->currentIndex();
129         if (item == 0)
130                 type = ControlInclude::INCLUDE;
131         else if (item == 1)
132                 type = ControlInclude::INPUT;
133         else
134                 type = ControlInclude::VERBATIM;
135
136         docstring const & name =
137                 controller().browse(qstring_to_ucs4(dialog_->filenameED->text()), type);
138         if (!name.empty())
139                 dialog_->filenameED->setText(toqstr(name));
140 }
141
142
143 void QInclude::load()
144 {
145         if (isValid()) {
146                 string const file(fromqstr(dialog_->filenameED->text()));
147                 slotOK();
148                 controller().load(file);
149         }
150 }
151
152
153 bool QInclude::isValid()
154 {
155         return !dialog_->filenameED->text().isEmpty();
156 }
157
158 } // namespace frontend
159 } // namespace lyx