From bas@andrew.cmu.edu Wed Oct 3 18:59:08 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Wed, 03 Oct 2001 13:59:08 -0400 Subject: [Idle-dev] mods? Message-ID: <1390168645.1002117548@muon> --==========1390189683========== Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline I'm not a registered developer for idlefork, so I'm not quite sure how best to submit the following changes. I gather that one mechanism is "patches", with which I'm not familiar. I'd be happy to submit this work in some other way, if someone would give me a microtutorial on how I should be doing this. Thanks! Bruce Sherwood ------------------------------------------------------------------------ Attached is idlemods.zip, a zip file containing three modified files produced by modifying the files provided in idlefork-0.8.1.zip: 1) PyShell.py: outputs informative paragraph if Idle cannot run 2) spawn.py: corrects bug in Windows launch (no spaces around python.exe) 3) EditorWindow.py: invoke VPython.html if present in Doc, else index.html 1) The changes to PyShell.py move the creation of an on-demand window early enough in the process to be able to give an informative error message if Idle cannot run due to socket failure. This addresses the problem that Idle can fail silently. 2) A one-line change to spawn.py was needed because DOS-munging to 8-char names caused Idle to fail to start a run (on pressing F5) if Python was located in "Program Files" (which has a space in it). 3) The small change to EditorWindow means that if VPython is installed, pressing F1 invokes Doc\VPython.html, which gives you VPython documentation, Numeric documentation, and the usual Python documentation. If VPython.html is not installed, Doc\index.html is invoked, which just gives you Python documentation (VPython.html has a link to index.html). VPython users need the additional documentation. For info on the nature of VPython, see http://cil.andrew.cmu.edu/projects/visual My goal is that in the future all VPython distributions include the idlefork version of idle, rather than the older version originally due to Dave Scherer, from which idlefork development started. --==========1390189683========== Content-Type: application/x-zip-compressed; name="idlemods.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="idlemods.zip"; size=16360 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 AA== --==========1390189683==========-- From StephenM.Gava Thu Oct 4 11:14:40 2001 From: StephenM.Gava (StephenM.Gava) Date: Thu, 4 Oct 2001 20:14:40 +1000 Subject: [Idle-dev] mods? In-Reply-To: <1390168645.1002117548@muon> References: <1390168645.1002117548@muon> Message-ID: <20011004001025.XJDS13193.mss.rdc2.nsw.optushome.com.au@there> On Thu, 4 Oct 2001 03:59:am, Bruce Sherwood wrote: > I'm not a registered developer for idlefork, so I'm not quite sure how best > to submit the following changes. I gather that one mechanism is "patches", > with which I'm not familiar. I'd be happy to submit this work in some other > way, if someone would give me a microtutorial on how I should be doing > this. Thanks! > > Bruce Sherwood Hi Bruce. Actually you don't have to be able to make real patches (using patch) to submit 'patches', or more acurately, coding contributions, to idlefork. Just go to the idlefork home page ( http://idlefork.sourceforge.net/ ) and click on the 'submit patches' link in the 'IDLEfork at SourceForge' section of the sidebar. This will take you to the patches area of the idlefork sourceforge site where you will see a list of patches currently in the system. When you get there click on the 'Submit New' link, which will take you to a page where you can enter your new patch. Here you can eitther paste your changes, along with some explanatory notes, directly into the 'Detailed Description' box, or you can attach a file containig your code if you wish. In either case please make sure you include some notes, or particularly comments in the code, to explain your modifications or additions and their purpose. Thanks very much for contributing to the project. I meant to contact you earlier in response to your contribution of your 'spawn fix' patch for the windows platform, but I haven't regained reliable 'net access yet. Please post again if you have any further questions about submitting 'patches' or idlefork in general. Thanks again, Regards, Stephen. > > ------------------------------------------------------------------------ > > Attached is idlemods.zip, a zip file containing three modified files > produced by modifying the files provided in idlefork-0.8.1.zip: > > 1) PyShell.py: outputs informative paragraph if Idle cannot run > 2) spawn.py: corrects bug in Windows launch (no spaces around python.exe) > 3) EditorWindow.py: invoke VPython.html if present in Doc, else index.html > > 1) The changes to PyShell.py move the creation of an on-demand window early > enough in the process to be able to give an informative error message if > Idle cannot run due to socket failure. This addresses the problem that Idle > can fail silently. > > 2) A one-line change to spawn.py was needed because DOS-munging to 8-char > names caused Idle to fail to start a run (on pressing F5) if Python was > located in "Program Files" (which has a space in it). > > 3) The small change to EditorWindow means that if VPython is installed, > pressing F1 invokes Doc\VPython.html, which gives you VPython > documentation, Numeric documentation, and the usual Python documentation. > If VPython.html is not installed, Doc\index.html is invoked, which just > gives you Python documentation (VPython.html has a link to index.html). > VPython users need the additional documentation. For info on the nature of > VPython, see > > http://cil.andrew.cmu.edu/projects/visual > > My goal is that in the future all VPython distributions include the > idlefork version of idle, rather than the older version originally due to > Dave Scherer, from which idlefork development started. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From noreply@sourceforge.net Thu Oct 4 02:33:57 2001 From: noreply@sourceforge.net (noreply@sourceforge.net) Date: Wed, 03 Oct 2001 18:33:57 -0700 Subject: [Idle-dev] SourceForge Verification Message-ID: You have requested a change of email address on SourceForge. Please visit the following URL to complete the email change: -- the SourceForge staff From StephenM.Gava Thu Oct 4 12:44:23 2001 From: StephenM.Gava (StephenM.Gava) Date: Thu, 4 Oct 2001 21:44:23 +1000 Subject: [Idle-dev] SourceForge Verification In-Reply-To: References: Message-ID: <20011004014007.ZVKI13193.mss.rdc2.nsw.optushome.com.au@there> Please ignore the original of this message, and any subsequent messages from 'noreply@sourceforge.net'. They are generated by sourceforge in response to an administrative email account I have set up there to enable cvs update and patch submission and bug report messages, etc., relating to IDLEfork, from sourceforge, to continue to be forwarded to this list in light of sourceforges recent changes to mail forwarding policy. Regards, Stephen. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From bas@andrew.cmu.edu Thu Oct 4 04:28:30 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Wed, 03 Oct 2001 23:28:30 -0400 Subject: [Idle-dev] mods? In-Reply-To: <20011004001025.XJDS13193.mss.rdc2.nsw.optushome.com.au@there> Message-ID: <1424330592.1002151710@HYPERON.REM.CMU.EDU> Thanks for the help. I've now submitted 3 patches, one for each of the files I worked on. What happens to these various patch submissions? Do the developers occasionally make a sweep through them, incorporating those they see as useful into the official source? (I'm new to this particular form of collaboration.) Bruce Sherwood From StephenM.Gava Thu Oct 4 15:21:34 2001 From: StephenM.Gava (StephenM.Gava) Date: Fri, 5 Oct 2001 00:21:34 +1000 Subject: [Idle-dev] mods? In-Reply-To: <1424330592.1002151710@HYPERON.REM.CMU.EDU> References: <1424330592.1002151710@HYPERON.REM.CMU.EDU> Message-ID: <20011004041719.ELIT13193.mss.rdc2.nsw.optushome.com.au@there> Bruce Sherwood wrote: > Thanks for the help. I've now submitted 3 patches, one for each of the > files I worked on. > > What happens to these various patch submissions? Do the developers > occasionally make a sweep through them, incorporating those they see as > useful into the official source? (I'm new to this particular form of > collaboration.) In theory, that's exactly how it should work. ;^) I'm the only active developer on IDLEfork at present and due to net access problems and other circumstances I'm not able to devote the time I'd like to the project at the moment, but I hope things will change for the better on this front soon. I do monitor this list and the patches and bug reports at sourceforge when I get online, and when I get a chance to spend some time on it one of the first things I will need to do is go through the backlog of patches and have a close look at them. In the meantime, by submitting your patches through sourceforge you can guarantee that they won't be lost to the project and will indeed be looked at in detail and applied if possible. It's good to have some direct input from the Vpython neck of the woods again. In regard to this : > My goal is that in the future all VPython distributions include the > idlefork version of idle, rather than the older version originally due to > Dave Scherer, from which idlefork development started. Please take into account the fact that IDLEfork is temporarily in a 'treading water' mode. Also you should consider that although it is an aim to have stable releases of IDLEfork, at the moment it's alpha, and the future target for full stability will be a version of Python's official IDLE with the IDLEfork changes folded in. Anyway, the main point is, all help greatly appreciated. Stephen. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From bas@andrew.cmu.edu Thu Oct 4 15:50:13 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Thu, 04 Oct 2001 10:50:13 -0400 Subject: [Idle-dev] mods? In-Reply-To: <20011004041719.ELIT13193.mss.rdc2.nsw.optushome.com.au@there> Message-ID: <1465233222.1002192613@HYPERON.REM.CMU.EDU> Thanks for the explanation of the process. As far as I can tell from testing, the current download idlefork-0.8.1.zip, plus my changes, is equivalent to the original Scherer version (plus bug fixes). So after just a bit more testing I intend to replace the original version with the new one in VPython distributions. Bruce Sherwood --On Friday, October 05, 2001 00:21 +1000 "Stephen M. Gava" wrote: > It's good to have some direct input from the Vpython neck of the woods > again. In regard to this : > >> My goal is that in the future all VPython distributions include the >> idlefork version of idle, rather than the older version originally due to >> Dave Scherer, from which idlefork development started. > > Please take into account the fact that IDLEfork is temporarily in a > 'treading water' mode. Also you should consider that although it is an > aim to have stable releases of IDLEfork, at the moment it's alpha, and > the future target for full stability will be a version of Python's > official IDLE with the IDLEfork changes folded in. Anyway, the main > point is, all help greatly appreciated. From elguavas@users.sourceforge.net Fri Oct 5 11:30:57 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Fri, 5 Oct 2001 20:30:57 +1000 Subject: [Idle-dev] test for new mail redirect account only - ignore Message-ID: <20011005002641.GBFU13193.mss.rdc2.nsw.optushome.com.au@there> ignore this message - it is only for testing the new mail redirect setup for idlefork at sourceforge. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From dariob@millic.com.ar Sat Oct 6 01:16:18 2001 From: dariob@millic.com.ar (dariob@millic.com.ar) Date: Fri, 05 Oct 2001 21:16:18 -0300 Subject: [Idle-dev] VCD Y MP3. Message-ID: <0f87e27090006a1MAIL2@smtp2.millic.com.ar> This is a Multipart MIME message. ------=_NextPart_000_001__2609031_76578,47 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 7bit ------=_NextPart_000_001__2609031_76578,47 Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: base64 PGh0bWw+DQoNCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1MYW5ndWFnZSIg Y29udGVudD0iZXMiPg0KPG1ldGEgbmFtZT0iR0VORVJBVE9SIiBjb250ZW50PSJNaWNyb3Nv ZnQgRnJvbnRQYWdlIDUuMCI+DQo8bWV0YSBuYW1lPSJQcm9nSWQiIGNvbnRlbnQ9IkZyb250 UGFnZS5FZGl0b3IuRG9jdW1lbnQiPg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj4NCjx0aXRsZT5Q YWdpbmEgbnVldmEgMTwvdGl0bGU+DQo8L2hlYWQ+DQoNCjxib2R5Pg0KDQo8dGFibGUgaGVp Z2h0PSI4MSIgY2VsbFNwYWNpbmc9IjAiIGNlbGxQYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIg YmdDb2xvcj0iIzAwMDAwMCIgYm9yZGVyPSIwIj4NCiAgPGZvbnQgZmFjZT0iQXJpYWwsIEhl bHZldGljYSwgc2Fucy1zZXJpZiIgY29sb3I9IiMwMDgwZmYiIHNpemU9IjQiPjxiPg0KICA8 Y2FwdGlvbj48Zm9udCBmYWNlPSJUYWhvbWEiIGNvbG9yPSIjZmYwMDAwIiBzaXplPSI2Ij48 c3Ryb25nPqGhoaEgTk8gVEUgUE9ERVMgDQogIFBFUkRFUiBFU1RBIE9QT1JUVU5JREFEISEh ITwvc3Ryb25nPjwvZm9udD4gPHN0cm9uZz4NCiAgPGZvbnQgZmFjZT0iVGFob21hIiBjb2xv cj0iIzAwMDBmZiIgc2l6ZT0iNSI+PGZvbnQgc2l6ZT0iNSIgZmFjZT0iVGFob21hIj4NCiAg RVNDVUNIQSA8L2ZvbnQ+PC9mb250Pjwvc3Ryb25nPjxmb250IHNpemU9IisyIiBjb2xvcj0i IzAwMDBmZiIgZmFjZT0iVGFob21hIj4NCiAgTdpTSUNBIE1QMyBFTiBUVSBBVVRPLCBDQVNB LCBDQU1JTkFORE8gTyBFTiBET05ERSBQUkVGSUVSQVMsPC9mb250PjxzdHJvbmc+PGZvbnQg ZmFjZT0iVGFob21hIiBjb2xvcj0iIzAwMDBmZiIgc2l6ZT0iNSI+PGZvbnQgc2l6ZT0iNSIg ZmFjZT0iVGFob21hIj4NCiAgWSBNSVJBIExBUyBNRUpPUkVTIDwvZm9udD48Zm9udCBzaXpl PSI1IiBmYWNlPSJUYWhvbWEiPg0KICBQRUzNQ1VMQVMgRU4gRUwgVFYgREUgVFUgQ0FTQS48 L2ZvbnQ+PC9mb250Pjwvc3Ryb25nPg0KICA8Zm9udCBmYWNlPSJUYWhvbWEiIGNvbG9yPSIj MDAwMGZmIiBzaXplPSI1Ij48c3Ryb25nPjx1PlPaUEVSIE9GRVJUQSBFTiBMQSANCiAgUFVF UlRBIERFIFRVIENBU0E8L3U+PC9zdHJvbmc+PC9mb250PjwvYj48L2ZvbnQ+DQogIDxwIGFs aWduPSJjZW50ZXIiPg0KICA8Zm9udCBmYWNlPSJBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNl cmlmIiBjb2xvcj0iIzAwODBmZiIgc2l6ZT0iNCI+PGI+TG8gTWVqb3IgDQogIGRlbCBNZXJj YWRvIGEgUHJlY2lvIGRlIExPQ09TPC9iPjwvZm9udD48L3A+DQogIDwvY2FwdGlvbj4NCiAg PHRyPg0KICAgIDx0ZCBoZWlnaHQ9IjgxIj4NCiAgICA8dGFibGUgY2VsbFNwYWNpbmc9IjAi IGNlbGxQYWRkaW5nPSI2IiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBoZWlnaHQ9IjcxIj4N CiAgICAgIDx0cj4NCiAgICAgICAgPHRkIHdpZHRoPSI1MyUiIGhlaWdodD0iNTkiPg0KICAg ICAgICA8dGFibGUgY2VsbFNwYWNpbmc9IjAiIGNlbGxQYWRkaW5nPSIzIiB3aWR0aD0iMTAw JSIgYmdDb2xvcj0iIzAwODAwMCIgYm9yZGVyPSIwIj4NCiAgICAgICAgICA8dHI+DQogICAg ICAgICAgICA8dGQgd2lkdGg9IjEwMCUiPg0KICAgICAgICAgICAgPHAgc3R5bGU9IndvcmQt c3BhY2luZzogMHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tcmlnaHQ6IDBweDsgbWFy Z2luLXRvcDogMHB4OyBtYXJnaW4tYm90dG9tOiA2cHgiIGFsaWduPSJjZW50ZXIiPg0KICAg ICAgICAgICAgPGZvbnQgZmFjZT0iQXJpYWwgQmxhY2siIGNvbG9yPSIjZmZmZjAwIj5PZmVy dGEgbGltaXRhZGEsIGhhc3RhIA0KICAgICAgICAgICAgYWdvdGFyIFN0b2NrLjwvZm9udD48 L3A+DQogICAgICAgICAgICA8cCBzdHlsZT0id29yZC1zcGFjaW5nOiAwcHg7IG1hcmdpbi1s ZWZ0OiAwcHg7IG1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tdG9wOiAwcHg7IG1hcmdpbi1i b3R0b206IDZweCIgYWxpZ249ImNlbnRlciI+DQogICAgICAgICAgICA8Yj48Zm9udCBmYWNl PSJBcmlhbCIgY29sb3I9IiNmZmZmMDAiIHNpemU9IjIiPk11Y2hvcyB5YSBsbyB0aWVuZW4s IA0KICAgICAgICAgICAgZXN0YSBvcG9ydHVuaWRhZCBubyBzZSByZXBldGly4SB5IGxhcyB1 bmlkYWRlcyBzZSBlc3RhbiBhY2FiYW5kbywgbm8gDQogICAgICAgICAgICBzZSB2ZW5kZSBw b3Igb3RybyBtZWRpbywgaGF6IHR1IG9mZXJ0YSBwdWVzIG1h8WFuYSBwdWVkZSBzZXIgdGFy ZGUuPC9mb250PjwvYj48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+ DQogICAgICAgIDwvdGQ+DQogICAgICA8L3RyPg0KICAgIDwvdGFibGU+DQogICAgPC90ZD4N CiAgPC90cj4NCjwvdGFibGU+DQo8dGFibGUgaGVpZ2h0PSIxNTQiIGNlbGxTcGFjaW5nPSIw IiBjZWxsUGFkZGluZz0iMCIgd2lkdGg9IjU4NCIgYm9yZGVyPSIwIj4NCiAgPHRyPg0KICAg IDx0ZCB2QWxpZ249InRvcCIgd2lkdGg9IjI3MSIgaGVpZ2h0PSIxNTQiPg0KICAgIDx0YWJs ZSBoZWlnaHQ9IjQxNSIgY2VsbFNwYWNpbmc9IjAiIGNlbGxQYWRkaW5nPSIwIiB3aWR0aD0i MjA3IiBib3JkZXI9IjAiPg0KICAgICAgPHRyPg0KICAgICAgICA8dGQgd2lkdGg9IjE5NyIg aGVpZ2h0PSI0MTUiPg0KICAgICAgICA8dGFibGUgYm9yZGVyQ29sb3I9IiMwMDgwZmYiIGhl aWdodD0iMzQxIiBjZWxsU3BhY2luZz0iMCIgY2VsbFBhZGRpbmc9IjAiIHdpZHRoPSIxMDAl IiBib3JkZXI9IjIiPg0KICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0ZCB3aWR0aD0i MTAwJSIgaGVpZ2h0PSIzMSI+DQogICAgICAgICAgICA8dGFibGUgY2VsbFNwYWNpbmc9IjAi IGNlbGxQYWRkaW5nPSI1IiB3aWR0aD0iMTAwJSIgYmdDb2xvcj0iIzAwODBmZiIgYm9yZGVy PSIwIj4NCiAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0i MTAwJSI+PGZvbnQgZmFjZT0iVGFob21hIiBjb2xvcj0iI2ZmZmZmZiIgc2l6ZT0iMyI+DQog ICAgICAgICAgICAgICAgPGI+Q2FyYWN0ZXLtc3RpY2FzPC9iPjwvZm9udD48L3RkPg0KICAg ICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgICAgIDwv dGQ+DQogICAgICAgICAgPC90cj4NCiAgICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQg d2lkdGg9IjEwMCUiIGhlaWdodD0iMzA2Ij4NCiAgICAgICAgICAgIDx0YWJsZSBoZWlnaHQ9 IjMwMiIgY2VsbFNwYWNpbmc9IjAiIGNlbGxQYWRkaW5nPSI1IiB3aWR0aD0iMTAwJSIgYm9y ZGVyPSIwIj4NCiAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgIDx0ZCB3aWR0 aD0iMTAwJSIgaGVpZ2h0PSIyOTYiPg0KICAgICAgICAgICAgICAgIDx0YWJsZSBjZWxsU3Bh Y2luZz0iMCIgY2VsbFBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPg0KICAg ICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEw MCUiPg0KICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT0id29yZC1zcGFjaW5nOiAwcHg7 IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tdG9wOiAwcHg7 IG1hcmdpbi1ib3R0b206IDVweCI+DQogICAgICAgICAgICAgICAgICAgIDxmb250IGZhY2U9 IlRhaG9tYSIgY29sb3I9IiMwMDgwZmYiIHNpemU9IjIiPjxiPlVuaWNvIGVuIA0KICAgICAg ICAgICAgICAgICAgICBBcmdlbnRpbmEgcXVlIGxlZSBjZCBjb24gTVAzIHkgYWRlbWFzIGxl ZSBWQ0QgY29uIHNhbGlkYSBkZSANCiAgICAgICAgICAgICAgICAgICAgdmlkZW8geSBhdWRp byBvIHNlYSBxdWUmbmJzcDtzZSB2ZW4gZW4gZWwgdGVsZXZpc29yLCBlcyBsbyB1bHRpbW8g DQogICAgICAgICAgICAgICAgICAgIGVuIHRlY25vbG9naWEgcGFyYSBtcDMgeSB2Y2Q8L2I+ PC9mb250PjwvcD4NCiAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9IndvcmQtc3BhY2lu ZzogMHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tcmlnaHQ6IDBweDsgbWFyZ2luLXRv cDogMHB4OyBtYXJnaW4tYm90dG9tOiA1cHgiPg0KICAgICAgICAgICAgICAgICAgICA8Zm9u dCBmYWNlPSJUYWhvbWEiIGNvbG9yPSIjMDA4MGZmIiBzaXplPSIyIj48Yj5FbCANCiAgICAg ICAgICAgICAgICAgICAgcmVwcm9kdWN0b3IgZGUgTVAzIHkgVkNEIGluY2x1eWU6PC9iPjwv Zm9udD48L3A+DQogICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJ3b3JkLXNwYWNpbmc6 IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi10b3A6 IDBweDsgbWFyZ2luLWJvdHRvbTogNXB4Ij4NCiAgICAgICAgICAgICAgICAgICAgPGZvbnQg ZmFjZT0iVGFob21hIiBjb2xvcj0iIzAwODBmZiIgc2l6ZT0iMiI+PGI+LSBDb250cm9sIA0K ICAgICAgICAgICAgICAgICAgICByZW1vdG8gaW5hbGFtYnJpY288L2I+PC9mb250PjwvcD4N CiAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9IndvcmQtc3BhY2luZzogMHB4OyBtYXJn aW4tbGVmdDogMHB4OyBtYXJnaW4tcmlnaHQ6IDBweDsgbWFyZ2luLXRvcDogMHB4OyBtYXJn aW4tYm90dG9tOiA1cHgiPg0KICAgICAgICAgICAgICAgICAgICA8Zm9udCBmYWNlPSJUYWhv bWEiIGNvbG9yPSIjMDA4MGZmIiBzaXplPSIyIj48Yj4tIEJhdGVyaWFzIA0KICAgICAgICAg ICAgICAgICAgICAoUGlsYXMpIFJlY2FyZ2FibGVzIExpdGl1bTwvYj48L2ZvbnQ+PC9wPg0K ICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT0id29yZC1zcGFjaW5nOiAwcHg7IG1hcmdp bi1sZWZ0OiAwcHg7IG1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tdG9wOiAwcHg7IG1hcmdp bi1ib3R0b206IDVweCI+DQogICAgICAgICAgICAgICAgICAgIDxmb250IGZhY2U9IlRhaG9t YSIgY29sb3I9IiMwMDgwZmYiIHNpemU9IjIiPjxiPi0gQ2FibGVzIGRlIA0KICAgICAgICAg ICAgICAgICAgICBBdWRpbyB5IGRlIFZpZGVvPC9iPjwvZm9udD48L3A+DQogICAgICAgICAg ICAgICAgICAgIDxwIHN0eWxlPSJ3b3JkLXNwYWNpbmc6IDBweDsgbWFyZ2luLWxlZnQ6IDBw eDsgbWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi10b3A6IDBweDsgbWFyZ2luLWJvdHRvbTog NXB4Ij4NCiAgICAgICAgICAgICAgICAgICAgPGZvbnQgZmFjZT0iVGFob21hIiBjb2xvcj0i IzAwODBmZiIgc2l6ZT0iMiI+PGI+LSBBdWRpZm9ubzwvYj48L2ZvbnQ+PC9wPg0KICAgICAg ICAgICAgICAgICAgICA8cCBzdHlsZT0id29yZC1zcGFjaW5nOiAwcHg7IG1hcmdpbi1sZWZ0 OiAwcHg7IG1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tdG9wOiAwcHg7IG1hcmdpbi1ib3R0 b206IDVweCI+DQogICAgICAgICAgICAgICAgICAgIDxmb250IGZhY2U9IlRhaG9tYSIgY29s b3I9IiMwMDgwZmYiIHNpemU9IjIiPjxiPi0gTWFudWFsIGRlIA0KICAgICAgICAgICAgICAg ICAgICBpbnN0cnVjY2lvbjwvYj48L2ZvbnQ+PC9wPg0KICAgICAgICAgICAgICAgICAgICA8 cCBzdHlsZT0id29yZC1zcGFjaW5nOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi1y aWdodDogMHB4OyBtYXJnaW4tdG9wOiAwcHg7IG1hcmdpbi1ib3R0b206IDVweCI+DQogICAg ICAgICAgICAgICAgICAgIDxmb250IGZhY2U9IlRhaG9tYSIgY29sb3I9IiMwMDgwZmYiIHNp emU9IjIiPjxiPi0gDQogICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybWFkb3I8L2I+PC9m b250PjwvcD4NCiAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9IndvcmQtc3BhY2luZzog MHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tcmlnaHQ6IDBweDsgbWFyZ2luLXRvcDog MHB4OyBtYXJnaW4tYm90dG9tOiA1cHgiPg0KICAgICAgICAgICAgICAgICAgICA8Zm9udCBm YWNlPSJUYWhvbWEiIGNvbG9yPSIjMDA4MGZmIiBzaXplPSIyIj48Yj4tIENhcmdhZG9yPC9i PjwvZm9udD48L3RkPg0KICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAg ICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICAgIDwvdHI+ DQogICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICA8 L3RyPg0KICAgICAgICA8L3RhYmxlPg0KICAgICAgICA8L3RkPg0KICAgICAgPC90cj4NCiAg ICA8L3RhYmxlPg0KICAgIDwvdGQ+DQogICAgPHRkIHdpZHRoPSIzMjciIGhlaWdodD0iMTU0 Ij4NCiAgICA8dGFibGUgY2VsbFNwYWNpbmc9IjAiIGNlbGxQYWRkaW5nPSIwIiB3aWR0aD0i MTAwJSIgYm9yZGVyPSIwIj4NCiAgICAgIDx0cj4NCiAgICAgICAgPHRkIHdpZHRoPSIxMDAl Ij4NCiAgICAgICAgPHRhYmxlIGNlbGxTcGFjaW5nPSIwIiBjZWxsUGFkZGluZz0iMCIgd2lk dGg9IjEwMCUiIGJvcmRlcj0iMCI+DQogICAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRk IHdpZHRoPSI3MiUiPg0KICAgICAgICAgICAgPGltZyBoZWlnaHQ9IjIxMiIgc3JjPSJodHRw Oi8vaW1hZ2Vob3N0LmF1Y3Rpb253YXRjaC5jb20vcHJldmlldy9jYy9jY29ycmVhL21wdHJl cDUuanBnIiB3aWR0aD0iMjIyIiBib3JkZXI9IjAiPjwvdGQ+DQogICAgICAgICAgICA8dGQg d2lkdGg9IjI4JSI+DQogICAgICAgICAgICA8dGFibGUgY2VsbFNwYWNpbmc9IjAiIGNlbGxQ YWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4NCiAgICAgICAgICAgICAgPHRy Pg0KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAwJSI+DQogICAgICAgICAgICAgICAg PGltZyBzcmM9Imh0dHA6Ly9pbWFnZWhvc3QuYXVjdGlvbndhdGNoLmNvbS9wcmV2aWV3L2Nj L2Njb3JyZWEvbXB0cmVwMS5qcGciIHdpZHRoPSIxMjYiIGJvcmRlcj0iMCI+PC90ZD4NCiAg ICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAg IDx0ZCB3aWR0aD0iMTAwJSI+DQogICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9p bWFnZWhvc3QuYXVjdGlvbndhdGNoLmNvbS9wcmV2aWV3L2NjL2Njb3JyZWEvbXB0cmVwMi5q cGciIHdpZHRoPSIxMjYiIGJvcmRlcj0iMCI+PC90ZD4NCiAgICAgICAgICAgICAgPC90cj4N CiAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAwJSI+ DQogICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9pbWFnZWhvc3QuYXVjdGlvbndh dGNoLmNvbS9wcmV2aWV3L2NjL2Njb3JyZWEvbXB0cmVwNy5qcGciIHdpZHRoPSIxMjYiIGJv cmRlcj0iMCI+PC90ZD4NCiAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgPHRy Pg0KICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTAwJSI+DQogICAgICAgICAgICAgICAg PGltZyBzcmM9Imh0dHA6Ly9pbWFnZWhvc3QuYXVjdGlvbndhdGNoLmNvbS9wcmV2aWV3L2Nj L2Njb3JyZWEvbXB0cmVwOC5qcGciIHdpZHRoPSIxMjYiIGJvcmRlcj0iMCI+PC90ZD4NCiAg ICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgIDwvdGFibGU+DQogICAgICAgICAgICA8 L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+DQogICAgICAgIDwvdGQ+ DQogICAgICA8L3RyPg0KICAgICAgPHRyPg0KICAgICAgICA8dGQgd2lkdGg9IjEwMCUiPg0K ICAgICAgICA8dGFibGUgY2VsbFNwYWNpbmc9IjAiIGNlbGxQYWRkaW5nPSIwIiB3aWR0aD0i MTAwJSIgYm9yZGVyPSIwIj4NCiAgICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQgd2lk dGg9IjUwJSI+DQogICAgICAgICAgICA8aW1nIGhlaWdodD0iMTMyIiBzcmM9Imh0dHA6Ly9p bWFnZWhvc3QuYXVjdGlvbndhdGNoLmNvbS9wcmV2aWV3L2NjL2Njb3JyZWEvbXB0cmVwMy5q cGciIHdpZHRoPSIxNjMiIGJvcmRlcj0iMCI+PC90ZD4NCiAgICAgICAgICAgIDx0ZCB3aWR0 aD0iNTAlIj4NCiAgICAgICAgICAgIDxpbWcgaGVpZ2h0PSIxMzMiIHNyYz0iaHR0cDovL2lt YWdlaG9zdC5hdWN0aW9ud2F0Y2guY29tL3ByZXZpZXcvY2MvY2NvcnJlYS9tcHRyZXA2Lmpw ZyIgd2lkdGg9IjE2OCIgYm9yZGVyPSIwIj48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAg ICAgIDwvdGFibGU+DQogICAgICAgIDwvdGQ+DQogICAgICA8L3RyPg0KICAgIDwvdGFibGU+ DQogICAgPC90ZD4NCiAgPC90cj4NCjwvdGFibGU+DQo8dGFibGUgaGVpZ2h0PSI0MCIgY2Vs bFNwYWNpbmc9IjAiIGNlbGxQYWRkaW5nPSIwIiB3aWR0aD0iNTg0IiBib3JkZXI9IjAiPg0K ICA8dHI+DQogICAgPHRkIGhlaWdodD0iNDAiPg0KICAgIDx0YWJsZSBjZWxsU3BhY2luZz0i MCIgY2VsbFBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPg0KICAgICAgPHRy Pg0KICAgICAgICA8dGQgd2lkdGg9IjEwMCUiPg0KICAgICAgICA8dGFibGUgY2VsbFNwYWNp bmc9IjAiIGNlbGxQYWRkaW5nPSI1IiB3aWR0aD0iMTAwJSIgYmdDb2xvcj0iIzAwODBmZiIg Ym9yZGVyPSIwIj4NCiAgICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQgd2lkdGg9IjEw MCUiPjxiPjxmb250IGZhY2U9IlRhaG9tYSIgY29sb3I9IiNmZmZmZmYiIHNpemU9IjMiPg0K ICAgICAgICAgICAgRXNwZWNpZmljYWNpb25lcyB0ZWNuaWNhczwvZm9udD48L2I+PC90ZD4N CiAgICAgICAgICA8L3RyPg0KICAgICAgICA8L3RhYmxlPg0KICAgICAgICA8L3RkPg0KICAg ICAgPC90cj4NCiAgICAgIDx0cj4NCiAgICAgICAgPHRkIHdpZHRoPSIxMDAlIj4NCiAgICAg ICAgPHRhYmxlIGNlbGxTcGFjaW5nPSIwIiBjZWxsUGFkZGluZz0iNSIgd2lkdGg9IjEwMCUi IGJvcmRlcj0iMCI+DQogICAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRkIHdpZHRoPSI1 MCUiPjxiPjxmb250IGZhY2U9IlRhaG9tYSIgY29sb3I9IiMwMDgwZmYiIHNpemU9IjIiPg0K ICAgICAgICAgICAgU3Vtc3VuZyBMZW5zPGJyPg0KICAgICAgICAgICAgU29ueSBTZXJ2byBz eXN0ZW08YnI+DQogICAgICAgICAgICBTdXBwb3J0IFJlZ3VsYXIgQXVkaW8sIE1QMyxWQ0Qs RFZDRCw4MCBtaW4gQ0QtUixDRC1SVyBhbmQgOCBjbSBDRC1SIA0KICAgICAgICAgICAgZGlz Yzxicj4NCiAgICAgICAgICAgIGNvbXBhdGlibGUgVkNEIDIuMCwzLjAgYW5kIERWQ0QgZGlz Yzxicj4NCiAgICAgICAgICAgIDYgViBwb3dlciBvdXRwdXQ8YnI+DQogICAgICAgICAgICBi dWlsZC1pbiByZWNoYXJnZWFibGUgbGl0aGl1bSBiYXR0ZXJ5PGJyPg0KICAgICAgICAgICAg Q29uc3VtcHRpb24gb2YgYmF0dGVyeSAoc2kgZXMgcXVlIG5vIGxhIG9yaWdpbmFsKSAyLjUg LSAzIGhvdXJzIGZvciANCiAgICAgICAgICAgIE1QMyBkaXNjPGJyPg0KICAgICAgICAgICAg MS41IC0gMiBob3VycyBmb3IgVkNEIGRpc2M8YnI+DQombmJzcDs8L2ZvbnQ+PC9iPjwvdGQ+ DQogICAgICAgICAgICA8dGQgd2lkdGg9IjUwJSI+PGI+PGZvbnQgZmFjZT0iVGFob21hIiBj b2xvcj0iIzAwODBmZiIgc2l6ZT0iMiI+DQogICAgICAgICAgICBBY2Nlc3Nvcmllczo8YnI+ DQogICAgICAgICAgICBQb3dlciBzdXBwbHkoMTAwViAtIDI0MFYpPGJyPg0KICAgICAgICAg ICAgSW5zdHJ1Y3Rpb24gbWFudWFsPGJyPg0KICAgICAgICAgICAgRWFycGhvbmU8YnI+DQog ICAgICAgICAgICBSZWNoYXJnZWFibGUgTGl0aGl1bSBiYXR0ZXJpZXM8YnI+DQogICAgICAg ICAgICBBL1YgQ2FibGU8YnI+DQogICAgICAgICAgICBSZW1vdGUgY29udHJvbDxicj4NCiAg ICAgICAgICAgIEVzdGFzIHNvbiBsYXMgbm9ybWFzIGEgbGFzIHF1ZSBzZSBzb21ldGllcm9u IHkgcGFzYXJvbiBlc3RvIGF2YWxhIGxhIA0KICAgICAgICAgICAgY2FsaWRhZDxicj4NCiAg ICAgICAgICAgIGFwcHJvdmFsOiBGQ0MsIFVMLCBGREEsIENFLCBDQ0VFPC9mb250PjwvYj48 L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+DQogICAgICAgIDwvdGQ+ DQogICAgICA8L3RyPg0KICAgIDwvdGFibGU+DQogICAgPGRpdiBhbGlnbj0iY2VudGVyIj4N CiAgICAgIDxmb250IGZhY2U9IlRhaG9tYSIgc2l6ZT0iNSI+PHN0cm9uZz5Db24gbGEgY29t cHJhIGRlbCBT+nBlciBEaXNjbWFuIHRlIA0KICAgICAgbGxldmFzIGRlIHJlZ2FsbyA8L3N0 cm9uZz48L2ZvbnQ+DQogICAgPC9kaXY+DQogICAgPGRpdiBhbGlnbj0iY2VudGVyIj4NCiAg ICAgIDxmb250IGZhY2U9IlRhaG9tYSIgc2l6ZT0iNSI+PHN0cm9uZz51bmEgcOlsaWN1bGEg eSB1biBDRCBkZSBtcDMgYSANCiAgICAgIGVsZWNjafNuLjwvc3Ryb25nPjwvZm9udD48L2Rp dj4NCiAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPg0KICAgICAgPGRpdiBhbGlnbj0iY2VudGVy Ij4NCiAgICAgICAgPGZvbnQgZmFjZT0iVGFob21hIiBjb2xvcj0iIzgwMDA4MCIgc2l6ZT0i NSI+PHN0cm9uZz4oTk8gVEUgUE9ERVMgUFJJVkFSIA0KICAgICAgICBERSBMQVMgTUVKT1JF UyBDT1NBUyk8L3N0cm9uZz48L2ZvbnQ+PC9kaXY+DQogICAgPC9kaXY+DQogICAgPC90ZD4N CiAgPC90cj4NCjwvdGFibGU+DQo8cD48Zm9udCBzaXplPSIrMiIgY29sb3I9IiM4MDAwODAi IGZhY2U9IlRhaG9tYSI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7IA0KRU5WSU9TIEEgVE9ETyBFTCBQQUlTPC9mb250PjwvcD4NCjxw Pjxmb250IHNpemU9IisyIiBjb2xvcj0iIzgwMDA4MCIgZmFjZT0iVGFob21hIj5QQVJBIE1B UyANCklORk9STUFDSU9OIFNPTE8gRU5WSUEgVU4gTUFJTCBBPC9mb250PjxzdHJvbmc+PGZv bnQgZmFjZT0iVGFob21hIiBzaXplPSI1IiBjb2xvcj0iIzgwMDA4MCI+DQo8YSBocmVmPSJt YWlsdG86ZGFyaW9iZXJAc3BlZWR5LmNvbS5hciI+ZGFyaW9iZXJAc3BlZWR5LmNvbS5hcjwv YT48L2ZvbnQ+PC9zdHJvbmc+PC9wPg0KDQo8L2JvZHk+DQoNCjwvaHRtbD4= ------=_NextPart_000_001__2609031_76578,47-- From bernie@3captus.com Sat Oct 6 03:21:14 2001 From: bernie@3captus.com (Bernie) Date: Sat, 06 Oct 2001 10:21:14 +0800 Subject: [Idle-dev] IDLE crash (2.0 with VPython) on unicode string Message-ID: <3BBE6A9A.4553BC9D@pacific.net.hk> Hi, I am using Pyhton 2.0 (with VPython extension) on MS Windows 98, Second Edition (Chinese), and have encountered a crash when I try to use Unicode string. I understand that the use of VPython did push back the IDLE version back to version 0.5. I am trying to figure out if: - it was a known bug and was fixed; or - the crash was caused by VPython IDLE; or - it is a new bug Please try the following out on your IDLE: a = u'¥d ¶ð º¸ ¥b ®q ¹q µø ¥x ©P ¥| ¼½ ¥X ¬ü °ê ¤E ¤@ ¤@ ŧ À» ¨Æ ¥ó ' Thanks! Bernie ============================================================================ Python 2.0 (#8, Oct 16 2000, 17:27:58) [MSC 32 bit (Intel)] on win32 Copyright (c) 2000 BeOpen.com. All Rights Reserved. Copyright (c) 1995-2000 Corporation for National Research Initiatives. All Rights Reserved. Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam. All Rights Reserved. IDLE 0.5 -- press F1 for help >>> a = u'¥d ¶ð º¸ ¥b ®q ¹q µø ¥x ©P ¥| ¼½ ¥X ¬ü °ê ¤E ¤@ ¤@ ŧ À» ¨Æ ¥ó ' ^ crash when hit _______________| Exception in Tkinter callback Traceback (most recent call last): File "c:\python20\lib\lib-tk\Tkinter.py", line 1287, in __call__ return apply(self.func, args) File "C:\PYTHON20\Tools\idle\PyShell.py", line 592, in enter_callback self.auto.auto_indent(event) File "C:\PYTHON20\Tools\idle\AutoIndent.py", line 270, in newline_and_indent_event c = y.get_continuation_type() File "C:\PYTHON20\Tools\idle\PyParse.py", line 332, in get_continuation_type self._study1() File "C:\PYTHON20\Tools\idle\PyParse.py", line 220, in _study1 str = string.translate(str, _tran) File "c:\python20\lib\string.py", line 308, in translate return s.translate(table, deletions) TypeError: translate requires exactly 1 argument; 2 given From bernie@3captus.com Sat Oct 6 03:27:14 2001 From: bernie@3captus.com (Bernie) Date: Sat, 06 Oct 2001 10:27:14 +0800 Subject: [Idle-dev] [Fwd: IDLE crash (2.0 with VPython) on unicode string] Message-ID: <3BBE6C02.9CF317B@pacific.net.hk> Bernie wrote: > > Hi, > > I am using Pyhton 2.0 (with VPython extension) on MS Windows 98, Second > Edition (Chinese), and have encountered a crash when I try to use Unicode > string. > > I understand that the use of VPython did push back the IDLE version back > to version 0.5. I am trying to figure out if: > > - it was a known bug and was fixed; or > - the crash was caused by VPython IDLE; or > - it is a new bug > > Please try the following out on your IDLE: > > a = u'¥d ¶ð º¸ ¥b ®q ¹q µø ¥x ©P ¥| ¼½ ¥X ¬ü °ê ¤E ¤@ ¤@ ŧ À» ¨Æ ¥ó ' > > Thanks! > > Bernie > > > ============================================================================ > Python 2.0 (#8, Oct 16 2000, 17:27:58) [MSC 32 bit (Intel)] on win32 > Copyright (c) 2000 BeOpen.com. > All Rights Reserved. > > Copyright (c) 1995-2000 Corporation for National Research Initiatives. > All Rights Reserved. > > Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam. > All Rights Reserved. > IDLE 0.5 -- press F1 for help > >>> a = u'¥d ¶ð º¸ ¥b ®q ¹q µø ¥x ©P ¥| ¼½ ¥X ¬ü °ê ¤E ¤@ ¤@ ŧ À» ¨Æ ¥ó ' > ^ > crash when hit _______________| > > Exception in Tkinter callback > Traceback (most recent call last): > File "c:\python20\lib\lib-tk\Tkinter.py", line 1287, in __call__ > return apply(self.func, args) > File "C:\PYTHON20\Tools\idle\PyShell.py", line 592, in enter_callback > self.auto.auto_indent(event) > File "C:\PYTHON20\Tools\idle\AutoIndent.py", line 270, in > newline_and_indent_event > c = y.get_continuation_type() > File "C:\PYTHON20\Tools\idle\PyParse.py", line 332, in get_continuation_type > self._study1() > File "C:\PYTHON20\Tools\idle\PyParse.py", line 220, in _study1 > str = string.translate(str, _tran) > File "c:\python20\lib\string.py", line 308, in translate > return s.translate(table, deletions) > TypeError: translate requires exactly 1 argument; 2 given From mary.bridges@only-yellow-pages.com Sat Oct 6 19:41:52 2001 From: mary.bridges@only-yellow-pages.com (mary.bridges@only-yellow-pages.com) Date: Sat, 6 Oct 2001 12:41:52 -0600 Subject: [Idle-dev] Listing http://idlefork.sourceforge.net Message-ID: <200110061841.f96Ifqr01217@only40.only.com> Dear Sir or Madam, Please can you advise who I should contact to ask permission to include http://idlefork.sourceforge.net in the Only-Yellow-Pages online directory. There is no charge, but we do need their permission. Thanking you in anticipation, Mary Bridges Ast Content Editor http://www.only-yellow-pages.com Ps Sorry if you got this twice I had a problem with my emails :-) From bas@andrew.cmu.edu Sat Oct 6 23:18:02 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Sat, 06 Oct 2001 18:18:02 -0400 Subject: [Idle-dev] IDLE crash (2.0 with VPython) on unicode string In-Reply-To: <3BBE6A9A.4553BC9D@pacific.net.hk> Message-ID: <1664902822.1002392282@HYPERON.REM.CMU.EDU> Using the idlefork version of IDLE (instead of the older version previously = distributed with VPython), I don't get a crash on the assignment of the Unicode string to "a", but I get a Unicode error in the print statement: a =3D u'=A5d =B6=F0 =BA=B8 =A5b =AEq =B9q =B5=F8 =A5x =A9P =A5| =BC=BD =A5X = =AC=FC =B0=EA =A4E =A4@ =A4@ =C5=A7 =C0=BB =A8=C6 =A5=F3 ' print a Traceback (innermost last) File "Untitled", line 2, in ? print a UnicodeError: ASCII encoding error: ordinal not in range(128) Bruce Sherwood From bas@andrew.cmu.edu Sat Oct 6 23:24:42 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Sat, 06 Oct 2001 18:24:42 -0400 Subject: [Idle-dev] New IDLE Message-ID: <1665302082.1002392682@HYPERON.REM.CMU.EDU> On the VPython web site (http://cil.andrew.cmu.edu/projects/visual) there is a new version of IDLE, which is based on the "idlefork" project. The latter project is a Source Forge project (sf.net) which started from Dave Scherer's version of IDLE, which has been distributed with VPython in the past. The goal of the idlefork project is eventually to make this form of IDLE the one that is normally distributed with Python itself. It makes good sense for VPython to use the most up to date version of IDLE and not to keep a separate, older version around. The idlefork version as near as I can tell maintains all of the features of the original Scherer version, but it is continually enhanced, and bugs are fixed. The version now on the VPython web site is essentially the current idlefork version, but with some crucial patches added this week by me to address some problems on Windows (if you're interested, see the patch section of the idlefork project found at sf.net). Hopefully these patches will work themselves into idlefork and be reimported to the VPython distribution. Bruce Sherwood From noreply@sourceforge.net Sun Oct 7 12:47:56 2001 From: noreply@sourceforge.net (by way of Stephen M. Gava ) Date: Sun, 7 Oct 2001 21:47:56 +1000 Subject: [Idle-dev] [ idlefork-Patches-450379 ] pack statusbar below scrollbar Message-ID: <20011007114835.DHMG13193.mss.rdc2.nsw.optushome.com.au@there> Patches item #450379, was opened at 2001-08-12 18:17 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=450379&group_id=9 579 Category: None Group: None >Status: Closed >Resolution: Accepted Priority: 5 Submitted By: Stephen M. Gava (elguavas) >Assigned to: Stephen M. Gava (elguavas) Summary: pack statusbar below scrollbar Initial Comment: Pack editor window statusbar below the scrollbar. patch submitted to elguavas by Chui Tey , entered by elguavas --------------- *** old/EditorWindow.py Sat Jul 21 19:59:38 2001 --- new/EditorWindow.py Sun Aug 12 22:02:24 2001 *************** *** 159,164 **** --- 159,167 ---- text.bind("<>", self.open_class_browser) text.bind("<>", self.open_path_browser) + # pack the status bar before packing the scroll bar + self.set_status_bar() + vbar['command'] = text.yview vbar.pack(side=RIGHT, fill=Y) *************** *** 212,221 **** if self.extensions.has_key('AutoIndent'): self.extensions['AutoIndent'].set_indentation_params( self.ispythonsource(filename)) - self.set_status_bar() def set_status_bar(self): ! self.status_bar = self.MultiStatusBar(self.text_frame) self.status_bar.set_label('column', 'Col: ?', side=RIGHT) self.status_bar.set_label('line', 'Ln: ?', side=RIGHT) self.status_bar.pack(side=BOTTOM, fill=X) --- 215,224 ---- if self.extensions.has_key('AutoIndent'): self.extensions['AutoIndent'].set_indentation_params( self.ispythonsource(filename)) def set_status_bar(self): ! # status bar should be a child of the top level ! self.status_bar = self.MultiStatusBar(self.top) self.status_bar.set_label('column', 'Col: ?', side=RIGHT) self.status_bar.set_label('line', 'Ln: ?', side=RIGHT) self.status_bar.pack(side=BOTTOM, fill=X) ---------------------------------------------------------------------- >Comment By: Stephen M. Gava (elguavas) Date: 2001-10-07 04:01 Message: Logged In: YES user_id=75867 merged in the patch from Chui Tey ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=450379&group_id=9 579 From noreply@sourceforge.net Sun Oct 7 12:50:11 2001 From: noreply@sourceforge.net (by way of Stephen M. Gava ) Date: Sun, 7 Oct 2001 21:50:11 +1000 Subject: [Idle-dev] [ idlefork-Patches-467724 ] Fix spawn bug on Windows 2000 Message-ID: <20011007115050.DIVF13193.mss.rdc2.nsw.optushome.com.au@there> Patches item #467724, was opened at 2001-10-03 20:11 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=467724&group_id=9 579 Category: None Group: None >Status: Closed >Resolution: Accepted Priority: 5 Submitted By: Bruce Sherwood (bsherwood) >Assigned to: Stephen M. Gava (elguavas) Summary: Fix spawn bug on Windows 2000 Initial Comment: In spawn.py, in the Windows section, it is a bug not to put quotes around the Python executor. The following def spawn(bin, *args): nargs = [bin] should be changed to this: def spawn(bin, *args): nargs = [ '"'+bin+'"' ] Without this change, on Windows 2000 if Python is installed in "Program Files" an attempt to start a run from Idle (F5) fails, due to the 8-character file-name munging. ---------------------------------------------------------------------- >Comment By: Stephen M. Gava (elguavas) Date: 2001-10-07 04:24 Message: Logged In: YES user_id=75867 merged Bruce's changes ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=467724&group_id=9 579 From noreply@sourceforge.net Sun Oct 7 12:50:38 2001 From: noreply@sourceforge.net (by way of Stephen M. Gava ) Date: Sun, 7 Oct 2001 21:50:38 +1000 Subject: [Idle-dev] [ idlefork-Patches-467726 ] Make Idle report failure to run Message-ID: <20011007115117.DJCC13193.mss.rdc2.nsw.optushome.com.au@there> Patches item #467726, was opened at 2001-10-03 20:16 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=467726&group_id=9 579 Category: None Group: None >Status: Closed >Resolution: Accepted Priority: 5 Submitted By: Bruce Sherwood (bsherwood) >Assigned to: Stephen M. Gava (elguavas) Summary: Make Idle report failure to run Initial Comment: If the socket connection fails for some reason, Idle fails silently to start up. I've moved the creation of the on-demand window to the very beginning of the main routine in PyShell.py, and I've added a detailed error message proposed by Dave Scherer. Because there is quite a bit of rearrangement I've posted the entire new file, which was created by modifying the file contained in idlefork-0.8.1.zip. ---------------------------------------------------------------------- >Comment By: Stephen M. Gava (elguavas) Date: 2001-10-07 04:45 Message: Logged In: YES user_id=75867 merged Bruce's patch ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=467726&group_id=9 579 From remove@1980.hu Sun Oct 7 09:34:07 2001 From: remove@1980.hu (remove@1980.hu) Date: Sun, 07 Oct 01 03:34:07 EST Subject: [Idle-dev] Obtain your degree from Englsih-language European Universities... Message-ID: <893883.93912991004.32991p1> Dear idle-dev@python.org, Message If you want to be removed from this mailing list please reply to this email with “REMOVE” in the subject heading or send a blank email to remove@1980.hu WOW!!....It is possible to gain Direct Admission into a Accredited Medical, Dental, Physical Therapy, and Pharmaceutical Universities in Europe! IMEI is a corporation who introduces and promotes you to the European Universities and the American Medical Community. Does this sound unbelievable? Current research shows over 20% of all physicians and of all residents have trained overseas. The changes of recent laws in our government have allowed this opportunity to attend a accredited university, and then return to the United States to complete a residency in your chosen specialty. There’s More! : All courses are Taught in English and fully Qualify for Federal Loans and Grants. Some of these schools have been teaching physicians for over 700 years, and they are not like the recent plethora of several year old Caribbean “Diploma Mills.” The curriculum of the schools in Europe parallels that of the American Medical Schools: The courses are not rushed like the above-mentioned "Diploma Mills." You allowed to take summers off which allows for an excellent investigation examination of all that Europe has to offer. Grab an EuroRail Pass to travel to places you have only dreamed of visiting. The dream is over......you have arrived! The curriculum has been designed with in mind.....Students may enter as young as High School or can have attempted or finished college. Try to find that flexibility anywhere in the world. We know.....we have looked! Please call or email us with the particular questions that you may have. So come and experience the Best Academics that only study in Europe can offer, all the while discovering its’ abundance of culture and history. This is a recipe for your memories that will last your entire medical career. For more information on qualifications, please write, call, or email to the following addresses: medicine@1997.hu 1-801-849-3270 ( Inside USA ) 001-801-849-3270 (Outside USA) 00-36-309839-247 ( International ) You must be 18 years old (or emancipatable), must have a high school diploma (or GED Eligible). Tuition ranges from 7,000 to 9,000 per annum. There is a one time admission fee that varies on program applied for. From bas@andrew.cmu.edu Sun Oct 7 16:59:02 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Sun, 07 Oct 2001 11:59:02 -0400 Subject: [Idle-dev] doc link Message-ID: <1728562242.1002455942@HYPERON.REM.CMU.EDU> I'm happy to see two of my recent patches incorporated -- thanks! I'm thinking maybe I made a mistake in proposing a change to EditorWindow.py to reference Doc\VPython.html instead of Doc\index.html. Probably it would be better to preserve one standard index.html link for what we all hope will be a standard IDLE. Then what the VPython installation could do is include a copy of index.html as (say) Python.html and the VPython index with the name index.html (which would of course among other things have a link to Python.html). Does that sound better? Bruce Sherwood From pobrien@orbtech.com Sun Oct 7 17:07:01 2001 From: pobrien@orbtech.com (Patrick K. O'Brien) Date: Sun, 7 Oct 2001 11:07:01 -0500 Subject: [Idle-dev] doc link In-Reply-To: <1728562242.1002455942@HYPERON.REM.CMU.EDU> Message-ID: That sounds less "invasive," which would be a good thing, IMHO. I also think it is encouraging to see your initiative in posting enhancements that benefit both versions of IDLE. Thanks. --- 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 Bruce Sherwood Sent: Sunday, October 07, 2001 10:59 AM To: idle Subject: [Idle-dev] doc link I'm happy to see two of my recent patches incorporated -- thanks! I'm thinking maybe I made a mistake in proposing a change to EditorWindow.py to reference Doc\VPython.html instead of Doc\index.html. Probably it would be better to preserve one standard index.html link for what we all hope will be a standard IDLE. Then what the VPython installation could do is include a copy of index.html as (say) Python.html and the VPython index with the name index.html (which would of course among other things have a link to Python.html). Does that sound better? Bruce Sherwood From guido@python.org Sun Oct 7 17:10:33 2001 From: guido@python.org (Guido van Rossum) Date: Sun, 07 Oct 2001 12:10:33 -0400 Subject: [Idle-dev] doc link In-Reply-To: Your message of "Sun, 07 Oct 2001 11:59:02 EDT." <1728562242.1002455942@HYPERON.REM.CMU.EDU> References: <1728562242.1002455942@HYPERON.REM.CMU.EDU> Message-ID: <200110071610.MAA23673@cj20424-a.reston1.va.home.com> > I'm thinking maybe I made a mistake in proposing a change to > EditorWindow.py to reference Doc\VPython.html instead of Doc\index.html. > Probably it would be better to preserve one standard index.html link for > what we all hope will be a standard IDLE. Then what the VPython > installation could do is include a copy of index.html as (say) Python.html > and the VPython index with the name index.html (which would of course among > other things have a link to Python.html). > > Does that sound better? Yes! --Guido van Rossum (home page: http://www.python.org/~guido/) From jessefw@loop.com Mon Oct 8 00:30:49 2001 From: jessefw@loop.com (Jesse F. W) Date: Sun, 7 Oct 2001 16:30:49 -0700 Subject: [Idle-dev] doc link In-Reply-To: <1728562242.1002455942@HYPERON.REM.CMU.EDU> Message-ID: <3BC08339.10906.10B6D835@localhost> Dear Bruce, et. all, Bruce Sherwood wrote: > Then what the VPython installation could do is include a copy of index.html > as (say) Python.html and the VPython index with the name index.html > (which would of course among other things have a link to Python.html). It would be better to copy the original index.html to Python.html than have a special copy as part of the VPython distribution. That way, if users have modified their index.html(As I have, to add a link to some Tkinter docs) they would not lose their modified version. Thank you for your time, Jesse W From bas@andrew.cmu.edu Sun Oct 7 21:57:01 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Sun, 07 Oct 2001 16:57:01 -0400 Subject: [Idle-dev] Withdraw patch Message-ID: <1746441152.1002473821@HYPERON.REM.CMU.EDU> Okay, we're all agreed. I hereby withdraw my proposed EditorWindow.py patch and ask the developers just to get rid of it. I'll carry out my suggestion to change the VPython installation procedures with respect to Doc. Bruce Sherwood From noreply@sourceforge.net Mon Oct 8 03:13:43 2001 From: noreply@sourceforge.net (by way of Stephen M. Gava ) Date: Mon, 8 Oct 2001 12:13:43 +1000 Subject: [Idle-dev] [ idlefork-Patches-467728 ] Referencing additional documentation Message-ID: <20011008021422.PWZS13193.mss.rdc2.nsw.optushome.com.au@there> Patches item #467728, was opened at 2001-10-03 20:19 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=467728&group_id=9 579 Category: None Group: None >Status: Closed >Resolution: Rejected Priority: 5 Submitted By: Bruce Sherwood (bsherwood) >Assigned to: Stephen M. Gava (elguavas) Summary: Referencing additional documentation Initial Comment: Here is a small change to EditorWindow which means that if VPython is installed, pressing F1 invokes Doc\VPython.html, which gives you VPython documentation, Numeric documentation, and the usual Python documentation. If VPython.html is not installed, Doc\index.html is invoked, which just gives you Python documentation (VPython.html has a link to index.html). VPython users need the additional documentation. For info on the nature of VPython, see http://cil.andrew.cmu.edu/projects/visual My goal is that in the future all VPython distributions include the idlefork version of idle, rather than the older version originally due to Dave Scherer, from which idlefork development started. if sys.platform[:3] == "win": fn0 = os.path.dirname(__file__) fn = os.path.join(fn0, os.pardir, os.pardir, "Doc", "VPython.html") fn = os.path.normpath(fn) if os.path.isfile(fn): help_url = fn else: fn = os.path.join(fn0, os.pardir, os.pardir, "Doc", "index.html") fn = os.path.normpath(fn) if os.path.isfile(fn): help_url = fn del fn0 del fn ---------------------------------------------------------------------- >Comment By: Stephen M. Gava (elguavas) Date: 2001-10-07 19:09 Message: Logged In: YES user_id=75867 the vpython folks will implement a simpler scheme for accessing their help from idle which doesn't involve source changes ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=467728&group_id=9 579 From noreply@sourceforge.net Mon Oct 8 04:03:45 2001 From: noreply@sourceforge.net (by way of Stephen M. Gava ) Date: Mon, 8 Oct 2001 13:03:45 +1000 Subject: [Idle-dev] [ idlefork-Patches-450716 ] Most Recently used files Message-ID: <20011008030423.RJLD13193.mss.rdc2.nsw.optushome.com.au@there> Patches item #450716, was opened at 2001-08-13 23:58 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=450716&group_id=9 579 Category: None Group: None >Status: Open Resolution: Postponed Priority: 5 Submitted By: Chui Tey (teyc) Assigned to: Stephen M. Gava (elguavas) Summary: Most Recently used files Initial Comment: *** old/EditorWindow.py Sun Aug 12 22:06:16 2001 --- new/EditorWindow.py Tue Aug 14 09:51:14 2001 *************** *** 15,20 **** --- 15,21 ---- import webbrowser import idlever + import MRUList import WindowList from IdleConf import idleconf *************** *** 138,143 **** --- 139,147 ---- self.createmenubar() self.apply_bindings() + self.mrulist=MRUList.MRUList() + self.mrumenu=MRUList.MRUMenu(self.menudict ['file'], self.mrulist) + self.top.protocol("WM_DELETE_WINDOW", self.close) self.top.bind("<>", self.close_event) text.bind("<>", self.center_insert_event) *************** *** 425,430 **** --- 432,441 ---- self.addcolorizer() else: self.rmcolorizer() + # update the MRU list, and the menu + if self.io.filename: + self.mrulist.add(self.io.filename) + self.mrumenu.update() def addcolorizer(self): if self.color: #-------------------------------------------------- # MRUList.py # Most Recently Used list of files # # class MRUList - maintains a list of most recently used files # class MRUMenu - creates a menu of most recently used files # import ConfigParser from Tkinter import * # Default section name SECTION = 'MRUList' class MRUList: """Maintains a most recently used file list. The list is stored in $HOME/.idle See also: MRUMenu (for presentational logic) """ def __init__(self): self.max = 4 self._list = [] self._read() # PUBLIC Methods -------------------------------- def add(self, filename): """Adds a new filename to the most recently used list """ # maintain the MRU as a stack # with the most recent at the top of the stack # self._read() # get the latest from the config file if filename in self._list: self.delete(filename) self._list.append(filename) self._trim() self._write() # write it back immediately, more crash-proof def delete(self, filename): """Removes a filename from the most recently used list. Should be called when the file no longer exists. """ try: self._list.remove(filename) except ValueError: # Just in case item doesn't exist pass def list(self): """List of most recently used files, newest at the end""" return self._list # PRIVATE Methods ------------------------------- def __del__(self): # # Upon destruction, update the mrulist # self._trim() self._write() def __repr__(self): return ("max: %d\ncount: %d\n" % (self.max, len (self._list)) \ + `self._list`) def _getfilename(self): """Returns the file name of the config file""" # Copied from IdleConf.py import os try: homedir = os.environ['HOME'] except KeyError: homedir = os.getcwd() return os.path.join(homedir, '.idle') def _trim(self): """Trims the MRU list to the maximum specified""" too_many = len(self._list) - self.max if too_many > 0: self._list = self._list[too_many:] def _read(self): """Reads the config.txt for the list of MRU files""" self.conf = conf = ConfigParser.ConfigParser() conf.read(self._getfilename()) if not conf.has_section(SECTION): conf.add_section(SECTION) try: self.max = max = conf.getint (SECTION, 'max') count = conf.getint(SECTION, 'count') for i in range(count): filename=conf.get(SECTION, "file%d" % (i+1)) if not filename in self._list: self._list.append(filename) except ConfigParser.NoOptionError: pass def _write(self): """Writes the list of MRU files to .idle""" conf = self.conf conf.set(SECTION, 'enable', 0) # This is not an idle extension conf.set(SECTION, 'max', self.max) conf.set(SECTION, 'count', len(self._list)) for i in range(len(self._list)): conf.set(SECTION, "file%d" % (i+1), self._list[i]) conf.write(open(self._getfilename(),'wb')) class MRUMenu(Menu): """Maintains a menu associated with an MRU List. When an item on the MRUList is selected, a callback function calls open() on the EditorWindow which owns the menu. See also: MRUList """ def __init__(self, parent, mrulist): self.parent = parent # parent window self.mrulist = mrulist # instance of MRUList self.prev_mrumenus = {} # previous mru list self.parent.add_separator() self.update() def update(self): """Updates the MRU menu""" # # Build a reversed list of MRU files # import copy list = copy.copy(self.mrulist.list()) list.reverse() # # convert list to list of menu labels # menulist = [] for counter, filename in zip(range(len(list)), list): label = "%d %s" % (counter+1, filename) menulist.append( (label, filename) ) # # replace invalid mru with valid ones # for index in range(len(menulist)): menulabel, filename = menulist[index] if self.prev_mrumenus.has_key( index ): menu_index = self.parent.index( self.prev_mrumenus[index] ) self.parent.entryconfig( menu_index, \ label=menulabel, \ command=self._callback(filename)) self.prev_mrumenus[index] = filename else: self.parent.add_command( \ label=menulabel, \ underline=0, \ command = self._callback (filename)) self.prev_mrumenus[index] = filename def _callback(self, filename): """Returns a callback function which opens a file with a given filename""" def open(filename=filename): # # XXX todo. open('test','a').write("Opening %s (MRUList.py)...\n" % filename) return open def test(): mrulist = MRUList() mrulist.add('testMRU-1.py') mrulist.add('testMRU-2.py') mrulist.add('testMRU-3.py') mrulist.add('testMRU-4.py') mrulist.add('testMRU-5.py') mrulist.add('testMRU-6.py') print mrulist if __name__ == '__main__': test() ---------------------------------------------------------------------- Comment By: Stephen M. Gava (elguavas) Date: 2001-10-07 19:46 Message: Logged In: YES user_id=75867 an mru implementation is on our todo list, but it will have to wait until after the new configuration handling is in place ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=450716&group_id=9 579 From noreply@sourceforge.net Mon Oct 8 04:05:07 2001 From: noreply@sourceforge.net (by way of Stephen M. Gava ) Date: Mon, 8 Oct 2001 13:05:07 +1000 Subject: [Idle-dev] [ idlefork-Patches-450784 ] Immediate button for Debugger Message-ID: <20011008030545.RKGT13193.mss.rdc2.nsw.optushome.com.au@there> Patches item #450784, was opened at 2001-08-14 05:52 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=450784&group_id=9 579 Category: None Group: None Status: Open >Resolution: Postponed Priority: 5 Submitted By: Michael Dubner (dubnerm) >Assigned to: Stephen M. Gava (elguavas) Summary: Immediate button for Debugger Initial Comment: This patch adds to IDLE debugger button that allows to check current state of local and global dictionaries not only on top level (as in debugger window) it can be used to change values also (__dbg_locals__ and __dbg_globals__ variables created). You should note that this is some sort of "cheat" - i'm using standard "code" module on top of IDLE console. Use this at your own risk. ---------------------------------------------------------------------- >Comment By: Stephen M. Gava (elguavas) Date: 2001-10-07 19:52 Message: Logged In: YES user_id=75867 this possible feature would be impacted by the remote execution implementation that is ultimately chosen. hold until that is in place. ---------------------------------------------------------------------- Comment By: Michael Dubner (dubnerm) Date: 2001-08-14 06:13 Message: Logged In: YES user_id=39274 Note that Debugger.0.8.imm.0.2.patch can be applied to any version of IDLE debugger from 0.6 to 0.8.1 (it had not changed for long time) ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=450784&group_id=9 579 From noreply@sourceforge.net Mon Oct 8 04:05:59 2001 From: noreply@sourceforge.net (by way of Stephen M. Gava ) Date: Mon, 8 Oct 2001 13:05:59 +1000 Subject: [Idle-dev] [ idlefork-Patches-451088 ] RemoteInterpreter patch to run on win32 Message-ID: <20011008030638.RKVC13193.mss.rdc2.nsw.optushome.com.au@there> Patches item #451088, was opened at 2001-08-15 00:01 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=451088&group_id=9 579 Category: None Group: None Status: Open >Resolution: Later Priority: 5 Submitted By: Nobody/Anonymous (nobody) >Assigned to: Stephen M. Gava (elguavas) Summary: RemoteInterpreter patch to run on win32 Initial Comment: *** ../Tools/idlefork-0.8.1/RemoteInterp.py Thu Jul 12 17:06:22 2001 --- ../Tools/idlenew/RemoteInterp.py Wed Aug 15 15:05:10 2001 *************** *** 121,127 **** def _decode_msg(self, msg): seqno = self.decode_seqno(msg [:self.SEQNO_ENC_LEN]) msg = msg[self.SEQNO_ENC_LEN:] ! parts = msg.split(" ", 2) if len(parts) == 1: cmd = msg arg = '' --- 121,131 ---- def _decode_msg(self, msg): seqno = self.decode_seqno(msg [:self.SEQNO_ENC_LEN]) msg = msg[self.SEQNO_ENC_LEN:] ! # ! # split a message into two parts ! # cmd arg ! # ! parts = msg.split(" ", 1) if len(parts) == 1: cmd = msg arg = '' *************** *** 263,280 **** self._cmd.reply() self._cmd.close() def startRemoteInterp(id): import os # UNIX domain sockets are simpler for starters sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) ! sock.bind("/var/tmp/ri.%s" % id) try: sock.listen(1) cli, addr = sock.accept() rinterp = RemoteInterp(cli) rinterp.run() finally: ! os.unlink("/var/tmp/ri.%s" % id) class RIClient: """Client of the remote interpreter""" --- 267,299 ---- self._cmd.reply() self._cmd.close() + def getAddress(id): + """returns a string representing the address of the + Unix domain socket for a particular id""" + import tempfile + import os + if tempfile.tempdir: + filename = os.path.join (tempfile.tempdir, "rs.%s" % id) + else: + # + # no temp dir defined in environment, use the + # current directory. + # + filename = "rs.%s" % id + return filename + def startRemoteInterp(id): import os # UNIX domain sockets are simpler for starters sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) ! sock.bind( getAddress(id) ) try: sock.listen(1) cli, addr = sock.accept() rinterp = RemoteInterp(cli) rinterp.run() finally: ! os.unlink( getAddress(id) ) class RIClient: """Client of the remote interpreter""" *************** *** 317,328 **** def riExec(id, file): sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) ! sock.connect("/var/tmp/ri.%s" % id) cli = RIClient(sock) cli.execfile(file) cli.run() if __name__ == "__main__": import sys import getopt --- 336,360 ---- def riExec(id, file): sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) ! sock.connect(getAddress(id)) cli = RIClient(sock) cli.execfile(file) cli.run() if __name__ == "__main__": + + # Usage: + # python RemoteInterp.py [-c] [-v] id + # Options: + # -c run as a client. Otherwise, run as a server by default + # -v verbose mode + # Example: + # This starts the server: + # python RemoteInterp.py id123 + # + # This starts the client: + # python RemoteInterp.py -c id123 test.py + # import sys import getopt ---------------------------------------------------------------------- >Comment By: Stephen M. Gava (elguavas) Date: 2001-10-07 19:56 Message: Logged In: YES user_id=75867 this will have to wait until I can get someone to work on the remote execution aspects of idle fork. if that has to be me then it won't be for some time. ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=451088&group_id=9 579 From noreply@sourceforge.net Mon Oct 8 04:06:50 2001 From: noreply@sourceforge.net (by way of Stephen M. Gava ) Date: Mon, 8 Oct 2001 13:06:50 +1000 Subject: [Idle-dev] [ idlefork-Patches-451442 ] Adds refresh button to class browser Message-ID: <20011008030729.RLIL13193.mss.rdc2.nsw.optushome.com.au@there> Patches item #451442, was opened at 2001-08-15 20:59 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=451442&group_id=9 579 Category: None Group: None Status: Open >Resolution: Later Priority: 5 Submitted By: Chui Tey (teyc) >Assigned to: Stephen M. Gava (elguavas) Summary: Adds refresh button to class browser Initial Comment: This patch does two things: a) ClassBrowser has a refresh button b) ClassBrowser 'docks' itself to the right hand side of the source window. ---------------------------------------------------------------------- >Comment By: Stephen M. Gava (elguavas) Date: 2001-10-07 19:57 Message: Logged In: YES user_id=75867 interesting. will look at this in detail after new config stuff is in place and working. ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=451442&group_id=9 579 From noreply@sourceforge.net Mon Oct 8 04:08:06 2001 From: noreply@sourceforge.net (by way of Stephen M. Gava ) Date: Mon, 8 Oct 2001 13:08:06 +1000 Subject: [Idle-dev] [ idlefork-Patches-456006 ] open multiple modules at once Message-ID: <20011008030844.RMEK13193.mss.rdc2.nsw.optushome.com.au@there> Patches item #456006, was opened at 2001-08-27 21:11 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=456006&group_id=9 579 Category: None Group: None Status: Open >Resolution: Postponed Priority: 5 Submitted By: Stephen M. Gava (elguavas) >Assigned to: Stephen M. Gava (elguavas) Summary: open multiple modules at once Initial Comment: Every time I open a project, I open a lot of modules, and this was usually done by double-clicking each module in import myModule1, myModule2, myModule3, myModule4, myModule5, myModule6 and pressing Alt-M to open it. Now I patched EditorWindow.py to extend the ability of open_module to open a list of modules (and ignore the import keyword), so that one can select the whole line and open all modules with one Alt-M. Below is the changed method open_module in EditorWindow.py, which can be substituted to the original to obtain the new behaviour. def open_module(self, event=None): # XXX Shouldn't this be in IOBinding or in FileList? try: name = self.text.get("sel.first", "sel.last") except TclError: name = "" else: name = string.strip(name) if not name: name = tkSimpleDialog.askstring("Module", "Enter the name of a Python module\n" "to search on sys.path and open:", parent=self.text) name = string.replace(name, ",", " ") name = string.replace(name, ";", " ") nameList = string.split(name) # XXX Ought to support package syntax # XXX Ought to insert current file's directory in front of path for name in nameList: if name in ["", "import"]: continue try: (f, file, (suffix, mode, type)) = imp.find_module(name) except (NameError, ImportError), msg: tkMessageBox.showerror("Import error", str(msg), parent=self.text) return if type != imp.PY_SOURCE: tkMessageBox.showerror("Unsupported type", "%s is not a source module" % name, parent=self.text) return if f: f.close() if self.flist: self.flist.open(file) else: self.io.loadfile(file) Daniel Haertle ------------------------------------------------------------------------ Daniel Haertle haertle@iqe.phys.ethz.ch _________________ ___ http://www.nlo.ethz.ch / ____/_ __/ /_/ / ETH Hoenggerberg - Nonlinear Optics Laboratory / __/_ / / / __ / Institute of Quantum Electronics, HPF E18 /______/ /__/ /__/ /__/ 8093 Zuerich - Switzerland Tel +41 1 63 32338 Fax +41 1 63 31056 ------------------------------------------------------------------------ ---------------------------------------------------------------------- >Comment By: Stephen M. Gava (elguavas) Date: 2001-10-07 19:59 Message: Logged In: YES user_id=75867 I like this idea in principle. I will float implementation detail ideas on idle-dev when I get the chance to eventually come back to this in earnest. ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=456006&group_id=9 579 From elguavas@users.sourceforge.net Mon Oct 8 04:20:33 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Mon, 8 Oct 2001 13:20:33 +1000 Subject: [Idle-dev] idlefork patches Message-ID: <20011008032112.RUFD13193.mss.rdc2.nsw.optushome.com.au@there> Ok, If you'd posted an idlefork patch sometime in the last month or two and you were wondering what the hell happenned with it, it should have at least been looked at now. A few I merged immediately, a few are on hold until other work they depend on or are related to is finished, one was redundant, and a couple relate to areas of idlefork that I haven't even touched on yet and so will need to wait 'til I or someone else is working on those aspects. The main point is they are all in the project patch repository and those not yet merged are there for future use and I thank everyone who has taken the time to submit something! Regards, Stephen. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From bas@andrew.cmu.edu Mon Oct 8 16:09:13 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Mon, 08 Oct 2001 11:09:13 -0400 Subject: [Idle-dev] idlefork patches In-Reply-To: <20011008032112.RUFD13193.mss.rdc2.nsw.optushome.com.au@there> Message-ID: <1811973125.1002539353@muon> >From all of us interested in IDLE, a big round of applause and thanks for Stephen Gava! Bruce Sherwood From guido@python.org Mon Oct 8 16:07:55 2001 From: guido@python.org (Guido van Rossum) Date: Mon, 08 Oct 2001 11:07:55 -0400 Subject: [Idle-dev] idlefork patches In-Reply-To: Your message of "Mon, 08 Oct 2001 11:09:13 EDT." <1811973125.1002539353@muon> References: <1811973125.1002539353@muon> Message-ID: <200110081507.LAA01443@cj20424-a.reston1.va.home.com> > From all of us interested in IDLE, a big round of applause and thanks for > Stephen Gava! > > Bruce Sherwood Amen brother! --Guido van Rossum (home page: http://www.python.org/~guido/) From bas@andrew.cmu.edu Mon Oct 8 19:15:25 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Mon, 08 Oct 2001 14:15:25 -0400 Subject: [Idle-dev] Doc files Message-ID: <1823145830.1002550525@muon> The idlefork project at sourceforge.net began with the IDLE version created by Dave Scherer in the VPython context. It is now being extended, and bugs being fixed, with the goal of becoming the version of IDLE to be distributed with future versions of Python. The idlefork version has reached a level of maturity that makes it feasible to use it rather than the original VPython version, with the long-term advantage of there being only one version of Scherer-based IDLE to maintain and extend. In the past, the VPython installer installed Doc\VPython.html with a link to Doc\index.html, the standard documentation home page for Python. The original VPython version of IDLE linked to Doc\VPython.html when you pressed F1 for help. The idlefork version links to index.html, and it would be desirable not to change IDLE to accomodate the wider documentation needs of Python+Visual. In the idlefork discussion I proposed overwriting index.html with the VPython index, and installing a copy of the Python index. But a reader pointed out that he makes changes to the Python index (to add more documentation links), and the VPython installer would overwrite the changes. I think I've sorted out how to build the VPython installer so as to preserve user changes to the standard Python Doc\index.html. If you see a hole in my logic, please criticize! I'm using Inno Setup with Extensions to create the installer. 1) In the Doc directory, if Python.html doesn't exist, copy index.html to Python.html. 2) If Python.html still doesn't exist, install a copy from the installation procedure. 3) Install index.html (the base of the VPython documentation, with link to Python.html), overwriting index.html if necessary. 4) Specify in the installer that Doc\index.html and Doc\Python.html are not to be removed by the VPython uninstaller. I've tested this scheme to some extent, but I'm worried that I might have a logical flaw somewhere. It does seem robust to multiple installs and uninstalls of VPython. The only problem I've found with it is that if there is no Doc\index.html, you get an error message, but if you choose "skip" (rather than aborting the installation) both index.html and Python.html are installed correctly. However, if there is no index.html, there are other things wrong anyway, so maybe this isn't terrible (or maybe I can find a way to have the installer not issue a warning in this case). Bruce Sherwood From dscherer@vysics.com Mon Oct 8 20:08:35 2001 From: dscherer@vysics.com (David Scherer) Date: Mon, 8 Oct 2001 15:08:35 -0400 Subject: [Idle-dev] RE: [Visualpython-users] Doc files In-Reply-To: <1823145830.1002550525@muon> Message-ID: <000001c1502c$a411d620$9d01a8c0@RABBIT> The only thing I can see that could be improved in the below procedure is that on uninstall, the original state of affairs should be restored by copying Python.html over index.html (and removing the former). Otherwise uninstalling VPython will leave a Python installation with bad links in the documentation. Dave > -----Original Message----- > From: visualpython-users-admin@lists.sourceforge.net > [mailto:visualpython-users-admin@lists.sourceforge.net] On > Behalf Of Bruce Sherwood > Sent: Monday, October 08, 2001 2:15 PM > To: visualpython-users@lists.sourceforge.net > Cc: idle > Subject: [Visualpython-users] Doc files > > > The idlefork project at sourceforge.net began with the IDLE > version created > by Dave Scherer in the VPython context. It is now being > extended, and bugs > being fixed, with the goal of becoming the version of IDLE to be > distributed with future versions of Python. The idlefork version has > reached a level of maturity that makes it feasible to use it > rather than > the original VPython version, with the long-term advantage of > there being > only one version of Scherer-based IDLE to maintain and extend. > > In the past, the VPython installer installed Doc\VPython.html > with a link > to Doc\index.html, the standard documentation home page for > Python. The > original VPython version of IDLE linked to Doc\VPython.html when you > pressed F1 for help. The idlefork version links to > index.html, and it would > be desirable not to change IDLE to accomodate the wider > documentation needs > of Python+Visual. > > In the idlefork discussion I proposed overwriting index.html with the > VPython index, and installing a copy of the Python index. But > a reader > pointed out that he makes changes to the Python index (to add more > documentation links), and the VPython installer would overwrite the > changes. I think I've sorted out how to build the VPython > installer so as > to preserve user changes to the standard Python > Doc\index.html. If you see > a hole in my logic, please criticize! I'm using Inno Setup > with Extensions > to create the installer. > > 1) In the Doc directory, if Python.html doesn't exist, copy > index.html to > Python.html. > > 2) If Python.html still doesn't exist, install a copy from > the installation > procedure. > > 3) Install index.html (the base of the VPython documentation, > with link to > Python.html), overwriting index.html if necessary. > > 4) Specify in the installer that Doc\index.html and > Doc\Python.html are not > to be removed by the VPython uninstaller. > > I've tested this scheme to some extent, but I'm worried that > I might have a > logical flaw somewhere. It does seem robust to multiple installs and > uninstalls of VPython. The only problem I've found with it is > that if there > is no Doc\index.html, you get an error message, but if you > choose "skip" > (rather than aborting the installation) both index.html and > Python.html are > installed correctly. However, if there is no index.html, > there are other > things wrong anyway, so maybe this isn't terrible (or maybe I > can find a > way to have the installer not issue a warning in this case). > > Bruce Sherwood > > > _______________________________________________ > Visualpython-users mailing list > Visualpython-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/visualpython-users > From bas@andrew.cmu.edu Mon Oct 8 20:14:46 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Mon, 08 Oct 2001 15:14:46 -0400 Subject: [Idle-dev] RE: [Visualpython-users] Doc files In-Reply-To: <000001c1502c$a411d620$9d01a8c0@RABBIT> Message-ID: <1826706069.1002554086@muon> Sharp eyes! You're right, although the Python documentation would still be usable, in the sense that F1 in IDLE would take you to the VPython documentation index, where you would click the Python documentation and get it, while clicking on any of the VPython documentation would give you a broken link. I haven't quite understood the uninstall options in Inno Setup, but I'll try to put things back the way they were if I can. I've released this stuff onto the VPython site, including not showing an error message if there is no index.html (in which case the installer silently installs appropriate Doc files). Bruce Sherwood --On Monday, October 08, 2001 3:08 PM -0400 David Scherer wrote: > The only thing I can see that could be improved in the below procedure > is that on uninstall, the original state of affairs should be restored > by copying Python.html over index.html (and removing the former). > > Otherwise uninstalling VPython will leave a Python installation with bad > links in the documentation. From noreply@sourceforge.net Sun Oct 7 12:01:34 2001 From: noreply@sourceforge.net (noreply@sourceforge.net) Date: Sun, 07 Oct 2001 04:01:34 -0700 Subject: [Idle-dev] [ idlefork-Patches-450379 ] pack statusbar below scrollbar Message-ID: Patches item #450379, was opened at 2001-08-12 18:17 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=450379&group_id=9579 Category: None Group: None >Status: Closed >Resolution: Accepted Priority: 5 Submitted By: Stephen M. Gava (elguavas) >Assigned to: Stephen M. Gava (elguavas) Summary: pack statusbar below scrollbar Initial Comment: Pack editor window statusbar below the scrollbar. patch submitted to elguavas by Chui Tey , entered by elguavas --------------- *** old/EditorWindow.py Sat Jul 21 19:59:38 2001 --- new/EditorWindow.py Sun Aug 12 22:02:24 2001 *************** *** 159,164 **** --- 159,167 ---- text.bind("<>", self.open_class_browser) text.bind("<>", self.open_path_browser) + # pack the status bar before packing the scroll bar + self.set_status_bar() + vbar['command'] = text.yview vbar.pack(side=RIGHT, fill=Y) *************** *** 212,221 **** if self.extensions.has_key('AutoIndent'): self.extensions['AutoIndent'].set_indentation_params( self.ispythonsource(filename)) - self.set_status_bar() def set_status_bar(self): ! self.status_bar = self.MultiStatusBar(self.text_frame) self.status_bar.set_label('column', 'Col: ?', side=RIGHT) self.status_bar.set_label('line', 'Ln: ?', side=RIGHT) self.status_bar.pack(side=BOTTOM, fill=X) --- 215,224 ---- if self.extensions.has_key('AutoIndent'): self.extensions['AutoIndent'].set_indentation_params( self.ispythonsource(filename)) def set_status_bar(self): ! # status bar should be a child of the top level ! self.status_bar = self.MultiStatusBar(self.top) self.status_bar.set_label('column', 'Col: ?', side=RIGHT) self.status_bar.set_label('line', 'Ln: ?', side=RIGHT) self.status_bar.pack(side=BOTTOM, fill=X) ---------------------------------------------------------------------- >Comment By: Stephen M. Gava (elguavas) Date: 2001-10-07 04:01 Message: Logged In: YES user_id=75867 merged in the patch from Chui Tey ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=450379&group_id=9579 From elguavas@users.sourceforge.net Sun Oct 7 12:10:47 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Sun, 07 Oct 2001 04:10:47 -0700 Subject: [Idle-dev] CVS: idle EditorWindow.py,1.9,1.10 Message-ID: Update of /cvsroot/idlefork/idle In directory usw-pr-cvs1:/tmp/cvs-serv869 Modified Files: EditorWindow.py Log Message: merged status bar packing patch Index: EditorWindow.py =================================================================== RCS file: /cvsroot/idlefork/idle/EditorWindow.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -r1.9 -r1.10 *** EditorWindow.py 2001/08/11 07:46:26 1.9 --- EditorWindow.py 2001/10/07 11:10:44 1.10 *************** *** 138,141 **** --- 138,143 ---- text.bind("<>", self.open_path_browser) + self.set_status_bar() + vbar['command'] = text.yview vbar.pack(side=RIGHT, fill=Y) *************** *** 191,198 **** self.extensions['AutoIndent'].set_indentation_params( self.ispythonsource(filename)) ! self.set_status_bar() def set_status_bar(self): ! self.status_bar = self.MultiStatusBar(self.text_frame) self.status_bar.set_label('column', 'Col: ?', side=RIGHT) self.status_bar.set_label('line', 'Ln: ?', side=RIGHT) --- 193,200 ---- 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) self.status_bar.set_label('line', 'Ln: ?', side=RIGHT) From noreply@sourceforge.net Sun Oct 7 12:24:42 2001 From: noreply@sourceforge.net (noreply@sourceforge.net) Date: Sun, 07 Oct 2001 04:24:42 -0700 Subject: [Idle-dev] [ idlefork-Patches-467724 ] Fix spawn bug on Windows 2000 Message-ID: Patches item #467724, was opened at 2001-10-03 20:11 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=467724&group_id=9579 Category: None Group: None >Status: Closed >Resolution: Accepted Priority: 5 Submitted By: Bruce Sherwood (bsherwood) >Assigned to: Stephen M. Gava (elguavas) Summary: Fix spawn bug on Windows 2000 Initial Comment: In spawn.py, in the Windows section, it is a bug not to put quotes around the Python executor. The following def spawn(bin, *args): nargs = [bin] should be changed to this: def spawn(bin, *args): nargs = [ '"'+bin+'"' ] Without this change, on Windows 2000 if Python is installed in "Program Files" an attempt to start a run from Idle (F5) fails, due to the 8-character file-name munging. ---------------------------------------------------------------------- >Comment By: Stephen M. Gava (elguavas) Date: 2001-10-07 04:24 Message: Logged In: YES user_id=75867 merged Bruce's changes ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=467724&group_id=9579 From elguavas@users.sourceforge.net Sun Oct 7 12:26:50 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Sun, 07 Oct 2001 04:26:50 -0700 Subject: [Idle-dev] CVS: idle spawn.py,1.3,1.4 Message-ID: Update of /cvsroot/idlefork/idle In directory usw-pr-cvs1:/tmp/cvs-serv3440 Modified Files: spawn.py Log Message: merged win spawn patch Index: spawn.py =================================================================== RCS file: /cvsroot/idlefork/idle/spawn.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** spawn.py 2001/07/04 03:15:10 1.3 --- spawn.py 2001/10/07 11:26:48 1.4 *************** *** 43,47 **** def spawn(bin, *args): ! nargs = [bin] for arg in args: nargs.append( '"'+arg+'"' ) --- 43,47 ---- def spawn(bin, *args): ! nargs = ['"'+bin+'"'] for arg in args: nargs.append( '"'+arg+'"' ) From elguavas@users.sourceforge.net Sun Oct 7 12:44:51 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Sun, 07 Oct 2001 04:44:51 -0700 Subject: [Idle-dev] CVS: idle PyShell.py,1.7,1.8 Message-ID: Update of /cvsroot/idlefork/idle In directory usw-pr-cvs1:/tmp/cvs-serv6036 Modified Files: PyShell.py Log Message: merged port binding error message patch Index: PyShell.py =================================================================== RCS file: /cvsroot/idlefork/idle/PyShell.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -r1.7 -r1.8 *** PyShell.py 2001/07/17 04:59:01 1.7 --- PyShell.py 2001/10/07 11:44:49 1.8 *************** *** 1,883 **** ! #! /usr/bin/env python ! ! # changes by dscherer@cmu.edu ! ! # The main() function has been replaced by a whole class, in order to ! # address the constraint that only one process can sit on the port ! # hard-coded into the loader. ! ! # It attempts to load the RPC protocol server and publish itself. If ! # that fails, it assumes that some other copy of IDLE is already running [...1756 lines suppressed...] ! interp.execfile(filename) ! ! if debug: ! shell.open_debugger() ! if cmd: ! interp.execsource(cmd) ! elif script: ! if os.path.isfile(script): ! interp.execfile(script) ! else: ! print "No script file: ", script ! shell.begin() ! ! self.idle() ! root.mainloop() ! root.destroy() ! ! ! if __name__ == "__main__": ! main() From noreply@sourceforge.net Sun Oct 7 12:45:56 2001 From: noreply@sourceforge.net (noreply@sourceforge.net) Date: Sun, 07 Oct 2001 04:45:56 -0700 Subject: [Idle-dev] [ idlefork-Patches-467726 ] Make Idle report failure to run Message-ID: Patches item #467726, was opened at 2001-10-03 20:16 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=467726&group_id=9579 Category: None Group: None >Status: Closed >Resolution: Accepted Priority: 5 Submitted By: Bruce Sherwood (bsherwood) >Assigned to: Stephen M. Gava (elguavas) Summary: Make Idle report failure to run Initial Comment: If the socket connection fails for some reason, Idle fails silently to start up. I've moved the creation of the on-demand window to the very beginning of the main routine in PyShell.py, and I've added a detailed error message proposed by Dave Scherer. Because there is quite a bit of rearrangement I've posted the entire new file, which was created by modifying the file contained in idlefork-0.8.1.zip. ---------------------------------------------------------------------- >Comment By: Stephen M. Gava (elguavas) Date: 2001-10-07 04:45 Message: Logged In: YES user_id=75867 merged Bruce's patch ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=467726&group_id=9579 From noreply@sourceforge.net Mon Oct 8 03:09:57 2001 From: noreply@sourceforge.net (noreply@sourceforge.net) Date: Sun, 07 Oct 2001 19:09:57 -0700 Subject: [Idle-dev] [ idlefork-Patches-467728 ] Referencing additional documentation Message-ID: Patches item #467728, was opened at 2001-10-03 20:19 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=467728&group_id=9579 Category: None Group: None >Status: Closed >Resolution: Rejected Priority: 5 Submitted By: Bruce Sherwood (bsherwood) >Assigned to: Stephen M. Gava (elguavas) Summary: Referencing additional documentation Initial Comment: Here is a small change to EditorWindow which means that if VPython is installed, pressing F1 invokes Doc\VPython.html, which gives you VPython documentation, Numeric documentation, and the usual Python documentation. If VPython.html is not installed, Doc\index.html is invoked, which just gives you Python documentation (VPython.html has a link to index.html). VPython users need the additional documentation. For info on the nature of VPython, see http://cil.andrew.cmu.edu/projects/visual My goal is that in the future all VPython distributions include the idlefork version of idle, rather than the older version originally due to Dave Scherer, from which idlefork development started. if sys.platform[:3] == "win": fn0 = os.path.dirname(__file__) fn = os.path.join(fn0, os.pardir, os.pardir, "Doc", "VPython.html") fn = os.path.normpath(fn) if os.path.isfile(fn): help_url = fn else: fn = os.path.join(fn0, os.pardir, os.pardir, "Doc", "index.html") fn = os.path.normpath(fn) if os.path.isfile(fn): help_url = fn del fn0 del fn ---------------------------------------------------------------------- >Comment By: Stephen M. Gava (elguavas) Date: 2001-10-07 19:09 Message: Logged In: YES user_id=75867 the vpython folks will implement a simpler scheme for accessing their help from idle which doesn't involve source changes ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=467728&group_id=9579 From noreply@sourceforge.net Mon Oct 8 03:46:57 2001 From: noreply@sourceforge.net (noreply@sourceforge.net) Date: Sun, 07 Oct 2001 19:46:57 -0700 Subject: [Idle-dev] [ idlefork-Patches-450716 ] Most Recently used files Message-ID: Patches item #450716, was opened at 2001-08-13 23:58 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=450716&group_id=9579 Category: None Group: None >Status: Pending >Resolution: Postponed Priority: 5 Submitted By: Chui Tey (teyc) >Assigned to: Stephen M. Gava (elguavas) Summary: Most Recently used files Initial Comment: *** old/EditorWindow.py Sun Aug 12 22:06:16 2001 --- new/EditorWindow.py Tue Aug 14 09:51:14 2001 *************** *** 15,20 **** --- 15,21 ---- import webbrowser import idlever + import MRUList import WindowList from IdleConf import idleconf *************** *** 138,143 **** --- 139,147 ---- self.createmenubar() self.apply_bindings() + self.mrulist=MRUList.MRUList() + self.mrumenu=MRUList.MRUMenu(self.menudict ['file'], self.mrulist) + self.top.protocol("WM_DELETE_WINDOW", self.close) self.top.bind("<>", self.close_event) text.bind("<>", self.center_insert_event) *************** *** 425,430 **** --- 432,441 ---- self.addcolorizer() else: self.rmcolorizer() + # update the MRU list, and the menu + if self.io.filename: + self.mrulist.add(self.io.filename) + self.mrumenu.update() def addcolorizer(self): if self.color: #-------------------------------------------------- # MRUList.py # Most Recently Used list of files # # class MRUList - maintains a list of most recently used files # class MRUMenu - creates a menu of most recently used files # import ConfigParser from Tkinter import * # Default section name SECTION = 'MRUList' class MRUList: """Maintains a most recently used file list. The list is stored in $HOME/.idle See also: MRUMenu (for presentational logic) """ def __init__(self): self.max = 4 self._list = [] self._read() # PUBLIC Methods -------------------------------- def add(self, filename): """Adds a new filename to the most recently used list """ # maintain the MRU as a stack # with the most recent at the top of the stack # self._read() # get the latest from the config file if filename in self._list: self.delete(filename) self._list.append(filename) self._trim() self._write() # write it back immediately, more crash-proof def delete(self, filename): """Removes a filename from the most recently used list. Should be called when the file no longer exists. """ try: self._list.remove(filename) except ValueError: # Just in case item doesn't exist pass def list(self): """List of most recently used files, newest at the end""" return self._list # PRIVATE Methods ------------------------------- def __del__(self): # # Upon destruction, update the mrulist # self._trim() self._write() def __repr__(self): return ("max: %d\ncount: %d\n" % (self.max, len (self._list)) \ + `self._list`) def _getfilename(self): """Returns the file name of the config file""" # Copied from IdleConf.py import os try: homedir = os.environ['HOME'] except KeyError: homedir = os.getcwd() return os.path.join(homedir, '.idle') def _trim(self): """Trims the MRU list to the maximum specified""" too_many = len(self._list) - self.max if too_many > 0: self._list = self._list[too_many:] def _read(self): """Reads the config.txt for the list of MRU files""" self.conf = conf = ConfigParser.ConfigParser() conf.read(self._getfilename()) if not conf.has_section(SECTION): conf.add_section(SECTION) try: self.max = max = conf.getint (SECTION, 'max') count = conf.getint(SECTION, 'count') for i in range(count): filename=conf.get(SECTION, "file%d" % (i+1)) if not filename in self._list: self._list.append(filename) except ConfigParser.NoOptionError: pass def _write(self): """Writes the list of MRU files to .idle""" conf = self.conf conf.set(SECTION, 'enable', 0) # This is not an idle extension conf.set(SECTION, 'max', self.max) conf.set(SECTION, 'count', len(self._list)) for i in range(len(self._list)): conf.set(SECTION, "file%d" % (i+1), self._list[i]) conf.write(open(self._getfilename(),'wb')) class MRUMenu(Menu): """Maintains a menu associated with an MRU List. When an item on the MRUList is selected, a callback function calls open() on the EditorWindow which owns the menu. See also: MRUList """ def __init__(self, parent, mrulist): self.parent = parent # parent window self.mrulist = mrulist # instance of MRUList self.prev_mrumenus = {} # previous mru list self.parent.add_separator() self.update() def update(self): """Updates the MRU menu""" # # Build a reversed list of MRU files # import copy list = copy.copy(self.mrulist.list()) list.reverse() # # convert list to list of menu labels # menulist = [] for counter, filename in zip(range(len(list)), list): label = "%d %s" % (counter+1, filename) menulist.append( (label, filename) ) # # replace invalid mru with valid ones # for index in range(len(menulist)): menulabel, filename = menulist[index] if self.prev_mrumenus.has_key( index ): menu_index = self.parent.index( self.prev_mrumenus[index] ) self.parent.entryconfig( menu_index, \ label=menulabel, \ command=self._callback(filename)) self.prev_mrumenus[index] = filename else: self.parent.add_command( \ label=menulabel, \ underline=0, \ command = self._callback (filename)) self.prev_mrumenus[index] = filename def _callback(self, filename): """Returns a callback function which opens a file with a given filename""" def open(filename=filename): # # XXX todo. open('test','a').write("Opening %s (MRUList.py)...\n" % filename) return open def test(): mrulist = MRUList() mrulist.add('testMRU-1.py') mrulist.add('testMRU-2.py') mrulist.add('testMRU-3.py') mrulist.add('testMRU-4.py') mrulist.add('testMRU-5.py') mrulist.add('testMRU-6.py') print mrulist if __name__ == '__main__': test() ---------------------------------------------------------------------- >Comment By: Stephen M. Gava (elguavas) Date: 2001-10-07 19:46 Message: Logged In: YES user_id=75867 an mru implementation is on our todo list, but it will have to wait until after the new configuration handling is in place ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=450716&group_id=9579 From noreply@sourceforge.net Mon Oct 8 03:48:16 2001 From: noreply@sourceforge.net (noreply@sourceforge.net) Date: Sun, 07 Oct 2001 19:48:16 -0700 Subject: [Idle-dev] [ idlefork-Patches-450716 ] Most Recently used files Message-ID: Patches item #450716, was opened at 2001-08-13 23:58 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=450716&group_id=9579 Category: None Group: None >Status: Open Resolution: Postponed Priority: 5 Submitted By: Chui Tey (teyc) Assigned to: Stephen M. Gava (elguavas) Summary: Most Recently used files Initial Comment: *** old/EditorWindow.py Sun Aug 12 22:06:16 2001 --- new/EditorWindow.py Tue Aug 14 09:51:14 2001 *************** *** 15,20 **** --- 15,21 ---- import webbrowser import idlever + import MRUList import WindowList from IdleConf import idleconf *************** *** 138,143 **** --- 139,147 ---- self.createmenubar() self.apply_bindings() + self.mrulist=MRUList.MRUList() + self.mrumenu=MRUList.MRUMenu(self.menudict ['file'], self.mrulist) + self.top.protocol("WM_DELETE_WINDOW", self.close) self.top.bind("<>", self.close_event) text.bind("<>", self.center_insert_event) *************** *** 425,430 **** --- 432,441 ---- self.addcolorizer() else: self.rmcolorizer() + # update the MRU list, and the menu + if self.io.filename: + self.mrulist.add(self.io.filename) + self.mrumenu.update() def addcolorizer(self): if self.color: #-------------------------------------------------- # MRUList.py # Most Recently Used list of files # # class MRUList - maintains a list of most recently used files # class MRUMenu - creates a menu of most recently used files # import ConfigParser from Tkinter import * # Default section name SECTION = 'MRUList' class MRUList: """Maintains a most recently used file list. The list is stored in $HOME/.idle See also: MRUMenu (for presentational logic) """ def __init__(self): self.max = 4 self._list = [] self._read() # PUBLIC Methods -------------------------------- def add(self, filename): """Adds a new filename to the most recently used list """ # maintain the MRU as a stack # with the most recent at the top of the stack # self._read() # get the latest from the config file if filename in self._list: self.delete(filename) self._list.append(filename) self._trim() self._write() # write it back immediately, more crash-proof def delete(self, filename): """Removes a filename from the most recently used list. Should be called when the file no longer exists. """ try: self._list.remove(filename) except ValueError: # Just in case item doesn't exist pass def list(self): """List of most recently used files, newest at the end""" return self._list # PRIVATE Methods ------------------------------- def __del__(self): # # Upon destruction, update the mrulist # self._trim() self._write() def __repr__(self): return ("max: %d\ncount: %d\n" % (self.max, len (self._list)) \ + `self._list`) def _getfilename(self): """Returns the file name of the config file""" # Copied from IdleConf.py import os try: homedir = os.environ['HOME'] except KeyError: homedir = os.getcwd() return os.path.join(homedir, '.idle') def _trim(self): """Trims the MRU list to the maximum specified""" too_many = len(self._list) - self.max if too_many > 0: self._list = self._list[too_many:] def _read(self): """Reads the config.txt for the list of MRU files""" self.conf = conf = ConfigParser.ConfigParser() conf.read(self._getfilename()) if not conf.has_section(SECTION): conf.add_section(SECTION) try: self.max = max = conf.getint (SECTION, 'max') count = conf.getint(SECTION, 'count') for i in range(count): filename=conf.get(SECTION, "file%d" % (i+1)) if not filename in self._list: self._list.append(filename) except ConfigParser.NoOptionError: pass def _write(self): """Writes the list of MRU files to .idle""" conf = self.conf conf.set(SECTION, 'enable', 0) # This is not an idle extension conf.set(SECTION, 'max', self.max) conf.set(SECTION, 'count', len(self._list)) for i in range(len(self._list)): conf.set(SECTION, "file%d" % (i+1), self._list[i]) conf.write(open(self._getfilename(),'wb')) class MRUMenu(Menu): """Maintains a menu associated with an MRU List. When an item on the MRUList is selected, a callback function calls open() on the EditorWindow which owns the menu. See also: MRUList """ def __init__(self, parent, mrulist): self.parent = parent # parent window self.mrulist = mrulist # instance of MRUList self.prev_mrumenus = {} # previous mru list self.parent.add_separator() self.update() def update(self): """Updates the MRU menu""" # # Build a reversed list of MRU files # import copy list = copy.copy(self.mrulist.list()) list.reverse() # # convert list to list of menu labels # menulist = [] for counter, filename in zip(range(len(list)), list): label = "%d %s" % (counter+1, filename) menulist.append( (label, filename) ) # # replace invalid mru with valid ones # for index in range(len(menulist)): menulabel, filename = menulist[index] if self.prev_mrumenus.has_key( index ): menu_index = self.parent.index( self.prev_mrumenus[index] ) self.parent.entryconfig( menu_index, \ label=menulabel, \ command=self._callback(filename)) self.prev_mrumenus[index] = filename else: self.parent.add_command( \ label=menulabel, \ underline=0, \ command = self._callback (filename)) self.prev_mrumenus[index] = filename def _callback(self, filename): """Returns a callback function which opens a file with a given filename""" def open(filename=filename): # # XXX todo. open('test','a').write("Opening %s (MRUList.py)...\n" % filename) return open def test(): mrulist = MRUList() mrulist.add('testMRU-1.py') mrulist.add('testMRU-2.py') mrulist.add('testMRU-3.py') mrulist.add('testMRU-4.py') mrulist.add('testMRU-5.py') mrulist.add('testMRU-6.py') print mrulist if __name__ == '__main__': test() ---------------------------------------------------------------------- Comment By: Stephen M. Gava (elguavas) Date: 2001-10-07 19:46 Message: Logged In: YES user_id=75867 an mru implementation is on our todo list, but it will have to wait until after the new configuration handling is in place ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=450716&group_id=9579 From noreply@sourceforge.net Mon Oct 8 03:52:11 2001 From: noreply@sourceforge.net (noreply@sourceforge.net) Date: Sun, 07 Oct 2001 19:52:11 -0700 Subject: [Idle-dev] [ idlefork-Patches-450784 ] Immediate button for Debugger Message-ID: Patches item #450784, was opened at 2001-08-14 05:52 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=450784&group_id=9579 Category: None Group: None Status: Open >Resolution: Postponed Priority: 5 Submitted By: Michael Dubner (dubnerm) >Assigned to: Stephen M. Gava (elguavas) Summary: Immediate button for Debugger Initial Comment: This patch adds to IDLE debugger button that allows to check current state of local and global dictionaries not only on top level (as in debugger window) it can be used to change values also (__dbg_locals__ and __dbg_globals__ variables created). You should note that this is some sort of "cheat" - i'm using standard "code" module on top of IDLE console. Use this at your own risk. ---------------------------------------------------------------------- >Comment By: Stephen M. Gava (elguavas) Date: 2001-10-07 19:52 Message: Logged In: YES user_id=75867 this possible feature would be impacted by the remote execution implementation that is ultimately chosen. hold until that is in place. ---------------------------------------------------------------------- Comment By: Michael Dubner (dubnerm) Date: 2001-08-14 06:13 Message: Logged In: YES user_id=39274 Note that Debugger.0.8.imm.0.2.patch can be applied to any version of IDLE debugger from 0.6 to 0.8.1 (it had not changed for long time) ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=450784&group_id=9579 From noreply@sourceforge.net Mon Oct 8 03:56:06 2001 From: noreply@sourceforge.net (noreply@sourceforge.net) Date: Sun, 07 Oct 2001 19:56:06 -0700 Subject: [Idle-dev] [ idlefork-Patches-451088 ] RemoteInterpreter patch to run on win32 Message-ID: Patches item #451088, was opened at 2001-08-15 00:01 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=451088&group_id=9579 Category: None Group: None Status: Open >Resolution: Later Priority: 5 Submitted By: Nobody/Anonymous (nobody) >Assigned to: Stephen M. Gava (elguavas) Summary: RemoteInterpreter patch to run on win32 Initial Comment: *** ../Tools/idlefork-0.8.1/RemoteInterp.py Thu Jul 12 17:06:22 2001 --- ../Tools/idlenew/RemoteInterp.py Wed Aug 15 15:05:10 2001 *************** *** 121,127 **** def _decode_msg(self, msg): seqno = self.decode_seqno(msg [:self.SEQNO_ENC_LEN]) msg = msg[self.SEQNO_ENC_LEN:] ! parts = msg.split(" ", 2) if len(parts) == 1: cmd = msg arg = '' --- 121,131 ---- def _decode_msg(self, msg): seqno = self.decode_seqno(msg [:self.SEQNO_ENC_LEN]) msg = msg[self.SEQNO_ENC_LEN:] ! # ! # split a message into two parts ! # cmd arg ! # ! parts = msg.split(" ", 1) if len(parts) == 1: cmd = msg arg = '' *************** *** 263,280 **** self._cmd.reply() self._cmd.close() def startRemoteInterp(id): import os # UNIX domain sockets are simpler for starters sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) ! sock.bind("/var/tmp/ri.%s" % id) try: sock.listen(1) cli, addr = sock.accept() rinterp = RemoteInterp(cli) rinterp.run() finally: ! os.unlink("/var/tmp/ri.%s" % id) class RIClient: """Client of the remote interpreter""" --- 267,299 ---- self._cmd.reply() self._cmd.close() + def getAddress(id): + """returns a string representing the address of the + Unix domain socket for a particular id""" + import tempfile + import os + if tempfile.tempdir: + filename = os.path.join (tempfile.tempdir, "rs.%s" % id) + else: + # + # no temp dir defined in environment, use the + # current directory. + # + filename = "rs.%s" % id + return filename + def startRemoteInterp(id): import os # UNIX domain sockets are simpler for starters sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) ! sock.bind( getAddress(id) ) try: sock.listen(1) cli, addr = sock.accept() rinterp = RemoteInterp(cli) rinterp.run() finally: ! os.unlink( getAddress(id) ) class RIClient: """Client of the remote interpreter""" *************** *** 317,328 **** def riExec(id, file): sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) ! sock.connect("/var/tmp/ri.%s" % id) cli = RIClient(sock) cli.execfile(file) cli.run() if __name__ == "__main__": import sys import getopt --- 336,360 ---- def riExec(id, file): sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) ! sock.connect(getAddress(id)) cli = RIClient(sock) cli.execfile(file) cli.run() if __name__ == "__main__": + + # Usage: + # python RemoteInterp.py [-c] [-v] id + # Options: + # -c run as a client. Otherwise, run as a server by default + # -v verbose mode + # Example: + # This starts the server: + # python RemoteInterp.py id123 + # + # This starts the client: + # python RemoteInterp.py -c id123 test.py + # import sys import getopt ---------------------------------------------------------------------- >Comment By: Stephen M. Gava (elguavas) Date: 2001-10-07 19:56 Message: Logged In: YES user_id=75867 this will have to wait until I can get someone to work on the remote execution aspects of idle fork. if that has to be me then it won't be for some time. ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=451088&group_id=9579 From noreply@sourceforge.net Mon Oct 8 03:57:43 2001 From: noreply@sourceforge.net (noreply@sourceforge.net) Date: Sun, 07 Oct 2001 19:57:43 -0700 Subject: [Idle-dev] [ idlefork-Patches-451442 ] Adds refresh button to class browser Message-ID: Patches item #451442, was opened at 2001-08-15 20:59 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=451442&group_id=9579 Category: None Group: None Status: Open >Resolution: Later Priority: 5 Submitted By: Chui Tey (teyc) >Assigned to: Stephen M. Gava (elguavas) Summary: Adds refresh button to class browser Initial Comment: This patch does two things: a) ClassBrowser has a refresh button b) ClassBrowser 'docks' itself to the right hand side of the source window. ---------------------------------------------------------------------- >Comment By: Stephen M. Gava (elguavas) Date: 2001-10-07 19:57 Message: Logged In: YES user_id=75867 interesting. will look at this in detail after new config stuf is in place and working. ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=451442&group_id=9579 From noreply@sourceforge.net Mon Oct 8 03:59:56 2001 From: noreply@sourceforge.net (noreply@sourceforge.net) Date: Sun, 07 Oct 2001 19:59:56 -0700 Subject: [Idle-dev] [ idlefork-Patches-456006 ] open multiple modules at once Message-ID: Patches item #456006, was opened at 2001-08-27 21:11 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=456006&group_id=9579 Category: None Group: None Status: Open >Resolution: Postponed Priority: 5 Submitted By: Stephen M. Gava (elguavas) >Assigned to: Stephen M. Gava (elguavas) Summary: open multiple modules at once Initial Comment: Every time I open a project, I open a lot of modules, and this was usually done by double-clicking each module in import myModule1, myModule2, myModule3, myModule4, myModule5, myModule6 and pressing Alt-M to open it. Now I patched EditorWindow.py to extend the ability of open_module to open a list of modules (and ignore the import keyword), so that one can select the whole line and open all modules with one Alt-M. Below is the changed method open_module in EditorWindow.py, which can be substituted to the original to obtain the new behaviour. def open_module(self, event=None): # XXX Shouldn't this be in IOBinding or in FileList? try: name = self.text.get("sel.first", "sel.last") except TclError: name = "" else: name = string.strip(name) if not name: name = tkSimpleDialog.askstring("Module", "Enter the name of a Python module\n" "to search on sys.path and open:", parent=self.text) name = string.replace(name, ",", " ") name = string.replace(name, ";", " ") nameList = string.split(name) # XXX Ought to support package syntax # XXX Ought to insert current file's directory in front of path for name in nameList: if name in ["", "import"]: continue try: (f, file, (suffix, mode, type)) = imp.find_module(name) except (NameError, ImportError), msg: tkMessageBox.showerror("Import error", str(msg), parent=self.text) return if type != imp.PY_SOURCE: tkMessageBox.showerror("Unsupported type", "%s is not a source module" % name, parent=self.text) return if f: f.close() if self.flist: self.flist.open(file) else: self.io.loadfile(file) Daniel Haertle ------------------------------------------------------------------------ Daniel Haertle haertle@iqe.phys.ethz.ch _________________ ___ http://www.nlo.ethz.ch / ____/_ __/ /_/ / ETH Hoenggerberg - Nonlinear Optics Laboratory / __/_ / / / __ / Institute of Quantum Electronics, HPF E18 /______/ /__/ /__/ /__/ 8093 Zuerich - Switzerland Tel +41 1 63 32338 Fax +41 1 63 31056 ------------------------------------------------------------------------ ---------------------------------------------------------------------- >Comment By: Stephen M. Gava (elguavas) Date: 2001-10-07 19:59 Message: Logged In: YES user_id=75867 I like this idea in principle. I float implementation detail ideas on idle-dev when I get the chance to eventually come back to this in earnest. ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=456006&group_id=9579 From dscherer@vysics.com Mon Oct 8 20:21:19 2001 From: dscherer@vysics.com (David Scherer) Date: Mon, 8 Oct 2001 15:21:19 -0400 Subject: [Idle-dev] RE: [Visualpython-users] Doc files In-Reply-To: <1826706069.1002554086@muon> Message-ID: <000301c1502e$68a7a720$9d01a8c0@RABBIT> One other thing I should point out: this scheme isn't robust if more than one installation tries to use it (or to do anything similar). I mention this because someone brought up some programs other than VPython that also make changes to the documentation. Installing several such programs and removing them in a different order would leave things a mess. Dave > -----Original Message----- > From: visualpython-users-admin@lists.sourceforge.net > [mailto:visualpython-users-admin@lists.sourceforge.net] On > Behalf Of Bruce Sherwood > Sent: Monday, October 08, 2001 3:15 PM > To: visualpython-users@lists.sourceforge.net > Cc: 'idle' > Subject: RE: [Visualpython-users] Doc files > > > Sharp eyes! You're right, although the Python documentation > would still be > usable, in the sense that F1 in IDLE would take you to the VPython > documentation index, where you would click the Python > documentation and get > it, while clicking on any of the VPython documentation would > give you a > broken link. > > I haven't quite understood the uninstall options in Inno > Setup, but I'll > try to put things back the way they were if I can. > > I've released this stuff onto the VPython site, including not > showing an > error message if there is no index.html (in which case the installer > silently installs appropriate Doc files). > > Bruce Sherwood > > --On Monday, October 08, 2001 3:08 PM -0400 David Scherer > wrote: > > > The only thing I can see that could be improved in the > below procedure > > is that on uninstall, the original state of affairs should > be restored > > by copying Python.html over index.html (and removing the former). > > > > Otherwise uninstalling VPython will leave a Python > installation with > > bad links in the documentation. > > > > _______________________________________________ > Visualpython-users mailing list > Visualpython-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/visualpython-users > From bas@andrew.cmu.edu Mon Oct 8 20:38:53 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Mon, 08 Oct 2001 15:38:53 -0400 Subject: [Idle-dev] RE: [Visualpython-users] Doc files In-Reply-To: <000301c1502e$68a7a720$9d01a8c0@RABBIT> Message-ID: <1828153681.1002555533@muon> It's hard to see how to avoid the problems of multiple Python-based applications all needing to offer documentation from IDLE F1. Maybe we need somehow to parametrize what html index to go to, rather than hard coding into IDLE the \Doc\index.html file name? Make it a part of the IDLE preferences? If in the preference file, IDLE could go to the specified file, or if the user listed several files, IDLE on F1 would display a list to click on? Bruce Sherwood --On Monday, October 08, 2001 3:21 PM -0400 David Scherer wrote: > One other thing I should point out: this scheme isn't robust if more > than one installation tries to use it (or to do anything similar). I > mention this because someone brought up some programs other than VPython > that also make changes to the documentation. Installing several such > programs and removing them in a different order would leave things a > mess. > > Dave From guido@python.org Mon Oct 8 20:38:32 2001 From: guido@python.org (Guido van Rossum) Date: Mon, 08 Oct 2001 15:38:32 -0400 Subject: [Idle-dev] RE: [Visualpython-users] Doc files In-Reply-To: Your message of "Mon, 08 Oct 2001 15:38:53 EDT." <1828153681.1002555533@muon> References: <1828153681.1002555533@muon> Message-ID: <200110081938.PAA08096@cj20424-a.reston1.va.home.com> > If in the preference file, IDLE could go to the specified file, or if the > user listed several files, IDLE on F1 would display a list to click on? +1 --Guido van Rossum (home page: http://www.python.org/~guido/) From noreply@sourceforge.net Mon Oct 8 21:06:12 2001 From: noreply@sourceforge.net (noreply@sourceforge.net) Date: Mon, 08 Oct 2001 13:06:12 -0700 Subject: [Idle-dev] [ idlefork-Patches-469254 ] help.txt error Message-ID: Patches item #469254, was opened at 2001-10-08 13:06 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=469254&group_id=9579 Category: None Group: None Status: Open Resolution: None Priority: 5 Submitted By: Bruce Sherwood (bsherwood) Assigned to: Nobody/Anonymous (nobody) Summary: help.txt error Initial Comment: In help.txt, the following: --------------------------------- Other preferences: To change the font on Windows, open EditorWindow.py and change text['font'] = ("lucida console", 8) to, e.g., text['font'] = ("courier new", 10) --------------------------------- should be replaced by this: --------------------------------- Other preferences: To change the font open config- [win/unix/mac].txt and change font-name: courier new font-size: 10 to, e.g., font-name: courier new bold font-size: 14 --------------------------------- It is surely better for the user to change a preference file than to change EditorWindow.py! ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=469254&group_id=9579 From bas@andrew.cmu.edu Tue Oct 9 15:36:10 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Tue, 09 Oct 2001 10:36:10 -0400 Subject: [Idle-dev] Doc again Message-ID: <1896390222.1002623770@HYPERON.REM.CMU.EDU> After reconsideration, I don't like my suggestion to put documentation links into the IDLE configuration mechanism. Someone might build an alternative IDE, or none, and still want to be able to get to documentation in a standardized way. Or people might use something as simple as having their browsers keep a pointer to Doc/index.html. The key issue is that users, and some applications, want/need to customize the documentation. That suggests that we look away from idlefork and toward Doc/index.html. How might we make that file customizable? For starters, the standard Python distribution could put its current index.html in a different file, Python.html, and place in index.html a redirect operation, so that accessing an unmodified index.html would silently and rapidly pass the browser through to Python.html. VPython could install its own VPython.html and modify index.html to have two entries to click, one to go to Python.html and one to go to VPython.html. But a user might have already customized index.html to point to several documentation sources. So what VPython (and other applications) should do is append links to a list in index.html, not overwrite index.html. Admittedly, appending to an html file is a trickier operation, but since Python is present at the time of appending, one could perhaps have the user execute a Python module to do this work. And we could establish the convention that this is the only proper way to edit index.html. I admit that I don't entirely see how best to do this and hope that others will comment. Ideally, especially to benefit novice users (and many VPython users have never programmed before), the installation process needs to be very simple. We have been refining the VPython installation process a lot over the last year as we understand better the kinds of difficulties ordinary users have with installers. This issue has to be taken into account, and it represents another argument against asking the naive user to edit IDLE's configuration file(s). Bruce From guido@python.org Tue Oct 9 15:41:48 2001 From: guido@python.org (Guido van Rossum) Date: Tue, 09 Oct 2001 10:41:48 -0400 Subject: [Idle-dev] Doc again In-Reply-To: Your message of "Tue, 09 Oct 2001 10:36:10 EDT." <1896390222.1002623770@HYPERON.REM.CMU.EDU> References: <1896390222.1002623770@HYPERON.REM.CMU.EDU> Message-ID: <200110091441.f99Efnf10557@odiug.digicool.com> > Ideally, especially to benefit novice users (and many VPython users have > never programmed before), the installation process needs to be very simple. > We have been refining the VPython installation process a lot over the last > year as we understand better the kinds of difficulties ordinary users have > with installers. This issue has to be taken into account, and it represents > another argument against asking the naive user to edit IDLE's configuration > file(s). So VP should come with a modified configuration. --Guido van Rossum (home page: http://www.python.org/~guido/) From bas@andrew.cmu.edu Tue Oct 9 19:15:14 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Tue, 09 Oct 2001 14:15:14 -0400 Subject: [Idle-dev] Doc again In-Reply-To: <200110091528.f99FSuC10880@odiug.digicool.com> Message-ID: <1909534820.1002636914@muon> I do have a solution for IDLE and VPython, now incorporated in the VPython installer. I copy index.html to Python.html, thus preserving a user's changes to index.html, and I then overwrite index.html with the VPython page, which includes a link to Python.html. But I'm nervous about a solution that seems only to address VPython needs. However, if you're not worried, I guess I shouldn't be! Bruce Sherwood --On Tuesday, October 09, 2001 11:28 AM -0400 Guido van Rossum wrote: >> > So VP should come with a modified configuration. >> >> Yes, to benefit novices, if we go the way of the IDLE configuration file >> for specifying documentation links. > > As we should. > >> But I'm arguing that documentation >> links are an issue that should be kept separate from IDLE; it's a more >> general problem, and the documentation package and issues should for >> modularity be separate from the IDLE package and issues, no? > > Try finding a solution that works for IDLE and VP first. I'm not sure > that we should worry about potential generalizations that nobody has > tried yet -- especially since this seems to be a messy area where no > obvious solutions immediately pop to mind. From guido@python.org Tue Oct 9 19:26:32 2001 From: guido@python.org (Guido van Rossum) Date: Tue, 09 Oct 2001 14:26:32 -0400 Subject: [Idle-dev] Doc again In-Reply-To: Your message of "Tue, 09 Oct 2001 14:15:14 EDT." <1909534820.1002636914@muon> References: <1909534820.1002636914@muon> Message-ID: <200110091826.f99IQWG12333@odiug.digicool.com> Bruce, Why did you repost my reply to the IDLE list? According to the headers you sent your response to me only. I replied to you only, assuming you didn't want this part of the conversation on the list. It's normally not done to repost a private conversation on a list. I care because my tone of voice is different in private than on a list. --Guido van Rossum (home page: http://www.python.org/~guido/) > Subject: Re: [Idle-dev] Doc again > From: Bruce Sherwood > To: idle > Date: Tue, 09 Oct 2001 14:15:14 -0400 > > I do have a solution for IDLE and VPython, now incorporated in the VPython > installer. I copy index.html to Python.html, thus preserving a user's > changes to index.html, and I then overwrite index.html with the VPython > page, which includes a link to Python.html. > > But I'm nervous about a solution that seems only to address VPython needs. > However, if you're not worried, I guess I shouldn't be! > > Bruce Sherwood > > --On Tuesday, October 09, 2001 11:28 AM -0400 Guido van Rossum > wrote: > > >> > So VP should come with a modified configuration. > >> > >> Yes, to benefit novices, if we go the way of the IDLE configuration file > >> for specifying documentation links. > > > > As we should. > > > >> But I'm arguing that documentation > >> links are an issue that should be kept separate from IDLE; it's a more > >> general problem, and the documentation package and issues should for > >> modularity be separate from the IDLE package and issues, no? > > > > Try finding a solution that works for IDLE and VP first. I'm not sure > > that we should worry about potential generalizations that nobody has > > tried yet -- especially since this seems to be a messy area where no > > obvious solutions immediately pop to mind. > > > > _______________________________________________ > IDLE-dev mailing list > IDLE-dev@python.org > http://mail.python.org/mailman/listinfo/idle-dev From bas@andrew.cmu.edu Tue Oct 9 19:36:47 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Tue, 09 Oct 2001 14:36:47 -0400 Subject: [Idle-dev] Doc again In-Reply-To: <200110091826.f99IQWG12333@odiug.digicool.com> Message-ID: <1910827208.1002638207@muon> I apologize. I thought I HAD written to everyone, and that YOU had made a simple mistake in addressing. Sigh. My fault. As you say, one's tone does change with different audiences. (I sure hope I've sent this one to the right places!) Bruce Sherwood --On Tuesday, October 09, 2001 2:26 PM -0400 Guido van Rossum wrote: > Bruce, > > Why did you repost my reply to the IDLE list? According to the > headers you sent your response to me only. I replied to you only, > assuming you didn't want this part of the conversation on the list. > It's normally not done to repost a private conversation on a list. > > I care because my tone of voice is different in private than on a > list. From bas@andrew.cmu.edu Tue Oct 9 20:13:48 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Tue, 09 Oct 2001 15:13:48 -0400 Subject: [Idle-dev] Intentions? Message-ID: <1913048923.1002640428@muon> These are basically questions for Guido: May I ask what are expectations and intentions for idlefork? How/when will a decision be made whether to package idlefork rather than the current idle in future distributions of Python (assuming as I understand it that this is the goal of the idlefork project)? Is there some criterion of goodness to be reached? How will we know when it is "ready"? My own experience suggests that idlefork is in very good shape. And its foundation, the original version due to Scherer, has been beaten on for a year and a half by lots of physics students, without problems (other than the installation path bugs recently fixed). But I only use a fraction of all its capabilities, and the students use an even smaller fraction, so this isn't a full test. How do others feel about their own use of idlefork? Bruce Sherwood From bas@andrew.cmu.edu Tue Oct 9 20:17:06 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Tue, 09 Oct 2001 15:17:06 -0400 Subject: [Idle-dev] user interface for errors Message-ID: <1913246146.1002640626@muon> There is one important user-interface issue with idlefork, especially for novice programmers. The window with error messages should come forward when there is an error. It is easy for the novice not to see the message. A related issue is that IDLE doesn't remember window locations. As an "expert", I move the output window to the lower right of my screen and leave it there, so that I know where to look for error messages, and I position other windows not to hide the output window. Novices often delete the output window, and since IDLE doesn't remember window locations, on the next run the output window may again be underneath a graphics window, in the center of the screen. Bruce Sherwood From guido@python.org Tue Oct 9 20:38:47 2001 From: guido@python.org (Guido van Rossum) Date: Tue, 09 Oct 2001 15:38:47 -0400 Subject: [Idle-dev] Intentions? In-Reply-To: Your message of "Tue, 09 Oct 2001 15:13:48 EDT." <1913048923.1002640428@muon> References: <1913048923.1002640428@muon> Message-ID: <200110091938.f99Jclh15696@odiug.digicool.com> > These are basically questions for Guido: May I ask what are expectations > and intentions for idlefork? How/when will a decision be made whether to > package idlefork rather than the current idle in future distributions of > Python (assuming as I understand it that this is the goal of the idlefork > project)? Is there some criterion of goodness to be reached? How will we > know when it is "ready"? I believe Stephen is still working on the configuration dialogs. I an also hoping that the interactive shell window will be changed to use the subprocess execution mode that is now being used for "run". I don't particularly care whether that will use my rpc module or Sherer's, as long as it works. I also want the debugger to work -- both with the shell and with "run script mode. Finally, I still don't like that it now comes up with a blank script window instead of with a shell window by default. We've discussed this before and I don't expect we'll be able to convince each other, so I propose to make this a configurable default. The version that comes with standard Python will come with the Python shell window by default. > My own experience suggests that idlefork is in very good shape. And > its foundation, the original version due to Scherer, has been beaten > on for a year and a half by lots of physics students, without > problems (other than the installation path bugs recently fixed). But > I only use a fraction of all its capabilities, and the students use > an even smaller fraction, so this isn't a full test. How do others > feel about their own use of idlefork? I'd love to hear experiences from other folks. --Guido van Rossum (home page: http://www.python.org/~guido/) From bas@andrew.cmu.edu Tue Oct 9 20:49:47 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Tue, 09 Oct 2001 15:49:47 -0400 Subject: [Idle-dev] Intentions? In-Reply-To: <200110091938.f99Jclh15696@odiug.digicool.com> Message-ID: <1915207446.1002642587@muon> Thanks, Guido, for your commentary on the issues. And making shell/new file startup be configurable is a nice way to satisfy competing needs and desires. Bruce Sherwood From pobrien@orbtech.com Tue Oct 9 21:22:24 2001 From: pobrien@orbtech.com (Patrick K. O'Brien) Date: Tue, 9 Oct 2001 15:22:24 -0500 Subject: [Idle-dev] Intentions? In-Reply-To: <1915207446.1002642587@muon> Message-ID: I have a feature request related to this. I'm on Win98 and I've set up an association between .py files and IDLE, so that I can right click on a .py file and select "Edit in IDLE" from the popup menu. When I select that option, I get two open windows for every file that I open this way: a shell window and a file window. When I open three or four files this way it results in an awful lot of open shell windows, none of which I need in this case - I just want to edit the file and get out. So maybe an option that I could add to my IDLE laucher that would only open the file, and not a shell, would help. Here is what I use now. Maybe it could be improved and I just don't know how: C:\Python21\pythonw.exe C:\Python21\Tools\idle\idle.pyw -e "%1" %* --- 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 Bruce Sherwood Sent: Tuesday, October 09, 2001 2:50 PM To: idle Subject: Re: [Idle-dev] Intentions? Thanks, Guido, for your commentary on the issues. And making shell/new file startup be configurable is a nice way to satisfy competing needs and desires. Bruce Sherwood _______________________________________________ IDLE-dev mailing list IDLE-dev@python.org http://mail.python.org/mailman/listinfo/idle-dev From guido@python.org Tue Oct 9 21:45:26 2001 From: guido@python.org (Guido van Rossum) Date: Tue, 09 Oct 2001 16:45:26 -0400 Subject: [Idle-dev] Intentions? In-Reply-To: Your message of "Tue, 09 Oct 2001 15:22:24 CDT." References: Message-ID: <200110092045.f99KjQT18271@odiug.digicool.com> > I have a feature request related to this. I'm on Win98 and I've set up an > association between .py files and IDLE, so that I can right click on a .py > file and select "Edit in IDLE" from the popup menu. When I select that > option, I get two open windows for every file that I open this way: a shell > window and a file window. When I open three or four files this way it > results in an awful lot of open shell windows, none of which I need in this > case - I just want to edit the file and get out. So maybe an option that I > could add to my IDLE laucher that would only open the file, and not a shell, > would help. Here is what I use now. Maybe it could be improved and I just > don't know how: > > C:\Python21\pythonw.exe C:\Python21\Tools\idle\idle.pyw -e "%1" %* Idlefork has this much more reasonable behavior: idle.py file opens an editing window on file and nothing else. But there's another thing I'd like to see: if you open several files this way, they all end up running separate copies of IDLE. A little bit of Windows-specific magic should be added to make this attach to an already-running IDLE copy. But I don't know how to do that yet. :-) --Guido van Rossum (home page: http://www.python.org/~guido/) From dscherer@vysics.com Tue Oct 9 22:07:04 2001 From: dscherer@vysics.com (David Scherer) Date: Tue, 9 Oct 2001 17:07:04 -0400 Subject: [Idle-dev] Intentions? In-Reply-To: <200110092045.f99KjQT18271@odiug.digicool.com> Message-ID: <000801c15106$5c0c7b20$9d01a8c0@RABBIT> > Idlefork has this much more reasonable behavior: > > idle.py file > > opens an editing window on file and nothing else. > > But there's another thing I'd like to see: if you open > several files this way, they all end up running separate > copies of IDLE. A little bit of Windows-specific magic > should be added to make this attach to an already-running > IDLE copy. But I don't know how to do that yet. :-) Idlefork *does* do this, unless someone has changed it since I set up the project. C:\Python21>pythonw.exe Tools\idle_VPython\idle.py a.py C:\Python21>pythonw.exe Tools\idle_VPython\idle.py b.py creates exactly two IDLE editor windows and exactly one copy of pythonw.exe is running. The magic isn't even really windows-specific; it uses the same TCP server as ExecBinding. It probably causes havoc on a multi-user machine, though. By the way, it would be *very* nice if someone could put the Windows file-extension bindings into an installer program. Personally I think opening IDLE is a much better and safer default behavior than running python on a script, but at the very least it should be on the right-click menu as Patrick describes. Dave From pobrien@orbtech.com Tue Oct 9 22:13:10 2001 From: pobrien@orbtech.com (Patrick K. O'Brien) Date: Tue, 9 Oct 2001 16:13:10 -0500 Subject: [Idle-dev] Intentions? In-Reply-To: <200110092045.f99KjQT18271@odiug.digicool.com> Message-ID: That sounds great, even if it does open up separate copies of IDLE. I usually find myself opening files this way when I'm in a hurry and just want to make a quick change or simply look at the file. IDLE has the quickest load time of any of the editors I use. And opening up three or four copies doesn't seem too bad. I know PythonWin has the feature you want, as does the cvs version of Boa, if I'm not mistaken. --- 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 Guido van Rossum Sent: Tuesday, October 09, 2001 3:45 PM To: pobrien@orbtech.com Cc: IDLE Developers List Subject: Re: [Idle-dev] Intentions? Idlefork has this much more reasonable behavior: idle.py file opens an editing window on file and nothing else. But there's another thing I'd like to see: if you open several files this way, they all end up running separate copies of IDLE. A little bit of Windows-specific magic should be added to make this attach to an already-running IDLE copy. But I don't know how to do that yet. :-) --Guido van Rossum (home page: http://www.python.org/~guido/) _______________________________________________ IDLE-dev mailing list IDLE-dev@python.org http://mail.python.org/mailman/listinfo/idle-dev From StephenM.Gava Wed Oct 10 01:56:26 2001 From: StephenM.Gava (StephenM.Gava) Date: Wed, 10 Oct 2001 10:56:26 +1000 Subject: [Idle-dev] IDLEfork / Docs / Startup etc. Message-ID: <20011010005659.DGKR13193.mss.rdc2.nsw.optushome.com.au@there> Whoa, be offline for a couple of days and come back to a flurry of idle-dev mail. 8^) For starters: Guido Wrote: > I believe Stephen is still working on the configuration dialogs. Yes, I am. The beginnings of this work have been in idlefork cvs for a while now, and I've been making minor commits from time to time when I get the chance. I think I'm finally able to be able to spend some 'quality time' again on this (famous last words) so it should begin moving along more quickly again. When this is done I'll make another point release tarball for people to hammer on and find all the inevitable bugs. The things I'd like to see finished or done in idlefork before its next stable release (and possible mergeing into python idle) are, mainly: gui user configurability and properly working debugging. On the subject of debugging, I had previously thought that it was something we had broken a little somehow in the process of merging in the last couple of years of changes and bug fixes from stable idle, but it appears that may not be the case. Can anybody tell me, was debugging ever working as expected since the initial VPython changes in idle fork? Can anyone who contributed to those changes (David?) let me know where to start looking at getting it working again, or is this problem an unavoidable result of the current remote execution impementation? Both the documentation lookup and startup behaviour issues should be mitigated by the idle configuration system changes. As well as having a command line switch to specify startup behaviour, the user's preferred style of idle startup will also be able to be saved as a configuration item. As for help documentation: if pressing the "F1" (or configured help) key is to retain it's sensible common meaning of "help on using this application" then I believe it should by default pop up help on using idle itself (and the python documentation could be on shift-F1 for instance), but on the subject of help files, following an earlier suggestion by Guido I have begun implementing user configurable help sources. This would mean that the user can configure whatever additional help files they wish, and they will appear on the idle help menu for launching form there. The VPython folks should be able to just distribute a modified 'configuration defaults' file with their idle to enable their preferred startup behaviour and additional help source(s) by default. Stephen. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From guido@python.org Wed Oct 10 02:02:36 2001 From: guido@python.org (Guido van Rossum) Date: Tue, 09 Oct 2001 21:02:36 -0400 Subject: [Idle-dev] IDLEfork / Docs / Startup etc. In-Reply-To: Your message of "Wed, 10 Oct 2001 10:56:26 +1000." <20011010005659.DGKR13193.mss.rdc2.nsw.optushome.com.au@there> References: <20011010005659.DGKR13193.mss.rdc2.nsw.optushome.com.au@there> Message-ID: <200110100102.VAA21865@cj20424-a.reston1.va.home.com> > On the subject of debugging, I had previously thought that it was > something we had broken a little somehow in the process of merging > in the last couple of years of changes and bug fixes from stable > idle, but it appears that may not be the case. Can anybody tell me, > was debugging ever working as expected since the initial VPython > changes in idle fork? Can anyone who contributed to those changes > (David?) let me know where to start looking at getting it working > again, or is this problem an unavoidable result of the current > remote execution impementation? I *think* VPython never did use the debugger. My remote execution code contains remote debugger support (but not 100% working). --Guido van Rossum (home page: http://www.python.org/~guido/) From bas@andrew.cmu.edu Wed Oct 10 02:26:52 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Tue, 09 Oct 2001 21:26:52 -0400 Subject: [Idle-dev] IDLEfork / Docs / Startup etc. In-Reply-To: <20011010005659.DGKR13193.mss.rdc2.nsw.optushome.com.au@there> Message-ID: <1935432472.1002662812@HYPERON.REM.CMU.EDU> --On Wednesday, October 10, 2001 10:56 +1000 "Stephen M. Gava" wrote: > As well as having a > command line switch to specify startup behaviour, the user's preferred > style of idle startup will also be able to be saved as a configuration > item. Do remember that on Windows and Mac, the concept of "command line" is pretty meaningless to most users. > As for > help documentation: if pressing the "F1" (or configured help) key is to > retain it's sensible common meaning of "help on using this application" > then I believe it should by default pop up help on using idle itself > (and the python documentation could be on shift-F1 for instance), I'm not sure this is appropriate for IDLE and would argue for the simplest keypress (F1) to go to language help. It's not like IDLE has the goal of replacing Word or Emacs. IDLE isn't a self-standing application with value outside the Python context. It is an integrated development environment for Python, not a self-standing application. And there's not much help needed specifically for IDLE, either. Thanks for working on configurable startup and help source(s)! Bruce Sherwood From StephenM.Gava Wed Oct 10 03:36:05 2001 From: StephenM.Gava (StephenM.Gava) Date: Wed, 10 Oct 2001 12:36:05 +1000 Subject: [Idle-dev] IDLEfork / Docs / Startup etc. In-Reply-To: <1935432472.1002662812@HYPERON.REM.CMU.EDU> References: <1935432472.1002662812@HYPERON.REM.CMU.EDU> Message-ID: <20011010023637.GEBM13193.mss.rdc2.nsw.optushome.com.au@there> > > As well as having a > > command line switch to specify startup behaviour, the user's preferred > > style of idle startup will also be able to be saved as a configuration > > item. > > Do remember that on Windows and Mac, the concept of "command line" is > pretty meaningless to most users. Hopefully, not (on windows at least) for all programmers. In fact with mac osx now programmers (and knowledgeable users) will have that extra flexibility there also. Besides, many many python users and programers are not primarily working on windows or mac... But in any case the point is, wouldn't having the startup state configurable through a gui (and in the default config file) address that concern for those users you mention? > > As for > > help documentation: if pressing the "F1" (or configured help) key is to > > retain it's sensible common meaning of "help on using this application" > > then I believe it should by default pop up help on using idle itself > > (and the python documentation could be on shift-F1 for instance), > > I'm not sure this is appropriate for IDLE and would argue for the simplest > keypress (F1) to go to language help. It's not like IDLE has the goal of > replacing Word or Emacs. IDLE isn't a self-standing application with value > outside the Python context. It is an integrated development environment for > Python, not a self-standing application. And there's not much help needed > specifically for IDLE, either. Mmm, still, F1 (on windows at least) conventionally means application help, and I don't see a compelling need to confuse the issue just for one application (idle). In any case keystrokes will be configurable (also through the gui) so if VPython idle wanted to be non standard in this respect again you would just need to change the default config file in the idle you distribute. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From bas@andrew.cmu.edu Wed Oct 10 04:12:59 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Tue, 09 Oct 2001 23:12:59 -0400 Subject: [Idle-dev] IDLEfork / Docs / Startup etc. In-Reply-To: <20011010023637.GEBM13193.mss.rdc2.nsw.optushome.com.au@there> Message-ID: <1941799932.1002669179@HYPERON.REM.CMU.EDU> --On Wednesday, October 10, 2001 12:36 +1000 "Stephen M. Gava" wrote: > But in any case the point is, > wouldn't having the startup state configurable through a gui (and in the > default config file) address that concern for those users you mention? Yes. I was just inserting a general point, that one shouldn't automatically assume that users are working from a command line (or for that matter automatically assume that they aren't!). It is true that the Python community has been heavily oriented toward Unix/Linux. But I'm very attracted to Guido's vision of "Computer Programming for Everyone" and have been pushing this vision with physics students whose first exposure to programming is VPython. Python in general and VPython in particular represent a marvelous entree to programming. And most of these novice users have had and will have no contact with a command line interface. If we can propagate Python for everyone, the number of nonexpert users of Python could be much larger than the number of expert users. Having ranted, I should also say that it is impossible to do a fully acceptable job for both experts and novices without configurability, so the path you're taking is the right one. As for F1 for Python help, it's no big deal, though I still feel that IDLE isn't an application, it's a Python environmental component. After all, IDLE most definitely isn't an "application" in the technical sense; it's not an executable binary. Bruce Sherwood From StephenM.Gava Wed Oct 10 05:00:01 2001 From: StephenM.Gava (StephenM.Gava) Date: Wed, 10 Oct 2001 14:00:01 +1000 Subject: [Idle-dev] IDLEfork / Docs / Startup etc. In-Reply-To: <1941799932.1002669179@HYPERON.REM.CMU.EDU> References: <1941799932.1002669179@HYPERON.REM.CMU.EDU> Message-ID: <20011010040034.INZW13193.mss.rdc2.nsw.optushome.com.au@there> > > But in any case the point is, > > wouldn't having the startup state configurable through a gui (and in the > > default config file) address that concern for those users you mention? > > Yes. I was just inserting a general point, that one shouldn't automatically > assume that users are working from a command line (or for that matter > automatically assume that they aren't!). I've tried to avoid both those assumptions in my work on idlefork so far. Actually I wouldn't be surprised if a lot of users/programmers are, like myself, using python on a variety of platforms (or certainly more than one) on a pretty regular basis these days. I see this in itself as a good argument for idle's existence in its attempt to be simillarly useful on a range of the platforms that python runs on. > It is true that the Python community has been heavily oriented toward > Unix/Linux. But I'm very attracted to Guido's vision of "Computer > Programming for Everyone" and have been pushing this vision with physics > students whose first exposure to programming is VPython. > > Python in general and VPython in particular represent a marvelous entree to > programming. And most of these novice users have had and will have no > contact with a command line interface. If we can propagate Python for > everyone, the number of nonexpert users of Python could be much larger than > the number of expert users. Surely. I got involved in working on idlefork in the first place as a result of teaching my youngest son and daughter programming using python, and in thinking about how I could make idle a nicer environment for them as newbies to both python and programming. > Having ranted, I should also say that it is impossible to do a fully > acceptable job for both experts and novices without configurability, so the > path you're taking is the right one. > > As for F1 for Python help, it's no big deal, though I still feel that IDLE > isn't an application, it's a Python environmental component. After all, > IDLE most definitely isn't an "application" in the technical sense; it's > not an executable binary. Neither is any other python program or application an executable binary, yet! But while I can see what you mean about idle being 'tied' to python, so is every other commercial or non-commercial ide for python out there. Of course they're applications, they're applications for integrated program development using the python programming language. In many non windows or mac python distributions idle isn't even installed as a default part of python. If you want an ide to use with python you can optionally install the IDLE package. That said, however, on the subject of 'F1' , idle does need its own help (however simple), things like the object browser, the interactive shell, the debugger (although it seems this is broken/unused in vpython), could all do with some basic pointers available on their constructive use, especially for beginners. If this idle interface help, and eventually also language construct help in the editor window, are to eventually become context sensitive (which is also on the idlefork todo list), then it makes even more sense for the F1 (or other configured app help key) to be context help for using idle, and another related key (like shift-F1 for instance) to be the language context help key. If you want or need to poke around in the help indicies they are of course all still available on the help menu of any window. These kinds of behaviours are standard and acceptable and and to my mind therefore non confusing to neophytes. Anyway the bottom line really is that anyone who wants to standardise on different behaviour will be able to easily via the default config files if they wish. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From fdrake@acm.org Wed Oct 10 05:54:55 2001 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Wed, 10 Oct 2001 00:54:55 -0400 Subject: [Idle-dev] IDLEfork / Docs / Startup etc. In-Reply-To: <20011010040034.INZW13193.mss.rdc2.nsw.optushome.com.au@there> References: <1941799932.1002669179@HYPERON.REM.CMU.EDU> <20011010040034.INZW13193.mss.rdc2.nsw.optushome.com.au@there> Message-ID: <15299.54431.740187.441814@grendel.zope.com> > IDLE most definitely isn't an "application" in the technical sense; it's > not an executable binary. I'm not sure this is a useful definition of "application". Heck, not all executables are binary, even in the Windows world; think batch files and Windows Scripting Host scripts. Stephen M. Gava writes: > Anyway the bottom line really is that anyone who wants to standardise on > different behaviour will be able to easily via the default config files if > they wish. A quick experiment with MSVC++ 6 shows that if focus is in a source window, F1 brings up the installed MSDN library (think "\Python21\Doc\index.html"), while if focus is in the output or file/class view windows (including their docked incarnations), information specific to those views comes up. I'd interpret this as context specific help taking precedence, with user-installed help overriding the general application help. I don't know that it tells us a lot, but I think it does hint that what's needed is a general "front page" to the help, with everything interesting falling somewhere inside that corpus. Perhaps the right thing would be to go ahead with a registration for help components, and re-generate the front page when new components are added. -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From dma@andrew.cmu.edu Wed Oct 10 16:19:27 2001 From: dma@andrew.cmu.edu (David Andersen) Date: Wed, 10 Oct 2001 11:19:27 -0400 Subject: [Idle-dev] idlefork on Linux Message-ID: <1985387592.1002712767@DAWSON.PC.CC.CMU.EDU> How do I install idlefork under Linux (RedHat 7.1 iwith Python 1.5.2)? If I simply copy the files into a random directory I get an import failure as idle imports PyShell which imports warnings which does not exist. warnings does exist in the Python 2.1 Windows version in Python21/Lib/warnings.py - I don't find anything comparable under Python 1.5.2 on Linux. From dscherer@vysics.com Wed Oct 10 16:34:36 2001 From: dscherer@vysics.com (David Scherer) Date: Wed, 10 Oct 2001 11:34:36 -0400 Subject: [Idle-dev] IDLEfork / Docs / Startup etc. In-Reply-To: <20011010005659.DGKR13193.mss.rdc2.nsw.optushome.com.au@there> Message-ID: <000201c151a1$14cf50c0$9d01a8c0@RABBIT> [Stephen M. Gava writes] > As for > help documentation: if pressing the "F1" (or configured help) > key is to > retain it's sensible common meaning of "help on using this > application" then > I believe it should by default pop up help on using idle > itself (and the > python documentation could be on shift-F1 for instance) I disagree. The purpose of help is not to provide information on an application; the purpose of help is to provide the user *help* with their current task. The current task of an IDLE user is "writing a Python program." In support of this task, they need to, among other things, 1. Edit their program text using the editor 2. Write a syntactically correct Python program 3. Make use of standard python libraries 4. Make use of other python libraries they have installed They should therefore have access to help for all these things. There's no particular reason that (1) should be separated from the others. [Fred L. Drake writes] > Perhaps the right thing would be to go ahead with a > registration for help components, and re-generate the front > page when new components are added. I like this idea, although it might be a lot of work. A dynamically expandable Python help system would be useful beyond IDLE, as well. It does feel a little like feeping creaturism, though. (Why not update the documentation automatically from the web when a network connection is available? Why not integrate it with a directory of Python packages, so that you can look at the help for a module you don't have installed, and click to download and install it?) Dave From pobrien@orbtech.com Wed Oct 10 21:19:50 2001 From: pobrien@orbtech.com (Patrick K. O'Brien) Date: Wed, 10 Oct 2001 15:19:50 -0500 Subject: [Idle-dev] Intentions? In-Reply-To: <200110092045.f99KjQT18271@odiug.digicool.com> Message-ID: The help.txt file in idlefork still says to use the -e switch, which no longer works: Command line usage: idle.py [-c command] [-d] [-e] [-s] [-t title] [arg] ... -c command run this command -d enable debugger -e edit mode; arguments are files to be edited -s run $IDLESTARTUP or $PYTHONSTARTUP first -t title set title of shell window If there are arguments: If -e is used, arguments are files opened for editing and sys.argv reflects the arguments passed to IDLE itself. Otherwise, if -c is used, all arguments are placed in sys.argv[1:...], with sys.argv[0] set to '-c'. Otherwise, if neither -e nor -c is used, the first argument is a script which is executed with the remaining arguments in sys.argv[1:...] and sys.argv[0] set to the script name. If the script name is '-', no script is executed but an interactive Python session is started; the arguments are still available in sys.argv. --- 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 Guido van Rossum Sent: Tuesday, October 09, 2001 3:45 PM To: pobrien@orbtech.com Cc: IDLE Developers List Subject: Re: [Idle-dev] Intentions? > I have a feature request related to this. I'm on Win98 and I've set up an > association between .py files and IDLE, so that I can right click on a .py > file and select "Edit in IDLE" from the popup menu. When I select that > option, I get two open windows for every file that I open this way: a shell > window and a file window. When I open three or four files this way it > results in an awful lot of open shell windows, none of which I need in this > case - I just want to edit the file and get out. So maybe an option that I > could add to my IDLE laucher that would only open the file, and not a shell, > would help. Here is what I use now. Maybe it could be improved and I just > don't know how: > > C:\Python21\pythonw.exe C:\Python21\Tools\idle\idle.pyw -e "%1" %* Idlefork has this much more reasonable behavior: idle.py file opens an editing window on file and nothing else. But there's another thing I'd like to see: if you open several files this way, they all end up running separate copies of IDLE. A little bit of Windows-specific magic should be added to make this attach to an already-running IDLE copy. But I don't know how to do that yet. :-) --Guido van Rossum (home page: http://www.python.org/~guido/) _______________________________________________ IDLE-dev mailing list IDLE-dev@python.org http://mail.python.org/mailman/listinfo/idle-dev From elguavas@users.sourceforge.net Thu Oct 11 00:19:53 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Thu, 11 Oct 2001 09:19:53 +1000 Subject: [Idle-dev] idlefork on Linux In-Reply-To: <1985387592.1002712767@DAWSON.PC.CC.CMU.EDU> References: <1985387592.1002712767@DAWSON.PC.CC.CMU.EDU> Message-ID: <20011010232024.LASR13193.mss.rdc2.nsw.optushome.com.au@there> > How do I install idlefork under Linux (RedHat 7.1 iwith Python 1.5.2)? > > If I simply copy the files into a random directory I get an import failure > as idle imports PyShell which imports warnings which does not exist. > > warnings does exist in the Python 2.1 Windows version in > Python21/Lib/warnings.py - I don't find anything comparable under Python > 1.5.2 on Linux. >From INSTALL.txt in the IDLEfork 0.8.1 distribution: IDLEfork INSTALL notes ====================== The emphasis in IDLEfork is now for the project to be able to be run directly from the unpacked source directory. This is to enable easy testing of (and hacking on) IDLEfork, and will also prevent interfering with the stable Python IDLE set up in any way. To install IDLEfork just unpack the archive into its own directory wherever you like. To run IDLEfork just go to the directory you unpacked IDLEfork into and then run 'python idle.py' in an xterm under unix/linux, or 'idle.pyw' under windows 98/2000. Remember that IDLEfork 0.8.1 and greater require python 2.1 or greater. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From elguavas@users.sourceforge.net Thu Oct 11 00:51:34 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Thu, 11 Oct 2001 09:51:34 +1000 Subject: [Idle-dev] IDLEfork / Docs / Startup etc. In-Reply-To: <000201c151a1$14cf50c0$9d01a8c0@RABBIT> References: <000201c151a1$14cf50c0$9d01a8c0@RABBIT> Message-ID: <20011010235205.LZCE13193.mss.rdc2.nsw.optushome.com.au@there> David Scherer wrote: > [Stephen M. Gava writes] > > > As for > > help documentation: if pressing the "F1" (or configured help) > > key is to > > retain it's sensible common meaning of "help on using this > > application" then > > I believe it should by default pop up help on using idle > > itself (and the > > python documentation could be on shift-F1 for instance) > > I disagree. > > The purpose of help is not to provide information on an application; the [..] > They should therefore have access to help for all these things. There's > no particular reason that (1) should be separated from the others. We're just going around in circles on this now. I have at no stage suggested that python language help shouldn't be easily available from within idle, nor would I. It should of course always be available easily and by default or idle wouldn't be much of a python ide would it? As for what particular key is by default bound to this or that, well it's (obviously :^) endlessly debateable. This isn't cast in stone yet and anyway it will be configurable. End of that story, surely. The aim is that with the planned changes, including configurable help entries on the idle help menu, ultimately help will be in much better shape in idle than it was. > [Fred L. Drake writes] > > > Perhaps the right thing would be to go ahead with a > > registration for help components, and re-generate the front > > page when new components are added. > > I like this idea, although it might be a lot of work. A dynamically > expandable Python help system would be useful beyond IDLE, as well. It > does feel a little like feeping creaturism, though. (Why not update the > documentation automatically from the web when a network connection is > available? Why not integrate it with a directory of Python packages, so > that you can look at the help for a module you don't have installed, and > click to download and install it?) It does seem like a nify idea Fred, but it seems like it might also be a lot of work to implement and maintain? You'd have a better idea than I on that though. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From elguavas@users.sourceforge.net Thu Oct 11 00:56:35 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Thu, 11 Oct 2001 09:56:35 +1000 Subject: [Idle-dev] Intentions? Message-ID: <20011010235706.MDBY13193.mss.rdc2.nsw.optushome.com.au@there> Patrick K. O'Brien wrote: > The help.txt file in idlefork still says to use the -e switch, which no > longer works: The help.txt file in idlefork is completely our of date and needs to be rewritten. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From bas@andrew.cmu.edu Fri Oct 12 18:34:31 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Fri, 12 Oct 2001 13:34:31 -0400 Subject: [Idle-dev] Documentation on Unix/Linux Message-ID: <2166291534.1002893671@muon> In the discussion concerning documentation accessible from IDLE, I'm curious about one aspect of the situation on Unix/Linux. On Windows, the standard Python installer comes with a Doc directory, and Doc\index.html takes you to the standard Python documentation which is installed in the Doc directory. In contrast, on Linux the standard Python installer does not include documentation, and IDLE has a menu option that goes to the python.org web site, not to locally stored documentation. (I believe that the standard Mac Python installer also doesn't include documentation.) To me, it would make sense for documentation to be included in the Linux installer, to make a complete package, and the IDLE menu option would take you to it. (This is a separate question from whether F1 takes you there, or to info on IDLE itself, or to a list from which to choose.) IDLE could/should check for the availability of a local copy of the documentation and go there rather than to the web site. But it's not clear to me whether there's a "standard" place for such documentation. Would it be /usr/share/doc/python? You who are using Python on Linux, where do you put the documentation? Or do you always go to the web site? Bruce Sherwood P.S. I just submitted a patch to idlefork in which I propose a more generally valid way to reference the documentation on Windows. From noreply@sourceforge.net Fri Oct 12 18:21:18 2001 From: noreply@sourceforge.net (noreply@sourceforge.net) Date: Fri, 12 Oct 2001 10:21:18 -0700 Subject: [Idle-dev] [ idlefork-Patches-470637 ] better doc path on windows Message-ID: Patches item #470637, was opened at 2001-10-12 10:21 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=470637&group_id=9579 Category: None Group: None Status: Open Resolution: None Priority: 5 Submitted By: Bruce Sherwood (bsherwood) Assigned to: Nobody/Anonymous (nobody) Summary: better doc path on windows Initial Comment: In EditorWindow.py, I suggest a better path to the documentation on Windows. The old way is commented out below; it says to start from where EditorWindow.py is located, come up two parent levels, then go down to \Doc\index.html. This works fine as long as idle is in Python21\Tools, but would not work if idle were in some arbitrary location. if sys.platform[:3] == "win": fn = os.path.split(sys.executable)[0] +'\Doc\index.html' ## fn = os.path.dirname(__file__) ## fn = os.path.join(fn, os.pardir, os.pardir, "Doc", "index.html") ## fn = os.path.normpath(fn) ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=309579&aid=470637&group_id=9579 From elguavas@users.sourceforge.net Sat Oct 13 03:27:01 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Sat, 13 Oct 2001 12:27:01 +1000 Subject: [Idle-dev] Documentation on Unix/Linux In-Reply-To: <2166291534.1002893671@muon> References: <2166291534.1002893671@muon> Message-ID: <20011013022731.IGTO13193.mss.rdc2.nsw.optushome.com.au@there> > In contrast, on Linux the standard Python installer does not include > documentation, and IDLE has a menu option that goes to the python.org web Which Linux distro are you talking about? Most users on Linux (/ and or other unix / unix-like platforms) might not be installing python from a set of tarballs or building it from source (although that's what I do on Linux and on FreeBSD) but will be installing it from the packages (or in the case of the BSD's posiibly 'ports') provided with their distribution. The various distributions break up the packages in different ways and sometimes install different components of python (including the docs) in different places. Also in the case of multiple python versions installed on the one machine (which developers often have for testing purposes) there can be more than one set of docs installed in more than one place. > put the documentation? Or do you always go to the web site? Yep, idle (curently at least) defaults to looking up the docs on the web. If and when you choose to install a local set of docs you can set up whatever way of looking at the local copy you choose (browser link on your desktop or menus or a simple mod to idle or whatever). Personally I don't call the python docs from within idle, I have an icon in my windowmaker dock that loads in index page of my own that links to a lot of the development documentation I regularly use, including that for python. Folk who prefer other window managers or setups would have things set up completely differently to suit themselves. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From bas@andrew.cmu.edu Sat Oct 13 04:10:52 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Fri, 12 Oct 2001 23:10:52 -0400 Subject: [Idle-dev] Documentation on Unix/Linux In-Reply-To: <20011013022731.IGTO13193.mss.rdc2.nsw.optushome.com.au@there> Message-ID: <2200872172.1002928252@HYPERON.REM.CMU.EDU> Thanks for this and your other comments on this issue. I guess I can see that in the Linux environment it makes sense for the user to assemble pieces and customize everything, and the user doesn't expect a fully integrated programming environment. This wouldn't work for novices, but then novices aren't likely to use Linux anyway. Bruce Sherwood --On Saturday, October 13, 2001 12:27 +1000 "Stephen M. Gava" wrote: > Personally I don't call the > python docs from within idle, I have an icon in my windowmaker dock that > loads in index page of my own that links to a lot of the development > documentation I regularly use, including that for python. Folk who prefer > other window managers or setups would have things set up completely > differently to suit themselves. From elguavas@users.sourceforge.net Sat Oct 13 05:10:06 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Sat, 13 Oct 2001 14:10:06 +1000 Subject: [Idle-dev] Documentation on Unix/Linux In-Reply-To: <2200872172.1002928252@HYPERON.REM.CMU.EDU> References: <2200872172.1002928252@HYPERON.REM.CMU.EDU> Message-ID: <20011013041035.KSQR13193.mss.rdc2.nsw.optushome.com.au@there> Bruce Sherwood wrote: > Thanks for this and your other comments on this issue. I guess I can see > that in the Linux environment it makes sense for the user to assemble > pieces and customize everything, and the user doesn't expect a fully > integrated programming environment. This wouldn't work for novices, but > then novices aren't likely to use Linux anyway. I think It's probably better to try to avoid these kind of broad generalisations about platforms or what different kinds of users want. How customisable or 'integrated' all the various users of python on Windows or Linux or Mac or BSD or Solaris or other unices want their working environment to be isn't really a black and white issue. IDLE is intended to be somewhat integrated but with an emphasis on simplicity (have a look at the IDLE/IDLEfork "mission statement" at http://idlefork.sourceforge.net ). But it's horses for courses even for each individual and not just for each platform. For instance I do a lot of work on windows 2000 using Delphi, which is way more integrated than idle will ever aspire to be (and way more even than the most complex commercial python IDE's out there currently are), and I like it just fine. Whereas on both windows and *nix I never used to use idle at all until I became interested in it while using it for a teaching tool. Now I try to do a lot of my python development in it (particularly on idlefork itself) so that I can be as aware as I can of just how it feels, what shortcommings seem most glaring, etc., as just one part of the process of testing and improving in the ongoing work on idlefork. On the other hand again, Kylix, the equivalent of Delphi on Linux, is just as 'hyper integrated' as Delphi itself and it feels quite appropriate that way. Anyway may point (which I may have strayed just as far as usual from :) was meant to be that I think idle will benefit from not trying to put it in too narrow a category but focussing on its own aims like light weight, non-complexity, portabilty and such. Straying off topic for this list, I think on the separate issue of platforms (again only my opinnion!), that it's a choice which should depend squarely on what is most useful for you in what you're trying to achieve with that particular tool (the computer) at the time. ...I think this view might put me well out of favour with zealots from all sides. 8^) Although, if I had to nominate one which I think is all around pretty excellent at the moment I'd have to go for OSX... it sems to me that apple has finally pulled off the incerdible coup of putting a simple but flexible interface on top of the power of unix and I hope it's a big success for them. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From bas@andrew.cmu.edu Sat Oct 13 15:31:10 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Sat, 13 Oct 2001 10:31:10 -0400 Subject: [Idle-dev] Documentation on Unix/Linux In-Reply-To: <20011013041035.KSQR13193.mss.rdc2.nsw.optushome.com.au@there> Message-ID: <2241690992.1002969070@HYPERON.REM.CMU.EDU> Very interesting comments, Stephen, including your comments about OSX. We really do need good competition in operating systems! In the VPython user community I asked where people put documentation and was told that on Debian systems documentation is in /usr/doc, and that /usr/share/doc is more oriented to user-generated documentation. It appears that normally there is no /usr/doc on RedHat, but it would seem to make sense to have such a directory (I'm prepared to learn that I'm just ignorant on this, though!). Currently EditorWindow.py sets help_url = "http://www.python.org/doc/current/", then if on Windows it checks for local documentation at ../../Doc/index.html and resets help_url to the local address. If the local documentation is not available, help_url still points to the Web. I'd like to semi-propose similar code for Linux and Mac. For example, if on Linux, look for /usr/doc/Python21/index.html. That would encourage people to create Linux packages that include documentation, with easy access from Idle. I offer this semi-proposal for discussion in the following context. Although I commented that Linux users are sophisticated and typically can/do put together their own customized set of resources, in the VPython community we've met a number of users who are relatively new to Linux, typically RedHat (because it is the best advertised), and they have significant difficulties putting together a workable VPython environment. This includes some of our own college freshmen. Over the last year we've learned a lot, experimentally, about what makes an installer for Windows robust against novice user actions and expectations. We'd like to exploit this to make a robust installer for Linux. This includes packaging together everything the user needs to get started, which definitely includes documentation for Python and for VPython. (It also means that asking for help in Idle should offer a small list: help on Idle, help on Python, help on VPython.) It is of course true that we can hack EditorWindow.py (or some configuration file) for our own installer, but the fewer hacks the better. And I do see some virture in looking for local documentation, then reverting to the Web address if there is no local docs, because it will encourage people to make installers that include documentation. This is a small point, so I don't want to push it too far. Perhaps more important are the experimental data that we do encounter Linux users who are not enormously facile with Linux (yet), and would benefit from more inclusive installers. Bruce Sherwood From Keila - Curitiba - Pr" Olá! Veja meu site pessoal no "Tripod.com.br". Basta clicar no endereço abaixo. GARANTO SER SUI-GENERIS - CLIQUE ABAIXO: http://pastorinha.tripod.com.br/seminarista Mais de 61.000 internautas visitaram a PG., existe 7 Álbuns: Se você quiser, por favor, indique minha Home Page, a outros Internautas. Mais detalhes, se comunique, passe um e-mail, que responderei brevemente. Dentro da Home Page, ao lado das fotos, você poderá saber muito mais sobre mim! Obrigada. e-mail: pastorinha@ieg.com.br Beijos:- Keila - Curitiba - Pr - Podes falar comigo, direto dela. Brevemente uma Carta Aberta. http://pastorinha.tripod.com.br/seminarista "Esta mensagem é enviada com a complacência da nova legislação sobre correio eletrônico, Seção 301, Parágrafo (a) (2) (c) Decreto S. 1618, Título Terceiro aprovado pelo "105º Congresso Base das Normativas Internacionais sobre o SPAM". Este E-mail não poderá ser considerado SPAM quando incluir uma forma de ser removido. Para ser removido de futuros correios, simplesmente responda indicando no Assunto: REMOVER" From bas@andrew.cmu.edu Sun Oct 14 03:15:16 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Sat, 13 Oct 2001 22:15:16 -0400 Subject: [Idle-dev] A different view Message-ID: <2283936332.1003011316@HYPERON.REM.CMU.EDU> A different colleague tells me this: > Um, /usr/doc may not exist, and only /usr/share/doc may be present. That's > the way Debian is, and RH may do the same (I believe this is what the FHS > suggests). I'm getting conflicting signals as to whether /usr/doc or /usr/share/doc would be the natural/expected place to put Python-related documentation..... Bruce Sherwood From elguavas@users.sourceforge.net Sun Oct 14 10:39:56 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Sun, 14 Oct 2001 19:39:56 +1000 Subject: [Idle-dev] Documentation on Unix/Linux / A different view In-Reply-To: <2241690992.1002969070@HYPERON.REM.CMU.EDU> References: <2241690992.1002969070@HYPERON.REM.CMU.EDU> Message-ID: <20011014094024.SHPE13193.mss.rdc2.nsw.optushome.com.au@there> Bruce, I've rolled my two cents worth on two of your messages into one reply here. Bruce Sherwood wrote: > community we've met a number of users who are relatively new to Linux, > typically RedHat (because it is the best advertised), and they have > significant difficulties putting together a workable VPython environment. One way you could probably help this a lot would be with a couple af simple step by step instruction sets or FAQ's to guide less experienced users on how to set up their python environment on each linux or other *nix environment you care about so that it will work properly with vpython. Or else look at how to integrate vpython into the python installations of the platforms you care about (you could try asking people who've set up vpython satisfactorily on those platforms how they did it). I don't know that you're going to acheive the total homogeniety you desire in your setups for vpython on platforms different from windows without some work on your part to adapt your setup to varying conditions on different platforms. The way python is set up on many of these platforms isn't really under the control of the python team themselves (the way it mostly is with windows, with the one big installer they release that does everything for a base system, even Tk), as I've tried to point out previously. In the case of Linux or the BSD's (Free, Open, Net) for instance, the person who maintains the python packages for that platform will actually be compiling each python release from source with the right switches and set up in such a way that it will install sensibly and seamlessly into their system with its particular set of system libraries and locations for shared libraries etc. etc.. The person who maintains or packages other python components (all the various 3rd party modules, tools and libraries for instance, like numeric, or various database bindings or possibly vpython itself for that matter) may not even be the same person who maintains the core python packages, but they would in each case be working to a core set of guidelines or rules or agreements on how these packages should all hang together with python core in on that platform. What you really need to do is get in touch with the people packaging or porting python for each platform you have an interest in and find out from them how to bundle vpython so that it will fit in properly with the rest of python (*including the python documentation packages that are already available on each platform*) on that platform . As many of these platforms have the similarity of a general "unixness" under the skin (even the mac now with OSX!) this won't be anywhere near as daunting as it might sound since there will be a lot of simillarities and variations within a relitaively low number of themes for how things are layed out. It will just be a matter of exchanging a bit of email, maybe reading a bit of documentation or floating some questions on some mailing lists, and then you should be able to come up with a good set of notes and resources of your own on how to accomodate the platforms you are interested in. > learned a lot, experimentally, about what makes an installer for Windows > robust against novice user actions and expectations. We'd like to exploit > this to make a robust installer for Linux. The best way to make things as simple as possible for the user in this case may be to arrange to have your vpython setup packaged (either by yourselves or somone else interested in supporting vpython on your target platfroms) in a way that is native to the packaging and software installation system used on that platform. For example, a correctly set up redhat .rpm for redhat linux (or a mandrake or suse .rpm for those rpm based distro's) a .deb package for debian, a port and binary package for FreeBSD, etc. etc. That way the user will be installing, updating and maintaining vpython on their platform in just the same way they install, update and maintain the rest of python, and all the rest of the software on their system. This would surely be the simplest solution from the users point of view as they wouldn't have to do anything different or non standard for vpython, just treat it the same as any other software they install on their system, but then this solution might require a little extra work on the vpython end. > This includes packaging together > everything the user needs to get started, which definitely includes > documentation for Python and for VPython. Vpython docs sure, but why package and distribute the python documentation again when it's already available packaged for all the platforms python is packaged for, and in the same way python is on those platforms? > It is of course true that we can hack EditorWindow.py (or some > configuration file) for our own installer, but the fewer hacks the better. Well I wouldn't actually qualify changing and entry in an .ini file as 'hacking'. In my discussions with Guido on idle's configuration system one of the reasons the 'site default' configuration is available as text based .ini style files is just for this purpose: so that a simple change can be made to the default setup to adapt to any local requirements or special or un-thought-of requirements. If this wasn't a useful function that we expected users (meaning here administrators, or people setting up packages or working environments, etc. in a standard way for others) to actually make use of then it would be simpler and safer to store the default configuration within the program. > And I do see some virture in looking for local documentation, then > reverting to the Web address if there is no local docs, I think this would be a good thing for idle to do on more than just windows too, it would just need to look in a range of the likely local places and then drop back to the web if it doesn't seem to be in any of them. If it's somewhere non standard (say if the user just downloaded the doc tarball from the python site and unpacked it in a directory of their choice) then the user should be able to enter or overrride the location as a configuration option as well. With that final fallback *every* eventuality should be covered. > because it will > encourage people to make installers that include documentation. If you're talking about the python documentation here, every packaged version of python also has packaged docs available. The user may have to ask their install program to install the docs as well as to install python core, but the python docs are always available to be installed just as easily as python itself was. But then I can't really think of a case where it would make sense for anyone to package or distribute software they expect or want others to use, without documentation. On Sun, 14 Oct 2001 12:15:pm, Bruce Sherwood wrote: > A different colleague tells me this: > > Um, /usr/doc may not exist, and only /usr/share/doc may be present. > > That's the way Debian is, and RH may do the same (I believe this is what > > the FHS suggests). > > I'm getting conflicting signals as to whether /usr/doc or /usr/share/doc > would be the natural/expected place to put Python-related > documentation..... Debian used to use /usr/doc but is moving toward /usr/share/doc as mandated by the FHS. If you look in /usr/doc on a recent debian system you will find that all the entries there are just symlinks to the actual files that exist in /usr/share/doc . The FHS should result in a little more similarity in the places where things are stored on linux systems over time, but it depends on how much the FHS is embraced or implemented by the various distros... it's not like there are any 'Linux Police' who are going to be making folks follow it. More importantly though, as I mentionned above, because of the general 'unixishness' of Linux there are really only a small number of ways for things to be sensibly set up anyway. Don't forget though that platforms like the various 'libre' bds's and other *nixes are not linux systems (and certainly don't want to be!) so the FHS is completely irrelevant there anyway, but, the important thing is that those "unixish" similarities are still there in the range of possible places particular things can or should be on the system. The last thing that comes to mind on the topic of 'packaging stuff for linux' (*I hear you sighing with relief*) is please don't overlook debian. I know that a lot of universities and colleges (here in australia at least) set up debian linux by deafualt or encourage its use by their students (for a lot of reasons including it being the main fully non-commercial linux and therefore free in ALL senses [you just need an internet connection], and a darn fine distribution besides). I know that they are even currently debating and about to put in place their new policy on python packaging on the python developers list there ( debian-python@lists.debian.org , you can subscribe at http://www.debian.org/MailingLists/subscribe ) so that might be a good place to start asking quastions on how to provide a debian friendly vpython! Hmm, reading back over this I'm wondering if the discussion is starting to stray a little far from idle development... if anyone feels it is (and if you could be bothered reading this far *L*) , say so and Bruce and I can continue the discussion in private email if he wishes. Stephen. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From bas@andrew.cmu.edu Sun Oct 14 16:04:05 2001 From: bas@andrew.cmu.edu (Bruce Sherwood) Date: Sun, 14 Oct 2001 11:04:05 -0400 Subject: [Idle-dev] Documentation on Unix/Linux / A different view In-Reply-To: <20011014094024.SHPE13193.mss.rdc2.nsw.optushome.com.au@there> Message-ID: <2330065502.1003057445@HYPERON.REM.CMU.EDU> Many thanks, Stephen, for the tutorial on the nature of the *nix environment. It would seem most appropriate at this point to not further burden the idle community with a conversation aimed at educating just me! By the way, on the VPython site we have indeed posted both Debian and RedHat packages (though we're about to redo both). Bruce Sherwood From UNIVERSO ESPORTIVO" UNIVERSO ESPORTIVO

