]> granicus.if.org Git - python/commitdiff
Whitespace Normalization
authorKurt B. Kaiser <kbk@shore.net>
Tue, 31 Dec 2002 16:03:23 +0000 (16:03 +0000)
committerKurt B. Kaiser <kbk@shore.net>
Tue, 31 Dec 2002 16:03:23 +0000 (16:03 +0000)
23 files changed:
Lib/idlelib/CallTipWindow.py
Lib/idlelib/CallTips.py
Lib/idlelib/ColorDelegator.py
Lib/idlelib/Debugger.py
Lib/idlelib/EditorWindow.py
Lib/idlelib/IOBinding.py
Lib/idlelib/OutputWindow.py
Lib/idlelib/PyShell.py
Lib/idlelib/RemoteDebugger.py
Lib/idlelib/ScriptBinding.py
Lib/idlelib/ZoomHeight.py
Lib/idlelib/aboutDialog.py
Lib/idlelib/boolcheck.py
Lib/idlelib/configDialog.py
Lib/idlelib/configHandler.py
Lib/idlelib/configHelpSourceEdit.py
Lib/idlelib/configSectionNameDialog.py
Lib/idlelib/dynOptionMenuWidget.py
Lib/idlelib/keybindingDialog.py
Lib/idlelib/macosx_main.py
Lib/idlelib/rpc.py
Lib/idlelib/tabpage.py
Lib/idlelib/textView.py

index d089a8792a14cea902c6fa3d7f186db0cf2b297f..990d96eedb00e071aa97cf7c0db9b03a8440e6c4 100644 (file)
@@ -37,7 +37,7 @@ class CallTip:
             # This command is only needed and available on Tk >= 8.4.0 for OSX
             # Without it, call tips intrude on the typing process by grabbing
             # the focus.
-            tw.tk.call("::tk::unsupported::MacWindowStyle", "style", tw._w, 
+            tw.tk.call("::tk::unsupported::MacWindowStyle", "style", tw._w,
                        "help", "noActivates")
         except TclError:
             pass
index fa43032a3b371e5dee72895bef9aecbb66f72bb4..3f247d487f2cb11e1221a82cbb66c61842d60911 100644 (file)
@@ -81,10 +81,10 @@ class CallTips:
         while i and str[i-1] in idchars:
             i -= 1
         return str[i:]
-        
+
     def fetch_tip(self, name):
-        """Return the argument list and docstring of a function or class 
-        
+        """Return the argument list and docstring of a function or class
+
         If there is a Python subprocess, get the calltip there.  Otherwise,
         either fetch_tip() is running in the subprocess itself or it was called
         in an IDLE EditorWindow before any script had been run.
@@ -93,7 +93,7 @@ class CallTips:
         two unrelated modules are being edited some calltips in the current
         module may be inoperative if the module was not the last to run.
 
-        """  
+        """
         try:
             rpcclt = self.editwin.flist.pyshell.interp.rpcclt
         except:
@@ -211,7 +211,7 @@ if __name__=='__main__':
         print "%d of %d tests failed" % (len(failed), len(tests))
 
     tc = TC()
-    tests = (t1, t2, t3, t4, t5, t6, 
+    tests = (t1, t2, t3, t4, t5, t6,
              TC, tc.t1, tc.t2, tc.t3, tc.t4, tc.t5, tc.t6)
 
     test(tests)
index d91b530ffa14be8d7719974ab8a269f586f4b810..cc92259c56023738a98bb9e13075f469251fd852 100644 (file)
@@ -52,7 +52,7 @@ class ColorDelegator(Delegator):
             if cnf:
                 apply(self.tag_configure, (tag,), cnf)
         self.tag_raise('sel')
-    
+
     def LoadTagDefs(self):
         theme = idleConf.GetOption('main','Theme','name')
         self.tagdefs = {
@@ -67,7 +67,7 @@ class ColorDelegator(Delegator):
             # The following is used by ReplaceDialog:
             "hit": idleConf.GetHighlight(theme, "hit"),
             }
-        
+
     if DEBUG: print 'tagdefs',tagdefs
 
     def insert(self, index, chars, tags=None):
index 30d0002eaf6dca682a2b6e9226c981804a2b9d00..3ad6a83f2d8c3f8fff4520c03b26b678747dab62 100644 (file)
@@ -15,17 +15,17 @@ class Idb(bdb.Bdb):
     def user_line(self, frame):
 
         co_filename = frame.f_code.co_filename
-        co_name = frame.f_code.co_name 
+        co_name = frame.f_code.co_name
 
         ## print>>sys.__stderr__, "*function: ", frame.f_code.co_name
-        ## print>>sys.__stderr__, "*file: ", frame.f_code.co_filename        
+        ## print>>sys.__stderr__, "*file: ", frame.f_code.co_filename
         ## print>>sys.__stderr__, "*line number: ", frame.f_code.co_firstlineno
         ## print>>sys.__stderr__, "*name: ", co_name
         ## print>>sys.__stderr__, "*function: ", frame.f_locals.get(co_name,None)
 
         try:
             # XXX 12 Dec 2002 CGT TO DO: Find way to get a reference to the
-            # XXX currently running function. If the function has an 
+            # XXX currently running function. If the function has an
             #     attribute called "DebuggerStepThrough", prevent the debugger
             #     from stepping through Idle code. The following doesn't work
             #     in instance methods. Hard coded some workarounds.
@@ -75,7 +75,7 @@ class Debugger:
         self.frame = None
         self.make_gui()
         self.interacting = 0
-        
+
     def run(self, *args):
         try:
             self.interacting = 1
index 7c209e791a2d851f1d9c9f6787c7b67e326c1336..96a894a4b55a334e25f2afd570e24f7f2ad73850 100644 (file)
@@ -111,7 +111,7 @@ class EditorWindow:
         text.bind("<<untabify-region>>",self.untabify_region_event)
         text.bind("<<toggle-tabs>>",self.toggle_tabs_event)
         text.bind("<<change-indentwidth>>",self.change_indentwidth_event)
-        
+
         if flist:
             flist.inversedict[self] = key
             if key:
@@ -186,7 +186,7 @@ class EditorWindow:
         if self.extensions.has_key('AutoIndent'):
             self.extensions['AutoIndent'].set_indentation_params(
                 self.ispythonsource(filename))
+
     def set_status_bar(self):
         self.status_bar = self.MultiStatusBar(self.top)
         self.status_bar.set_label('column', 'Col: ?', side=RIGHT)
@@ -273,21 +273,21 @@ class EditorWindow:
 
     def about_dialog(self, event=None):
         aboutDialog.AboutDialog(self.top,'About IDLEfork')
-        
+
     def config_dialog(self, event=None):
         configDialog.ConfigDialog(self.top,'Settings')
-        
+
     def good_advice(self, event=None):
         tkMessageBox.showinfo('Advice', "Don't Panic!", master=self.text)
 
     def view_readme(self, event=None):
         fn=os.path.join(os.path.abspath(os.path.dirname(__file__)),'README.txt')
-        textView.TextViewer(self.top,'IDLEfork - README',fn)        
+        textView.TextViewer(self.top,'IDLEfork - README',fn)
 
     def help_dialog(self, event=None):
         fn=os.path.join(os.path.abspath(os.path.dirname(__file__)),'help.txt')
-        textView.TextViewer(self.top,'Help',fn)        
-        
+        textView.TextViewer(self.top,'Help',fn)
+
     help_url = "http://www.python.org/doc/current/"
     if sys.platform[:3] == "win":
         fn = os.path.dirname(__file__)
@@ -469,7 +469,7 @@ class EditorWindow:
         self.per.removefilter(self.color)
         self.color = None
         self.per.insertfilter(self.undo)
-        
+
     def ResetColorizer(self):
         "Update the colour theme if it is changed"
         # Called from configDialog.py
@@ -478,7 +478,7 @@ class EditorWindow:
             self.per.insertfilter(self.color)
 
     def ResetFont(self):
-        "Update the text widgets' font if it is changed" 
+        "Update the text widgets' font if it is changed"
         # Called from configDialog.py
         fontWeight='normal'
         if idleConf.GetOption('main','EditorWindow','font-bold',type='bool'):
@@ -535,15 +535,15 @@ class EditorWindow:
                 self.menuExtraHelp.add_command(label=menuItem[0],
                         command=self.__DisplayExtraHelpCallback(menuItem[1]))
         else: #no extra help items
-            if hasattr(self,'menuExtraHelp'): 
-                helpMenu.delete(cascadeIndex-1)                    
+            if hasattr(self,'menuExtraHelp'):
+                helpMenu.delete(cascadeIndex-1)
                 del(self.menuExtraHelp)
-    
+
     def __DisplayExtraHelpCallback(self,helpFile):
         def DisplayExtraHelp(helpFile=helpFile):
             self.display_docs(helpFile)
         return DisplayExtraHelp
-                    
+
     def UpdateRecentFilesList(self,newFile=None):
         "Load or update the recent files list, and menu if required"
         rfList=[]
@@ -553,7 +553,7 @@ class EditorWindow:
                 rfList=RFfile.readlines()
             finally:
                 RFfile.close()
-        if newFile: 
+        if newFile:
             newFile=os.path.abspath(newFile)+'\n'
             if newFile in rfList:
                 rfList.remove(newFile)
@@ -567,7 +567,7 @@ class EditorWindow:
             for instance in self.top.instanceDict.keys():
                 menu = instance.menuRecentFiles
                 menu.delete(1,END)
-                i = 0 ; ul = 0; ullen = len(ullist)                
+                i = 0 ; ul = 0; ullen = len(ullist)
                 for file in rfList:
                     fileName=file[0:-1]
                     callback = instance.__RecentFileCallback(fileName)
@@ -577,13 +577,13 @@ class EditorWindow:
                                      command=callback,
                                      underline=ul)
                     i += 1
-                    
+
     def __CleanRecentFiles(self,rfList):
         origRfList=rfList[:]
         count=0
         nonFiles=[]
         for path in rfList:
-            if not os.path.exists(path[0:-1]): 
+            if not os.path.exists(path[0:-1]):
                 nonFiles.append(count)
             count=count+1
         if nonFiles:
@@ -599,12 +599,12 @@ class EditorWindow:
         finally:
             RFfile.close()
         return rfList
-    
+
     def __RecentFileCallback(self,fileName):
         def OpenRecentFile(fileName=fileName):
             self.io.open(editFile=fileName)
         return OpenRecentFile
-    
+
     def saved_change_hook(self):
         short = self.short_title()
         long = self.long_title()
@@ -672,7 +672,7 @@ class EditorWindow:
     def maybesave(self):
         if self.io:
             if not self.get_saved():
-                if self.top.state()!='normal': 
+                if self.top.state()!='normal':
                     self.top.deiconify()
                 self.top.lower()
                 self.top.lift()
index a90157ea0c73881ca97893862181c581627e72cd..e5ae5051aad0f2b24fd7fb05ecd2d5bbd678a29f 100644 (file)
@@ -103,7 +103,7 @@ class IOBinding:
                                             self.save_a_copy)
         self.fileencoding = None
         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)
