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