UNIVERSO ESPORTIVO

Palestras virtuais com som e vídeo, em tempo real, sobre os mais variados temas , com profissionais conceituados nas diferentes áreas e assuntos esportivos.

Venha participar desse universo de conhecimento. www.ue.pro.br

 

Esta mensagem é enviada com a complacência da nova legislação sobre correio eletrônico, Seção 301, Parágrafo (a) (2) (c) Decreto S. 1618, Título Terceiro aprovado pelo "105º Congresso Base das Normativas Internacionais sobre o SPAM". Este E-mail não poderá ser considerado SPAM quando inclua uma forma de ser removido. ESTA É UMA MENSAGEM ÚNICA - VOCÊ NÃO RECEBERÁ MAIS ESTA MENSAGEM Mas se você desejar poderá enviar um e-mail para REMOVER com o título: REMOVA.

From dma@andrew.cmu.edu Mon Oct 15 10:18:56 2001 From: dma@andrew.cmu.edu (David Andersen) Date: Mon, 15 Oct 2001 05:18:56 -0400 Subject: [Idle-dev] Re: IDLE-dev digest, Vol 1 #187 - 4 msgs In-Reply-To: Message-ID: <2395756512.1003123136@DAWSON.PC.CC.CMU.EDU> /usr/share/doc appears to be the correct place under RedHat - I don't think we should create a /usr/doc where none already exists. From joonas@olen.to Mon Oct 15 18:27:54 2001 From: joonas@olen.to (Joonas Paalasmaa) Date: Mon, 15 Oct 2001 20:27:54 +0300 Subject: [Idle-dev] Idle raises errors when F5 is hit Message-ID: <3BCB1C99.E84EBA4F@olen.to> When I hit F5 in the *Python Shell* window Idle raises the following errors. Python 2.2a1 (#21, Jul 18 2001, 04:25:46) [MSC 32 bit (Intel)] on win32 Type "copyright", "credits" or "license" for more information. IDLE Fork 0.8 -- press F1 for help >>> [I hit F5 here] Exception in Tkinter callback Traceback (most recent call last): File "C:\PYTHON\lib\lib-tk\Tkinter.py", line 1285, in __call__ return apply(self.func, args) File "C:\PYTHON\lib\lib-tk\Tkinter.py", line 436, in callit apply(func, args) File "C:\Python\idlefork-0.8.1\PyShell.py", line 758, in idle self.server.rpc_loop() File "C:\Python\idlefork-0.8.1\protocol.py", line 356, in rpc_loop c.rpc_loop(block = 0) File "C:\Python\idlefork-0.8.1\protocol.py", line 281, in rpc_loop self.close_hook() File "C:\Python\idlefork-0.8.1\ExecBinding.py", line 127, in connect_lost if self.output.owin and self.output.owin.text: AttributeError: ExecBinding instance has no attribute 'output' From office@tangfeng.org Tue Oct 16 07:53:33 2001 From: office@tangfeng.org (office@tangfeng.org) Date: Tue, 16 Oct 2001 14:53:33 +0800 Subject: [Idle-dev] Beijing Tangfeng Culture Exchange Centre Message-ID: This is a letter from Beijing,China, I apologize for disturbing you.If our information don't agree with your demand or make any trouble to you,please don't hesitate to write back to us,we will remove your email address from our list,we are very appreciated of it. Xiu Yuan Name: Beijing Tangfeng Culture Exchange Centre Address: No.210, Building 2, Party School of Beijing Municipal Government Committee,No.6 Chegongzhuang Street, Xicheng District,Beijing, China. Tel: 86-10-6800-1452 86-10-6800-3112 Fax: 86-10-6800-1452 Mobile Tel:13661361402 Homepage: Http://www.Tangfeng.org E-mail:Webmaster: postmaster@tangfeng.org VIP customers service: office@tangfeng.org Business customers service: business1@tangfeng.org business2@tangfeng.org xiuyuan@263.net.cn xiuyuan@tangfeng.org Dear Sir or Madam, Succeed!Hope!Ambition! Everybody who wants to do business in China,please contact with us .Here has a 1/4 population of the world,here has a wide market.With the development of economy and reformation ,there are too many opportunities in China.You know,China has succeeded in applying for holding the 2008 Olympic Sports Meeting .In the coming seven years,China must be the golden point in the world.It is full of competition in the 21th century.The international trade would be the large tendency.Mutual support and mutual aid is very necessary.Who can seize the chance ahead,who would be succeed.China is about to enter the WTO,then China will exert the enormous potential power.Welcome to invest in China.Welcome to cooperate with T&F.It is mutual beneficial for you and me.More and more people realize that China is not only the good manufacturing base,but also has the cheaper labour power.The scope of T&F can involve the computer,the industry ,heavy machines,petrochemical,textile ,communication,transportation,metals and so on.The mo T&F is a specialized credit and status inquiry company. T&F is in close contact and builds many cooperative relationships with agencies in China. These include agencies such as the Trade & Industry Administration Department of China, China Statistics Bureau, China national Economy Information Centre along with many others. We have many business economist specialists, along with our investigative and administrative staff constitute a special and all around investigation by us. We can find the information you need to perform your business. T&F will provide accurate and credible investigation data, which you need to create a nation-wide and comprehensive reference report.Please contact us for assistance with any of these matters. At the same time, we should be pleased to hear if you would grant us the sole agency for China or you would be our agency for your district if you want. T&F will be provide a piece of accurate and credible investigation data, which you want about achieving nation-wide and comprehensive reference report forever! Please visit our Homepage: http://www.tangfeng.org , write or e-mail to T&F promptly, if you are interested in it. T&F shall be pleased to render you any further services. God will help those who help themselves.Waiting for your reply. Very truly yours, Beijing Tangfeng Culture Exchange Center Xiu Yuan From robv@sara.nl Thu Oct 18 14:36:20 2001 From: robv@sara.nl (Rob Veldhuyzen van Zanten) Date: Thu, 18 Oct 2001 15:36:20 +0200 Subject: [Idle-dev] http://idlefork.sourceforge.net/ links Message-ID: <3BCEDAD4.1F17394A@sara.nl> Many links on webpage http://idlefork.sourceforge.net/ are dead as http://sourceforge.net/ is not accessable. - Rob V. van Zanten From pobrien@orbtech.com Thu Oct 18 14:45:32 2001 From: pobrien@orbtech.com (Patrick K. O'Brien) Date: Thu, 18 Oct 2001 08:45:32 -0500 Subject: [Idle-dev] http://idlefork.sourceforge.net/ links In-Reply-To: <3BCEDAD4.1F17394A@sara.nl> Message-ID: Works for me. I think SourceForge was down for a bit this morning. --- Patrick K. O'Brien Orbtech "I am, therefore I think." -----Original Message----- From: idle-dev-admin@python.org [mailto:idle-dev-admin@python.org]On Behalf Of Rob Veldhuyzen van Zanten Sent: Thursday, October 18, 2001 8:36 AM To: idle-dev@python.org Subject: [Idle-dev] http://idlefork.sourceforge.net/ links Many links on webpage http://idlefork.sourceforge.net/ are dead as http://sourceforge.net/ is not accessable. - Rob V. van Zanten _______________________________________________ IDLE-dev mailing list IDLE-dev@python.org http://mail.python.org/mailman/listinfo/idle-dev From guido@python.org Thu Oct 18 14:40:40 2001 From: guido@python.org (Guido van Rossum) Date: Thu, 18 Oct 2001 09:40:40 -0400 Subject: [Idle-dev] http://idlefork.sourceforge.net/ links In-Reply-To: Your message of "Thu, 18 Oct 2001 15:36:20 +0200." <3BCEDAD4.1F17394A@sara.nl> References: <3BCEDAD4.1F17394A@sara.nl> Message-ID: <200110181340.JAA32603@cj20424-a.reston1.va.home.com> > Many links on webpage http://idlefork.sourceforge.net/ > are dead as http://sourceforge.net/ is not accessable. > > - Rob V. van Zanten Hi, Rob! This must have been a temporary outage. Right now I can reach http://sourceforge.net/ just fine. --Guido van Rossum (home page: http://www.python.org/~guido/) From elguavas@users.sourceforge.net Tue Oct 23 11:42:14 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Tue, 23 Oct 2001 03:42:14 -0700 Subject: [Idle-dev] CVS: idle config-main.def,1.1,1.2 configDialog.py,1.10,1.11 configHandler.py,1.1,1.2 Message-ID: Update of /cvsroot/idlefork/idle In directory usw-pr-cvs1:/tmp/cvs-serv29303 Modified Files: config-main.def configDialog.py configHandler.py Log Message: font/tabs config dialog page now reads its data from the config file Index: config-main.def =================================================================== RCS file: /cvsroot/idlefork/idle/config-main.def,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** config-main.def 2001/09/24 09:43:17 1.1 --- config-main.def 2001/10/23 10:42:12 1.2 *************** *** 18,22 **** # ~/.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 --- 18,21 ---- *************** *** 30,35 **** --- 29,51 ---- [General] run-in-separate-process= 1 + help-browser= "" + [HelpFiles] + idle="IDLE _Help","" + python="_Python Documentation","" + #additional help sources + 1= + 2= + 3= + 4= + 5= + 6= + 7= + 8= + 9= + 10= + [EditorWindow] + editor-on-startup= 0 width= 80 height= 24 Index: configDialog.py =================================================================== RCS file: /cvsroot/idlefork/idle/configDialog.py,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -r1.10 -r1.11 *** configDialog.py 2001/09/24 09:43:17 1.10 --- configDialog.py 2001/10/23 10:42:12 1.11 *************** *** 44,47 **** --- 44,50 ---- self.bind('',self.ChangePageBinding) #self.LoadOptMenuHighlightTarget() + + self.LoadConfigs() + self.wait_window() *************** *** 122,127 **** self.labelTestSample.update() ! def SetFontSample(self,event): ! self.newFont.config(size=self.fontSize.get(),weight=NORMAL, family=self.listFontName.get(self.listFontName.curselection()[0])) --- 125,133 ---- self.labelTestSample.update() ! def SetFontSampleBinding(self,event): ! self.SetFontSample() ! ! def SetFontSample(self): ! self.editFont.config(size=self.fontSize.get(),weight=NORMAL, family=self.listFontName.get(self.listFontName.curselection()[0])) *************** *** 180,184 **** self.tabCols=IntVar() self.indentType=IntVar() ! self.newFont=tkFont.Font(self,('courier',12,'normal')) ##widget creation #body frame --- 186,190 ---- self.tabCols=IntVar() self.indentType=IntVar() ! self.editFont=tkFont.Font(self,('courier',12,'normal')) ##widget creation #body frame *************** *** 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) --- 201,207 ---- self.listFontName=Listbox(frameFontName,height=5,takefocus=FALSE, exportselection=FALSE) ! self.listFontName.bind('<>',self.SetFontSampleBinding) scrollFont=Scrollbar(frameFontName) ! #self.LoadFontList() scrollFont.config(command=self.listFontName.yview) self.listFontName.config(yscrollcommand=scrollFont.set) *************** *** 203,207 **** 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) --- 209,213 ---- sizes=('10','11','12','13','14','16','18','20','22') args=(frameFontSize,self.fontSize)+sizes ! keyArgs={'command':self.SetFontSampleBinding} optFontSize=apply(OptionMenu,args,keyArgs) #optFontSize.bind('<>',self.SetFontSample) *************** *** 209,213 **** self.labelFontSample=Label(frameFontSample, text='AaBbCcDdEe\nFfGgHhIiJjK\n1234567890\n#:+=(){}[]', ! justify=LEFT,font=self.newFont) #frameIndent labelIndentTitle=Label(frameIndent,text='Set Indentation Defaults') --- 215,219 ---- self.labelFontSample=Label(frameFontSample, text='AaBbCcDdEe\nFfGgHhIiJjK\n1234567890\n#:+=(){}[]', ! justify=LEFT,font=self.editFont) #frameIndent labelIndentTitle=Label(frameIndent,text='Set Indentation Defaults') *************** *** 217,223 **** text='Choose indentation type :') radioUseSpaces=Radiobutton(frameIndentType,variable=self.indentType, ! value=0,text='Tab key inserts spaces') radioUseTabs=Radiobutton(frameIndentType,variable=self.indentType, ! value=1,text='Tab key inserts tabs') labelIndentSizeTitle=Label(frameIndentSize, text='Choose indentation size :') --- 223,229 ---- text='Choose indentation type :') radioUseSpaces=Radiobutton(frameIndentType,variable=self.indentType, ! value=1,text='Tab key inserts spaces') radioUseTabs=Radiobutton(frameIndentType,variable=self.indentType, ! value=0,text='Tab key inserts tabs') labelIndentSizeTitle=Label(frameIndentSize, text='Choose indentation size :') *************** *** 504,517 **** 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): --- 510,544 ---- return frame ! def LoadFontCfg(self): ! ##base editor font selection list fonts=list(tkFont.families(self)) fonts.sort() for font in fonts: self.listFontName.insert(END,font) ! configuredFont=idleConf.GetDefault('main','EditorWindow','font', ! default='courier') ! if configuredFont in fonts: ! currentFontIndex=fonts.index(configuredFont) ! self.listFontName.see(currentFontIndex) ! self.listFontName.select_set(currentFontIndex) ! ##font size dropdown ! fontSize=idleConf.GetDefault('main','EditorWindow','font-size',default='12') ! self.fontSize.set(fontSize) ! ##font sample ! self.SetFontSample() + def LoadTabCfg(self): + ##indent type radibuttons + spaceIndent=idleConf.GetDefault('main','Indent','use-spaces', + default=1,type='bool') + self.indentType.set(spaceIndent) + ##indent sizes + spaceNum=idleConf.GetDefault('main','Indent','num-spaces', + default=4,type='int') + tabCols=idleConf.GetDefault('main','Indent','tab-cols', + default=4,type='int') + self.spaceNum.set(spaceNum) + self.tabCols.set(tabCols) + #def LoadOptionMenu(self, optMenu, optList, optVar, optVal=None, # command=None): *************** *** 563,567 **** --- 590,610 ---- optVar.set(optList[0]) + 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() + ### highlighting page + ### keys page + ### help page + ### general page + def SaveConfigs(self): + """ + save configuration changes to user config files. + """ pass Index: configHandler.py =================================================================== RCS file: /cvsroot/idlefork/idle/configHandler.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** configHandler.py 2001/09/24 09:43:17 1.1 --- configHandler.py 2001/10/23 10:42:12 1.2 *************** *** 22,48 **** 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 --- 22,50 ---- ConfigParser.__init__(self,defaults=cfgDefaults) ! # def GetInt(self, section, option, *kw): ! # """ ! # Get an option value as an integer ! # """ ! # return self.Get(section, option, type='int', *kw) ! # ! # def GetBool(self, section, option, **kw): ! # """ ! # Get an option value as a boolean ! # """ ! # return self.Get(section, option, type='bool', *kw) ! # def Get(self, section, option, raw=0, vars=None, default=None, ! # type=None): ! def Get(self, section, option, 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.getboolean elif type=='int': getVal=self.getint else: getVal=self.get if self.has_option(section,option): ! #return getVal(section, option, raw, vars) ! return getVal(section, option) else: return default *************** *** 136,139 **** --- 138,158 ---- self.defaultCfg[cfgType]=IdleConfParser(defCfgFiles[cfgType]) self.userCfg[cfgType]=IdleUserConfParser(usrCfgFiles[cfgType]) + + def GetDefault(self, configType, section, option, default=None, type=None): + """ + 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 + either the user or the default configuration. + configType must be one of ('main','extensions','highlight','keys') + """ + if self.userCfg[configType].has_option(section,option): + return self.userCfg[configType].Get(section, option, type=type) + elif self.defaultCfg[configType].has_option(section,option): + return self.defaultCfg[configType].Get(section, option, type=type) + else: + return default def LoadCfgFiles(self): From noreply@sourceforge.net Tue Oct 23 20:25:05 2001 From: noreply@sourceforge.net (noreply@sourceforge.net) Date: Tue, 23 Oct 2001 12:25:05 -0700 Subject: [Idle-dev] [ idlefork-Bugs-474215 ] ImportError: No module named warnings Message-ID: Bugs item #474215, was opened at 2001-10-23 12:25 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=109579&aid=474215&group_id=9579 Category: None Group: None Status: Open Resolution: None Priority: 5 Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: ImportError: No module named warnings Initial Comment: I just downloaded idlefork-0.8.1 and tried to startup idle: >>>idlefork-0.8.1/idle Traceback (most recent call last): File "/lib/python/idlefork-0.8.1/idle", line 3, in ? import PyShell File "/lib/python/idlefork-0.8.1/PyShell.py", line 32, in ? import warnings ImportError: No module named warnings Indeed, there is no "warnings" module present and my current installed idle (idle-0.5) does not have this. Commenting out the offending import statement allowed idle to start up, but consequences are unknown. ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=109579&aid=474215&group_id=9579 From noreply@sourceforge.net Wed Oct 24 03:03:08 2001 From: noreply@sourceforge.net (noreply@sourceforge.net) Date: Tue, 23 Oct 2001 19:03:08 -0700 Subject: [Idle-dev] [ idlefork-Bugs-474215 ] ImportError: No module named warnings Message-ID: Bugs item #474215, was opened at 2001-10-23 12:25 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=109579&aid=474215&group_id=9579 Category: None Group: None >Status: Closed >Resolution: Invalid Priority: 5 Submitted By: Nobody/Anonymous (nobody) >Assigned to: Stephen M. Gava (elguavas) Summary: ImportError: No module named warnings Initial Comment: I just downloaded idlefork-0.8.1 and tried to startup idle: >>>idlefork-0.8.1/idle Traceback (most recent call last): File "/lib/python/idlefork-0.8.1/idle", line 3, in ? import PyShell File "/lib/python/idlefork-0.8.1/PyShell.py", line 32, in ? import warnings ImportError: No module named warnings Indeed, there is no "warnings" module present and my current installed idle (idle-0.5) does not have this. Commenting out the offending import statement allowed idle to start up, but consequences are unknown. ---------------------------------------------------------------------- >Comment By: Stephen M. Gava (elguavas) Date: 2001-10-23 19:03 Message: Logged In: YES user_id=75867 The warnings module is a part of python >= 2.1 . INSTALL.txt included in the idlefork distribution clearly states that python 2.1 or better is required to run idlefork. Please read the docs before submitting bug reports, they're short! ;^) ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=109579&aid=474215&group_id=9579 From teyc@antefon.com Wed Oct 24 08:49:57 2001 From: teyc@antefon.com (Chui Tey) Date: Wed, 24 Oct 2001 17:49:57 +1000 Subject: [Idle-dev] Evaluating the two remote interpreter implementations Message-ID: <003701c15c60$7b5b95a0$f200a8c0@chui> Just moving things along: I had a look at the two implementations: one by D.Scherer and the other by Guido. Functionally, these two implementations are identical. The code base by Guido is about 1/3 shorter, and I personally find easier to grok and extend to implement a debugging instance. There is a small change required to make Guido's implementation work on Windows, namely to use AF_INET intead of AF_UNIX sockets. We can probably use Win32pipe too, if the user doesn't have the network drivers installed. We need to get a decision made on which way to go forward so that development can proceed. I may have some spare time to hack on this. Chui Tey From elguavas@users.sourceforge.net Wed Oct 24 10:03:33 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Wed, 24 Oct 2001 19:03:33 +1000 Subject: [Idle-dev] Evaluating the two remote interpreter implementations In-Reply-To: <003701c15c60$7b5b95a0$f200a8c0@chui> References: <003701c15c60$7b5b95a0$f200a8c0@chui> Message-ID: <200110240903.f9O93jJ12818@mail016.syd.optusnet.com.au> Chui Tey wrote: > I had a look at the two implementations: one by D.Scherer and the other by > Guido. > > Functionally, these two implementations are identical. > > The code base by Guido is about 1/3 shorter, and I personally find easier > to grok and extend to implement a debugging instance. > There is a small change required to make Guido's implementation work on > Windows, namely to use AF_INET intead of AF_UNIX sockets. > We can probably use Win32pipe too, if the user doesn't have the network > drivers installed. > > We need to get a decision made on which way to go forward so that > development can proceed. I may have some spare time to hack on this. Hi Chui. Well, if you have the time and inclination to work on this then you've already made the decision. ;^) I've been looking for someone who wanted to work on the execution in a remote process stuff since we got the ball rolling again on idlefork in July, but until now no-one has volunterred their time, so, congratulations, if do you want to hack on it now, let me know and I'll make you a developer on idlefork so you can have proper cvs access. Please consider coming on board for this as I don't have the extra time at present to work on this aspect of idlefork and the new configuration implementation at the same time, so if it ends up being down to me alone work on the remote execution stuff won't start until after I finish the config stuff. As I've mentionned previously on the list these are the two things that I want working properly (which means remote execution *with* debugging :) before we make the next idlefork release(s), and I'd really welcome your help. If you do decide to work on this now then the fact that you find Guido's code more concise and easier to follow for the modifications and improvements you will need to make means that this is the code we will use, and step one for you will be incorporating his version into idlefork. Best wishes, Stephen. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From guido@python.org Wed Oct 24 13:46:59 2001 From: guido@python.org (Guido van Rossum) Date: Wed, 24 Oct 2001 08:46:59 -0400 Subject: [Idle-dev] Evaluating the two remote interpreter implementations In-Reply-To: Your message of "Wed, 24 Oct 2001 17:49:57 +1000." <003701c15c60$7b5b95a0$f200a8c0@chui> References: <003701c15c60$7b5b95a0$f200a8c0@chui> Message-ID: <200110241246.IAA09647@cj20424-a.reston1.va.home.com> > Just moving things along: > > I had a look at the two implementations: one by D.Scherer and the other by > Guido. > > Functionally, these two implementations are identical. > > The code base by Guido is about 1/3 shorter, and I personally find easier to > grok and extend to implement a debugging instance. > There is a small change required to make Guido's implementation work on > Windows, namely to use AF_INET intead of AF_UNIX sockets. > We can probably use Win32pipe too, if the user doesn't have the network > drivers installed. > > We need to get a decision made on which way to go forward so that > development can proceed. I may have some spare time to hack on this. > > Chui Tey Plus, my version already supports the Python Shell window. :-) --Guido van Rossum (home page: http://www.python.org/~guido/) From elguavas@users.sourceforge.net Fri Oct 26 07:49:16 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Thu, 25 Oct 2001 23:49:16 -0700 Subject: [Idle-dev] CVS: idle dynOptionMenuWidget.py,NONE,1.1 Message-ID: Update of /cvsroot/idlefork/idle In directory usw-pr-cvs1:/tmp/cvs-serv21922 Added Files: dynOptionMenuWidget.py Log Message: dynamic option menu widget. --- NEW FILE: dynOptionMenuWidget.py --- ##---------------------------------------------------------------------------## ## ## idle - tkinter OptionMenu widget modified to allow dynamic ## reconfiguration of menu. ## elguavas ## ##---------------------------------------------------------------------------## """ OptionMenu widget modified to allow dynamic menu reconfiguration """ from Tkinter import OptionMenu from Tkinter import _setit class DynOptionMenu(OptionMenu): """ OptionMenu widget that allows dynamic menu reconfiguration """ def __init__(self, master, variable, value, *values, **kwargs): OptionMenu.__init__(self, master, variable, value, *values, **kwargs) #self.menu=self['menu'] self.variable=variable self.command=kwargs.get('command') def SetMenu(self,valueList,value): """ 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 """ self['menu'].delete(0,'end') for item in valueList: self['menu'].add_command(label=item, command=_setit(self.variable,item,self.command)) self.variable.set(value) From elguavas@users.sourceforge.net Fri Oct 26 07:50:56 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Thu, 25 Oct 2001 23:50:56 -0700 Subject: [Idle-dev] CVS: idle configHandler.py,1.2,1.3 Message-ID: Update of /cvsroot/idlefork/idle In directory usw-pr-cvs1:/tmp/cvs-serv22877 Modified Files: configHandler.py Log Message: further work supporting reading config dialog values form config files. Index: configHandler.py =================================================================== RCS file: /cvsroot/idlefork/idle/configHandler.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** configHandler.py 2001/10/23 10:42:12 1.2 --- configHandler.py 2001/10/26 06:50:54 1.3 *************** *** 5,9 **** ## ##---------------------------------------------------------------------------## ! """Provides access to configuration information""" import os --- 5,11 ---- ## ##---------------------------------------------------------------------------## ! """ ! Provides access to configuration information ! """ import os *************** *** 22,39 **** ConfigParser.__init__(self,defaults=cfgDefaults) - # def GetInt(self, section, option, *kw): - # """ - # Get an option value as an integer - # """ - # return self.Get(section, option, type='int', *kw) - # - # def GetBool(self, section, option, **kw): - # """ - # Get an option value as a boolean - # """ - # return self.Get(section, option, type='bool', *kw) - - # def Get(self, section, option, raw=0, vars=None, default=None, - # type=None): def Get(self, section, option, default=None, type=None): """ --- 24,27 ---- *************** *** 50,57 **** return default - def GetSectionList(self): - # only provided for consistency - return self.sections() - def GetOptionList(self,section): """ --- 38,41 ---- *************** *** 139,143 **** self.userCfg[cfgType]=IdleUserConfParser(usrCfgFiles[cfgType]) ! def GetDefault(self, configType, section, option, default=None, type=None): """ Get an option value for given config type and given general --- 123,127 ---- self.userCfg[cfgType]=IdleUserConfParser(usrCfgFiles[cfgType]) ! def GetOption(self, configType, section, option, default=None, type=None): """ Get an option value for given config type and given general *************** *** 155,158 **** --- 139,178 ---- else: return default + + def GetSectionList(self, configSet, configType): + """ + Get a list of sections from either the user or default config for + the given config type. + configSet must be either 'user' or 'default' + configType must be one of ('extensions','highlight','keys') + """ + if not (configType in ('extensions','highlight','keys')): + raise 'Invalid configType specified' + if configSet == 'user': + cfgParser=self.userCfg[configType] + elif configSet == 'default': + cfgParser=self.defaultCfg[configType] + else: + raise 'Invalid configSet specified' + + return cfgParser.sections() + + + def GetTheme(self, name=None): + """ + Gets the requested theme or returns a final fallback theme in case + one can't be obtained from either the user or default config files. + """ + pass + + + def GetKeys(self, name=None): + """ + Gets the requested keybindings or returns a final fallback keybinding + set in case one can't be obtained from either the user or default + config files. + """ + pass + def LoadCfgFiles(self): From elguavas@users.sourceforge.net Fri Oct 26 07:47:11 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Thu, 25 Oct 2001 23:47:11 -0700 Subject: [Idle-dev] CVS: idle configDialog.py,1.11,1.12 Message-ID: Update of /cvsroot/idlefork/idle In directory usw-pr-cvs1:/tmp/cvs-serv21407 Modified Files: configDialog.py Log Message: further work on loading config dialog values from the config files Index: configDialog.py =================================================================== RCS file: /cvsroot/idlefork/idle/configDialog.py,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -r1.11 -r1.12 *** configDialog.py 2001/10/23 10:42:12 1.11 --- configDialog.py 2001/10/26 06:47:09 1.12 *************** *** 12,15 **** --- 12,16 ---- from configHandler import idleConf + from dynOptionMenuWidget import DynOptionMenu class ConfigDialog(Toplevel): *************** *** 203,215 **** self.listFontName.bind('<>',self.SetFontSampleBinding) scrollFont=Scrollbar(frameFontName) - #self.LoadFontList() scrollFont.config(command=self.listFontName.yview) self.listFontName.config(yscrollcommand=scrollFont.set) labelFontSizeTitle=Label(frameFontSize,text='Size :') ! sizes=('10','11','12','13','14','16','18','20','22') ! args=(frameFontSize,self.fontSize)+sizes ! keyArgs={'command':self.SetFontSampleBinding} ! optFontSize=apply(OptionMenu,args,keyArgs) ! #optFontSize.bind('<>',self.SetFontSample) frameFontSample=Frame(frameFont,relief=SOLID,borderwidth=1) self.labelFontSample=Label(frameFontSample, --- 204,212 ---- self.listFontName.bind('<>',self.SetFontSampleBinding) scrollFont=Scrollbar(frameFontName) scrollFont.config(command=self.listFontName.yview) self.listFontName.config(yscrollcommand=scrollFont.set) labelFontSizeTitle=Label(frameFontSize,text='Size :') ! self.optMenuFontSize=DynOptionMenu(frameFontSize,self.fontSize,None, ! command=self.SetFontSampleBinding) frameFontSample=Frame(frameFont,relief=SOLID,borderwidth=1) self.labelFontSample=Label(frameFontSample, *************** *** 249,253 **** scrollFont.pack(side=LEFT,fill=Y) labelFontSizeTitle.pack(side=TOP,anchor=W) ! optFontSize.pack(side=TOP,anchor=W,fill=X) frameFontSample.pack(side=TOP,padx=5,pady=5,expand=TRUE,fill=BOTH) self.labelFontSample.pack(expand=TRUE,fill=BOTH) --- 246,250 ---- scrollFont.pack(side=LEFT,fill=Y) labelFontSizeTitle.pack(side=TOP,anchor=W) ! self.optMenuFontSize.pack(side=TOP,anchor=W,fill=X) frameFontSample.pack(side=TOP,padx=5,pady=5,expand=TRUE,fill=BOTH) self.labelFontSample.pack(expand=TRUE,fill=BOTH) *************** *** 516,520 **** for font in fonts: self.listFontName.insert(END,font) ! configuredFont=idleConf.GetDefault('main','EditorWindow','font', default='courier') if configuredFont in fonts: --- 513,517 ---- for font in fonts: self.listFontName.insert(END,font) ! configuredFont=idleConf.GetOption('main','EditorWindow','font', default='courier') if configuredFont in fonts: *************** *** 523,528 **** self.listFontName.select_set(currentFontIndex) ##font size dropdown ! fontSize=idleConf.GetDefault('main','EditorWindow','font-size',default='12') ! self.fontSize.set(fontSize) ##font sample self.SetFontSample() --- 520,526 ---- self.listFontName.select_set(currentFontIndex) ##font size dropdown ! fontSize=idleConf.GetOption('main','EditorWindow','font-size',default='12') ! self.optMenuFontSize.SetMenu(('10','11','12','13','14', ! '16','18','20','22'),fontSize ) ##font sample self.SetFontSample() *************** *** 530,592 **** def LoadTabCfg(self): ##indent type radibuttons ! spaceIndent=idleConf.GetDefault('main','Indent','use-spaces', default=1,type='bool') self.indentType.set(spaceIndent) ##indent sizes ! spaceNum=idleConf.GetDefault('main','Indent','num-spaces', default=4,type='int') ! tabCols=idleConf.GetDefault('main','Indent','tab-cols', default=4,type='int') self.spaceNum.set(spaceNum) self.tabCols.set(tabCols) ! #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 LoadConfigs(self): --- 528,545 ---- def LoadTabCfg(self): ##indent type radibuttons ! spaceIndent=idleConf.GetOption('main','Indent','use-spaces', default=1,type='bool') self.indentType.set(spaceIndent) ##indent sizes ! spaceNum=idleConf.GetOption('main','Indent','num-spaces', default=4,type='int') ! tabCols=idleConf.GetOption('main','Indent','tab-cols', default=4,type='int') self.spaceNum.set(spaceNum) self.tabCols.set(tabCols) ! def LoadThemeLists(self): ! ##default themes ! pass def LoadConfigs(self): *************** *** 599,602 **** --- 552,556 ---- self.LoadTabCfg() ### highlighting page + self.LoadThemeLists() ### keys page ### help page From webmaster@garymgordon.com Fri Oct 26 15:30:21 2001 From: webmaster@garymgordon.com (Gary M. Gordon) Date: Fri, 26 Oct 2001 09:30:21 -0500 Subject: [Idle-dev] Which one of our FREE website enhancements would you like? Message-ID: Gary M. Gordon - FREE Website Enhancement Promotional Offer

          FREE WEBSITE ENHANCEMENT OFFER
                  yes, ... absolutely FREE
