From postmaster@lexansoft.com Sun Dec 2 07:15:36 2001 From: postmaster@lexansoft.com (postmaster@lexansoft.com) Date: Sun, 02 Dec 2001 02:15:36 -0500 Subject: [Idle-dev] Beta Testing Started! Message-ID: <1229124690.1007248517601.JavaMail.root@IBM_SERVER>
Lexan Software Inc.

Dear Sir or Madam:

We have allowed ourselves to write to you because you have posted your e-mail address (idle-dev@python.org) to the following Web page: http://idlefork.sourceforge.net If you do not wish us to use your address in the future, please click "Unsubscribe" at the bottom of this letter.

We are beginning the beta testing of a new Web site that offers easy-to-use services for other Web sites. Our services are intuitive to use, and the effect they produce is hard to overestimate.

Our goal is to convert your Web site from a collection of static information pages to an interactive visitor community built around the content and theme of your Web site.

Today we are offering four services:

Web Forum Allows your visitors to exchange opinions and maintain an on-line discussion group.
...more info
News Letter Allows you to keep your visitors up to date by sending them e-mails regularly.
(We sent this letter using our own service.)
...more info
Quick Vote Maintains a count of replies to a posted question, allowing your visitors to vote on an issue.
...more info
Talk Back Allows a visitor to leave a commentary to an article or any other information on your Web site.
...more info

An important feature of all our services is that they look native on your Web pages. They do not have any embedded advertisements (banners) and do not impose any stylistic decisions (fonts, colours, etc.) You have complete control over the appearance of our services on your pages.

Our services allow users to enchance their Web sites with features that have been inaccessible to them before.

Our services are not free, but our prices are quite reasonable. You can easily compare them with the prices for similar services provided by other companies. Our services are an order of magnitude cheaper than simlar solutions that require complicated installation procedures and maintenance of server-side applications.

The official launch date is set for December 25, 2001. On this day, all registered users will receive an additional $10 in their accounts (besides the usual $10 registration gift).

You can find additional information and examples of using our services on our Web site: www.lexansoft.com


NewsLetter service by Lexan Software
 
