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: Arthur E. <ar...@ia...> - 2004-09-11 21:02:23
|
Hi, some questions regarding the MultiColumnList. When I add items to the MultiColumnList, automatically I get a Heading. Is there a way to disable Headings all together? On OS X these headings take too much vertical space. Another space related question, is it possible to narrow vertical space, so rows become much smaller? I tried changing the font size, but the row size doesn't change accordingly? Thanks. Arthur |
From: Brad A. <bra...@ma...> - 2004-09-11 17:59:04
|
Hi. I've been spending the last few days taking a look at PythonCard, and I really like it. Kudos to Kevin, Dan, and the rest of you guys for your generosity in building such a nifty open-source tool and continuing to plug away at improving it. I'm a Python newbie of about six months, but I found PythonCard .8 to be very approachable. It didn't take long to install and get the samples working. The tutorial walkthroughs were essential to helping me learn the basics, even though there were some bumps along the way (some small changes are needed to update the tutorials for .8, such as the reference to on_openBackground). I was looking at PythonCard as a prospective GUI tool for a project at work. This project is a client-server-database application designed to replace an aging FileMaker solution with a MS SQL Server solution for the IT dept database. We need a full client app, not just a web interface, and it needs to be cross-platform so it can run the GUI on all the computers we manage. We also don't want to spend a million years building it, so a scripting approach makes sense rather than trying to do it in C++ or Java. So, that leaves us with choices like Runtime Revolution, RealBasic, Omnis Studio, etc. Or, we could go with open source tools like Perl, Python, Ruby, etc. For a variety of reasons, we really like Python the best among these choices, and a pure Python solution is likely to be a fairly practical and scalable approach as our app grows in complexity. We've used Python shell scripts in our environment to great success; it seems like a very approachable cross-platform language with many virtues. The only trouble with Python is that it's not so easy to build GUIs. At least, not as easy as in proprietary platforms like RunRev, FileMaker, and RealBasic. We have a serious learning curve to climb on that front. At least, that's what I thought until I tried PythonCard. I've already been able to make a little headway prototyping the client app in PythonCard, though I have a long ways to go in really understanding the capabilities available in PythonCard. So, I have a number of questions, but before I dig in too much deeper, I'd like to get some opinions on a couple of basic questions. Here is the first question: Am I crazy for considering PythonCard for use in a production environment? PythonCard is obviously not yet mature, and still has many gaps in the feature set, not to mention bugs. On the plus side, it seems to me that when users report bugs on this mailing list, they are generally identified quickly and fixed. It also seems to me that if we run into problems or gaps in the PythonCard feature set, we can fall back on the more mature wxPython, and so have a mix of wxPython and PythonCard in our GUI logic. Also, because PythonCard is open source, we can look under the hood figure out what's wrong if we need to. Is this a fair assessment? Second question: Do you see PythonCard as primarily a tool for building GUIs for small, simple apps, or do you think it will scale well to more complex apps, in terms of managing that complexity ? The app I'm imagining will require many windows, many dialog boxes, dynamically changing global menus, contextual menus, keyboard shortcuts (including function keys), and validation for data entry fields. It would also be nice but not required to have search results that populate as the user types, layouts changing within a given window, tab order between fields, drag & drop of files onto fields to populate paths, user-draggable icon objects, and tabbed interface in some windows. I'd be grateful for any thoughts you can provide on this. Thanks! Brad Allen Omnicom Management Services Dallas, TX |
From: Kevin A. <al...@se...> - 2004-09-10 23:18:42
|
On Sep 10, 2004, at 12:12 PM, bartek wilczynski wrote: > Hi, > > When I'm opening a child window, which is a pythonCard Alocated in > different > directory, the PythonCard jumps to that directory. As my application > involves a > lot of it, it becomes annoying to track "where am I". > > Is there any possibility of opening a child window without changing > the current > directory ?. > -- > greetings > Bartek It could be done, but I'm not sure if it would be consistent since there is an explicit chdir done for the main background window, and child windows are just another window that just happen to have a parent. This could be problematic for the on_initialize handler in particular if it makes assumptions about the current working directory being the same as the module directory... Anyway, I can see pro and con arguments. In the meantime, you can just make your own childWindow wrapper function that you call instead of the one in model.py. You can either provide the args as shown below or just use *args and *kwargs for the arg list. def childWindow(parent, frameClass, filename=None, rsrc=None): cwd = os.getcwd() model.childWindow(parent, frameClass, filename, rsrc) os.chdir(cwd) Also, in case you didn't know, self.application.applicationDirectory is the directory that contains your main source file in case you ever need to jump back there or make a relative path change. ka |
From: bartek w. <ba...@re...> - 2004-09-10 21:47:39
|
Hi, When I'm opening a child window, which is a pythonCard Alocated in different directory, the PythonCard jumps to that directory. As my application involves a lot of it, it becomes annoying to track "where am I". Is there any possibility of opening a child window without changing the current directory ?. -- greetings Bartek |
From: Kevin A. <al...@se...> - 2004-09-10 18:41:25
|
On Sep 10, 2004, at 11:06 AM, Tim Black wrote: > I just solved a problem I was having with a py2exe windows standalone > whereby the windows process never terminated after closing the app. As > you might suspect, this involved a thread in my app that didn't > terminate gracefully. I found in the PythonCard samples several > examples > of using threads and in each case, the thread's daemon flag was set to > 1 > to make it daemonic so that it is cleaned up when the non-daemonic > thread (my Main GUI thread) exits. This solved my problem. However, > until I found this solution, I was trying another solution. Let's > pretend for a second that thread.setDaemon wouldn't work and we have to > make my secondary thread explicitly "killable" by having its run > function do: > > def run(self): > while self._running: > # do stuff > pass > > and its stop func do: > > def stop(self): > self._running = False > > so that my Pythoncard app can call this thread's stop function to > explicitly kill it. But where and when should this be called? I can > handle the reqests to close the app via a file menu exit callback, but > what about for "X"ing the application or other sorts of ungraceful > termination? I see that self.Close() gets called. I guess what I am > asking is what is EVT_CLOSE bound to? Where can I place cleanup > statements like thread stopping, etc? > > Thanks, > Tim > EVT_CLOSE is bound to on_close, just remember to call event.skip() if you want to have the close event passed on, otherwise your app won't be killable except via the process manager, etc. The examples you were looking at should have been using on_close already. The background events are bound in model.py and include: activate, close, deactivate, idle, initialize, maximize, minimize, move, restore, and size. restore is the inverse of minimize. ka |
From: Tim B. <tb...@bi...> - 2004-09-10 18:07:29
|
I just solved a problem I was having with a py2exe windows standalone whereby the windows process never terminated after closing the app. As you might suspect, this involved a thread in my app that didn't terminate gracefully. I found in the PythonCard samples several examples of using threads and in each case, the thread's daemon flag was set to 1 to make it daemonic so that it is cleaned up when the non-daemonic thread (my Main GUI thread) exits. This solved my problem. However, until I found this solution, I was trying another solution. Let's pretend for a second that thread.setDaemon wouldn't work and we have to make my secondary thread explicitly "killable" by having its run function do: def run(self): while self._running: # do stuff pass and its stop func do: def stop(self): self._running =3D False so that my Pythoncard app can call this thread's stop function to explicitly kill it. But where and when should this be called? I can handle the reqests to close the app via a file menu exit callback, but what about for "X"ing the application or other sorts of ungraceful termination? I see that self.Close() gets called. I guess what I am asking is what is EVT_CLOSE bound to? Where can I place cleanup statements like thread stopping, etc?=20 Thanks, Tim |
From: Kevin A. <al...@se...> - 2004-09-10 17:53:05
|
On Sep 10, 2004, at 9:57 AM, Daryl Fox wrote: > Okay, here's something that a little funny... > > You have spend five minutes or so tweaking a component in the > resourceEditor. You aligned it perfectly, changed the text, labelled > it > nicely, etc. Then you accidentally hit the delete key. Gah! The > delete > confirmation dialog doesn't have a NO/CANCEL option! :) > > Any change of changing line 1116 of resourceEditor.py to: > result = dialog.messageDialog(self, msg, 'Delete Component', > wx.ICON_INFORMATION | wx.YES_NO | wx.NO_DEFAULT) > > It looks like the code is built to support this as it already checks > for > result.accepted. > > -Daryl > Sorry about that. When I switched over to using the wx/lib/dialogs.py function wrappers for the system dialogs one of the changes was that the icon and button args got combined. The default style for the messageDialog is wx.OK | wx.CANCEL | wx.CENTRE, but if a style arg is supplied then that obviously isn't used. Consequently, where I was supplying an icon arg I forgot to add the button ids back in. So as you figured out above, the on_componentDelete_command method should be changed to: result = dialog.messageDialog(self, msg, 'Delete Component', wx.ICON_INFORMATION | wx.YES_NO | wx.NO_DEFAULT) The on_menuEditCut_select method needs a similar fix: result = dialog.messageDialog(self, msg, 'Cut Component', wx.ICON_INFORMATION | wx.YES_NO | wx.NO_DEFAULT) I've checked these changes into cvs. I'll have to look at the other places messageDialog is used to make sure there aren't similar problems with the other tools or samples. ka |
From: Arthur E. <ar...@ia...> - 2004-09-10 17:14:17
|
On Sep 10, 2004, at 18:57, Daryl Fox wrote: > Okay, here's something that a little funny... even funnier, on OS X, the delete function doesn't work at all. I do get the dialog, but nothing happens. (The component I intended to delete was selected.) Anyone else sees the same thing? Arthur > You have spend five minutes or so tweaking a component in the > resourceEditor. You aligned it perfectly, changed the text, labelled > it > nicely, etc. Then you accidentally hit the delete key. Gah! The > delete > confirmation dialog doesn't have a NO/CANCEL option! :) > > Any change of changing line 1116 of resourceEditor.py to: > result = dialog.messageDialog(self, msg, 'Delete Component', > wx.ICON_INFORMATION | wx.YES_NO | wx.NO_DEFAULT) > > It looks like the code is built to support this as it already checks > for > result.accepted. > > -Daryl > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170 > Project Admins to receive an Apple iPod Mini FREE for your judgement on > who ports your project to Linux PPC the best. Sponsored by IBM. > Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php > _______________________________________________ > Pythoncard-users mailing list > Pyt...@li... > https://lists.sourceforge.net/lists/listinfo/pythoncard-users |
From: Daryl F. <fly...@sb...> - 2004-09-10 17:01:41
|
Okay, here's something that a little funny... You have spend five minutes or so tweaking a component in the resourceEditor. You aligned it perfectly, changed the text, labelled it nicely, etc. Then you accidentally hit the delete key. Gah! The delete confirmation dialog doesn't have a NO/CANCEL option! :) Any change of changing line 1116 of resourceEditor.py to: result = dialog.messageDialog(self, msg, 'Delete Component', wx.ICON_INFORMATION | wx.YES_NO | wx.NO_DEFAULT) It looks like the code is built to support this as it already checks for result.accepted. -Daryl |
From: Kevin A. <al...@se...> - 2004-09-10 06:04:48
|
On Sep 9, 2004, at 6:58 PM, Gregory Pi=F1ero wrote: > I am trying out this code editor component. It looks something like=20= > this: > > {'type':'CodeEditor', > 'name':'CodeEditor1', > 'position':(10, 10), > 'size':(377, 240), > 'backgroundColor':(255, 255, 255), > } > > Could anyone point me to some documentation for this component? I'm=20= > hoping there's a way to change the key words and make it work with SQL=20= > instead of python so the user can type SQL queries within the python=20= > application. I'm also hoping it has code completion... > > If CodeEditor wouldn't work easily for those needs, what would people=20= > recommend as the next fastest way of getting a little text area with=20= > word/code completion and syntax highlighting into a pyCard or wxPython=20= > app? > > Thanks, > > Greg > http://wiki.wxpython.org/index.cgi/wxStyledTextCtrl You'll probably need to post this question over on the wxPython-users=20 mailing list in regards to wxStyledTextCtrl since all the functionality=20= is provided by that control with the CodeEditor component. ka |
From: <gre...@co...> - 2004-09-10 01:58:07
|
I am trying out this code editor component. It looks something like this: {'type':'CodeEditor', 'name':'CodeEditor1', 'position':(10, 10), 'size':(377, 240), 'backgroundColor':(255, 255, 255), } Could anyone point me to some documentation for this component? I'm hoping there's a way to change the key words and make it work with SQL instead of python so the user can type SQL queries within the python application. I'm also hoping it has code completion... If CodeEditor wouldn't work easily for those needs, what would people recommend as the next fastest way of getting a little text area with word/code completion and syntax highlighting into a pyCard or wxPython app? Thanks, Greg |
From: Kevin A. <al...@se...> - 2004-09-09 22:52:55
|
Alex added events to the grid component and the simpleGrid sample has been updated to use the PythonCard events. I may end up tweaking the events some more before the next release, but I think that most of what you would use is covered. Even if you aren't running PythonCard from cvs, you should be able to just replace your local copy of grid.py and simpleGrid.py by downloading them from the web links below. http://cvs.sourceforge.net/viewcvs.py/pythoncard/PythonCard/components/ grid.py http://cvs.sourceforge.net/viewcvs.py/pythoncard/PythonCard/samples/ simpleGrid/simpleGrid.py On a related note, the Grid, Tree, and MultiColumnList components all need simpler wrappers, assuming that is possible. At a minimum, the methods that you really need to make use of the components should have mixedCase aliases. ka |
From: Kevin A. <al...@se...> - 2004-09-09 04:24:00
|
Thanks Daryl, just as an FYI you don't have to use the Colour class, wxPython will accept a variety of formats and convert appropriately. You can use the same kind of representations you would in PythonCard. COLOURS = ['black', '#660000', 'red', (255, 0x99, 0), (255, 255, 0), 'green', 'blue', (0x99, 0xff, 0), '#cccccc', 'white'] is equivelant to COLOURS = [Colour(0, 0, 0), Colour(0x66, 0, 0), Colour(0xff, 0, 0), Colour(0xff, 0x99, 0), Colour(0xff, 0xff, 0), Colour(0, 0xff, 0), Colour(0, 0, 0xff), Colour(0x99, 0xff, 0), Colour(0xcc, 0xcc,0xcc), Colour(0xff, 0xff, 0xff)] All of the named colors that wxPython supports as well as their RGB values are defined in wx/lib/colourdb.py. The names are not case-sensitive. ka On Sep 8, 2004, at 8:25 PM, Daryl Fox wrote: > Okay, here's my solution to this. Please note, I'm sure that many > other > people have better ways, but this works for me. > > First, the List must become a MultiColumnList. As a bonus, I was able > to > remove my static text label and use the column label instead. Then > each > item is applied a wxCOLOR. Below is a simple example. > > Start up the resourceEditor. For this example, build a new 'Standard > Template with File->Exit menu'. Plop down a MultiColumnList and give > it the > name 'MultiColumnList'. Set it's size to be about 180 x 175. Save the > file. The .rsrc.py file should contain the following down near the > bottom: > {'type':'MultiColumnList', > 'name':'MultiColumnList', > 'position':(15, 10), > 'size':(182, 169), > 'backgroundColor':(255, 255, 255), > 'columnHeadings':[], > 'font':{'faceName': 'Tahoma', 'family': 'sansSerif', 'size': 8}, > 'items':[], > 'maxColumns':20, > 'rules':1, > }, > > Now open up the .py file. and change it to: > > from PythonCard import model > from wx import Colour > > COLOURS = [Colour(0, 0, 0), Colour(0x66, 0, 0), Colour(0xff, > 0, 0), > Colour(0xff, 0x99, 0), Colour(0xff, 0xff, 0), Colour(0, > 0xff, 0), > Colour(0, 0, 0xff), Colour(0x99, 0xff, 0), Colour(0xcc, > 0xcc, > 0xcc), > Colour(0xff, 0xff, 0xff)] > > class MyBackground(model.Background): > def on_initialize(self, event): > Items = "Bad Beer Rots Our Young Guts But Vodka Goes > Well".split(" ") > self.components.MultiColumnList.columnHeadings = "Color Code" > self.components.MultiColumnList.items = Items > > for Item in range(len(self.components.MultiColumnList.items)): > self.components.MultiColumnList.SetItemTextColour(Item, > COLOURS[Item]) > > if __name__ == '__main__': > app = model.Application(MyBackground) > app.MainLoop() > > Here we build a list of colours called COLOURS. Inside the > on_initialize > method, the column is given a label and then populated with items. > Finally, > the for loop goes over each item and sets it's color. Please note, > this is > just a funny little example. If you populate the list with more items > than > we have colors Bad Things will happen. I suppose you could do a max of > len(Items) and len(COLOURS) if you were worried about that... > > Hope this helps, > -Daryl > > > -----Original Message [With much snippage] ----- > From: Kevin Altis > Sent: Monday, September 06, 2004 8:51 PM > To: Daryl Fox > Cc: pyt...@li... > Subject: Re: [Pythoncard-users] Color in Lists > > On Sep 6, 2004, at 8:19 PM, Daryl Fox wrote: > > [SNIP] >> I do, however, have one issue. I would like to set the text colour of >> individual items in a list. > [SNIP] > > IIRC, I don't think it is supported in the underlying wx.ListBox > control used by the List component, but is supported by the wx.ListCtrl > which is underneath the MultiColumnList. You can check what the > wxWidgets docs say or find what you want to do in the wxPython demo and > then you'll have to call the appropriate wxPython methods to set the > colors. > > ka > > > > ------------------------------------------------------- > This SF.Net email is sponsored by BEA Weblogic Workshop > FREE Java Enterprise J2EE developer tools! > Get your free copy of BEA WebLogic Workshop 8.1 today. > http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click > _______________________________________________ > Pythoncard-users mailing list > Pyt...@li... > https://lists.sourceforge.net/lists/listinfo/pythoncard-users > |
From: Daryl F. <fly...@sb...> - 2004-09-09 03:26:24
|
Okay, here's my solution to this. Please note, I'm sure that many other people have better ways, but this works for me. First, the List must become a MultiColumnList. As a bonus, I was able to remove my static text label and use the column label instead. Then each item is applied a wxCOLOR. Below is a simple example. Start up the resourceEditor. For this example, build a new 'Standard Template with File->Exit menu'. Plop down a MultiColumnList and give it the name 'MultiColumnList'. Set it's size to be about 180 x 175. Save the file. The .rsrc.py file should contain the following down near the bottom: {'type':'MultiColumnList', 'name':'MultiColumnList', 'position':(15, 10), 'size':(182, 169), 'backgroundColor':(255, 255, 255), 'columnHeadings':[], 'font':{'faceName': 'Tahoma', 'family': 'sansSerif', 'size': 8}, 'items':[], 'maxColumns':20, 'rules':1, }, Now open up the .py file. and change it to: from PythonCard import model from wx import Colour COLOURS = [Colour(0, 0, 0), Colour(0x66, 0, 0), Colour(0xff, 0, 0), Colour(0xff, 0x99, 0), Colour(0xff, 0xff, 0), Colour(0, 0xff, 0), Colour(0, 0, 0xff), Colour(0x99, 0xff, 0), Colour(0xcc, 0xcc, 0xcc), Colour(0xff, 0xff, 0xff)] class MyBackground(model.Background): def on_initialize(self, event): Items = "Bad Beer Rots Our Young Guts But Vodka Goes Well".split(" ") self.components.MultiColumnList.columnHeadings = "Color Code" self.components.MultiColumnList.items = Items for Item in range(len(self.components.MultiColumnList.items)): self.components.MultiColumnList.SetItemTextColour(Item, COLOURS[Item]) if __name__ == '__main__': app = model.Application(MyBackground) app.MainLoop() Here we build a list of colours called COLOURS. Inside the on_initialize method, the column is given a label and then populated with items. Finally, the for loop goes over each item and sets it's color. Please note, this is just a funny little example. If you populate the list with more items than we have colors Bad Things will happen. I suppose you could do a max of len(Items) and len(COLOURS) if you were worried about that... Hope this helps, -Daryl -----Original Message [With much snippage] ----- From: Kevin Altis Sent: Monday, September 06, 2004 8:51 PM To: Daryl Fox Cc: pyt...@li... Subject: Re: [Pythoncard-users] Color in Lists On Sep 6, 2004, at 8:19 PM, Daryl Fox wrote: [SNIP] > I do, however, have one issue. I would like to set the text colour of > individual items in a list. [SNIP] IIRC, I don't think it is supported in the underlying wx.ListBox control used by the List component, but is supported by the wx.ListCtrl which is underneath the MultiColumnList. You can check what the wxWidgets docs say or find what you want to do in the wxPython demo and then you'll have to call the appropriate wxPython methods to set the colors. ka |
From: Kevin A. <al...@se...> - 2004-09-09 00:00:22
|
Phil and I were finally able to get together to work on this problem. It appears that the problem is limited to GTK2. There isn't anything I can do about this, so the ball is in the wxWidgets court now. If you use a GTK 1 build of wxWidgets the problem should go away. You can track the bug below, but if the problem is resolved in wxWidgets I'll post a follow-up. http://sourceforge.net/tracker/index.php? func=detail&aid=1024777&group_id=9863&atid=109863 ka On Aug 24, 2004, at 8:53 AM, Phil Edwards wrote: > First problem I've come across since upgrading everything, although I > think > this was also a problem on 0.7.x...Platform is Mandrake Linux 10, > Python > 2.3.3, wxPythonGTK2-py2.3-2.5.2.7 installed from RPM and > Pythoncard-0.8.1 out > of CVS. > > I can't select list components in the resource editor. I'm not seeing > any > mouseEnter, mouseLeave or mouseMove events being generated when > running with > the '-m' command line option. > > I haven't done any further investigation yet, can anyone confirm this > on > another Linux install? |
From: Alex T. <al...@tw...> - 2004-09-07 20:45:40
|
At 15:00 07/09/2004 -0400, Gregory Pi=F1ero wrote: >Hi, > >I can't seem to get the word wrap to happen in a textarea. It shows the=20 >portion of text that fits in the first row of the textarea but cuts off=20 >everything after that. I've included the code I'm using at the end of=20 >this email (ignore my email's word-wrapping if possible) >This is the definition: > widgetDefn=3D{'type':'TextArea', > 'name':'txt'+ column[0], > 'position':(xPosWidget, yPos), > 'size':(255*9, NumRows*rowHeight), That's 2295 pixels wide, so the text below wouldn't need to wrap to fit=20 inside it. note - the text area will NOT be confined to the screen size, or the window= =20 size, or ..... it will be 2295 pixels wide. -- Alex |
From: <gre...@co...> - 2004-09-07 18:59:00
|
Hi, I can't seem to get the word wrap to happen in a textarea. It shows the portion of text that fits in the first row of the textarea but cuts off everything after that. I've included the code I'm using at the end of this email (ignore my email's word-wrapping if possible) Should I remove the existing '\r' s and '\n's from my text, could that be confusing the textarea? Thanks, Greg This is the definition: widgetDefn={'type':'TextArea', 'name':'txt'+ column[0], 'position':(xPosWidget, yPos), 'size':(255*9, NumRows*rowHeight), 'alignment':'left', 'border':'3d', 'editable':False, 'enabled':True, 'text':'', 'toolTip':'Values in this record field', 'visible':True} Here is where it is filled: self.components[item].text=str(row[widgetCount]) And row[widgetCount] text is below: 'I saw a truck today. There was a man with a beard driving it. It had a license plate that said "god". I found myself wondering if god was a ctually in that truck. The man looked kind of non-real. I drove up next to him but he didn\'t see me. Then he turned off onto 95. I really wanted to follow him but he was going south and I have to go north. And besides, we wouldn\'t ha ve a road for him to drive on if everyone spent all their time following him. \r ' |
From: Kevin A. <al...@se...> - 2004-09-07 03:51:33
|
On Sep 6, 2004, at 8:19 PM, Daryl Fox wrote: > I've been playing with PythonCard for about a week now and I have to > say I'm > impressed. It seems very well thought out. > > I do, however, have one issue. I would like to set the text colour of > individual items in a list. Right now I'm doing a whole lot of rework > just > to get around having to do this, but it is becoming fairly difficult > at this > point. Is this even possible (without doing too much damage)? > IIRC, I don't think it is supported in the underlying wx.ListBox control used by the List component, but is supported by the wx.ListCtrl which is underneath the MultiColumnList. You can check what the wxWidgets docs say or find what you want to do in the wxPython demo and then you'll have to call the appropriate wxPython methods to set the colors. ka |
From: Daryl F. <fly...@sb...> - 2004-09-07 03:20:30
|
I've been playing with PythonCard for about a week now and I have to say I'm impressed. It seems very well thought out. I do, however, have one issue. I would like to set the text colour of individual items in a list. Right now I'm doing a whole lot of rework just to get around having to do this, but it is becoming fairly difficult at this point. Is this even possible (without doing too much damage)? |
From: Kevin A. <al...@se...> - 2004-09-04 06:44:25
|
The slides from the Vancouver Python Conference (VanPy) are now online. I did a presentation on PythonCard, so you can check out the PDF of the slides if you're interested. I don't think the slides are particularly interesting since the bulk of the presentation was building a mortgage calculator application in order to show off the various tools, creating a layout, going through some simple code, etc. However, the talk seemed well received, so I might end up doing it again and/or turning it into another walkthrough if I get properly motivated. http://www.vanpyz.org/conference/talks http://www.vanpyz.org/conference/talks/proceedings/1GRYtU ka |
From: Kevin A. <al...@se...> - 2004-09-04 04:01:00
|
On Sep 3, 2004, at 8:24 PM, Gregory Pi=F1ero wrote: > Thanks for the advice, Alex, the simplegrid program is very helpful. > > There may be a bug in the simplegrid program, is it better to report =20= > it here, or somehow get a sourceforge login deal and go that route? > > The bug is in the file: > C:\Python23\Lib\site-=20 > packages\PythonCard\samples\simpleGrid\simpleGrid.py > > The program does not work properly unless I do a global replace of =20 > event.skip() to event.Skip(). Just lower case s to upper case. I'm =20= > not sure why that would be? > Good catch. I did a global replace on most of the files when I changed =20= to mixedCase style PythonCard method names. In general, event.skip() is =20= used everywhere for consistency, even though event.Skip() is still =20 valid since PythonCard is simply "decorating" the raw wxPython events =20= with some helper attributes and providing method aliases. But in the case of that sample, the events are bound manually and don't =20= use the PythonCard event binding and dispatch, so the manually bound =20 events aren't decorated and the skip alias is missing. I went ahead =20 fixed the problem and checked the change into cvs. Now that components are much simpler to create I plan to update the =20 Grid component so that all the events are bound just like the =20 MultiColumnList and Tree components. I'll update the sample and notify =20= the list when that is done. For now, you can continue to do things like =20= the sample. ka= |
From: <gre...@co...> - 2004-09-04 03:24:21
|
Thanks for the advice, Alex, the simplegrid program is very helpful. There may be a bug in the simplegrid program, is it better to report it here, or somehow get a sourceforge login deal and go that route? The bug is in the file: C:\Python23\Lib\site-packages\PythonCard\samples\simpleGrid\simpleGrid.py The program does not work properly unless I do a global replace of event.skip() to event.Skip(). Just lower case s to upper case. I'm not sure why that would be? Here's the version info: PythonCard version: 0.8 wxPython version: 2.5.2.7 Python version: 2.3.3 (#51, Dec 18 2003, 20:22:39) [MSC v.1200 32 bit (Intel)] Platform: win32 -Greg Alex Tweedly wrote: > At 18:49 03/09/2004 -0400, Gregory Piñero wrote: > >> Thanks for the help on the dbBrowser sample. I see how to create >> widgets at runtime now. I just have one more question for today. >> >> I am looking at the dbrowser2 sample now which on my computer is: >> C:\Python23\Lib\site-packages\PythonCard\samples\dbBrowser\dbBrowser2.py >> (note: there may be a bug in dbTable.py as I had to do a global >> replace of "wxPyGridTableBase" to "PyGridTableBase" before it would run.) >> >> This program uses a grid to show a table. But I don't believe that a >> grid is a pycard widget? The author seems to be using >> wx.grid.PyGridTableBase. My general questions are where can I find >> out what events can come from this grid and how do I bind actions to >> the events? Specifically all I want to do is launch a new window when >> the user clicks on a row in the grid. > > > That's right - PythonCard doesn't (yet) have a grid widget, but this > example demonstrates the benefit of being able to "reach-through" to all > the wxPython widgets. > > You should be able to get an idea of the events etc. for any widget from > the wxWindows documentation - in this case wxGrid. > > Or - take a look at samples/simpleGrid - (included in the distribution, > but not available through the sample launcher), which shows how to bind > and handle each event type for a grid. > > (Sorry - I haven't looked at it much myself yet, so I can't answer the > specific question). > -- Alex. > |
From: Alex T. <al...@tw...> - 2004-09-04 01:46:44
|
At 18:49 03/09/2004 -0400, Gregory Pi=F1ero wrote: >Thanks for the help on the dbBrowser sample. I see how to create widgets= =20 >at runtime now. I just have one more question for today. > >I am looking at the dbrowser2 sample now which on my computer is: >C:\Python23\Lib\site-packages\PythonCard\samples\dbBrowser\dbBrowser2.py >(note: there may be a bug in dbTable.py as I had to do a global replace of= =20 >"wxPyGridTableBase" to "PyGridTableBase" before it would run.) > >This program uses a grid to show a table. But I don't believe that a grid= =20 >is a pycard widget? The author seems to be using=20 >wx.grid.PyGridTableBase. My general questions are where can I find out=20 >what events can come from this grid and how do I bind actions to the=20 >events? Specifically all I want to do is launch a new window when the=20 >user clicks on a row in the grid. That's right - PythonCard doesn't (yet) have a grid widget, but this=20 example demonstrates the benefit of being able to "reach-through" to all=20 the wxPython widgets. You should be able to get an idea of the events etc. for any widget from=20 the wxWindows documentation - in this case wxGrid. Or - take a look at samples/simpleGrid - (included in the distribution, but= =20 not available through the sample launcher), which shows how to bind and=20 handle each event type for a grid. (Sorry - I haven't looked at it much myself yet, so I can't answer the=20 specific question). -- Alex. |
From: <gre...@co...> - 2004-09-03 22:48:01
|
Thanks for the help on the dbBrowser sample. I see how to create widgets at runtime now. I just have one more question for today. I am looking at the dbrowser2 sample now which on my computer is: C:\Python23\Lib\site-packages\PythonCard\samples\dbBrowser\dbBrowser2.py (note: there may be a bug in dbTable.py as I had to do a global replace of "wxPyGridTableBase" to "PyGridTableBase" before it would run.) This program uses a grid to show a table. But I don't believe that a grid is a pycard widget? The author seems to be using wx.grid.PyGridTableBase. My general questions are where can I find out what events can come from this grid and how do I bind actions to the events? Specifically all I want to do is launch a new window when the user clicks on a row in the grid. I'm not sure if my question is clear here, so let me know if you need any other details. Thanks, Greg Kevin Altis wrote: > On Sep 3, 2004, at 11:42 AM, Gregory Piñero wrote: > >> Hi, >> >> I'm looking at the dbrowser sample. On my computer this is the file: >> C:\Python23\Lib\site- packages\PythonCard\samples\dbBrowser\dbBrowser.py >> >> So this thing when running seems to know the number of columns in any >> table I connect to and then (creates?) that many text boxes to show >> the values of each column. Does anyone know how this would work? >> How are the text boxes created on the fly like that? >> >> I was unable to locate any documentation on this this and I can't see >> how it does it from the code. >> >> Thanks, >> >> Greg > > > Creating components on the fly is easy, you just need to provide a > dictionary of the key:value pairs. Just look at the dictionaries for > each component in any .rsrc.py file and you'll see the same kind of > dictionary in use. For example, to create a button named 'btn1' in your > code you might do something like: > > self.components['btn1'] = {'type':'Button', 'name':'btn1', > 'position':(0, 30), 'label':'btn1 hello'} > > So, let's say you want to dynamically create 10 single-line fields when > your application starts up. Here's one way you might do it: > > def on_initialize(self, event): > insetFromEdge = 5 > padding = 4 > self.components['field0'] = {'type':'TextField', > 'name':'field0', 'position':(5, 5), 'text':'field0'} > height = self.components.field0.size[1] > for i in range(1,10): > name = 'field' + str(i) > position = (insetFromEdge, insetFromEdge + i * (height + > padding)) > text = name > self.components[name] = {'type':'TextField', 'name':name, > 'position':position, 'text':text} > > I'm creating the first TextField outside the loop so that I can get the > height of a TextField dynamically, which allows the code to work > regardless of the default text height on any given platform. You could > just as easily, initialize the height to 0 and do an if block after the > self.components[name] line to set the height. > > ka > > > ------------------------------------------------------- > This SF.Net email is sponsored by BEA Weblogic Workshop > FREE Java Enterprise J2EE developer tools! > Get your free copy of BEA WebLogic Workshop 8.1 today. > http://ads.osdn.com/?ad_idP47&alloc_id808&op=click > _______________________________________________ > Pythoncard-users mailing list > Pyt...@li... > https://lists.sourceforge.net/lists/listinfo/pythoncard-users > |
From: Kevin A. <al...@se...> - 2004-09-03 20:45:58
|
On Sep 3, 2004, at 11:42 AM, Gregory Pi=F1ero wrote: > Hi, > > I'm looking at the dbrowser sample. On my computer this is the file: =20= > C:\Python23\Lib\site-=20 > packages\PythonCard\samples\dbBrowser\dbBrowser.py > > So this thing when running seems to know the number of columns in any =20= > table I connect to and then (creates?) that many text boxes to show =20= > the values of each column. Does anyone know how this would work? How = =20 > are the text boxes created on the fly like that? > > I was unable to locate any documentation on this this and I can't see =20= > how it does it from the code. > > Thanks, > > Greg Creating components on the fly is easy, you just need to provide a =20 dictionary of the key:value pairs. Just look at the dictionaries for =20 each component in any .rsrc.py file and you'll see the same kind of =20 dictionary in use. For example, to create a button named 'btn1' in your =20= code you might do something like: self.components['btn1'] =3D {'type':'Button', 'name':'btn1', =20 'position':(0, 30), 'label':'btn1 hello'} So, let's say you want to dynamically create 10 single-line fields when =20= your application starts up. Here's one way you might do it: def on_initialize(self, event): insetFromEdge =3D 5 padding =3D 4 self.components['field0'] =3D {'type':'TextField', =20 'name':'field0', 'position':(5, 5), 'text':'field0'} height =3D self.components.field0.size[1] for i in range(1,10): name =3D 'field' + str(i) position =3D (insetFromEdge, insetFromEdge + i * (height + =20= padding)) text =3D name self.components[name] =3D {'type':'TextField', 'name':name, = =20 'position':position, 'text':text} I'm creating the first TextField outside the loop so that I can get the =20= height of a TextField dynamically, which allows the code to work =20 regardless of the default text height on any given platform. You could =20= just as easily, initialize the height to 0 and do an if block after the =20= self.components[name] line to set the height. ka= |