@@ -366,7 +366,7 @@ class IOBinding:
             "# -*- coding: %s -*- \nto your file" % enc,
             master = self.text)
         return chars
+
     def fixlastline(self):
         c = self.text.get("end-2c")
         if c != '\n':
@@ -403,10 +403,10 @@ class IOBinding:
                 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 
+            message="Printing is not enabled for this platform: %s" % platform
             tkMessageBox.showinfo("Print status", message, master=self.text)
         return "break"
-    
+
     opendialog = None
     savedialog = None
 
index 7522720c29e10ee258c228aac027fe83225d0be0..9d705d6aeeb63c7b945c80715f2cd34764cddafa 100644 (file)
@@ -146,10 +146,3 @@ class OnDemandOutputWindow:
 
 #      def flush(self):
 #          pass
-
-
-
-
-
-
-
index eb5c6af75316e12a81c12bb5e97ae099bee2c3cb..61143594fb3481cd3bfdc65b853110888504dd84 100644 (file)
@@ -62,7 +62,7 @@ def extended_linecache_checkcache(orig_checkcache=linecache.checkcache):
             save[filename] = cache[filename]
     orig_checkcache()
     cache.update(save)
-    
+
 # Patch linecache.checkcache():
 linecache.checkcache = extended_linecache_checkcache
 
@@ -194,7 +194,7 @@ class PyShellEditorWindow(EditorWindow):
             lines = open(self.breakpointPath,"r").readlines()
             for line in lines:
                 if line.startswith(filename + '='):
-                    breakpoint_linenumbers = eval(line[len(filename)+1:]) 
+                    breakpoint_linenumbers = eval(line[len(filename)+1:])
                     for breakpoint_linenumber in breakpoint_linenumbers:
                         self.set_breakpoint(breakpoint_linenumber)
 
@@ -226,7 +226,7 @@ class PyShellEditorWindow(EditorWindow):
         "Extend base method - clear breaks when module is closed"
         self.clear_file_breaks()
         EditorWindow._close(self)
-                                
+
 
 class PyShellFileList(FileList):
     "Extend base class: file list when a shell is present"
@@ -246,7 +246,7 @@ class PyShellFileList(FileList):
 
 class ModifiedColorDelegator(ColorDelegator):
     "Extend base class: colorizer for the shell window itself"
-    
+
     def __init__(self):
         ColorDelegator.__init__(self)
         self.LoadTagDefs()
@@ -255,7 +255,7 @@ class ModifiedColorDelegator(ColorDelegator):
         self.tag_remove("TODO", "1.0", "iomark")
         self.tag_add("SYNC", "1.0", "iomark")
         ColorDelegator.recolorize_main(self)
-    
+
     def LoadTagDefs(self):
         ColorDelegator.LoadTagDefs(self)
         theme = idleConf.GetOption('main','Theme','name')
@@ -300,7 +300,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
     rpcclt = None
     rpcpid = None
 
-    def spawn_subprocess(self):         
+    def spawn_subprocess(self):
         args = self.build_subprocess_arglist()
         self.rpcpid = os.spawnv(os.P_NOWAIT, args[0], args)
 
@@ -312,7 +312,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
             # here are the applet architectures tried:
             #
             # framework applet: sys.executable + -p is correct
-            # python 2.2 + pure python main applet: 
+            # python 2.2 + pure python main applet:
             #                   sys.executable + -p is correct
             # pythonw idle.py:  sys.executable + -c is correct
             #
@@ -360,7 +360,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
         # close only the subprocess debugger
         debug = self.getdebugger()
         if debug:
-            RemoteDebugger.close_subprocess_debugger(self.rpcclt)           
+            RemoteDebugger.close_subprocess_debugger(self.rpcclt)
         # kill subprocess, spawn a new one, accept connection
         self.rpcclt.close()
         self.spawn_subprocess()
@@ -434,7 +434,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
         while tb:
             for rpcfile in exclude:
                 if tb[-1][0].count(rpcfile):
-                    break       
+                    break
             else:
                 break
             del tb[-1]
@@ -525,7 +525,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
         lines = source.split("\n")
         linecache.cache[filename] = len(source)+1, 0, lines, filename
         return filename
-    
+
     def showsyntaxerror(self, filename=None):
         """Extend base class method: Add Colorizing
 
@@ -587,7 +587,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
             "The Python Shell window is already executing a command; "
             "please wait until it is finished.",
             master=self.tkconsole.text)
-        
+
     def runcommand(self, code):
         "Run the code without invoking the debugger"
         # The code better not raise an exception!
@@ -1075,10 +1075,10 @@ class PseudoFile:
 
 usage_msg = """\
 
-USAGE: idle  [-deis] [-t title] [file]*             
+USAGE: idle  [-deis] [-t title] [file]*
        idle  [-ds] [-t title] (-c cmd | -r file) [arg]*
        idle  [-ds] [-t title] - [arg]*
-       
+
   -h         print this help message and exit
 
 The following options will override the IDLE 'settings' configuration:
@@ -1175,7 +1175,7 @@ def main():
     if args and args[0] == '-':
         cmd = sys.stdin.read()
         enable_shell = True
-        
+
     use_subprocess = True
 
     # process sys.argv and sys.path:
@@ -1202,9 +1202,9 @@ def main():
             sys.path.insert(0, dir)
     # check the IDLE settings configuration (but command line overrides)
     edit_start = idleConf.GetOption('main', 'General',
-                                    'editor-on-startup', type='bool') 
+                                    'editor-on-startup', type='bool')
     enable_edit = enable_edit or edit_start
-    enable_shell = enable_shell or not edit_start  
+    enable_shell = enable_shell or not edit_start
     # start editor and/or shell windows:
     root = Tk(className="Idle")
     fixwordbreaks(root)
@@ -1258,7 +1258,7 @@ start. Here are some possible causes of this problem:
   3. Personal firewall software is preventing IDLE from using this port
 
 IDLE makes and accepts connections only with this computer, and does not
-communicate over the internet in any way. Its use of port 8833 should not 
+communicate over the internet in any way. Its use of port 8833 should not
 be a security risk on a single-user machine.
 """
 
index f9430d0058796acb8a7fbf21b39d2b8adb81da85..054b975485c3d560d90a3d623d36dd59d6d7277a 100644 (file)
@@ -121,7 +121,7 @@ class IdbAdapter:
     def clear_all_file_breaks(self, filename):
         msg = self.idb.clear_all_file_breaks(filename)
         return msg
-    
+
     #----------called by a FrameProxy----------
 
     def frame_attr(self, fid, name):
@@ -366,7 +366,7 @@ def close_remote_debugger(rpcclt):
     debugger and RPC link objects.  (The second reference to the debugger GUI
     is deleted in PyShell.close_remote_debugger().)
 
-    """    
+    """
     close_subprocess_debugger(rpcclt)
     rpcclt.unregister(gui_adap_oid)
 
@@ -377,4 +377,3 @@ def restart_subprocess_debugger(rpcclt):
     idb_adap_oid_ret = rpcclt.remotecall("exec", "start_the_debugger",\
                                          (gui_adap_oid,), {})
     assert idb_adap_oid_ret == idb_adap_oid, 'Idb restarted with different oid'
-
index 8ab8e7afcdf7262557edc699f7a985ada2914c0d..0140c6943047e1e902ee2edb96c71ae00e63595a 100644 (file)
@@ -99,7 +99,7 @@ class ScriptBinding:
             self.errorbox("Syntax error",
                           "There's an error in your program:\n" + msg)
             return False
-        
+
     def colorize_syntax_error(self, msg, lineno, offset):
         text = self.editwin.text
         pos = "0.0 + %d lines + %d chars" % (lineno-1, offset-1)
@@ -112,7 +112,7 @@ class ScriptBinding:
         else:
             text.mark_set("insert", pos + "+1c")
         text.see(pos)
-        
+
     def run_script_event(self, event):
         "Check syntax, if ok run the script in the shell top level"
         filename = self.getfilename()
index d65af663d9e8825c5447c58f0db23b8639245175..2ab4656e4cfaafb00c73fee0b6e71521906b0497 100644 (file)
@@ -10,7 +10,7 @@ class ZoomHeight:
             ('_Zoom Height', '<<zoom-height>>'),
          ])
     ]
+
     def __init__(self, editwin):
         self.editwin = editwin
 
@@ -33,7 +33,7 @@ def zoom_height(top):
         #newy = 24
         newy = 0
         #newheight = newheight - 96
-        newheight = newheight - 88       
+        newheight = newheight - 88
     if height >= newheight:
         newgeom = ""
     else:
index 89c0a48d8c5e00489d68579ff17784d2f7628948..2fc4a428b25806c170a954a9bba326ec32245b9e 100644 (file)
@@ -10,7 +10,7 @@ import idlever
 class AboutDialog(Toplevel):
     """
     modal about dialog for idle
-    """ 
+    """
     def __init__(self,parent,title):
         Toplevel.__init__(self, parent)
         self.configure(borderwidth=5)
@@ -18,7 +18,7 @@ class AboutDialog(Toplevel):
                 parent.winfo_rooty()+30))
         self.bg="#707070"
         self.fg="#ffffff"
-        
+
         self.CreateWidgets()
         self.resizable(height=FALSE,width=FALSE)
         self.title(title)
@@ -33,7 +33,7 @@ class AboutDialog(Toplevel):
         self.bind('<Return>',self.Ok) #dismiss dialog
         self.bind('<Escape>',self.Ok) #dismiss dialog
         self.wait_window()
-        
+
     def CreateWidgets(self):
         frameMain = Frame(self,borderwidth=2,relief=SUNKEN)
         frameButtons = Frame(self)
@@ -83,7 +83,7 @@ class AboutDialog(Toplevel):
         #handle weird tk version num in windoze python >= 1.6 (?!?)
         tkVer = `TkVersion`.split('.')
         tkVer[len(tkVer)-1] = str('%.3g' % (float('.'+tkVer[len(tkVer)-1])))[2:]
