On Jan 7, 2008 1:02 PM, Bo Peng <[EMAIL PROTECTED]> wrote:
> The attached new pin.png has transparent background.

With the attached updated patch, the icon is updated with embedding
status changes.

I will apply the patch tomorrow if there is no objection.

Bo
Index: development/scons/scons_manifest.py
===================================================================
--- development/scons/scons_manifest.py	(revision 22418)
+++ development/scons/scons_manifest.py	(working copy)
@@ -1428,6 +1428,7 @@
     note-next.png
     paste.png
     promote.png
+    pin.png
     psnfss1.png
     psnfss2.png
     psnfss3.png
Index: src/insets/InsetGraphics.cpp
===================================================================
--- src/insets/InsetGraphics.cpp	(revision 22418)
+++ src/insets/InsetGraphics.cpp	(working copy)
@@ -173,7 +173,7 @@
 		InsetGraphicsMailer::string2params(to_utf8(cmd.argument()), buffer, p);
 		if (!p.filename.empty()) {
 			try {
-				updateEmbeddedFile(buffer, p.filename);
+				p.filename.enable(buffer.embeddedFiles().enabled(), &buffer);
 			} catch (ExceptionMessage const & message) {
 				Alert::error(message.title_, message.details_);
 				// do not set parameter if an error happens
Index: src/insets/InsetGraphicsParams.cpp
===================================================================
--- src/insets/InsetGraphicsParams.cpp	(revision 22418)
+++ src/insets/InsetGraphicsParams.cpp	(working copy)
@@ -274,6 +274,7 @@
 {
 	graphics::Params pars;
 	pars.filename = filename.availableFile();
+	pars.icon = filename.embedded() ? "pin.png" : "";
 	pars.scale = lyxscale;
 	pars.angle = convert<double>(rotateAngle);
 
Index: src/insets/RenderGraphic.h
===================================================================
--- src/insets/RenderGraphic.h	(revision 22418)
+++ src/insets/RenderGraphic.h	(working copy)
@@ -45,6 +45,7 @@
 
 	/// The stored data.
 	graphics::Loader loader_;
+	graphics::Loader icon_;
 	graphics::Params params_;
 };
 
Index: src/insets/RenderGraphic.cpp
===================================================================
--- src/insets/RenderGraphic.cpp	(revision 22418)
+++ src/insets/RenderGraphic.cpp	(working copy)
@@ -14,6 +14,8 @@
 
 #include "insets/Inset.h"
 
+#include "support/FileName.h"
+#include "support/filetools.h"
 #include "support/gettext.h"
 #include "LyX.h"
 #include "LyXRC.h"
@@ -36,13 +38,16 @@
 RenderGraphic::RenderGraphic(Inset const * inset)
 {
 	loader_.connect(boost::bind(&Inset::updateFrontend, inset));
+	icon_.connect(boost::bind(&Inset::updateFrontend, 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));
+	icon_.connect(boost::bind(&Inset::updateFrontend, inset));
 }
 
 
@@ -58,6 +63,15 @@
 
 	if (!params_.filename.empty())
 		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 @@
 			loader_.startLoading();
 		if (!loader_.monitoring())
 			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
@@ -211,6 +229,9 @@
 				     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());
 }
 
 
Index: src/graphics/GraphicsParams.cpp
===================================================================
--- src/graphics/GraphicsParams.cpp	(revision 22418)
+++ src/graphics/GraphicsParams.cpp	(working copy)
@@ -24,7 +24,8 @@
 Params::Params()
 	: display(ColorDisplay),
 	  scale(100),
-	  angle(0)
+	  angle(0),
+	  icon("")
 {}
 
 
@@ -34,7 +35,8 @@
 		a.display == b.display &&
 		a.bb == b.bb &&
 		a.scale == b.scale &&
-		a.angle == b.angle);
+		a.angle == b.angle &&
+		a.icon == b.icon);
 }
 
 
Index: src/graphics/GraphicsParams.h
===================================================================
--- src/graphics/GraphicsParams.h	(revision 22418)
+++ src/graphics/GraphicsParams.h	(working copy)
@@ -72,6 +72,12 @@
 	 */
 	/// Rotation 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 &);
Index: lib/images/pin.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: lib/images/pin.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Index: lib/Makefile.am
===================================================================
--- lib/Makefile.am	(revision 22418)
+++ lib/Makefile.am	(working copy)
@@ -335,6 +335,7 @@
 	images/note-insert.png \
 	images/note-next.png \
 	images/paste.png \
+	images/pin.png \
 	images/promote.png \
 	images/psnfss1.png \
 	images/psnfss2.png \

Reply via email to