* Bug in FileDlg class (src/filedlg.[hC]) when selecting a file and then
pressing ok, it counts as if no real selection done. Apparently
when choosing a file it doesn't update the select file input line.
- * Inline viewing is still not completely operational, in fact it is now
- disabled. To enable it enable the define:
- INSETGRAPHICS_INLINE_VIEW
* If we are trying to create a file in a read-only directory and there
are graphics that need converting, the converting will fail because
it is done in-place, into the same directory as the original image.
+ This needs to be fixed in the src/converter.C file
TODO Before initial production release:
* Replace insetfig everywhere
* Extract the general logic of the dialog in order to allow easier porting
to Gnome/KDE, and put the general logic in frontends and the inherited
platform dependent code in the appropriate dirs.
+ (Something of this kind is getting done by the GUII guys)
TODO Extended features:
#pragma implementation
#endif
-#define INSETGRAPHICS_INLINE_VIEW
-
#include "insets/insetgraphics.h"
#include "insets/insetgraphicsParams.h"
#include "graphics/GraphicsCache.h"
// Initialize only those variables that do not have a constructor.
InsetGraphics::InsetGraphics()
- : cacheHandle(0), pixmap(0), updateImage(false)
+ : cacheHandle(0), imageLoaded(false)
{}
InsetGraphics::~InsetGraphics()
{
char const * msg = 0;
-#ifdef INSETGRAPHICS_INLINE_VIEW
- if (cacheHandle) {
+ if (cacheHandle.get()) {
switch (cacheHandle->getImageStatus()) {
case GraphicsCacheItem::UnknownError:
msg = _("Unknown Error");
break;
}
}
-#else
- msg = _("Inline view disabled");
-#endif
return msg;
}
int InsetGraphics::ascent(BufferView *, LyXFont const &) const
{
- if (pixmap)
+ LyXImage * pixmap = 0;
+ if (cacheHandle.get() && (pixmap = cacheHandle->getImage()))
return pixmap->getHeight();
else
return 50;
int InsetGraphics::width(BufferView *, LyXFont const & font) const
{
- if (pixmap)
+ LyXImage * pixmap = 0;
+
+ if (cacheHandle.get() && (pixmap = cacheHandle->getImage()))
return pixmap->getWidth();
else {
char const * msg = statusMessage();
// This will draw the graphics. If the graphics has not been loaded yet,
// we draw just a rectangle.
- if (pixmap) {
+ if (imageLoaded) {
paint.image(int(old_x) + 2, baseline - lascent,
lwidth - 4, lascent + ldescent,
- pixmap);
+ cacheHandle->getImage());
} else {
-#ifdef INSETGRAPHICS_INLINE_VIEW
- if (!updateImage) {
- updateImage = true;
- updateInset();
- }
// Get the image status, default to unknown error.
GraphicsCacheItem::ImageStatus status = GraphicsCacheItem::UnknownError;
- if (cacheHandle)
+ if (cacheHandle.get())
status = cacheHandle->getImageStatus();
// Check if the image is now ready.
if (status == GraphicsCacheItem::Loaded) {
- // It is, get it and inform the world.
- pixmap = cacheHandle->getImage();
+ imageLoaded = true;
// Tell BufferView we need to be updated!
bv->text->status = LyXText::CHANGED_IN_DRAW;
return;
}
-#endif
char const * msg = statusMessage();
if (!buf->niceFile) {
string const temp = AddName(buf->tmppath, params.filename);
outfile = RemoveExtension(temp);
+
+ //lyxerr << "buf::tmppath = " << buf->tmppath << "\n";
+ //lyxerr << "filename = " << params.filename << "\n";
+ //lyxerr << "temp = " << temp << "\n";
+ //lyxerr << "outfile = " << outfile << endl;
} else {
string const path = OnlyPath(buf->fileName());
string const relname = MakeRelPath(params.filename, path);
// dialog.
void InsetGraphics::updateInset() const
{
-#ifdef INSETGRAPHICS_INLINE_VIEW
- if (updateImage) {
- GraphicsCache * gc = GraphicsCache::getInstance();
- GraphicsCacheItem * temp = 0;
+ GraphicsCache & gc = GraphicsCache::getInstance();
+ boost::shared_ptr<GraphicsCacheItem> temp(0);
- if (!params.filename.empty()) {
- temp = gc->addFile(params.filename);
- }
-
- delete cacheHandle;
- cacheHandle = temp;
+ // We do it this way so that in the face of some error, we will still
+ // be in a valid state.
+ if (!params.filename.empty()) {
+ temp = gc.addFile(params.filename);
}
-#else
- cacheHandle = 0;
-#endif
+
+ // Mark the image as unloaded so that it gets updated.
+ imageLoaded = false;
+
+ cacheHandle = temp;
}
bool InsetGraphics::setParams(InsetGraphicsParams const & params)
{
InsetGraphics * newInset = new InsetGraphics;
- if (cacheHandle)
- newInset->cacheHandle = cacheHandle->Clone();
- else
- newInset->cacheHandle = 0;
- newInset->pixmap = pixmap;
- newInset->updateImage = updateImage;
+ newInset->cacheHandle = cacheHandle;
+ newInset->imageLoaded = imageLoaded;
newInset->setParams(getParams());