-        if tkVer[len(tkVer)-1] == '': 
+        if tkVer[len(tkVer)-1] == '':
             tkVer[len(tkVer)-1] = '0'
         tkVer = string.join(tkVer,'.')
         labelTkVer = Label(frameBg,text='Tk version:  '+
@@ -105,7 +105,7 @@ class AboutDialog(Toplevel):
 
     def ShowLicense(self):
         self.ViewFile('About - License','LICENSE.txt')
-        
+
     def ShowCredits(self):
         self.ViewFile('About - Credits','CREDITS.txt')
 
@@ -115,7 +115,7 @@ class AboutDialog(Toplevel):
 
     def Ok(self, event=None):
         self.destroy()
-    
+
 if __name__ == '__main__':
     #test the dialog
     root=Tk()
index bc988d7b6806a0278e9405760eeafd98e7618a0d..f682232e4958784a046d593cfe2b27d53a1abe86 100644 (file)
@@ -1,5 +1,5 @@
 "boolcheck - import this module to ensure True, False, bool() builtins exist."
-try: 
+try:
     True
 except NameError:
     import __builtin__
@@ -7,4 +7,3 @@ except NameError:
     __builtin__.False = 0
     from operator import truth
     __builtin__.bool = truth
-
index 5baf7cfb5e0a7f5f871b9553476b2d6fd0b1d9bb..a68330d4d2f91c911bba20c7eee7017a6e031cb3 100644 (file)
@@ -14,7 +14,7 @@ from configHelpSourceEdit import GetHelpSourceDialog
 class ConfigDialog(Toplevel):
     """
     configuration dialog for idle
-    """ 
+    """
     def __init__(self,parent,title):
         Toplevel.__init__(self, parent)
         self.configure(borderwidth=5)
@@ -22,7 +22,7 @@ class ConfigDialog(Toplevel):
                 parent.winfo_rooty()+30))
         #Theme Elements. Each theme element key is it's display name.
         #The first value of the tuple is the sample area tag name.
-        #The second value is the display name list sort index. 
+        #The second value is the display name list sort index.
         self.themeElements={'Normal Text':('normal','00'),
             'Python Keywords':('keyword','01'),
             'Python Definitions':('definition','02'),
@@ -48,9 +48,9 @@ class ConfigDialog(Toplevel):
         #self.bind('<Alt-a>',self.Apply) #apply changes, save
         #self.bind('<F1>',self.Help) #context help
         self.LoadConfigs()
-        self.AttachVarCallbacks() #avoid callbacks during LoadConfigs 
+        self.AttachVarCallbacks() #avoid callbacks during LoadConfigs
         self.wait_window()
-        
+
     def CreateWidgets(self):
         self.tabPages = TabPageSet(self,
                 pageNames=['Fonts/Tabs','Highlighting','Keys','General'])
@@ -75,7 +75,7 @@ class ConfigDialog(Toplevel):
         self.buttonCancel.pack(side=LEFT,padx=5,pady=5)
         frameActionButtons.pack(side=BOTTOM)
         self.tabPages.pack(side=TOP,expand=TRUE,fill=BOTH)
-   
+
     def CreatePageFontTab(self):
         #tkVars
         self.fontSize=StringVar(self)
@@ -83,7 +83,7 @@ class ConfigDialog(Toplevel):
         self.fontName=StringVar(self)
         self.spaceNum=IntVar(self)
         #self.tabCols=IntVar(self)
-        self.indentBySpaces=BooleanVar(self) 
+        self.indentBySpaces=BooleanVar(self)
         self.editFont=tkFont.Font(self,('courier',12,'normal'))
         ##widget creation
         #body frame
@@ -168,7 +168,7 @@ class ConfigDialog(Toplevel):
         self.fgHilite=BooleanVar(self)
         self.colour=StringVar(self)
         self.fontName=StringVar(self)
-        self.themeIsBuiltin=BooleanVar(self) 
+        self.themeIsBuiltin=BooleanVar(self)
         self.highlightTarget=StringVar(self)
         ##widget creation
         #body frame
@@ -194,7 +194,7 @@ class ConfigDialog(Toplevel):
             (' ','normal'),('stderr','stderr'),('\n','normal'))
         for txTa in textAndTags:
             text.insert(END,txTa[0],txTa[1])
-        for element in self.themeElements.keys(): 
+        for element in self.themeElements.keys():
             text.tag_bind(self.themeElements[element][0],'<ButtonPress-1>',
                 lambda event,elem=element: event.widget.winfo_toplevel()
                 .highlightTarget.set(elem))
@@ -211,7 +211,7 @@ class ConfigDialog(Toplevel):
         self.radioBg=Radiobutton(frameFgBg,variable=self.fgHilite,
             value=0,text='Background',command=self.SetColourSampleBinding)
         self.fgHilite.set(1)
-        buttonSaveCustomTheme=Button(frameCustom, 
+        buttonSaveCustomTheme=Button(frameCustom,
             text='Save as New Custom Theme',command=self.SaveAsNewTheme)
         #frameTheme
         labelThemeTitle=Label(frameTheme,text='Select a Highlighting Theme')
@@ -240,7 +240,7 @@ class ConfigDialog(Toplevel):
         self.optMenuHighlightTarget.pack(side=TOP,expand=TRUE,fill=X,padx=8,pady=3)
         self.radioFg.pack(side=LEFT,anchor=E)
         self.radioBg.pack(side=RIGHT,anchor=W)
-        buttonSaveCustomTheme.pack(side=BOTTOM,fill=X,padx=5,pady=5)        
+        buttonSaveCustomTheme.pack(side=BOTTOM,fill=X,padx=5,pady=5)
         #frameTheme
         labelThemeTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
         labelTypeTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
@@ -256,7 +256,7 @@ class ConfigDialog(Toplevel):
         self.bindingTarget=StringVar(self)
         self.builtinKeys=StringVar(self)
         self.customKeys=StringVar(self)
-        self.keysAreBuiltin=BooleanVar(self) 
+        self.keysAreBuiltin=BooleanVar(self)
         self.keyBinding=StringVar(self)
         ##widget creation
         #body frame
@@ -300,8 +300,8 @@ class ConfigDialog(Toplevel):
         frameKeySets.pack(side=LEFT,padx=5,pady=5,fill=Y)
         #frameCustom
         labelCustomTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
-        buttonSaveCustomKeys.pack(side=BOTTOM,fill=X,padx=5,pady=5)        
-        self.buttonNewKeys.pack(side=BOTTOM,fill=X,padx=5,pady=5)        
+        buttonSaveCustomKeys.pack(side=BOTTOM,fill=X,padx=5,pady=5)
+        self.buttonNewKeys.pack(side=BOTTOM,fill=X,padx=5,pady=5)
         frameTarget.pack(side=LEFT,padx=5,pady=5,expand=TRUE,fill=BOTH)
         #frame target
         frameTarget.columnconfigure(0,weight=1)
@@ -321,16 +321,16 @@ class ConfigDialog(Toplevel):
         return frame
 
     def CreatePageGeneral(self):
-        #tkVars        
-        self.winWidth=StringVar(self)       
+        #tkVars
+        self.winWidth=StringVar(self)
         self.winHeight=StringVar(self)
-        self.startupEdit=IntVar(self)       
+        self.startupEdit=IntVar(self)
         self.userHelpBrowser=BooleanVar(self)
         self.helpBrowser=StringVar(self)
         #widget creation
         #body
         frame=self.tabPages.pages['General']['page']
-        #body section frames        
+        #body section frames
         frameRun=Frame(frame,borderwidth=2,relief=GROOVE)
         frameWinSize=Frame(frame,borderwidth=2,relief=GROOVE)
         frameHelp=Frame(frame,borderwidth=2,relief=GROOVE)
@@ -383,7 +383,7 @@ class ConfigDialog(Toplevel):
         labelRunTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
         labelRunChoiceTitle.pack(side=LEFT,anchor=W,padx=5,pady=5)
         radioStartupEdit.pack(side=LEFT,anchor=W,padx=5,pady=5)
-        radioStartupShell.pack(side=LEFT,anchor=W,padx=5,pady=5)     
+        radioStartupShell.pack(side=LEFT,anchor=W,padx=5,pady=5)
         #frameWinSize
         labelWinSizeTitle.pack(side=LEFT,anchor=W,padx=5,pady=5)
         entryWinHeight.pack(side=RIGHT,anchor=E,padx=10,pady=5)
@@ -414,12 +414,12 @@ class ConfigDialog(Toplevel):
         self.colour.trace_variable('w',self.VarChanged_colour)
         self.builtinTheme.trace_variable('w',self.VarChanged_builtinTheme)
         self.customTheme.trace_variable('w',self.VarChanged_customTheme)
-        self.themeIsBuiltin.trace_variable('w',self.VarChanged_themeIsBuiltin) 
+        self.themeIsBuiltin.trace_variable('w',self.VarChanged_themeIsBuiltin)
         self.highlightTarget.trace_variable('w',self.VarChanged_highlightTarget)
         self.keyBinding.trace_variable('w',self.VarChanged_keyBinding)
         self.builtinKeys.trace_variable('w',self.VarChanged_builtinKeys)
         self.customKeys.trace_variable('w',self.VarChanged_customKeys)
-        self.keysAreBuiltin.trace_variable('w',self.VarChanged_keysAreBuiltin) 
+        self.keysAreBuiltin.trace_variable('w',self.VarChanged_keysAreBuiltin)
         self.winWidth.trace_variable('w',self.VarChanged_winWidth)
         self.winHeight.trace_variable('w',self.VarChanged_winHeight)
         self.startupEdit.trace_variable('w',self.VarChanged_startupEdit)
@@ -427,7 +427,7 @@ class ConfigDialog(Toplevel):
     def VarChanged_fontSize(self,*params):
         value=self.fontSize.get()
         self.AddChangedItem('main','EditorWindow','font-size',value)
-        
+
     def VarChanged_fontName(self,*params):
         value=self.fontName.get()
         self.AddChangedItem('main','EditorWindow','font',value)
@@ -472,7 +472,7 @@ class ConfigDialog(Toplevel):
 
     def VarChanged_highlightTarget(self,*params):
         self.SetHighlightTarget()
-        
+
     def VarChanged_keyBinding(self,*params):
         value=self.keyBinding.get()
         keySet=self.customKeys.get()
@@ -484,7 +484,7 @@ class ConfigDialog(Toplevel):
             extName=idleConf.GetExtnNameForEvent(event)
             extKeybindSection=extName+'_cfgBindings'
             self.AddChangedItem('extensions',extKeybindSection,event,value)
-        
+
     def VarChanged_builtinKeys(self,*params):
         value=self.builtinKeys.get()
         self.AddChangedItem('main','Keys','name',value)
@@ -497,9 +497,9 @@ class ConfigDialog(Toplevel):
             self.LoadKeysList(value)
 
     def VarChanged_keysAreBuiltin(self,*params):
-        value=self.keysAreBuiltin.get() 
+        value=self.keysAreBuiltin.get()
         self.AddChangedItem('main','Keys','default',value)
-        if value: 
+        if value:
             self.VarChanged_builtinKeys()
         else:
             self.VarChanged_customKeys()
@@ -518,8 +518,8 @@ class ConfigDialog(Toplevel):
 
     def ResetChangedItems(self):
         #When any config item is changed in this dialog, an entry
-        #should be made in the relevant section (config type) of this 
-        #dictionary. The key should be the config file section name and the 
+        #should be made in the relevant section (config type) of this
+        #dictionary. The key should be the config file section name and the
         #value a dictionary, whose key:value pairs are item=value pairs for
         #that config file section.
         self.changedItems={'main':{},'highlight':{},'keys':{},'extensions':{}}
@@ -527,9 +527,9 @@ class ConfigDialog(Toplevel):
     def AddChangedItem(self,type,section,item,value):
         value=str(value) #make sure we use a string
         if not self.changedItems[type].has_key(section):
-            self.changedItems[type][section]={}    
+            self.changedItems[type][section]={}
         self.changedItems[type][section][item]=value
-    
+
     def GetDefaultItems(self):
         dItems={'main':{},'highlight':{},'keys':{},'extensions':{}}
         for configType in dItems.keys():
@@ -537,11 +537,11 @@ class ConfigDialog(Toplevel):
             for section in sections:
                 dItems[configType][section]={}
                 options=idleConf.defaultCfg[configType].GetOptionList(section)
-                for option in options:            
+                for option in options:
                     dItems[configType][section][option]=(
                             idleConf.defaultCfg[configType].Get(section,option))
         return dItems
-            
+
     def SetThemeType(self):
         if self.themeIsBuiltin.get():
             self.optMenuThemeBuiltin.config(state=NORMAL)
@@ -563,14 +563,14 @@ class ConfigDialog(Toplevel):
             self.radioKeysCustom.config(state=NORMAL)
             self.optMenuKeysCustom.config(state=NORMAL)
             self.buttonDeleteCustomKeys.config(state=NORMAL)
-    
+
     def GetNewKeys(self):
         listIndex=self.listBindings.index(ANCHOR)
         binding=self.listBindings.get(listIndex)
         bindName=binding.split()[0] #first part, up to first space
-        if self.keysAreBuiltin.get(): 
+        if self.keysAreBuiltin.get():
             currentKeySetName=self.builtinKeys.get()
-        else:  
+        else:
             currentKeySetName=self.customKeys.get()
         currentBindings=idleConf.GetCurrentKeySet()
         if currentKeySetName in self.changedItems['keys'].keys(): #unsaved changes
@@ -589,8 +589,8 @@ class ConfigDialog(Toplevel):
                     self.listBindings.select_set(listIndex)
                     self.listBindings.select_anchor(listIndex)
                     return
-                else: #create new custom key set based on previously active key set 
-                    self.CreateNewKeySet(newKeySet)    
+                else: #create new custom key set based on previously active key set
+                    self.CreateNewKeySet(newKeySet)
             self.listBindings.delete(listIndex)
             self.listBindings.insert(listIndex,bindName+' - '+newKeys)
             self.listBindings.select_set(listIndex)
@@ -606,7 +606,7 @@ class ConfigDialog(Toplevel):
         newKeySet=GetCfgSectionNameDialog(self,'New Custom Key Set',
                 message,usedNames).result
         return newKeySet
-    
+
     def SaveAsNewKeySet(self):
         newKeysName=self.GetNewKeysName('New Key Set Name:')
         if newKeysName:
@@ -618,9 +618,9 @@ class ConfigDialog(Toplevel):
     def CreateNewKeySet(self,newKeySetName):
         #creates new custom key set based on the previously active key set,
         #and makes the new key set active
-        if self.keysAreBuiltin.get(): 
+        if self.keysAreBuiltin.get():
             prevKeySetName=self.builtinKeys.get()
-        else:  
+        else:
             prevKeySetName=self.customKeys.get()
         prevKeys=idleConf.GetCoreKeys(prevKeySetName)
         newKeys={}
@@ -641,7 +641,7 @@ class ConfigDialog(Toplevel):
         self.optMenuKeysCustom.SetMenu(customKeyList,newKeySetName)
         self.keysAreBuiltin.set(0)
         self.SetKeysType()
-    
+
     def LoadKeysList(self,keySetName):
         reselect=0
         newKeySet=0
@@ -652,7 +652,7 @@ class ConfigDialog(Toplevel):
         bindNames=keySet.keys()
         bindNames.sort()
         self.listBindings.delete(0,END)
-        for bindName in bindNames: 
+        for bindName in bindNames:
             key=string.join(keySet[bindName]) #make key(s) into a string
             bindName=bindName[2:-2] #trim off the angle brackets
             if keySetName in self.changedItems['keys'].keys():
@@ -690,7 +690,7 @@ class ConfigDialog(Toplevel):
         #user can't back out of these changes, they must be applied now
         self.Apply()
         self.SetKeysType()
-    
+
     def DeleteCustomTheme(self):
         themeName=self.customTheme.get()
         if not tkMessageBox.askyesno('Delete Theme','Are you sure you wish '+
@@ -722,7 +722,7 @@ class ConfigDialog(Toplevel):
         prevColour=self.frameColourSet.cget('bg')
         rgbTuplet, colourString = tkColorChooser.askcolor(parent=self,
             title='Pick new colour for : '+target,initialcolor=prevColour)
-        if colourString and (colourString!=prevColour): 
+        if colourString and (colourString!=prevColour):
             #user didn't cancel, and they chose a new colour
             if self.themeIsBuiltin.get(): #current theme is a built-in
                 message=('Your changes will be saved as a new Custom Theme. '+
@@ -730,12 +730,12 @@ class ConfigDialog(Toplevel):
                 newTheme=self.GetNewThemeName(message)
                 if not newTheme: #user cancelled custom theme creation
                     return
-                else: #create new custom theme based on previously active theme 
-                    self.CreateNewTheme(newTheme)    
+                else: #create new custom theme based on previously active theme
+                    self.CreateNewTheme(newTheme)
                     self.colour.set(colourString)
             else: #current theme is user defined
                 self.colour.set(colourString)
-    
+
     def OnNewColourSet(self):
         newColour=self.colour.get()
         self.frameColourSet.config(bg=newColour)#set sample
@@ -754,7 +754,7 @@ class ConfigDialog(Toplevel):
         newTheme=GetCfgSectionNameDialog(self,'New Custom Theme',
                 message,usedNames).result
         return newTheme
-    
+
     def SaveAsNewTheme(self):
         newThemeName=self.GetNewThemeName('New Theme Name:')
         if newThemeName:
@@ -763,10 +763,10 @@ class ConfigDialog(Toplevel):
     def CreateNewTheme(self,newThemeName):
         #creates new custom theme based on the previously active theme,
         #and makes the new theme active
-        if self.themeIsBuiltin.get(): 
+        if self.themeIsBuiltin.get():
             themeType='default'
             themeName=self.builtinTheme.get()
-        else:  
+        else:
             themeType='user'
             themeName=self.customTheme.get()
         newTheme=idleConf.GetThemeDict(themeType,themeName)
@@ -783,16 +783,16 @@ class ConfigDialog(Toplevel):
         self.optMenuThemeCustom.SetMenu(customThemeList,newThemeName)
         self.themeIsBuiltin.set(0)
         self.SetThemeType()
-    
+
     def OnListFontButtonRelease(self,event):
         self.fontName.set(self.listFontName.get(ANCHOR))
         self.SetFontSample()
-        
+
     def SetFontSample(self,event=None):
         fontName=self.fontName.get()
-        if self.fontBold.get(): 
+        if self.fontBold.get():
             fontWeight=tkFont.BOLD
-        else: 
+        else:
             fontWeight=tkFont.NORMAL
         self.editFont.config(size=self.fontSize.get(),
                 weight=fontWeight,family=fontName)
@@ -807,10 +807,10 @@ class ConfigDialog(Toplevel):
             self.radioBg.config(state=NORMAL)
             self.fgHilite.set(1)
         self.SetColourSample()
-    
+
     def SetColourSampleBinding(self,*args):
         self.SetColourSample()
-        
+
     def SetColourSample(self):
         #set the colour smaple area
         tag=self.themeElements[self.highlightTarget.get()][0]
@@ -818,7 +818,7 @@ class ConfigDialog(Toplevel):
         else: plane='background'
         colour=self.textHighlightSample.tag_cget(tag,plane)
         self.frameColourSet.config(bg=colour)
-    
+
     def PaintThemeSample(self):
         if self.themeIsBuiltin.get(): #a default theme
             theme=self.builtinTheme.get()
@@ -828,7 +828,7 @@ class ConfigDialog(Toplevel):
             element=self.themeElements[elementTitle][0]
             colours=idleConf.GetHighlight(theme,element)
             if element=='cursor': #cursor sample needs special painting
-                colours['background']=idleConf.GetHighlight(theme, 
+                colours['background']=idleConf.GetHighlight(theme,
                         'normal', fgBg='bg')
             #handle any unsaved changes to this theme
             if theme in self.changedItems['highlight'].keys():
@@ -839,16 +839,16 @@ class ConfigDialog(Toplevel):
                     colours['background']=themeDict[element+'-background']
             apply(self.textHighlightSample.tag_config,(element,),colours)
         self.SetColourSample()
-    
+
     def OnCheckUserHelpBrowser(self):
         if self.userHelpBrowser.get():
             self.entryHelpBrowser.config(state=NORMAL)
         else:
             self.entryHelpBrowser.config(state=DISABLED)
-    
+
     def HelpSourceSelected(self,event):
         self.SetHelpListButtonStates()
-    
+
     def SetHelpListButtonStates(self):
         if self.listHelp.size()<1: #no entries in list
             self.buttonHelpListEdit.config(state=DISABLED)
@@ -868,7 +868,7 @@ class ConfigDialog(Toplevel):
             self.listHelp.insert(END,helpSource[0]+'  '+helpSource[1])
             self.UpdateUserHelpChangedItems()
         self.SetHelpListButtonStates()
-    
+
     def HelpListItemEdit(self):
         itemIndex=self.listHelp.index(ANCHOR)
         helpSource=self.userHelpList[itemIndex]
@@ -881,14 +881,14 @@ class ConfigDialog(Toplevel):
         self.listHelp.insert(itemIndex,newHelpSource[0]+'  '+newHelpSource[1])
         self.UpdateUserHelpChangedItems()
         self.SetHelpListButtonStates()
-    
+
     def HelpListItemRemove(self):
         itemIndex=self.listHelp.index(ANCHOR)
         del(self.userHelpList[itemIndex])
         self.listHelp.delete(itemIndex)
         self.UpdateUserHelpChangedItems()
         self.SetHelpListButtonStates()
-    
+
     def UpdateUserHelpChangedItems(self):
         #clear and rebuild the HelpFiles secion in self.changedItems
         if self.changedItems['main'].has_key('HelpFiles'):
@@ -896,7 +896,7 @@ class ConfigDialog(Toplevel):
         for num in range(1,len(self.userHelpList)+1):
             self.AddChangedItem('main','HelpFiles',str(num),
                     string.join(self.userHelpList[num-1],';'))
-    
+
     def LoadFontCfg(self):
         ##base editor font selection list
         fonts=list(tkFont.families(self))
@@ -919,9 +919,9 @@ class ConfigDialog(Toplevel):
         ##fontWeight
         self.fontBold.set(idleConf.GetOption('main','EditorWindow',
                 'font-bold',default=0,type='bool'))
-        ##font sample 
+        ##font sample
         self.SetFontSample()
-    
+
     def LoadTabCfg(self):
         ##indent type radiobuttons
         spaceIndent=idleConf.GetOption('main','Indent','use-spaces',
@@ -934,7 +934,7 @@ class ConfigDialog(Toplevel):
         #        default=4,type='int')
         self.spaceNum.set(spaceNum)
         #self.tabCols.set(tabCols)
-    
+
     def LoadThemeCfg(self):
         ##current theme type radiobutton
         self.themeIsBuiltin.set(idleConf.GetOption('main','Theme','default',
@@ -950,7 +950,7 @@ class ConfigDialog(Toplevel):
             itemList.sort()
             if not itemList:
                 self.radioThemeCustom.config(state=DISABLED)
-                self.customTheme.set('- no custom themes -')    
+                self.customTheme.set('- no custom themes -')
             else:
                 self.optMenuThemeCustom.SetMenu(itemList,itemList[0])
         else: #user theme selected
@@ -964,15 +964,15 @@ class ConfigDialog(Toplevel):
         ##load theme element option menu
         themeNames=self.themeElements.keys()
         themeNames.sort(self.__ThemeNameIndexCompare)
-        self.optMenuHighlightTarget.SetMenu(themeNames,themeNames[0])   
+        self.optMenuHighlightTarget.SetMenu(themeNames,themeNames[0])
         self.PaintThemeSample()
         self.SetHighlightTarget()
-    
+
     def __ThemeNameIndexCompare(self,a,b):
         if self.themeElements[a][1]<self.themeElements[b][1]: return -1
         elif self.themeElements[a][1]==self.themeElements[b][1]: return 0
         else: return 1
-    
+
     def LoadKeyCfg(self):
         ##current keys type radiobutton
         self.keysAreBuiltin.set(idleConf.GetOption('main','Keys','default',
@@ -987,8 +987,8 @@ class ConfigDialog(Toplevel):
             itemList=idleConf.GetSectionList('user','keys')
             itemList.sort()
             if not itemList:
-                self.radioKeysCustom.config(state=DISABLED)    
-                self.customKeys.set('- no custom keys -')    
+                self.radioKeysCustom.config(state=DISABLED)
+                self.customKeys.set('- no custom keys -')
             else:
                 self.optMenuKeysCustom.SetMenu(itemList,itemList[0])
         else: #user key set selected
@@ -998,17 +998,17 @@ class ConfigDialog(Toplevel):
             itemList=idleConf.GetSectionList('default','keys')
             itemList.sort()
             self.optMenuKeysBuiltin.SetMenu(itemList,itemList[0])
-        self.SetKeysType()   
+        self.SetKeysType()
         ##load keyset element list
         keySetName=idleConf.CurrentKeys()
         self.LoadKeysList(keySetName)
-    
+
     def LoadGeneralCfg(self):
         #startup state
         self.startupEdit.set(idleConf.GetOption('main','General',
                 'editor-on-startup',default=1,type='bool'))
         #initial window size
-        self.winWidth.set(idleConf.GetOption('main','EditorWindow','width'))       
+        self.winWidth.set(idleConf.GetOption('main','EditorWindow','width'))
         self.winHeight.set(idleConf.GetOption('main','EditorWindow','height'))
         #help browsing
         self.userHelpList=idleConf.GetExtraHelpSourceList('user')
@@ -1020,22 +1020,22 @@ class ConfigDialog(Toplevel):
         #self.helpBrowser.set(idleConf.GetOption('main','General',
         #        'user-help-browser-command',default=''))
         #self.OnCheckUserHelpBrowser()
-    
+
     def LoadConfigs(self):
         """
         load configuration from default and user config files and populate
         the widgets on the config dialog pages.
         """
         ### fonts / tabs page
-        self.LoadFontCfg()        
-        self.LoadTabCfg()        
+        self.LoadFontCfg()
+        self.LoadTabCfg()
         ### highlighting page
         self.LoadThemeCfg()
         ### keys page
         self.LoadKeyCfg()
         ### general page
         self.LoadGeneralCfg()
-        
+
     def SaveNewKeySet(self,keySetName,keySet):
         """
         save a newly created core key set.
@@ -1047,7 +1047,7 @@ class ConfigDialog(Toplevel):
         for event in keySet.keys():
             value=keySet[event]
             idleConf.userCfg['keys'].SetOption(keySetName,event,value)
-    
+
     def SaveNewTheme(self,themeName,theme):
         """
         save a newly created theme.
@@ -1059,7 +1059,7 @@ class ConfigDialog(Toplevel):
         for element in theme.keys():
             value=theme[element]
             idleConf.userCfg['highlight'].SetOption(themeName,element,value)
-    
+
     def SetUserValue(self,configType,section,item,value):
         if idleConf.defaultCfg[configType].has_option(section,item):
             if idleConf.defaultCfg[configType].Get(section,item)==value:
@@ -1067,7 +1067,7 @@ class ConfigDialog(Toplevel):
                 return idleConf.userCfg[configType].RemoveOption(section,item)
         #if we got here set the option
         return idleConf.userCfg[configType].SetOption(section,item,value)
-            
+
     def SaveAllChangedConfigs(self):
         """
         save all configuration changes to user config files.
@@ -1082,12 +1082,12 @@ class ConfigDialog(Toplevel):
                     value=self.changedItems[configType][section][item]
                     if self.SetUserValue(configType,section,item,value):
                         cfgTypeHasChanges=1
-            if cfgTypeHasChanges: 
-                idleConf.userCfg[configType].Save()                
+            if cfgTypeHasChanges:
+                idleConf.userCfg[configType].Save()
         self.ResetChangedItems() #clear the changed items dict
-         
+
     def ActivateConfigChanges(self):
-        #things that need to be done to make 
+        #things that need to be done to make
         #applied config changes dynamic:
         #update editor/shell font and repaint
         #dynamically update indentation setttings
@@ -1100,7 +1100,7 @@ class ConfigDialog(Toplevel):
             instance.ResetFont()
             instance.ResetKeybindings()
             instance.ResetExtraHelpMenu()
-        
+
     def Cancel(self):
         self.destroy()
 
index 694438885b5cc7eb3d08195255e0ba9799cb2f78..71558a8f6d5b9c743999cfd152990414520312e3 100644 (file)
@@ -5,8 +5,8 @@ Provides access to stored idle configuration information.
 # when a problem occurs in returning a requested configuration value back to
 # idle. This is to allow idle to continue to function in spite of errors in
 # the retrieval of config information. When a default is returned instead of
-# a requested config value, a message is printed to stderr to aid in 
-# configuration problem notification and resolution. 
+# a requested config value, a message is printed to stderr to aid in
+# configuration problem notification and resolution.
 
 import os, sys, string
 from ConfigParser import ConfigParser, NoOptionError, NoSectionError
@@ -26,17 +26,17 @@ class IdleConfParser(ConfigParser):
         """
         self.file=cfgFile
         ConfigParser.__init__(self,defaults=cfgDefaults)
-    
+
     def Get(self, section, option, type=None, default=None):
         """
         Get an option value for given section/option or return default.
         If type is specified, return as type.
         """
-        if type=='bool': 
+        if type=='bool':
             getVal=self.getboolean
-        elif type=='int': 
+        elif type=='int':
             getVal=self.getint
-        else: 
+        else:
             getVal=self.get
         if self.has_option(section,option):
             #return getVal(section, option, raw, vars, default)
@@ -54,11 +54,11 @@ class IdleConfParser(ConfigParser):
             return []
 
     def Load(self):
-        """ 
-        Load the configuration file from disk 
+        """
+        Load the configuration file from disk
         """
         self.read(self.file)
-        
+
 class IdleUserConfParser(IdleConfParser):
     """
     IdleConfigParser specialised for user configuration handling.
@@ -70,15 +70,15 @@ class IdleUserConfParser(IdleConfParser):
         """
         if not self.has_section(section):
             self.add_section(section)
-    
+
     def RemoveEmptySections(self):
         """
         remove any sections that have no options
         """
         for section in self.sections():
             if not self.GetOptionList(section):
-                self.remove_section(section) 
-    
+                self.remove_section(section)
+
     def IsEmpty(self):
         """
         Remove empty sections and then return 1 if parser has no sections
@@ -89,7 +89,7 @@ class IdleUserConfParser(IdleConfParser):
             return 0
         else:
             return 1
-    
+
     def RemoveOption(self,section,option):
         """
         If section/option exists, remove it.
@@ -97,7 +97,7 @@ class IdleUserConfParser(IdleConfParser):
         """
         if self.has_section(section):
             return self.remove_option(section,option)
-    
+
     def SetOption(self,section,option,value):
         """
         Sets option to value, adding section if required.
@@ -114,14 +114,14 @@ class IdleUserConfParser(IdleConfParser):
                 self.add_section(section)
             self.set(section,option,value)
             return 1
-     
+
     def RemoveFile(self):
         """
         Removes the user config file from disk if it exists.
         """
         if os.path.exists(self.file):
-            os.remove(self.file)    
-    
+            os.remove(self.file)
+
     def Save(self):
         """
         If config isn't empty, write file to disk. If config is empty,
@@ -154,10 +154,10 @@ class IdleConf:
         self.CreateConfigHandlers()
         self.LoadCfgFiles()
         #self.LoadCfg()
-            
+
     def CreateConfigHandlers(self):
         """
-        set up a dictionary of config parsers for default and user 
+        set up a dictionary of config parsers for default and user
         configurations respectively
         """
         #build idle install path
@@ -170,15 +170,15 @@ class IdleConf:
         defCfgFiles={}
         usrCfgFiles={}
         for cfgType in configTypes: #build config file names
-            defCfgFiles[cfgType]=os.path.join(idleDir,'config-'+cfgType+'.def')                    
-            usrCfgFiles[cfgType]=os.path.join(userDir,'config-'+cfgType+'.cfg')                    
+            defCfgFiles[cfgType]=os.path.join(idleDir,'config-'+cfgType+'.def')
+            usrCfgFiles[cfgType]=os.path.join(userDir,'config-'+cfgType+'.cfg')
         for cfgType in configTypes: #create config parsers
             self.defaultCfg[cfgType]=IdleConfParser(defCfgFiles[cfgType])
             self.userCfg[cfgType]=IdleUserConfParser(usrCfgFiles[cfgType])
-    
+
     def GetUserCfgDir(self):
         """
-        Creates (if required) and returns a filesystem directory for storing 
+        Creates (if required) and returns a filesystem directory for storing
         user config files.
         """
         cfgDir='.idlerc'
@@ -192,23 +192,23 @@ class IdleConf:
         if userDir=='~': #we still don't have a home directory
             #traditionally idle has defaulted to os.getcwd(), is this adeqate?
             userDir = os.getcwd() #hack for no real homedir
-        userDir=os.path.join(userDir,cfgDir)    
+        userDir=os.path.join(userDir,cfgDir)
         if not os.path.exists(userDir):
-            try: #make the config dir if it doesn't exist yet 
+            try: #make the config dir if it doesn't exist yet
                 os.mkdir(userDir)
             except IOError:
                 warn=('\n Warning: unable to create user config directory\n '+
                         userDir+'\n')
                 sys.stderr.write(warn)
         return userDir
-    
+
     def GetOption(self, configType, section, option, default=None, type=None):
         """
-        Get an option value for given config type and given general 
+        Get an option value for given config type and given general
         configuration section/option or return a default. If type is specified,
-        return as type. Firstly the user configuration is checked, with a 
-        fallback to the default configuration, and a final 'catch all' 
-        fallback to a useable passed-in default if the option isn't present in 
+        return as type. Firstly the user configuration is checked, with a
+        fallback to the default configuration, and a final 'catch all'
+        fallback to a useable passed-in default if the option isn't present in
         either the user or the default configuration.
         configType must be one of ('main','extensions','highlight','keys')
         If a default is returned a warning is printed to stderr.
@@ -224,12 +224,12 @@ class IdleConf:
                        ' returning default value: '+`default`+'\n')
             sys.stderr.write(warning)
             return default
