('Save _As...', '<<save-window-as-file>>'),
('Save Co_py As...', '<<save-copy-of-window-as-file>>'),
None,
+ ('_Print window', '<<print-window>>'),
+ None,
('_Close', '<<close-window>>'),
('E_xit', '<<close-all-windows>>'),
]),
# which will only understand the local convention.
import os
+import tempfile
import tkFileDialog
import tkMessageBox
import re
+from configHandler import idleConf
#$ event <<open-window-from-file>>
#$ win <Control-o>
#$ win <Alt-s>
#$ unix <Control-x><Control-w>
+#$ event <<print-window>>
+#$ win <Control-p>
+#$ unix <Control-x><Control-p>
+
#$ event <<save-copy-of-window-as-file>>
#$ win <Alt-Shift-s>
#$ unix <Control-x><w>
self.save_as)
self.__id_savecopy = self.text.bind("<<save-copy-of-window-as-file>>",
self.save_a_copy)
-
+ self.__id_print = self.text.bind("<<print-window>>", self.print_window)
+
def close(self):
# Undo command bindings
self.text.unbind("<<open-window-from-file>>", self.__id_open)
self.text.unbind("<<save-window>>", self.__id_save)
self.text.unbind("<<save-window-as-file>>",self.__id_saveas)
self.text.unbind("<<save-copy-of-window-as-file>>", self.__id_savecopy)
+ self.text.unbind("<<print-window>>", self.__id_print)
# Break cycles
self.editwin = None
self.text = None
tkMessageBox.showerror("I/O Error", str(msg),
master=self.text)
return 0
-
+
+ def print_window(self, event):
+ tempfilename = None
+ if self.get_saved():
+ filename = self.filename
+ else:
+ filename = tempfilename = tempfile.mktemp()
+ if not self.writefile(filename):
+ os.unlink(tempfilename)
+ return "break"
+ platform=os.name
+ printPlatform=1
+ if platform == 'posix': #posix platform
+ command = idleConf.GetOption('main','General','print-command-posix')
+ command = command + " 2>&1"
+ elif platform == 'nt': #win32 platform
+ command = idleConf.GetOption('main','General','print-command-win')
+ else: #no printing for this platform
+ printPlatform=0
+ if printPlatform: #we can try to print for this platform
+ command = command % filename
+ pipe = os.popen(command, "r")
+ output = pipe.read().strip()
+ status = pipe.close()
+ if status:
+ output = "Printing failed (exit status 0x%x)\n" % status + output
+ if output:
+ output = "Printing command: %s\n" % repr(command) + output
+ tkMessageBox.showerror("Print status", output, master=self.text)
+ else: #no printing for this platform
+ message="Printing is not enabled for this platform: %s" % platform
+ tkMessageBox.showinfo("Print status", message, master=self.text)
+ return "break"
+
def fixlastline(self):
c = self.text.get("end-2c")
if c != '\n':
open-new-window=<Control-Key-n>
open-window-from-file=<Control-Key-o>
plain-newline-and-indent=<Control-Key-j>
+print-window=<Control-Key-p>
redo=<Control-Shift-Key-z>
remove-selection=<Key-Escape>
save-copy-of-window-as-file=<Alt-Shift-Key-s>
save-window-as-file=<Control-Shift-Key-s>
save-window=<Control-Key-s>
-select-all=<Alt-Key-a>
+select-all=<Control-Key-a>
toggle-auto-coloring=<Control-Key-slash>
undo=<Control-Key-z>
find=<Control-Key-f>
open-new-window=<Control-Key-x><Control-Key-n>
open-window-from-file=<Control-Key-x><Control-Key-f>
plain-newline-and-indent=<Control-Key-j>
+print-window=<Control-x><Control-Key-p>
python-docs=<Control-Key-h>
python-context-help=<Control-Shift-Key-h>
redo=<Alt-Key-z> <Meta-Key-z>
'<<open-new-window>>': ['<Control-n>'],
'<<open-window-from-file>>': ['<Control-o>'],
'<<plain-newline-and-indent>>': ['<Control-j>'],
+ '<<print-window>>': ['<Control-p>'],
'<<redo>>': ['<Control-y>'],
'<<remove-selection>>': ['<Escape>'],
'<<save-copy-of-window-as-file>>': ['<Alt-Shift-s>'],