3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
8 * Full author contact details are available in file CREDITS
14 #include "ControlExternal.h"
15 #include "qt_helpers.h"
17 #include "insets/ExternalTemplate.h"
19 #include "support/lstrings.h"
20 #include "support/tostr.h"
22 #include <qlineedit.h>
23 #include <qpushbutton.h>
24 #include <qcheckbox.h>
25 #include <qcombobox.h>
26 #include <qtextview.h>
28 #include "QExternalDialog.h"
29 #include "QExternal.h"
34 using namespace lyx::support;
36 typedef QController<ControlExternal, QView<QExternalDialog> > base_class;
39 QExternal::QExternal(Dialog & parent)
40 : base_class(parent, _("LyX: External Material"))
45 void QExternal::build_dialog()
47 dialog_.reset(new QExternalDialog(this));
49 bcview().setOK(dialog_->okPB);
50 bcview().setApply(dialog_->applyPB);
51 bcview().setCancel(dialog_->closePB);
52 bcview().addReadOnly(dialog_->externalCO);
53 bcview().addReadOnly(dialog_->fileED);
54 bcview().addReadOnly(dialog_->browsePB);
56 std::vector<string> templates(controller().getTemplates());
58 for (std::vector<string>::const_iterator cit = templates.begin();
59 cit != templates.end(); ++cit) {
60 dialog_->externalCO->insertItem(toqstr(*cit), -1);
65 void QExternal::update_contents()
67 InsetExternal::Params const & params = controller().params();
69 dialog_->fileED->setText(toqstr(params.filename));
71 dialog_->externalCO->setCurrentItem(controller().getTemplateNumber(params.templatename));
72 dialog_->externalTV->setText(toqstr(helpText()));
75 switch (params.display) {
76 case grfx::DefaultDisplay: item = 0; break;
77 case grfx::MonochromeDisplay: item = 1; break;
78 case grfx::GrayscaleDisplay: item = 2; break;
79 case grfx::ColorDisplay: item = 3; break;
80 case grfx::NoDisplay: item = 0; break;
82 dialog_->showCB->setCurrentItem(item);
83 dialog_->showCB->setEnabled(params.display != grfx::NoDisplay &&
85 dialog_->displayCB->setChecked(params.display != grfx::NoDisplay);
86 dialog_->displayscale->setEnabled(params.display != grfx::NoDisplay &&
88 dialog_->displayscale->setText(toqstr(tostr(params.lyxscale)));
94 string const QExternal::helpText() const
96 ExternalTemplate templ =
97 controller().getTemplate(dialog_->externalCO->currentItem());
98 return templ.helpText;
102 void QExternal::apply()
104 InsetExternal::Params params = controller().params();
106 params.filename = fromqstr(dialog_->fileED->text());
108 params.templatename =
109 controller().getTemplate(dialog_->externalCO->currentItem()).lyxName;
111 switch (dialog_->showCB->currentItem()) {
112 case 0: params.display = grfx::DefaultDisplay; break;
113 case 1: params.display = grfx::MonochromeDisplay; break;
114 case 2: params.display = grfx::GrayscaleDisplay; break;
115 case 3: params.display = grfx::ColorDisplay; break;
119 if (!dialog_->displayCB->isChecked())
120 params.display = grfx::NoDisplay;
122 params.lyxscale = strToInt(fromqstr(dialog_->displayscale->text()));
124 controller().setParams(params);