-    
+
     def GetSectionList(self, configSet, configType):
         """
-        Get a list of sections from either the user or default config for 
+        Get a list of sections from either the user or default config for
         the given config type.
-        configSet must be either 'user' or 'default' 
+        configSet must be either 'user' or 'default'
         configType must be one of ('main','extensions','highlight','keys')
         """
         if not (configType in ('main','extensions','highlight','keys')):
@@ -241,13 +241,13 @@ class IdleConf:
         else:
             raise InvalidConfigSet, 'Invalid configSet specified'
         return cfgParser.sections()
-    
+
     def GetHighlight(self, theme, element, fgBg=None):
         """
         return individual highlighting theme elements.
         fgBg - string ('fg'or'bg') or None, if None return a dictionary
-        containing fg and bg colours (appropriate for passing to Tkinter in, 
-        e.g., a tag_config call), otherwise fg or bg colour only as specified. 
+        containing fg and bg colours (appropriate for passing to Tkinter in,
+        e.g., a tag_config call), otherwise fg or bg colour only as specified.
         """
         if self.defaultCfg['highlight'].has_section(theme):
             themeDict=self.GetThemeDict('default',theme)
@@ -256,7 +256,7 @@ class IdleConf:
         fore=themeDict[element+'-foreground']
         if element=='cursor': #there is no config value for cursor bg
             back=themeDict['normal-background']
