From pobrien@orbtech.com Thu Sep 6 14:20:28 2001 From: pobrien@orbtech.com (Patrick K. O'Brien) Date: Thu, 6 Sep 2001 08:20:28 -0500 Subject: [Idle-dev] Status of IDLEfork??? Message-ID: Where do we stand on IDLEfork? It seems like everything has come to a halt. --- Patrick K. O'Brien Orbtech (http://www.orbtech.com) "I am, therefore I think." From StephenM.Gava Fri Sep 7 09:54:40 2001 From: StephenM.Gava (StephenM.Gava) Date: Fri, 7 Sep 2001 18:54:40 +1000 Subject: [Idle-dev] Status of IDLEfork??? In-Reply-To: References: Message-ID: <20010907085118.XPIM4715.mss.rdc2.nsw.optushome.com.au@there> Patrick K. O'Brien wrote: > Where do we stand on IDLEfork? It seems like everything has come to a halt. Hi Patrick. No, IDLEfork has certainly not come to a halt although cvs updates there are currently in a hiatus. I should explain for starters that 'IDLEfork' is basically just me. Although there are still people who wished to be left on the developer list from the earlier incarnation of the project, the only active developers were in fact Kurt B. Kaiser and myself. After initially helping a lot with the latest stable IDLE to IDLEfork merge (which I thank him for muchly!) Kurt went on a sailing holliday and I haven't heard from him since, but I hope to when he returns. Since releasing a moderately broken tarball of that initial merge I've written the new website and moved on to some of the other development work I signed on for, which is mainly stuff in the user interface and configurability area. After some initial hacking on the configuration ui (and a couple of other minor issues) I reached the stage where it became nescessary to completely rewrite IDLE's underlying configuration model and mechanism (to support, among other things, the ability to write as well as read the config programatically!) which, after getting Guido's ideas on the subject I began to do. My work on that coincided with my daily work taking me away from the office (and an internet connection) for a considerable time, so that work still exists only on my laptop and besides isn't ready for prime time yet. The thing that really threw the spanner in the works has been a bit of a tragedy on the presonal/family front that has taken all my attention away from everthing else at the moment (after finishing my last contract I haven't taken another yet in my daily work either). I hope to settle things down enough to return to some hacking on IDLEfork, among other things, some time within the next couple of weeks. Thanks for your interest in the project. Regards, Stephen M. Gava. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From karshi.hasanov@utoronto.ca Fri Sep 14 04:05:44 2001 From: karshi.hasanov@utoronto.ca (Karshi Hasanov) Date: Thu, 13 Sep 2001 23:05:44 -0400 Subject: [Idle-dev] idel_help Message-ID: <20010914030312Z235648-13380+5@bureau8.utcc.utoronto.ca> Hi all,, How do I change the default IDLE path? Thanks From pobrien@orbtech.com Fri Sep 14 04:15:14 2001 From: pobrien@orbtech.com (Patrick K. O'Brien) Date: Thu, 13 Sep 2001 22:15:14 -0500 Subject: [Idle-dev] idel_help In-Reply-To: <20010914030312Z235648-13380+5@bureau8.utcc.utoronto.ca> Message-ID: Which path, exactly? Do you mean the python path inside IDLE? >>> import sys >>> sys.path ['C:\\PYTHON21\\Tools\\idle', 'C:\\Code', 'C:\\Python21\\win32', 'C:\\Python21\\win32\\lib', 'C:\\Python21', 'C:\\Python21\\Pythonwin', 'C:\\PYTHON21\\DLLs', 'C:\\PYTHON21\\lib', 'C:\\PYTHON21\\lib\\plat-win', 'C:\\PYTHON21\\lib\\lib-tk', 'C:\\PYTHON21\\Numeric'] >>> --- Patrick K. O'Brien Orbtech (http://www.orbtech.com) "I am, therefore I think." -----Original Message----- From: idle-dev-admin@python.org [mailto:idle-dev-admin@python.org]On Behalf Of Karshi Hasanov Sent: Thursday, September 13, 2001 10:06 PM To: idle-dev@python.org; pobrien@orbtech.com Subject: [Idle-dev] idel_help Hi all,, How do I change the default IDLE path? Thanks _______________________________________________ IDLE-dev mailing list IDLE-dev@python.org http://mail.python.org/mailman/listinfo/idle-dev From pobrien@orbtech.com Sat Sep 15 14:09:37 2001 From: pobrien@orbtech.com (Patrick K. O'Brien) Date: Sat, 15 Sep 2001 08:09:37 -0500 Subject: [Idle-dev] RE: idle_path? In-Reply-To: <20010915015349Z235610-24830+106@bureau8.utcc.utoronto.ca> Message-ID: If you are on Windows, you can change the working directory associated with the IDLE shortcuts on the desktop or on the Start menu. Once IDLE is loaded, you can change the current working directory with something like the following example: >>> import os >>> os.chdir('c:\\') >>> --- Patrick K. O'Brien Orbtech (http://www.orbtech.com) "I am, therefore I think." -----Original Message----- From: Karshi Hasanov [mailto:karshi.hasanov@utoronto.ca] Sent: Friday, September 14, 2001 8:57 PM To: pobrien@orbtech.com; pobrien@orbtech.com Subject: idle_path? When you use IDLE, and if you wanna open some file in some directory what usually you do is "Open" then you see default path ( i.e your ~/home dir). What I wanted to do was to find a way to change this default path. Please let me know if you know how do it. Which path, exactly? Do you mean the python path inside IDLE? >>> import sys >>> sys.path ['C:\\PYTHON21\\Tools\\idle', 'C:\\Code', 'C:\\Python21\\win32', 'C:\\Python21\\win32\\lib', 'C:\\Python21', 'C:\\Python21\\Pythonwin', 'C:\\PYTHON21\\DLLs', 'C:\\PYTHON21\\lib', 'C:\\PYTHON21\\lib\\plat-win', 'C:\\PYTHON21\\lib\\lib-tk', 'C:\\PYTHON21\\Numeric'] >>> --- Patrick K. O'Brien Orbtech (http://www.orbtech.com) "I am, therefore I think." From life@kilio.com Mon Sep 17 12:06:21 2001 From: life@kilio.com (life) Date: Mon, 17 Sep 2001 07:06:21 -0400 Subject: [Idle-dev] Most Recent News about 714X ! NCI Reviewing cancer survivors' case studies ! Message-ID: <78562001911711621161@kilio.com> Missed the recent media coverage of 714X and it's use in the treatment of= =20 cancer and other health issues ? =20 See for yourself why the National Cancer Institute (NCI) is currently reviewing 16 cancer survivors' case studies=2E =20 -See how this non-toxic treatment works to purify the lymphatic system and= assists the body's natural defenses; -See why 75000 patients in Japan, Canada and Europe have used 714X; -See why in Canada, physicians can prescribe it under the Emergency Drug R= elease Program=2E =20 Just click on the following link ( http://www=2Ecerbe=2Ecom ), and get al= l the information you need to decide=2E Ask for the media coverage video=2E =20 Mention Code LR043 when ordering, and Get Free Shipping on your first orde= r! =20 The information is Free! See for yourself! =20 It could change your life or the life of somebody you know=2E=2E=2E =20 --------------------------------------------------------------------------= -------------------------------------- If you want to send informations about NCI Reviewing cancer survivors' cas= e studies to a friend, please click this link: http://php=2Ekilio=2Ecom/life/friend=2Ephp We believe this e-mail might be helpful to you but if you'd rather not rec= eive future messages about 714X and it's use in the treatment of cancer an= d other auto-immune ailments, please click this link: http://php=2Ekilio=2Ecom/life/remove=2Ephp From GhenadieP@HOTMAIL.COM Sun Sep 23 21:38:56 2001 From: GhenadieP@HOTMAIL.COM (GhenadieP@HOTMAIL.COM) Date: Sun, 23 Sep 2001 22:38:56 +0200 (CEST) Subject: [Idle-dev] regarding job Message-ID: <20010923203856.A9A907C98@shark.amis.net> Dear Sir, I found your e-mail address on the net. I see Your activity is related with software development. I hope you are interested in experienced software developers. I am currently seeking work. If you have a site where I should fill a form, please, reply me, so that I will go there and fill that form. Below is my resume. If in your consideration I can be usefull for you, please call me or send me a message. Thank you. RESUME --------------------------------------------------------------- Name: Ghenadie Plingau Tel: +386 31 710 519 ; +373 2 292976 Email: ghenadiep@hotmail.com; pghena@hotmail.com Language: English, French, German IT experience: 5+ Years Knowledge’s summary and basic concepts: - Component based design concepts - Object oriented thinking - Windows applications development experience - Microsoft development technologies stickler - database designing and SQL transactions experience - Web UI orientation Good knowledges of Delphi/VCL, C++/COM/ATL, Win32 API, ADO, ODBC, XML, HTTP. Programming tools experience: Visual C++, Visual Basic, Borland C++/Delphi Databases: MS SQLServer, Oracle, Sybase, Access Education: * 1989-1991 Mathematical Lyceum "C.Negruzzi", Iasi, Romania, BSc in Mathematics * 1994-1999 Academy of Economic Studies of Moldova, Banking & SE Career Summary Project: RISP-SQL Time: Dec.2000- Organization: E.R.S. Rokada Inzeniring d.o.o. Ljubljana, Slovenia (rokada@amis.net) Position: Software developer Tools: Delphi, Visual C++, SQL Server 2000 Description: Developing a database application for SQL Server 2000 using Delphi, COM/OLE for internal data interchanging between modules, VCL and ExpressQuantumGrid Suite for UI. Developed multithread applications, wrote recursive stored procedures and extended procedures for SQL Server, ActiveX components for AutoCAD and MS Office automation. Got experience in analyzing database performance, records fetching, SQL coding, Data Warehousing, Data Mining, Data Modeling. Especially focuses on developing data aware components and implementing new features in existed components by adding new properties and events. Created both data aware and non data aware components for performing direct lookup on server by runtime generation of SQL statement and sending them to the server during the information input, that allows only input of names and codes that exists in database directory table. Created an application wizard for automatic upgrading of the structure of target database based on an template script with the condition of keeping the data in the target database using SQL DMO. Created Report designer based on Quick Report libraries that allows runtime customization of report items and bands and storing all settings in an XML file. Designer looks similar like Delphi form designer. Created runtime assembler of application menu out of an XML file that stores GUID and interface method number of each menu item command. Interface is unique and supported by all COM objects. Managing source code using MS Source Safe and created batch files for automating building process and creation of installation kit. Developed modules for Web deployment of reports, dynamical generation of http for web pages. Project: e-tools Time: May 2000 - Sep 2000 Organization: Edifecs Commerce Inc, Seattle, USA (joed@edifecs.com) Position: Independent Contractor Tools: MS Visual C++, WinCVS Description: Developed server side and implemented user interfaces of a component, part of an application designed for business process modeling based on EDI standards. Designed and developed a search engine that seeks in a special formated file that contain EDI standards. Search results are displayed in a tree on the UI or saved in XML format. Designed classes and protocols of data interchanging between them. Worked with linked lists, binary trees, STL containers, templates. Got experience in designing object classes for well encapsulated objects, implementing recursive member functions. Analyzed performance, performed unit tests. Project: SQL-Buch Time: Feb 1999 - May 2000 Organization: Technical University of Moldova, Chisinau, Moldova (perju@adm.utm.md) Position: Software Design Lead Task: Provided technical leadership to a team of developers, developing software for business and financial accounting. Tools: MS Visual C++, MFC, Visual Basic, Delphi, SQL Server, Sybase SQL, MySQL (LINUX), ODBC, ADO, MIDAS, DCOM Description: Was responsible for planning and scheduling technical assignments and goals, defining and analyzing requirements, training, and contributing in performance reviews. Administrated and designed relational databases, wrote SQL code for transactions, implemented User Interfaces, developed multi-tied database applications. Got experience in API level Windows programming. Gained excellent skills in working with all Visual Studio tools. Created COM-based application servers for providing services over a local network and via internet. Created installations kits and CAB files for Web deployment of ActiveX controls. Project: A-BANCO Time: Apr 1996 - Feb 1999 Organization: «A-BANCO» SRL Chisinau, Moldova Position: Programmer Task: Informational support Tools: MS Access, Visual Basic, dBase Description: Developed information system of the company including book keeping, production control and resource management. Worked jointly with book-keepers, solving their needs and requirements. Designed databases, developed application for MS Access using Access tools, VBA coding and MS Office applications automation. Developed a set of MS Access, VB and Delphi applications, which are able to provide any small company from Moldova with the most often used and most needed documents and reports, that meet all accounting standards and are able to facilitate book-keeping and document management. Lots of C and Pascal programming under DOS. From elguavas@users.sourceforge.net Mon Sep 24 10:43:20 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Mon, 24 Sep 2001 02:43:20 -0700 Subject: [Idle-dev] CVS: idle config-extensions.def,NONE,1.1 config-highlight.def,NONE,1.1 config-keys.def,NONE,1.1 config-main.def,NONE,1.1 configHandler.py,NONE,1.1 configDialog.py,1.9,1.10 Message-ID: Update of /cvsroot/idlefork/idle In directory usw-pr-cvs1:/tmp/cvs-serv24813 Modified Files: configDialog.py Added Files: config-extensions.def config-highlight.def config-keys.def config-main.def configHandler.py Log Message: start of new config handling stuff --- NEW FILE: config-extensions.def --- # IDLE reads several config files to determine user preferences. This # file is the default config file for idle extensions settings. [SearchBinding] enable=1 [AutoIndent] enable=1 [AutoExpand] enable=1 [FormatParagraph] enable=1 [ZoomHeight] enable=1 #[ScriptBinding] # disabled in favor of ExecBinding #enable=0 [ExecBinding] enable=1 [CallTips] enable=1 [ParenMatch] enable=0 style= expression flash-delay= 500 bell= 1 hilite-foreground= black hilite-background= #43cd80 --- NEW FILE: config-highlight.def --- # IDLE reads several config files to determine user preferences. This # file is the default config file for idle highlight theme settings. [IDLE Classic Old - plain fonts] normal-foreground= black normal-background= white normal-fontStyle= normal keyword-foreground= #ff7700 keyword-fontStyle= normal comment-foreground= #dd0000 comment-fontStyle= normal string-foreground= #00aa00 string-fontStyle= normal definition-foreground= #0000ff definition-fontStyle= normal hilite-foreground= #000068 hilite-background= #006868 hilite-fontStyle= normal break-foreground= #ff7777 break-fontStyle= normal hit-background= #000000 hit-foreground= #ffffff hit-fontStyle= normal cursor-background= black error-background= #ff7777 #shell window stdout-foreground= blue stdout-fontStyle= normal stderr-foreground= red stderr-fontStyle= normal console-foreground= #770000 console-fontStyle= normal [IDLE Classic New] normal-foreground= black normal-background= white normal-fontStyle= normal keyword-foreground= #ff7700 keyword-fontStyle= bold comment-foreground= #dd0000 comment-fontStyle= italic string-foreground= #00aa00 string-fontStyle= normal definition-foreground= #0000ff definition-fontStyle= bold hilite-foreground= #000068 hilite-background= #006868 break-foreground= #ff7777 hit-background= #000000 hit-foreground= #ffffff cursor-background= black error-background= #ff7777 #shell window stdout-foreground= blue stderr-foreground= red console-foreground= #770000 --- NEW FILE: config-keys.def --- # IDLE reads several config files to determine user preferences. This # file is the default config file for idle key binding settings. [IDLE Classic - windows] Copy= ' ' Cut= ' ' Paste= ' ' beginning-of-line= ' ' center-insert= '' close-all-windows= '' close-window= '' dump-undo-state= '' end-of-file= '' python-docs= '' history-next= '' history-previous= '' interrupt-execution= '' open-class-browser= '' open-module= '' open-new-window= '' open-window-from-file= '' plain-newline-and-indent= '' redo= '' remove-selection= '' save-copy-of-window-as-file= '' save-window-as-file= '' save-window= '' select-all= '' toggle-auto-coloring= '' undo= '' [IDLE Classic - posix] Copy= ' ' Cut= '' Paste= '' beginning-of-line= ' ' center-insert= '' close-all-windows= '' close-window= ' ' do-nothing= '' dump-undo-state= '' end-of-file= '' help= '' history-next= ' ' history-previous= ' ' interrupt-execution= '' open-class-browser= '' open-module= '' open-new-window= '' open-window-from-file= '' plain-newline-and-indent= '' redo= ' ' save-copy-of-window-as-file= '' save-window-as-file= '' save-window= '' select-all= ' ' toggle-auto-coloring= '' undo= '' --- NEW FILE: config-main.def --- # IDLE reads several config files to determine user preferences. This # file is the default config file for general idle settings. # # When IDLE starts, it will look in # the following two sets of files, in order: # # default configuration # --------------------- # config-main.def the default general config file # config-extensions.def the default extension config file # config-highlight.def the default highlighting config file # config-keys.def the default keybinding config file # # user configuration # ------------------- # ~/.idlerc/idle-main.cfg the user general config file # ~/.idlerc/idle-extensions.cfg the user extension config file # ~/.idlerc/idle-highlight.cfg the user highlighting config file # ~/.idlerc/idle-keys.cfg the user keybinding config file # XXX what about Windows? # # Any options the user saves through the config dialog will be saved to # the relevant user config file. Reverting any general setting to the # default causes that entry to be wiped from the user file and re-read # from the default file. User highlighting themes or keybinding sets are # retained unless specifically deleted within the config dialog. Choosing # one of the default themes or keysets just applies the relevant settings # from the default file. [General] run-in-separate-process= 1 [EditorWindow] width= 80 height= 24 font= courier font-size= 12 [Indent] use-spaces= 1 num-spaces= 4 tab-cols= 4 [Theme] user= 0 name= "IDLE Classic New" [Keys] user= 0 name= "IDLE Classic - windows" [RecentFiles] 1= 2= 3= 4= 5= 6= 7= 8= 9= 10= --- NEW FILE: configHandler.py --- ##---------------------------------------------------------------------------## ## ## idle - configuration data handler, based on and replacing IdleConfig.py ## elguavas ## ##---------------------------------------------------------------------------## """Provides access to configuration information""" import os import sys from ConfigParser import ConfigParser, NoOptionError, NoSectionError class IdleConfParser(ConfigParser): """ A ConfigParser specialised for idle configuration file handling """ def __init__(self, cfgFile, cfgDefaults=None): """ cfgFile - string, fully specified configuration file name """ self.file=cfgFile ConfigParser.__init__(self,defaults=cfgDefaults) def GetInt(self, section, option): """ Get an option value as an integer """ return self.Get(section, option, type='int') def GetBool(self, section, option): """ Get an option value as a boolean """ return self.Get(section, option, type='bool') def Get(self, section, option, raw=0, vars=None, default=None, type=None): """ Get an option value for given section/option or return default. If type is specified, return as type. """ if type=='bool': getVal=self.getbool elif type=='int': getVal=self.getint else: getVal=self.get if self.has_option(section,option): return getVal(section, option, raw, vars) else: return default def GetSectionList(self): # only provided for consistency return self.sections() def GetOptionList(self,section): """ Get an option list for given section """ if self.has_section: return self.options(section) else: #return a default value return [] def GetHighlight(self, theme, element): fore = self.Get(theme, element + "-foreground") back = self.Get(theme, element + "-background") style = self.Ge(theme, element + "-fontStyle", default='') return {"fg": fore, "bg": back, "fStyle": style} def Load(self): """ Load the configuration file from disk """ self.read(self.file) class IdleUserConfParser(IdleConfParser): """ IdleConfigParser specialised for user configuration handling """ def Save(self): """ write loaded user configuration file back to disk """ # this is a user config, it can be written to disk self.write() class IdleConf: """ holds config parsers for all idle config files: default config files (idle install dir)/config-main.def (idle install dir)/config-extensions.def (idle install dir)/config-highlight.def (idle install dir)/config-keys.def user config files (user home dir)/.idlerc/idle-main.cfg (user home dir)/.idlerc/idle-extensions.cfg (user home dir)/.idlerc/idle-highlight.cfg (user home dir)/.idlerc/idle-keys.cfg """ def __init__(self): self.defaultCfg={} self.userCfg={} self.cfg={} self.CreateConfigHandlers() self.LoadCfgFiles() #self.LoadCfg() def CreateConfigHandlers(self): """ set up a dictionary config parsers for default and user configurations respectively """ #build idle install path if __name__ != '__main__': # we were imported idledir=os.path.dirname(__file__) else: # we were exec'ed (for testing only) idledir=os.path.abspath(sys.path[0]) #print idledir try: #build user home path userdir = os.environ['HOME'] #real home directory except KeyError: userdir = os.getcwd() #hack for os'es without real homedirs userdir=os.path.join(userdir,'.idlerc') #print userdir if not os.path.exists(userdir): os.mkdir(userdir) configTypes=('main','extensions','highlight','keys') 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,'idle-'+cfgType+'.cfg') for cfgType in configTypes: #create config parsers self.defaultCfg[cfgType]=IdleConfParser(defCfgFiles[cfgType]) self.userCfg[cfgType]=IdleUserConfParser(usrCfgFiles[cfgType]) def LoadCfgFiles(self): """ load all configuration files. """ for key in self.defaultCfg.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() idleConf=IdleConf() ### module test if __name__ == '__main__': def dumpCfg(cfg): print '\n',cfg,'\n' for key in cfg.keys(): sections=cfg[key].sections() print key print sections for section in sections: options=cfg[key].options(section) print section print options for option in options: print option, '=', cfg[key].Get(section,option) dumpCfg(idleConf.defaultCfg) dumpCfg(idleConf.userCfg) print idleConf.userCfg['main'].Get('Theme','name') #print idleConf.userCfg['highlight'].GetDefHighlight('Foo','normal') Index: configDialog.py =================================================================== RCS file: /cvsroot/idlefork/idle/configDialog.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -r1.9 -r1.10 *** configDialog.py 2001/08/13 04:36:58 1.9 --- configDialog.py 2001/09/24 09:43:17 1.10 *************** *** 11,15 **** import tkMessageBox, tkColorChooser, tkFont ! import IdleConf class ConfigDialog(Toplevel): --- 11,15 ---- import tkMessageBox, tkColorChooser, tkFont ! from configHandler import idleConf class ConfigDialog(Toplevel): *************** *** 25,32 **** self.geometry("+%d+%d" % (parent.winfo_rootx()+20, parent.winfo_rooty()+30)) ! self.LoadConfig() ! #elguavas - config placeholders til config stuff completed ! self.bg=self.cget('bg') ! self.fg=None self.CreateWidgets() --- 25,29 ---- self.geometry("+%d+%d" % (parent.winfo_rootx()+20, parent.winfo_rooty()+30)) ! #self.LoadConfig() self.CreateWidgets() *************** *** 46,62 **** self.bind('',self.ChangePageBinding) self.bind('',self.ChangePageBinding) self.wait_window() - def LoadConfig(self): - #self.configParser=IdleConf.idleconf - #self.loadedConfig={} - #self.workingConfig={} - #for key in .keys(): - #print self.configParser.getsection('Colors').options() - self.workingTestColours={ - 'Foo-Bg': '#ffffff', - 'Foo-Fg': '#000000', - 'Bar-Bg': '#777777'} - def Cancel(self): self.destroy() --- 43,49 ---- self.bind('',self.ChangePageBinding) self.bind('',self.ChangePageBinding) + #self.LoadOptMenuHighlightTarget() self.wait_window() def Cancel(self): self.destroy() *************** *** 135,149 **** self.labelTestSample.update() ! def __LoadFontList(self): ! fonts=list(tkFont.families(self)) ! fonts.sort() ! for font in fonts: ! self.listFontName.insert(END,font) ! currentFontIndex=fonts.index('courier') ! self.listFontName.see(currentFontIndex) ! self.listFontName.select_set(currentFontIndex) ! self.fontSize.set('12') ! ! def __SetFontSample(self,event): self.newFont.config(size=self.fontSize.get(),weight=NORMAL, family=self.listFontName.get(self.listFontName.curselection()[0])) --- 122,126 ---- self.labelTestSample.update() ! def SetFontSample(self,event): self.newFont.config(size=self.fontSize.get(),weight=NORMAL, family=self.listFontName.get(self.listFontName.curselection()[0])) *************** *** 168,171 **** --- 145,149 ---- self.pageButtons=[] buttonValue=0 + buttonSelColour=framePageButtons.cget('bg') for name in pageButtonNames: buttonFrame=Frame(framePageButtons,borderwidth=2,relief=RIDGE) *************** *** 174,178 **** value=buttonValue,padx=5,pady=5,takefocus=FALSE,underline=0, indicatoron=FALSE,highlightthickness=0,variable=self.pageNum, ! selectcolor=self.bg,borderwidth=0,text=name) button.pack() button.lift() --- 152,156 ---- value=buttonValue,padx=5,pady=5,takefocus=FALSE,underline=0, indicatoron=FALSE,highlightthickness=0,variable=self.pageNum, ! selectcolor=buttonSelColour,borderwidth=0,text=name) button.pack() button.lift() *************** *** 217,223 **** self.listFontName=Listbox(frameFontName,height=5,takefocus=FALSE, exportselection=FALSE) ! self.listFontName.bind('<>',self.__SetFontSample) scrollFont=Scrollbar(frameFontName) ! self.__LoadFontList() scrollFont.config(command=self.listFontName.yview) self.listFontName.config(yscrollcommand=scrollFont.set) --- 195,201 ---- self.listFontName=Listbox(frameFontName,height=5,takefocus=FALSE, exportselection=FALSE) ! self.listFontName.bind('<>',self.SetFontSample) scrollFont=Scrollbar(frameFontName) ! self.LoadFontList() scrollFont.config(command=self.listFontName.yview) self.listFontName.config(yscrollcommand=scrollFont.set) *************** *** 225,235 **** sizes=('10','11','12','13','14','16','18','20','22') args=(frameFontSize,self.fontSize)+sizes ! keyArgs={'command':self.__SetFontSample} optFontSize=apply(OptionMenu,args,keyArgs) ! #optFontSize.bind('<>',self.__SetFontSample) ! frameFontSample=Frame(frameFont,relief=SOLID,borderwidth=1, ! bg=self.workingTestColours['Foo-Bg']) ! self.labelFontSample=Label(frameFontSample,bg=self.workingTestColours['Foo-Bg'], ! fg='#000000',text='AaBbCcDdEe\nFfGgHhIiJjK\n1234567890\n#:+=(){}[]', justify=LEFT,font=self.newFont) #frameIndent --- 203,212 ---- sizes=('10','11','12','13','14','16','18','20','22') args=(frameFontSize,self.fontSize)+sizes ! keyArgs={'command':self.SetFontSample} optFontSize=apply(OptionMenu,args,keyArgs) ! #optFontSize.bind('<>',self.SetFontSample) ! frameFontSample=Frame(frameFont,relief=SOLID,borderwidth=1) ! self.labelFontSample=Label(frameFontSample, ! text='AaBbCcDdEe\nFfGgHhIiJjK\n1234567890\n#:+=(){}[]', justify=LEFT,font=self.newFont) #frameIndent *************** *** 300,315 **** frameTheme=Frame(frame,borderwidth=2,relief=GROOVE) #frameCustom ! frameTarget=Frame(frameCustom) ! self.frameHighlightSample=Frame(frameCustom,relief=SOLID,borderwidth=1, ! bg=self.workingTestColours['Foo-Bg'],cursor='hand2') frameSet=Frame(frameCustom) ! self.frameColourSet=Frame(frameSet,relief=SOLID,borderwidth=1, ! bg=self.workingTestColours['Foo-Bg']) frameFontSet=Frame(frameSet) labelCustomTitle=Label(frameCustom,text='Set Custom Highlighting') ! labelTargetTitle=Label(frameTarget,text='for : ') ! optMenuTarget=OptionMenu(frameTarget, self.highlightTarget,'normal text background','test target interface item 2') - self.highlightTarget.set('normal text background') buttonSetColour=Button(self.frameColourSet,text='Set Colour', command=self.GetColour) --- 277,290 ---- frameTheme=Frame(frame,borderwidth=2,relief=GROOVE) #frameCustom ! self.frameHighlightTarget=Frame(frameCustom) ! self.frameHighlightSample=Frame(frameCustom,relief=SOLID, ! borderwidth=1,cursor='hand2') frameSet=Frame(frameCustom) ! self.frameColourSet=Frame(frameSet,relief=SOLID,borderwidth=1) frameFontSet=Frame(frameSet) labelCustomTitle=Label(frameCustom,text='Set Custom Highlighting') ! labelTargetTitle=Label(self.frameHighlightTarget,text='for : ') ! self.optMenuHighlightTarget=OptionMenu(self.frameHighlightTarget, self.highlightTarget,'normal text background','test target interface item 2') buttonSetColour=Button(self.frameColourSet,text='Set Colour', command=self.GetColour) *************** *** 323,328 **** 'def Ahem(foo,bar):\n '+ '"""'+'doc hazard'+'"""'+ ! '\n test=foo\n text=bar\n return', ! bg=self.workingTestColours['Foo-Bg']) buttonSaveCustomTheme=Button(frameCustom, text='Save as a Custom Theme') --- 298,302 ---- 'def Ahem(foo,bar):\n '+ '"""'+'doc hazard'+'"""'+ ! '\n test=foo\n text=bar\n return') buttonSaveCustomTheme=Button(frameCustom, text='Save as a Custom Theme') *************** *** 351,355 **** #frameCustom labelCustomTitle.pack(side=TOP,anchor=W,padx=5,pady=5) ! frameTarget.pack(side=TOP,padx=5,pady=5,fill=X) self.frameHighlightSample.pack(side=TOP,padx=5,pady=5,expand=TRUE,fill=BOTH) frameSet.pack(side=TOP,fill=X) --- 325,329 ---- #frameCustom labelCustomTitle.pack(side=TOP,anchor=W,padx=5,pady=5) ! self.frameHighlightTarget.pack(side=TOP,padx=5,pady=5,fill=X) self.frameHighlightSample.pack(side=TOP,padx=5,pady=5,expand=TRUE,fill=BOTH) frameSet.pack(side=TOP,fill=X) *************** *** 357,361 **** frameFontSet.pack(side=RIGHT,padx=5,pady=5,anchor=W) labelTargetTitle.pack(side=LEFT,anchor=E) ! optMenuTarget.pack(side=RIGHT,anchor=W,expand=TRUE,fill=X) buttonSetColour.pack(expand=TRUE,fill=BOTH,padx=10,pady=10) labelFontTitle.pack(side=TOP,anchor=W) --- 331,335 ---- frameFontSet.pack(side=RIGHT,padx=5,pady=5,anchor=W) labelTargetTitle.pack(side=LEFT,anchor=E) ! self.optMenuHighlightTarget.pack(side=RIGHT,anchor=W,expand=TRUE,fill=X) buttonSetColour.pack(expand=TRUE,fill=BOTH,padx=10,pady=10) labelFontTitle.pack(side=TOP,anchor=W) *************** *** 529,532 **** --- 503,568 ---- return frame + + def LoadFontList(self): + fonts=list(tkFont.families(self)) + fonts.sort() + for font in fonts: + self.listFontName.insert(END,font) + currentFontIndex=fonts.index('courier') + self.listFontName.see(currentFontIndex) + self.listFontName.select_set(currentFontIndex) + self.fontSize.set('12') + + #def LoadOptionMenu(self, optMenu, optList, optVar, optVal=None, + # command=None): + def LoadOptionMenu(self, optMenu, optVar, optVal=None, command=None): + """ + Load the relevant list of values into an OptionMenu and set + selected value if required. + """ + params={'cfg':None, + 'section':None, + 'optList':None, + 'optVar':None, + 'optVal':None, + 'command':None} + if optMenu == self.optMenuHighlightTarget: + params['cfg']=idleConf.userCfg['highlight'] + # if + # params['section']=idleconf.userCfg['main'].GetDef('EditorWindow', + # 'theme') + # + # params['optVar']=self.HighlightTarget + # params['optList']=idleconf.defaultCfg['main'].options(params.Section) + # else: # a default theme + # pass + #params.optList=idleConf + + + #if not params.optVar.get(): #no value set yet (initial load) + # params.optVal= + + #if params.section: #we're asking to load a list of option names + # optList=params.cfg + #elif optMenu == xx: + #else: + + #if self.HighlightTarget.get(): #if there was a value set (reload) + # params.optVal=self.HighlightTarget.get() + #else: #no value set yet (initial load) + #if not params.optVar.get(): #no value set yet (initial load) + + menu=optMenu['menu'] + print menu + menu.delete(0,END) + for item in optList: + menu.add_command(label=item,command=command) + if optVal: + optVar.set(optVal) + elif optList: + optVar.set(optList[0]) + + def SaveConfigs(self): + pass if __name__ == '__main__': From bas@andrew.cmu.edu Mon Sep 24 22:24:19 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Mon, 24 Sep 2001 17:24:19 -0400 Subject: [Idle-dev] spawn fix Message-ID: <624879988.1001352259@muon> I found a bug that should be fixed by those working on the Idle source code. In spawn.py the Windows spawn routine should look like this: def spawn(bin, *args): nargs = [ '"'+bin+'"' ] ## was nargs = [bin] for arg in args: nargs.append( '"'+arg+'"' ) os.spawnv( os.P_NOWAIT, bin, nargs ) Without the surrounding quote marks os.spawnv fails to find the Python executor, if Python has been installed in Program Files (because this folder name contains a space). Bruce Sherwood From noticias@iberosoft.com Sat Sep 29 14:27:52 2001 From: noticias@iberosoft.com (Informacion de Iberosoft.com) Date: Sat, 29 Sep 2001 13:27:52 Subject: [Idle-dev] Nueva web corporativa de Iberosoft.com Message-ID: Estimado amigo, nos complace comunicarte que Iberosoft, lider de soluciones software e implantaciones de portales interactivos en Español, ha cambiado su web corporativa. Visitanos en http://www.iberosoft.com/ y disfruta de nuestros exclusivos servicios Gratuitos. -Traceador Visual (VisualRoute Server en Espalo, Unico en el mundo en nustro idioma!!) -VisualPulse, monitor de tiempos de latencia de IPs, servidores, etc. -Webmail -Foros Y muchas mas.... Esperamos contar pronto con tu visita y te agradecemos todo tipo de comentarios noticias@iberosoft.com From informacion.general@lideralia.com Sun Sep 30 12:18:26 2001 From: informacion.general@lideralia.com (Informacion General) Date: Sun, 30 Sep 2001 11:18:26 Subject: [Idle-dev] Informacion de Interes Message-ID:  Estimado amigo, nos complace comunicarte que Iberosoft, líder de soluciones software e implantaciones de portales interactivos en Español, ha cambiado su web corporativa. Visitanos en http://www.iberosoft.com/ y disfruta de nuestros exclusivos servicios Gratuitos. -Traceador Visual (VisualRoute Server en Español, Único en el mundo en nuestro idioma!!) -VisualPulse, monitor de tiempos de latencia de IPs, servidores, etc. -Webmail -Chat -Foros -Noticias. Y muchas mas.... Esperamos contar pronto con tu visita y te agradecemos todo tipo de comentarios Así mismo te expresamos nuestro interés en conocer tu opinión sobre nuestras actividades. ¿quieres trabajar con nosotros? Envíanos tu CV lo mas detallado posible a rrhh@iberosoft.com  Recibe un saludo del equipo de Iberosoft.com noticias@iberosoft.com