#
# Print module for pyne.
#

import tempfile
import os
import gtk
import time
import pynei18n
import ptk.misc_widgets

class print_box(gtk.Window):
	"""
	A 'print' dialog box.
	"""
	def close(self, _w=None):
		self.destroy()
	
	def do_print(self, _a=None):
		command = self.command_entry.get_text()
		self.user.printer = command
		self.destroy()

		# for the moment print the whole damn thing...
		filename = tempfile.mktemp()
		f = open(filename, "w")
		self.user.tempfiles.append(filename)

		try:
			f.write("To: "+self.message.headers["to"]+"\n")
		except KeyError:
			try:
				f.write("Newsgroups: "+self.message.headers["newsgroups"]+"\n")
			except KeyError:
				pass

		f.write("From: "+self.message.headers["from"]+"\n")
		f.write("Subject: "+self.message.headers["subject"]+"\n")
		f.write("Date: "+time.strftime("%d %b %Y %H:%M:%S", time.localtime(self.message.date))+"\n")
		f.write("\n")
		f.write(self.message.external_parser(self.user, 0))
		f.close()

		pid = os.fork ()
		if pid == 0:
			os.system(command+" "+filename)
			os._exit(0)
		else:
			self.user.register_child (pid)

	def __init__(self, user, message):
		self.user = user
		self.message = message

		gtk.Window.__init__(self)
		self.set_name(_("Pyne - Print Message"))
		self.set_title(_("Pyne - Print Message"))

		box = gtk.VBox()
		self.add(box)
		box.show()

		box1 = gtk.HBox()
		box.pack_start(box1, expand=False)
		box1.set_border_width(5)
		box1.show()

		label = gtk.Label(_("Printer Command:"))
		box1.pack_start(label, expand=False)
		label.show()

		self.command_entry = gtk.Entry()
		box1.pack_start(self.command_entry)
		self.command_entry.set_text(self.user.printer)
		self.command_entry.show()

		sep = gtk.HSeparator()
		box.pack_start(sep, expand=False)
		sep.show()

		# page range still to do

		buttonbox = ptk.misc_widgets.MyButtonBox()
		box.pack_start(buttonbox, expand=False)
		buttonbox.show()

		button = gtk.Button(stock='gtk-print')
		button.connect("clicked", self.do_print)
		buttonbox.pack_end(button, expand=False)
		button.show()

		button = gtk.Button(stock='gtk-cancel')
		button.connect("clicked", self.close)
		buttonbox.pack_end(button, expand=False)
		button.show()




syntax highlighted by Code2HTML, v. 0.9.1