-        else:    
+        else:
             back=themeDict[element+'-background']
         highlight={"foreground": fore,"background": back}
         if not fgBg: #return dict of both colours
@@ -266,7 +266,7 @@ class IdleConf:
                 return highlight["foreground"]
             if fgBg == 'bg':
                 return highlight["background"]
-            else:    
+            else:
                 raise InvalidFgBg, 'Invalid fgBg specified'
 
     def GetThemeDict(self,type,themeName):
@@ -275,7 +275,7 @@ class IdleConf:
         themeName - string, theme name
         Returns a dictionary which holds {option:value} for each element
         in the specified theme. Values are loaded over a set of ultimate last
-        fallback defaults to guarantee that all theme elements are present in 
+        fallback defaults to guarantee that all theme elements are present in
         a newly created theme.
         """
         if type == 'user':
@@ -288,15 +288,15 @@ class IdleConf:
         #(apart from cursor) even though all these values are not yet used
         #by idle, to allow for their use in the future. Default values are
         #generally black and white.
-        theme={ 'normal-foreground':'#000000', 
-                'normal-background':'#ffffff', 
-                'keyword-foreground':'#000000', 
-                'keyword-background':'#ffffff', 
-                'comment-foreground':'#000000', 
-                'comment-background':'#ffffff', 
+        theme={ 'normal-foreground':'#000000',
+                'normal-background':'#ffffff',
+                'keyword-foreground':'#000000',
+                'keyword-background':'#ffffff',
+                'comment-foreground':'#000000',
+                'comment-background':'#ffffff',
                 'string-foreground':'#000000',
                 'string-background':'#ffffff',
-                'definition-foreground':'#000000', 
+                'definition-foreground':'#000000',
                 'definition-background':'#ffffff',
                 'hilite-foreground':'#000000',
                 'hilite-background':'gray',
@@ -305,9 +305,9 @@ class IdleConf:
                 'hit-foreground':'#ffffff',
                 'hit-background':'#000000',
                 'error-foreground':'#ffffff',
-                'error-background':'#000000', 
-                #cursor (only foreground can be set) 
-                'cursor-foreground':'#000000', 
+                'error-background':'#000000',
+                #cursor (only foreground can be set)
+                'cursor-foreground':'#000000',
                 #shell window
                 'stdout-foreground':'#000000',
                 'stdout-background':'#ffffff',
@@ -323,22 +323,22 @@ class IdleConf:
                            '\n from theme '+`themeName`+'.\n'+
                            ' returning default value: '+`theme[element]`+'\n')
                 sys.stderr.write(warning)
-            colour=cfgParser.Get(themeName,element,default=theme[element])        
+            colour=cfgParser.Get(themeName,element,default=theme[element])
             theme[element]=colour
         return theme
-        
+
     def CurrentTheme(self):
         """