!

                (No contracts!   No commitments!   No cost!)
          - Links to sample enhancements are provided below. -

As a way to introduce our company to you, we are going to give
you an enhancement that you can add to your website ............
                                          absolutely FREE!

===================================================
 
   Just select from one of our FREE website enhancement features
   that are listed below.  There are 'No contracts required!' ..
There are ...
  • No commitments!
    No costs!
    and ...
    we will also set everything up ... for FREE!
   Let me introduce myself ...
 
   My name is Gary Gordon. I am the owner of Gary M. Gordon, LLC
   a WEB DEVELOPMENT COMPANY which provides complete solutions
   for the needs of small to large businesses. (No project is ever to
   small or to large.)  If you need a 'fix' or 'enhancement' added to
   a current website ... that's perfect.  If you need to have a new
   website developed from scratch ... that's great.   We do it all!
 
 
   FREE WEBSITE ENHANCEMENTS YOU CAN CHOOSE FROM:
 
   (Simply click on the 'http:// link' provided below the title of
   each item to view just a sample of the FREE enhancement.)
 
   1)  FREE 'Macromedia Flash (.SWF FORMAT) Animation'
http://www.garymgordon.com/flash_samples/demo/logo_flash_sample.html
Simply provide us with any text, logo and/or photo(s) that you would
like to have animated and developed as a FLASH (.SWF) ANIMATION.

   2)  FREE 'Cursor Trailer - Animated Clock (Javascript)'
