You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
(1) |
Apr
(21) |
May
(24) |
Jun
|
Jul
(16) |
Aug
(28) |
Sep
(5) |
Oct
(4) |
Nov
(2) |
Dec
(25) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(9) |
Feb
(1) |
Mar
(3) |
Apr
(5) |
May
(24) |
Jun
(5) |
Jul
(2) |
Aug
(3) |
Sep
(4) |
Oct
(8) |
Nov
(37) |
Dec
(25) |
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(4) |
Jul
(1) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(10) |
Nov
(1) |
Dec
(2) |
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Kevin A. <al...@se...> - 2005-12-26 23:49:27
|
On Dec 26, 2005, at 3:29 PM, Alex Tweedly wrote: > Kevin Altis wrote: > >> I haven't scanned through all of the cvs commits for the last year or >> so, but the changelog.txt for 0.8.2 definitely doesn't reflect all of >> the additions and fixes that have been done, especially the new >> samples and tools. Feel free to add some descriptive lines for each >> of your contributions. As we approach an actual release I'll add, >> trim and edit as necessary to the changelog if you (Alex, Andy, Phil, >> etc.) don't have time. >> > Sorry Kevin - I had totally forgotten to add anything to changelog.txt > > I've put added brief description for most things I did - but should > probably put in a longer description or documentation somewhere for > the multiresourceEditor (and maybe tabcodeEditor). > > -- > Alex Tweedly http://www.tweedly.net > Thanks Alex. readme.txt should be adequate for both of the new apps. Do you think multiresourceEditor should have a shortcut in 0.8.2 or wait another release? I need to look at my script for generating the samples HTML from the readme.txt files and run through it again for the new stuff. ka |
From: Alex T. <al...@tw...> - 2005-12-26 23:28:32
|
Kevin Altis wrote: > I haven't scanned through all of the cvs commits for the last year or > so, but the changelog.txt for 0.8.2 definitely doesn't reflect all of > the additions and fixes that have been done, especially the new > samples and tools. Feel free to add some descriptive lines for each of > your contributions. As we approach an actual release I'll add, trim > and edit as necessary to the changelog if you (Alex, Andy, Phil, etc.) > don't have time. > Sorry Kevin - I had totally forgotten to add anything to changelog.txt I've put added brief description for most things I did - but should probably put in a longer description or documentation somewhere for the multiresourceEditor (and maybe tabcodeEditor). -- Alex Tweedly http://www.tweedly.net -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.371 / Virus Database: 267.14.5/212 - Release Date: 23/12/2005 |
From: Kevin A. <al...@se...> - 2005-12-26 08:59:52
|
I haven't scanned through all of the cvs commits for the last year or so, but the changelog.txt for 0.8.2 definitely doesn't reflect all of the additions and fixes that have been done, especially the new samples and tools. Feel free to add some descriptive lines for each of your contributions. As we approach an actual release I'll add, trim and edit as necessary to the changelog if you (Alex, Andy, Phil, etc.) don't have time. ka |
From: Kevin A. <al...@se...> - 2005-12-24 21:32:30
|
I uploaded the updated version along with all of the fixed images. It may not be of use to either of you, but I also checked in the batch file I use to upload all of the images at once using the pscp program included with PuTTY (Windows). I just built the file list with a quick little script in the shell and output it to .bat file. ka |
From: Kevin A. <al...@se...> - 2005-12-24 04:57:03
|
On Dec 23, 2005, at 6:16 PM, Kevin Altis wrote: > See my "Re: ignore Raise/Lower comment for now" message at: > > http://news.gmane.org/gmane.comp.python.wxpython.devel > > What I'm still not sure about is why the resourceEditor widget > reordering doesn't appear to work on Windows or the Mac. I'm going to > dig further and see where we broke this since it should at least do > the right thing on at least one of the platforms. So far it appears > that fixComponentOrder is not actually being called when it should be > which certainly is a problem, so I need to figure out when and why > that was changed. > > ka I think I may have got it. As far as I can tell, Lower() doesn't always work, but Raise() does, so I simply changed the code to do a little extra work... def fixComponentOrder(self, name): # KEA 2005-12-23 # Lower() doesn't appear to always work correctly, # so use Raise instead with a reversed list r = self.components.order[:] r.reverse() for c in r: self.components[c].Raise() ... Since fixComponentOrder is always called this appears to work correctly on the Mac as well. I'm still tempted to call Lower() on the Mac when a component is created in model.py but that is a separate issue. Anyway, I'll let this sit for a bit, so let me know if you notice any behavior that seems wrong. I don't want to start changing code to reverse the Property Editor list or change the current Front/Back semantics until we know this works correctly. I'll assume the developers are still in favor of reversing the Front/Back semantics, so I'll look at that next. ka |
From: Kevin A. <al...@se...> - 2005-12-24 02:16:28
|
See my "Re: ignore Raise/Lower comment for now" message at: http://news.gmane.org/gmane.comp.python.wxpython.devel What I'm still not sure about is why the resourceEditor widget reordering doesn't appear to work on Windows or the Mac. I'm going to dig further and see where we broke this since it should at least do the right thing on at least one of the platforms. So far it appears that fixComponentOrder is not actually being called when it should be which certainly is a problem, so I need to figure out when and why that was changed. ka |
From: Alex T. <al...@tw...> - 2005-12-24 00:24:23
|
Kevin Altis wrote: > This was a fairly extensive update, so I would appreciate it if you > can go over it when you have time just to make sure I didn't bugger > something up. I am purposely putting all pre blocks against the left > edge of the document to make it easier to see the indent spacing, > especially since some code blocks are meant to be inserted into an > existing method. > Checked over the diffs, and the finished result, and all looks good to me. > The instructions appeared to be missing an import wx statement so I > added that so that the wx.WakeUpIdle would actually work if you > followed the steps. > > Walkthrough2.html and timers-threads.html have also been uploaded to > the main site. I'm going to get the updated > resource_editor_overview.html with all its updated images up next. I will check each one you upload - but won't say anything unless there's a problem or question. -- Alex Tweedly http://www.tweedly.net -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.371 / Virus Database: 267.14.5/212 - Release Date: 23/12/2005 |
From: Kevin A. <al...@se...> - 2005-12-23 20:10:06
|
This was a fairly extensive update, so I would appreciate it if you can go over it when you have time just to make sure I didn't bugger something up. I am purposely putting all pre blocks against the left edge of the document to make it easier to see the indent spacing, especially since some code blocks are meant to be inserted into an existing method. The instructions appeared to be missing an import wx statement so I added that so that the wx.WakeUpIdle would actually work if you followed the steps. Walkthrough2.html and timers-threads.html have also been uploaded to the main site. I'm going to get the updated resource_editor_overview.html with all its updated images up next. ka |
From: Alex T. <al...@tw...> - 2005-12-23 02:02:21
|
Kevin Altis wrote: > I've updated walkthrough2.html to use <pre> instead of the div code > block. This was only done for code that is meant to be copied and > pasted, so not the inline bits in a paragraph, just where we used to > have non-breaking spaces in use. If this looks ok and works fine for > both of you I will update other docs to the same form over the next > day or two. Looks and works fine for me (Firefox and IE - on Windows). -- Alex Tweedly http://www.tweedly.net -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.371 / Virus Database: 267.14.3/209 - Release Date: 21/12/2005 |
From: Kevin A. <al...@se...> - 2005-12-22 18:26:31
|
I've updated walkthrough2.html to use <pre> instead of the div code block. This was only done for code that is meant to be copied and pasted, so not the inline bits in a paragraph, just where we used to have non-breaking spaces in use. If this looks ok and works fine for both of you I will update other docs to the same form over the next day or two. ka |
From: Alex T. <al...@tw...> - 2005-12-19 22:54:31
|
Kevin Altis wrote: > > Alex I have updated your project permissions so you should be able to > close tracker items as well as receive notifications on items. If this > isn't working let me know and I'll double-check the changes on SF. > They changed the UI again so I may not have changed all the flags. > That did it - thank you Kevin. -- Alex Tweedly http://www.tweedly.net -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.371 / Virus Database: 267.14.1/206 - Release Date: 16/12/2005 |
From: Kevin A. <al...@se...> - 2005-12-19 02:47:40
|
On Dec 18, 2005, at 12:41 PM, Alex Tweedly wrote: > Andrew Todd wrote: > >> Alex Tweedly wrote: >> >>> >>> I just fixed a trivial bug in the docs, in response to the entry in >>> the SourceForge bugs list. >>> >>> How do I update the bug entry ? >>> >> >> Just make sure that you are logged in to SourceForge and then select >> the particular bug or feature request you would like to update. >> >> Scroll to the bottom of the page, make any changes you require - >> usually just the addition of a comment and/or a change to the status >> and then press the 'Submit Changes' button at the bottom. >> > I can add comments - but I can't change status (or other similar > fields). The "?" next to status says "... this drop-down box ...." but > for me it's not a drop-down box, merely a title. Maybe only an admin > can update the fields, while anyone can add comments. > Alex I have updated your project permissions so you should be able to close tracker items as well as receive notifications on items. If this isn't working let me know and I'll double-check the changes on SF. They changed the UI again so I may not have changed all the flags. ka |
From: Alex T. <al...@tw...> - 2005-12-18 20:41:38
|
Andrew Todd wrote: > Alex Tweedly wrote: > >> >> I just fixed a trivial bug in the docs, in response to the entry in >> the SourceForge bugs list. >> >> How do I update the bug entry ? >> > > Just make sure that you are logged in to SourceForge and then select > the particular bug or feature request you would like to update. > > Scroll to the bottom of the page, make any changes you require - > usually just the addition of a comment and/or a change to the status > and then press the 'Submit Changes' button at the bottom. > I can add comments - but I can't change status (or other similar fields). The "?" next to status says "... this drop-down box ...." but for me it's not a drop-down box, merely a title. Maybe only an admin can update the fields, while anyone can add comments. > Don't forget that you can use the SourceForgeTracker sample to look at > the data before venturing onto the web. I'll try that out - thanks. -- Alex Tweedly http://www.tweedly.net -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.371 / Virus Database: 267.14.1/206 - Release Date: 16/12/2005 |
From: Kevin A. <al...@se...> - 2005-12-18 17:13:10
|
Robin is back. He has started going through his backlog of email and is making test builds of wxPython. ka |
From: Andrew T. <an...@ha...> - 2005-12-18 05:12:23
|
Alex Tweedly wrote: > > I just fixed a trivial bug in the docs, in response to the entry in the > SourceForge bugs list. > > How do I update the bug entry ? > Just make sure that you are logged in to SourceForge and then select the particular bug or feature request you would like to update. Scroll to the bottom of the page, make any changes you require - usually just the addition of a comment and/or a change to the status and then press the 'Submit Changes' button at the bottom. Don't forget that you can use the SourceForgeTracker sample to look at the data before venturing onto the web. Regards, Andy -- -------------------------------------------------------------------------------- From the desk of Andrew J Todd esq - http://www.halfcooked.com/ |
From: Alex T. <al...@tw...> - 2005-12-17 15:14:34
|
I just fixed a trivial bug in the docs, in response to the entry in the SourceForge bugs list. How do I update the bug entry ? -- Alex Tweedly http://www.tweedly.net -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.1.371 / Virus Database: 267.14.1/206 - Release Date: 16/12/2005 |
From: AVS <md...@ho...> - 2005-12-08 21:19:29
|
Hello Pythoncard-devel, At this time we can offer a small update at our system - LS-L0 LITA and LITTLE CUTIES! Studio and our little stars are proud to present their new project. You can now compare this one with our other sites, judge the level of professionalism and exposure of subject, with have never been so high! Starign from over 4,000 HQ pics, the project features sets made in the studio, as well as on the side of nature. http://Cherokee.offer4in1.com/6/?subcontract Our great and unique offer: for each subscribtion You get access to another three sites from our portal for 31 days... without any additional payments! Simply subscribe, select and use! MSGID: 8WoBArE9RyRtKqwantweYDTpyc7pQ83O |
From: Andy T. <an...@ha...> - 2005-11-12 01:52:32
|
Phil Edwards wrote: > Just another thought that has occurred to me which I'd appreciate some > feedback on. > > In the current build of the RPMs for PythonCard, only the samples > launcher itself is made executable. In response to a bug report filed by > someone earlier in the year I looked at what would be involved in > shipping the RPM so that *all* of the samples were set to be executable, > meaning that a given sample app could be run directly without having to > either type 'python /path/to/required/sample' or explicitly fire up the > samples launcher. It's simple to do, just requiring some extra 'chmod > 755' lines in the RPM spec file. > > Does anybody have any strong feelings on this one way or the other? > Sounds like a good plan. We should also make the tool applications executable as well. It would be a benefit in the Debian package as well. Does this need to be in the packaging scripts? Or can we just set the file permissions in CVS and let distutils take care of it for us? Regards, Andy -- -------------------------------------------------------------------------------- From the desk of Andrew J Todd esq - http://www.halfcooked.com/ |
From: Phil E. <ph...@li...> - 2005-11-10 12:57:13
|
Just another thought that has occurred to me which I'd appreciate some feedback on. In the current build of the RPMs for PythonCard, only the samples launcher itself is made executable. In response to a bug report filed by someone earlier in the year I looked at what would be involved in shipping the RPM so that *all* of the samples were set to be executable, meaning that a given sample app could be run directly without having to either type 'python /path/to/required/sample' or explicitly fire up the samples launcher. It's simple to do, just requiring some extra 'chmod 755' lines in the RPM spec file. Does anybody have any strong feelings on this one way or the other? -- Phil Edwards Brighton, UK |
From: Alex T. <al...@tw...> - 2005-10-19 22:15:02
|
{'application':{'type':'Application', 'name':'Template', 'backgrounds': [ {'type':'Background', 'name':'bgTemplate', 'title':'resourceEditor Property Editor', 'size':(416, 619), 'statusBar':1, 'visible':0, 'components': [ {'type':'CheckBox', 'name':'alphabetizeComponents', 'position':(5, 231), 'label':'Alphabetize Components', }, {'type':'CheckBox', 'name':'chkallowNameLabelVariation', 'position':(149, 24), 'size':(70, -1), 'label':'Vary', }, {'type':'ImageButton', 'name':'SendToBack', 'position':(8, 301), 'size':(24, 32), 'border':'3d', 'command':'componentSendBack', 'file':'images/send_to_back.png', 'toolTip':'Send component(s) to back', }, {'type':'ImageButton', 'name':'MoveBack', 'position':(32, 301), 'size':(24, 32), 'border':'3d', 'command':'componentMoveBack', 'file':'images/move_back.png', 'toolTip':'Move component(s) towards back', }, {'type':'ImageButton', 'name':'reLayer', 'position':(56, 333), 'size':(32, 32), 'border':'3d', 'command':'componentRelayer', 'file':'images/relayer.png', 'toolTip':'Re-layer components, top-left to bottom right', }, {'type':'ImageButton', 'name':'MoveTogether', 'position':(56, 301), 'size':(32, 32), 'border':'3d', 'command':'componentMoveTogether', 'file':'images/move_together.png', 'toolTip':'Gather components together', }, {'type':'ImageButton', 'name':'MoveForward', 'position':(88, 301), 'size':(24, 32), 'border':'3d', 'command':'componentMoveForward', 'file':'images/move_forward.png', 'toolTip':'Move component(s) towards front', }, {'type':'ImageButton', 'name':'SendToFront', 'position':(112, 301), 'size':(24, 32), 'border':'3d', 'command':'componentBringFront', 'file':'images/send_to_front.png', 'toolTip':'Send component(s) to front', }, {'type':'StaticText', 'name':'Properties', 'position':(214, 6), 'text':'Properties', }, {'type':'StaticText', 'name':'txtname', 'position':(160, 24), 'size':(84, -1), 'alignment':'right', 'text':'name', }, {'type':'TextField', 'name':'fldname', 'position':(250, 20), 'size':(148, -1), }, {'type':'StaticText', 'name':'txtlabel', 'position':(160, 56), 'size':(84, -1), 'alignment':'right', 'text':'Label', }, {'type':'StaticText', 'name':'txttextArea', 'position':(160, 56), 'size':(84, -1), 'alignment':'right', 'text':'Text', }, {'type':'StaticText', 'name':'txttext', 'position':(160, 56), 'size':(84, -1), 'alignment':'right', 'text':'Text', }, {'type':'StaticBox', 'name':'stbAlign', 'position':(194, 59), 'size':(166, 114), 'label':'ALIGN', }, {'type':'TextField', 'name':'fldtext', 'position':(250, 52), 'size':(148, -1), }, {'type':'TextField', 'name':'fldlabel', 'position':(250, 52), 'size':(148, -1), }, {'type':'ImageButton', 'name':'alignTop', 'position':(236, 79), 'size':(24, 24), 'border':'3d', 'command':'align', 'file':'images/align_top.png', 'toolTip':'Align component tops', }, {'type':'TextArea', 'name':'fldtextArea', 'position':(250, 52), 'size':(148, 55), }, {'type':'ImageButton', 'name':'alignVerticalCentres', 'position':(315, 81), 'size':(24, 24), 'border':'3d', 'command':'align', 'file':'images/align_vert_centres.png', 'toolTip':'Align component centres in a vertical stack', }, {'type':'CheckBox', 'name':'chkenabled', 'position':(150, 115), 'size':(80, -1), 'command':'checkedProperty', 'label':'Enabled', }, {'type':'ImageButton', 'name':'alignLeft', 'position':(200, 112), 'size':(24, 24), 'border':'3d', 'command':'align', 'file':'images/align_left.png', 'toolTip':'Align component left edges', }, {'type':'CheckBox', 'name':'chkvisible', 'position':(230, 115), 'size':(80, -1), 'command':'checkedProperty', 'label':'Visible', }, {'type':'ImageButton', 'name':'alignRight', 'position':(270, 112), 'size':(24, 24), 'border':'3d', 'command':'align', 'file':'images/align_right.png', 'toolTip':'Align component right edges', }, {'type':'CheckBox', 'name':'chkchecked', 'position':(310, 115), 'size':(80, -1), 'command':'checkedProperty', 'label':'Checked', }, {'type':'StaticText', 'name':'txtbackgroundColor', 'position':(160, 160), 'size':(84, -1), 'alignment':'right', 'text':'backgroundColor', }, {'type':'ImageButton', 'name':'alignBottom', 'position':(236, 140), 'size':(24, 24), 'border':'3d', 'command':'align', 'file':'images/align_bottom.png', 'toolTip':'Align component bottoms', }, {'type':'ImageButton', 'name':'alignHorizontalCentres', 'position':(314, 139), 'size':(24, 24), 'border':'3d', 'command':'align', 'file':'images/align_horiz_centres.png', 'toolTip':'Align component centres in a horizontal line', }, {'type':'TextField', 'name':'fldbackgroundColor', 'position':(250, 160), 'text':'backgroundColor', }, {'type':'TextField', 'name':'fldforegroundColor', 'position':(250, 135), 'text':'foregroundColor', }, {'type':'Button', 'name':'clrforegroundColor', 'position':(356, 135), 'size':(35, -1), 'command':'color', 'label':'...', }, {'type':'Button', 'name':'clrbackgroundColor', 'position':(356, 160), 'size':(35, -1), 'command':'color', 'label':'...', }, {'type':'StaticText', 'name':'txtforegroundColor', 'position':(160, 140), 'size':(84, -1), 'alignment':'right', 'text':'foregroundColor', }, {'type':'StaticText', 'name':'txtborder', 'position':(160, 215), 'size':(84, -1), 'alignment':'right', 'text':'Border', }, {'type':'Choice', 'name':'popborder', 'position':(238, 210), 'size':(160, -1), 'items':[], }, {'type':'StaticText', 'name':'txtfont', 'position':(160, 240), 'size':(84, -1), 'alignment':'right', 'text':'Font', }, {'type':'TextField', 'name':'fldfont', 'position':(250, 234), }, {'type':'Button', 'name':'fntfont', 'position':(350, 232), 'size':(55, -1), 'command':'changeFont', 'label':'Font...', }, {'type':'StaticText', 'name':'txtposition', 'position':(150, 265), 'size':(42, -1), 'alignment':'right', 'text':'Position', }, {'type':'StaticBox', 'name':'stbDistribute', 'position':(197, 179), 'size':(166, 101), 'label':'DISTRIBUTE', }, {'type':'ImageButton', 'name':'distHorizEdge', 'position':(215, 199), 'size':(32, 32), 'border':'3d', 'command':'distribute', 'file':'images/dist_horiz_edge.png', 'toolTip':'Distribute horizontally, edge-to-edge', }, {'type':'ImageButton', 'name':'distVertEdge', 'position':(295, 199), 'size':(32, 32), 'border':'3d', 'command':'distribute', 'file':'images/dist_vert_edge.png', 'toolTip':'Distribute vertically, edge-to-edge', }, {'type':'TextField', 'name':'fldposition', 'position':(205, 260), 'size':(68, -1), }, {'type':'ImageButton', 'name':'distHorizFirstLast', 'position':(215, 234), 'size':(32, 32), 'border':'3d', 'command':'distribute', 'file':'images/dist_horiz_space.png', 'toolTip':'Distribute horizontally, first to last', }, {'type':'StaticText', 'name':'txtsize', 'position':(290, 265), 'size':(31, -1), 'alignment':'right', 'text':'Size', }, {'type':'ImageButton', 'name':'distVertFirstLast', 'position':(296, 233), 'size':(32, 32), 'border':'3d', 'command':'distribute', 'file':'images/dist_vert_space.png', 'toolTip':'Distribute vertically, first to last', }, {'type':'TextField', 'name':'fldsize', 'position':(330, 260), 'size':(68, -1), }, {'type':'StaticBox', 'name':'stbEqualize', 'position':(197, 290), 'size':(166, 62), 'label':'EQUALIZE', }, {'type':'ImageButton', 'name':'equalWidth', 'position':(214, 312), 'border':'3d', 'command':'equal', 'file':'images/equal_width.png', 'toolTip':'Equalize heights to those of the first component', }, {'type':'ImageButton', 'name':'equalHeight', 'position':(265, 312), 'size':(32, 32), 'border':'3d', 'command':'equal', 'file':'images/equal_height.png', 'toolTip':'Equalize heights to that of the first component', }, {'type':'ImageButton', 'name':'equalBoth', 'position':(316, 312), 'size':(32, 32), 'border':'3d', 'command':'equal', 'file':'images/equal_both.png', 'toolTip':'Equalize width & height to those of the first component', }, {'type':'ImageButton', 'name':'nudgeDown', 'position':(60, 454), 'size':(18, 24), 'border':'transparent', 'command':'nudge', 'file':'images/nudge_down.png', 'toolTip':'Nudge components down by specified distance', }, {'type':'ImageButton', 'name':'nudgeUp', 'position':(60, 399), 'size':(18, 24), 'border':'transparent', 'command':'nudge', 'file':'images/nudge_up.png', 'toolTip':'Nudge components up by specified distance', }, {'type':'Spinner', 'name':'nudgeDistance', 'position':(51, 430), 'size':(41, -1), 'max':4, 'min':1, 'toolTip':'Distance to nudge components', 'value':1, }, {'type':'ImageButton', 'name':'nudgeRight', 'position':(100, 429), 'size':(18, 24), 'border':'transparent', 'command':'nudge', 'file':'images/nudge_right.png', 'toolTip':'Nudge components to right by specified distance', }, {'type':'ImageButton', 'name':'nudgeLeft', 'position':(23, 430), 'size':(18, 24), 'border':'transparent', 'command':'nudge', 'file':'images/nudge_left.png', 'toolTip':'Nudge components to left by specified distance', }, {'type':'StaticBox', 'name':'stbNudge', 'position':(3, 377), 'size':(141, 130), 'label':'NUDGE', }, {'type':'Button', 'name':'wUpdate', 'position':(10, 518), 'label':'Update', 'toolTip':'Update changes', }, {'type':'List', 'name':'wComponentList', 'position':(7, 21), 'size':(134, 204), 'items':[], }, {'type':'StaticText', 'name':'stcNameClass', 'position':(5, 3), 'text':'Name : Class', }, ] # end components } # end background ] # end backgrounds } } |
From: <bra...@om...> - 2005-10-19 20:19:28
|
Some of the screens on my app need to have a large number of widgets, and I'm finding this situation difficult to manage in propertyEditor and multiPropertyEditor. I really want to be able to alphabetize the list of widgets, but even if that feature existed, it would screw up the tab order. Not only would it be nice to be able to alphabetize, it would be nice to order by type of widget. Why? Because it's difficult to locate the widget I need to work with. It doesn't matter that I have a consistent naming convention--lacking no consistent sorting order, I have a lot of trouble locating the desired widget in the list. On some screens, the list is just too long. Why not just click the desired widget? Sometimes that's not an option, for instance when a staticBox is in the way, or the widget is invisible. I really think tab order should be a separate list from the list of all widgets. After all, not every widget is tab-focusable (StaticText, StaticBox, StaticLine). And making that separation will allow us to refine the MultiPropertyEditor GUI to do nice things like widget sorting. Brad Allen IT Desktop Support Omnicom Management Services Dallas, TX http://www.omsdal.com |
From: Alex T. <al...@tw...> - 2005-10-13 01:23:49
|
Andy Todd wrote: > I say go for it. I'm giving a presentation at the Australian open > source developer's conference [1] in about six weeks and this will > help answer the first question I'll get [2]. > > As Brad says it doesn't impact or break any other part of the > framework, and if it's in CVS I'm more likely to test it. > Done. As I said before, I've tried most of the samples using it - and it pretty well works for most of them that I'd expect it to work for. I'd be grateful to hear of any other experience with it - good or bad. > > [1] http://www.osdc.com.au/ > [2] Which is always "when will you support sizers" I'd still like to support more complex sizers - but every time I think about adding sizers to resourceEditor, it feels like it's straying too far from "easy to use" and "intuitive layout". So if anyone knows of a UI editor that supports sizers and is easy (or relatively) easy to use, please let me know and I'll take a look at it. -- Alex Tweedly http://www.tweedly.net -- No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.344 / Virus Database: 267.11.14/130 - Release Date: 12/10/2005 |
From: Andy T. <an...@ha...> - 2005-10-12 09:53:47
|
Alex Tweedly wrote: > bra...@om... wrote: > >> >> I've only tried this on a couple of the more complex child windows, >> but so >> far so good. The only trouble I ran into was a ZeroDivisionError. >> >> Traceback (most recent call last): >> File "/OMS/dev/main/OMS/Mycroft/source/client/simpleSizer.py", line >> 44, in RecalcSizes >> scaleX = 100 * curWidth / minWidth >> ZeroDivisionError: integer division or modulo by zero >> >> It turned out that this error went away after I made sure the child >> window >> that generated was resizeable. >> > I haven't been able to get this to happen (I had tested on > non-resizeable windows). The error happens in ReCalcSizes which is only > called when the window is resized; if the window is marked as > "non-resizeable" then I don't really see why it should be in that > section of code at all. Anything unusual about the window/app this > happened in ? (I checked it again on Mac just in case it was platform > dependent - my earlier testing was Win only - but I don't get an error > there either). > > I've put in a safety check - could you please test this (file attached) > >> I vote for simpleSizer to go into PythonCard CVS ASAP. It's not going >> to break >> anything else because nothing else is dependent on it yet. It's a great, >> super-easy way to add sizers to PythonCard. It obviously hasn't been >> tested >> in every scenario, and it's not perfect, but it's far better than no >> sizers at all. >> It's also very in keeping with the PythonCard spirit of shallow >> learning curve. >> And putting it out there at will net us a lot more testers. Why wait >> for 2.0? > > That sounds reasonable to me. > Anyone object ? Or have other thoughts on adding this to CVS ? > > -- > Alex Tweedly http://www.tweedly.net > > I say go for it. I'm giving a presentation at the Australian open source developer's conference [1] in about six weeks and this will help answer the first question I'll get [2]. As Brad says it doesn't impact or break any other part of the framework, and if it's in CVS I'm more likely to test it. Regards, Andy [1] http://www.osdc.com.au/ [2] Which is always "when will you support sizers" -- -------------------------------------------------------------------------------- From the desk of Andrew J Todd esq - http://www.halfcooked.com/ |
From: Alex T. <al...@tw...> - 2005-09-29 17:07:37
|
#!/usr/bin/python """ Simple sizer for PythonCard """ import wx DEBUG = False DEBUG1 = False #---------------------------------------------------------------------- class simpleSizer(wx.PySizer): def __init__(self, minsize, rows=100, cols=100, border=0): wx.PySizer.__init__(self) self.minsize = minsize self.cols = cols self.rows = rows self.border = border #-------------------------------------------------- def Add(self, item, option=0, flag=0, border=0, pos=None, size=None, growX = False, growY = False ): if DEBUG: print "adding", item.name, pos, size, growX, growY wx.PySizer.Add(self, item, option, flag, border, userData=(pos, size, growX, growY)) #-------------------------------------------------- def CalcMin( self ): x,y = self.minsize return wx.Size(x, y) #-------------------------------------------------- def RecalcSizes( self ): # save current dimensions, etc. curWidth, curHeight = self.GetSize() px, py = self.GetPosition() minWidth, minHeight = self.CalcMin() if DEBUG: print minWidth, minHeight , curWidth, curHeight if minWidth == 0 or minHeight == 0: return scaleX = 100 * curWidth / minWidth scaleY = 100 * curHeight / minHeight # iterate children and set dimensions... for item in self.GetChildren(): pos, size, growX, growY = item.GetUserData() if DEBUG: print "in recalc", pos, size, growX, growY cx,cy = pos sx,sy = size cx = (cx * scaleX + sx*scaleX/2) / 100 cy = (cy * scaleY + sy*scaleY/2) / 100 if growX: sx = sx * scaleX / 100 if growY: sy = sy * scaleY / 100 self.SetItemBounds( item, cx-sx/2, cy-sy/2, sx, sy ) #-------------------------------------------------- def SetItemBounds(self, item, x, y, w, h): # calculate the item's actual size and position within # its grid cell ipt = wx.Point(x, y) isz = wx.Size(w,h) if DEBUG: print "in itembounds", x,y,w,h item.SetDimension(ipt, isz) #-------------------------------------------------- # AGT fill this list heightGrowableTypes = ["BitmapCanvas", "CodeEditor", "HtmlWindow", \ "Image", "List", "MultiColumnList", "Notebook", \ "RadioGroup", "StaticBox", "TextArea", \ "Tree"] widthGrowableTypes = ["BitmapCanvas", "CheckBox", "Choice", \ "CodeEditor", "ComboBox", "HtmlWindow", \ "Image", "List", "MultiColumnList", \ "Notebook", \ "PasswordField", "RadioGroup", "Spinner", \ "StaticBox", "StaticText", "TextArea", \ "TextField", "Tree"] growableTypes = ["Gauge", "Slider", "StaticLine"] def autoSizer(aBg): winX, winY = aBg.size # make list of all components, make a RowCol sizer to hold them complist = [] for compName in aBg.components.iterkeys(): comp = aBg.components[compName] complist.append( comp ) sizer = simpleSizer(aBg.panel.size, 100,100) # add the components to the grid for comp in complist: tx, ty = comp.position dx, dy = comp.size # AGT Must be an easier way to get a component's type ?? compType = comp._resource.__dict__['type'] dx1, dy1 = comp.GetBestSize() if dx1 > dx: dx = dx1 if dy1 > dy: # hack to deal with the fact that GetBestSize() comes up with too # large heights for textareas. if compType <> "TextArea": dy = dy1 # AGT FUTURE should replace with growable attribute in a component's spec if "HEIGHT_GROWABLE" in comp.userdata or \ compType in heightGrowableTypes or \ (compType in growableTypes and comp.layout == "vertical"): compGrowableY = True else: compGrowableY = False if "WIDTH_GROWABLE" in comp.userdata or \ compType in widthGrowableTypes or \ (compType in growableTypes and comp.layout == "horizontal"): compGrowableX = True else: compGrowableX = False sizer.Add(comp, pos=(tx,ty), size=(dx,dy), growX = compGrowableX, growY = compGrowableY ) if DEBUG1: print "adding ", comp.name, (tx, ty), (dx, dy), compGrowableX, compGrowableY sizer.SetSizeHints(aBg) aBg.panel.SetSizer(sizer) aBg.panel.SetAutoLayout(1) aBg.panel.Layout() #-------------------------------------------------- |
From: <bra...@om...> - 2005-09-28 18:25:15
|
> Alex Tweedly wrote: > I've written a simple sizer that (I think) does what I was thinking of. > It's pretty simple-minded, but if you have a simple, straightforward > layout, this will "work" most of the time. It's not always great - > layouts can often look stretched, but it achieves the main purpose of > making fields larger as the window size is increased. Oh, wow. Wow, wow, wow. This works great with my app. Mr. Tweedly, I bow and scrape at your majestic feet. I just sat down to resume work on my project after weeks away from it, and recalled that trying out simpleSizer was on my to-do list. Little did I realize how amazingly simple it would be to implement, and how effectively it would improve my tabbed interface app. One of the reasons this is so gratifying is that I kept seeing my boss and a couple of other end users unconsciously trying to resize the main window even when it did not have resizeable enabled and they knew full well the feature was not implemented. To implement simpleSizer in my apps main window (and it's child tabs), all I needed to do was make the main window resizeable using Resource Editor, and add import simpleSizer simpleSizer.autoSizer(self) to two different on_initialize methods -- one for the main window, and one for the parent class of all the tabs. This caused ALL the tabs and child tabs to resize their contents beautifully as the window was resized. I've only tried this on a couple of the more complex child windows, but so far so good. The only trouble I ran into was a ZeroDivisionError. Traceback (most recent call last): File "/OMS/dev/main/OMS/Mycroft/source/client/simpleSizer.py", line 44, in RecalcSizes scaleX = 100 * curWidth / minWidth ZeroDivisionError: integer division or modulo by zero It turned out that this error went away after I made sure the child window that generated was resizeable. You might notice I stuck simpleSizer.py in one of my own packages rather than in PythonCard. It works fine that way. When simpleSizer makes it into PythonCard CVS, I will change my import statements and get rid of the one from my client package. All my testing has so far been on Mac OS 10.4.2, wxPython 2.6, and PythonCard .82, and on Windows XP with wxPython 2.6 and PythonCard .82. I vote for simpleSizer to go into PythonCard CVS ASAP. It's not going to break anything else because nothing else is dependent on it yet. It's a great, super-easy way to add sizers to PythonCard. It obviously hasn't been tested in every scenario, and it's not perfect, but it's far better than no sizers at all. It's also very in keeping with the PythonCard spirit of shallow learning curve. And putting it out there at will net us a lot more testers. Why wait for 2.0? Brad Allen IT Desktop Support Omnicom Management Services Dallas, TX http://www.omsdal.com |