#include "gettext.h"
#include "helper_funcs.h"
#include "lyxrc.h"
+
+#include "insets/ExternalTemplate.h"
+
+#include "support/LAssert.h"
#include <vector>
+using namespace lyx::support;
using std::vector;
{}
-void ControlExternal::initialiseParams(string const & data)
+bool ControlExternal::initialiseParams(string const & data)
{
- inset_.reset(new InsetExternal);
- InsetExternal::Params params;
- InsetExternalMailer::string2params(data, params);
- inset_->setFromParams(params);
- inset_->setView(kernel().bufferview());
+ params_.reset(new InsetExternal::Params);
+ InsetExternalMailer::string2params(data, *params_);
+ return true;
}
void ControlExternal::clearParams()
{
- inset_.reset();
+ params_.reset();
}
void ControlExternal::dispatchParams()
{
- InsetExternal::Params p = params();
- string const lfun = InsetExternalMailer::params2string("external", p);
+ string const lfun = InsetExternalMailer::params2string(params());
kernel().dispatch(FuncRequest(LFUN_INSET_APPLY, lfun));
}
void ControlExternal::setParams(InsetExternal::Params const & p)
{
- inset_->setFromParams(p);
+ Assert(params_.get());
+ *params_ = p;
}
-void ControlExternal::editExternal()
+InsetExternal::Params const & ControlExternal::params() const
{
- dialog().view().apply();
- inset_->editExternal();
+ Assert(params_.get());
+ return *params_;
}
-void ControlExternal::viewExternal()
+void ControlExternal::editExternal()
{
- dialog().view().apply();
- inset_->viewExternal();
-}
-
+ Assert(params_.get());
-void ControlExternal::updateExternal()
-{
dialog().view().apply();
- inset_->updateExternal();
+ string const lfun = InsetExternalMailer::params2string(params());
+ kernel().dispatch(FuncRequest(LFUN_EXTERNAL_EDIT, lfun));
}
ExternalTemplateManager::Templates::const_iterator i1
= ExternalTemplateManager::get().getTemplates().begin();
- std::advance(i1, i);
+ std::advance(i1, i);
return i1->second;
}
+namespace {
+
+ExternalTemplate const * getTemplatePtr(InsetExternal::Params const & params)
+{
+ ExternalTemplateManager & etm = ExternalTemplateManager::get();
+ ExternalTemplate const & templ = etm.getTemplateByName(params.templatename);
+ if (templ.lyxName.empty())
+ return 0;
+ return &templ;
+}
+
+} // namespace anon
+
+
string const ControlExternal::Browse(string const & input) const
{
string const title = _("Select external file");
string const bufpath = kernel().buffer()->filePath();
/// Determine the template file extension
- ExternalTemplate const & et = params().templ;
- string pattern = et.fileRegExp;
- if (pattern.empty())
- pattern = "*";
+ string pattern = "*";
+ ExternalTemplate const * const et_ptr = getTemplatePtr(params());
+ if (et_ptr)
+ pattern = et_ptr->fileRegExp;
// FIXME: a temporary hack until the FileDialog interface is updated
pattern += '|';