]> git.lyx.org Git - lyx.git/blob - src/frontends/qt2/QInclude.C
qtabular skeleton
[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 #ifdef __GNUG__
14 #pragma implementation
15 #endif
16
17 #include "ControlInclude.h"
18 #include "gettext.h"
19 #include "debug.h"
20
21 #include "QIncludeDialog.h"
22 #include "QInclude.h"
23 #include "Qt2BC.h"
24
25 #include <qlineedit.h>
26 #include <qpushbutton.h>
27 #include <qcheckbox.h>
28 #include <qcombobox.h>
29
30
31 typedef Qt2CB<ControlInclude, Qt2DB<QIncludeDialog> > base_class;
32
33
34 QInclude::QInclude()
35         : base_class(_("Include"))
36 {
37 }
38
39
40 void QInclude::build_dialog()
41 {
42         dialog_.reset(new QIncludeDialog(this));
43
44         bc().setOK(dialog_->okPB);
45         bc().setCancel(dialog_->closePB);
46         bc().addReadOnly(dialog_->filenameED);
47         bc().addReadOnly(dialog_->browsePB);
48         bc().addReadOnly(dialog_->visiblespaceCB);
49         bc().addReadOnly(dialog_->typeCO);
50 }
51
52
53 void QInclude::update_contents()
54 {
55         InsetInclude::Params const & params = controller().params();
56
57         dialog_->filenameED->setText(params.cparams.getContents().c_str());
58
59         dialog_->visiblespaceCB->setChecked(false);
60         dialog_->visiblespaceCB->setEnabled(false);
61
62         switch (params.flag) {
63                 case InsetInclude::INPUT:
64                         dialog_->typeCO->setCurrentItem(0);
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(dialog_->filenameED->text().latin1());
87
88         int const item = dialog_->typeCO->currentItem();
89         if (item == 0)
90                 params.flag = InsetInclude::INPUT;
91         else if (item == 1)
92                 params.flag = InsetInclude::INCLUDE;
93         else {
94                 if (dialog_->visiblespaceCB->isChecked())
95                         params.flag = InsetInclude::VERBAST;
96                 else
97                         params.flag = InsetInclude::VERB;
98         }
99 }
100
101
102 void QInclude::browse()
103 {
104         ControlInclude::Type type;
105
106         int const item = dialog_->typeCO->currentItem();
107         if (item == 0)
108                 type = ControlInclude::INPUT;
109         else if (item == 1)
110                 type = ControlInclude::INCLUDE;
111         else
112                 type = ControlInclude::VERBATIM;
113
114         string const & name = controller().Browse(dialog_->filenameED->text().latin1(), type);
115         if (!name.empty())
116                 dialog_->filenameED->setText(name.c_str());
117 }
118
119
120 void QInclude::load()
121 {
122         if (isValid()) {
123                 string const file(dialog_->filenameED->text().latin1());
124                 slotOK();
125                 controller().load(file);
126         }
127 }
128
129
130 bool QInclude::isValid()
131 {
132         return !string(dialog_->filenameED->text().latin1()).empty();
133 }