]> granicus.if.org Git - python/commitdiff
# This is a new module I wrote over the weekend. Again, you missed the
authorGuido van Rossum <guido@python.org>
Mon, 15 Jun 1998 14:49:16 +0000 (14:49 +0000)
committerGuido van Rossum <guido@python.org>
Mon, 15 Jun 1998 14:49:16 +0000 (14:49 +0000)
# checkin email because my PC doesn't have the "Mail" command.

Add threading (now that it works).  Also some small adaptations to
Unix again.

Tools/webchecker/wsgui.py

index 836b5ac8bcf7d177188c117a6723468fc6e2c95e..c23e87cbe0449b81c08bec920d9fdb8201ca6baf 100755 (executable)
@@ -12,9 +12,12 @@ import string
 import websucker
 import sys
 import os
+try:
+       import threading
+except ImportError:
+       threading = None
 
 VERBOSE = 1
-DEFAULT_URL = "http://www.python.org/download/"
 
 
 try:
@@ -49,27 +52,34 @@ class App(websucker.Sucker):
                top.columnconfigure(99, weight=1)
                self.url_label = Label(top, text="URL:")
                self.url_label.grid(row=0, column=0, sticky='e')
-               self.url_entry = Entry(top, width=60)
-               self.url_entry.insert(END, DEFAULT_URL)
-               self.url_entry.grid(row=0, column=1, sticky='we', columnspan=99)
+               self.url_entry = Entry(top, width=60, exportselection=0)
+               self.url_entry.grid(row=0, column=1, sticky='we',
+                                   columnspan=99)
+               self.url_entry.focus_set()
                self.dir_label = Label(top, text="Directory:")
                self.dir_label.grid(row=1, column=0, sticky='e')
                self.dir_entry = Entry(top)
-               self.dir_entry.grid(row=1, column=1, sticky='we', columnspan=99)
+               self.dir_entry.grid(row=1, column=1, sticky='we',
+                                   columnspan=99)
                self.exit_button = Button(top, text="Exit", command=self.exit)
                self.exit_button.grid(row=2, column=0, sticky='w')
                self.go_button = Button(top, text="Go", command=self.go)
                self.go_button.grid(row=2, column=1, sticky='w')
-               self.cancel_button = Button(top, text="Cancel", command=self.cancel,
+               self.cancel_button = Button(top, text="Cancel",
+                                           command=self.cancel,
                                            state=DISABLED)
                self.cancel_button.grid(row=2, column=2, sticky='w')
-               self.auto_button = Button(top, text="Paste+Go", command=self.auto)
+               self.auto_button = Button(top, text="Paste+Go",
+                                         command=self.auto)
                self.auto_button.grid(row=2, column=3, sticky='w')
                self.status_label = Label(top, text="[idle]")
                self.status_label.grid(row=2, column=4, sticky='w')
                sys.stdout = self
                self.top.update_idletasks()
                self.top.grid_propagate(0)
+
+       def mainloop(self):
+               self.top.mainloop()
        
        def exit(self):
                self.stopit = 1
@@ -80,6 +90,9 @@ class App(websucker.Sucker):
        buffer = ""
        
        def write(self, text):
+               self.top.update()
+               if self.stopit:
+                       raise Canceled
                sys.stderr.write(text)
                lines = string.split(text, "\n")
                if len(lines) > 1:
@@ -87,9 +100,6 @@ class App(websucker.Sucker):
                self.buffer = self.buffer + lines[-1]
                if string.strip(self.buffer):
                        self.message(self.buffer)
-               self.top.update()
-               if self.stopit:
-                       raise Canceled
        
        def message(self, text, *args):
                if args:
@@ -120,9 +130,15 @@ class App(websucker.Sucker):
                self.cancel_button.configure(state=NORMAL)
                self.status_label['text'] = '[running...]'
                self.top.update_idletasks()
+               if threading:
+                       t = threading.Thread(target=self.run1, args=(url,))
+                       t.start()
+               else:
+                       self.run1(url)
+
+       def run1(self, url):
                self.reset()
                self.addroot(url)
-
                self.stopit = 0
                try:
                        try:
@@ -143,8 +159,16 @@ class App(websucker.Sucker):
                self.message("[canceling...]")
        
        def auto(self):
-               text = self.top.selection_get(selection='CLIPBOARD')
-               text = string.strip(text)
+               tries = ['PRIMARY', 'CLIPBOARD']
+               text = ""
+               for t in tries:
+                       try:
+                               text = self.top.selection_get(selection=t)
+                       except TclError:
+                               continue
+                       text = string.strip(text)
+                       if text:
+                               break
                if not text:
                        self.top.bell()
                        self.message("[Error: clipboard is empty]")
@@ -153,9 +177,6 @@ class App(websucker.Sucker):
                self.url_entry.insert(0, text)
                self.top.update_idletasks()
                self.go()
-
-       def mainloop(self):
-               self.top.mainloop()
        
        def savefile(self, text, path):
                self.top.update()