http://www.garymgordon.com/javascript_samples/clock_cursor/index.html
We will insert and set up this attractive and eye catching feature to
work on any webpage of your website.

   3)  FREE 'your choice of any of the following Javascripts'
We will insert and set them up to work in any webpage on your website'.
 
       a)    Page Content Management that automatically allows content
       to be displayed on a page - from and through a specified date, then
       it is automatically removed from the page.
http://www.garymgordon.com/javascript_samples/content_mgmt/index.html
 
       b)    Auto Scroller for Text and Images.  This provides a
       scrolling message that can include text and images (with links
       to other pages or websites).
http://www.garymgordon.com/javascript_samples/scroller_box/index.html
 
       c)    Navigational Menu System that allows you to utilize a drop
       down menu that lists any number of pages, websites, etc. It is
       a convenient and space saving way to add lots of links within
       a small place on a webpage.
http://www.garymgordon.com/javascript_samples/dropdownmenu/index.html
 

Now ... you can choose from any of the above website enhancements
absolutely FREE!
 
Then, simply contact us and we will set everything up for you - NO CHARGE!
 
(This is simply our way of introducing our company to you.)
 
E-mail us at:   webmaster@garymgordon.com
or
Phone us at:    1-856-482-8320  (New Jersey, USA)

===================================================
 
              To request your FREE website enhancement,
              please include the following two lines of
              information in the BODY of your reply email:
 
                  FREE WEBSITE ENHANCEMENT OFFER
                                      WE-149-359-1001
 
                  Also provide us with the following:
 
                  1)  Your company name and address.
                  2)  Your first and last name.
                  3)  Your title/position with the company.
                  4)  Your telephone number - and the best
                        time to reach you by phone.
                  5)  Your website URL (if you have one).
 
                  We will email or call you back shortly to discuss
                  the free enhancement of your choice.
 