-        Returns the name of the currently active theme        
+        Returns the name of the currently active theme
         """
         return self.GetOption('main','Theme','name',default='')
-        
+
     def CurrentKeys(self):
         """
-        Returns the name of the currently active key set       
+        Returns the name of the currently active key set
         """
         return self.GetOption('main','Keys','name',default='')
-    
+
     def GetExtensions(self, activeOnly=1):
         """
         Gets a list of all idle extensions declared in the config files.
@@ -350,7 +350,7 @@ class IdleConf:
                 self.GetSectionList('user','extensions'))
         for extn in userExtns:
             if extn not in extns: #user has added own extension
-                extns.append(extn) 
+                extns.append(extn)
         if activeOnly:
             activeExtns=[]
             for extn in extns:
@@ -360,21 +360,21 @@ class IdleConf:
                     activeExtns.append(extn)
             return activeExtns
         else:
-            return extns        
+            return extns
 
     def RemoveKeyBindNames(self,extnNameList):
         #get rid of keybinding section names
         names=extnNameList
         kbNameIndicies=[]
         for name in names:
-            if name.endswith('_bindings') or name.endswith('_cfgBindings'): 
-                    kbNameIndicies.append(names.index(name))
+            if name.endswith('_bindings') or name.endswith('_cfgBindings'):
+                kbNameIndicies.append(names.index(name))
         kbNameIndicies.sort()
         kbNameIndicies.reverse()
-        for index in kbNameIndicies: #delete each keybinding section name    
+        for index in kbNameIndicies: #delete each keybinding section name
             del(names[index])
         return names
-        
+
     def GetExtnNameForEvent(self,virtualEvent):
         """
         Returns the name of the extension that virtualEvent is bound in, or
@@ -389,7 +389,7 @@ class IdleConf:
                 if event == vEvent:
                     extName=extn
         return extName
-    
+
     def GetExtensionKeys(self,extensionName):
         """
         returns a dictionary of the configurable keybindings for a particular
@@ -405,8 +405,8 @@ class IdleConf:
                 event='<<'+eventName+'>>'
                 binding=activeKeys[event]
                 extKeys[event]=binding
-        return extKeys 
-        
+        return extKeys
+
     def __GetRawExtensionKeys(self,extensionName):
         """
         returns a dictionary of the configurable keybindings for a particular
@@ -422,13 +422,13 @@ class IdleConf:
                         eventName,default='').split()
                 event='<<'+eventName+'>>'
                 extKeys[event]=binding
-        return extKeys 
-    
+        return extKeys
+
     def GetExtensionBindings(self,extensionName):
         """
         Returns a dictionary of all the event bindings for a particular
         extension. The configurable keybindings are returned as they exist in
-        the dictionary returned by GetCurrentKeySet; that is, where re-used 
+        the dictionary returned by GetCurrentKeySet; that is, where re-used
         keybindings are disabled.
         """
         bindsName=extensionName+'_bindings'
@@ -441,14 +441,14 @@ class IdleConf:
                         eventName,default='').split()
                 event='<<'+eventName+'>>'
                 extBinds[event]=binding
-        
-        return extBinds 
-        
+
+        return extBinds
+
     def GetKeyBinding(self, keySetName, eventStr):
         """
         returns the keybinding for a specific event.
         keySetName - string, name of key binding set
-        eventStr - string, the virtual event we want the binding for, 
+        eventStr - string, the virtual event we want the binding for,
                    represented as a string, eg. '<<event>>'
         """
         eventName=eventStr[2:-2] #trim off the angle brackets
@@ -457,10 +457,10 @@ class IdleConf:
 
     def GetCurrentKeySet(self):
         return self.GetKeySet(self.CurrentKeys())
-    
+
     def GetKeySet(self,keySetName):
         """
-        Returns a dictionary of: all requested core keybindings, plus the 
+        Returns a dictionary of: all requested core keybindings, plus the
         keybindings for all currently active extensions. If a binding defined
         in an extension is already in use, that binding is disabled.
         """
@@ -483,7 +483,7 @@ class IdleConf:
                        the enclosing '<< >>'
         """
         return ('<<'+virtualEvent+'>>') in self.GetCoreKeys().keys()
