return *this;
}
+
namespace {
/// The translator between the Display enum and corresponding lyx string.
} // namespace anon
+
Translator<DisplayType, string> const & displayTranslator()
{
static Translator<DisplayType, string> const translator =
}
-namespace {
-
-enum RenderType {
- RENDERBUTTON,
- RENDERGRAPHIC,
- RENDERPREVIEW
-};
-
-RenderType getRenderType(InsetExternalParams const & p)
-{
- if (!external::getTemplatePtr(p) || p.filename.empty() ||
- p.display == external::NoDisplay)
- return RENDERBUTTON;
-
- if (p.display == external::PreviewDisplay) {
- if (RenderPreview::activated())
- return RENDERPREVIEW;
- return RENDERBUTTON;
- }
-
- if (p.display == external::DefaultDisplay &&
- lyxrc.display_graphics == graphics::NoDisplay)
- return RENDERBUTTON;
- return RENDERGRAPHIC;
-}
-
-
-RenderGraphic &
-graphicRenderer(boost::scoped_ptr<RenderBase> const & renderer)
-{
- RenderGraphic * const ptr =
- dynamic_cast<RenderGraphic *>(renderer.get());
- BOOST_ASSERT(ptr);
- return *ptr;
-}
-
-
-RenderMonitoredPreview &
-previewRenderer(boost::scoped_ptr<RenderBase> const & renderer)
-{
- RenderMonitoredPreview * const ptr =
- dynamic_cast<RenderMonitoredPreview *>(renderer.get());
- BOOST_ASSERT(ptr);
- return *ptr;
-}
-
-} // namespace anon
-
-
InsetExternal::InsetExternal()
: renderer_(new RenderButton)
{}
params_(other.params_),
renderer_(other.renderer_->clone())
{
- switch (getRenderType(params_)) {
- case RENDERBUTTON:
- break;
-
- case RENDERGRAPHIC: {
- RenderGraphic * const ptr =
- dynamic_cast<RenderGraphic *>(renderer_.get());
- if (!ptr) {
- lyxerr << "InsetExternal::InsetExternal "
- << "Not a RenderGraphic!!"
- << std::endl;
- return;
- }
+ if (renderer_->asMonitoredPreview() != 0) {
+ RenderMonitoredPreview * const ptr = renderer_->asMonitoredPreview();
ptr->connect(boost::bind(&InsetExternal::statusChanged, this));
-// RenderGraphic & renderer = graphicRenderer(renderer_);
-// renderer.connect(boost::bind(&InsetExternal::statusChanged, this));
- break;
- }
+ ptr->fileChanged(boost::bind(&InsetExternal::fileChanged, this));
- case RENDERPREVIEW: {
- RenderMonitoredPreview * const ptr =
- dynamic_cast<RenderMonitoredPreview *>(renderer_.get());
- if (!ptr) {
- lyxerr << "InsetExternal::InsetExternal "
- << "Not a RenderPreview!!"
- << std::endl;
- return;
- }
+ } else if (renderer_->asGraphic() != 0 ) {
+ RenderGraphic * const ptr = renderer_->asGraphic();
ptr->connect(boost::bind(&InsetExternal::statusChanged, this));
- ptr->fileChanged(boost::bind(&InsetExternal::fileChanged, this));
-// RenderMonitoredPreview & renderer = previewRenderer(renderer_);
-// renderer.connect(boost::bind(&InsetExternal::statusChanged, this));
-// renderer.fileChanged(boost::bind(&InsetExternal::fileChanged, this));
- break;
- }
}
}
namespace {
+enum RenderType {
+ RENDERBUTTON,
+ RENDERGRAPHIC,
+ RENDERPREVIEW
+};
+
+
+RenderType getRenderType(InsetExternalParams const & p)
+{
+ if (!external::getTemplatePtr(p) ||
+ p.filename.empty() ||
+ p.display == external::NoDisplay)
+ return RENDERBUTTON;
+
+ if (p.display == external::PreviewDisplay) {
+ if (RenderPreview::activated())
+ return RENDERPREVIEW;
+ return RENDERBUTTON;
+ }
+
+ if (p.display == external::DefaultDisplay &&
+ lyxrc.display_graphics == graphics::NoDisplay)
+ return RENDERBUTTON;
+ return RENDERGRAPHIC;
+}
+
+
graphics::Params get_grfx_params(InsetExternalParams const & eparams)
{
graphics::Params gparams;
void InsetExternal::setParams(InsetExternalParams const & p,
Buffer const & buffer)
{
- // The stored params; what we would like to happen in an ideal world.
params_ = p;
- // We display the inset as a button by default.
switch (getRenderType(params_)) {
case RENDERBUTTON: {
- RenderButton * button_ptr =
- dynamic_cast<RenderButton *>(renderer_.get());
+ RenderButton * button_ptr = renderer_->asButton();
if (!button_ptr) {
button_ptr = new RenderButton;
renderer_.reset(button_ptr);
break;
} case RENDERGRAPHIC: {
- RenderGraphic * graphic_ptr =
- dynamic_cast<RenderGraphic *>(renderer_.get());
+ RenderGraphic * graphic_ptr = renderer_->asGraphic();
if (!graphic_ptr) {
graphic_ptr = new RenderGraphic;
graphic_ptr->connect(
graphic_ptr->update(get_grfx_params(params_));
break;
+
} case RENDERPREVIEW: {
RenderMonitoredPreview * preview_ptr =
- dynamic_cast<RenderMonitoredPreview *>(renderer_.get());
+ renderer_->asMonitoredPreview();
if (!preview_ptr) {
preview_ptr = new RenderMonitoredPreview;
preview_ptr->connect(
if (!buffer_ptr)
return;
- RenderMonitoredPreview & renderer = previewRenderer(renderer_);
+ RenderMonitoredPreview * const ptr = renderer_->asMonitoredPreview();
+ BOOST_ASSERT(ptr);
Buffer const & buffer = *buffer_ptr;
- renderer.removePreview(buffer);
- add_preview(renderer, *this, buffer);
- renderer.startLoading(buffer);
+ ptr->removePreview(buffer);
+ add_preview(*ptr, *this, buffer);
+ ptr->startLoading(buffer);
}
void InsetExternal::addPreview(graphics::PreviewLoader & ploader) const
{
- if (getRenderType(params_) != RENDERPREVIEW)
+ RenderMonitoredPreview * const ptr = renderer_->asMonitoredPreview();
+ if (!ptr)
return;
- RenderMonitoredPreview & renderer = previewRenderer(renderer_);
-
if (preview_wanted(params())) {
- renderer.setAbsFile(params_.filename.absFilename());
+ ptr->setAbsFile(params_.filename.absFilename());
string const snippet = latex_string(*this, ploader.buffer());
- renderer.addPreview(snippet, ploader);
+ ptr->addPreview(snippet, ploader);
}
}