You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(116) |
Sep
(146) |
Oct
(78) |
Nov
(69) |
Dec
(70) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(188) |
Feb
(142) |
Mar
(143) |
Apr
(131) |
May
(97) |
Jun
(221) |
Jul
(127) |
Aug
(89) |
Sep
(83) |
Oct
(66) |
Nov
(47) |
Dec
(70) |
2003 |
Jan
(77) |
Feb
(91) |
Mar
(103) |
Apr
(98) |
May
(134) |
Jun
(47) |
Jul
(74) |
Aug
(71) |
Sep
(48) |
Oct
(23) |
Nov
(37) |
Dec
(13) |
2004 |
Jan
(24) |
Feb
(15) |
Mar
(52) |
Apr
(119) |
May
(49) |
Jun
(41) |
Jul
(34) |
Aug
(91) |
Sep
(169) |
Oct
(38) |
Nov
(32) |
Dec
(47) |
2005 |
Jan
(61) |
Feb
(47) |
Mar
(101) |
Apr
(130) |
May
(51) |
Jun
(65) |
Jul
(71) |
Aug
(96) |
Sep
(28) |
Oct
(20) |
Nov
(39) |
Dec
(62) |
2006 |
Jan
(13) |
Feb
(19) |
Mar
(18) |
Apr
(34) |
May
(39) |
Jun
(50) |
Jul
(63) |
Aug
(18) |
Sep
(37) |
Oct
(14) |
Nov
(56) |
Dec
(32) |
2007 |
Jan
(30) |
Feb
(13) |
Mar
(25) |
Apr
(3) |
May
(15) |
Jun
(42) |
Jul
(5) |
Aug
(17) |
Sep
(6) |
Oct
(25) |
Nov
(49) |
Dec
(10) |
2008 |
Jan
(12) |
Feb
|
Mar
(17) |
Apr
(18) |
May
(12) |
Jun
(2) |
Jul
(2) |
Aug
(6) |
Sep
(4) |
Oct
(15) |
Nov
(45) |
Dec
(9) |
2009 |
Jan
(1) |
Feb
(3) |
Mar
(18) |
Apr
(8) |
May
(3) |
Jun
|
Jul
(13) |
Aug
(2) |
Sep
(1) |
Oct
(9) |
Nov
(13) |
Dec
|
2010 |
Jan
(2) |
Feb
(3) |
Mar
(9) |
Apr
(10) |
May
|
Jun
(1) |
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
(1) |
Dec
(4) |
2011 |
Jan
|
Feb
|
Mar
(10) |
Apr
(44) |
May
(9) |
Jun
(22) |
Jul
(2) |
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2012 |
Jan
|
Feb
(1) |
Mar
(2) |
Apr
(2) |
May
|
Jun
(5) |
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
(2) |
Apr
(1) |
May
(1) |
Jun
|
Jul
(3) |
Aug
(8) |
Sep
(3) |
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
(4) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2017 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Kevin A. <al...@se...> - 2007-11-15 21:40:39
|
On Nov 15, 2007, at 1:05 PM, Tony Cappellini wrote: >> self.components.yourComponentNameHere.getNumberOfLines() should work. > >> If it doesn't, then I would like to know what the line endings are as >> well as which platform and versions of wxPython and PythonCard you're >> using. > > The platform is Windows > The line endings are "\n" > > Wx version 2.8.4.2 > Pythoncard version is the latest 0.8.2 > > > I've just tried this again today- while verifying the line endings, > and getNumberOfLines() is returning a valid number instead of 1 > > I'll keep watching this to see if it changes After looking at the documentation again for the wx.TextCtrl (TextArea is based on that widget) method GetNumberOfLines, I would avoid using it to count lines if you want to be consistent in your results across platforms. Here's the excerpt from the docs... """ wxTextCtrl::GetNumberOfLines int GetNumberOfLines() const Returns the number of lines in the text control buffer. Remarks Note that even empty text controls have one line (where the insertion point is), so GetNumberOfLines() never returns 0. For gtk_text (multi-line) controls, the number of lines is calculated by actually counting newline characters in the buffer. You may wish to avoid using functions that work with line numbers if you are working with controls that contain large amounts of text. """ In addition I noticed that the result returned on Windows was actually the wrapped line count, not the number of newlines. So a safer, more consistent result would be to get a count with something like... len(self.components.myTextArea.text.split('\n')) ka |
From: Tony C. <cap...@gm...> - 2007-11-15 21:05:04
|
> self.components.yourComponentNameHere.getNumberOfLines() should work. > If it doesn't, then I would like to know what the line endings are as > well as which platform and versions of wxPython and PythonCard you're > using. The platform is Windows The line endings are "\n" Wx version 2.8.4.2 Pythoncard version is the latest 0.8.2 I've just tried this again today- while verifying the line endings, and getNumberOfLines() is returning a valid number instead of 1 I'll keep watching this to see if it changes |
From: Tony C. <cap...@gm...> - 2007-11-15 19:45:42
|
Ok- thanks I'll reply to your questions- shortly- when I"m in front of the machine where I found the problem with GetNumberOfLines() On Nov 15, 2007 11:44 AM, Kevin Altis <al...@se...> wrote: > > On Nov 15, 2007, at 9:51 AM, Tony Cappellini wrote: > > > I had posted a question a few days ago- regarding Which Text widget > > to use. > > I need a widget with a scroll bar because the list is likely to be > > larger that the space for the widget. > > I believe the list widget doesn't have a scroll bar, that's why I'm > > using the TexArea widget > > The scrollbar appears once you have more items in the list than can > be displayed at one time. That is pretty standard for a list widget. > > ka > > |
From: Kevin A. <al...@se...> - 2007-11-15 19:44:34
|
On Nov 15, 2007, at 9:51 AM, Tony Cappellini wrote: > I had posted a question a few days ago- regarding Which Text widget > to use. > I need a widget with a scroll bar because the list is likely to be > larger that the space for the widget. > I believe the list widget doesn't have a scroll bar, that's why I'm > using the TexArea widget The scrollbar appears once you have more items in the list than can be displayed at one time. That is pretty standard for a list widget. ka |
From: Tony C. <cap...@gm...> - 2007-11-15 17:52:00
|
I had posted a question a few days ago- regarding Which Text widget to use. I need a widget with a scroll bar because the list is likely to be larger that the space for the widget. I believe the list widget doesn't have a scroll bar, that's why I'm using the TexArea widget On Nov 15, 2007 1:25 AM, Phil Edwards <ph...@li...> wrote: > > Tony Cappellini wrote: > > I've printed a list of filenames in a textarea widget. > > > > I want to see how many filenames are in the widget. > > > > When I call GetNumberOfLines() or getNumberOfLines(), they both return 1. > > > > Is there a way to query the widget to actually get the number of items printed ? > > > > If you're using a textarea to store a list, wouldn't it be simpler to > just use a list widget instead? Then just make a call to > len(self.components.listName.items) to find out how many are in there. > > -- > > Regards > > Phil Edwards > Brighton, UK > |
From: Tony C. <cap...@gm...> - 2007-11-15 17:45:33
|
Thanks Neil! That is odd- I've created on_MySpinBox_mouseDown andon_MySpinBox_mouseUp handlers, but they are not called when I click on the up/down arrows > mouseDown > textUpdate > mouseUp > mouseMove > > so you could use: > > def on_Spinner_textUpdate(self, event): > print "Spinning..." > > but unless you are keeping track of the spinner's value before and after > the textUpdate it does not look like you can tell whether you > are...er...spinning up or down. > > Regards > -- > XXXXXXXXXXX > > |
From: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - 2007-11-15 15:31:56
|
On 14/11/2007 20:56, Tony Cappellini wrote: > I'm trying to understand why the event handlers for a Spinbox are not > being called. > > I've looked in the components directory and for some strange reason, > SpinUp and SpinDown are commented out in spinner.py > > I didn't see any examples in the Demo projects that actually show the > event handlers for a Spinbox. > > If someone has a few lines of code they could post which shows the > names of the event handlers used > when the up/down arrows are clicked it would be helpful. > > I've also gave the "Command' field in the Layout editor the name of an > event handler, but it too isn't being called. The message watcher only shows the following events being triggered: mouseDown textUpdate mouseUp mouseMove so you could use: def on_Spinner_textUpdate(self, event): print "Spinning..." but unless you are keeping track of the spinner's value before and after the textUpdate it does not look like you can tell whether you are...er...spinning up or down. Regards -- XXXXXXXXXXX |
From: Kevin A. <al...@se...> - 2007-11-15 15:17:56
|
On Nov 14, 2007, at 11:20 PM, Tony Cappellini wrote: > I've printed a list of filenames in a textarea widget. > > I want to see how many filenames are in the widget. > > When I call GetNumberOfLines() or getNumberOfLines(), they both > return 1. > > Is there a way to query the widget to actually get the number of > items printed ? > > > thanks self.components.yourComponentNameHere.getNumberOfLines() should work. If it doesn't, then I would like to know what the line endings are as well as which platform and versions of wxPython and PythonCard you're using. If you end up using a List component instead then getCount() is the method you want. ka |
From: Phil E. <ph...@li...> - 2007-11-15 09:26:13
|
Tony Cappellini wrote: > I've printed a list of filenames in a textarea widget. > > I want to see how many filenames are in the widget. > > When I call GetNumberOfLines() or getNumberOfLines(), they both return 1. > > Is there a way to query the widget to actually get the number of items printed ? > If you're using a textarea to store a list, wouldn't it be simpler to just use a list widget instead? Then just make a call to len(self.components.listName.items) to find out how many are in there. -- Regards Phil Edwards Brighton, UK |
From: Tony C. <cap...@gm...> - 2007-11-15 07:20:26
|
I've printed a list of filenames in a textarea widget. I want to see how many filenames are in the widget. When I call GetNumberOfLines() or getNumberOfLines(), they both return 1. Is there a way to query the widget to actually get the number of items printed ? thanks |
From: Tony C. <cap...@gm...> - 2007-11-14 21:58:24
|
I'm trying to understand why the event handlers for a Spinbox are not being called. I've looked in the components directory and for some strange reason, SpinUp and SpinDown are commented out in spinner.py I didn't see any examples in the Demo projects that actually show the event handlers for a Spinbox. If someone has a few lines of code they could post which shows the names of the event handlers used when the up/down arrows are clicked it would be helpful. I've also gave the "Command' field in the Layout editor the name of an event handler, but it too isn't being called. Thanks |
From: Kevin A. <al...@se...> - 2007-11-13 17:52:07
|
On Oct 31, 2007, at 1:58 AM, Phil Edwards wrote: > Aaron Stevens wrote: >> >> For example, when I used the FileDialog, the result has members >> 'accepted' and paths -- but according to the documentation these are >> supposed to be mapped in a dict. Any clarification expected. >> >> result = dialog.fileDialog(self, 'Open', '', '', '*' ) >> >> if result.accepted == True: >> filename = result.paths[0] >> > > Hi Aaron: > > The documentation is simply out of date, that's all. The behaviour you > describe is as expected - when version 0.8.2 (I think!) of PythonCard > was released, the dialog components were changed so that they are > sub-classes of wx.lib.dialogs. > > Where the documentation talks about a dictionary item, e.g. > result['someName'], you just substitute result.someName. > > The change was designed to make some bits of PythonCard more > 'pythonic' > and to make it easier to hand-roll your own custom dialogs. > > -- > > Regards > > Phil Edwards > Brighton, UK There is another crucial element missing from the documentation. When we switched to using subclasses of wx.lib.dialogs, all dialogs ended up with at least three values for the result: accepted, returned, and returnedString. 'accepted' is a boolean, either True or False and returnedString is the string value of the button clicked by the user, which originally we just called 'returned'. 'returned' is the numerical return value of the button clicked. Most of the PythonCard samples and tools just use the returnedString if they need something besides the boolean 'accepted', but that's problematic if you want to internationalize your application. In that case, you should use 'returned' and the wx constants for comparisons as shown in the table below. returnedString wx constant returned ======================================= Ok wx.ID_OK 5100 Cancel wx.ID_CANCEL 5101 Yes wx.ID_YES 5103 No wx.ID_NO 5104 Depending on the dialog you can just check whether the dialog was 'accepted' or not and the 'returned' and 'returnedString' values won't impact your code. Typically, the only time you'll need 'returned' or 'returnedString' would be for a message dialog or custom dialog where you care about if the user clicked a particular button like 'Yes', 'No', or 'Cancel'. Note that the return value constants are not the same as the style constants such as wx.OK (4) and wx.CANCEL (16) provided for setting up the dialog. You can tell the return constants because they always have an ID_ prefix. This is a wx-ism, so there isn't anything I can do about it. We'll need to add a few more tweaks to the dialog documentation in cvs before I upload them to the main site. ka |
From: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - 2007-11-12 13:36:32
|
On 11/11/2007 21:46, Ray Allen wrote: > Is it possible for the textarea component to display multiple fonts? I'd > like certain keywords to be displayed in another colour. You could delve into the underlying wxPython and use SetStyle(): text = self.components.MyTextArea text.text = "This is a sample piece of text, with sample in reversed text and text in Roman bold." reverseAttr = wx.TextAttr("white","black") text.SetStyle(10,16,reverseAttr) text.SetStyle(37,43,reverseAttr) romanAttr = wx.TextAttr("black",wx.NullColour,wx.Font(text.GetFont().GetPointSize(), wx.FONTFAMILY_ROMAN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False)) text.SetStyle(26,30,romanAttr) text.SetStyle(56,60,romanAttr) text.SetStyle(65,69,romanAttr) Any use? -- XXXXXXXXXXX |
From: Aaron S. <az...@bu...> - 2007-11-12 12:17:58
|
Kevin, Thanks for this information, and it certainly explains what I've seen. I have a work-around for myself (using some run-time introspection), but how do we go about getting the doc webpages updated? Who owns/maintains these webpages? Best, Aaron -----Original Message----- From: Kevin Altis [mailto:al...@se...] Sent: Saturday, November 10, 2007 12:34 AM To: Aaron Stevens Cc: pyt...@li... Subject: Re: [Pythoncard-users] RadioGroup/ComboBox -- documentation error? On Nov 6, 2007, at 5:42 AM, Aaron Stevens wrote: > Hi, > > Whilst reviewing the documentation here: > http://pythoncard.sourceforge.net/framework/components/RadioGroup.html > http://pythoncard.sourceforge.net/framework/components/ComboBox.html > > In both cases the documentation states that there is an attribute > called > "selected". > In fact, there is not! The only way that I can see to access the > selection is using the list and the item index into the list. > # this call fails -- no attribute 'selected' > # print self.components.radFavoriteDrink.selected # item > > > # this works, using list and index > items = self.components.radFavoriteDrink.items # list > selection = self.components.radFavoriteDrink.selection # index > print "Favorite drink is", items[selection] > > The same thing is true with the ComboBox. Am I mistaken, or is the > documentation wrong? > > I've also found that this approach seems to be more reliable than the > documentation: > > for component in self.components.iterkeys(): > print component, "->",type(self.components[component]) > print "\t",dir(type(self.components[component])) > > Any thoughts? > > Best, > Aaron Sorry about the confusion. Those doc pages were built from an earlier version and never updated. The tool that created them is built into the widgets sample under the File menu. The menu item Create Component Docs... brings up a directory selection dialog and then creates a component directory of HTML with one HTML page per component in the widgets sample. That way you can create your own docs dynamically. However, it doesn't currently deal with properties that aren't used in the resource file, but are available. For example, if you look at the RadioGroup component in PythonCard/ components/radiogroup.py you'll see that it inherits from the list.ContainerMixin class. So, in PythonCard/components/list.py you'll see the attribute is defined... selection = property(_getSelection, _setSelection) This should probably be part of the attribute spec as well, but since it isn't, the documentation tool code won't pick it up correctly. Without looking at the source files, probably the quickest way to see all the attributes is to just use dir() as you surmised. The wxPython attributes are CamelCase style and the PythonCard ones are lowercase, so a code snippet similar to the one below would dump all the attributes and methods specific to PythonCard. for n in dir(self.components.yourComponentName): if n[0][0] in 'abcdefghijklmnopqrstuvwxyz': print n ka |
From: Ray A. <ray...@sa...> - 2007-11-11 21:46:37
|
Is it possible for the textarea component to display multiple fonts? I'd like certain keywords to be displayed in another colour. Ray Allen |
From: Kevin A. <al...@se...> - 2007-11-10 05:33:51
|
On Nov 6, 2007, at 5:42 AM, Aaron Stevens wrote: > Hi, > > Whilst reviewing the documentation here: > http://pythoncard.sourceforge.net/framework/components/RadioGroup.html > http://pythoncard.sourceforge.net/framework/components/ComboBox.html > > In both cases the documentation states that there is an attribute > called > "selected". > In fact, there is not! The only way that I can see to access the > selection is using the list and the item index into the list. > # this call fails -- no attribute 'selected' > # print self.components.radFavoriteDrink.selected # item > > > # this works, using list and index > items = self.components.radFavoriteDrink.items # list > selection = self.components.radFavoriteDrink.selection # index > print "Favorite drink is", items[selection] > > The same thing is true with the ComboBox. Am I mistaken, or is the > documentation wrong? > > I've also found that this approach seems to be more reliable than the > documentation: > > for component in self.components.iterkeys(): > print component, "->",type(self.components[component]) > print "\t",dir(type(self.components[component])) > > Any thoughts? > > Best, > Aaron Sorry about the confusion. Those doc pages were built from an earlier version and never updated. The tool that created them is built into the widgets sample under the File menu. The menu item Create Component Docs... brings up a directory selection dialog and then creates a component directory of HTML with one HTML page per component in the widgets sample. That way you can create your own docs dynamically. However, it doesn't currently deal with properties that aren't used in the resource file, but are available. For example, if you look at the RadioGroup component in PythonCard/ components/radiogroup.py you'll see that it inherits from the list.ContainerMixin class. So, in PythonCard/components/list.py you'll see the attribute is defined... selection = property(_getSelection, _setSelection) This should probably be part of the attribute spec as well, but since it isn't, the documentation tool code won't pick it up correctly. Without looking at the source files, probably the quickest way to see all the attributes is to just use dir() as you surmised. The wxPython attributes are CamelCase style and the PythonCard ones are lowercase, so a code snippet similar to the one below would dump all the attributes and methods specific to PythonCard. for n in dir(self.components.yourComponentName): if n[0][0] in 'abcdefghijklmnopqrstuvwxyz': print n ka |
From: Aaron S. <az...@bu...> - 2007-11-06 13:46:14
|
Hi, Whilst reviewing the documentation here: http://pythoncard.sourceforge.net/framework/components/RadioGroup.html http://pythoncard.sourceforge.net/framework/components/ComboBox.html In both cases the documentation states that there is an attribute called "selected". In fact, there is not! The only way that I can see to access the selection is using the list and the item index into the list. # this call fails -- no attribute 'selected' # print self.components.radFavoriteDrink.selected # item # this works, using list and index items = self.components.radFavoriteDrink.items # list selection = self.components.radFavoriteDrink.selection # index print "Favorite drink is", items[selection] The same thing is true with the ComboBox. Am I mistaken, or is the documentation wrong? I've also found that this approach seems to be more reliable than the documentation: for component in self.components.iterkeys(): print component, "->",type(self.components[component]) print "\t",dir(type(self.components[component])) Any thoughts? Best, Aaron |
From: Tony C. <cap...@gm...> - 2007-11-05 23:06:00
|
> (And on my Mac the word 'Vary' sometimes disappears .... something to do > with order of component display) This is also a problem on Windows as well. I never saw the 'Vary ' text, until these replies started coming in. Thanks to all who replied! |
From: Alex T. <al...@tw...> - 2007-11-05 22:49:03
|
Tony Cappellini wrote: > Whenever I enter a name for a widget, the resource editor forces the > same name for the widget label. When I edit the widget label, it > changes the widget name to the same value as the label. The two cannot > be different. > > How does one get around this madness? > > > Select the checkbox (labelled 'Vary') which is at the top middle of the property editor window. (It's just to the right of the box holding the list of component names/types, just to the left of the 'Name' label and box. (And on my Mac the word 'Vary' sometimes disappears .... something to do with order of component display) Until that is selected, the two values are kept the same (or at least related to each other; once selected, either one can be changed without changing the other. -- Alex Tweedly mailto:al...@tw... www.tweedly.net |
From: Bruce B. <bru...@gm...> - 2007-11-05 22:19:16
|
Problem Solved. Turned TAB #2 was using a checkbox and my SETUP script was not adding that widget to the EXE. Once, that issue was fixed the other tabs automatically appeared On 11/5/07, Bruce Bromberek <bru...@gm...> wrote: > > Hi All- > > Long time user, first time problem. > > My PythonCard App uses a notebook widget with 4 pages. Runs fine from the > command line. When running from a py2exe EXE it only displays the first > notebook page. > > Any suggestions on how to debug this? > > Thanks, > Bruce Bromberek > |
From: Bruce B. <bru...@gm...> - 2007-11-05 16:48:32
|
Hi All- Long time user, first time problem. My PythonCard App uses a notebook widget with 4 pages. Runs fine from the command line. When running from a py2exe EXE it only displays the first notebook page. Any suggestions on how to debug this? Thanks, Bruce Bromberek |
From: Tony C. <cap...@gm...> - 2007-11-05 05:59:52
|
I want to display a list of items, but the list of items may be longer than the widget, so I need a vertical scrollbar. So I've started with a textArea widget, because it has a scrollbar. But I may need to select items in the list, and possibly delete them as well. Does Pythoncard support any list-like widgets which has a vertical scrollbar, allows the user to select and remove any or all items from the list, and clear the list? The regular list widget doesn't appear to support a vertical scrollbar. |
From: Tony C. <cap...@gm...> - 2007-11-05 02:26:12
|
Whenever I enter a name for a widget, the resource editor forces the same name for the widget label. When I edit the widget label, it changes the widget name to the same value as the label. The two cannot be different. How does one get around this madness? |
From: Alex T. <al...@tw...> - 2007-11-05 00:38:29
|
Hugh Kernohan wrote: > Alex, > > Thank you. As I don't have a suitable site I'll send you the file > for you to put on your website as you offer. > > Thanks Hugh. It can now be found at http://www.tweedly.org/Python/sizerEditorV1a.zip Note - I haven't yet looked at it all, so please treat it with some care. Here are Hugh's accompanying instructions ..... Alex, This is my Sizer Editor code. The zipped file is a self-standing directory tree ..\sizerEditor_version1\.. etc. The file advancedSizer.py should be copied to the PythonCard directory. My findfilestree.py is a cosmetic variation on a old favourite. I'd be happy to be corrected on anything, including points of principle and good practice. Some of the code looks clunky and inefficient, others bits quite taut. I haven't done any testing with older versions but it certainly won't work with less than wxPython 2.8.4.2 of 8 Aug 07. The bulk of the new code for the editor is in a BaseSizer class, and an all-new sizerpropertyEditor window which co-exists with the existing multipropertyEditor window. Other additions to existing code are clearly marked (and sometimes annotated) in the files. To use PythonCard.advancedsizer use the Sizer Editor to set the layout, then include the following in the on_initialize of the .py file: try: from PythonCard.advancedSizer import autoSizer self.useSizersFlag = True autoSizer(self) except: self.useSizersFlag = False This ensures that if PythonCard.advancedSizer is not available the code will still run, provided that useSizersFlag is checked before any sizer-specific routines are run. (Its use can be seen in the Sizer Editor itself). -- Alex Tweedly mailto:al...@tw... www.tweedly.net |
From: Hugh K. <ma...@hu...> - 2007-11-04 21:21:40
|
Alex, Thank you. As I don't have a suitable site I'll send you the file for you to put on your website as you offer. yours, Hugh |