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