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