#
# 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