]> granicus.if.org Git - python/commitdiff
add a version of GvR's q&d python idle printing patch,
authorSteven M. Gava <elguavas@python.net>
Tue, 11 Jun 2002 04:45:34 +0000 (04:45 +0000)
committerSteven M. Gava <elguavas@python.net>
Tue, 11 Jun 2002 04:45:34 +0000 (04:45 +0000)
slightly tweaked and modified for the idlefork config system

Lib/idlelib/Bindings.py
Lib/idlelib/IOBinding.py
Lib/idlelib/config-keys.def
Lib/idlelib/config-main.def
Lib/idlelib/configHandler.py

index aae6106e0d27b7e5a7ba2cdd335f82978bf4bfd8..06e215e62b1f95c8bb7c2c0cc8af379bb63de83a 100644 (file)
@@ -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>>'),
   ]),
index 729f29bf8ce60dbc402a192161aa1531aa8ac2ac..eb901dc60e16f8d9c00dc7d54fc8c1fe7d49f9f2 100644 (file)
@@ -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':
index 8b3882704c836d76c03a9aa7dabbc049af2c6031..180d70e4251b0367482935866e2bef02b7e9dba6 100644 (file)
@@ -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>
index 01f06625f220d766c3a081892e49a30427295fda..cd52b210e3545c11b4ba613539b61aff23af79ba 100644 (file)
@@ -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
index 82bf6d27ade3a49d7dc7aab97ee22692b910df8e..1afd19ef3b0d24e45d3685ea80f94cff94a96ae5 100644 (file)
@@ -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>'],