diff options
-rw-r--r-- | Lib/idlelib/CallTipWindow.py | 2 | ||||
-rw-r--r-- | Lib/idlelib/CallTips.py | 10 | ||||
-rw-r--r-- | Lib/idlelib/ColorDelegator.py | 4 | ||||
-rw-r--r-- | Lib/idlelib/Debugger.py | 8 | ||||
-rw-r--r-- | Lib/idlelib/EditorWindow.py | 40 | ||||
-rw-r--r-- | Lib/idlelib/IOBinding.py | 8 | ||||
-rw-r--r-- | Lib/idlelib/OutputWindow.py | 7 | ||||
-rw-r--r-- | Lib/idlelib/PyShell.py | 34 | ||||
-rw-r--r-- | Lib/idlelib/RemoteDebugger.py | 5 | ||||
-rw-r--r-- | Lib/idlelib/ScriptBinding.py | 4 | ||||
-rw-r--r-- | Lib/idlelib/ZoomHeight.py | 4 | ||||
-rw-r--r-- | Lib/idlelib/aboutDialog.py | 12 | ||||
-rw-r--r-- | Lib/idlelib/boolcheck.py | 3 | ||||
-rw-r--r-- | Lib/idlelib/configDialog.py | 176 | ||||
-rw-r--r-- | Lib/idlelib/configHandler.py | 178 | ||||
-rw-r--r-- | Lib/idlelib/configHelpSourceEdit.py | 16 | ||||
-rw-r--r-- | Lib/idlelib/configSectionNameDialog.py | 10 | ||||
-rw-r--r-- | Lib/idlelib/dynOptionMenuWidget.py | 4 | ||||
-rw-r--r-- | Lib/idlelib/keybindingDialog.py | 36 | ||||
-rw-r--r-- | Lib/idlelib/macosx_main.py | 6 | ||||
-rw-r--r-- | Lib/idlelib/rpc.py | 28 | ||||
-rw-r--r-- | Lib/idlelib/tabpage.py | 21 | ||||
-rw-r--r-- | Lib/idlelib/textView.py | 12 |
23 files changed, 306 insertions, 322 deletions
diff --git a/Lib/idlelib/CallTipWindow.py b/Lib/idlelib/CallTipWindow.py index d089a87..990d96e 100644 --- a/Lib/idlelib/CallTipWindow.py +++ b/Lib/idlelib/CallTipWindow.py @@ -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 diff --git a/Lib/idlelib/CallTips.py b/Lib/idlelib/CallTips.py index fa43032..3f247d4 100644 --- a/Lib/idlelib/CallTips.py +++ b/Lib/idlelib/CallTips.py @@ -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) diff --git a/Lib/idlelib/ColorDelegator.py b/Lib/idlelib/ColorDelegator.py index d91b530..cc92259 100644 --- a/Lib/idlelib/ColorDelegator.py +++ b/Lib/idlelib/ColorDelegator.py @@ -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): diff --git a/Lib/idlelib/Debugger.py b/Lib/idlelib/Debugger.py index 30d0002..3ad6a83 100644 --- a/Lib/idlelib/Debugger.py +++ b/Lib/idlelib/Debugger.py @@ -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 diff --git a/Lib/idlelib/EditorWindow.py b/Lib/idlelib/EditorWindow.py index 7c209e7..96a894a 100644 --- a/Lib/idlelib/EditorWindow.py +++ b/Lib/idlelib/EditorWindow.py @@ -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() diff --git a/Lib/idlelib/IOBinding.py b/Lib/idlelib/IOBinding.py index a90157e..e5ae505 100644 --- a/Lib/idlelib/IOBinding.py +++ b/Lib/idlelib/IOBinding.py @@ -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 diff --git a/Lib/idlelib/OutputWindow.py b/Lib/idlelib/OutputWindow.py index 7522720..9d705d6 100644 --- a/Lib/idlelib/OutputWindow.py +++ b/Lib/idlelib/OutputWindow.py @@ -146,10 +146,3 @@ class OnDemandOutputWindow: # def flush(self): # pass - - - - - - - diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py index eb5c6af..6114359 100644 --- a/Lib/idlelib/PyShell.py +++ b/Lib/idlelib/PyShell.py @@ -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. """ diff --git a/Lib/idlelib/RemoteDebugger.py b/Lib/idlelib/RemoteDebugger.py index f9430d0..054b975 100644 --- a/Lib/idlelib/RemoteDebugger.py +++ b/Lib/idlelib/RemoteDebugger.py @@ -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' - diff --git a/Lib/idlelib/ScriptBinding.py b/Lib/idlelib/ScriptBinding.py index 8ab8e7a..0140c69 100644 --- a/Lib/idlelib/ScriptBinding.py +++ b/Lib/idlelib/ScriptBinding.py @@ -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() diff --git a/Lib/idlelib/ZoomHeight.py b/Lib/idlelib/ZoomHeight.py index d65af66..2ab4656 100644 --- a/Lib/idlelib/ZoomHeight.py +++ b/Lib/idlelib/ZoomHeight.py @@ -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: diff --git a/Lib/idlelib/aboutDialog.py b/Lib/idlelib/aboutDialog.py index 89c0a48..2fc4a42 100644 --- a/Lib/idlelib/aboutDialog.py +++ b/Lib/idlelib/aboutDialog.py @@ -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() diff --git a/Lib/idlelib/boolcheck.py b/Lib/idlelib/boolcheck.py index bc988d7..f682232 100644 --- a/Lib/idlelib/boolcheck.py +++ b/Lib/idlelib/boolcheck.py @@ -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 - diff --git a/Lib/idlelib/configDialog.py b/Lib/idlelib/configDialog.py index 5baf7cf..a68330d 100644 --- a/Lib/idlelib/configDialog.py +++ b/Lib/idlelib/configDialog.py @@ -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() diff --git a/Lib/idlelib/configHandler.py b/Lib/idlelib/configHandler.py index 6944388..71558a8 100644 --- a/Lib/idlelib/configHandler.py +++ b/Lib/idlelib/configHandler.py @@ -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) diff --git a/Lib/idlelib/configHelpSourceEdit.py b/Lib/idlelib/configHelpSourceEdit.py index 6ad7d51..f262ee6 100644 --- a/Lib/idlelib/configHelpSourceEdit.py +++ b/Lib/idlelib/configHelpSourceEdit.py @@ -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() - - diff --git a/Lib/idlelib/configSectionNameDialog.py b/Lib/idlelib/configSectionNameDialog.py index 842715b..7b768f1 100644 --- a/Lib/idlelib/configSectionNameDialog.py +++ b/Lib/idlelib/configSectionNameDialog.py @@ -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() - - diff --git a/Lib/idlelib/dynOptionMenuWidget.py b/Lib/idlelib/dynOptionMenuWidget.py index d614a3e..e81f7ba 100644 --- a/Lib/idlelib/dynOptionMenuWidget.py +++ b/Lib/idlelib/dynOptionMenuWidget.py @@ -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: diff --git a/Lib/idlelib/keybindingDialog.py b/Lib/idlelib/keybindingDialog.py index 427da5c..df024e7 100644 --- a/Lib/idlelib/keybindingDialog.py +++ b/Lib/idlelib/keybindingDialog.py @@ -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() diff --git a/Lib/idlelib/macosx_main.py b/Lib/idlelib/macosx_main.py index b1cf156..c518094 100644 --- a/Lib/idlelib/macosx_main.py +++ b/Lib/idlelib/macosx_main.py @@ -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: diff --git a/Lib/idlelib/rpc.py b/Lib/idlelib/rpc.py index 53e524b..bb13225 100644 --- a/Lib/idlelib/rpc.py +++ b/Lib/idlelib/rpc.py @@ -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() - - diff --git a/Lib/idlelib/tabpage.py b/Lib/idlelib/tabpage.py index 5b65601..12f8929 100644 --- a/Lib/idlelib/tabpage.py +++ b/Lib/idlelib/tabpage.py @@ -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() - diff --git a/Lib/idlelib/textView.py b/Lib/idlelib/textView.py index 9b3fb97..23e8bed 100644 --- a/Lib/idlelib/textView.py +++ b/Lib/idlelib/textView.py @@ -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() |