Copyright © 2000-2001 Lexan Software Inc.
All rights reserved. www.lexansoft.com
From elguavas@users.sourceforge.net Mon Dec 3 00:37:30 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Sun, 02 Dec 2001 16:37:30 -0800 Subject: [Idle-dev] CVS: idle Bindings.py,1.4,1.5 config-keys.def,1.1,1.2 configHandler.py,1.6,1.7 Message-ID: Update of /cvsroot/idlefork/idle In directory usw-pr-cvs1:/tmp/cvs-serv19494 Modified Files: Bindings.py config-keys.def configHandler.py Log Message: further work on new configuration system, specifically, on keybinding configuration Index: Bindings.py =================================================================== RCS file: /cvsroot/idlefork/idle/Bindings.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** Bindings.py 2001/11/21 05:52:51 1.4 --- Bindings.py 2001/12/03 00:37:28 1.5 *************** *** 15,19 **** import sys import string ! from keydefs import * menudefs = [ --- 15,20 ---- import sys import string ! #from keydefs import * ! from configHandler import idleConf menudefs = [ *************** *** 66,73 **** ] ! if sys.platform == 'win32': ! default_keydefs = windows_keydefs ! else: ! default_keydefs = unix_keydefs del sys --- 67,76 ---- ] ! #if sys.platform == 'win32': ! # default_keydefs = windows_keydefs ! #else: ! # default_keydefs = unix_keydefs ! ! default_keydefs = idleConf.GetKeys(keySetName=None) del sys Index: config-keys.def =================================================================== RCS file: /cvsroot/idlefork/idle/config-keys.def,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** config-keys.def 2001/09/24 09:43:17 1.1 --- config-keys.def 2001/12/03 00:37:28 1.2 *************** *** 1,58 **** # IDLE reads several config files to determine user preferences. This # file is the default config file for idle key binding settings. ! [IDLE Classic - windows] ! Copy= ' ' ! Cut= ' ' ! Paste= ' ' ! beginning-of-line= ' ' ! center-insert= '' ! close-all-windows= '' ! close-window= '' ! dump-undo-state= '' ! end-of-file= '' ! python-docs= '' ! history-next= '' ! history-previous= '' ! interrupt-execution= '' ! open-class-browser= '' ! open-module= '' ! open-new-window= '' ! open-window-from-file= '' ! plain-newline-and-indent= '' ! redo= '' ! remove-selection= '' ! save-copy-of-window-as-file= '' ! save-window-as-file= '' ! save-window= '' ! select-all= '' ! toggle-auto-coloring= '' ! undo= '' ! [IDLE Classic - posix] ! Copy= ' ' ! Cut= '' ! Paste= '' ! beginning-of-line= ' ' ! center-insert= '' ! close-all-windows= '' ! close-window= ' ' ! do-nothing= '' ! dump-undo-state= '' ! end-of-file= '' ! help= '' ! history-next= ' ' ! history-previous= ' ' ! interrupt-execution= '' ! open-class-browser= '' ! open-module= '' ! open-new-window= '' ! open-window-from-file= '' ! plain-newline-and-indent= '' ! redo= ' ' ! save-copy-of-window-as-file= '' ! save-window-as-file= '' ! save-window= '' ! select-all= ' ' ! toggle-auto-coloring= '' ! undo= '' --- 1,64 ---- # IDLE reads several config files to determine user preferences. This # file is the default config file for idle key binding settings. + # Where multiple keys are specified for an action: if they are separated + # by a space (eg. action= ) then the keys are altenatives, if + # there is no space (eg. action=key2>) then the keys comprise a + # single 'emacs style' multi-keystoke binding. ! [IDLE CUA-ish] ! Copy= ! Cut= ! Paste= ! beginning-of-line= ! center-insert= ! close-all-windows= ! close-window= ! dump-undo-state= ! end-of-file= ! python-docs= ! python-context-help= ! history-next= ! history-previous= ! interrupt-execution= ! open-class-browser= ! open-module= ! open-new-window= ! open-window-from-file= ! plain-newline-and-indent= ! redo= ! remove-selection= ! save-copy-of-window-as-file= ! save-window-as-file= ! save-window= ! select-all= ! toggle-auto-coloring= ! undo= ! [IDLE Emacs-ish] ! Copy= ! Cut= ! Paste= ! beginning-of-line= ! center-insert= ! close-all-windows= ! close-window= ! do-nothing= ! dump-undo-state= ! end-of-file= ! history-next= ! history-previous= ! interrupt-execution= ! open-class-browser= ! open-module= ! open-new-window= ! open-window-from-file= ! plain-newline-and-indent= ! python-docs= ! python-context-help= ! redo= ! save-copy-of-window-as-file= ! save-window-as-file= ! save-window= ! select-all= ! toggle-auto-coloring= ! undo= Index: configHandler.py =================================================================== RCS file: /cvsroot/idlefork/idle/configHandler.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -r1.6 -r1.7 *** configHandler.py 2001/11/04 07:03:08 1.6 --- configHandler.py 2001/12/03 00:37:28 1.7 *************** *** 175,185 **** 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): --- 175,220 ---- pass ! def GetKeys(self, keySetName=None): """ ! returns the requested keybindings, with fallbacks if required. """ ! #default keybindings. ! #keybindings loaded from the config file(s) are loaded _over_ these ! #defaults, so if there is a problem getting any binding there will ! #be an 'ultimate last resort fallback' to the CUA-ish bindings ! #defined here. ! keyBindings={ ! '<>': ['', ''], ! '<>': ['', ''], ! '<>': ['', ''], ! '<>': ['', ''], ! '<>': [''], ! '<>': [''], ! '<>': [''], ! '<>': [''], ! '<>': [''], ! '<>': [''], ! '<>': [''], ! '<>': [''], ! '<>': [''], ! '<>': [''], ! '<>': [''], ! '<>': [''], ! '<>': [''], ! '<>': [''], ! '<>': [''], ! '<>': [''], ! '<>': [''], ! '<>': [''], ! '<>': [''], ! '<>': [''], ! '<>': [''], ! '<>': [''], ! '<>': ['']} ! if keySetName: ! pass ! ! return keyBindings ! def LoadCfgFiles(self): From elguavas@users.sourceforge.net Mon Dec 3 11:24:46 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Mon, 3 Dec 2001 22:24:46 +1100 Subject: [Idle-dev] idlefork - keybinding config / idle extensions Message-ID: <200112031124.fB3BO4O30863@mail016.syd.optusnet.com.au> Greetings IDLErs. I've been doing some work on the new gui-workable configuration system in idlefork and I've run up against a few issues with user configurable keybindings, particularly relating to the idle 'extensions' system, so I'm outlining my ideas on how to move forward with this here in case anyone has some objections or brilliant ideas on the subject that haven't occurred to me (quite likely, brilliant ideas not occuring to me that is :). I'll start out with a brief description of some of the general changes I've needed to make, and then move on to a description of how I currently forsee handling the 'extensions' problem for keybindings. The 'keybindings situation' in idle is another of those where earlier design decisions were (quite rightfully) made without undue regard for the idea that one day in a distant and unforeseen future idle might be easily configurable through a gui (without needing to edit config files, and resolve conflicts between config files, by hand) , but there are also particular peculiarites (to my mind at least) about some of the assumptions made in the existing keybinding handling that hopefully will be cleaned up now that the config system is being completely rewritten. One of these peculiarities has been the assumption that it was a useful concept to have keybindings be tied to 'platforms' rather than user preference. So idle had a system where it would automatically pick (for you) one set of keybindings when running under windows, and another when running on unix, for instance. To my mind this is particularly strange for a number of reasons. For instance the default 'windows' keybindings were largely CUA-ish, which of course is fine for windows, but then, is equally fine for for emulating unix editors like (the excellent) Nedit, or for most mac or os/2 editors; while the existing 'unix' keybindings are fairly emacs-ish, and therefore unlike those of some other popular unix editors, and then also many emacs fans use emacs on windows as well as unix, etc.... Isn't it a _user_ preference for editor keybinding styles that we're talking about here rather than one dictated by or dependant on computing platform or operating system? In any case this will become a moot point under the new config system, where the user will have a choice between available pre-configured keybinding sets (including of course a 'windows' or 'CUA-like' set and an 'emacs-like' set) to suit themselves, irrespective of platform, as well as being able to easily define and reconfigure their own sets of keybindings (more than one, if they like). However, this refocussing of emphasis in keystrokes from platform-specific to user-specific causes particular complications with idle's existing implementation of 'extensions'. In the existing model of idle 'extensions' each extension can define it's own set of keybindings for each or any platform that the traditional idle keystroke handling system deigned to recognise, that is an extension can define it's own keys to be bound under windows or unix, for example, just as with the general idle keystrokes. This was all well and good in being consistent with the exisitng model, because it enabled the extension to define default keys for each platform that did not clash (hopefully!) with the default general idle keys, or the default keys of any other enabled extension, for that paltform. This worked of course on the basis that all those other platform specific keys were already known, or that if a 'knowledgeable user' edited the platform key definitions by hand to customise them, then they'd also be knowledgable enough to make sure they sorted out any conflicts with other general or extension-specified platform keybindings, by editing keydefs.py and the source file for every extension that might have defined a clashing platform keybinding... This obviously complicates things greatly beyond the notion of simply having one central set of keybindings that can be relatively easily user/gui configured. But, since the idea of extensions is one that isn't going to go away in idle (nor should it, I'm reliably informed that some organisiations use custom built in-house idle extensions) I think the best (in fact only clear) course forward is to firstly lessen some of the complexity of the exisitng extension-keystroke situation, and then to implement user keystroke configuration (with programmatic keystroke 'conflict resolution') for extensions also. (This latter may [but may not] require some small changes to the extensions 'api'?) Of the extensions that are currently (and mostly have been for quite some time) part of the default idle installation I think there is at least one (there may be others) clear candidate for removal of 'extension' status and treating instead as part of idle proper, that candidate is, SearchBindings.py. This module provides a lot of functionality that is surely fundamental to any notion of an ide or code editor (that is, all the expected advanced search and replace functions) and it defines an awful lot of important (again, pretty much fundamental) keybindings for search and replace and navigation functions. I think SearchBindings.py should be declared a basic part of core idle and its keybindings moved into the general idle keybinding set so that they can be managed and configured there, where one would rightfully expect to find them. By making that one change in the status of one module alone I think (on the issue of keybindings) that all the keybindings for fundamental core idle actions will be in their correct place. Then the case of keybinding configuration for the remaining extensions (and any new ones) can be more sensibly handled with programmatic (configuration gui) resolution of of clashes back to the 'core' keybindings or the keybindings of other active extensions. That's about it. If there aren't any objections or inspirations on the subject then I shall go bumbling ahead according to the steps I've suggested above. Congratulations if you made it to here and you're still awake, (if you made it to here and you're asleep, go to bed immediately!), Stephen. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From elguavas@users.sourceforge.net Wed Dec 5 06:32:48 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Tue, 04 Dec 2001 22:32:48 -0800 Subject: [Idle-dev] CVS: idle tabpage.py,NONE,1.1 Message-ID: Update of /cvsroot/idlefork/idle In directory usw-pr-cvs1:/tmp/cvs-serv2116 Added Files: tabpage.py Log Message: cleaner tabbed-page mini implementation through classes --- NEW FILE: tabpage.py --- ##---------------------------------------------------------------------------## ## ## pyChing -- a Python program to cast and interpret I Ching hexagrams ## ## Copyright (C) 1999,2000 Stephen M. Gava ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be of some ## interest to somebody, but WITHOUT ANY WARRANTY; without even the ## implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ## See the GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; see the file COPYING or COPYING.txt. If not, ## write to the Free Software Foundation, Inc., ## 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ## The license can also be found at the GNU/FSF website: http://www.gnu.org ## ## Stephen M. Gava ## ## http://pyching.sourgeforge.net ## ##---------------------------------------------------------------------------## """ a couple of classes for implementing partial tabbed-page like behaviour """ from Tkinter import * class PageTab(Frame): """ a 'page tab' like framed button """ def __init__(self,parent): Frame.__init__(self, parent,borderwidth=2,relief=RIDGE) self.button=Radiobutton(self,padx=5,pady=5,takefocus=FALSE, underline=0,indicatoron=FALSE,highlightthickness=0, borderwidth=0,selectcolor=self.cget('bg')) self.button.pack() class TabPageSet(Frame): """ a set of 'pages' with TabButtons for controlling their display """ def __init__(self,parent,pageNames,**kw): """ pageNames - a list of strings, each string will be the dictionary key to a page's data, and the name displayed on the page's tab. Should be specified in desired page order. The first page will be the default and first active page. """ Frame.__init__(self, parent, kw) self.grid_location(0,0) self.columnconfigure(0,weight=1) self.rowconfigure(1,weight=1) self.tabBar=Frame(self) self.tabBar.grid(row=0,column=0,sticky=EW) self.activePage=StringVar(self) self.defaultPage='' self.pages={} for name in pageNames: self.AddPage(name) def ChangePage(self,pageName=None): if pageName: if pageName in self.pages.keys(): self.activePage.set(pageName) else: raise 'Invalid TabPage Name' ## pop up the active 'tab' only for page in self.pages.keys(): self.pages[page]['tab'].config(relief=RIDGE) self.pages[self.GetActivePage()]['tab'].config(relief=RAISED) ## switch page self.pages[self.GetActivePage()]['page'].lift() def GetActivePage(self): return self.activePage.get() def AddPage(self,pageName): if pageName in self.pages.keys(): raise 'TabPage Name Already Exists' self.pages[pageName]={'tab':PageTab(self.tabBar), 'page':Frame(self,borderwidth=2,relief=RAISED)} self.pages[pageName]['tab'].button.config(text=pageName, command=self.ChangePage,variable=self.activePage, value=pageName) self.pages[pageName]['tab'].pack(side=LEFT) self.pages[pageName]['page'].grid(row=1,column=0,sticky=NSEW) if len(self.pages)==1: # adding first page self.defaultPage=pageName self.activePage.set(self.defaultPage) self.ChangePage() def RemovePage(self,pageName): if not pageName in self.pages.keys(): raise 'Invalid TabPage Name' self.pages[pageName]['tab'].pack_forget() self.pages[pageName]['page'].grid_forget() self.pages[pageName]['tab'].destroy() self.pages[pageName]['page'].destroy() del(self.pages[pageName]) # handle removing last remaining, or default, or active page if not self.pages: # removed last remaining page self.defaultPage='' return if pageName==self.defaultPage: # set a new default page self.defaultPage=\ self.tabBar.winfo_children()[0].button.cget('text') if pageName==self.GetActivePage(): # set a new active page self.activePage.set(self.defaultPage) self.ChangePage() if __name__ == '__main__': #test the dialog root=Tk() tabPage=TabPageSet(root,pageNames=['Foobar','Baz']) tabPage.pack(expand=TRUE,fill=BOTH) Label(tabPage.pages['Foobar']['page'],text='Foo',pady=20).pack() Label(tabPage.pages['Foobar']['page'],text='Bar',pady=20).pack() Label(tabPage.pages['Baz']['page'],text='Baz').pack() entryPgName=Entry(root) buttonAdd=Button(root,text='Add Page', command=lambda:tabPage.AddPage(entryPgName.get())) buttonRemove=Button(root,text='Remove Page', command=lambda:tabPage.RemovePage(entryPgName.get())) labelPgName=Label(root,text='name of page to add/remove:') buttonAdd.pack(padx=5,pady=5) buttonRemove.pack(padx=5,pady=5) labelPgName.pack(padx=5) entryPgName.pack(padx=5) root.mainloop() From elguavas@users.sourceforge.net Wed Dec 5 06:39:20 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Tue, 04 Dec 2001 22:39:20 -0800 Subject: [Idle-dev] CVS: idle tabpage.py,1.1,1.2 Message-ID: Update of /cvsroot/idlefork/idle In directory usw-pr-cvs1:/tmp/cvs-serv3472 Modified Files: tabpage.py Log Message: remove cruft from other project Index: tabpage.py =================================================================== RCS file: /cvsroot/idlefork/idle/tabpage.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** tabpage.py 2001/12/05 06:32:46 1.1 --- tabpage.py 2001/12/05 06:39:18 1.2 *************** *** 1,29 **** - ##---------------------------------------------------------------------------## - ## - ## pyChing -- a Python program to cast and interpret I Ching hexagrams - ## - ## Copyright (C) 1999,2000 Stephen M. Gava - ## - ## This program is free software; you can redistribute it and/or modify - ## it under the terms of the GNU General Public License as published by - ## the Free Software Foundation; either version 2 of the License, or - ## (at your option) any later version. - ## - ## This program is distributed in the hope that it will be of some - ## interest to somebody, but WITHOUT ANY WARRANTY; without even the - ## implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - ## See the GNU General Public License for more details. - ## - ## You should have received a copy of the GNU General Public License - ## along with this program; see the file COPYING or COPYING.txt. If not, - ## write to the Free Software Foundation, Inc., - ## 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - ## The license can also be found at the GNU/FSF website: http://www.gnu.org - ## - ## Stephen M. Gava - ## - ## http://pyching.sourgeforge.net - ## - ##---------------------------------------------------------------------------## """ a couple of classes for implementing partial tabbed-page like behaviour --- 1,2 ---- *************** *** 117,121 **** if __name__ == '__main__': ! #test the dialog root=Tk() tabPage=TabPageSet(root,pageNames=['Foobar','Baz']) --- 90,94 ---- if __name__ == '__main__': ! #test dialog root=Tk() tabPage=TabPageSet(root,pageNames=['Foobar','Baz']) From elguavas@users.sourceforge.net Wed Dec 5 07:54:09 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Tue, 04 Dec 2001 23:54:09 -0800 Subject: [Idle-dev] CVS: idle configDialog.py,1.19,1.20 Message-ID: Update of /cvsroot/idlefork/idle In directory usw-pr-cvs1:/tmp/cvs-serv17638 Modified Files: configDialog.py Log Message: changes to use new tabpages classes Index: configDialog.py =================================================================== RCS file: /cvsroot/idlefork/idle/configDialog.py,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -r1.19 -r1.20 *** configDialog.py 2001/11/21 05:56:26 1.19 --- configDialog.py 2001/12/05 07:54:07 1.20 *************** *** 1,8 **** - ##---------------------------------------------------------------------------## - ## - ## idle - configuration dialog - ## elguavas - ## - ##---------------------------------------------------------------------------## """ configuration dialog --- 1,2 ---- *************** *** 13,16 **** --- 7,11 ---- from configHandler import idleConf from dynOptionMenuWidget import DynOptionMenu + from tabpage import TabPageSet class ConfigDialog(Toplevel): *************** *** 42,59 **** self.CreateWidgets() self.resizable(height=FALSE,width=FALSE) - self.ChangePage() self.transient(parent) self.grab_set() self.protocol("WM_DELETE_WINDOW", self.Cancel) self.parent = parent ! self.framePages.focus_set() #key bindings for this dialog self.bind('',self.CancelBinding) #dismiss dialog, no save self.bind('',self.ApplyBinding) #apply changes, save self.bind('',self.HelpBinding) #context help - self.bind('',self.ChangePageBinding) - self.bind('',self.ChangePageBinding) - self.bind('',self.ChangePageBinding) - self.bind('',self.ChangePageBinding) self.LoadConfigs() self.wait_window() --- 37,49 ---- self.CreateWidgets() self.resizable(height=FALSE,width=FALSE) self.transient(parent) self.grab_set() self.protocol("WM_DELETE_WINDOW", self.Cancel) self.parent = parent ! self.tabPages.focus_set() #key bindings for this dialog self.bind('',self.CancelBinding) #dismiss dialog, no save self.bind('',self.ApplyBinding) #apply changes, save self.bind('',self.HelpBinding) #context help self.LoadConfigs() self.wait_window() *************** *** 83,105 **** self.Help() - def ChangePage(self): - #pop up the active 'tab' only - for button in self.pageButtons: button.master.config(relief=RIDGE) - self.pageButtons[self.pageNum.get()].master.config(relief=RAISED) - #switch page - self.pages[self.pageNum.get()].lift() - self.title('Settings - '+ - self.pageButtons[self.pageNum.get()].cget('text')) - - def ChangePageBinding(self,event): - pageKeys=('f','h','k','g') - pos=0 - for key in pageKeys: - if event.char == key: - self.pageNum.set(pos) - self.ChangePage() - return - pos=pos+1 - def SetThemeType(self): if self.themeIsBuiltin.get(): --- 73,76 ---- *************** *** 172,178 **** def CreateWidgets(self): ! self.framePages = Frame(self) frameActionButtons = Frame(self) - framePageButtons = Frame(self.framePages) #action buttons self.buttonHelp = Button(frameActionButtons,text='Help', --- 143,149 ---- def CreateWidgets(self): ! self.tabPages = TabPageSet(self, ! pageNames=['Fonts/Tabs','Highlighting','Keys','General']) frameActionButtons = Frame(self) #action buttons self.buttonHelp = Button(frameActionButtons,text='Help', *************** *** 184,215 **** self.buttonCancel = Button(frameActionButtons,text='Cancel', command=self.Cancel,takefocus=FALSE) ! #page buttons ! self.pageNum=IntVar(self) ! self.pageNum.set(0) ! pageButtonNames=('Fonts/Tabs','Highlighting','Keys','General') ! self.pageButtons=[] ! buttonValue=0 ! buttonSelColour=framePageButtons.cget('bg') ! for name in pageButtonNames: ! buttonFrame=Frame(framePageButtons,borderwidth=2,relief=RIDGE) ! buttonFrame.pack(side=LEFT) ! button = Radiobutton(buttonFrame,command=self.ChangePage, ! value=buttonValue,padx=5,pady=5,takefocus=FALSE,underline=0, ! indicatoron=FALSE,highlightthickness=0,variable=self.pageNum, ! selectcolor=buttonSelColour,borderwidth=0,text=name) ! button.pack() ! button.lift() ! self.pageButtons.append(button) ! buttonValue=buttonValue+1 ! #pages ! self.pages=(self.CreatePageFontTab(), ! self.CreatePageHighlight(), ! self.CreatePageKeys(), ! self.CreatePageGeneral()) ! ! #grid in framePages so we can overlap pages ! framePageButtons.grid(row=0,column=0,sticky=NSEW) ! for page in self.pages: page.grid(row=1,column=0,sticky=(N,S,E,W)) ! self.buttonHelp.pack(side=RIGHT,padx=5,pady=5) self.buttonOk.pack(side=LEFT,padx=5,pady=5) --- 155,162 ---- self.buttonCancel = Button(frameActionButtons,text='Cancel', command=self.Cancel,takefocus=FALSE) ! self.CreatePageFontTab() ! self.CreatePageHighlight() ! self.CreatePageKeys() ! self.CreatePageGeneral() self.buttonHelp.pack(side=RIGHT,padx=5,pady=5) self.buttonOk.pack(side=LEFT,padx=5,pady=5) *************** *** 217,221 **** self.buttonCancel.pack(side=LEFT,padx=5,pady=5) frameActionButtons.pack(side=BOTTOM) ! self.framePages.pack(side=TOP,expand=TRUE,fill=BOTH) def CreatePageFontTab(self): --- 164,169 ---- self.buttonCancel.pack(side=LEFT,padx=5,pady=5) frameActionButtons.pack(side=BOTTOM) ! self.tabPages.pack(side=TOP,expand=TRUE,fill=BOTH) ! def CreatePageFontTab(self): *************** *** 229,233 **** ##widget creation #body frame ! frame=Frame(self.framePages,borderwidth=2,relief=RAISED) #body section frames frameFont=Frame(frame,borderwidth=2,relief=GROOVE) --- 177,181 ---- ##widget creation #body frame ! frame=self.tabPages.pages['Fonts/Tabs']['page'] #body section frames frameFont=Frame(frame,borderwidth=2,relief=GROOVE) *************** *** 315,319 **** ##widget creation #body frame ! frame=Frame(self.framePages,borderwidth=2,relief=RAISED) #body section frames frameCustom=Frame(frame,borderwidth=2,relief=GROOVE) --- 263,267 ---- ##widget creation #body frame ! frame=self.tabPages.pages['Highlighting']['page'] #body section frames frameCustom=Frame(frame,borderwidth=2,relief=GROOVE) *************** *** 405,409 **** ##widget creation #body frame ! frame=Frame(self.framePages,borderwidth=2,relief=RAISED) #body section frames frameCustom=Frame(frame,borderwidth=2,relief=GROOVE) --- 353,357 ---- ##widget creation #body frame ! frame=self.tabPages.pages['Keys']['page'] #body section frames frameCustom=Frame(frame,borderwidth=2,relief=GROOVE) *************** *** 438,442 **** self.customKeys,None,command=None) self.buttonDeleteCustomKeys=Button(frameKeySets,text='Delete Custom Key Set') - # self.SetKeysType() ##widget packing #body --- 386,389 ---- *************** *** 476,480 **** #widget creation #body ! frame=Frame(self.framePages,borderwidth=2,relief=RAISED) #body section frames frameRun=Frame(frame,borderwidth=2,relief=GROOVE) --- 423,427 ---- #widget creation #body ! frame=self.tabPages.pages['General']['page'] #body section frames frameRun=Frame(frame,borderwidth=2,relief=GROOVE) From fernanda@ia.com.br Wed Dec 5 21:10:50 2001 From: fernanda@ia.com.br (Fernanda) Date: Wed, 5 Dec 2001 19:10:50 -0200 Subject: [Idle-dev] Sites feitos para gerar negócios. Message-ID: <1922676-220011235211050400@ia.com.br> ------=_NextPart_84815C5ABAF209EF376268C8 Content-type: text/plain; charset="US-ASCII" Sabado, 05 de Dezembro de 2001 - Newsletter 85/2001 Melhor ferramenta de e-marketing: Boletins via e-mail Já imaginou se a sua empresa pudesse enviar periodicamente, boletins por e-mail, com finalidade publicitária e de interação com seus clientes e fornecedores? A Interart desenvolve websites de sucesso, com diversos aplicativos e sistemas de automação de conteúdo, chats, enquetes e automação de criação e envio de Boletins via e-mails. Não perca a oportunidade de divulgar sua empresa, produtos e serviços via Internet, de forma profissional e que de fato gere resultados aos seus negócios. Agende uma reunião com a Interart! (11) 3868-3892 http://www.ia.com.br Seleção de profissionais para sua empresa Quando a sua empresa precisar de contratar novos profissionais, não deixe de utilizar os serviços oferecidos pela Curriex - http://www.curriex.com.br. Os serviços da CURRIEX são totalmente GRATUITOS para a sua empresa. Lycos muda visual atrás de anunciantes A Terra Lycos inaugurou, nesta segunda-feira, o novo visual do portal Lycos... Número de usuários AOLA sobe para 1,15 mi O braço para a América Latina do provedor America Online não tem... Cresce quitação de cartão de crédito na web Os serviços que permitem aos consumidores ver e pagar suas contas... Telefônica faz parceria com Creci para criar novo portal imobiliário A Telefônica e o Conselho Regional de Corretores de Imóveis do Estado de São Paulo (Creci-SP)... Newsletter Interart. Para cancelar seu recebimento, coloque seu e-mail no campo abaixo. ------=_NextPart_84815C5ABAF209EF376268C8 Content-Type: text/html; charset="US-ASCII" Content-Transfer-Encoding: quoted-printable
 
= Melhor ferramenta de e-marketing: Boletins via e-= mail

J=E1 imaginou se a sua empresa pudesse enviar periodicamen= te, boletins por e-mail, com finalidade publicit=E1ria e de intera=E7=E3o = com seus clientes e fornecedores?

A Interart desenvolve websites d= e sucesso, com diversos aplicativos e sistemas de automa=E7=E3o de conte=FA= do, chats, enquetes e automa=E7=E3o de cria=E7=E3o e envio de Boletins via= e-mails=2E

N=E3o perca a oportunidade de divulgar sua empresa, pr= odutos e servi=E7os via Internet, de forma profissional e que de fato gere= resultados aos seus neg=F3cios=2E

Agende uma reuni=E3o com a Inte= rart!
(11) 3868-3892
http:/= /www=2Eia=2Ecom=2Ebr
 Sabado, 05 de Dezembro= de 2001 -  Newsletter 85/2001

Sele=E7=E3o de profissionais para sua empresa=

Quando a sua empresa precisar de contratar novos profissionais= , n=E3o deixe de utilizar os servi=E7os oferecidos pela Curriex - http://www=2Ecurriex=2Ecom=2Ebr=2E = Os servi=E7os da CURRIEX s=E3o totalmente GRATUITOS para a sua empresa=2E<= /font>
 <= td>N=FAmero de usu=E1rios AOLA sobe p= ara 1,15 mi
 
Lycos muda visual atr=E1s de= anunciantes
 
 =
A Terra Lycos inaugurou, n= esta segunda-feira, o novo visual do portal Lycos=2E=2E=2E
&= nbsp;
 <= table width=3D'119' border=3D'0' cellspacing=3D'3' cellpadding=3D'0'>
 
 
O bra=E7o para a Am=E9rica La= tina do provedor America Online n=E3o tem=2E=2E=2E
 
 = ;
Cresce quita=E7=E3o de cart=E3o de cr=E9di= to na web
 
 <= /tr> 
Os servi=E7os que permitem ao= s consumidores ver e pagar suas contas=2E=2E=2E
 
 
Telef=F4nica faz parceria com Creci para cria= r novo portal imobili=E1rio
 
A Telef=F4nica= e o Conselho Regional de Corretores de Im=F3veis do Estado de S=E3o Paulo= (Creci-SP)=2E=2E=2E
 
 
------=_NextPart_84815C5ABAF209EF376268C8-- From elguavas@users.sourceforge.net Thu Dec 6 00:47:16 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Thu, 6 Dec 2001 11:47:16 +1100 Subject: [Idle-dev] Re: idlefork - keybinding config / idle extensions In-Reply-To: References: Message-ID: <200112060046.fB60kVJ13409@mail004.syd.optusnet.com.au> I quote some points from a private email to me here, with Hernan's permission: Hernan Martinez Foffani wrote: > agree with you that the "OS type" choice for keybindings > is a bit "hard". I like your approach of giving a standard set > of prepackage bindings like "MS Windows", "Emacs", or whatever > and letting the user create and modify new and existing schemes. > > I agree that there's a problem there. But I've got lost on your > propositions, besides the one regarding the "find text" extension. > > If you are going to provide a keybinding configuration for > the extensions, I don't see the need to change the status of > the standard ones. Or are you planning to do it in different > releases? I think my original message to idle-dev on this probably suffered from the problem of these being issues that I've been turning over a lot in my mind, and that in being too close to the matter, what I worte came out in somewhat of an ill-explained manner. Really the points are these: 1. Moving from 'platform' oriented keybindings to user oriented ones. I must admit that this one is slightly more than just a 'proposal', since I've already implemented things this way... 8^) , so, more properly consder this a 'news item'. 2. It's 'one in all in'. It really isn't possible to satisfactorily implement user configurable key bindings for idle 'core', while leaving extension's key bindings hard-coded in their modules. This problem with extensions needs to be addressed in some way. Now. (see point 4 also) 3. SearchBindings.py is a special case since I'm firmly convinced that the functions it implements are core to idle, not peripheral or optional, and so I think it's keybindings sould be part of the idle core keybindings and therefore handled by the idle core keybinding configuration mechanism, not by whatever additional mechanism is put in place to handle keybindings for extensions. 4. The practicalities of handling user configuration of extension keybindings are these: a) extension keybindings will need to be defined in one of idle's new configuration files (probably most properly in the relevant sections of config-extensions.def), _not_ inside the extension source modules. b) whatever mechanism is implemented for allowing user configuration of extension keybindings (at the moment I have several different possible approaches in mind) it must allow this configuration to participate in the general abilty to handle and resolve potential clashes between keybindings that will be a part of the core keybinding config handling. (ie. obviously you can't use the same keybindings more than once, in any given keybinding set, for core keybindings, _or_ extensions). > As an IDLE user, for me is more useful to have > a way to specify keybindings in an non-OS manner but rather > in a scheme and user configurable way (that include standard > extensions and the ones written by me!), than to do it GUI. For sure the 'sensible implementation' is much more important than the gui (and of course can and should exist happily without it ), but the goal of the new config implementation is to also have easy gui configuration, to make idle a more comfortable environment for one and all, including those who would never edit config files by hand. Regards, Stephen. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From hernan@orgmf.com.ar Thu Dec 6 10:53:43 2001 From: hernan@orgmf.com.ar (Hernan Martinez Foffani) Date: Thu, 6 Dec 2001 11:53:43 +0100 Subject: [Idle-dev] RE: idlefork - keybinding config / idle extensions In-Reply-To: <200112060046.fB60kVJ13409@mail004.syd.optusnet.com.au> Message-ID: > De: Stephen M. Gava [mailto:elguavas@users.sourceforge.net] > Really the points are these: > > 1. Moving from 'platform' oriented keybindings to user oriented > ones. I must > admit that this one is slightly more than just a 'proposal', since I've > already implemented things this way... 8^) , so, more properly > consder this a 'news item'. Glad to hear it! Great! > 2. It's 'one in all in'. It really isn't possible to satisfactorily > implement user configurable key bindings for idle 'core', while > leaving extension's key bindings hard-coded in their modules. > This problem > with extensions needs to be addressed in some way. Now. (see point 4 also) Ah, ok! I just thought that you could use the hard-coded key bindings as a) to find at runtime all the events the extension needs to be bound to keys, b) as a 'fallthru default' and c) for a smooth transition of older extension. But these are all implementation issues for which, as I read in the 4.b paragraph, you are studying several approaches. > 3. SearchBindings.py is a special case since I'm firmly convinced > that the functions it implements are core to idle, not peripheral or > optional, and so I think it's keybindings sould be part of the idle > core keybindings and therefore handled by the idle core keybinding > configuration mechanism, not by whatever additional mechanism is > put in place to handle keybindings for extensions. Ok. So this is a refactoring thing. None of my business here :-) But, please, do not end making all the standard extension a big ball. At least leave one (CallTips, or any other) out so we can use it as an extension sample. I know you will. Or should I say you won't? Well, you know what I mean... :-P > 4. The practicalities of handling user configuration of extension > keybindings are these: > a) extension keybindings will need to be defined in one of idle's new > configuration files (probably most properly in the relevant sections of > config-extensions.def), _not_ inside the extension source modules. > b) whatever mechanism is implemented for allowing user configuration of > extension keybindings (at the moment I have several different possible > approaches in mind) it must allow this configuration to participate in > the general abilty to handle and resolve potential clashes between > keybindings that will be a part of the core keybinding config handling. > (ie. obviously you can't use the same keybindings more than once, in > any given keybinding set, for core keybindings, _or_ extensions). You realized that there were several things to consider that I did't think of. Fine for me! > > As an IDLE user, for me is more useful to have > > a way to specify keybindings in an non-OS manner but rather > > in a scheme and user configurable way (that include standard > > extensions and the ones written by me!), than to do it GUI. > > For sure the 'sensible implementation' is much more important > than the gui (and of course can and should exist happily without > it ), but the goal of the new config implementation is to also have > easy gui configuration, to make idle a more comfortable environment > for one and all, including those who would never edit config files > by hand. Hey! If you insist that I can take the lemon-pie with the Combo all for free, you'll double my smile ! :-) Well, sorry that you've got to clarify all this. I'll help you with the future testings. Thanks and regards, -Hernan. From elguavas@users.sourceforge.net Thu Dec 6 11:34:43 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Thu, 6 Dec 2001 22:34:43 +1100 Subject: [Idle-dev] Re: idlefork - keybinding config / idle extensions In-Reply-To: References: Message-ID: <200112061133.fB6BXwO15930@mail016.syd.optusnet.com.au> > Well, sorry that you've got to clarify all this. Not at all. It's good that I got the excuse to clarify since I've gotten several emails with useful suggestions from doing so. > I'll help you > with the future testings. Great. Stephen. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From Keila - Curitiba" Ol=E1! Veja meu site pessoal. Basta clicar no endere=E7o abaixo. GARANTO SER SUI-GENERIS - CLIQUE ABAIXO: http://www.pastorinha.atfreeweb.com Mais de 162.000 internautas visitaram a PG., existe 6 =C1lbuns: Se voc=EA 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=EA poder=E1 saber muito mais sobre mim! Obrigada. e-mail: arosadesaron@zipmail.com.br Beijos:- Keila - Curitiba - Pr - Podes falar comigo, direto dela. Brevemente uma Carta Aberta. - Embora derrubem a p=E1gina eu a subo em 3 horas novamente. "Esta mensagem =E9 enviada com a complac=EAncia da nova legisla=E7=E3o=20 sobre correio eletr=F4nico, Se=E7=E3o 301, Par=E1grafo (a) (2) (c) Decreto S. 1= 618, T=EDtulo Terceiro aprovado pelo "105=BA Congresso Base das Normativas Internacionais sobre o SPAM". Este E-mail n=E3o poder=E1 ser considerado SPAM quando incluir uma forma de ser removido. Para ser removido de futuros correios, simplesmente responda indicando no Assunto: REMOVER" From welcome" To be removed from this list simply reply with remove in the subject line. Dear Webmaster, Okay you have a great web site? Submitted to all of the search engines? Even hired some college kid to "promote" you to all of the FFA boards that nobody ever reads? If so I guess that you monthly site traffic is probably in the region of 10 to 100 visitors if you are lucky and you are feeling rather depressed - right? Well we have the definitive answer - we positively guarantee you high quality, genuine traffic to your web site. We make just one 100% guaranteed and solid promise to you - "WE WILL GET PEOPLE LOOKING AT YOUR WEB SITE WITHIN A MONTH - AND IF WE DON'T GET THE AMOUNT OF VISITORS TO YOU THAT WE PROMISE YOU CAN HAVE YOUR MONEY BACK - period" Take a few seconds to see what you get from TrafficFusion.Com The Ultimate Traffic Source ! http://www.trafficfusion.com This the one and only package of it's kind you will never find a more complete source to drive traffic to your web site and it is only being offered for a limited time! Here's What You'll Get: 1,000 Guaranteed Visitors every month for one full year! ($19.95 Value every Month!) 5,000 FREE Banner Impressions Guaranteed every month for one full year! ($24.95 Value every Month!) $500 in FREE Keywords on a Major Search Engine! (That's 50,000 targeted visitors) Free Submission of your Press Release to over 2,500 Media Sources Nationwide every month for one full year! (That's $249 Value!) E-Mail over 1,000,000 Opt-in subscribers daily! Spam Free! (That's a $199 monthly Value) That's a yearly Value of Over $3500 Yours for less than you pay for hosting every month!! You'll Also Get "Guaranteed Hits Secrets Exposed" This package shows you how to generate up to 1,000 hits per hour anytime you want to (and even shows you how to make that 1,000 hits equal even more!). You will have Full Resale Rights to resell the "Guaranteed Hits Secrets Exposed" for any price you choose! (This sells daily on eBay for $199) You'll Also Get: Instant Access To To 1,000's of Resources! Free multi-submission to 100,000's of sites; Instantly! 1000's of FREE reports, ebooks, tutorials and more! Dozens of FREE traffic building tools! Huge collection of home-based internet business links and resources! FREE software including submission utilities, FREE ebook compiler software, meta-tag optimization tools, etc.! Links to over 10,000 FREE ad sites including search engines, classifieds, ffa pages, etc.! FREE webmaster services such as link and html checkers, keyword utilities, doorway page generators, color and graphics tools, etc. FREE web graphics for your website including logo templates, borders & backgrounds, buttons, ebook graphics ,etc. Plus much more! http://www.trafficfusion.com If you are serious about the success of your site give us a shot! There will never be another opportunity to get such a complete promotional package! This is not a quick fix! We will deliver traffic to your site month after month! This is a Full 1 Year membership in our program! We are the traffic professionals! Thanks http://www.trafficfusion.com From pobrien@orbtech.com Tue Dec 11 01:41:20 2001 From: pobrien@orbtech.com (Patrick K. O'Brien) Date: Mon, 10 Dec 2001 19:41:20 -0600 Subject: [Idle-dev] FW: [wxPython] Changin font size in Idle Message-ID: Richard, I've forwarded your question to the IDLE list. --- Patrick K. O'Brien Orbtech.com - Your Source For Python Development Services Phone: 314-963-3206 -----Original Message----- From: wxpython-users-admin@lists.wxwindows.org [mailto:wxpython-users-admin@lists.wxwindows.org]On Behalf Of richard terry Sent: Monday, December 10, 2001 7:32 PM To: wxpython-users@lists.wxwindows.org Subject: [wxPython] Changin font size in Idle Newbie question 've been trying to make the font size bigger in Idle for my aging eyes, and noted the documentation talks about changing font size in windows by not in linux The only line I found is like this: text['font'] = edconf.get('font-name'), edconf.get('font-size') How can I make the font's bigger. Thanks in anticipation. _______________________________________________ wxpython-users mailing list wxpython-users@lists.wxwindows.org http://lists.wxwindows.org/mailman/listinfo/wxpython-users From aurumxxl@polbox.com Wed Dec 12 17:12:25 2001 From: aurumxxl@polbox.com (Irmingard Anna Kotelev) Date: Wed, 12 Dec 2001 17:12:25 Subject: [Idle-dev] New York Remembrance Message-ID: <09cef0613160cc1WEB5276@mailto.t-online-com.de> Dear friends, the madness incarnate of September 11th, 2001 is one which will never be forgotten. How could it be? This shook the entire world, and my heart was broken along with all of yours. I have created a slide show in respectful tribute to all who passed, as well as the heroics of the people. I know that America...the world... will not allow this attack to ruffle it's feathers, and I stand and applaude for the strength and resolve of it's people. God bless America...God bless the world. Do sign my 'Response to this Tribute' if compelled and please pass this on to at least one friend. http://www.aurumxxl.de/ny/ny.htm Irmingard Anna Kotelev Photographer 21th of September 2001 If you have received this email by error, please excuse it, and me for sending it. Thank you. IAK From bizopp2002us@yahoo.com Wed Dec 12 20:52:42 2001 From: bizopp2002us@yahoo.com (John McCuullen) Date: Wed, 12 Dec 2001 21:52:42 +0100 Subject: [Idle-dev] The Secret to Supercharge your MLM! Message-ID: <951561-2200112312205242270@yahoo.com> Discover "The Secret to Supercharge your MLM!"=20 A must read=2E=2E=2E=20 Hi there,=20 The secret is out!=20 Here's the mail we've all been waiting for! Read carefully and take immediate action on it!=20 I've discovered an amazing formula that will give your MLM an enormous enrollers explosion=2E You'll benefit hugely if you use it with YOUR primary MLM!=20 -THE ULTIMATE RECRUITMENT FORMULA-=20 So if you are already in MLM or about to get into one this will be the most important mail you will ever read=2E=20 Right now I know people who enroll dozens in their downlines WEEKLY using the formula I'm about to reveal=2E=20 Fred Stege, Founder of the company enrolled 127 people within 7 day's after launching! One of his enrollees from this batch has become top recruiter in his company within 90 days after using this incredible easy-to-use concept=2E=20 The NEW Formula is meant as a Front End Program to enhance "YOUR" MLM=2E I'm NOT pitching you in any MLM=2E ____________________________________________ In fact you may try it for absolutely FREE and you'll get an electrifying stack of tools straight away! ____________________________________________=20 We've discovered that the majority of Qualified MLM Leads (Prospects) all have 1 thing in common=2E=2E=2E=20 They all are looking for 3 things they desperately want and can't get in any one 100% generic System=2E=2E=2E=20 I just know that you'll agree with these 3 things and they are all to your advantage!=20 Let me reveal you the 3 most sought after topics first:=20 =B7 Cutting Edge MLM Information=2E =B7 A Legitimate Proven Formula=2E =B7 Pre Qualified Leads=2E (And how to get them for FREE)=20 Isn't that what everybody is looking for?=2E=2E Will these topics ever go out of style?=2E=2E Doesn't THAT Attract the Masses?=2E=2E=20 Does 'OLD SCHOOL MLM' attract the masses?=2E=2E=20 Discover "How you can EARN RESIDUAL INCOME While Recruiting on Auto Pilot whether they join your MLM or not!"=20 Welcome to 21st Century Massive Recruitment=2E=20 I encourage you to check the details and sign up immediately=2E That means NOW!=20 For more info please mail to mccuullen47@zonnet=2Enl and write your First Name + 'MORE INFO' in the subject line=2E You'll receive further instructions immediately=2E=20 Sincerely,=20 John McCuullen P=2ES=2E Don't forget to write your FIRST NAME + 'MORE INFO' In Subject line!=20 P=2EP=2ES=2E On the given site you'll find a secret that every PRO in our industry knows and uses=2E=2E=2E It's called: S-L-L-G: Self Liquidating Lead Generation=2E It will Create a Huge, Electrifying Surge in Your Cash Flow=2E=20 P=2EP=2EP=2ES=2E Find out the NEW 3 foot rule in MLM=2E "Why Old School MLM is nearly dead=2E"=20 From list_removing1@yahoo.com Thu Dec 13 01:24:50 2001 From: list_removing1@yahoo.com (list_removing1@yahoo.com) Date: Thu, 13 Dec 2001 01:24:50 Subject: [Idle-dev] Interesting Stuff Message-ID: <10.181485.175230@yahoo.com> Hello Folks! Ever Wonder How Male Porn Stars Have Such a Huge Cock? All the Secrets Revealed, Natural Enlargement, Our Methods Are Doctor Tested And Approved! Gain 1-3 inches Now! Go to http://www.thepeniszone.com/qa and check it out for yourself! _______________________________________________________________ You are in an opt-in list, if you do not want to be contacted by this party again, simply email: list_removing@yahoo.com with the word REMOVE in the subject. Sorry for any problems caused! ______________________________________________________________ From axis@mk178.dyndns.info Thu Dec 13 11:10:44 2001 From: axis@mk178.dyndns.info (axis@mk178.dyndns.info) Date: Thu, 13 Dec 2001 20:10:44 +0900 Subject: [Idle-dev] =?ISO-2022-JP?B?GyRCIXolKCVDJTAlRiUjITwlcyF6GyhC?= Message-ID: <20011213111115801.00000.45.axis@e-001.127.0.0.1> $B!z%(%C%0%F%#!<%s!z(B [$BCK@-(B] 12/25$B$^$G(B3000$B1_$G;H$$J|Bj"v(B http://www.eggteen.com $B%$%V$NLk!"%"%J%?$OC/$H(B $B2a$4$7$^$9$+!#!#!#!)(B [$B=w@-(B] $B=w$N;R$K$O!&!&!&!#(B (/--)/$B!A"v(B http://www.eggteen.com $B=q$-9~$^$J$$$H;O$^$s$J$$$h$s!y(B From Andy Sy" Message-ID: <00ac01c184f5$0a632c10$1764a8c0@bartgonefn0vjy> Python together with IDLE (or a different interpreted environment perhaps?) should make for one of the most excellent environment for interactive experimentation with graphics APIs like PyGame and OpenGL. The scripting possibilities are potentially unlimited. However, there seem to quite a few, small, but niggling, issues with interaction with a graphics window at least under Windoze. Because PythonWin exhibits very similar (but somewhat worse iirc) problems, I wonder if the problem is that Python's threading model itself makes it unsuitable for this kind of environment (which would be tragic). I've encountered 2 bugs under IDLE which I'll mention here: After doing >>> import pygame You can do >>> pygame.init() >>> surf=pygame.display.set_mode((200,200)) >>> pygame.display.update() >>> pygame.quit() as often as you please. But remove the assignment to surf and you get an application error on the second set_mode()! (BUG #1) Also after each pygame.quit(), IDLE freezes and you have to right-click on the IDLE entry in the start menu bar to get it to wake up. (BUG #2) Pete Shinners has discussed BUG#2 before, here is the excerpt: ============================================= > Hmm this is strange, in Win2K SP 1, > when I do a pygame.quit(), IDLE > freezes or does not repaint the > screen. Not until I right click > (left-click doesn't work) on the > taskbar button corresponding to the > IDLE window. Pygame.Quit()'s fault > or IDLE's fault? yeah, i just tested this too and got the same results. i think technically this would be an IDLE problem, but it is very likely that pygame/SDL is not being very cooperative also. i think most of the problem comes from the fact that tkinter and pygame are both written in a way that they expect they will be the only part of the program dealing with windows in their process. i'm pretty sure this can't really be fixed in the tkinter/pygame libraries, but would have to be dealt with in the underlying libraries, tcltk/sdl. actually. the IDLE editor seems to do a much better job than pythonwin which seems to always crash and die when initializing pygame. my guess here is that IDLE is doing a better job of keeping the interactive interpreter in a separate thread. anyways. no real solution for you here, but i don't believe there are any ongoing offorts to get this fixed up. i'd start with the IDLE team though, since their app does return, they might be able to detect the 'freeze' and fix it easily? From Andy Sy" Another interesting situation, can anyone explain it? >>> import pygame; from pygame.locals import *; from pygame import draw; from OpenGL.GL import * >>> pygame.init();pygame.display.set_mode((640,480),OPENGL|DOUBLEBUF) >>> glMatrixMode(GL_PROJECTION);glLoadIdentity();glOrtho(0,640,0,480,-1,1) >>> glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glColor3f ( 255.0, 0.0, 0.0 ) >>> glBegin (GL_TRIANGLES);glVertex2i (200, 100);glVertex2i (320, 300);glVertex2i (440, 100);glEnd() Now for the weird thing: >>> while(1): pygame.display.flip(); print "1", works, however >>> while(1): pygame.display.flip(); locks up IDLE, and you can't do a Ctrl-C or Ctrl-Break. Nor does it seem to be a question of delay. A time.sleep() or time.clock() or for delay inserted after flip() still introduces the lockup. Only the print works. I hope it hasn't escaped your notice how Python/PyGame/PyOpenGL/IDLE virtually turns OpenGL from an API into a scripting 3D Graphics language! If all the kinks were ironed out, this would be awesome!!! From elguavas@users.sourceforge.net Sat Dec 15 00:40:47 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Sat, 15 Dec 2001 11:40:47 +1100 Subject: [Idle-dev] Whose fault? IDLE, PyGame, or TKinter? In-Reply-To: <00ac01c184f5$0a632c10$1764a8c0@bartgonefn0vjy> References: <00ac01c184f5$0a632c10$1764a8c0@bartgonefn0vjy> Message-ID: <200112150039.fBF0dpJ17437@mail004.syd.optusnet.com.au> What version of idle are you using? If it is one of the versions that come as part of the python distribution, then that version of idle makes no attempt to run python processes that are being 'executed' from the envoronment in a separate thread. The vpython heritage versions of idle (which include idlefork up to release 0.81) do attempt to execute processes in a separate thread, however there are currently some problems with that implementation. Idlefork itself is currently undegoing a massive rewrite of its configuration handling mechanism which I hope will be completed by some time early next year. After that (if no-one else hops in to start this in the meantime) I will move on to the separate process execution code, with a view to cleaning things up there and getting the best working implementation in place. Regards, Stephen. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From elguavas@users.sourceforge.net Sun Dec 16 22:46:18 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Mon, 17 Dec 2001 09:46:18 +1100 Subject: [Idle-dev] test, please ignore Message-ID: <200112162245.fBGMjJu25649@mail012.syd.optusnet.com.au> I've sent two messages to the list that don't seem to have appeared, so this is just a test to see if this gets through. Please ignore. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From elguavas@users.sourceforge.net Sun Dec 16 22:51:52 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Mon, 17 Dec 2001 09:51:52 +1100 Subject: [Idle-dev] Whose fault? IDLE, PyGame, or TKinter? Message-ID: <200112162250.fBGMoru31606@mail012.syd.optusnet.com.au> Since my test worked, lets try this again. I sent this followup message soon after my original post on this topic, but it hasn't appeared on idle-dev yet so I'm trying again. Andy, if the followup got through to you the first or second time, apologies for the repeat. Stephen M. Gava wrote: > attempt to execute processes in a separate thread, however there are Actually I said 'execute processes in a separate thread' twice in my original reply when I meant to say 'execute code in a separate process', still the upshot is the same for the problems you are encountering I think (when executing from idle), which is that in regular python idle 'run' (or executed) code is executed in the same process as the IDE itself (which embodies idle's tkinter event loop), so you can get all sorts of problems along the lines you've mentionned when attempting to execute code that implements other graphical interface event loops in particular. This is the problem that the 'separate process execution' code in idlefork is attempting to address. Stephen. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From elguavas@users.sourceforge.net Sun Dec 16 23:02:45 2001 From: elguavas@users.sourceforge.net (Stephen M. Gava) Date: Mon, 17 Dec 2001 10:02:45 +1100 Subject: [Idle-dev] Whose fault? IDLE, PyGame, or TKinter? Message-ID: <200112162301.fBGN1ku11354@mail012.syd.optusnet.com.au> Since my test worked, lets try this again. I sent this followup message soon after my original post on this topic, but it hasn't appeared on idle-dev yet so I'm trying again. Stephen M. Gava wrote: > attempt to execute processes in a separate thread, however there are Actually I said 'execute processes in a separate thread' twice in my original reply when I meant to say 'execute code in a separate process', still the upshot is the same for the problems you are encountering I think (when executing from idle), which is that in regular python idle 'run' (or executed) code is executed in the same process as the IDE itself (which embodies idle's tkinter event loop), so you can get all sorts of problems along the lines you've mentionned when attempting to execute code that implements other graphical interface event loops in particular. This is the problem that the 'separate process execution' code in idlefork is attempting to address. Stephen. -- Stephen M. Gava IDLEfork ( http://idlefork.sourceforge.net ) " just like IDLE, only crunchy " From vg@lm322.ath.cx Mon Dec 17 08:10:31 2001 From: vg@lm322.ath.cx (vg@lm322.ath.cx) Date: Mon, 17 Dec 2001 17:10:31 +0900 Subject: [Idle-dev] =?ISO-2022-JP?B?GyRCIVgbKEogGyRCJGokLCEmJDghPBsoSiAbJEIhWRsoQg==?= Message-ID: <20011217081102638.00000.112.vg@e-001.127.0.0.1> $B!X(B $B$j$,!&$8!<(B $B!Y(B http://www.liga-z.com $B!J!&!&!)!K(B From christina.courtemarche@deitel.net Mon Dec 17 15:00:41 2001 From: christina.courtemarche@deitel.net (Christina Courtemarche) Date: Mon, 17 Dec 2001 10:00:41 -0500 Subject: [Idle-dev] Using IDLE's debugger on Windows Message-ID: I can't seem to set breakpoints. I'm using IDLE version .8 on Windows 2000. I read documentation on IDLE version .5 that states that this functionality was not implemented for Windows. Is this still the case? From cyakycfn@mail.plutz.jp Fri Dec 21 03:32:29 2001 From: cyakycfn@mail.plutz.jp (=?ISO-2022-JP?B?GyRCJDRPIk1tISobKEI=?=) Date: Fri, 21 Dec 2001 12:32:29 +0900 Subject: [Idle-dev] =?ISO-2022-JP?B?GyRCJDRPIk1tISobKEI=?= Message-ID: <1221101123229.1353@azkah> $B$3$NEY!"!V0lH/Ce%a%m!W$rN)$A>e$2$^$7$?!A!#(B $B7HBS$KCe%a%m$rMn$H$9;~$K!"(Bi$B%b!<%I$N%5%$%H$J$I$GC5$9$s$G$9$,(B $B$J$+$J$+!"(BDL$B@h$K$?$I$jCe$1$J$$$s$G$9$h$M!A!#(B $B$0$k$0$k%j%s%/@h$r2s$5$l$k$@$1$G!&!&!#(B 3$BJ,8e$K!&!&!V$^$?$3$3$KLa$C$FMh$?!&!&!W$C$F;v$b$"$j$^$9$M!A!J$K$c$O$O!K(B $BK!N'$,$d$d$3$7$$$N$G!"<+J,$G$O$d$C$F$$$^$;$s$,!"(B $B@8$-$F$k=j$OCN$C$F$*$j$^$9!#(B $B$=$3$G!";d$,3NG':Q$_$N=j$r%5%$%H$K>R2p$7$F$*$j$^$9!#(B $B:\$;$F$$$k$N$OA4It $B!y$3$3$"$W$j!y(B http://www.cocoap.com $B4($5$,DK$/$J$kA0$K!"(B $BAGE,$J$L$/$b$j8+$D$1$^$;$s$+!)(B $BM'C#>R2p$G(B+20$B#p#t(B http://www.cocoap.com From dyoo@hkn.eecs.berkeley.edu Sat Dec 29 20:03:27 2001 From: dyoo@hkn.eecs.berkeley.edu (Danny Yoo) Date: Sat, 29 Dec 2001 12:03:27 -0800 (PST) Subject: [Idle-dev] Re: [Tutor] RE...Quest from PRJoshi [fixing IDLE] In-Reply-To: Message-ID: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --545280650-578560010-1009656207=:13114 Content-Type: TEXT/PLAIN; charset=US-ASCII On Sat, 29 Dec 2001, Pravin Raj Joshi wrote: > I have both the files in the following path: > c:\python\nepali_converter\ When I compile them from outside Idle > (using command-line interpreter) they work perfect, but from inside > Idle here is the message I get and the program fails. I am using the > one that comes with Python 2.2. > > #------------------------------------------------------ > >>> > Traceback (most recent call last): > File "C:\Python\nepali_converter\test.py", line 2, in ? > from trailabout import abouttrail > ImportError: No module named trailabout Ok, I just checked this out. Nothing's wrong with your program. Instead, this feels like an IDLE bug to me. Try "Import Module" instead --- it's right next to the Run Script command in the window. It appears to behave more nicely. I wonder why? Let me check on this... Hmmm...*shuffle shuffle* .... Ah! The problem is that "Run Script" uses Python's 'execfile()' function to run a script. The bug is that IDLE doesn't add "C:\Python\nepali_converter" to the sys.path directory list. What this means is that when your file tries to import 'abouttrail', IDLE has no clue where to find it. IDLE is itself written in Python, so if we feel brave, we can fix this problem if we're willing to look at the source. The file 'ScriptBinding.py' within the IDLE directory has a function called "run_script_event()" which does the work when we "Run Script". Take a look: ### def run_script_event(self, event): filename = self.getfilename() if not filename: return flist = self.editwin.flist shell = flist.open_shell() interp = shell.interp if (not sys.argv or os.path.basename(sys.argv[0]) != os.path.basename(filename)): # XXX Too often this discards arguments the user just set... sys.argv = [filename] interp.execfile(filename) ### The important part is right at the bottom: it just calls execfile(), but doesn't fix sys.path before doing this. A possible fix for this would be to forcefully set up sys.path to do the right thing: ### def run_script_event(self, event): filename = self.getfilename() if not filename: return flist = self.editwin.flist shell = flist.open_shell() interp = shell.interp if (not sys.argv or os.path.basename(sys.argv[0]) != os.path.basename(filename)): # XXX Too often this discards arguments the user just set... sys.argv = [filename] old_syspath = sys.path[:] sys.path.append(os.path.dirname(os.path.abspath(filename))) interp.execfile(filename) sys.path = old_syspath ### and this appears to fix the problem. I've attached the fixed ScriptBinding.py file to this message. You can copy this to "C:\Python2.2\Tools\idle" directory (but make a backup copy of ScriptBinding.py just in case I messed up). Afterwards, if you restart IDLE, things should work. I'll send this message also to the IDLE folks too and see if they like this approach. Good luck to you. --545280650-578560010-1009656207=:13114 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="ScriptBinding.py" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="ScriptBinding.py" IiIiRXh0ZW5zaW9uIHRvIGV4ZWN1dGUgY29kZSBvdXRzaWRlIHRoZSBQeXRo b24gc2hlbGwgd2luZG93Lg0KDQpUaGlzIGFkZHMgdGhlIGZvbGxvd2luZyBj b21tYW5kcyAodG8gdGhlIEVkaXQgbWVudSwgdW50aWwgdGhlcmUncyBhDQpz ZXBhcmF0ZSBQeXRob24gbWVudSk6DQoNCi0gQ2hlY2sgbW9kdWxlIChBbHQt RjUpIGRvZXMgYSBmdWxsIHN5bnRheCBjaGVjayBvZiB0aGUgY3VycmVudCBt b2R1bGUuDQpJdCBhbHNvIHJ1bnMgdGhlIHRhYm5hbm55IHRvIGNhdGNoIGFu eSBpbmNvbnNpc3RlbnQgdGFicy4NCg0KLSBJbXBvcnQgbW9kdWxlIChGNSkg aXMgZXF1aXZhbGVudCB0byBlaXRoZXIgaW1wb3J0IG9yIHJlbG9hZCBvZiB0 aGUNCmN1cnJlbnQgbW9kdWxlLiAgVGhlIHdpbmRvdyBtdXN0IGhhdmUgYmVl biBzYXZlZCBwcmV2aW91c2x5LiBUaGUNCm1vZHVsZSBpcyBhZGRlZCB0byBz eXMubW9kdWxlcywgYW5kIGlzIGFsc28gYWRkZWQgdG8gdGhlIF9fbWFpbl9f DQpuYW1lc3BhY2UuICBPdXRwdXQgZ29lcyB0byB0aGUgc2hlbGwgd2luZG93 Lg0KDQotIFJ1biBtb2R1bGUgKENvbnRyb2wtRjUpIGRvZXMgdGhlIHNhbWUg YnV0IGV4ZWN1dGVzIHRoZSBtb2R1bGUncw0KY29kZSBpbiB0aGUgX19tYWlu X18gbmFtZXNwYWNlLg0KDQoiIiINCg0KaW1wb3J0IHN5cw0KaW1wb3J0IG9z DQppbXBvcnQgaW1wDQppbXBvcnQgdGtNZXNzYWdlQm94DQoNCmluZGVudF9t ZXNzYWdlID0gIiIiRXJyb3I6IEluY29uc2lzdGVudCBpbmRlbnRhdGlvbiBk ZXRlY3RlZCENCg0KVGhpcyBtZWFucyB0aGF0IGVpdGhlcjoNCg0KKDEpIHlv dXIgaW5kZW50YXRpb24gaXMgb3V0cmlnaHQgaW5jb3JyZWN0IChlYXN5IHRv IGZpeCksIG9yDQoNCigyKSB5b3VyIGluZGVudGF0aW9uIG1peGVzIHRhYnMg YW5kIHNwYWNlcyBpbiBhIHdheSB0aGF0IGRlcGVuZHMgb24gXA0KaG93IG1h bnkgc3BhY2VzIGEgdGFiIGlzIHdvcnRoLg0KDQpUbyBmaXggY2FzZSAyLCBj aGFuZ2UgYWxsIHRhYnMgdG8gc3BhY2VzIGJ5IHVzaW5nIFNlbGVjdCBBbGwg Zm9sbG93ZWQgXA0KYnkgVW50YWJpZnkgUmVnaW9uIChib3RoIGluIHRoZSBF ZGl0IG1lbnUpLiIiIg0KDQpjbGFzcyBTY3JpcHRCaW5kaW5nOg0KDQogICAg a2V5ZGVmcyA9IHsNCiAgICAgICAgJzw8Y2hlY2stbW9kdWxlPj4nOiBbJzxB bHQtRjU+JywgJzxNZXRhLUY1PiddLA0KICAgICAgICAnPDxpbXBvcnQtbW9k dWxlPj4nOiBbJzxGNT4nXSwNCiAgICAgICAgJzw8cnVuLXNjcmlwdD4+Jzog Wyc8Q29udHJvbC1GNT4nXSwNCiAgICB9DQoNCiAgICBtZW51ZGVmcyA9IFsN CiAgICAgICAgKCdlZGl0JywgW05vbmUsDQogICAgICAgICAgICAgICAgICAo J0NoZWNrIG1vZHVsZScsICc8PGNoZWNrLW1vZHVsZT4+JyksDQogICAgICAg ICAgICAgICAgICAoJ0ltcG9ydCBtb2R1bGUnLCAnPDxpbXBvcnQtbW9kdWxl Pj4nKSwNCiAgICAgICAgICAgICAgICAgICgnUnVuIHNjcmlwdCcsICc8PHJ1 bi1zY3JpcHQ+PicpLA0KICAgICAgICAgICAgICAgICBdDQogICAgICAgICks DQogICAgXQ0KDQogICAgZGVmIF9faW5pdF9fKHNlbGYsIGVkaXR3aW4pOg0K ICAgICAgICBzZWxmLmVkaXR3aW4gPSBlZGl0d2luDQogICAgICAgICMgUHJv dmlkZSBpbnN0YW5jZSB2YXJpYWJsZXMgcmVmZXJlbmNlZCBieSBEZWJ1Z2dl cg0KICAgICAgICAjIFhYWCBUaGlzIHNob3VsZCBiZSBkb25lIGRpZmZlcmVu dGx5DQogICAgICAgIHNlbGYuZmxpc3QgPSBzZWxmLmVkaXR3aW4uZmxpc3QN CiAgICAgICAgc2VsZi5yb290ID0gc2VsZi5mbGlzdC5yb290DQoNCiAgICBk ZWYgY2hlY2tfbW9kdWxlX2V2ZW50KHNlbGYsIGV2ZW50KToNCiAgICAgICAg ZmlsZW5hbWUgPSBzZWxmLmdldGZpbGVuYW1lKCkNCiAgICAgICAgaWYgbm90 IGZpbGVuYW1lOg0KICAgICAgICAgICAgcmV0dXJuDQogICAgICAgIGlmIG5v dCBzZWxmLnRhYm5hbm55KGZpbGVuYW1lKToNCiAgICAgICAgICAgIHJldHVy bg0KICAgICAgICBpZiBub3Qgc2VsZi5jaGVja3N5bnRheChmaWxlbmFtZSk6 DQogICAgICAgICAgICByZXR1cm4NCg0KICAgIGRlZiB0YWJuYW5ueShzZWxm LCBmaWxlbmFtZSk6DQogICAgICAgIGltcG9ydCB0YWJuYW5ueQ0KICAgICAg ICBpbXBvcnQgdG9rZW5pemUNCiAgICAgICAgZiA9IG9wZW4oZmlsZW5hbWUs ICdyJykNCiAgICAgICAgdHJ5Og0KICAgICAgICAgICAgdGFibmFubnkucHJv Y2Vzc190b2tlbnModG9rZW5pemUuZ2VuZXJhdGVfdG9rZW5zKGYucmVhZGxp bmUpKQ0KICAgICAgICBleGNlcHQgdG9rZW5pemUuVG9rZW5FcnJvciwgbXNn Og0KICAgICAgICAgICAgc2VsZi5lcnJvcmJveCgiVG9rZW4gZXJyb3IiLA0K ICAgICAgICAgICAgICAgICAgICAgICAgICAiVG9rZW4gZXJyb3I6XG4lcyIg JSBzdHIobXNnKSkNCiAgICAgICAgICAgIHJldHVybiAwDQogICAgICAgIGV4 Y2VwdCB0YWJuYW5ueS5OYW5ueU5hZywgbmFnOg0KICAgICAgICAgICAgIyBU aGUgZXJyb3IgbWVzc2FnZXMgZnJvbSB0YWJuYW5ueSBhcmUgdG9vIGNvbmZ1 c2luZy4uLg0KICAgICAgICAgICAgc2VsZi5lZGl0d2luLmdvdG9saW5lKG5h Zy5nZXRfbGluZW5vKCkpDQogICAgICAgICAgICBzZWxmLmVycm9yYm94KCJU YWIvc3BhY2UgZXJyb3IiLCBpbmRlbnRfbWVzc2FnZSkNCiAgICAgICAgICAg IHJldHVybiAwDQogICAgICAgIHJldHVybiAxDQoNCiAgICBkZWYgY2hlY2tz eW50YXgoc2VsZiwgZmlsZW5hbWUpOg0KICAgICAgICBmID0gb3BlbihmaWxl bmFtZSwgJ3InKQ0KICAgICAgICBzb3VyY2UgPSBmLnJlYWQoKQ0KICAgICAg ICBmLmNsb3NlKCkNCiAgICAgICAgaWYgJ1xyJyBpbiBzb3VyY2U6DQogICAg ICAgICAgICBpbXBvcnQgcmUNCiAgICAgICAgICAgIHNvdXJjZSA9IHJlLnN1 YihyIlxyXG4iLCAiXG4iLCBzb3VyY2UpDQogICAgICAgIGlmIHNvdXJjZSBh bmQgc291cmNlWy0xXSAhPSAnXG4nOg0KICAgICAgICAgICAgc291cmNlID0g c291cmNlICsgJ1xuJw0KICAgICAgICB0cnk6DQogICAgICAgICAgICBjb21w aWxlKHNvdXJjZSwgZmlsZW5hbWUsICJleGVjIikNCiAgICAgICAgZXhjZXB0 IChTeW50YXhFcnJvciwgT3ZlcmZsb3dFcnJvciksIGVycjoNCiAgICAgICAg ICAgIHRyeToNCiAgICAgICAgICAgICAgICBtc2csIChlcnJvcmZpbGVuYW1l LCBsaW5lbm8sIG9mZnNldCwgbGluZSkgPSBlcnINCiAgICAgICAgICAgICAg ICBpZiBub3QgZXJyb3JmaWxlbmFtZToNCiAgICAgICAgICAgICAgICAgICAg ZXJyLmFyZ3MgPSBtc2csIChmaWxlbmFtZSwgbGluZW5vLCBvZmZzZXQsIGxp bmUpDQogICAgICAgICAgICAgICAgICAgIGVyci5maWxlbmFtZSA9IGZpbGVu YW1lDQogICAgICAgICAgICBleGNlcHQ6DQogICAgICAgICAgICAgICAgbGlu ZW5vID0gTm9uZQ0KICAgICAgICAgICAgICAgIG1zZyA9ICIqKiogIiArIHN0 cihlcnIpDQogICAgICAgICAgICBpZiBsaW5lbm86DQogICAgICAgICAgICAg ICAgc2VsZi5lZGl0d2luLmdvdG9saW5lKGxpbmVubykNCiAgICAgICAgICAg IHNlbGYuZXJyb3Jib3goIlN5bnRheCBlcnJvciIsDQogICAgICAgICAgICAg ICAgICAgICAgICAgICJUaGVyZSdzIGFuIGVycm9yIGluIHlvdXIgcHJvZ3Jh bTpcbiIgKyBtc2cpDQogICAgICAgIHJldHVybiAxDQoNCiAgICBkZWYgaW1w b3J0X21vZHVsZV9ldmVudChzZWxmLCBldmVudCk6DQogICAgICAgIGZpbGVu YW1lID0gc2VsZi5nZXRmaWxlbmFtZSgpDQogICAgICAgIGlmIG5vdCBmaWxl bmFtZToNCiAgICAgICAgICAgIHJldHVybg0KDQogICAgICAgIG1vZG5hbWUs IGV4dCA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShmaWxl bmFtZSkpDQogICAgICAgIGlmIHN5cy5tb2R1bGVzLmhhc19rZXkobW9kbmFt ZSk6DQogICAgICAgICAgICBtb2QgPSBzeXMubW9kdWxlc1ttb2RuYW1lXQ0K ICAgICAgICBlbHNlOg0KICAgICAgICAgICAgbW9kID0gaW1wLm5ld19tb2R1 bGUobW9kbmFtZSkNCiAgICAgICAgICAgIHN5cy5tb2R1bGVzW21vZG5hbWVd ID0gbW9kDQogICAgICAgIG1vZC5fX2ZpbGVfXyA9IGZpbGVuYW1lDQogICAg ICAgIHNldGF0dHIoc3lzLm1vZHVsZXNbJ19fbWFpbl9fJ10sIG1vZG5hbWUs IG1vZCkNCg0KICAgICAgICBkaXIgPSBvcy5wYXRoLmRpcm5hbWUoZmlsZW5h bWUpDQogICAgICAgIGRpciA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5h YnNwYXRoKGRpcikpDQogICAgICAgIGlmIGRpciBub3QgaW4gc3lzLnBhdGg6 DQogICAgICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgZGlyKQ0KDQogICAg ICAgIGZsaXN0ID0gc2VsZi5lZGl0d2luLmZsaXN0DQogICAgICAgIHNoZWxs ID0gZmxpc3Qub3Blbl9zaGVsbCgpDQogICAgICAgIGludGVycCA9IHNoZWxs LmludGVycA0KICAgICAgICBpbnRlcnAucnVuY29kZSgicmVsb2FkKCVzKSIg JSBtb2RuYW1lKQ0KDQogICAgZGVmIHJ1bl9zY3JpcHRfZXZlbnQoc2VsZiwg ZXZlbnQpOg0KICAgICAgICBmaWxlbmFtZSA9IHNlbGYuZ2V0ZmlsZW5hbWUo KQ0KICAgICAgICBpZiBub3QgZmlsZW5hbWU6DQogICAgICAgICAgICByZXR1 cm4NCg0KICAgICAgICBmbGlzdCA9IHNlbGYuZWRpdHdpbi5mbGlzdA0KICAg ICAgICBzaGVsbCA9IGZsaXN0Lm9wZW5fc2hlbGwoKQ0KICAgICAgICBpbnRl cnAgPSBzaGVsbC5pbnRlcnANCiAgICAgICAgaWYgKG5vdCBzeXMuYXJndiBv cg0KICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShzeXMuYXJndlswXSkg IT0gb3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSkpOg0KICAgICAgICAgICAg IyBYWFggVG9vIG9mdGVuIHRoaXMgZGlzY2FyZHMgYXJndW1lbnRzIHRoZSB1 c2VyIGp1c3Qgc2V0Li4uDQogICAgICAgICAgICBzeXMuYXJndiA9IFtmaWxl bmFtZV0NCiAgICAgICAgb2xkX3N5c3BhdGggPSBzeXMucGF0aFs6XQ0KICAg ICAgICBzeXMucGF0aC5hcHBlbmQob3MucGF0aC5kaXJuYW1lKG9zLnBhdGgu YWJzcGF0aChmaWxlbmFtZSkpKQ0KICAgICAgICBpbnRlcnAuZXhlY2ZpbGUo ZmlsZW5hbWUpDQogICAgICAgIHN5cy5wYXRoID0gb2xkX3N5c3BhdGgNCg0K ICAgIGRlZiBnZXRmaWxlbmFtZShzZWxmKToNCiAgICAgICAgIyBMb2dpYyB0 byBtYWtlIHN1cmUgd2UgaGF2ZSBhIHNhdmVkIGZpbGVuYW1lDQogICAgICAg ICMgWFhYIEJldHRlciBsb2dpYyB3b3VsZCBvZmZlciB0byBzYXZlIQ0KICAg ICAgICBpZiBub3Qgc2VsZi5lZGl0d2luLmdldF9zYXZlZCgpOg0KICAgICAg ICAgICAgbmFtZSA9IChzZWxmLmVkaXR3aW4uc2hvcnRfdGl0bGUoKSBvcg0K ICAgICAgICAgICAgICAgICAgICBzZWxmLmVkaXR3aW4ubG9uZ190aXRsZSgp IG9yDQogICAgICAgICAgICAgICAgICAgICJVbnRpdGxlZCIpDQogICAgICAg ICAgICBzZWxmLmVycm9yYm94KCJOb3Qgc2F2ZWQiLA0KICAgICAgICAgICAg ICAgICAgICAgICAgICAiVGhlIGJ1ZmZlciBmb3IgJXMgaXMgbm90IHNhdmVk LlxuIiAlIG5hbWUgKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAiUGxl YXNlIHNhdmUgaXQgZmlyc3QhIikNCiAgICAgICAgICAgIHNlbGYuZWRpdHdp bi50ZXh0LmZvY3VzX3NldCgpDQogICAgICAgICAgICByZXR1cm4NCiAgICAg ICAgZmlsZW5hbWUgPSBzZWxmLmVkaXR3aW4uaW8uZmlsZW5hbWUNCiAgICAg ICAgaWYgbm90IGZpbGVuYW1lOg0KICAgICAgICAgICAgc2VsZi5lcnJvcmJv eCgiTm8gZmlsZSBuYW1lIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg IlRoaXMgd2luZG93IGhhcyBubyBmaWxlIG5hbWUiKQ0KICAgICAgICAgICAg cmV0dXJuDQogICAgICAgIHJldHVybiBmaWxlbmFtZQ0KDQogICAgZGVmIGVy cm9yYm94KHNlbGYsIHRpdGxlLCBtZXNzYWdlKToNCiAgICAgICAgIyBYWFgg VGhpcyBzaG91bGQgcmVhbGx5IGJlIGEgZnVuY3Rpb24gb2YgRWRpdG9yV2lu ZG93Li4uDQogICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGUs IG1lc3NhZ2UsIG1hc3Rlcj1zZWxmLmVkaXR3aW4udGV4dCkNCiAgICAgICAg c2VsZi5lZGl0d2luLnRleHQuZm9jdXNfc2V0KCkNCg== --545280650-578560010-1009656207=:13114--

Newsletter Interart=2E Para cancelar = seu recebimento, coloque seu e-mail no campo abaixo=2E