"""mailto: URI scheme handler."""

from Tkinter import *
import tktools
import os

from __main__ import app
from nullAPI import null_access


class mailto_access(null_access):

    def __init__(self, url, method, params):
	null_access.__init__(self, url, method, params)
	toplevel = MailDialog(app.root, url)


SENDMAIL = "/usr/lib/sendmail -t" # XXX

TEMPLATE ="""\
To: %(to)s
Subject: %(subject)s

"""

class MailDialog:

    template = TEMPLATE

    def __init__(self, master, address):
	self.master = master
	self.root = tktools.make_toplevel(self.master,
					  title="Mail Dialog")
	self.text, self.frame = tktools.make_text_box(self.root, 80, 24)
	self.botframe = Frame(self.root)
	self.botframe.pack(fill=X)
	self.send_button = Button(self.botframe,
				  text="Send",
				  command=self.send_command)
	self.send_button.pack(side=LEFT)
	self.cancel_button = Button(self.botframe,
				    text="Cancel",
				    command=self.cancel_command)
	self.cancel_button.pack(side=RIGHT)
	variables = {
	    'to': address,
	    'subject': "",		# XXX
	    }
	self.text.insert(END, self.template % variables)

    def send_command(self):
	message = self.text.get("1.0", END)
	if message:
	    self.root['cursor'] = 'watch'
	    self.text['cursor'] = 'watch'
	    self.root.update_idletasks()
	    if message[-1] != '\n': message = message + '\n'
	    p = os.popen(SENDMAIL, 'w')
	    p.write(message)
	    sts = p.close()
	    if sts:
		print "*** Sendmail exit status", sts, "***"
	self.root.destroy()

    def cancel_command(self):
	self.root.destroy()