-    
+
     def GetCoreKeys(self, keySetName=None):
         """
         returns the requested set of core keybindings, with fallbacks if
@@ -504,7 +504,7 @@ class IdleConf:
             '<<do-nothing>>': ['<Control-x>'],
             '<<end-of-file>>': ['<Control-d>'],
             '<<python-docs>>': ['<F1>'],
-            '<<python-context-help>>': ['<Shift-F1>'], 
+            '<<python-context-help>>': ['<Shift-F1>'],
             '<<history-next>>': ['<Alt-n>'],
             '<<history-previous>>': ['<Alt-p>'],
             '<<interrupt-execution>>': ['<Control-c>'],
@@ -527,7 +527,7 @@ class IdleConf:
             '<<find-selection>>': ['<Control-F3>'],
             '<<find>>': ['<Control-f>'],
             '<<replace>>': ['<Control-h>'],
-            '<<goto-line>>': ['<Alt-g>'], 
+            '<<goto-line>>': ['<Alt-g>'],
             '<<smart-backspace>>': ['<Key-BackSpace>'],
             '<<newline-and-indent>>': ['<Key-Return> <Key-KP_Enter>'],
             '<<smart-indent>>': ['<Key-Tab>'],
@@ -552,18 +552,18 @@ class IdleConf:
                                ' returning default value: '+`keyBindings[event]`+'\n')
                     sys.stderr.write(warning)
         return keyBindings
-    
+
     def GetExtraHelpSourceList(self,configSet):
         """
         Returns a list of tuples containing the details of any additional
         help sources configured in the requested configSet ('user' or 'default')
         , or an empty list if there are none. Returned tuples are of the form
         form (menu_item , path_to_help_file , option).
-        """    
+        """
         helpSources=[]
         if configSet=='user':
             cfgParser=self.userCfg['main']
-        elif configSet=='default':   
+        elif configSet=='default':
             cfgParser=self.defaultCfg['main']
         else:
             raise InvalidConfigSet, 'Invalid configSet specified'
