]> git.lyx.org Git - lyx.git/blob - src/frontends/qt3/QInclude.C
Extracted from r14281
[lyx.git] / src / frontends / qt3 / 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 "QIncludeDialog.h"
14 #include "QInclude.h"
15
16 #include "checkedwidgets.h"
17 #include "Qt2BC.h"
18 #include "qt_helpers.h"
19 #include "validators.h"
20
21 #include "lyxrc.h"
22
23 #include "controllers/ControlInclude.h"
24
25 #include <qlineedit.h>
26 #include <qpushbutton.h>
27 #include <qcheckbox.h>
28 #include <qcombobox.h>
29
30 using std::string;
31
32 namespace lyx {
33 namespace frontend {
34
35 typedef QController<ControlInclude, QView<QIncludeDialog> > base_class;
36
37
38 QInclude::QInclude(Dialog & parent)
39         : base_class(parent, _("Child Document"))
40 {}
41
42
43 void QInclude::build_dialog()
44 {
45         dialog_.reset(new QIncludeDialog(this));
46
47         bcview().setOK(dialog_->okPB);
48         bcview().setCancel(dialog_->closePB);
49         bcview().addReadOnly(dialog_->filenameED);
50         bcview().addReadOnly(dialog_->browsePB);
51         bcview().addReadOnly(dialog_->visiblespaceCB);
52         bcview().addReadOnly(dialog_->typeCO);
53
54         addCheckedLineEdit(bcview(), dialog_->filenameED, dialog_->filenameLA);
55 }
56
57
58 void QInclude::update_contents()
59 {
60         PathValidator * path_validator = getPathValidator(dialog_->filenameED);
61         if (path_validator)
62                 path_validator->setChecker(kernel().docType(), lyxrc);
63
64         InsetCommandParams const & params = controller().params();
65
66         dialog_->filenameED->setText(toqstr(params.getContents()));
67
68         dialog_->visiblespaceCB->setChecked(false);
69         dialog_->visiblespaceCB->setEnabled(false);
70         dialog_->previewCB->setChecked(false);
71         dialog_->previewCB->setEnabled(false);
72
73         string cmdname = controller().params().getCmdName();
74         if (cmdname != "include" &&
75             cmdname != "verbatiminput" &&
76             cmdname != "verbatiminput*")
77                 cmdname = "input";
78
79         if (cmdname == "input") {
80                 dialog_->typeCO->setCurrentItem(0);
81                 dialog_->previewCB->setEnabled(true);
82                 dialog_->previewCB->setChecked(params.preview());
83
84         } else if (cmdname == "include") {
85                 dialog_->typeCO->setCurrentItem(1);
86
87         } else if (cmdname == "verbatiminput*") {
88                 dialog_->typeCO->setCurrentItem(2);
89                 dialog_->visiblespaceCB->setEnabled(true);
90                 dialog_->visiblespaceCB->setChecked(true);
91
92         } else if (cmdname == "verbatiminput") {
93                 dialog_->typeCO->setCurrentItem(2);
94                 dialog_->visiblespaceCB->setEnabled(true);
95         }
96 }
97
98
99 void QInclude::apply()
100 {
101         InsetCommandParams params = controller().params();
102
103         params.setContents(fromqstr(dialog_->filenameED->text()));
104         params.preview(dialog_->previewCB->isChecked());
105
106         int const item = dialog_->typeCO->currentItem();
107         if (item == 0)
108                 params.setCmdName("input");
109         else if (item == 1)
110                 params.setCmdName("include");
111         else {
112                 if (dialog_->visiblespaceCB->isChecked())
113                         params.setCmdName("verbatiminput*");
114                 else
115                         params.setCmdName("verbatiminput");
116         }
117         controller().setParams(params);
118 }
119
120
121 void QInclude::browse()
122 {
123         ControlInclude::Type type;
124
125         int const item = dialog_->typeCO->currentItem();
126         if (item == 0)
127                 type = ControlInclude::INPUT;
128         else if (item == 1)
129                 type = ControlInclude::INCLUDE;
130         else
131                 type = ControlInclude::VERBATIM;
132
133         string const & name = controller().browse(fromqstr(dialog_->filenameED->text()), type);
134         if (!name.empty())
135                 dialog_->filenameED->setText(toqstr(name));
136 }
137
138
139 void QInclude::load()
140 {
141         if (isValid()) {
142                 string const file(fromqstr(dialog_->filenameED->text()));
143                 slotOK();
144                 controller().load(file);
145         }
146 }
147
148
149 bool QInclude::isValid()
150 {
151         return !dialog_->filenameED->text().isEmpty();
152 }
153
154 } // namespace frontend
155 } // namespace lyx