===================================================
 
    OUR CORPORATE INFORMATION:
 
    Gary M. Gordon, LLC
    - A Global Web Development Corporation
    421 Jamaica Drive
    Cherry Hill, New Jersey  08002
 
    (Available -  7 days a week.)
 
         E-mail ::  webmaster@garymgordon.com
         Phone  ::  856-482-8320
         Fax    ::  801-858-4271
 

    Background Information of GARY M. GORDON (Owner):
 
    Certified Senior Web Developer since 1996
    Certified Web Master Instructor since 1999
    20+ years experience in Sales/Marketing/Graphic Design
    and Development
 
  
    Additional Comments:
 
    Gary M. Gordon, LLC (Web Development Services) was created
    in an effort to provide quality 'web development' work on a
    world-wide scale through the joint efforts of a comprehensive
    and world-wide network (that includes a selected group of
    professional and certified application programmers, website
    developers, graphic designers, etc. - from the USA, Canada,
    India, Romania, Japan, Australia, and others).
 
                    ALL OF OUR WORK IS PROVIDED
              WITH A 100% SATISFACTION GUARANTEE!
 
    So, if you're not satisfied with our work, ... you don't pay.
    It's as simple as that!
 
    Please feel free to visit our website or email us at your
    convenience, and we will be happy to help you in any way
    possible.
 

    * Certain restrictions or requirements may apply to all work
    requests, free offers, etc.  Please ask for complete details.
 
    Free offers are also limited to one per website domain and/or
    company.  Gary M. Gordon, LLC reserves the right to discontinue,
    change, or modify this free offer at any time without notice.
 