@@ -583,28 +583,28 @@ class IdleConf:
 
     def GetAllExtraHelpSourcesList(self):
         """
-        Returns a list of tuples containing the details of all additional help 
+        Returns a list of tuples containing the details of all additional help
         sources configured, or an empty list if there are none. Tuples are of
         the format returned by GetExtraHelpSourceList.
-        """ 
-        allHelpSources=( self.GetExtraHelpSourceList('default')+ 
+        """
+        allHelpSources=( self.GetExtraHelpSourceList('default')+
                 self.GetExtraHelpSourceList('user') )
-        return allHelpSources   
-        
+        return allHelpSources
+
     def LoadCfgFiles(self):
-        """ 
+        """
         load all configuration files.
         """
         for key in self.defaultCfg.keys():
-            self.defaultCfg[key].Load()                    
-            self.userCfg[key].Load() #same keys                    
+            self.defaultCfg[key].Load()
+            self.userCfg[key].Load() #same keys
 
     def SaveUserCfgFiles(self):
         """
         write all loaded user configuration files back to disk
         """
         for key in self.userCfg.keys():
-            self.userCfg[key].Save()    
+            self.userCfg[key].Save()
 
 idleConf=IdleConf()
 
@@ -618,7 +618,7 @@ if __name__ == '__main__':
             print sections
             for section in sections:
                 options=cfg[key].options(section)
-                print section    
+                print section
                 print options
                 for option in options:
                     print option, '=', cfg[key].Get(section,option)
index 6ad7d514c12c4c0e84602a0a2c4978f6a8a9425f..f262ee64e8fac0c7c32d4d69b896fa7246325d35 100644 (file)
@@ -27,7 +27,7 @@ class GetHelpSourceDialog(Toplevel):
         self.withdraw() #hide while setting geometry
         self.update_idletasks()
         #needs to be done here so that the winfo_reqwidth is valid
-        self.geometry("+%d+%d" % 
+        self.geometry("+%d+%d" %
             ((parent.winfo_rootx()+((parent.winfo_width()/2)
                 -(self.winfo_reqwidth()/2)),
               parent.winfo_rooty()+((parent.winfo_height()/2)
@@ -63,7 +63,7 @@ class GetHelpSourceDialog(Toplevel):
         self.buttonCancel.grid(row=0,column=1,padx=5,pady=5)
 
     def MenuOk(self):
-        #simple validity check for a sensible 
+        #simple validity check for a sensible
         #menu item name
         menuOk=1
         menu=self.menu.get()
@@ -80,9 +80,9 @@ class GetHelpSourceDialog(Toplevel):
             self.entryMenu.focus_set()
             menuOk=0
         return menuOk
-    
+
     def PathOk(self):
-        #simple validity check for menu file path 
+        #simple validity check for menu file path
         pathOk=1
         path=self.path.get()
         path.strip()
@@ -97,13 +97,13 @@ class GetHelpSourceDialog(Toplevel):
             self.entryPath.focus_set()
             pathOk=0
         return pathOk
-            
+
     def Ok(self, event=None):
         if self.MenuOk():
             if self.PathOk():
-                self.result=( self.menu.get().strip(),self.path.get().strip() ) 
+                self.result=( self.menu.get().strip(),self.path.get().strip() )
                 self.destroy()
-        
+
     def Cancel(self, event=None):
         self.result=None
         self.destroy()
@@ -117,5 +117,3 @@ if __name__ == '__main__':
         print dlg.result
     Button(root,text='Dialog',command=run).pack()
     root.mainloop()
-    
index 842715b553e1b602706781767f374e370b4182e8..7b768f10f9601c3489718f73278480e2c391eb42 100644 (file)
@@ -27,7 +27,7 @@ class GetCfgSectionNameDialog(Toplevel):
         self.update_idletasks()
         #needs to be done here so that the winfo_reqwidth is valid
         self.messageInfo.config(width=self.frameMain.winfo_reqwidth())
-        self.geometry("+%d+%d" % 
+        self.geometry("+%d+%d" %
             ((parent.winfo_rootx()+((parent.winfo_width()/2)
                 -(self.winfo_reqwidth()/2)),
               parent.winfo_rooty()+((parent.winfo_height()/2)
@@ -56,7 +56,7 @@ class GetCfgSectionNameDialog(Toplevel):
         self.buttonCancel.grid(row=0,column=1,padx=5,pady=5)
 
     def NameOk(self):
-        #simple validity check for a sensible 
+        #simple validity check for a sensible
         #ConfigParser file section name
         nameOk=1
         name=self.name.get()
@@ -75,12 +75,12 @@ class GetCfgSectionNameDialog(Toplevel):
                     message='This name is already in use.')
             nameOk=0
         return nameOk
-    
+
     def Ok(self, event=None):
         if self.NameOk():
             self.result=self.name.get().strip()
             self.destroy()
-        
+
     def Cancel(self, event=None):
         self.result=''
         self.destroy()
@@ -95,5 +95,3 @@ if __name__ == '__main__':
         print dlg.result
     Button(root,text='Dialog',command=run).pack()
     root.mainloop()
-    
index d614a3e8a58d09412c3915afac507920560be6cd..e81f7babe05955651b64e018db221a6f3cd0d22f 100644 (file)
@@ -20,12 +20,12 @@ class DynOptionMenu(OptionMenu):
         #self.menu=self['menu']
         self.variable=variable
         self.command=kwargs.get('command')
-    
+
     def SetMenu(self,valueList,value=None):
         """
         clear and reload the menu with a new set of options.
         valueList - list of new options
-        value - initial value to set the optionmenu's menubutton to 
+        value - initial value to set the optionmenu's menubutton to
         """
         self['menu'].delete(0,'end')
         for item in valueList:
index 427da5cbd548bc54f9d9eb699c40617085e6f75d..df024e7dc9e0460cbf5cbd18afab4413f76b4543 100644 (file)
@@ -1,5 +1,5 @@
 """
-dialog for building tkinter accelerator key bindings 
+dialog for building tkinter accelerator key bindings
 """
 from Tkinter import *
 import tkMessageBox
@@ -11,7 +11,7 @@ class GetKeysDialog(Toplevel):
         action - string, the name of the virtual event these keys will be
                  mapped to
         currentKeys - list, a list of all key sequence lists currently mapped
-                 to virtual events, for overlap checking   
+                 to virtual events, for overlap checking
         """
         Toplevel.__init__(self, parent)
         self.configure(borderwidth=5)
@@ -36,14 +36,14 @@ class GetKeysDialog(Toplevel):
         self.LoadFinalKeyList()
         self.withdraw() #hide while setting geometry
         self.update_idletasks()
-        self.geometry("+%d+%d" % 
+        self.geometry("+%d+%d" %
             ((parent.winfo_rootx()+((parent.winfo_width()/2)
                 -(self.winfo_reqwidth()/2)),
               parent.winfo_rooty()+((parent.winfo_height()/2)
                 -(self.winfo_reqheight()/2)) )) ) #centre dialog over parent
         self.deiconify() #geometry set, unhide
         self.wait_window()
-        
+
     def CreateWidgets(self):
         frameMain = Frame(self,borderwidth=2,relief=SUNKEN)
         frameMain.pack(side=TOP,expand=TRUE,fill=BOTH)
@@ -143,19 +143,19 @@ class GetKeysDialog(Toplevel):
             self.ClearKeySeq()
             self.buttonLevel.config(text='Advanced Key Binding Entry >>')
             self.frameKeySeqBasic.lift()
-            self.frameControlsBasic.lift()    
-    
+            self.frameControlsBasic.lift()
+
     def FinalKeySelected(self,event):
         self.BuildKeyString()
-        
+
     def BuildKeyString(self):
         keyList=[]
         modifiers=self.GetModifiers()
         finalKey=self.listKeysFinal.get(ANCHOR)
         if modifiers: modifiers[0]='<'+modifiers[0]
         keyList=keyList+modifiers
-        if finalKey: 
-            if (not modifiers) and (finalKey not 
+        if finalKey:
+            if (not modifiers) and (finalKey not
                     in self.alphanumKeys+self.punctuationKeys):
                 finalKey='<'+self.TranslateKey(finalKey)
             else:
@@ -163,7 +163,7 @@ class GetKeysDialog(Toplevel):
             keyList.append(finalKey+'>')
         keyStr=string.join(keyList,'-')
         self.keyString.set(keyStr)
-        
+
     def GetModifiers(self):
         modList = [variable.get() for variable in self.modifier_vars]
         return filter(None, modList)
@@ -174,7 +174,7 @@ class GetKeysDialog(Toplevel):
         for variable in self.modifier_vars:
             variable.set('')
         self.keyString.set('')
-    
+
     def LoadFinalKeyList(self):
         #these tuples are also available for use in validity checks
         self.functionKeys=('F1','F2','F2','F4','F5','F6','F7','F8','F9',
@@ -190,7 +190,7 @@ class GetKeysDialog(Toplevel):
                 self.whitespaceKeys+self.editKeys+self.moveKeys)
         apply(self.listKeysFinal.insert,
             (END,)+keys)
-    
+
     def TranslateKey(self,key):
         #translate from key list value to tkinter key-id
         translateDict={'~':'asciitilde','!':'exclam','@':'at','#':'numbersign',
@@ -206,16 +206,16 @@ class GetKeysDialog(Toplevel):
             key=translateDict[key]
         key='Key-'+key
         return key
-    
+
     def Ok(self, event=None):
         if self.KeysOk():
             self.result=self.keyString.get()
             self.destroy()
-        
+
     def Cancel(self, event=None):
         self.result=''
         self.destroy()
-    
+
     def KeysOk(self):
         #simple validity check
         keysOk=1
@@ -232,13 +232,13 @@ class GetKeysDialog(Toplevel):
             tkMessageBox.showerror(title='Key Sequence Error',
                     message='No final key specified.')
             keysOk=0
-        elif (not modifiers) and (finalKey in 
+        elif (not modifiers) and (finalKey in
                 self.alphanumKeys+self.punctuationKeys):
             #modifier required
             tkMessageBox.showerror(title='Key Sequence Error',
                     message='No modifier key(s) specified.')
             keysOk=0
-        elif (modifiers==['Shift']) and (finalKey not 
+        elif (modifiers==['Shift']) and (finalKey not
                 in self.functionKeys+('Tab',)):
             #shift alone is only a useful modifier with a function key
             tkMessageBox.showerror(title='Key Sequence Error',
@@ -250,7 +250,7 @@ class GetKeysDialog(Toplevel):
                     message='This key combination is already in use.')
             keysOk=0
         return keysOk
-    
+
 if __name__ == '__main__':
     #test the dialog
     root=Tk()
index b1cf156899fb333e2fd2ba85d8b60940842e6279..c518094f78d496719d1c3bea73edf3f19c8eed2f 100644 (file)
@@ -3,8 +3,8 @@
 
 Installation:
   see the install_IDLE target in python/dist/src/Mac/OSX/Makefile
-  
-Usage: 
+
+Usage:
 
 1. Double clicking IDLE icon will open IDLE.
 2. Dropping file on IDLE icon will open that file in IDLE.
@@ -26,7 +26,7 @@ except NameError:
     __file__ = sys.argv[0]
 idlelib = join(split(__file__)[0], 'idlelib')
 if isdir(idlelib):
-  sys.path.append(idlelib)
+    sys.path.append(idlelib)
 
 # see if we are being asked to execute the subprocess code
 if '-p' in sys.argv:
index 53e524b6c89e9d801630e70a0cb0cc8a66aa9011..bb132257da08d0362a89a37acb3641af3354a8bc 100644 (file)
@@ -56,7 +56,7 @@ def pickle_code(co):
 #  def pickle_function(fn):
 #      assert isinstance(fn, type.FunctionType)
 #      return `fn`
+
 copy_reg.pickle(types.CodeType, pickle_code, unpickle_code)
 # copy_reg.pickle(types.FunctionType, pickle_function, unpickle_function)
 
@@ -75,13 +75,13 @@ class RPCServer(SocketServer.TCPServer):
 
     def server_activate(self):
         """Override TCPServer method, connect() instead of listen()
-        
+
         Due to the reversed connection, self.server_address is actually the
         address of the Idle Client to which we are connecting.
 
         """
         self.socket.connect(self.server_address)
-        
+
     def get_request(self):
         "Override TCPServer method, return already connected socket"
         return self.socket, self.server_address
@@ -126,7 +126,7 @@ class SocketIO:
             pass
 
     def localcall(self, request):
-        self.debug("localcall:", request) 
+        self.debug("localcall:", request)
         try:
             how, (oid, methodname, args, kwargs) = request
         except TypeError:
@@ -174,7 +174,7 @@ class SocketIO:
             return ("EXCEPTION", (mod, name, args, tb))
 
     def remotecall(self, oid, methodname, args, kwargs):
-        self.debug("remotecall:") 
+        self.debug("remotecall:")
         seq = self.asynccall(oid, methodname, args, kwargs)
         return self.asyncreturn(seq)
 
@@ -215,7 +215,7 @@ class SocketIO:
             # do the best we can:
             raise name, args
         if how == "ERROR":
-            self.debug("decoderesponse: Internal ERROR:", what)            
+            self.debug("decoderesponse: Internal ERROR:", what)
             raise RuntimeError, what
         raise SystemError, (how, what)
 
@@ -359,7 +359,7 @@ class SocketIO:
                     cv.notify()
                 self.statelock.release()
                 continue
-            
+
 #----------------- end class SocketIO --------------------
 
 class RemoteObject:
@@ -465,7 +465,7 @@ def _getattributes(obj, attributes):
     for name in dir(obj):
         attr = getattr(obj, name)
         if not callable(attr):
-           attributes[name] = 1
+            attributes[name] = 1
 
 class MethodProxy:
 
@@ -486,14 +486,14 @@ def testServer(addr):
     # XXX 25 Jul 02 KBK needs update to use rpc.py register/unregister methods
     class RemotePerson:
         def __init__(self,name):
-            self.name = name 
+            self.name = name
         def greet(self, name):
             print "(someone called greet)"
             print "Hello %s, I am %s." % (name, self.name)
             print
         def getName(self):
             print "(someone called getName)"
-            print 
+            print
             return self.name
         def greet_this_guy(self, name):
             print "(someone called greet_this_guy)"
@@ -502,7 +502,7 @@ def testServer(addr):
             remote_guy.greet("Thomas Edison")
             print "Done."
             print
-            
+
     person = RemotePerson("Thomas Edison")
     svr = RPCServer(addr)
     svr.register('thomas', person)
@@ -526,12 +526,12 @@ def testClient(addr):
     thomas.greet("Alexander Bell")
     #clt.remotecall("thomas","greet",("Alexander Bell",), {})
     print "Done."
-    print 
+    print
     time.sleep(2)
     # demonstrates remote server calling local instance
     class LocalPerson:
         def __init__(self,name):
-            self.name = name 
+            self.name = name
         def greet(self, name):
             print "You've greeted me!"
         def getName(self):
@@ -551,5 +551,3 @@ def test():
 
 if __name__ == '__main__':
     test()
-
-        
index 5b65601ce5cd3c743ae7f50a1d993d2ee15cf7b0..12f89291da4dd3f8e54f5397a60ba52c29464a8c 100644 (file)
@@ -10,23 +10,23 @@ class AlreadyExists(Exception): pass
 class PageTab(Frame):
     """
     a 'page tab' like framed button
-    """ 
+    """
     def __init__(self,parent):
         Frame.__init__(self, parent,borderwidth=2,relief=RIDGE)
         self.button=Radiobutton(self,padx=5,pady=5,takefocus=FALSE,
                 indicatoron=FALSE,highlightthickness=0,
                 borderwidth=0,selectcolor=self.cget('bg'))
         self.button.pack()
-      
+
 class TabPageSet(Frame):
     """
     a set of 'pages' with TabButtons for controlling their display
-    """ 
+    """
     def __init__(self,parent,pageNames=[],**kw):
         """
         pageNames - a list of strings, each string will be the dictionary key
-        to a page's data, and the name displayed on the page's tab. Should be 
-        specified in desired page order. The first page will be the default 
+        to a page's data, and the name displayed on the page's tab. Should be
+        specified in desired page order. The first page will be the default
         and first active page.
         """
         Frame.__init__(self, parent, kw)
@@ -48,12 +48,12 @@ class TabPageSet(Frame):
             else:
                 raise InvalidTabPage, 'Invalid TabPage Name'
         ## pop up the active 'tab' only
-        for page in self.pages.keys(): 
+        for page in self.pages.keys():
             self.pages[page]['tab'].config(relief=RIDGE)
         self.pages[self.GetActivePage()]['tab'].config(relief=RAISED)
         ## switch page
         self.pages[self.GetActivePage()]['page'].lift()
-        
+
     def GetActivePage(self):
         return self.activePage.get()
 
@@ -67,7 +67,7 @@ class TabPageSet(Frame):
                 value=pageName)
         self.pages[pageName]['tab'].pack(side=LEFT)
         self.pages[pageName]['page'].grid(row=1,column=0,sticky=NSEW)
-        if len(self.pages)==1: # adding first page    
+        if len(self.pages)==1: # adding first page
             self.defaultPage=pageName
             self.activePage.set(self.defaultPage)
             self.ChangePage()
@@ -83,11 +83,11 @@ class TabPageSet(Frame):
         # handle removing last remaining, or default, or active page
         if not self.pages: # removed last remaining page
             self.defaultPage=''
-            return 
+            return
         if pageName==self.defaultPage: # set a new default page
             self.defaultPage=\
                 self.tabBar.winfo_children()[0].button.cget('text')
-        if pageName==self.GetActivePage(): # set a new active page 
+        if pageName==self.GetActivePage(): # set a new active page
             self.activePage.set(self.defaultPage)
         self.ChangePage()
 
@@ -111,4 +111,3 @@ if __name__ == '__main__':
     entryPgName.pack(padx=5)
     tabPage.ChangePage()
     root.mainloop()
-        
index 9b3fb979d43ca11005d78483cf77e775e3e47273..23e8beda41288b220877d9aa130bda8b7c5c749a 100644 (file)
@@ -1,8 +1,8 @@
 ##---------------------------------------------------------------------------##
 ##
-## idle - simple text view dialog 
+## idle - simple text view dialog
 ## elguavas
-## 
+##
 ##---------------------------------------------------------------------------##
 """
 simple text browser for idle
@@ -13,7 +13,7 @@ import tkMessageBox
 class TextViewer(Toplevel):
     """
     simple text viewer dialog for idle
-    """ 
+    """
     def __init__(self,parent,title,fileName):
         """
         fileName - string,should be an absoulute filename
@@ -39,7 +39,7 @@ class TextViewer(Toplevel):
         self.LoadTextFile(fileName)
         self.textView.config(state=DISABLED)
         self.wait_window()
-        
+
     def LoadTextFile(self, fileName):
         textFile = None
         try:
@@ -49,7 +49,7 @@ class TextViewer(Toplevel):
                     message='Unable to load file '+`fileName`+' .')
         else:
             self.textView.insert(0.0,textFile.read())
-        
+
     def CreateWidgets(self):
         frameText = Frame(self)
         frameButtons = Frame(self)
@@ -65,7 +65,7 @@ class TextViewer(Toplevel):
         self.textView.pack(side=LEFT,expand=TRUE,fill=BOTH)
         frameButtons.pack(side=BOTTOM,fill=X)
         frameText.pack(side=TOP,expand=TRUE,fill=BOTH)
-        
+
     def Ok(self, event=None):
         self.destroy()