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 = [ ...@@ -30,6 +30,8 @@ menudefs = [
('Save _As...', '<<save-window-as-file>>'), ('Save _As...', '<<save-window-as-file>>'),
('Save Co_py As...', '<<save-copy-of-window-as-file>>'), ('Save Co_py As...', '<<save-copy-of-window-as-file>>'),
None, None,
('_Print window', '<<print-window>>'),
None,
('_Close', '<<close-window>>'), ('_Close', '<<close-window>>'),
('E_xit', '<<close-all-windows>>'), ('E_xit', '<<close-all-windows>>'),
]), ]),
......
...@@ -6,9 +6,11 @@ ...@@ -6,9 +6,11 @@
# which will only understand the local convention. # which will only understand the local convention.
import os import os
import tempfile
import tkFileDialog import tkFileDialog
import tkMessageBox import tkMessageBox
import re import re
from configHandler import idleConf
#$ event <<open-window-from-file>> #$ event <<open-window-from-file>>
#$ win <Control-o> #$ win <Control-o>
...@@ -22,6 +24,10 @@ import re ...@@ -22,6 +24,10 @@ import re
#$ win <Alt-s> #$ win <Alt-s>
#$ unix <Control-x><Control-w> #$ unix <Control-x><Control-w>
#$ event <<print-window>>
#$ win <Control-p>
#$ unix <Control-x><Control-p>
#$ event <<save-copy-of-window-as-file>> #$ event <<save-copy-of-window-as-file>>
#$ win <Alt-Shift-s> #$ win <Alt-Shift-s>
#$ unix <Control-x><w> #$ unix <Control-x><w>
...@@ -38,13 +44,15 @@ class IOBinding: ...@@ -38,13 +44,15 @@ class IOBinding:
self.save_as) self.save_as)
self.__id_savecopy = self.text.bind("<<save-copy-of-window-as-file>>", self.__id_savecopy = self.text.bind("<<save-copy-of-window-as-file>>",
self.save_a_copy) self.save_a_copy)
self.__id_print = self.text.bind("<<print-window>>", self.print_window)
def close(self): def close(self):
# Undo command bindings # Undo command bindings
self.text.unbind("<<open-window-from-file>>", self.__id_open) self.text.unbind("<<open-window-from-file>>", self.__id_open)
self.text.unbind("<<save-window>>", self.__id_save) self.text.unbind("<<save-window>>", self.__id_save)
self.text.unbind("<<save-window-as-file>>",self.__id_saveas) 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("<<save-copy-of-window-as-file>>", self.__id_savecopy)
self.text.unbind("<<print-window>>", self.__id_print)
# Break cycles # Break cycles
self.editwin = None self.editwin = None
self.text = None self.text = None
...@@ -187,7 +195,40 @@ class IOBinding: ...@@ -187,7 +195,40 @@ class IOBinding:
tkMessageBox.showerror("I/O Error", str(msg), tkMessageBox.showerror("I/O Error", str(msg),
master=self.text) master=self.text)
return 0 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): def fixlastline(self):
c = self.text.get("end-2c") c = self.text.get("end-2c")
if c != '\n': if c != '\n':
......
...@@ -26,12 +26,13 @@ open-module=<Alt-Key-m> ...@@ -26,12 +26,13 @@ open-module=<Alt-Key-m>
open-new-window=<Control-Key-n> open-new-window=<Control-Key-n>
open-window-from-file=<Control-Key-o> open-window-from-file=<Control-Key-o>
plain-newline-and-indent=<Control-Key-j> plain-newline-and-indent=<Control-Key-j>
print-window=<Control-Key-p>
redo=<Control-Shift-Key-z> redo=<Control-Shift-Key-z>
remove-selection=<Key-Escape> remove-selection=<Key-Escape>
save-copy-of-window-as-file=<Alt-Shift-Key-s> save-copy-of-window-as-file=<Alt-Shift-Key-s>
save-window-as-file=<Control-Shift-Key-s> save-window-as-file=<Control-Shift-Key-s>
save-window=<Control-Key-s> save-window=<Control-Key-s>
select-all=<Alt-Key-a> select-all=<Control-Key-a>
toggle-auto-coloring=<Control-Key-slash> toggle-auto-coloring=<Control-Key-slash>
undo=<Control-Key-z> undo=<Control-Key-z>
find=<Control-Key-f> find=<Control-Key-f>
...@@ -59,6 +60,7 @@ open-module=<Control-Key-x><Control-Key-m> ...@@ -59,6 +60,7 @@ open-module=<Control-Key-x><Control-Key-m>
open-new-window=<Control-Key-x><Control-Key-n> open-new-window=<Control-Key-x><Control-Key-n>
open-window-from-file=<Control-Key-x><Control-Key-f> open-window-from-file=<Control-Key-x><Control-Key-f>
plain-newline-and-indent=<Control-Key-j> plain-newline-and-indent=<Control-Key-j>
print-window=<Control-x><Control-Key-p>
python-docs=<Control-Key-h> python-docs=<Control-Key-h>
python-context-help=<Control-Shift-Key-h> python-context-help=<Control-Shift-Key-h>
redo=<Alt-Key-z> <Meta-Key-z> redo=<Alt-Key-z> <Meta-Key-z>
......
...@@ -28,6 +28,8 @@ ...@@ -28,6 +28,8 @@
[General] [General]
editor-on-startup= 1 editor-on-startup= 1
print-command-posix=lpr %s
print-command-win=start /min notepad /p %s
[EditorWindow] [EditorWindow]
width= 80 width= 80
......
...@@ -507,6 +507,7 @@ class IdleConf: ...@@ -507,6 +507,7 @@ class IdleConf:
'<<open-new-window>>': ['<Control-n>'], '<<open-new-window>>': ['<Control-n>'],
'<<open-window-from-file>>': ['<Control-o>'], '<<open-window-from-file>>': ['<Control-o>'],
'<<plain-newline-and-indent>>': ['<Control-j>'], '<<plain-newline-and-indent>>': ['<Control-j>'],
'<<print-window>>': ['<Control-p>'],
'<<redo>>': ['<Control-y>'], '<<redo>>': ['<Control-y>'],
'<<remove-selection>>': ['<Escape>'], '<<remove-selection>>': ['<Escape>'],
'<<save-copy-of-window-as-file>>': ['<Alt-Shift-s>'], '<<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