2 * \file ControlExternal.C
3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
6 * \author Asger Alstrup
8 * \author Angus Leeming
10 * Full author contact details are available in file CREDITS
15 #include "ControlExternal.h"
17 #include "funcrequest.h"
19 #include "helper_funcs.h"
26 ControlExternal::ControlExternal(Dialog & parent)
27 : Dialog::Controller(parent)
31 void ControlExternal::initialiseParams(string const & data)
33 inset_.reset(new InsetExternal);
34 InsetExternal::Params params;
35 InsetExternalMailer::string2params(data, params);
36 inset_->setFromParams(params);
37 inset_->setView(kernel().bufferview());
41 void ControlExternal::clearParams()
47 void ControlExternal::dispatchParams()
49 string const lfun = InsetExternalMailer::params2string(params());
50 kernel().dispatch(FuncRequest(LFUN_INSET_APPLY, lfun));
54 void ControlExternal::setParams(InsetExternal::Params const & p)
56 inset_->setFromParams(p);
60 void ControlExternal::editExternal()
62 dialog().view().apply();
63 inset_->editExternal();
67 void ControlExternal::viewExternal()
69 dialog().view().apply();
70 inset_->viewExternal();
74 void ControlExternal::updateExternal()
76 dialog().view().apply();
77 inset_->updateExternal();
81 vector<string> const ControlExternal::getTemplates() const
83 vector<string> result;
85 ExternalTemplateManager::Templates::const_iterator i1, i2;
86 i1 = ExternalTemplateManager::get().getTemplates().begin();
87 i2 = ExternalTemplateManager::get().getTemplates().end();
89 for (; i1 != i2; ++i1) {
90 result.push_back(i1->second.lyxName);
96 int ControlExternal::getTemplateNumber(string const & name) const
98 ExternalTemplateManager::Templates::const_iterator i1, i2;
99 i1 = ExternalTemplateManager::get().getTemplates().begin();
100 i2 = ExternalTemplateManager::get().getTemplates().end();
101 for (int i = 0; i1 != i2; ++i1, ++i) {
102 if (i1->second.lyxName == name)
106 // we can get here if a LyX document has a template not installed
112 ExternalTemplate ControlExternal::getTemplate(int i) const
114 ExternalTemplateManager::Templates::const_iterator i1
115 = ExternalTemplateManager::get().getTemplates().begin();
123 string const ControlExternal::Browse(string const & input) const
125 string const title = _("Select external file");
127 string const bufpath = kernel().buffer()->filePath();
129 /// Determine the template file extension
130 ExternalTemplate const & et = params().templ;
131 string pattern = et.fileRegExp;
135 // FIXME: a temporary hack until the FileDialog interface is updated
138 std::pair<string, string> dir1(N_("Documents|#o#O"),
139 string(lyxrc.document_path));
141 return browseRelFile(input, bufpath, title, pattern, false, dir1);