]> git.lyx.org Git - lyx.git/blob - src/frontends/qt2/QInclude.C
better selection and scrolling behaviour
[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         dialog_->previewCB->setChecked(false);
62         dialog_->previewCB->setEnabled(false);
63
64         switch (params.flag) {
65                 case InsetInclude::INPUT:
66                         dialog_->typeCO->setCurrentItem(0);
67                         dialog_->previewCB->setEnabled(true);
68                         dialog_->previewCB->setChecked(params.cparams.preview());
69                         break;
70
71                 case InsetInclude::INCLUDE:
72                         dialog_->typeCO->setCurrentItem(1);
73                         break;
74
75                 case InsetInclude::VERBAST:
76                         dialog_->visiblespaceCB->setChecked(true);
77                         /* fall through */
78                 case InsetInclude::VERB:
79                         dialog_->typeCO->setCurrentItem(2);
80                         dialog_->visiblespaceCB->setEnabled(true);
81                         break;
82         }
83 }
84
85
86 void QInclude::apply()
87 {
88         InsetInclude::Params & params = controller().params();
89
90         params.cparams.setContents(dialog_->filenameED->text().latin1());
91         params.cparams.preview(dialog_->previewCB->isChecked());
92
93         int const item = dialog_->typeCO->currentItem();
94         if (item == 0)
95                 params.flag = InsetInclude::INPUT;
96         else if (item == 1)
97                 params.flag = InsetInclude::INCLUDE;
98         else {
99                 if (dialog_->visiblespaceCB->isChecked())
100                         params.flag = InsetInclude::VERBAST;
101                 else
102                         params.flag = InsetInclude::VERB;
103         }
104 }
105
106
107 void QInclude::browse()
108 {
109         ControlInclude::Type type;
110
111         int const item = dialog_->typeCO->currentItem();
112         if (item == 0)
113                 type = ControlInclude::INPUT;
114         else if (item == 1)
115                 type = ControlInclude::INCLUDE;
116         else
117                 type = ControlInclude::VERBATIM;
118
119         string const & name = controller().Browse(dialog_->filenameED->text().latin1(), type);
120         if (!name.empty())
121                 dialog_->filenameED->setText(name.c_str());
122 }
123
124
125 void QInclude::load()
126 {
127         if (isValid()) {
128                 string const file(dialog_->filenameED->text().latin1());
129                 slotOK();
130                 controller().load(file);
131         }
132 }
133
134
135 bool QInclude::isValid()
136 {
137         return !string(dialog_->filenameED->text().latin1()).empty();
138 }