If your browser doesn't support the display of HTML, you can access the same information as shown above by following the link to take advange of our Free Website Enhancement Offer at: http://www.garymgordon.com/services.html (then, on this page, look for the link that says "Free Current Promotional Offer).


-------------------------------------------------------------------------------------
If you have joined Gary M. Gordon, LLC by accident or someone else has joined you without your permission,
or if you ever want to remove yourself from Gary M. Gordon, LLC, simply visit:
http://www.garymgordon.com/easylist/easylist.cgi?action=unsubscribe&submitemail=idle-dev@python.org
and you will be automatically removed.

From alecontenti@hotmail.com Sat Oct 27 01:27:45 2001 From: alecontenti@hotmail.com (Alessandro Contenti) Date: Fri, 26 Oct 2001 17:27:45 -0700 Subject: [Idle-dev] Python interpreter and standard output Message-ID: Is there a way I can force the Python interpreter to write on the stdout? Thanks. Ale. _________________________________________________________________ Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp From noreply@sourceforge.net Sun Oct 28 09:57:32 2001 From: noreply@sourceforge.net (noreply@sourceforge.net) Date: Sun, 28 Oct 2001 01:57:32 -0800 Subject: [Idle-dev] [ idlefork-Bugs-440383 ] Idle Hangs During Input Message-ID: Bugs item #440383, was opened at 2001-07-11 05:24 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=109579&aid=440383&group_id=9579 Category: None Group: None Status: Open Resolution: None Priority: 5 Submitted By: Kurt B. Kaiser (kbk) Assigned to: Nobody/Anonymous (nobody) Summary: Idle Hangs During Input Initial Comment: A bug report. --Guido van Rossum (home page: http://www.python.org/~guido/) ------- Forwarded Message Date: Mon, 02 Jul 2001 09:07:58 -0500 From: vze2f978@verizon.net To: guido@python.org Subject: IDLE issue--beeping and IDLE hangs If the window looks something like this: >>>(cursor is here) for x in range[w]: and you hit return, IDLE will stop responding, but beep continually until the computer is restarted. This is in Windows 2000. I'm not sure whether the cursor is before or after the invisible space after the ">>>"; the for statement is on the line AFTER the >>>. Don't know why the student used square braces either. ------- End of Forwarded Message ---------------------------------------------------------------------- Comment By: Chui Tey (teyc) Date: 2001-10-28 01:57 Message: Logged In: YES user_id=29167 I could not reproduce the error on the latest CVS checkout on Win98, using Python 2.1. If any one else still experiences the problem, please let me know, or I'll categorise it as being "not reproducible". ---------------------------------------------------------------------- Comment By: Kurt B. Kaiser (kbk) Date: 2001-07-11 05:26 Message: Logged In: YES user_id=149084 Confirmed on Windows 98 ---------------------------------------------------------------------- Comment By: Kurt B. Kaiser (kbk) Date: 2001-07-11 05:25 Message: Logged In: YES user_id=149084 Confirmed on Windows 98 ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=109579&aid=440383&group_id=9579 From elguavas@users.sourceforge.net Mon Oct 29 00:23:52 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Sun, 28 Oct 2001 16:23:52 -0800 Subject: [Idle-dev] CVS: website tasklist.txt,1.1,1.2 Message-ID: Update of /cvsroot/idlefork/website In directory usw-pr-cvs1:/tmp/cvs-serv13646 Modified Files: tasklist.txt Log Message: updated Index: tasklist.txt =================================================================== RCS file: /cvsroot/idlefork/website/tasklist.txt,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** tasklist.txt 2001/07/24 12:33:20 1.1 --- tasklist.txt 2001/10/29 00:23:50 1.2 *************** *** 8,12 **** CVS Maintenance ! Weekly (approx.) merges from stable IDLE. Kurt B. Kaiser ------------------------------------------------------------------ Documentation --- 8,12 ---- CVS Maintenance ! Weekly (approx.) merges from stable IDLE. ? ------------------------------------------------------------------ Documentation *************** *** 20,36 **** Separate Process Execution for programs being developed in IDLE - (to be worked on in a branch) ! Compare / evaluate David Scherer (currently ? in IDLEfork) v. GvR code for this and implement best solution. ! Solve rpc security problems. ? ! (evaluate xml rpc?) ? ------------------------------------------------------------------ Stabilisation ! Finish initial merge cleanup / fixup to ? stable state. Get debugging working! --- 20,36 ---- Separate Process Execution for programs being developed in IDLE ! Compare / evaluate David Scherer (currently Chui Tey in IDLEfork) v. GvR code for this and implement best solution. ! Solve rpc security problems. Chui Tey ! Make sure things work properly with shell ! window and debugging. Chui Tey ------------------------------------------------------------------ Stabilisation ! Finish initial merge cleanup / fixup to Everyone stable state. Get debugging working! From elguavas@users.sourceforge.net Mon Oct 29 08:05:36 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Mon, 29 Oct 2001 00:05:36 -0800 Subject: [Idle-dev] CVS: idle config-main.def,1.2,1.3 configDialog.py,1.12,1.13 configHandler.py,1.3,1.4 dynOptionMenuWidget.py,1.1,1.2 Message-ID: Update of /cvsroot/idlefork/idle In directory usw-pr-cvs1:/tmp/cvs-serv17507 Modified Files: config-main.def configDialog.py configHandler.py dynOptionMenuWidget.py Log Message: more of config dialog reading from files Index: config-main.def =================================================================== RCS file: /cvsroot/idlefork/idle/config-main.def,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** config-main.def 2001/10/23 10:42:12 1.2 --- config-main.def 2001/10/29 08:05:34 1.3 *************** *** 60,68 **** [Theme] user= 0 ! name= "IDLE Classic New" [Keys] user= 0 ! name= "IDLE Classic - windows" [RecentFiles] --- 60,68 ---- [Theme] user= 0 ! name= IDLE Classic New [Keys] user= 0 ! name= IDLE Classic - windows [RecentFiles] Index: configDialog.py =================================================================== RCS file: /cvsroot/idlefork/idle/configDialog.py,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -r1.12 -r1.13 *** configDialog.py 2001/10/26 06:47:09 1.12 --- configDialog.py 2001/10/29 08:05:34 1.13 *************** *** 132,135 **** --- 132,141 ---- self.editFont.config(size=self.fontSize.get(),weight=NORMAL, family=self.listFontName.get(self.listFontName.curselection()[0])) + + def SetHighlightSampleBinding(self,event): + self.SetHighlightSample() + + def SetHighlightSample(self): + pass def CreateWidgets(self): *************** *** 288,293 **** 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) --- 294,299 ---- labelCustomTitle=Label(frameCustom,text='Set Custom Highlighting') labelTargetTitle=Label(self.frameHighlightTarget,text='for : ') ! self.optMenuHighlightTarget=DynOptionMenu(self.frameHighlightTarget, ! self.highlightTarget,None,command=None) buttonSetColour=Button(self.frameColourSet,text='Set Colour', command=self.GetColour) *************** *** 309,325 **** labelThemeTitle=Label(frameTheme,text='Select a Highlighting Theme') labelTypeTitle=Label(frameTheme,text='Select : ') ! radioThemeBuiltin=Radiobutton(frameTheme,variable=self.themeType, value=0,command=self.SetThemeType,text='a Built-in Theme') ! radioThemeCustom=Radiobutton(frameTheme,variable=self.themeType, value=1,command=self.SetThemeType,text='a Custom Theme') ! self.optMenuThemeBuiltin=OptionMenu(frameTheme, ! self.builtinTheme,'test builtin junk','test builtin junk 2') ! self.builtinTheme.set('test builtin junk') ! self.optMenuThemeCustom=OptionMenu(frameTheme, ! self.customTheme,'test custom junk','test custom junk 2') ! self.customTheme.set('test custom junk') ! self.themeType.set(0) self.buttonDeleteCustomTheme=Button(frameTheme,text='Delete Custom Theme') ! self.SetThemeType() ##widget packing #body --- 315,329 ---- labelThemeTitle=Label(frameTheme,text='Select a Highlighting Theme') labelTypeTitle=Label(frameTheme,text='Select : ') ! self.radioThemeBuiltin=Radiobutton(frameTheme,variable=self.themeType, value=0,command=self.SetThemeType,text='a Built-in Theme') ! self.radioThemeCustom=Radiobutton(frameTheme,variable=self.themeType, value=1,command=self.SetThemeType,text='a Custom Theme') ! self.optMenuThemeBuiltin=DynOptionMenu(frameTheme, ! self.builtinTheme,None,command=self.SetHighlightSampleBinding) ! self.optMenuThemeCustom=DynOptionMenu(frameTheme, ! self.customTheme,None,command=self.SetHighlightSampleBinding) ! # self.themeType.set(0) self.buttonDeleteCustomTheme=Button(frameTheme,text='Delete Custom Theme') ! # self.SetThemeType() ##widget packing #body *************** *** 345,350 **** labelThemeTitle.pack(side=TOP,anchor=W,padx=5,pady=5) labelTypeTitle.pack(side=TOP,anchor=W,padx=5,pady=5) ! radioThemeBuiltin.pack(side=TOP,anchor=W,padx=5) ! radioThemeCustom.pack(side=TOP,anchor=W,padx=5,pady=2) self.optMenuThemeBuiltin.pack(side=TOP,fill=X,padx=5,pady=5) self.optMenuThemeCustom.pack(side=TOP,fill=X,anchor=W,padx=5,pady=5) --- 349,354 ---- labelThemeTitle.pack(side=TOP,anchor=W,padx=5,pady=5) labelTypeTitle.pack(side=TOP,anchor=W,padx=5,pady=5) ! self.radioThemeBuiltin.pack(side=TOP,anchor=W,padx=5) ! self.radioThemeCustom.pack(side=TOP,anchor=W,padx=5,pady=2) self.optMenuThemeBuiltin.pack(side=TOP,fill=X,padx=5,pady=5) self.optMenuThemeCustom.pack(side=TOP,fill=X,anchor=W,padx=5,pady=5) *************** *** 388,404 **** labelKeysTitle=Label(frameKeySets,text='Select a Key Set') labelTypeTitle=Label(frameKeySets,text='Select : ') ! radioKeysBuiltin=Radiobutton(frameKeySets,variable=self.keysType, value=0,command=self.SetKeysType,text='a Built-in Key Set') ! radioKeysCustom=Radiobutton(frameKeySets,variable=self.keysType, value=1,command=self.SetKeysType,text='a Custom Key Set') ! self.optMenuKeysBuiltin=OptionMenu(frameKeySets, ! self.builtinKeys,'test builtin junk','test builtin junk 2') ! self.builtinKeys.set('test builtin junk') ! self.optMenuKeysCustom=OptionMenu(frameKeySets, ! self.customKeys,'test custom junk','test custom junk 2') ! self.customKeys.set('test custom junk') ! self.keysType.set(0) self.buttonDeleteCustomKeys=Button(frameKeySets,text='Delete Custom Key Set') ! self.SetKeysType() ##widget packing #body --- 392,405 ---- labelKeysTitle=Label(frameKeySets,text='Select a Key Set') labelTypeTitle=Label(frameKeySets,text='Select : ') ! self.radioKeysBuiltin=Radiobutton(frameKeySets,variable=self.keysType, value=0,command=self.SetKeysType,text='a Built-in Key Set') ! self.radioKeysCustom=Radiobutton(frameKeySets,variable=self.keysType, value=1,command=self.SetKeysType,text='a Custom Key Set') ! self.optMenuKeysBuiltin=DynOptionMenu(frameKeySets, ! self.builtinKeys,None,command=None) ! self.optMenuKeysCustom=DynOptionMenu(frameKeySets, ! self.customKeys,None,command=None) self.buttonDeleteCustomKeys=Button(frameKeySets,text='Delete Custom Key Set') ! # self.SetKeysType() ##widget packing #body *************** *** 423,428 **** labelKeysTitle.pack(side=TOP,anchor=W,padx=5,pady=5) labelTypeTitle.pack(side=TOP,anchor=W,padx=5,pady=5) ! radioKeysBuiltin.pack(side=TOP,anchor=W,padx=5) ! radioKeysCustom.pack(side=TOP,anchor=W,padx=5,pady=2) self.optMenuKeysBuiltin.pack(side=TOP,fill=X,padx=5,pady=5) self.optMenuKeysCustom.pack(side=TOP,fill=X,anchor=W,padx=5,pady=5) --- 424,429 ---- labelKeysTitle.pack(side=TOP,anchor=W,padx=5,pady=5) labelTypeTitle.pack(side=TOP,anchor=W,padx=5,pady=5) ! self.radioKeysBuiltin.pack(side=TOP,anchor=W,padx=5) ! self.radioKeysCustom.pack(side=TOP,anchor=W,padx=5,pady=2) self.optMenuKeysBuiltin.pack(side=TOP,fill=X,padx=5,pady=5) self.optMenuKeysCustom.pack(side=TOP,fill=X,anchor=W,padx=5,pady=5) *************** *** 540,546 **** def LoadThemeLists(self): ! ##default themes ! pass ! def LoadConfigs(self): """ --- 541,587 ---- def LoadThemeLists(self): ! ##current theme type radiobutton ! self.themeType.set(idleConf.GetOption('main','Theme','user',type='int')) ! ##currently set theme ! currentOption=idleConf.GetOption('main','Theme','name') ! ##load option menus ! if self.themeType.get() == 0: #default theme selected ! itemList=idleConf.GetSectionList('default','highlight') ! self.optMenuThemeBuiltin.SetMenu(itemList,currentOption) ! itemList=idleConf.GetSectionList('user','highlight') ! if not itemList: ! self.radioThemeCustom.config(state=DISABLED) ! self.customTheme.set('- no custom themes -') ! else: ! self.optMenuThemeCustom.SetMenu(itemList,itemList[0]) ! elif self.themeType.get() == 1: #user theme selected ! itemList=idleConf.GetSectionList('user','highlight') ! self.optMenuThemeCustom.SetMenu(itemList,currentOption) ! itemList=idleConf.GetSectionList('default','highlight') ! self.optMenuThemeBuiltin.SetMenu(itemList,itemList[0]) ! self.SetThemeType() ! ! def LoadKeyLists(self): ! ##current keys type radiobutton ! self.keysType.set(idleConf.GetOption('main','Keys','user',type='int')) ! ##currently set keys ! currentOption=idleConf.GetOption('main','Keys','name') ! ##load option menus ! if self.keysType.get() == 0: #default theme selected ! itemList=idleConf.GetSectionList('default','keys') ! self.optMenuKeysBuiltin.SetMenu(itemList,currentOption) ! itemList=idleConf.GetSectionList('user','keys') ! if not itemList: ! self.radioKeysCustom.config(state=DISABLED) ! self.customKeys.set('- no custom keys -') ! else: ! self.optMenuKeysCustom.SetMenu(itemList,itemList[0]) ! elif self.keysType.get() == 1: #user theme selected ! itemList=idleConf.GetSectionList('user','keys') ! self.optMenuKeysCustom.SetMenu(itemList,currentOption) ! itemList=idleConf.GetSectionList('default','keys') ! self.optMenuKeysBuiltin.SetMenu(itemList,itemList[0]) ! self.SetKeysType() ! def LoadConfigs(self): """ *************** *** 554,557 **** --- 595,599 ---- self.LoadThemeLists() ### keys page + self.LoadKeyLists() ### help page ### general page Index: configHandler.py =================================================================== RCS file: /cvsroot/idlefork/idle/configHandler.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** configHandler.py 2001/10/26 06:50:54 1.3 --- configHandler.py 2001/10/29 08:05:34 1.4 *************** *** 29,35 **** If type is specified, return as type. """ ! if type=='bool': getVal=self.getboolean ! elif type=='int': getVal=self.getint ! else: getVal=self.get if self.has_option(section,option): #return getVal(section, option, raw, vars) --- 29,38 ---- If type is specified, return as type. """ ! if type=='bool': ! getVal=self.getboolean ! elif type=='int': ! getVal=self.getint ! else: ! getVal=self.get if self.has_option(section,option): #return getVal(section, option, raw, vars) *************** *** 166,170 **** pass - def GetKeys(self, name=None): """ --- 169,172 ---- *************** *** 174,178 **** """ pass - def LoadCfgFiles(self): --- 176,179 ---- Index: dynOptionMenuWidget.py =================================================================== RCS file: /cvsroot/idlefork/idle/dynOptionMenuWidget.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** dynOptionMenuWidget.py 2001/10/26 06:49:14 1.1 --- dynOptionMenuWidget.py 2001/10/29 08:05:34 1.2 *************** *** 22,26 **** self.command=kwargs.get('command') ! def SetMenu(self,valueList,value): """ clear and reload the menu with a new set of options. --- 22,26 ---- self.command=kwargs.get('command') ! def SetMenu(self,valueList,value=None): """ clear and reload the menu with a new set of options. *************** *** 32,34 **** self['menu'].add_command(label=item, command=_setit(self.variable,item,self.command)) ! self.variable.set(value) --- 32,35 ---- self['menu'].add_command(label=item, command=_setit(self.variable,item,self.command)) ! if value: ! self.variable.set(value) From elguavas@users.sourceforge.net Mon Oct 29 11:19:48 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Mon, 29 Oct 2001 03:19:48 -0800 Subject: [Idle-dev] CVS: idle configDialog.py,1.13,1.14 Message-ID: Update of /cvsroot/idlefork/idle In directory usw-pr-cvs1:/tmp/cvs-serv1056 Modified Files: configDialog.py Log Message: more loading from cfg files Index: configDialog.py =================================================================== RCS file: /cvsroot/idlefork/idle/configDialog.py,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -r1.13 -r1.14 *** configDialog.py 2001/10/29 08:05:34 1.13 --- configDialog.py 2001/10/29 11:19:46 1.14 *************** *** 113,116 **** --- 113,126 ---- self.buttonDeleteCustomKeys.config(state=NORMAL) + def SetFgBg(self): + if self.fgHilite.get()==0: + self.labelFontTypeTitle.config(state=DISABLED) + self.checkFontBold.config(state=DISABLED) + self.checkFontItalic.config(state=DISABLED) + elif self.fgHilite.get()==1: + self.labelFontTypeTitle.config(state=NORMAL) + self.checkFontBold.config(state=NORMAL) + self.checkFontItalic.config(state=NORMAL) + def GetColour(self): rgbTuplet, colourString = tkColorChooser.askcolor(parent=self, *************** *** 133,141 **** family=self.listFontName.get(self.listFontName.curselection()[0])) ! def SetHighlightSampleBinding(self,event): ! self.SetHighlightSample() ! def SetHighlightSample(self): ! pass def CreateWidgets(self): --- 143,168 ---- family=self.listFontName.get(self.listFontName.curselection()[0])) ! def SetHighlightTargetBinding(self,event): ! self.SetHighlightTarget() ! def SetHighlightTarget(self): ! if self.highlightTarget.get() in ('Cursor','Error Background'): ! #only bg colour selection is possible ! self.radioFg.config(state=DISABLED) ! self.radioBg.config(state=DISABLED) ! self.fgHilite.set(0) ! self.SetFgBg() ! elif self.highlightTarget.get() in ('Shell Foreground', ! 'Shell Stdout Foreground','Shell Stderr Foreground'): ! #fg and font style selection possible ! self.radioFg.config(state=DISABLED) ! self.radioBg.config(state=DISABLED) ! self.fgHilite.set(1) ! self.SetFgBg() ! else: #full fg/bg and font style selection possible ! self.radioFg.config(state=NORMAL) ! self.radioBg.config(state=NORMAL) ! self.fgHilite.set(1) #default to setting foreground properties ! self.SetFgBg() def CreateWidgets(self): *************** *** 274,277 **** --- 301,305 ---- self.builtinTheme=StringVar() self.customTheme=StringVar() + self.fgHilite=IntVar() self.colour=StringVar() self.fontName=StringVar() *************** *** 291,305 **** 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=DynOptionMenu(self.frameHighlightTarget, ! self.highlightTarget,None,command=None) ! buttonSetColour=Button(self.frameColourSet,text='Set Colour', command=self.GetColour) ! labelFontTitle=Label(frameFontSet,text='Set Font Style') ! checkFontBold=Checkbutton(frameFontSet,variable=self.fontBold, onvalue='Bold',offvalue='',text='Bold') ! checkFontItalic=Checkbutton(frameFontSet,variable=self.fontItalic, onvalue='Italic',offvalue='',text='Italic') self.labelTestSample=Label(self.frameHighlightSample,justify=LEFT,font=('courier',12,''), --- 319,339 ---- frameSet=Frame(frameCustom) self.frameColourSet=Frame(frameSet,relief=SOLID,borderwidth=1) + frameFgBg=Frame(frameCustom) frameFontSet=Frame(frameSet) labelCustomTitle=Label(frameCustom,text='Set Custom Highlighting') labelTargetTitle=Label(self.frameHighlightTarget,text='for : ') self.optMenuHighlightTarget=DynOptionMenu(self.frameHighlightTarget, ! self.highlightTarget,None,command=self.SetHighlightTargetBinding) ! self.radioFg=Radiobutton(frameFgBg,variable=self.fgHilite, ! value=1,command=self.SetFgBg,text='Foreground') ! self.radioBg=Radiobutton(frameFgBg,variable=self.fgHilite, ! value=0,command=self.SetFgBg,text='Background') ! self.fgHilite.set(1) ! buttonSetColour=Button(self.frameColourSet,text='Choose Colour', command=self.GetColour) ! self.labelFontTypeTitle=Label(frameFontSet,text='Font Style :') ! self.checkFontBold=Checkbutton(frameFontSet,variable=self.fontBold, onvalue='Bold',offvalue='',text='Bold') ! self.checkFontItalic=Checkbutton(frameFontSet,variable=self.fontItalic, onvalue='Italic',offvalue='',text='Italic') self.labelTestSample=Label(self.frameHighlightSample,justify=LEFT,font=('courier',12,''), *************** *** 320,326 **** value=1,command=self.SetThemeType,text='a Custom Theme') self.optMenuThemeBuiltin=DynOptionMenu(frameTheme, ! self.builtinTheme,None,command=self.SetHighlightSampleBinding) self.optMenuThemeCustom=DynOptionMenu(frameTheme, ! self.customTheme,None,command=self.SetHighlightSampleBinding) # self.themeType.set(0) self.buttonDeleteCustomTheme=Button(frameTheme,text='Delete Custom Theme') --- 354,360 ---- value=1,command=self.SetThemeType,text='a Custom Theme') self.optMenuThemeBuiltin=DynOptionMenu(frameTheme, ! self.builtinTheme,None,command=None) self.optMenuThemeCustom=DynOptionMenu(frameTheme, ! self.customTheme,None,command=None) # self.themeType.set(0) self.buttonDeleteCustomTheme=Button(frameTheme,text='Delete Custom Theme') *************** *** 333,336 **** --- 367,371 ---- labelCustomTitle.pack(side=TOP,anchor=W,padx=5,pady=5) self.frameHighlightTarget.pack(side=TOP,padx=5,pady=5,fill=X) + frameFgBg.pack(side=TOP,padx=5,pady=0) self.frameHighlightSample.pack(side=TOP,padx=5,pady=5,expand=TRUE,fill=BOTH) frameSet.pack(side=TOP,fill=X) *************** *** 339,346 **** 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) ! checkFontBold.pack(side=LEFT,anchor=W,pady=2) ! checkFontItalic.pack(side=RIGHT,anchor=W) self.labelTestSample.pack(anchor=CENTER,expand=TRUE,fill=BOTH) buttonSaveCustomTheme.pack(side=BOTTOM,fill=X,padx=5,pady=5) --- 374,383 ---- labelTargetTitle.pack(side=LEFT,anchor=E) self.optMenuHighlightTarget.pack(side=RIGHT,anchor=W,expand=TRUE,fill=X) + self.radioFg.pack(side=LEFT,anchor=E) + self.radioBg.pack(side=RIGHT,anchor=W) buttonSetColour.pack(expand=TRUE,fill=BOTH,padx=10,pady=10) ! self.labelFontTypeTitle.pack(side=TOP,anchor=W) ! self.checkFontBold.pack(side=LEFT,anchor=W,pady=2) ! self.checkFontItalic.pack(side=RIGHT,anchor=W) self.labelTestSample.pack(anchor=CENTER,expand=TRUE,fill=BOTH) buttonSaveCustomTheme.pack(side=BOTTOM,fill=X,padx=5,pady=5) *************** *** 545,549 **** ##currently set theme currentOption=idleConf.GetOption('main','Theme','name') ! ##load option menus if self.themeType.get() == 0: #default theme selected itemList=idleConf.GetSectionList('default','highlight') --- 582,586 ---- ##currently set theme currentOption=idleConf.GetOption('main','Theme','name') ! ##load available theme option menus if self.themeType.get() == 0: #default theme selected itemList=idleConf.GetSectionList('default','highlight') *************** *** 560,564 **** itemList=idleConf.GetSectionList('default','highlight') self.optMenuThemeBuiltin.SetMenu(itemList,itemList[0]) ! self.SetThemeType() def LoadKeyLists(self): --- 597,607 ---- itemList=idleConf.GetSectionList('default','highlight') self.optMenuThemeBuiltin.SetMenu(itemList,itemList[0]) ! self.SetThemeType() ! ##load theme element option menu ! elements=('Normal Text','Python Keywords','Python Definitions', ! 'Python Comments','Python Strings','Selected Text', ! 'Search Hits','Cursor','Error Background','Shell Foreground', ! 'Shell Stdout Foreground','Shell Stderr Foreground') ! self.optMenuHighlightTarget.SetMenu(elements,elements[0]) def LoadKeyLists(self): *************** *** 567,571 **** ##currently set keys currentOption=idleConf.GetOption('main','Keys','name') ! ##load option menus if self.keysType.get() == 0: #default theme selected itemList=idleConf.GetSectionList('default','keys') --- 610,614 ---- ##currently set keys currentOption=idleConf.GetOption('main','Keys','name') ! ##load available keyset option menus if self.keysType.get() == 0: #default theme selected itemList=idleConf.GetSectionList('default','keys') *************** *** 583,586 **** --- 626,630 ---- self.optMenuKeysBuiltin.SetMenu(itemList,itemList[0]) self.SetKeysType() + ##load keyset element option menu def LoadConfigs(self): From noreply@sourceforge.net Mon Oct 29 13:10:39 2001 From: noreply@sourceforge.net (noreply@sourceforge.net) Date: Mon, 29 Oct 2001 05:10:39 -0800 Subject: [Idle-dev] [ idlefork-Bugs-440383 ] Idle Hangs During Input Message-ID: Bugs item #440383, was opened at 2001-07-11 05:24 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=109579&aid=440383&group_id=9579 Category: None Group: None Status: Open Resolution: None Priority: 5 Submitted By: Kurt B. Kaiser (kbk) Assigned to: Nobody/Anonymous (nobody) Summary: Idle Hangs During Input Initial Comment: A bug report. --Guido van Rossum (home page: http://www.python.org/~guido/) ------- Forwarded Message Date: Mon, 02 Jul 2001 09:07:58 -0500 From: vze2f978@verizon.net To: guido@python.org Subject: IDLE issue--beeping and IDLE hangs If the window looks something like this: >>>(cursor is here) for x in range[w]: and you hit return, IDLE will stop responding, but beep continually until the computer is restarted. This is in Windows 2000. I'm not sure whether the cursor is before or after the invisible space after the ">>>"; the for statement is on the line AFTER the >>>. Don't know why the student used square braces either. ------- End of Forwarded Message ---------------------------------------------------------------------- >Comment By: Guido van Rossum (gvanrossum) Date: 2001-10-29 05:10 Message: Logged In: YES user_id=6380 It still beeps for me on Linux, with the latest idlefork checkout, using Python 2.1.1. ---------------------------------------------------------------------- Comment By: Chui Tey (teyc) Date: 2001-10-28 01:57 Message: Logged In: YES user_id=29167 I could not reproduce the error on the latest CVS checkout on Win98, using Python 2.1. If any one else still experiences the problem, please let me know, or I'll categorise it as being "not reproducible". ---------------------------------------------------------------------- Comment By: Kurt B. Kaiser (kbk) Date: 2001-07-11 05:26 Message: Logged In: YES user_id=149084 Confirmed on Windows 98 ---------------------------------------------------------------------- Comment By: Kurt B. Kaiser (kbk) Date: 2001-07-11 05:25 Message: Logged In: YES user_id=149084 Confirmed on Windows 98 ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=109579&aid=440383&group_id=9579 From noreply@sourceforge.net Mon Oct 29 13:13:52 2001 From: noreply@sourceforge.net (noreply@sourceforge.net) Date: Mon, 29 Oct 2001 05:13:52 -0800 Subject: [Idle-dev] [ idlefork-Bugs-475984 ] Usage message gets lost Message-ID: Bugs item #475984, was opened at 2001-10-29 05:13 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=109579&aid=475984&group_id=9579 Category: None Group: None Status: Open Resolution: None Priority: 5 Submitted By: Guido van Rossum (gvanrossum) Assigned to: Nobody/Anonymous (nobody) Summary: Usage message gets lost Initial Comment: When idle is given the wrong command line arguments, it prints a usage message on stdout and exits. This works in the IDLE version in the Python CVS repository. But the idlefork IDLE in this case briefly brings up a window, and immediately removes it again, before I can read anything. I'm guessing the initiailization order has been changed so that it prints the usage message to an output window. This is on Linux, but I bet it's also on Windows. ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=109579&aid=475984&group_id=9579 From noreply@sourceforge.net Mon Oct 29 13:16:56 2001 From: noreply@sourceforge.net (noreply@sourceforge.net) Date: Mon, 29 Oct 2001 05:16:56 -0800 Subject: [Idle-dev] [ idlefork-Bugs-440383 ] Idle Hangs During Input Message-ID: Bugs item #440383, was opened at 2001-07-11 05:24 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=109579&aid=440383&group_id=9579 Category: None Group: None Status: Open Resolution: None Priority: 5 Submitted By: Kurt B. Kaiser (kbk) Assigned to: Nobody/Anonymous (nobody) Summary: Idle Hangs During Input Initial Comment: A bug report. --Guido van Rossum (home page: http://www.python.org/~guido/) ------- Forwarded Message Date: Mon, 02 Jul 2001 09:07:58 -0500 From: vze2f978@verizon.net To: guido@python.org Subject: IDLE issue--beeping and IDLE hangs If the window looks something like this: >>>(cursor is here) for x in range[w]: and you hit return, IDLE will stop responding, but beep continually until the computer is restarted. This is in Windows 2000. I'm not sure whether the cursor is before or after the invisible space after the ">>>"; the for statement is on the line AFTER the >>>. Don't know why the student used square braces either. ------- End of Forwarded Message ---------------------------------------------------------------------- >Comment By: Guido van Rossum (gvanrossum) Date: 2001-10-29 05:16 Message: Logged In: YES user_id=6380 My apologies. I can't reproduced the described behavior either. What's still broken is that if you press Return at the >>> prompt in the Shell window without entering a command, you get a beep and a new >>> prompt. I could do without the beep (the new >>> prompt is expected. :-) Do you want a separate bug report for that? ---------------------------------------------------------------------- Comment By: Guido van Rossum (gvanrossum) Date: 2001-10-29 05:10 Message: Logged In: YES user_id=6380 It still beeps for me on Linux, with the latest idlefork checkout, using Python 2.1.1. ---------------------------------------------------------------------- Comment By: Chui Tey (teyc) Date: 2001-10-28 01:57 Message: Logged In: YES user_id=29167 I could not reproduce the error on the latest CVS checkout on Win98, using Python 2.1. If any one else still experiences the problem, please let me know, or I'll categorise it as being "not reproducible". ---------------------------------------------------------------------- Comment By: Kurt B. Kaiser (kbk) Date: 2001-07-11 05:26 Message: Logged In: YES user_id=149084 Confirmed on Windows 98 ---------------------------------------------------------------------- Comment By: Kurt B. Kaiser (kbk) Date: 2001-07-11 05:25 Message: Logged In: YES user_id=149084 Confirmed on Windows 98 ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=109579&aid=440383&group_id=9579 From edream@tds.net Tue Oct 30 12:17:19 2001 From: edream@tds.net (Edward K. Ream) Date: Tue, 30 Oct 2001 06:17:19 -0600 Subject: [Idle-dev] Status of IDLE breakpoints for Windows? Message-ID: <3BDE9A4F.31171FE0@tds.net> Hi, Do breakpoints work with any version of IDLE on Windows? If so, how does one set them? If not, what needs to be done to make them work? Thanks. Edward -------------------------------------------------------------------- Edward K. Ream email: edream@tds.net Leo: Literate Editor with Outlines Leo: http://personalpages.tds.net/~edream/front.html -------------------------------------------------------------------- From teyc@users.sourceforge.net Wed Oct 31 10:40:30 2001 From: teyc@users.sourceforge.net (Chui Tey) Date: Wed, 31 Oct 2001 02:40:30 -0800 Subject: [Idle-dev] CVS: idle help.txt,1.3,1.4 Message-ID: Update of /cvsroot/idlefork/idle In directory usw-pr-cvs1:/tmp/cvs-serv18426 Modified Files: help.txt Log Message: Documentation patches by bsherwood Index: help.txt =================================================================== RCS file: /cvsroot/idlefork/idle/help.txt,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** help.txt 2001/07/12 05:21:08 1.3 --- help.txt 2001/10/31 10:40:28 1.4 *************** *** 124,131 **** Other preferences: ! To change the font on Windows, open EditorWindow.py and change ! text['font'] = ("lucida console", 8) ! to, e.g., ! text['font'] = ("courier new", 10) To change keyboard bindings, edit Bindings.py --- 124,140 ---- Other preferences: ! To change the font open config-[win/unix/mac].txt and ! change ! ! font-name: courier new ! font-size: 10 ! ! to, for example: ! ! font-name: courier new bold ! font-size: 14 ! ! Note: a GUI based configuration screen will be provided ! in the future. To change keyboard bindings, edit Bindings.py