mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 01:59:02 +00:00
Embedding: display a pin at the top left corner of embedded figures
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22439 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
e40499d5df
commit
06254d11df
@ -1428,6 +1428,7 @@ lib_images_files = Split('''
|
|||||||
note-next.png
|
note-next.png
|
||||||
paste.png
|
paste.png
|
||||||
promote.png
|
promote.png
|
||||||
|
pin.png
|
||||||
psnfss1.png
|
psnfss1.png
|
||||||
psnfss2.png
|
psnfss2.png
|
||||||
psnfss3.png
|
psnfss3.png
|
||||||
|
@ -335,6 +335,7 @@ dist_images_DATA = \
|
|||||||
images/note-insert.png \
|
images/note-insert.png \
|
||||||
images/note-next.png \
|
images/note-next.png \
|
||||||
images/paste.png \
|
images/paste.png \
|
||||||
|
images/pin.png \
|
||||||
images/promote.png \
|
images/promote.png \
|
||||||
images/psnfss1.png \
|
images/psnfss1.png \
|
||||||
images/psnfss2.png \
|
images/psnfss2.png \
|
||||||
|
BIN
lib/images/pin.png
Normal file
BIN
lib/images/pin.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 399 B |
@ -24,7 +24,8 @@ namespace graphics {
|
|||||||
Params::Params()
|
Params::Params()
|
||||||
: display(ColorDisplay),
|
: display(ColorDisplay),
|
||||||
scale(100),
|
scale(100),
|
||||||
angle(0)
|
angle(0),
|
||||||
|
icon("")
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -34,7 +35,8 @@ bool operator==(Params const & a, Params const & b)
|
|||||||
a.display == b.display &&
|
a.display == b.display &&
|
||||||
a.bb == b.bb &&
|
a.bb == b.bb &&
|
||||||
a.scale == b.scale &&
|
a.scale == b.scale &&
|
||||||
a.angle == b.angle);
|
a.angle == b.angle &&
|
||||||
|
a.icon == b.icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -72,6 +72,12 @@ public:
|
|||||||
*/
|
*/
|
||||||
/// Rotation angle.
|
/// Rotation angle.
|
||||||
double angle;
|
double angle;
|
||||||
|
|
||||||
|
/** The icon to be displayed to the top-left corner of an image.
|
||||||
|
* It is mutable because an icon reflects a temporary state of
|
||||||
|
* the image, and is variable.
|
||||||
|
*/
|
||||||
|
mutable std::string icon;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool operator==(Params const &, Params const &);
|
bool operator==(Params const &, Params const &);
|
||||||
|
@ -173,7 +173,7 @@ void InsetGraphics::doDispatch(Cursor & cur, FuncRequest & cmd)
|
|||||||
InsetGraphicsMailer::string2params(to_utf8(cmd.argument()), buffer, p);
|
InsetGraphicsMailer::string2params(to_utf8(cmd.argument()), buffer, p);
|
||||||
if (!p.filename.empty()) {
|
if (!p.filename.empty()) {
|
||||||
try {
|
try {
|
||||||
updateEmbeddedFile(buffer, p.filename);
|
p.filename.enable(buffer.embeddedFiles().enabled(), &buffer);
|
||||||
} catch (ExceptionMessage const & message) {
|
} catch (ExceptionMessage const & message) {
|
||||||
Alert::error(message.title_, message.details_);
|
Alert::error(message.title_, message.details_);
|
||||||
// do not set parameter if an error happens
|
// do not set parameter if an error happens
|
||||||
|
@ -274,6 +274,7 @@ graphics::Params InsetGraphicsParams::as_grfxParams() const
|
|||||||
{
|
{
|
||||||
graphics::Params pars;
|
graphics::Params pars;
|
||||||
pars.filename = filename.availableFile();
|
pars.filename = filename.availableFile();
|
||||||
|
pars.icon = filename.embedded() ? "pin.png" : "";
|
||||||
pars.scale = lyxscale;
|
pars.scale = lyxscale;
|
||||||
pars.angle = convert<double>(rotateAngle);
|
pars.angle = convert<double>(rotateAngle);
|
||||||
|
|
||||||
|
@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
#include "insets/Inset.h"
|
#include "insets/Inset.h"
|
||||||
|
|
||||||
|
#include "support/FileName.h"
|
||||||
|
#include "support/filetools.h"
|
||||||
#include "support/gettext.h"
|
#include "support/gettext.h"
|
||||||
#include "LyX.h"
|
#include "LyX.h"
|
||||||
#include "LyXRC.h"
|
#include "LyXRC.h"
|
||||||
@ -36,13 +38,16 @@ namespace lyx {
|
|||||||
RenderGraphic::RenderGraphic(Inset const * inset)
|
RenderGraphic::RenderGraphic(Inset const * inset)
|
||||||
{
|
{
|
||||||
loader_.connect(boost::bind(&Inset::updateFrontend, inset));
|
loader_.connect(boost::bind(&Inset::updateFrontend, inset));
|
||||||
|
icon_.connect(boost::bind(&Inset::updateFrontend, inset));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RenderGraphic::RenderGraphic(RenderGraphic const & other, Inset const * inset)
|
RenderGraphic::RenderGraphic(RenderGraphic const & other, Inset const * inset)
|
||||||
: RenderBase(other), loader_(other.loader_), params_(other.params_)
|
: RenderBase(other), loader_(other.loader_), icon_(other.icon_),
|
||||||
|
params_(other.params_)
|
||||||
{
|
{
|
||||||
loader_.connect(boost::bind(&Inset::updateFrontend, inset));
|
loader_.connect(boost::bind(&Inset::updateFrontend, inset));
|
||||||
|
icon_.connect(boost::bind(&Inset::updateFrontend, inset));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -58,6 +63,15 @@ void RenderGraphic::update(graphics::Params const & params)
|
|||||||
|
|
||||||
if (!params_.filename.empty())
|
if (!params_.filename.empty())
|
||||||
loader_.reset(params_.filename, params_);
|
loader_.reset(params_.filename, params_);
|
||||||
|
// If icon is set to empty, icon_ will not be reset to empty
|
||||||
|
// but will not be displayed. This is to avoid repeated loading
|
||||||
|
// of the same icon when figure status changes.
|
||||||
|
if (!params_.icon.empty()) {
|
||||||
|
support::FileName const icon = support::libFileSearch("images/",
|
||||||
|
params_.icon, "png");
|
||||||
|
if (!icon.empty()) // using an empty bounding box
|
||||||
|
icon_.reset(icon, graphics::Params());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -172,6 +186,10 @@ void RenderGraphic::draw(PainterInfo & pi, int x, int y) const
|
|||||||
loader_.startLoading();
|
loader_.startLoading();
|
||||||
if (!loader_.monitoring())
|
if (!loader_.monitoring())
|
||||||
loader_.startMonitoring();
|
loader_.startMonitoring();
|
||||||
|
if (icon_.status() == graphics::WaitingToLoad)
|
||||||
|
icon_.startLoading();
|
||||||
|
if (!icon_.monitoring())
|
||||||
|
icon_.startMonitoring();
|
||||||
}
|
}
|
||||||
|
|
||||||
// This will draw the graphics. If the graphics has not been
|
// This will draw the graphics. If the graphics has not been
|
||||||
@ -211,6 +229,9 @@ void RenderGraphic::draw(PainterInfo & pi, int x, int y) const
|
|||||||
y - 4, msg, msgFont);
|
y - 4, msg, msgFont);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!params_.icon.empty() && readyToDisplay(icon_))
|
||||||
|
pi.pain.image(x + Inset::TEXT_TO_INSET_OFFSET, y - dim_.asc,
|
||||||
|
10, 10, *icon_.image());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -45,6 +45,7 @@ private:
|
|||||||
|
|
||||||
/// The stored data.
|
/// The stored data.
|
||||||
graphics::Loader loader_;
|
graphics::Loader loader_;
|
||||||
|
graphics::Loader icon_;
|
||||||
graphics::Params params_;
|
graphics::Params params_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user