1 /* This file is part of
2 * ======================================================
4 * LyX, The Document Processor
6 * Copyright 2001 The LyX Team.
8 * ======================================================
10 * \file ControlExternal.C
11 * \author Asger Alstrup
12 * \author John Levon, moz@compsoc.man.ac.uk
13 * \author Angus Leeming <leeming@lyx.org>
19 #pragma implementation
22 #include "ControlExternal.h"
24 #include "BufferView.h"
26 #include "helper_funcs.h"
28 #include "support/filetools.h"
34 ControlExternal::ControlExternal(LyXView & lv, Dialogs & d)
35 : ControlInset<InsetExternal, InsetExternal::Params>(lv, d)
39 InsetExternal::Params const ControlExternal::getParams(string const &)
41 return InsetExternal::Params();
44 InsetExternal::Params const
45 ControlExternal::getParams(InsetExternal const & inset)
47 return inset.params();
51 void ControlExternal::applyParamsToInset()
53 inset()->setFromParams(params());
54 bufferview()->updateInset(inset(), true);
57 void ControlExternal::editExternal()
59 // fill the local, controller's copy of the Params struct with
60 // the contents of the dialog's fields.
63 // Create a local copy of the inset and initialise it with this
65 boost::scoped_ptr<InsetExternal> ie;
66 ie.reset(static_cast<InsetExternal *>(inset()->clone(*buffer())));
67 ie->setFromParams(params());
72 void ControlExternal::viewExternal()
76 boost::scoped_ptr<InsetExternal> ie;
77 ie.reset(static_cast<InsetExternal *>(inset()->clone(*buffer())));
78 ie->setFromParams(params());
83 void ControlExternal::updateExternal()
87 boost::scoped_ptr<InsetExternal> ie;
88 ie.reset(static_cast<InsetExternal *>(inset()->clone(*buffer())));
89 ie->setFromParams(params());
94 vector<string> const ControlExternal::getTemplates() const
96 vector<string> result;
98 ExternalTemplateManager::Templates::const_iterator i1, i2;
99 i1 = ExternalTemplateManager::get().getTemplates().begin();
100 i2 = ExternalTemplateManager::get().getTemplates().end();
102 for (; i1 != i2; ++i1) {
103 result.push_back(i1->second.lyxName);
109 int ControlExternal::getTemplateNumber(string const & name) const
113 ExternalTemplateManager::Templates::const_iterator i1, i2;
114 i1 = ExternalTemplateManager::get().getTemplates().begin();
115 i2 = ExternalTemplateManager::get().getTemplates().end();
116 for (; i1 != i2; ++i1) {
117 if (i1->second.lyxName == name)
122 // we can get here if a LyX document has a template not installed
128 ExternalTemplate ControlExternal::getTemplate(int i) const
130 ExternalTemplateManager::Templates::const_iterator i1;
131 i1 = ExternalTemplateManager::get().getTemplates().begin();
132 for (int n = 1; n < i; ++n)
139 string const ControlExternal::Browse(string const & input) const
141 string const title = _("Select external file");
143 string const bufpath = buffer()->filePath();
145 /// Determine the template file extension
146 ExternalTemplate const & et = params().templ;
147 string pattern = et.fileRegExp;
151 // FIXME: a temporary hack until the FileDialog interface is updated
154 std::pair<string, string> dir1(N_("Documents|#o#O"),
155 string(lyxrc.document_path));
157 return browseRelFile(&lv_, input, bufpath, title, pattern, dir1);