Kaydet (Commit) 7981ce57 authored tarafından Steven M. Gava's avatar Steven M. Gava

add a version of GvR's q&d python idle printing patch,

slightly tweaked and modified for the idlefork config system
üst 55ad7f84
......@@ -30,6 +30,8 @@ menudefs = [
('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>>'),
]),
......
......@@ -6,9 +6,11 @@
# 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>
......@@ -22,6 +24,10 @@ import re
#$ 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>
......@@ -38,13 +44,15 @@ class IOBinding:
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
......@@ -187,7 +195,40 @@ class IOBinding:
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':
......
......@@ -26,12 +26,13 @@ open-module=<Alt-Key-m>
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>
......@@ -59,6 +60,7 @@ open-module=<Control-Key-x><Control-Key-m>
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>
......
......@@ -28,6 +28,8 @@
[General]
editor-on-startup= 1
print-command-posix=lpr %s
print-command-win=start /min notepad /p %s
[EditorWindow]
width= 80
......
......@@ -507,6 +507,7 @@ class IdleConf:
'<<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>'],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment