#@+leo
#@+node:0::@file plugins/mod_image.py
#@+body
"""handle images"""

from leoPlugins import *
from leoGlobals import *


#@+others
#@+node:1::onSelect
#@+body
def onSelect (tag,keywords):

	import Tkinter,os

	new_v = keywords.get("new_v")
	h = new_v.headString()
	if h[:7] == "@image ":
		filename = h[7:]
		
		#@<< Select Image >>
		#@+node:1::<< Select Image >>
		#@+body
		# Display the image file in the text pane, if you can find the file
		a = app()
		c = keywords.get("c")
		body = c.frame.body
		
		if os.path.isfile(filename):
			try:
				# Note that Tkinter only understands GIF
				photo = Tkinter.PhotoImage(master=a.root, file=filename)
			except:
				es("error: cannot load image")
				return
			# Nicely display the image at the center top and push the text below.
			a.gsphoto = photo # This is soooo important.
			photoWidth = photo.width()
			bodyWidth = body.winfo_width()
			padding = int((bodyWidth - photoWidth - 16) / 2)
			padding = max(0,padding)
			a.gsimage = body.image_create("1.0",image=photo,padx=padding)
		else:
			es("warning: missing image file")
		#@-body
		#@-node:1::<< Select Image >>
#@-body
#@-node:1::onSelect
#@+node:2::onUnselect
#@+body
def onUnselect (tag,keywords):

	import Tkinter, os.path

	a = app()
	old_v = keywords.get("old_v")
	if old_v:
		h = old_v.headString()
		if h[:7] == "@image ":
			
			#@<< Unselect Image >>
			#@+node:1::<< Unselect Image >>
			#@+body
			# Erase image if it was previously displayed
			a = app() ; c = keywords.get("c")
			
			if a.gsimage:
				try:
					 c.frame.body.delete(a.gsimage)
				except:
					es("info: no image to erase")
			
			# And forget about it
			a.gsimage = None
			a.gsphoto = None
			
			#@-body
			#@-node:1::<< Unselect Image >>
					
	else: # Leo is initializing.
		a.gsphoto = None # Holds our photo file
		a.gsimage = None # Holds our image instance within the text pane
#@-body
#@-node:2::onUnselect
#@-others


if 1: # Register the handlers...
	registerHandler("select2", onSelect)
	registerHandler("unselect1", onUnselect)
	
	import mod_image
	es("...image v1.1: " + plugin_date(mod_image))
#@-body
#@-node:0::@file plugins/mod_image.py
#@-leo
