You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
(45) |
May
(185) |
Jun
|
Jul
(36) |
Aug
(205) |
Sep
(98) |
Oct
(107) |
Nov
(6) |
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(1) |
Feb
(2) |
Mar
(19) |
Apr
(26) |
May
(18) |
Jun
|
Jul
(12) |
Aug
(16) |
Sep
(22) |
Oct
(7) |
Nov
(11) |
Dec
(74) |
2006 |
Jan
(14) |
Feb
(1) |
Mar
(3) |
Apr
(3) |
May
(14) |
Jun
(5) |
Jul
(20) |
Aug
(10) |
Sep
(1) |
Oct
|
Nov
(4) |
Dec
(1) |
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(3) |
Jul
(14) |
Aug
|
Sep
|
Oct
(6) |
Nov
(1) |
Dec
|
From: Phil E. <l2...@us...> - 2005-05-12 08:35:42
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/doc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30444 Modified Files: standaloneBuilder.html Log Message: Added some explanation as to what the 'extra scripts' box is actually used for. Index: standaloneBuilder.html =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/doc/standaloneBuilder.html,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** standaloneBuilder.html 5 May 2005 12:50:25 -0000 1.2 --- standaloneBuilder.html 12 May 2005 08:35:32 -0000 1.3 *************** *** 87,90 **** --- 87,104 ---- <div align="center"><img src="pic11.jpg" /></div> + <p>A note is probably in order at this point about the <i>Script files</i> box. Generally, + McMillan Installer is quite good at working out if there are any additional source files + associated with the main script, simply by examining any <i>import</i> lines in the + source code. This may appear to make the <i>Script files</i> box largely superfluous. If + you intend to only ever build projects for Windows platforms, then you may well find that + you never need to explicitly list any additional script files. If, however, you also want + to distribute your project to Linux users, then things are slightly different. When running + <i>standaloneBuilder</i> on Linux, the rebuild button simply builds a compressed tar file + containing the items you have specified as making up your project. In this scenario, only + those files that you have explicitly listed will be included in the tar file. Also, by + including your script files explicitly, the usefulness of <i>standaloneBuiler</i> as a + general purpose project manager comes into play. You can edit a given script file by + simply selecting it in the list and clicking the <i>Edit...</i> button.</p> + <p>Now, under the <i>Resource files</i> section of the main window, click the Add button. Select the <i>counter.rsrc.py</i> file and click on Open. This adds the resource file |
From: Phil E. <l2...@us...> - 2005-05-12 08:33:53
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/doc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30202 Modified Files: license.txt Log Message: Corrected copyright message and removed inaccurate list of PythonCard developers. Index: license.txt =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/doc/license.txt,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** license.txt 9 Apr 2005 09:30:36 -0000 1.1 --- license.txt 12 May 2005 08:33:44 -0000 1.2 *************** *** 14,48 **** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ! ! The PythonCard developers and contributors are; ! Kevin Altis - developer, project lead, <al...@se...> ! Rowland Smith - developer ! Patrick K O'Brien - developer, PyCrust, <po...@or...> ! Neil Hodgson - developer, wxStyledTextCtrl (Scintilla), <ne...@sc...> ! Robin Dunn - developer, wxPython, <ro...@al...> ! Andy Todd - developer, dbBrowser sample, gadflyDatabase.py, documentation, <an...@ha...> ! Arlo Belshee - developer, lsystem sample ! Kim Wallmark - developer, lsystem sample ! Phil Edwards - developer, documentation, pysshed sample, Linux RPMs, <ph...@li...> ! Dan Winkler - developer, textIndexer sample, co-Godfather ;-) ! Kenneth Pronovici - Debian builds ! Dan Shafer - documentation, counter sample ! Thomas Heller - py2exe scripts, Windows distutils script ! Simon Kittle - textRouter sample ! Juergen Rauch - custdb sample ! Richard Wolff ! Randy Lea - rpn sample ! Riaan Booysen - STCStyleEditor.py ! David McNab - documentation ! David Primmer - documentation ! Fred Pacquier - fpop sample ! Gene Cash - EXIF.py ! Jon Dyte ! Roman Suzi ! William Volkman - multicolumnexample sample ! Bruce Eckel - moderator sample ! Tom Jacobs - montyhall sample ! Stephen Waterbury - twistedEchoClient sample ! Ward Cunningham - lsystem sample ! Alex Tweedly - resourceEditor additions --- 14,24 ---- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ! MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO ! EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, ! EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT ! OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING ! IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY ! OF SUCH DAMAGE. |
From: Phil E. <l2...@us...> - 2005-05-12 08:33:35
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/doc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30163 Modified Files: license.html Log Message: Corrected copyright message and removed inaccurate list of PythonCard developers. Index: license.html =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/doc/license.html,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** license.html 9 Apr 2005 09:30:36 -0000 1.1 --- license.html 12 May 2005 08:33:27 -0000 1.2 *************** *** 20,57 **** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - The PythonCard developers and contributors are; - Kevin Altis - developer, project lead, <al...@se...> - Rowland Smith - developer - Patrick K O'Brien - developer, PyCrust, <po...@or...> - Neil Hodgson - developer, wxStyledTextCtrl (Scintilla), <ne...@sc...> - Robin Dunn - developer, wxPython, <ro...@al...> - Andy Todd - developer, dbBrowser sample, gadflyDatabase.py, documentation, <an...@ha...> - Arlo Belshee - developer, lsystem sample - Kim Wallmark - developer, lsystem sample - Phil Edwards - developer, documentation, pysshed sample, Linux RPMs, <ph...@li...> - Dan Winkler - developer, textIndexer sample, co-Godfather ;-) - Kenneth Pronovici - Debian builds - Dan Shafer - documentation, counter sample - Thomas Heller - py2exe scripts, Windows distutils script - Simon Kittle - textRouter sample - Juergen Rauch - custdb sample - Richard Wolff - Randy Lea - rpn sample - Riaan Booysen - STCStyleEditor.py - David McNab - documentation - David Primmer - documentation - Fred Pacquier - fpop sample - Gene Cash - EXIF.py - Jon Dyte - Roman Suzi - William Volkman - multicolumnexample sample - Bruce Eckel - moderator sample - Tom Jacobs - montyhall sample - Stephen Waterbury - twistedEchoClient sample - Ward Cunningham - lsystem sample - Alex Tweedly - resourceEditor additions </pre> </body> ! </html> --- 20,34 ---- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ! OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN ! NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ! SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED ! TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR ! PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF ! LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING ! NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, ! EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </pre> </body> ! </html> |
From: Phil E. <l2...@us...> - 2005-05-12 08:32:59
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30090 Modified Files: standaloneBuilder.py Log Message: Corrected copyright message and removed inaccurate list of PythonCard developers. Added a work around for the fact that wxFileDialog is happy to accept non-existent filenames. Adding a script now checks for a matching resource file and pops up a dialog to see if you want to add the resource file at the same time. Index: standaloneBuilder.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/standaloneBuilder.py,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** standaloneBuilder.py 9 May 2005 09:58:02 -0000 1.10 --- standaloneBuilder.py 12 May 2005 08:32:50 -0000 1.11 *************** *** 2,6 **** # # PythonCard standaloneBuilder tool - Phil Edwards <ph...@li...> ! # Copyright (c) 2001-2003 PythonCard developers # All rights reserved. # --- 2,6 ---- # # PythonCard standaloneBuilder tool - Phil Edwards <ph...@li...> ! # Copyright (c) 2001-2005 PythonCard developers # All rights reserved. # *************** *** 27,54 **** # SUCH DAMAGE. # - # The PythonCard developers are; - # Kevin Altis (al...@se...) - # Rowland Smith - # Patrick K O'Brien (po...@or...) - # Neil Hodgson (ne...@sc...) - # Robin Dunn (ro...@al...) - # Dan Winkler - # Andy Todd (an...@ha...) - # Simon Kittle - # Juergen Rauch - # Richard Wolff - # Dan Shafer - # Randy Lea - # Riaan Booysen - # David Primmer - # Fred Pacquier - # Gene Cash - # Thomas Heller - # Phil Edwards (ph...@li...) - # David McNab - # Jon Dyte (jo...@to...) - # Roman Suzi (rn...@on...) - # William Volkman - # # vim: ai et sw=4 ts=4 --- 27,30 ---- *************** *** 270,273 **** --- 246,250 ---- bull = dialog.alertDialog(self, wrap_string(msg, 60), title) else: + self.checkResourceFile(result.paths[0]) self.components.mainScript.text = rpath self.documentChanged = True *************** *** 290,293 **** --- 267,271 ---- bull = dialog.alertDialog(self, wrap_string(msg, 70), title) else: + self.checkResourceFile(p) current.append(path) current.sort() *************** *** 598,601 **** --- 576,597 ---- # ############################################################################## + def checkResourceFile(self, path): + # when adding a script, see if there is a matching resource file + root, ext = os.path.splitext(path) + script = os.path.basename(path) + resfile = root + '.rsrc.py' + if os.path.isfile(resfile): + # is it already in the list of resource files? + if not os.path.basename(resfile) in self.components.resList.items: + txt = '%s has a matching PythonCard resource file. Would you like to also' % (script) + txt += ' add the resource file to your project?' + result = dialog.messageDialog(self, wrap_string(txt, 60), 'Please confirm', + wx.ICON_EXCLAMATION|wx.YES_NO|wx.YES_DEFAULT) + if result.accepted: + x = self.components.resList.items + x.append(os.path.basename(resfile)) + x.sort() + self.components.resList.items = x + def runScript(self, useInterpreter): item = self.pathJoin(self.components.mainScript.text) *************** *** 820,835 **** if result.accepted: for p in result.paths: ! if refpath is None: ! # we want the whole path to the item ! path = os.path.basename(p) else: ! # we just want the part thats relative to 'refpath' ! path = string.replace(p, refpath + os.sep, '') ! if not (path in x): ! x.append(path) ! x.sort() ! self.documentChanged = True ! self.updateStatusBar() ! self.Refresh() return x --- 816,836 ---- if result.accepted: for p in result.paths: ! if not os.path.exists(p): ! title = 'Invalid filename!' ! txt = '%s is not a valid filename!' % p ! bull = dialog.alertDialog(self, wrap_string(txt, 70), title) else: ! if refpath is None: ! # we want the whole path to the item ! path = os.path.basename(p) ! else: ! # we just want the part thats relative to 'refpath' ! path = string.replace(p, refpath + os.sep, '') ! if not (path in x): ! x.append(path) ! x.sort() ! self.documentChanged = True ! self.updateStatusBar() ! self.Refresh() return x |
From: Phil E. <l2...@us...> - 2005-05-12 08:28:18
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29399 Modified Files: changelog.txt Log Message: Updated to reflect the latest changes Index: changelog.txt =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/changelog.txt,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** changelog.txt 5 May 2005 12:50:24 -0000 1.6 --- changelog.txt 12 May 2005 08:28:09 -0000 1.7 *************** *** 1,11 **** standaloneBuilder version Version 0.1.1 release date TBA -------------------------------------------------------- ! - Fixed a bug where the project licence file name was being added ! incorrectly when running the new project wizard ! - Moved the check for whether the project needs to be saved into a ! single function ! - Added a run button and stole the run options dialog from the ! resource editor :-) ! - Added a workaround for a GTK bug which affects the fileSaveDialog - Fixed an UnboundLocalError when rebuilding projects - Fixed bug in spec file generation which was causing an exception --- 1,21 ---- standaloneBuilder version Version 0.1.1 release date TBA -------------------------------------------------------- ! - Updated documentation to clarify why and when extra scripts might ! need to be added ! - Adding a script now pops up a dialog asking if you want to add the ! matching resource file if one exists ! - Updated copyright message and removed innacurate list of ! Pythoncard developers ! - Program now prevents invalid filenames being entered into any of ! the script, resource, pixmap or other files boxes ! - Added some error trapping to the rebuild routine to deal with the ! case where the main script has not been specified ! - Fixed a bug where the project licence file name was being added ! incorrectly when running the new project wizard ! - Moved the check for whether the project needs to be saved into a ! single function ! - Added a run button and stole the run options dialog from the ! resource editor :-) ! - Added a workaround for a GTK bug which affects the fileSaveDialog - Fixed an UnboundLocalError when rebuilding projects - Fixed bug in spec file generation which was causing an exception |
From: Alex T. <ale...@us...> - 2005-05-11 09:17:30
|
Update of /cvsroot/pythoncard/PythonCard In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16943 Modified Files: util.py Log Message: Protect against the case where one of the parameters is 'None' e.g. in the resourceEditor before the resource file has been saved Index: util.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/util.py,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** util.py 5 Oct 2004 17:37:40 -0000 1.36 --- util.py 11 May 2005 09:17:21 -0000 1.37 *************** *** 387,390 **** --- 387,395 ---- # I made a few changes below to get rid of redundant leading .. def relativePath(p1, p2): + # AGT 2005-05-10 + # Protect against the case where one of the parameters is 'None' + # e.g. in the resourceEditor before the resource file has been saved + if not pi: p1 = '' + if not p2: p2 = '' (common,l1,l2) = commonpath(pathsplit(p1), pathsplit(p2)) p = [] |
From: Phil E. <l2...@us...> - 2005-05-09 09:58:16
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/templates In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24158/templates Modified Files: about.html author.html changelog.txt gpl.html versioninfo.txt Log Message: Fixed a problem with the line endings on the template files and added a check to the rebuild process so that we don;t try and do a build if no main script has been specified Index: gpl.html =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/templates/gpl.html,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** gpl.html 9 Apr 2005 09:35:04 -0000 1.1 --- gpl.html 9 May 2005 09:58:03 -0000 1.2 *************** *** 1,286 **** ! <font face="sans-serif"> ! <center> ! <p>This program is distributed under the terms of the GPL v2.</p> ! ! <p>GNU GENERAL PUBLIC LICENSE</p> ! <p>Version 2, June 1991</p> ! ! <p>Copyright (C) 1989, 1991 Free Software Foundation, Inc.<br> ! 675 Mass Ave, Cambridge, MA 02139, USA</p> ! <p>Everyone is permitted to copy and distribute verbatim copies ! of this license document, but changing it is not allowed.</p> ! ! <p>Preamble</p></center> ! ! <p>The licenses for most software are designed to take away your ! freedom to share and change it. By contrast, the GNU General Public ! License is intended to guarantee your freedom to share and change free ! software--to make sure the software is free for all its users. This ! General Public License applies to most of the Free Software ! Foundation's software and to any other program whose authors commit to ! using it. (Some other Free Software Foundation software is covered by ! the GNU Library General Public License instead.) You can apply it to ! your programs, too.</p> ! ! <p>When we speak of free software, we are referring to freedom, not ! price. Our General Public Licenses are designed to make sure that you ! have the freedom to distribute copies of free software (and charge for ! this service if you wish), that you receive source code or can get it ! if you want it, that you can change the software or use pieces of it ! in new free programs; and that you know you can do these things.</p> ! ! <p>To protect your rights, we need to make restrictions that forbid ! anyone to deny you these rights or to ask you to surrender the rights. ! These restrictions translate to certain responsibilities for you if you ! distribute copies of the software, or if you modify it.</p> ! ! <p>For example, if you distribute copies of such a program, whether ! gratis or for a fee, you must give the recipients all the rights that ! you have. You must make sure that they, too, receive or can get the ! source code. And you must show them these terms so they know their ! rights.</p> ! ! <p>We protect your rights with two steps: (1) copyright the software, and ! (2) offer you this license which gives you legal permission to copy, ! distribute and/or modify the software.</p> ! ! <p>Also, for each author's protection and ours, we want to make certain ! that everyone understands that there is no warranty for this free ! software. If the software is modified by someone else and passed on, we ! want its recipients to know that what they have is not the original, so ! that any problems introduced by others will not reflect on the original ! authors' reputations.</p> ! ! <p>Finally, any free program is threatened constantly by software ! patents. We wish to avoid the danger that redistributors of a free ! program will individually obtain patent licenses, in effect making the ! program proprietary. To prevent this, we have made it clear that any ! patent must be licensed for everyone's free use or not licensed at all.</p> ! ! <p>The precise terms and conditions for copying, distribution and ! modification follow.</p> ! ! <center><p>GNU GENERAL PUBLIC LICENSE ! TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</p></center> ! ! <p>0. This License applies to any program or other work which contains ! a notice placed by the copyright holder saying it may be distributed ! under the terms of this General Public License. The "Program", below, ! refers to any such program or work, and a "work based on the Program" ! means either the Program or any derivative work under copyright law: ! that is to say, a work containing the Program or a portion of it, ! either verbatim or with modifications and/or translated into another ! language. (Hereinafter, translation is included without limitation in ! the term "modification".) Each licensee is addressed as "you".</p> ! ! <p>Activities other than copying, distribution and modification are not ! covered by this License; they are outside its scope. The act of ! running the Program is not restricted, and the output from the Program ! is covered only if its contents constitute a work based on the ! Program (independent of having been made by running the Program). ! Whether that is true depends on what the Program does.</p> ! ! <p>1. You may copy and distribute verbatim copies of the Program's ! source code as you receive it, in any medium, provided that you ! conspicuously and appropriately publish on each copy an appropriate ! copyright notice and disclaimer of warranty; keep intact all the ! notices that refer to this License and to the absence of any warranty; ! and give any other recipients of the Program a copy of this License ! along with the Program.</p> ! ! <p>You may charge a fee for the physical act of transferring a copy, and ! you may at your option offer warranty protection in exchange for a fee.</p> ! ! <p>2. You may modify your copy or copies of the Program or any portion ! of it, thus forming a work based on the Program, and copy and ! distribute such modifications or work under the terms of Section 1 ! above, provided that you also meet all of these conditions:</p> ! ! <p>a) You must cause the modified files to carry prominent notices ! stating that you changed the files and the date of any change.</p> ! ! <p>b) You must cause any work that you distribute or publish, that in ! whole or in part contains or is derived from the Program or any ! part thereof, to be licensed as a whole at no charge to all third ! parties under the terms of this License.</p> ! ! <p>c) If the modified program normally reads commands interactively ! when run, you must cause it, when started running for such ! interactive use in the most ordinary way, to print or display an ! announcement including an appropriate copyright notice and a ! notice that there is no warranty (or else, saying that you provide ! a warranty) and that users may redistribute the program under ! these conditions, and telling the user how to view a copy of this ! License. (Exception: if the Program itself is interactive but ! does not normally print such an announcement, your work based on ! the Program is not required to print an announcement.)</p> ! ! <p>These requirements apply to the modified work as a whole. If ! identifiable sections of that work are not derived from the Program, ! and can be reasonably considered independent and separate works in ! themselves, then this License, and its terms, do not apply to those ! sections when you distribute them as separate works. But when you ! distribute the same sections as part of a whole which is a work based ! on the Program, the distribution of the whole must be on the terms of ! this License, whose permissions for other licensees extend to the ! entire whole, and thus to each and every part regardless of who wrote it.</p> ! ! <p>Thus, it is not the intent of this section to claim rights or contest ! your rights to work written entirely by you; rather, the intent is to ! exercise the right to control the distribution of derivative or ! collective works based on the Program.</p> ! ! <p>In addition, mere aggregation of another work not based on the Program ! with the Program (or with a work based on the Program) on a volume of ! a storage or distribution medium does not bring the other work under ! the scope of this License.</p> ! ! <p>3. You may copy and distribute the Program (or a work based on it, ! under Section 2) in object code or executable form under the terms of ! Sections 1 and 2 above provided that you also do one of the following:</p> ! ! <p>a) Accompany it with the complete corresponding machine-readable ! source code, which must be distributed under the terms of Sections ! 1 and 2 above on a medium customarily used for software interchange; or,</p> ! ! <p>b) Accompany it with a written offer, valid for at least three ! years, to give any third party, for a charge no more than your ! cost of physically performing source distribution, a complete ! machine-readable copy of the corresponding source code, to be ! distributed under the terms of Sections 1 and 2 above on a medium ! customarily used for software interchange; or,</p> ! ! <p>c) Accompany it with the information you received as to the offer ! to distribute corresponding source code. (This alternative is ! allowed only for noncommercial distribution and only if you ! received the program in object code or executable form with such ! an offer, in accord with Subsection b above.)</p> ! ! <p>The source code for a work means the preferred form of the work for ! making modifications to it. For an executable work, complete source ! code means all the source code for all modules it contains, plus any ! associated interface definition files, plus the scripts used to ! control compilation and installation of the executable. However, as a ! special exception, the source code distributed need not include ! anything that is normally distributed (in either source or binary ! form) with the major components (compiler, kernel, and so on) of the ! operating system on which the executable runs, unless that component ! itself accompanies the executable.</p> ! ! <p>If distribution of executable or object code is made by offering ! access to copy from a designated place, then offering equivalent ! access to copy the source code from the same place counts as ! distribution of the source code, even though third parties are not ! compelled to copy the source along with the object code.</p> ! ! <p>4. You may not copy, modify, sublicense, or distribute the Program ! except as expressly provided under this License. Any attempt ! otherwise to copy, modify, sublicense or distribute the Program is ! void, and will automatically terminate your rights under this License. ! However, parties who have received copies, or rights, from you under ! this License will not have their licenses terminated so long as such ! parties remain in full compliance.</p> ! ! <p>5. You are not required to accept this License, since you have not ! signed it. However, nothing else grants you permission to modify or ! distribute the Program or its derivative works. These actions are ! prohibited by law if you do not accept this License. Therefore, by ! modifying or distributing the Program (or any work based on the ! Program), you indicate your acceptance of this License to do so, and ! all its terms and conditions for copying, distributing or modifying ! the Program or works based on it.</p> ! ! <p>6. Each time you redistribute the Program (or any work based on the ! Program), the recipient automatically receives a license from the ! original licensor to copy, distribute or modify the Program subject to ! these terms and conditions. You may not impose any further ! restrictions on the recipients' exercise of the rights granted herein. ! You are not responsible for enforcing compliance by third parties to ! this License.</p> ! ! <p>7. If, as a consequence of a court judgment or allegation of patent ! infringement or for any other reason (not limited to patent issues), ! conditions are imposed on you (whether by court order, agreement or ! otherwise) that contradict the conditions of this License, they do not ! excuse you from the conditions of this License. If you cannot ! distribute so as to satisfy simultaneously your obligations under this ! License and any other pertinent obligations, then as a consequence you ! may not distribute the Program at all. For example, if a patent ! license would not permit royalty-free redistribution of the Program by ! all those who receive copies directly or indirectly through you, then ! the only way you could satisfy both it and this License would be to ! refrain entirely from distribution of the Program.</p> ! ! <p>If any portion of this section is held invalid or unenforceable under ! any particular circumstance, the balance of the section is intended to ! apply and the section as a whole is intended to apply in other ! circumstances.</p> ! ! <p>It is not the purpose of this section to induce you to infringe any ! patents or other property right claims or to contest validity of any ! such claims; this section has the sole purpose of protecting the ! integrity of the free software distribution system, which is ! implemented by public license practices. Many people have made ! generous contributions to the wide range of software distributed ! through that system in reliance on consistent application of that ! system; it is up to the author/donor to decide if he or she is willing ! to distribute software through any other system and a licensee cannot ! impose that choice.</p> ! ! <p>This section is intended to make thoroughly clear what is believed to ! be a consequence of the rest of this License.</p> ! ! <p>8. If the distribution and/or use of the Program is restricted in ! certain countries either by patents or by copyrighted interfaces, the ! original copyright holder who places the Program under this License ! may add an explicit geographical distribution limitation excluding ! those countries, so that distribution is permitted only in or among ! countries not thus excluded. In such case, this License incorporates ! the limitation as if written in the body of this License.</p> ! ! <p>9. The Free Software Foundation may publish revised and/or new versions ! of the General Public License from time to time. Such new versions will ! be similar in spirit to the present version, but may differ in detail to ! address new problems or concerns.</p> ! ! <p>Each version is given a distinguishing version number. If the Program ! specifies a version number of this License which applies to it and "any ! later version", you have the option of following the terms and conditions ! either of that version or of any later version published by the Free ! Software Foundation. If the Program does not specify a version number of ! this License, you may choose any version ever published by the Free Software ! Foundation.</p> ! ! <p>10. If you wish to incorporate parts of the Program into other free ! programs whose distribution conditions are different, write to the author ! to ask for permission. For software which is copyrighted by the Free ! Software Foundation, write to the Free Software Foundation; we sometimes ! make exceptions for this. Our decision will be guided by the two goals ! of preserving the free status of all derivatives of our free software and ! of promoting the sharing and reuse of software generally.</p> ! ! <center><p>NO WARRANTY</p></center> ! ! <p>11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY ! FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN ! OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES ! PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED ! OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ! MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS ! TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE ! PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, ! REPAIR OR CORRECTION.</p> ! ! <p>12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING ! WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR ! REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, ! INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING ! OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED ! TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY ! YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER ! PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE ! POSSIBILITY OF SUCH DAMAGES.</p> ! ! <center><p>END OF TERMS AND CONDITIONS</p></center> ! </center> </font> --- 1,286 ---- ! <font face="sans-serif"> ! <center> ! <p>This program is distributed under the terms of the GPL v2.</p> ! ! <p>GNU GENERAL PUBLIC LICENSE</p> ! <p>Version 2, June 1991</p> ! ! <p>Copyright (C) 1989, 1991 Free Software Foundation, Inc.<br> ! 675 Mass Ave, Cambridge, MA 02139, USA</p> ! <p>Everyone is permitted to copy and distribute verbatim copies ! of this license document, but changing it is not allowed.</p> ! ! <p>Preamble</p></center> ! ! <p>The licenses for most software are designed to take away your ! freedom to share and change it. By contrast, the GNU General Public ! License is intended to guarantee your freedom to share and change free ! software--to make sure the software is free for all its users. This ! General Public License applies to most of the Free Software ! Foundation's software and to any other program whose authors commit to ! using it. (Some other Free Software Foundation software is covered by ! the GNU Library General Public License instead.) You can apply it to ! your programs, too.</p> ! ! <p>When we speak of free software, we are referring to freedom, not ! price. Our General Public Licenses are designed to make sure that you ! have the freedom to distribute copies of free software (and charge for ! this service if you wish), that you receive source code or can get it ! if you want it, that you can change the software or use pieces of it ! in new free programs; and that you know you can do these things.</p> ! ! <p>To protect your rights, we need to make restrictions that forbid ! anyone to deny you these rights or to ask you to surrender the rights. ! These restrictions translate to certain responsibilities for you if you ! distribute copies of the software, or if you modify it.</p> ! ! <p>For example, if you distribute copies of such a program, whether ! gratis or for a fee, you must give the recipients all the rights that ! you have. You must make sure that they, too, receive or can get the ! source code. And you must show them these terms so they know their ! rights.</p> ! ! <p>We protect your rights with two steps: (1) copyright the software, and ! (2) offer you this license which gives you legal permission to copy, ! distribute and/or modify the software.</p> ! ! <p>Also, for each author's protection and ours, we want to make certain ! that everyone understands that there is no warranty for this free ! software. If the software is modified by someone else and passed on, we ! want its recipients to know that what they have is not the original, so ! that any problems introduced by others will not reflect on the original ! authors' reputations.</p> ! ! <p>Finally, any free program is threatened constantly by software ! patents. We wish to avoid the danger that redistributors of a free ! program will individually obtain patent licenses, in effect making the ! program proprietary. To prevent this, we have made it clear that any ! patent must be licensed for everyone's free use or not licensed at all.</p> ! ! <p>The precise terms and conditions for copying, distribution and ! modification follow.</p> ! ! <center><p>GNU GENERAL PUBLIC LICENSE ! TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</p></center> ! ! <p>0. This License applies to any program or other work which contains ! a notice placed by the copyright holder saying it may be distributed ! under the terms of this General Public License. The "Program", below, ! refers to any such program or work, and a "work based on the Program" ! means either the Program or any derivative work under copyright law: ! that is to say, a work containing the Program or a portion of it, ! either verbatim or with modifications and/or translated into another ! language. (Hereinafter, translation is included without limitation in ! the term "modification".) Each licensee is addressed as "you".</p> ! ! <p>Activities other than copying, distribution and modification are not ! covered by this License; they are outside its scope. The act of ! running the Program is not restricted, and the output from the Program ! is covered only if its contents constitute a work based on the ! Program (independent of having been made by running the Program). ! Whether that is true depends on what the Program does.</p> ! ! <p>1. You may copy and distribute verbatim copies of the Program's ! source code as you receive it, in any medium, provided that you ! conspicuously and appropriately publish on each copy an appropriate ! copyright notice and disclaimer of warranty; keep intact all the ! notices that refer to this License and to the absence of any warranty; ! and give any other recipients of the Program a copy of this License ! along with the Program.</p> ! ! <p>You may charge a fee for the physical act of transferring a copy, and ! you may at your option offer warranty protection in exchange for a fee.</p> ! ! <p>2. You may modify your copy or copies of the Program or any portion ! of it, thus forming a work based on the Program, and copy and ! distribute such modifications or work under the terms of Section 1 ! above, provided that you also meet all of these conditions:</p> ! ! <p>a) You must cause the modified files to carry prominent notices ! stating that you changed the files and the date of any change.</p> ! ! <p>b) You must cause any work that you distribute or publish, that in ! whole or in part contains or is derived from the Program or any ! part thereof, to be licensed as a whole at no charge to all third ! parties under the terms of this License.</p> ! ! <p>c) If the modified program normally reads commands interactively ! when run, you must cause it, when started running for such ! interactive use in the most ordinary way, to print or display an ! announcement including an appropriate copyright notice and a ! notice that there is no warranty (or else, saying that you provide ! a warranty) and that users may redistribute the program under ! these conditions, and telling the user how to view a copy of this ! License. (Exception: if the Program itself is interactive but ! does not normally print such an announcement, your work based on ! the Program is not required to print an announcement.)</p> ! ! <p>These requirements apply to the modified work as a whole. If ! identifiable sections of that work are not derived from the Program, ! and can be reasonably considered independent and separate works in ! themselves, then this License, and its terms, do not apply to those ! sections when you distribute them as separate works. But when you ! distribute the same sections as part of a whole which is a work based ! on the Program, the distribution of the whole must be on the terms of ! this License, whose permissions for other licensees extend to the ! entire whole, and thus to each and every part regardless of who wrote it.</p> ! ! <p>Thus, it is not the intent of this section to claim rights or contest ! your rights to work written entirely by you; rather, the intent is to ! exercise the right to control the distribution of derivative or ! collective works based on the Program.</p> ! ! <p>In addition, mere aggregation of another work not based on the Program ! with the Program (or with a work based on the Program) on a volume of ! a storage or distribution medium does not bring the other work under ! the scope of this License.</p> ! ! <p>3. You may copy and distribute the Program (or a work based on it, ! under Section 2) in object code or executable form under the terms of ! Sections 1 and 2 above provided that you also do one of the following:</p> ! ! <p>a) Accompany it with the complete corresponding machine-readable ! source code, which must be distributed under the terms of Sections ! 1 and 2 above on a medium customarily used for software interchange; or,</p> ! ! <p>b) Accompany it with a written offer, valid for at least three ! years, to give any third party, for a charge no more than your ! cost of physically performing source distribution, a complete ! machine-readable copy of the corresponding source code, to be ! distributed under the terms of Sections 1 and 2 above on a medium ! customarily used for software interchange; or,</p> ! ! <p>c) Accompany it with the information you received as to the offer ! to distribute corresponding source code. (This alternative is ! allowed only for noncommercial distribution and only if you ! received the program in object code or executable form with such ! an offer, in accord with Subsection b above.)</p> ! ! <p>The source code for a work means the preferred form of the work for ! making modifications to it. For an executable work, complete source ! code means all the source code for all modules it contains, plus any ! associated interface definition files, plus the scripts used to ! control compilation and installation of the executable. However, as a ! special exception, the source code distributed need not include ! anything that is normally distributed (in either source or binary ! form) with the major components (compiler, kernel, and so on) of the ! operating system on which the executable runs, unless that component ! itself accompanies the executable.</p> ! ! <p>If distribution of executable or object code is made by offering ! access to copy from a designated place, then offering equivalent ! access to copy the source code from the same place counts as ! distribution of the source code, even though third parties are not ! compelled to copy the source along with the object code.</p> ! ! <p>4. You may not copy, modify, sublicense, or distribute the Program ! except as expressly provided under this License. Any attempt ! otherwise to copy, modify, sublicense or distribute the Program is ! void, and will automatically terminate your rights under this License. ! However, parties who have received copies, or rights, from you under ! this License will not have their licenses terminated so long as such ! parties remain in full compliance.</p> ! ! <p>5. You are not required to accept this License, since you have not ! signed it. However, nothing else grants you permission to modify or ! distribute the Program or its derivative works. These actions are ! prohibited by law if you do not accept this License. Therefore, by ! modifying or distributing the Program (or any work based on the ! Program), you indicate your acceptance of this License to do so, and ! all its terms and conditions for copying, distributing or modifying ! the Program or works based on it.</p> ! ! <p>6. Each time you redistribute the Program (or any work based on the ! Program), the recipient automatically receives a license from the ! original licensor to copy, distribute or modify the Program subject to ! these terms and conditions. You may not impose any further ! restrictions on the recipients' exercise of the rights granted herein. ! You are not responsible for enforcing compliance by third parties to ! this License.</p> ! ! <p>7. If, as a consequence of a court judgment or allegation of patent ! infringement or for any other reason (not limited to patent issues), ! conditions are imposed on you (whether by court order, agreement or ! otherwise) that contradict the conditions of this License, they do not ! excuse you from the conditions of this License. If you cannot ! distribute so as to satisfy simultaneously your obligations under this ! License and any other pertinent obligations, then as a consequence you ! may not distribute the Program at all. For example, if a patent ! license would not permit royalty-free redistribution of the Program by ! all those who receive copies directly or indirectly through you, then ! the only way you could satisfy both it and this License would be to ! refrain entirely from distribution of the Program.</p> ! ! <p>If any portion of this section is held invalid or unenforceable under ! any particular circumstance, the balance of the section is intended to ! apply and the section as a whole is intended to apply in other ! circumstances.</p> ! ! <p>It is not the purpose of this section to induce you to infringe any ! patents or other property right claims or to contest validity of any ! such claims; this section has the sole purpose of protecting the ! integrity of the free software distribution system, which is ! implemented by public license practices. Many people have made ! generous contributions to the wide range of software distributed ! through that system in reliance on consistent application of that ! system; it is up to the author/donor to decide if he or she is willing ! to distribute software through any other system and a licensee cannot ! impose that choice.</p> ! ! <p>This section is intended to make thoroughly clear what is believed to ! be a consequence of the rest of this License.</p> ! ! <p>8. If the distribution and/or use of the Program is restricted in ! certain countries either by patents or by copyrighted interfaces, the ! original copyright holder who places the Program under this License ! may add an explicit geographical distribution limitation excluding ! those countries, so that distribution is permitted only in or among ! countries not thus excluded. In such case, this License incorporates ! the limitation as if written in the body of this License.</p> ! ! <p>9. The Free Software Foundation may publish revised and/or new versions ! of the General Public License from time to time. Such new versions will ! be similar in spirit to the present version, but may differ in detail to ! address new problems or concerns.</p> ! ! <p>Each version is given a distinguishing version number. If the Program ! specifies a version number of this License which applies to it and "any ! later version", you have the option of following the terms and conditions ! either of that version or of any later version published by the Free ! Software Foundation. If the Program does not specify a version number of ! this License, you may choose any version ever published by the Free Software ! Foundation.</p> ! ! <p>10. If you wish to incorporate parts of the Program into other free ! programs whose distribution conditions are different, write to the author ! to ask for permission. For software which is copyrighted by the Free ! Software Foundation, write to the Free Software Foundation; we sometimes ! make exceptions for this. Our decision will be guided by the two goals ! of preserving the free status of all derivatives of our free software and ! of promoting the sharing and reuse of software generally.</p> ! ! <center><p>NO WARRANTY</p></center> ! ! <p>11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY ! FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN ! OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES ! PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED ! OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ! MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS ! TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE ! PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, ! REPAIR OR CORRECTION.</p> ! ! <p>12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING ! WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR ! REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, ! INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING ! OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED ! TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY ! YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER ! PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE ! POSSIBILITY OF SUCH DAMAGES.</p> ! ! <center><p>END OF TERMS AND CONDITIONS</p></center> ! </center> </font> Index: changelog.txt =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/templates/changelog.txt,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** changelog.txt 15 Apr 2005 15:18:54 -0000 1.2 --- changelog.txt 9 May 2005 09:58:03 -0000 1.3 *************** *** 1,2 **** ! %(name)s Version %(major)s.%(minor)s.%(fix)s release date TBA ! --------------------------------------------------------------------------- --- 1 ---- ! %(name)s Version %(major)s.%(minor)s.%(fix)s release date TBA Index: versioninfo.txt =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/templates/versioninfo.txt,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** versioninfo.txt 9 Apr 2005 09:30:37 -0000 1.2 --- versioninfo.txt 9 May 2005 09:58:03 -0000 1.3 *************** *** 1,28 **** ! VSVersionInfo( ! ffi=FixedFileInfo( ! filevers=(%(major)s, %(minor)s, %(fix)s, %(build)s), ! prodvers=(%(major)s, %(minor)s, %(fix)s, %(build)s), ! mask=0x3f, ! flags=0x0, ! OS=0x40004, ! fileType=0x1, ! subtype=0x0, ! date=(0, 0) ! ), ! kids=[ ! StringFileInfo( ! [ ! StringTable( ! '040904B0', ! [StringStruct('CompanyName', '%(companyname)s'), ! StringStruct('FileDescription', '%(name)s Executable'), ! StringStruct('FileVersion', '%(major)s.%(minor)s.%(fix)s (build_%(build)s_%(date)s)'), ! StringStruct('InternalName', '%(name)s'), ! StringStruct('LegalCopyright', '\xa9 %(publisher)s. All rights reserved.'), ! StringStruct('OriginalFilename', '%(name)s.EXE'), ! StringStruct('ProductName', '%(desc)s'), ! StringStruct('ProductVersion', '%(major)s.%(minor)s.%(fix)s')]) ! ]), ! VarFileInfo([VarStruct('Translation', [1033, 1200])]) ! ] ! ) --- 1,28 ---- ! VSVersionInfo( ! ffi=FixedFileInfo( ! filevers=(%(major)s, %(minor)s, %(fix)s, %(build)s), ! prodvers=(%(major)s, %(minor)s, %(fix)s, %(build)s), ! mask=0x3f, ! flags=0x0, ! OS=0x40004, ! fileType=0x1, ! subtype=0x0, ! date=(0, 0) ! ), ! kids=[ ! StringFileInfo( ! [ ! StringTable( ! '040904B0', ! [StringStruct('CompanyName', '%(companyname)s'), ! StringStruct('FileDescription', '%(name)s Executable'), ! StringStruct('FileVersion', '%(major)s.%(minor)s.%(fix)s (build_%(build)s_%(date)s)'), ! StringStruct('InternalName', '%(name)s'), ! StringStruct('LegalCopyright', '\xa9 %(publisher)s. All rights reserved.'), ! StringStruct('OriginalFilename', '%(name)s.EXE'), ! StringStruct('ProductName', '%(desc)s'), ! StringStruct('ProductVersion', '%(major)s.%(minor)s.%(fix)s')]) ! ]), ! VarFileInfo([VarStruct('Translation', [1033, 1200])]) ! ] ! ) Index: about.html =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/templates/about.html,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** about.html 9 Apr 2005 09:35:04 -0000 1.1 --- about.html 9 May 2005 09:58:02 -0000 1.2 *************** *** 1,24 **** ! <html> ! <head> ! </head> ! <body bgcolor="7f7f7f"> ! <font face="verdana" size="2"> ! <table border="0" width="100%%"> ! <tr> ! <td colspan="2"> ! <b>%(name)s (%(desc)s) Version %(major)s.%(minor)s.%(fix)s</b> ! </td> ! </tr> ! <tr> ! <td align="center" valign="top">insert project logo here</td> ! <td valign="top"> ! Add a verbose description of your project here... ! <p>%(name)s project homepage: <a href="%(appurl)s">%(appurl)s</a><p> ! <p>Developed using the PythonCard GUI toolkit and wxPython, ! <a href="http://pythoncard.sourceforge.net">http://pythoncard.sourceforge.net</a></p> ! </td> ! </tr> ! </table> ! </font> ! </body> </html> --- 1,24 ---- ! <html> ! <head> ! </head> ! <body bgcolor="7f7f7f"> ! <font face="verdana" size="2"> ! <table border="0" width="100%%"> ! <tr> ! <td colspan="2"> ! <b>%(name)s (%(desc)s) Version %(major)s.%(minor)s.%(fix)s</b> ! </td> ! </tr> ! <tr> ! <td align="center" valign="top">insert project logo here</td> ! <td valign="top"> ! Add a verbose description of your project here... ! <p>%(name)s project homepage: <a href="%(appurl)s">%(appurl)s</a><p> ! <p>Developed using the PythonCard GUI toolkit and wxPython, ! <a href="http://pythoncard.sourceforge.net">http://pythoncard.sourceforge.net</a></p> ! </td> ! </tr> ! </table> ! </font> ! </body> </html> Index: author.html =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/templates/author.html,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** author.html 9 Apr 2005 09:35:04 -0000 1.1 --- author.html 9 May 2005 09:58:03 -0000 1.2 *************** *** 1,22 **** ! <font face="verdana"> ! <p>%(name)s was developed by %(publisher)s I would ! like to also extend my grateful thanks to the following:</p> ! <br></br> ! <div align="center"> ! <font face="verdana" size="2"> ! <table width="90%%"> ! <tr> ! <td> ! <hr> ! Kevin Altis <a href="mailto:al...@se...">al...@se...</a>, ! without whose excellent work on PythonCard none of this would be possible. ! </td> ! </tr> ! <tr> ! <td> ! <hr> ! </td> ! </tr> ! </table> ! </div> </font> --- 1,22 ---- ! <font face="verdana"> ! <p>%(name)s was developed by %(publisher)s I would ! like to also extend my grateful thanks to the following:</p> ! <br></br> ! <div align="center"> ! <font face="verdana" size="2"> ! <table width="90%%"> ! <tr> ! <td> ! <hr> ! Kevin Altis <a href="mailto:al...@se...">al...@se...</a>, ! without whose excellent work on PythonCard none of this would be possible. ! </td> ! </tr> ! <tr> ! <td> ! <hr> ! </td> ! </tr> ! </table> ! </div> </font> |
From: Phil E. <l2...@us...> - 2005-05-09 09:58:11
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24158 Modified Files: standaloneBuilder.py Log Message: Fixed a problem with the line endings on the template files and added a check to the rebuild process so that we don;t try and do a build if no main script has been specified Index: standaloneBuilder.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/standaloneBuilder.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** standaloneBuilder.py 5 May 2005 12:50:24 -0000 1.9 --- standaloneBuilder.py 9 May 2005 09:58:02 -0000 1.10 *************** *** 471,474 **** --- 471,482 ---- def on_rebuildBtn_mouseClick(self, event): + # we have to make sure that there is something defined as a 'main + # script' before we can do a rebuild + if self.components.mainScript.text == '': + title = 'Project error!' + txt = 'You have not specified the main script for this project!' + bull = dialog.alertDialog(self, wrap_string(txt, 70), title) + return + # save the project if required if not self.saveIfRequired(): return |
From: Phil E. <l2...@us...> - 2005-05-05 12:50:39
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/doc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14867/doc Modified Files: standaloneBuilder.html Log Message: Added a 'Run' button to the main window and fixed a bug with the way the project licence file was added when using the new project wizard |
From: Phil E. <l2...@us...> - 2005-05-05 12:50:39
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14867 Modified Files: changelog.txt standaloneBuilder.py standaloneBuilder.rsrc.py Log Message: Added a 'Run' button to the main window and fixed a bug with the way the project licence file was added when using the new project wizard Index: changelog.txt =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/changelog.txt,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** changelog.txt 26 Apr 2005 12:39:12 -0000 1.5 --- changelog.txt 5 May 2005 12:50:24 -0000 1.6 *************** *** 1,4 **** --- 1,10 ---- standaloneBuilder version Version 0.1.1 release date TBA -------------------------------------------------------- + - Fixed a bug where the project licence file name was being added + incorrectly when running the new project wizard + - Moved the check for whether the project needs to be saved into a + single function + - Added a run button and stole the run options dialog from the + resource editor :-) - Added a workaround for a GTK bug which affects the fileSaveDialog - Fixed an UnboundLocalError when rebuilding projects Index: standaloneBuilder.rsrc.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/standaloneBuilder.rsrc.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** standaloneBuilder.rsrc.py 26 Apr 2005 12:39:12 -0000 1.4 --- standaloneBuilder.rsrc.py 5 May 2005 12:50:24 -0000 1.5 *************** *** 457,460 **** --- 457,468 ---- {'type':'Button', + 'name':'runBtn', + 'position':(270, 475), + 'size':(-1, 22), + 'label':'Run...', + 'toolTip':'Run the application', + }, + + {'type':'Button', 'name':'rebuildBtn', 'position':(695, 475), Index: standaloneBuilder.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/standaloneBuilder.py,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** standaloneBuilder.py 26 Apr 2005 12:39:12 -0000 1.8 --- standaloneBuilder.py 5 May 2005 12:50:24 -0000 1.9 *************** *** 66,69 **** --- 66,70 ---- from wxPython.html import wxHtmlEasyPrinting from PythonCard import dialog, model + from PythonCard.templates.dialogs import runOptionsDialog # local imports *************** *** 93,96 **** --- 94,100 ---- self.components.quitBtn.enabled = 1 self.documentChanged = False + self.cmdLineArgs = {'debugmenu':False, 'logging':False, 'messagewatcher':False, + 'namespaceviewer':False, 'propertyeditor':False, + 'shell':False, 'otherargs':''} if sys.platform.startswith('win32'): *************** *** 190,206 **** ########################################################################## def on_newBtn_command(self, event): ! if self.documentChanged: ! save = self.saveChanges() ! if save == wx.ID_CANCEL: ! return # don't do anything, just go back to editing ! elif save == wx.ID_NO: ! pass # any changes will be lost ! else: ! if self.documentPath is None: ! if not self.on_menuFileSaveAs_select(None): return ! else: ! self.saveFile(self.documentPath) ! ! # launch the new project wizard dlg = newProjectWizard(self) dlg.ShowModal() --- 194,198 ---- ########################################################################## def on_newBtn_command(self, event): ! if not self.saveIfRequired(): return dlg = newProjectWizard(self) dlg.ShowModal() *************** *** 210,229 **** def on_openBtn_command(self, event): ! # should probably have an alert dialog here ! # warning about saving the current file before opening another one ! if self.documentChanged: ! save = self.saveChanges() ! if save == wx.ID_CANCEL: ! return # don't do anything, just go back to editing ! elif save == wx.ID_NO: ! pass # any changes will be lost ! else: ! if self.documentPath is None: ! # if the user cancels out of the Save As then go back to editing ! if not self.on_menuFileSaveAs_select(None): return ! else: ! self.saveFile(self.documentPath) ! ! #launch a file open dialog wildcard = "Project files (*.pmr)|*.pmr;*.PMR|All files (*.*)|*.*" result = dialog.openFileDialog(wildcard=wildcard) --- 202,206 ---- def on_openBtn_command(self, event): ! if not self.saveIfRequired(): return wildcard = "Project files (*.pmr)|*.pmr;*.PMR|All files (*.*)|*.*" result = dialog.openFileDialog(wildcard=wildcard) *************** *** 476,493 **** os.system(editor + ' ' + spec) def on_rebuildBtn_mouseClick(self, event): # save the project if required ! if self.documentChanged: ! save = self.saveChanges() ! if save == wx.ID_CANCEL: ! return # don't do anything, just go back to editing ! elif save == wx.ID_NO: ! pass # any changes will be lost ! else: ! if self.documentPath is None: ! # if the user cancels out of the Save As then go back to editing ! if not self.on_menuFileSaveAs_select(None): return ! else: ! self.saveFile(self.documentPath) # rebuild under Linux just involves making a tarball of the source --- 453,476 ---- os.system(editor + ' ' + spec) + def on_runBtn_mouseClick(self, event): + # save the project if required + ret = self.saveIfRequired() + if not ret: return + + result = runOptionsDialog.runOptionsDialog(self, self.cmdLineArgs) + if result.accepted: + self.cmdLineArgs['debugmenu'] = result.debugmenu + self.cmdLineArgs['logging'] = result.logging + self.cmdLineArgs['messagewatcher'] = result.messagewatcher + self.cmdLineArgs['namespaceviewer'] = result.namespaceviewer + self.cmdLineArgs['propertyeditor'] = result.propertyeditor + self.cmdLineArgs['shell'] = result.shell + self.cmdLineArgs['otherargs'] = result.otherargs + + self.runScript(False) + def on_rebuildBtn_mouseClick(self, event): # save the project if required ! if not self.saveIfRequired(): return # rebuild under Linux just involves making a tarball of the source *************** *** 607,610 **** --- 590,668 ---- # ############################################################################## + def runScript(self, useInterpreter): + item = self.pathJoin(self.components.mainScript.text) + item = os.path.join(self.components.baseDir.text, item) + item = os.path.join(self.cfg.get('ConfigData', 'projects'), item) + # pinched this code from the resource editor - thanks, Kevin! + #path = os.path.join(self.cfg.get('ConfigData', 'projects'), self.components.baseDir.text) + #path, filename = os.path.split(self.filename) + path, filename = os.path.split(item) + name = filename.split('.')[0] + if os.path.exists(os.path.join(path, name + ".pyw")): + filename = '"' + os.path.join(path, name + ".pyw") + '"' + else: + filename = '"' + os.path.join(path, name + ".py") + '"' + # the args should come from a dialog or menu items that are checked/unchecked + args = self.getCommandLineArgs() + + if useInterpreter: + interp = ' -i ' + else: + interp = ' ' + + if sys.platform.startswith('win'): + # KEA 2002-03-06 + # always launch with console in the resourceEditor for debugging purposes + python = os.path.join(os.path.dirname(sys.executable), 'python.exe') + if ' ' in python: + pythonQuoted = '"' + python + '"' + else: + pythonQuoted = python + if useInterpreter and os.name != 'nt': + os.spawnv(os.P_NOWAIT, python, [pythonQuoted, interp, filename, args]) + else: + os.spawnv(os.P_NOWAIT, python, [pythonQuoted, interp, filename, args]) + else: + if ' ' in sys.executable: + python = '"' + sys.executable + '"' + else: + python = sys.executable + os.system(python + interp + filename + args + ' &') + + def saveIfRequired(self): + # save the project if required + retflag = True + if self.documentChanged: + save = self.saveChanges() + if save == wx.ID_CANCEL: + retflag = False # don't do anything, just go back to editing + elif save == wx.ID_NO: + pass # any changes will be lost + else: + if self.documentPath is None: + # if the user cancels out of the Save As then go back to editing + if not self.on_menuFileSaveAs_select(None): retflag = False + else: + self.saveFile(self.documentPath) + return retflag + + def getCommandLineArgs(self): + args = ' ' + if self.cmdLineArgs['debugmenu']: + args += '-d ' + if self.cmdLineArgs['logging']: + args += '-l ' + if self.cmdLineArgs['messagewatcher']: + args += '-m ' + if self.cmdLineArgs['namespaceviewer']: + args += '-n ' + if self.cmdLineArgs['propertyeditor']: + args += '-p ' + if self.cmdLineArgs['shell']: + args += '-s ' + if self.cmdLineArgs['otherargs'] != '': + args += self.cmdLineArgs['otherargs'] + return args + def getRelativePath(self, root, path): # remove the root part of an absolute path *************** *** 716,723 **** self.project.set('Project', 'status', 'open') ! # license file has to be the full path ! lfile = os.path.join(wizResult.baseDir, 'doc') ! lfile = os.path.join(lfile, 'gpl.txt') ! self.project.set('Project', 'applicence', lfile) x = os.path.join('build', '%s.iss' % self.components.projectName.text) --- 774,778 ---- self.project.set('Project', 'status', 'open') ! self.project.set('Project', 'applicence', 'doc,gpl.txt') x = os.path.join('build', '%s.iss' % self.components.projectName.text) |
From: Phil E. <l2...@us...> - 2005-04-26 12:39:21
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5246 Modified Files: changelog.txt standaloneBuilder.py standaloneBuilder.rsrc.py Log Message: Added a workaround for a bug in fileSaveDialog under GTK2, fixed a relative path error when clicking 2 of the buttons on the main window Index: changelog.txt =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/changelog.txt,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** changelog.txt 19 Apr 2005 08:23:56 -0000 1.4 --- changelog.txt 26 Apr 2005 12:39:12 -0000 1.5 *************** *** 1,4 **** --- 1,6 ---- standaloneBuilder version Version 0.1.1 release date TBA -------------------------------------------------------- + - Added a workaround for a GTK bug which affects the fileSaveDialog + - Fixed an UnboundLocalError when rebuilding projects - Fixed bug in spec file generation which was causing an exception in McMillan Installer when no Windows icon file had been selected Index: standaloneBuilder.rsrc.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/standaloneBuilder.rsrc.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** standaloneBuilder.rsrc.py 15 Apr 2005 15:18:54 -0000 1.3 --- standaloneBuilder.rsrc.py 26 Apr 2005 12:39:12 -0000 1.4 *************** *** 1,518 **** ! {'application':{'type':'Application', ! 'name':'Template', ! 'backgrounds': [ ! {'type':'Background', ! 'name':'standaloneBuilder', ! 'title':'PythonCard standaloneBuilder', ! 'size':(800, 594), ! 'statusBar':1, ! ! 'menubar': {'type':'MenuBar', [...1011 lines suppressed...] ! 'position':(450, 125), ! 'text':'Version', ! }, ! ! {'type':'StaticText', ! 'name':'StaticText7', ! 'position':(15, 95), ! 'text':'Base directory', ! }, ! ! {'type':'StaticText', ! 'name':'StaticText6', ! 'position':(15, 65), ! 'text':'Name', ! }, ! ! ] # end components ! } # end background ! ] # end backgrounds ! } } Index: standaloneBuilder.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/standaloneBuilder.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** standaloneBuilder.py 21 Apr 2005 07:57:08 -0000 1.7 --- standaloneBuilder.py 26 Apr 2005 12:39:12 -0000 1.8 *************** *** 82,85 **** --- 82,86 ---- ############################################################################## def on_initialize(self, event): + self.str = self.resource.strings self.startTitle = self.GetTitle() self.loadConfig() *************** *** 110,115 **** wildcard = "Project files (*.pmr)|*.pmr;*.PMR|All files (*.*)|*.*" if self.documentPath is None: ! dir = self.components.baseDir.text ! filename = '%s.pmr' % self.components.projectName.text else: dir = os.path.dirname(self.documentPath) --- 111,119 ---- wildcard = "Project files (*.pmr)|*.pmr;*.PMR|All files (*.*)|*.*" if self.documentPath is None: ! dir = os.path.join(self.cfg.get('ConfigData', 'projects'), self.components.baseDir.text) ! if sys.platform.startswith('win'): ! filename = '%s.pmr' % self.components.projectName.text ! else: ! filename = 'Untitled.pmr' else: dir = os.path.dirname(self.documentPath) *************** *** 322,326 **** if self.components.scriptList.stringSelection != '': editor = self.cfg.get('ConfigData', 'codeeditor') ! os.system(editor + ' ' + self.components.scriptList.stringSelection) def on_scriptDelAllBtn_mouseClick(self, event): --- 326,333 ---- if self.components.scriptList.stringSelection != '': editor = self.cfg.get('ConfigData', 'codeeditor') ! item = self.pathJoin(self.components.scriptList.stringSelection) ! item = os.path.join(self.components.baseDir.text, item) ! item = os.path.join(self.cfg.get('ConfigData', 'projects'), item) ! os.system(editor + ' ' + item) def on_scriptDelAllBtn_mouseClick(self, event): *************** *** 348,352 **** if self.components.resList.stringSelection != '': editor = self.cfg.get('ConfigData', 'reseditor') ! os.system(editor + ' ' + self.components.resList.stringSelection) def on_resDelAllBtn_mouseClick(self, event): --- 355,362 ---- if self.components.resList.stringSelection != '': editor = self.cfg.get('ConfigData', 'reseditor') ! item = self.pathJoin(self.components.resList.stringSelection) ! item = os.path.join(self.components.baseDir.text, item) ! item = os.path.join(self.cfg.get('ConfigData', 'projects'), item) ! os.system(editor + ' ' + item) def on_resDelAllBtn_mouseClick(self, event): *************** *** 1270,1274 **** mod = '' if self.documentChanged: mod = ' *' ! self.SetTitle(self.startTitle + ' - [' + os.path.split(self.documentPath)[-1] + mod + ']') self.statusBar.text = string try: --- 1280,1288 ---- mod = '' if self.documentChanged: mod = ' *' ! if self.documentPath is not None: ! self.SetTitle(self.startTitle + ' - [' + os.path.split(self.documentPath)[-1] + mod + ']') ! else: ! self.SetTitle(self.startTitle + ' - [Untitled' + mod + ']') ! self.statusBar.text = string try: |
From: Phil E. <l2...@us...> - 2005-04-21 07:57:23
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31302 Modified Files: standaloneBuilder.py Log Message: Fix for a minor bug found when building tarballs of a project under Linux. Index: standaloneBuilder.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/standaloneBuilder.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** standaloneBuilder.py 19 Apr 2005 08:23:56 -0000 1.6 --- standaloneBuilder.py 21 Apr 2005 07:57:08 -0000 1.7 *************** *** 59,62 **** --- 59,65 ---- import time + if not sys.platform.startswith('win'): + import commands + # pythoncard imports import wx *************** *** 764,768 **** tdir = self.project.get('Project', 'name') tdir += '-' + vstring ! tdir += '-' + self.project.get('Project', 'fixnumber') topdir = tdir tarball = tdir + '.tar.gz' --- 767,771 ---- tdir = self.project.get('Project', 'name') tdir += '-' + vstring ! tdir += '-' + self.project.get('Project', 'build') topdir = tdir tarball = tdir + '.tar.gz' *************** *** 771,775 **** try: ! os.removedirs(tdir) except: pass --- 774,780 ---- try: ! cmd = 'rm -rf %s' % tdir ! os.system(cmd) ! #os.removedirs(tdir) except: pass *************** *** 800,804 **** # use cpio to copy everything listed in manifest.in into the temp # directory just created ! cmd = "cat manifest.in|cpio -vdump %s > /dev/null 2>&1" % (topdir) os.system(cmd) --- 805,809 ---- # use cpio to copy everything listed in manifest.in into the temp # directory just created ! cmd = "cd %s; cat manifest.in|cpio -vdump %s" % (basedir, topdir) os.system(cmd) *************** *** 806,814 **** tb = os.path.join(basedir, self.pathJoin(self.project.get('Project', 'tarballspath'))) tb = os.path.join(tb, tarball) ! cmd = "tar -zcvf %s %s > /dev/null 2>&1" % (tb, topdir) os.system(cmd) # remove the temporary directory when done ! cmd = "rm -rf %s" % topdir os.system(cmd) --- 811,819 ---- tb = os.path.join(basedir, self.pathJoin(self.project.get('Project', 'tarballspath'))) tb = os.path.join(tb, tarball) ! cmd = "cd %s; tar -zcvf %s %s > /dev/null 2>&1" % (basedir, tb, topdir) os.system(cmd) # remove the temporary directory when done ! cmd = "cd %s; rm -rf %s" % (basedir, topdir) os.system(cmd) *************** *** 841,846 **** if self.components.projectIcon.text != '': - spec.append(" icon = '%s'," % iconfile) iconfile = os.path.join(basedir, self.components.projectIcon.text) spec.append(" version = '%s')" % versionfile) --- 846,851 ---- if self.components.projectIcon.text != '': iconfile = os.path.join(basedir, self.components.projectIcon.text) + spec.append(" icon = '%s'," % iconfile) spec.append(" version = '%s')" % versionfile) *************** *** 1453,1456 **** --- 1458,1463 ---- if self.components[comp].userdata != pstatus: self.components[comp].enabled = False + else: + self.components[comp].enabled = True if pstatus == 'open': |
From: Phil E. <l2...@us...> - 2005-04-19 08:24:09
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20638 Modified Files: changelog.txt customDialogs.py standaloneBuilder.py Log Message: Bug fix for exception raised when building a project that did not have a Windows icon file defined. Also added basic documentation with screenshots. Index: changelog.txt =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/changelog.txt,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** changelog.txt 18 Apr 2005 11:33:14 -0000 1.3 --- changelog.txt 19 Apr 2005 08:23:56 -0000 1.4 *************** *** 1,4 **** standaloneBuilder version Version 0.1.1 release date TBA ! --------------------------------------------------------------------------- - Fixed a bug which was causing an exception when creating a new project due to trying to incorrectly make a relative path out of a --- 1,7 ---- standaloneBuilder version Version 0.1.1 release date TBA ! -------------------------------------------------------- ! - Fixed bug in spec file generation which was causing an exception ! in McMillan Installer when no Windows icon file had been selected ! in the project - Fixed a bug which was causing an exception when creating a new project due to trying to incorrectly make a relative path out of a Index: customDialogs.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/customDialogs.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** customDialogs.py 15 Apr 2005 16:02:18 -0000 1.4 --- customDialogs.py 19 Apr 2005 08:23:56 -0000 1.5 *************** *** 362,368 **** def on_installerPathBtn_mouseClick(self, event): ! result = dialog.directoryDialog(self, self.components.StaticText1.text, self.components.installerPath.text) if result.accepted: ! self.components.installerPath.text = result.path def on_installerPathHelpBtn_mouseClick(self, event): --- 362,368 ---- def on_installerPathBtn_mouseClick(self, event): ! result = dialog.fileDialog(self, self.components.StaticText1.text, self.components.installerPath.text) if result.accepted: ! self.components.installerPath.text = result.paths[0] def on_installerPathHelpBtn_mouseClick(self, event): Index: standaloneBuilder.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/standaloneBuilder.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** standaloneBuilder.py 18 Apr 2005 11:33:14 -0000 1.5 --- standaloneBuilder.py 19 Apr 2005 08:23:56 -0000 1.6 *************** *** 136,140 **** chglogData = open(tmplfile, 'r').read() chglogData = chglogData % template ! fd.write(chglogData) fd.close() --- 136,142 ---- chglogData = open(tmplfile, 'r').read() chglogData = chglogData % template ! dashes = '-' * len(chglogData) ! fd.write(chglogData + '\n') ! fd.write(dashes + '\n') fd.close() *************** *** 820,824 **** exefile = os.path.join(self.pathJoin(self.project.get('Project', 'buildfilespath')), self.project.get('Project', 'name') + '.exe') - iconfile = os.path.join(basedir, self.components.projectIcon.text) spec = [] --- 822,825 ---- *************** *** 838,842 **** spec.append(" upx=%s," % int(self.project.getboolean('Project', 'compress'))) spec.append(" console=%s," % int(self.project.getboolean('Project', 'console'))) ! spec.append(" icon = '%s'," % iconfile) spec.append(" version = '%s')" % versionfile) spec.append("coll = COLLECT(exe,") --- 839,847 ---- spec.append(" upx=%s," % int(self.project.getboolean('Project', 'compress'))) spec.append(" console=%s," % int(self.project.getboolean('Project', 'console'))) ! ! if self.components.projectIcon.text != '': ! spec.append(" icon = '%s'," % iconfile) ! iconfile = os.path.join(basedir, self.components.projectIcon.text) ! spec.append(" version = '%s')" % versionfile) spec.append("coll = COLLECT(exe,") *************** *** 893,897 **** # all output to a temporary file and read the results from there # when done ! builder = os.path.join(self.cfg.get('ConfigData', 'installerpath'), 'Build.py') tfile = 'pmbuild.out' basedir = os.path.join(self.cfg.get('ConfigData', 'projects'), self.components.baseDir.text) --- 898,902 ---- # all output to a temporary file and read the results from there # when done ! builder = self.cfg.get('ConfigData', 'installerpath') tfile = 'pmbuild.out' basedir = os.path.join(self.cfg.get('ConfigData', 'projects'), self.components.baseDir.text) *************** *** 1036,1040 **** rdate = time.strftime('%B %d %Y') log[0] = string.replace(log[0], 'TBA', rdate) ! log[1] = '-' * len(log[0]) fd = open(newchglog, 'w') for line in log: --- 1041,1046 ---- rdate = time.strftime('%B %d %Y') log[0] = string.replace(log[0], 'TBA', rdate) ! dashes = '-' * (len(log[0]) - 1) ! log[1] = dashes + '\n' fd = open(newchglog, 'w') for line in log: *************** *** 1077,1080 **** --- 1083,1087 ---- chglogData = open(tmplfile, 'r').read() chglogData = chglogData % template + dashes = '-' * len(chglogData) chglog = os.path.join(basedir, 'changelog.txt') *************** *** 1085,1089 **** newchglog = os.path.join(basedir, 'changelog-new.txt') fd = open(newchglog, 'w') ! fd.write(chglogData + '\n') # new stuff for line in log: fd.write(line) --- 1092,1098 ---- newchglog = os.path.join(basedir, 'changelog-new.txt') fd = open(newchglog, 'w') ! fd.write(chglogData) # new stuff ! fd.write(dashes + '\n') ! fd.write('\n\n') # couple of blank lines for line in log: fd.write(line) *************** *** 1203,1207 **** cnt = 0 for item in self.components.scriptList.items: - print 'processing item %s, [%s]' % (cnt, item) self.project.set('Scripts', str(cnt), self.pathSplit(item)) cnt += 1 --- 1212,1215 ---- *************** *** 1337,1341 **** afile = os.path.join(afile, 'gpl.txt') fd = open(afile, 'w') ! fd.write(VINFO % vinfo) fd.close() --- 1345,1352 ---- afile = os.path.join(afile, 'gpl.txt') fd = open(afile, 'w') ! txtline = VINFO % vinfo ! dashes = '-' * len(txtline) ! fd.write(txtline + '\n') ! fd.write(dashes + '\n') fd.close() |
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/doc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20534 Added Files: pic1.jpg pic10.jpg pic11.jpg pic12.jpg pic13.jpg pic14.jpg pic15.jpg pic16.jpg pic17.jpg pic18.jpg pic19.jpg pic2.jpg pic20.jpg pic21.jpg pic22.jpg pic23.jpg pic24.jpg pic25.jpg pic26.jpg pic27.jpg pic3.jpg pic4.jpg pic5.jpg pic6.jpg pic7.jpg pic8.jpg pic9.jpg standaloneBuilder.html Log Message: Bug fix for exception raised when building a project that did not have a Windows icon file defined. Also added basic documentation with screenshots. --- NEW FILE: pic25.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic1.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic22.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic7.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic13.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic23.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic6.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic4.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic12.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic2.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic26.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic14.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic3.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic27.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic21.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic5.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: standaloneBuilder.html --- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /> <link rel="stylesheet" type="text/css" href="http://pythoncard.sourceforge.net/PythonCard.css" /> <title>PythonCard standaloneBuilder tool</title> </head> <body> <div id="banner"> <h1>PythonCard standaloneBuilder tool</h1> </div> <?php include "sidebar.php" ?> <div id="content"> <h2>Introduction</h2> <p>The process of converting a PythonCard project into a stand-alone application, complete with installer and un-install entry, is fairly tedious to do 'by hand'. Whilst writing some documentation (see <a href="standalone.html">here</a>) to cover this, it became clear that there was a need for some application software (written using PythonCard, naturally!) to help automate the process. The <i>standaloneBuilder</i> tool is the result. The program offers the user the ability to manage the development and release of successive versions of an application project written using PythonCard.</p> <p>Comments on this document and/or bug reports related to the <i>standaloneBuilder</i> tool may be posted to the PythonCard users mailing list, <a href="http://lists.sourceforge.net/lists/listinfo/pythoncard-users">http://lists.sourceforge.net/lists/listinfo/pythoncard-users</a>, for discussion.</p> <h2>Pre-Requisites</h2> <p>As well as Python, wxPython and PythonCard, you will need to have installed and configured McMillan Installer and Inno Setup on your computer. These packages can be downloaded from the following locations as of the time of writing: <ul> <li>McMillan Installer: <a href="http://paulbaranowski.org/modules.php?name=Downloads&d_op=getit&lid=8">http://paulbaranowski.org/modules.php?name=Downloads&d_op=getit&lid=8</a></li> <li>Inno Setup: <a href="http://www.jrsoftware.org/isdl.php">http://www.jrsoftware.org/isdl.php</a></li> </ul> Both packages come with comprehensive documentation - installation and setup should be painless.</p> <h2>Configuring <i>standaloneBuilder</i></h2> <p>When launching <i>standaloneBuilder</i> for the first time, it detects that the preferences need to be configured and drops you straight into the preferences dialog.</p> <div align="center"><img src="pic1.jpg" /></div> <p>You can come back to this dialog at any time by clicking the preferences button on the main screen. All of the options have help buttons (marked with '?') associated with them, so you can (hopefully) figure out what each one is for without too much difficulty. The program will try to find as much information as it can, you should only need to tell it your name and where to find the directory you keep all your projects in.</p> <div align="center"><img src="pic2.jpg" /></div> <p>After filling in any missing information, click the OK button to save your preferences for use iin future projects. <h2>Creating a new project</h2> <p>For the purposes of this document, we'll use the <i>standaloneBuilder</i> tool in conjunction with the application created in <a href="walkthrough2.html">walkthrough #2,</a> to illustrate the steps involved in the creation, development and distribution of a typical PythonCard program. We'll assume that you have already followed the walkthrough and you have the <i>counter.py</i> application fully functional.</p> <div align="center"><img src="pic3.jpg" /></div> <p>To begin, click on the 'New' button to start the new project wizard and fill in the details as required:</p> <div align="center"><img src="pic4.jpg" /></div><br /> <div align="center"><img src="pic5.jpg" /></div><br /> <div align="center"><img src="pic6.jpg" /></div><br /> <div align="center"><img src="pic7.jpg" /></div><br /> <div align="center"><img src="pic8.jpg" /></div><br /> <p>After completing the new project wizard, the program will create the project and add in some default folders and template files. A 'save' dialog will then be presented to allow the project details to be written to disk. The main window will now appear as shown below:</p> <div align="center"><img src="pic9.jpg" /></div> <h2>Adding files to the project</h2> <p>The first step will be to define the main script file for the project. In this case, there is only one script, namely <i>counter.py</i>, so click the '...' button next to the main script file text field. Navigate to the <i>sab-demo</i> folder and select the 'counter.py' script. Click the Open button to add it to the project:</p> <div align="center"><img src="pic10.jpg" /></div><br /> <div align="center"><img src="pic11.jpg" /></div> <p>Now, under the <i>Resource files</i> section of the main window, click the Add button. Select the <i>counter.rsrc.py</i> file and click on Open. This adds the resource file into the project:</p> <div align="center"><img src="pic12.jpg" /></div> <p>Having added the resource file, you can now open it in the resource editor simply by clicking on the Edit button on the main window. Files which are added in other sections of the main window can be edited in the same way. Script files will be opened using the program defined as the text editor in preferences. This defaults to the PythonCard code editor, but can be changed if required. Files listed uunder the Pixmaps section will be opened using whatever you specify as your default image editor in preferences,</p> <h2>Project properties</h2> <p>That pretty much covers the mechanics of adding and editing the files which make up your project. The project properties dialog provides a number of options which affect how the final standalone version of your program is built. To access this, click the Properties button on the main window:</p> <div align="center"><img src="pic13.jpg" /></div> <p>The first few fields determine the folder layout within your project. All the paths used within standaloneBuilder are relative. For example, the default build directory is simply called 'build' - in practice, this folder would be created in whatever you specified as the base folder when the project was initially created, this would in turn be created as a sub folder of your top level 'projects' folder defined in the preferences. Thus, in this example:</p> <ul> <li>Projects folder in preferences is <i>P:\</i></li> <li>The project was created in a folder called <i>sab-demo</i></li> <li>The build directory is called simply <i>build</i></li> </ul> <p>The full path to the build directory is therefore <i>P:\sab-demo\build</i>. Having all of the folder references relative to each other allows <i>standaloneBuilder</i> to maintain projects on both Windows and Linux platforms, with Python itself taking care of the differences in path separators.</p> <p>The application publisher, application URL and application licence fields are used by Inno Setup when the final version of the program is built</p> <p>The other options from <i>Deployment type</i> onwards correspond to the same options in the McMillan Installer. Note that new projects are always created with the <i>Console</i> option turned on - this is intended to aid with debugging. The build process generates a warning message to remind you to turn this off before making a release of your finished application.</p> <h2>Changelog & README buttons</h2> <p>Clicking the Changelog button launches the text editor defined in preferences and opens the project changelog file for further editing:</p> <div align="center"><img src="pic14.jpg" /></div> <p>Additional entries can be made directly using this option. Alternatively, there is an 'add changelog entry' option on the 'tools' menu. This pops up a small text entry dialog like so:</p> <div align="center"><img src="pic15.jpg" /></div> <p>The entry then gets added to the changelog. Entries are made so that the most recently added is at the top:</p> <div align="center"><img src="pic16.jpg" /></div> <p>The README button does a similar thing, but instead uses the text editor to open a file called <i>readme.txt</i> in the project base folder</p> <h2>The Rebuild button</h2> <p>Clicking this button causes the standalone version of your application to be rebuilt. As <i>sab-demo</i> is a new project, it has been created with the console option switched on. The first thing <i>standaloneBuilder</i> does is to remind you about this:</p> <div align="center"><img src="pic17.jpg" /></div> <p>The build then proceeds. If all is succesful, the program will tell you where it has stored the installer for the project:</p> <div align="center"><img src="pic18.jpg" /></div> <p>A scrolling text window is also displayed where you can see the output from the build process:</p> <div align="center"><img src="pic19.jpg" /></div> <p>When the build has completed, the self extracting installer executable can be copied to another Windows machine ad run. The resulting setup wizard looks the same as vartually any toher piece of 'professionally' produced software:</p> <div align="center"><img src="pic21.jpg" /></div> <p>The executable itself looks and behaves exactly the same as any other program. This is the result of right-clicking the <i>sab-demo.exe</i> file and selecting 'Properties':</p> <div align="center"><img src="pic20.jpg" /></div> <h2>The Release button</h2> <p>When you are happy that you have thoroughly debugged your project and are ready to release it to the outside world, you should open the project in <i>standaloneBuilder</i> and click the Release button. Doing this puts the current release of the project into a <i>frozen</i> state, in which no further changes can be made until you have checked and confirmed that the release os okay.</p> <p>The first thing that happens upon clicking the Release button is that a warning dialog pops up to give you the option of changing your mind:</p> <div align="center"><img src="pic22.jpg" /></div> <p>Assuming that you click OK at this point, a number fo things then happen to the project. Firstly, the status gets changed from <i>Open</i> to <i>Frozen</i> and the majority of the controls on the main window get disabled:</p> <div align="center"><img src="pic23.jpg" /></div> <p>Secondly, the 'release date TBA' tag at the top of the project changelog gets replaced by the current date. At this point, only the <i>Rebuild</i> and <Release</i> buttons will work. You should carry out a final rebuild of your project under both Windows and Linux, if applicable. Under Linux, the <i>Rebuild</i> process simply produces a TAR archive of the files which make up your project, as opposed to a standalone binary executable.</p> <p>When you are happy that everything has been rebuilt as you need it, you are ready to close off the current release and start the next version of your project. To do this, just click the <i>Release</i> button again. You will be presented with this dialog:</p> <div align="center"><img src="pic24.jpg" /></div> <p>Clcik OK to confirm the release. You then have an opportunity to decide what the next version number of your project will be, with the option to override what the program offers as a deafult. In the example shown below I have decided that the next release of the <i>sab-demo</i> project should have a version number of 0.9.1:</p> <div align="center"><img src="pic25.jpg" /></div> <p>The main window is then refreshed. The build number has been reset to 1 and a new changelog entry has been added to indicate the start of the release cycle for the new version number:</p> <div align="center"><img src="pic26.jpg" /></div><br /> <div align="center"><img src="pic27.jpg" /></div> <?php include "footer.php" ?> <p>$Revision: 1.1 $ : $Author: l2kphil $ : Last updated $Date: 2005/04/19 08:23:35 $</p> </div> <!-- end of content --> </body> </html> --- NEW FILE: pic15.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic18.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic9.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic16.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic10.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic20.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic24.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic11.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic19.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic17.jpg --- (This appears to be a binary file; contents omitted.) --- NEW FILE: pic8.jpg --- (This appears to be a binary file; contents omitted.) |
From: Phil E. <l2...@us...> - 2005-04-18 11:33:25
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/pixmaps In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18287/pixmaps Modified Files: new.png open.png save.png Log Message: Cosmetic fixes to button icons so they display better under Linux. Also fixed and exception in the new project wizard code. Index: save.png =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/pixmaps/save.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsYBOkoN and /tmp/cvs6qZU0F differ Index: new.png =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/pixmaps/new.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsKCMpfP and /tmp/cvs5kPcTH differ Index: open.png =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/pixmaps/open.png,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsJeYBBO and /tmp/cvs9rEvgH differ |
From: Phil E. <l2...@us...> - 2005-04-18 11:33:25
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18287 Modified Files: changelog.txt standaloneBuilder.py Log Message: Cosmetic fixes to button icons so they display better under Linux. Also fixed and exception in the new project wizard code. Index: changelog.txt =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/changelog.txt,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** changelog.txt 15 Apr 2005 15:18:53 -0000 1.2 --- changelog.txt 18 Apr 2005 11:33:14 -0000 1.3 *************** *** 1,4 **** --- 1,8 ---- standaloneBuilder version Version 0.1.1 release date TBA --------------------------------------------------------------------------- + - Fixed a bug which was causing an exception when creating a new + project due to trying to incorrectly make a relative path out of a + file name + - Cosmetic fixes to button layouts and icons - Fixed a bug in the rebuild process which was causing the wrong text fields to be shown when doing more than one rebuild in a Index: standaloneBuilder.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/standaloneBuilder.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** standaloneBuilder.py 15 Apr 2005 16:02:19 -0000 1.4 --- standaloneBuilder.py 18 Apr 2005 11:33:14 -0000 1.5 *************** *** 721,724 **** --- 721,726 ---- self.createProject() self.Project2UI() + self.on_menuFileSaveAs_select(None) # save the project + self.updateStatusBar() for comp in self.components.keys(): *************** *** 1113,1121 **** # create a config file the first time pimp is run title = 'Initial setup' ! txt = 'Since this is the first time you have run projectmanager, you need to configure ' txt += 'the program according to your preferences. Most users should find that the ' ! txt += 'default settings are satisfactory. On this system, settings will be stored ' txt += 'in "%s". In the preferences dialog, you can click the "?" buttons to get ' % self.CONFIG_FILE ! txt += 'help with any of the options. Click OK to begin configuring projectmanager.' bull = dialog.alertDialog(self, wrap_string(txt, 60), title) --- 1115,1123 ---- # create a config file the first time pimp is run title = 'Initial setup' ! txt = 'Since this is the first time you have run standaloneBuilder, you need to configure ' txt += 'the program according to your preferences. Most users should find that the ' ! txt += 'default settings are satisfactory.\n\nOn this system, settings will be stored ' txt += 'in "%s". In the preferences dialog, you can click the "?" buttons to get ' % self.CONFIG_FILE ! txt += 'help with any of the options.\n\nClick OK to begin configuring standaloneBuilder.' bull = dialog.alertDialog(self, wrap_string(txt, 60), title) *************** *** 1147,1151 **** self.cfg.set('ConfigData', 'installerpath', installer) ! self.cfg.set('ConfigData', 'compilerpath', '') self.cfg.set('ConfigData', 'publisher', '') self.cfg.set('ConfigData', 'companyname', '') --- 1149,1158 ---- self.cfg.set('ConfigData', 'installerpath', installer) ! # see if we can find the Inno Setup command line compiler ! # C:\Program Files\Inno Setup 5\ISCC.exe ! want = os.path.join('Inno Setup 5', 'ISCC.exe') ! compiler = self.lookFor(want) ! self.cfg.set('ConfigData', 'compilerpath', compiler) ! self.cfg.set('ConfigData', 'publisher', '') self.cfg.set('ConfigData', 'companyname', '') *************** *** 1181,1185 **** self.project.set('Project', 'fixnumber', str(vstring[2])) self.project.set('Project', 'name', self.components.projectName.text) ! self.project.set('Project', 'basepath', self.pathSplit(self.components.baseDir.text)) self.project.set('Project', 'projectdesc', self.components.projectDesc.text) self.project.set('Project', 'mainscript', self.pathSplit(self.components.mainScript.text)) --- 1188,1192 ---- self.project.set('Project', 'fixnumber', str(vstring[2])) self.project.set('Project', 'name', self.components.projectName.text) ! self.project.set('Project', 'basepath', self.getRelativePath(self.cfg.get('ConfigData', 'projects'), self.components.baseDir.text)) self.project.set('Project', 'projectdesc', self.components.projectDesc.text) self.project.set('Project', 'mainscript', self.pathSplit(self.components.mainScript.text)) *************** *** 1193,1198 **** --- 1200,1207 ---- except: pass + cnt = 0 for item in self.components.scriptList.items: + print 'processing item %s, [%s]' % (cnt, item) self.project.set('Scripts', str(cnt), self.pathSplit(item)) cnt += 1 *************** *** 1203,1206 **** --- 1212,1216 ---- except: pass + cnt = 0 for item in self.components.resList.items: *************** *** 1213,1216 **** --- 1223,1227 ---- except: pass + cnt = 0 for item in self.components.otherList.items: *************** *** 1255,1259 **** def createProject(self): # create all the folders and other gubbins ! basepath = self.project.get('Project', 'basepath') try: --- 1266,1270 ---- def createProject(self): # create all the folders and other gubbins ! basepath = os.path.join(self.cfg.get('ConfigData', 'projects'), self.project.get('Project', 'basepath')) try: *************** *** 1398,1401 **** --- 1409,1415 ---- if sys.platform.startswith('linux') or sys.platform.startswith('freebsd'): searchpaths.append('/usr/share') + + if sys.platform.startswith('win'): + searchpaths.append('C:\\Program Files') for search in searchpaths: |
From: Phil E. <l2...@us...> - 2005-04-15 16:02:28
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12234 Modified Files: customDialogs.py standaloneBuilder.py Log Message: Fixed an embarrasing little bug in prefs - it all works now, honest! Index: customDialogs.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/customDialogs.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** customDialogs.py 15 Apr 2005 15:18:54 -0000 1.3 --- customDialogs.py 15 Apr 2005 16:02:18 -0000 1.4 *************** *** 348,352 **** result = dialog.fileDialog(self, self.components.StaticText4.text, self.components.srcEditPath.text) if result.accepted: ! self.components.resEditPath.text = result.paths[0] def on_srcEditPathHelpBtn_mouseClick(self, event): --- 348,352 ---- result = dialog.fileDialog(self, self.components.StaticText4.text, self.components.srcEditPath.text) if result.accepted: ! self.components.srcEditPath.text = result.paths[0] def on_srcEditPathHelpBtn_mouseClick(self, event): Index: standaloneBuilder.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/standaloneBuilder.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** standaloneBuilder.py 15 Apr 2005 15:18:54 -0000 1.3 --- standaloneBuilder.py 15 Apr 2005 16:02:19 -0000 1.4 *************** *** 438,442 **** fd.close() ! editor = self.cfg.get('ConfigData', 'texteditor') os.system(editor + ' ' + chglog) --- 438,442 ---- fd.close() ! editor = self.cfg.get('ConfigData', 'codeeditor') os.system(editor + ' ' + chglog) |
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20050 Modified Files: changelog.txt customDialogs.py helpAbout.rsrc.py newProjectWizard.rsrc.py newProjectWizardPage1.rsrc.py newProjectWizardPage2.rsrc.py newProjectWizardPage3.rsrc.py newProjectWizardPage4.rsrc.py outputWindow.rsrc.py prefsDialog.rsrc.py propertiesDialog.rsrc.py standaloneBuilder.py standaloneBuilder.rsrc.py Added Files: versionDialog.rsrc.py Removed Files: todo.txt Log Message: standaloneBuilder is now essentially complete. Tested on Linux and windows XP, all seems fine. Index: newProjectWizard.rsrc.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/newProjectWizard.rsrc.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** newProjectWizard.rsrc.py 1 Apr 2005 09:58:50 -0000 1.1 --- newProjectWizard.rsrc.py 15 Apr 2005 15:18:54 -0000 1.2 *************** *** 1,68 **** ! {'type':'CustomDialog', ! 'name':'Template', ! 'title':'New Project Wizard', ! 'position':(171, 401), ! 'size':(600, 330), ! 'components': [ ! ! {'type':'Image', ! 'name':'Image1', ! 'position':(-5, -5), ! 'size':(174, 324), ! 'file':'pixmaps/newproject.png', ! }, ! ! {'type':'Button', ! 'name':'backBtn', ! 'position':(340, 275), ! 'enabled':False, ! 'label':'< Back', ! }, ! ! {'type':'Button', ! 'name':'nextBtn', ! 'position':(415, 275), ! 'label':'Next >', ! }, ! ! {'type':'Button', ! 'id':5101, ! 'name':'cancelBtn', ! 'position':(510, 275), ! 'label':'Cancel', ! }, ! ! {'type':'StaticText', ! 'name':'page0text1', ! 'position':(175, 0), ! 'font':{'faceName': 'Tahoma', 'family': 'sansSerif', 'size': 20}, ! 'text':'Welcome to the new project', ! 'userdata':'page0', ! }, ! ! {'type':'StaticText', ! 'name':'page0text2', ! 'position':(175, 30), ! 'font':{'faceName': 'Tahoma', 'family': 'sansSerif', 'size': 20}, ! 'text':'wizard!', ! 'userdata':'page0', ! }, ! ! {'type':'StaticText', ! 'name':'page0text3', ! 'position':(175, 85), ! 'font':{'faceName': 'Tahoma', 'family': 'sansSerif', 'size': 8}, ! 'text':'This will gather the information required to create a brand new project. Click Next to', ! 'userdata':'page0', ! }, ! ! {'type':'StaticText', ! 'name':'page0text4', ! 'position':(175, 100), ! 'font':{'faceName': 'Tahoma', 'family': 'sansSerif', 'size': 8}, ! 'text':'continue, or Cancel to exit the wizard.', ! 'userdata':'page0', ! }, ! ! ] # end components ! } # end CustomDialog --- 1,68 ---- ! {'type':'CustomDialog', ! 'name':'Template', ! 'title':'New Project Wizard', ! 'position':(171, 401), ! 'size':(600, 330), ! 'components': [ ! ! {'type':'Image', ! 'name':'Image1', ! 'position':(-5, -5), ! 'size':(174, 324), ! 'file':'pixmaps/newproject.png', ! }, ! ! {'type':'Button', ! 'name':'backBtn', ! 'position':(330, 275), ! 'enabled':False, ! 'label':'< Back', ! }, ! ! {'type':'Button', ! 'name':'nextBtn', ! 'position':(415, 275), ! 'label':'Next >', ! }, ! ! {'type':'Button', ! 'id':5101, ! 'name':'cancelBtn', ! 'position':(510, 275), ! 'label':'Cancel', ! }, ! ! {'type':'StaticText', ! 'name':'page0text1', ! 'position':(175, 0), ! 'font':{'faceName': 'Tahoma', 'family': 'sansSerif', 'size': 20}, ! 'text':'Welcome to the new project', ! 'userdata':'page0', ! }, ! ! {'type':'StaticText', ! 'name':'page0text2', ! 'position':(175, 30), ! 'font':{'faceName': 'Tahoma', 'family': 'sansSerif', 'size': 20}, ! 'text':'wizard!', ! 'userdata':'page0', ! }, ! ! {'type':'StaticText', ! 'name':'page0text3', ! 'position':(175, 85), ! 'font':{'faceName': 'Tahoma', 'family': 'sansSerif', 'size': 10}, ! 'text':'This will gather the information required to create a brand new project.', ! 'userdata':'page0', ! }, ! ! {'type':'StaticText', ! 'name':'page0text4', ! 'position':(175, 100), ! 'font':{'faceName': 'Tahoma', 'family': 'sansSerif', 'size': 10}, ! 'text':'Click Next to continue, or Cancel to exit the wizard.', ! 'userdata':'page0', ! }, ! ! ] # end components ! } # end CustomDialog --- todo.txt DELETED --- Index: helpAbout.rsrc.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/helpAbout.rsrc.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** helpAbout.rsrc.py 9 Apr 2005 09:30:36 -0000 1.1 --- helpAbout.rsrc.py 15 Apr 2005 15:18:54 -0000 1.2 *************** *** 1,45 **** ! {'type':'CustomDialog', ! 'name':'dlgAbout', ! 'title':'About standaloneBuilder:', ! 'position':(129, 133), ! 'size':(680, 370), ! 'components': [ ! ! {'type':'Button', ! 'name':'AboutBtn', ! 'position':(10, 5), ! 'size':(-1, 32), ! 'label':'About', ! }, ! ! {'type':'Button', ! 'name':'AuthorBtn', ! 'position':(90, 5), ! 'size':(-1, 32), ! 'label':'Author', ! }, ! ! {'type':'Button', ! 'name':'LicenseBtn', ! 'position':(170, 5), ! 'size':(-1, 32), ! 'label':'License', ! }, ! ! {'type':'HtmlWindow', ! 'name':'HtmlWindow', ! 'position':(5, 40), ! 'size':(668, 255), ! 'backgroundColor':(255, 255, 255), ! }, ! ! {'type':'Button', ! 'id':5100, ! 'name':'btnOK', ! 'position':(590, 305), ! 'size':(-1, 32), ! 'label':'Close', ! }, ! ! ] # end components ! } # end CustomDialog --- 1,45 ---- ! {'type':'CustomDialog', ! 'name':'dlgAbout', ! 'title':'About standaloneBuilder:', ! 'position':(129, 133), ! 'size':(680, 370), ! 'components': [ ! ! {'type':'Button', ! 'name':'AboutBtn', ! 'position':(10, 5), ! 'size':(-1, 32), ! 'label':'About', ! }, ! ! {'type':'Button', ! 'name':'AuthorBtn', ! 'position':(90, 5), ! 'size':(-1, 32), ! 'label':'Author', ! }, ! ! {'type':'Button', ! 'name':'LicenseBtn', ! 'position':(170, 5), ! 'size':(-1, 32), ! 'label':'License', ! }, ! ! {'type':'HtmlWindow', ! 'name':'HtmlWindow', ! 'position':(5, 40), ! 'size':(668, 255), ! 'backgroundColor':(255, 255, 255), ! }, ! ! {'type':'Button', ! 'id':5100, ! 'name':'btnOK', ! 'position':(590, 305), ! 'size':(-1, 32), ! 'label':'Close', ! }, ! ! ] # end components ! } # end CustomDialog Index: changelog.txt =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/changelog.txt,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** changelog.txt 9 Apr 2005 09:30:36 -0000 1.1 --- changelog.txt 15 Apr 2005 15:18:53 -0000 1.2 *************** *** 1,4 **** --- 1,8 ---- standaloneBuilder version Version 0.1.1 release date TBA --------------------------------------------------------------------------- + - Fixed a bug in the rebuild process which was causing the wrong + text fields to be shown when doing more than one rebuild in a + single session + - rebuild process now working under Linux, just builds a tarball - Help --> About dialog now works - The rebuild process now works 100% reliably Index: customDialogs.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/customDialogs.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** customDialogs.py 9 Apr 2005 09:30:36 -0000 1.2 --- customDialogs.py 15 Apr 2005 15:18:54 -0000 1.3 *************** *** 100,106 **** arg.append(os.path.join(dirname,item)) ! def OnCloseWindow(self, event): ! print "OnCloseWindow" ! self.Destroy() class HTMLHelp(CustomDialog): --- 100,129 ---- arg.append(os.path.join(dirname,item)) ! class versionDialog(CustomDialog): ! """Displays a dialog for the next release version number""" ! ! def __init__(self, aBg, currentVersion): ! path = os.path.join(aBg.application.applicationDirectory, 'versionDialog') ! aDialogRsrc = resource.ResourceFile(model.internationalResourceName(path)).getResource() ! CustomDialog.__init__(self, aBg, aDialogRsrc) ! self.parent = aBg ! ! vstring = string.split(currentVersion, '.') ! self.components.majorVersion.value = int(vstring[0]) ! self.components.minorVersion.value = int(vstring[1]) ! self.components.fixLevel.value = int(vstring[2]) + 1 ! ! def getVersion(self): ! vstring = [] ! vstring.append(str(self.components.majorVersion.value)) ! vstring.append(str(self.components.minorVersion.value)) ! vstring.append(str(self.components.fixLevel.value)) ! return vstring ! ! def on_btnOK_mouseClick(self, event): ! event.Skip() ! ! def on_btnCancel_mouseClick(self, event): ! event.Skip() class HTMLHelp(CustomDialog): *************** *** 157,161 **** resName = basename + pageref + '.rsrc.py' fd = open(resName, 'r') - print 'reading %s' % resName res = eval(fd.read()) for comp in res['components']: --- 180,183 ---- *************** *** 181,185 **** # enable the 'next' button if we have enough information to move # on to the next page - print '\nin setButtons, page count = %s' % self.pgCnt # back button is (almost) always enabled --- 203,206 ---- *************** *** 291,295 **** self.parent = aBg self.CONFIG_FILE = cfgfile - print 'in prefs, config file is %s' % self.CONFIG_FILE #if sys.platform.startswith('win'): self.fitToComponents(10,10) self.components.resEditPath.text = self.parent.cfg.get('ConfigData', 'reseditor') --- 312,315 ---- *************** *** 302,306 **** def on_btnOK_mouseClick(self, event): - print 'OK button!' self.parent.cfg.set('ConfigData', 'reseditor', self.components.resEditPath.text) self.parent.cfg.set('ConfigData', 'codeeditor', self.components.srcEditPath.text) --- 322,325 ---- *************** *** 316,320 **** def on_btnCancel_mouseClick(self, event): - print 'Cancel button!' event.Skip() --- 335,338 ---- *************** *** 387,397 **** #try: ! self.components.buildPath.text = self.parent.project.get('Project', 'buildfilespath') ! self.components.distPath.text = self.parent.project.get('Project', 'distfilespath') ! self.components.pixmapsPath.text = self.parent.project.get('Project', 'pixmapspath') ! self.components.tarballPath.text = self.parent.project.get('Project', 'tarballspath') self.components.appPublisher.text = self.parent.project.get('Project', 'publisher') self.components.appURL.text = self.parent.project.get('Project', 'appurl') ! self.components.appLicence.text = self.parent.project.get('Project', 'applicence') self.components.asciiChk.checked = self.parent.project.getboolean('Project', 'ascii') self.components.striplibsChk.checked = self.parent.project.getboolean('Project', 'striplib') --- 405,415 ---- #try: ! self.components.buildPath.text = self.parent.pathJoin(self.parent.project.get('Project', 'buildfilespath')) ! self.components.distPath.text = self.parent.pathJoin(self.parent.project.get('Project', 'distfilespath')) ! self.components.pixmapsPath.text = self.parent.pathJoin(self.parent.project.get('Project', 'pixmapspath')) ! self.components.tarballPath.text = self.parent.pathJoin(self.parent.project.get('Project', 'tarballspath')) self.components.appPublisher.text = self.parent.project.get('Project', 'publisher') self.components.appURL.text = self.parent.project.get('Project', 'appurl') ! self.components.appLicence.text = self.parent.pathJoin(self.parent.project.get('Project', 'applicence')) self.components.asciiChk.checked = self.parent.project.getboolean('Project', 'ascii') self.components.striplibsChk.checked = self.parent.project.getboolean('Project', 'striplib') *************** *** 408,480 **** def on_buildPathBtn_mouseClick(self, event): ! refpath = self.parent.components.baseDir.text ! p = self.parent.components.baseDir.text ! p = os.path.join(p, self.components.buildPath.text) title = 'Select path to project build directory' ! result = dialog.directoryDialog(self, title, p) if result.accepted: ! path = string.replace(result.path, refpath + os.sep, '') self.components.buildPath.text = path def on_distPathBtn_mouseClick(self, event): ! refpath = self.parent.components.baseDir.text ! p = os.path.join(refpath, self.components.distPath.text) title = 'Select path to project distribution directory' ! result = dialog.directoryDialog(self, title, p) if result.accepted: ! path = string.replace(result.path, refpath + os.sep, '') self.components.distPath.text = path def on_pixmapsPathBtn_mouseClick(self, event): ! refpath = self.parent.components.baseDir.text ! p = os.path.join(refpath, self.components.pixmapsPath.text) title = 'Select path to project pixmaps directory' ! result = dialog.directoryDialog(self, title, p) if result.accepted: ! path = string.replace(result.path, refpath + os.sep, '') self.components.pixmapsPath.text = path def on_tarballsPathBtn_mouseClick(self, event): ! refpath = self.parent.components.baseDir.text ! p = os.path.join(refpath, self.components.tarballsPath.text) title = 'Select path to project tarballs directory' ! result = dialog.directoryDialog(self, title, p) if result.accepted: ! path = string.replace(result.path, refpath + os.sep, '') self.components.tarballsPath.text = path def on_appLicenceBtn_mouseClick(self, event): ! refpath = self.parent.components.baseDir.text ! p = os.path.join(refpath, self.components.appLicence.text) title = 'Select path to project licence file' ! result = dialog.openFileDialog(self, title, p) ! print result.__dict__ if result.accepted: ! path = string.replace(result.paths[0], refpath + os.sep, '') self.components.appLicence.text = path def on_btnOK_mouseClick(self, event): old = copy.deepcopy(self.parent.project) ! self.parent.project.set('Project', 'buildfilespath', self.components.buildPath.text) ! self.parent.project.set('Project', 'distfilespath', self.components.distPath.text) ! self.parent.project.set('Project', 'pixmapspath', self.components.pixmapsPath.text) ! self.parent.project.set('Project', 'tarballspath', self.components.tarballPath.text) self.parent.project.set('Project', 'publisher', self.components.appPublisher.text) self.parent.project.set('Project', 'appurl', self.components.appURL.text) ! self.parent.project.set('Project', 'applicence', self.components.appLicence.text) ! self.parent.project.set('Project', 'ascii', int(self.components.asciiChk.checked)) ! self.parent.project.set('Project', 'striplib', int(self.components.striplibsChk.checked)) ! self.parent.project.set('Project', 'console', int(self.components.consoleChk.checked)) ! self.parent.project.set('Project', 'optimize', int(self.components.optimizeChk.checked)) ! self.parent.project.set('Project', 'compress', int(self.components.compressChk.checked)) ! self.parent.project.set('Project', 'debug', int(self.components.debugChk.checked)) if self.components.buildType.stringSelection == 'Single directory': ! self.parent.project.set('Project', 'onedir', 1) else: ! self.parent.project.set('Project', 'onedir', 0) if self.parent.project != old: self.parent.documentChanged = True event.Skip() def on_btnCancel_mouseClick(self, event): - print 'Cancel button!' event.Skip() --- 426,510 ---- def on_buildPathBtn_mouseClick(self, event): ! basepath = os.path.join(self.parent.cfg.get('ConfigData', 'projects'), self.parent.components.baseDir.text) ! basepath = os.path.join(basepath, self.components.buildPath.text) ! refpath = os.path.join(self.parent.cfg.get('ConfigData', 'projects'), self.parent.components.baseDir.text) ! title = 'Select path to project build directory' ! result = dialog.directoryDialog(self, title, basepath) ! if result.accepted: ! path = self.parent.getRelativePath(refpath, result.path) self.components.buildPath.text = path def on_distPathBtn_mouseClick(self, event): ! basepath = os.path.join(self.parent.cfg.get('ConfigData', 'projects'), self.parent.components.baseDir.text) ! basepath = os.path.join(basepath, self.components.distPath.text) ! refpath = os.path.join(self.parent.cfg.get('ConfigData', 'projects'), self.parent.components.baseDir.text) ! title = 'Select path to project distribution directory' ! result = dialog.directoryDialog(self, title, basepath) ! if result.accepted: ! path = self.parent.getRelativePath(refpath, result.path) self.components.distPath.text = path def on_pixmapsPathBtn_mouseClick(self, event): ! basepath = os.path.join(self.parent.cfg.get('ConfigData', 'projects'), self.parent.components.baseDir.text) ! basepath = os.path.join(basepath, self.components.pixmapsPath.text) ! refpath = os.path.join(self.parent.cfg.get('ConfigData', 'projects'), self.parent.components.baseDir.text) ! title = 'Select path to project pixmaps directory' ! result = dialog.directoryDialog(self, title, basepath) ! if result.accepted: ! path = self.parent.getRelativePath(refpath, result.path) self.components.pixmapsPath.text = path def on_tarballsPathBtn_mouseClick(self, event): ! basepath = os.path.join(self.parent.cfg.get('ConfigData', 'projects'), self.parent.components.baseDir.text) ! basepath = os.path.join(basepath, self.components.tarballsPath.text) ! refpath = os.path.join(self.parent.cfg.get('ConfigData', 'projects'), self.parent.components.baseDir.text) ! title = 'Select path to project tarballs directory' ! result = dialog.directoryDialog(self, title, refpath) ! if result.accepted: ! path = self.parent.getRelativePath(refpath, result.path) self.components.tarballsPath.text = path def on_appLicenceBtn_mouseClick(self, event): ! basepath = os.path.join(self.parent.cfg.get('ConfigData', 'projects'), self.parent.components.baseDir.text) ! basepath = os.path.join(basepath, self.components.appLicence.text) ! refpath = os.path.join(self.parent.cfg.get('ConfigData', 'projects'), self.parent.components.baseDir.text) ! title = 'Select path to project licence file' ! result = dialog.openFileDialog(self, title, refpath) ! if result.accepted: ! path = self.parent.getRelativePath(refpath, result.paths[0]) self.components.appLicence.text = path def on_btnOK_mouseClick(self, event): old = copy.deepcopy(self.parent.project) ! self.parent.project.set('Project', 'buildfilespath', self.parent.pathSplit(self.components.buildPath.text)) ! self.parent.project.set('Project', 'distfilespath', self.parent.pathSplit(self.components.distPath.text)) ! self.parent.project.set('Project', 'pixmapspath', self.parent.pathSplit(self.components.pixmapsPath.text)) ! self.parent.project.set('Project', 'tarballspath', self.parent.pathSplit(self.components.tarballPath.text)) self.parent.project.set('Project', 'publisher', self.components.appPublisher.text) self.parent.project.set('Project', 'appurl', self.components.appURL.text) ! self.parent.project.set('Project', 'applicence', self.parent.pathSplit(self.components.appLicence.text)) ! self.parent.project.set('Project', 'ascii', str(int(self.components.asciiChk.checked))) ! self.parent.project.set('Project', 'striplib', str(int(self.components.striplibsChk.checked))) ! self.parent.project.set('Project', 'console', str(int(self.components.consoleChk.checked))) ! self.parent.project.set('Project', 'optimize', str(int(self.components.optimizeChk.checked))) ! self.parent.project.set('Project', 'compress', str(int(self.components.compressChk.checked))) ! self.parent.project.set('Project', 'debug', str(int(self.components.debugChk.checked))) if self.components.buildType.stringSelection == 'Single directory': ! self.parent.project.set('Project', 'onedir', '1') else: ! self.parent.project.set('Project', 'onedir', '0') if self.parent.project != old: self.parent.documentChanged = True event.Skip() def on_btnCancel_mouseClick(self, event): event.Skip() Index: prefsDialog.rsrc.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/prefsDialog.rsrc.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** prefsDialog.rsrc.py 1 Apr 2005 09:58:50 -0000 1.1 --- prefsDialog.rsrc.py 15 Apr 2005 15:18:54 -0000 1.2 *************** *** 1,205 **** ! {'type':'CustomDialog', ! 'name':'prefsDialog', ! 'title':'Projectmanager Preferences', ! 'position':(541, 39), ! 'size':(495, 385), ! 'components': [ ! ! {'type':'TextField', ! 'name':'resEditPath', ! 'position':(10, 20), ! 'size':(410, -1), ! 'userdata':'Select the location on your computer where the PythonCard resource editor is installed.', ! }, ! ! {'type':'Button', ! 'name':'resEditPathBtn', ! 'position':(425, 20), ! 'size':(25, -1), ! 'label':'...', ! }, ! ! {'type':'Button', ! 'name':'resEditPathHelpBtn', ! 'position':(455, 20), ! 'size':(25, -1), ! 'label':'?', ! }, ! ! {'type':'TextField', ! 'name':'srcEditPath', ! 'position':(10, 65), ! 'size':(405, -1), ! 'userdata':'Select the location on your computer where the PythonCard source code editor is installed.\n', ! }, ! ! {'type':'Button', ! 'name':'srcEditPathBtn', ! 'position':(425, 65), ! 'size':(25, -1), ! 'label':'...', ! }, ! ! {'type':'Button', ! 'name':'srcEditPathHelpBtn', ! 'position':(455, 65), ! 'size':(25, -1), ! 'label':'?', ! }, ! ! {'type':'TextField', ! 'name':'pixmapEditPath', ! 'position':(10, 110), ! 'size':(405, -1), ! 'userdata':'Select the location on your computer where your preferred pixmap editor is installed.\n', ! }, ! ! {'type':'Button', ! 'name':'pixmapEditPathBtn', ! 'position':(425, 110), ! 'size':(25, -1), ! 'label':'...', ! }, ! ! {'type':'Button', ! 'name':'pixmapEditPathHelpBtn', ! 'position':(455, 110), ! 'size':(25, -1), ! 'label':'?', ! }, ! ! {'type':'TextField', ! 'name':'installerPath', ! 'position':(10, 155), ! 'size':(405, -1), ! 'userdata':'Select the location on your computer where the McMillan installer software is installed. Note that projectmanager assumes that you have already configured this according to the documentation that comes with it.\n', ! }, ! ! {'type':'Button', ! 'name':'installerPathBtn', ! 'position':(425, 155), ! 'size':(25, -1), ! 'label':'...', ! }, ! ! {'type':'Button', ! 'name':'installerPathHelpBtn', ! 'position':(455, 155), ! 'size':(25, -1), ! 'label':'?', ! }, ! ! {'type':'TextField', ! 'name':'compilerPath', ! 'position':(10, 200), ! 'size':(405, -1), ! 'userdata':'Select the location on your computer where the Inno setup compiler is installed.', ! }, ! ! {'type':'Button', ! 'name':'compilerPathBtn', ! 'position':(425, 200), ! 'size':(25, -1), ! 'label':'...', ! }, ! ! {'type':'Button', ! 'name':'compilerPathHelpBtn', ! 'position':(455, 200), ! 'size':(25, -1), ! 'label':'?', ! }, ! ! {'type':'TextField', ! 'name':'appPublisher', ! 'position':(10, 245), ! 'size':(405, -1), ! 'userdata':"Defines the name which will be used to add an 'AppPublisher' entry to your Inno script file. This name will appear when someone does a right click on your standalone executable and selects 'properties'.", ! }, ! ! {'type':'Button', ! 'name':'appPublisherHelpBtn', ! 'position':(455, 245), ! 'size':(25, -1), ! 'label':'?', ! }, ! ! {'type':'TextField', ! 'name':'projectsPath', ! 'position':(10, 295), ! 'size':(405, -1), ! 'userdata':'Select the location on your computer where you normally keep your PythonCard projects.', ! }, ! ! {'type':'Button', ! 'name':'projectsPathBtn', ! 'position':(425, 295), ! 'size':(25, -1), ! 'label':'...', ! }, ! ! {'type':'Button', ! 'name':'projectsPathHelpBtn', ! 'position':(455, 295), ! 'size':(25, -1), ! 'label':'?', ! }, ! ! {'type':'Button', ! 'id':5100, ! 'name':'btnOK', ! 'position':(10, 330), ! 'label':'OK', ! }, ! ! {'type':'Button', ! 'id':5101, ! 'name':'btnCancel', ! 'position':(90, 330), ! 'label':'Cancel', ! }, ! ! {'type':'StaticText', ! 'name':'StaticText7', ! 'position':(10, 185), ! 'text':'Path to Inno setup compiler:', ! }, ! ! {'type':'StaticText', ! 'name':'StaticText6', ! 'position':(10, 230), ! 'text':'Your name as it will appear in finished applications properties:', ! }, ! ! {'type':'StaticText', ! 'name':'StaticText3', ! 'position':(10, 5), ! 'text':'Path to PythonCard resource editor:', ! }, ! ! {'type':'StaticText', ! 'name':'StaticText4', ! 'position':(10, 50), ! 'text':'Path to preferred code editor:', ! }, ! ! {'type':'StaticText', ! 'name':'StaticText5', ! 'position':(10, 95), ! 'text':'Path to preferred pixmap editor:', ! }, ! ! {'type':'StaticText', ! 'name':'StaticText1', ! 'position':(10, 140), ! 'text':'Path to McMillan Installer:', ! }, ! ! {'type':'StaticText', ! 'name':'StaticText2', ! 'position':(10, 280), ! 'text':'Path to your projects directory:', ! }, ! ! ] # end components ! } # end CustomDialog --- 1,205 ---- ! {'type':'CustomDialog', ! 'name':'prefsDialog', ! 'title':'Projectmanager Preferences', ! 'position':(541, 39), ! 'size':(495, 385), ! 'components': [ ! ! {'type':'TextField', ! 'name':'resEditPath', ! 'position':(10, 20), ! 'size':(410, -1), ! 'userdata':'Select the location on your computer where the PythonCard resource editor is installed.', ! }, ! ! {'type':'Button', ! 'name':'resEditPathBtn', ! 'position':(425, 20), ! 'size':(25, -1), ! 'label':'...', ! }, ! ! {'type':'Button', ! 'name':'resEditPathHelpBtn', ! 'position':(455, 20), ! 'size':(25, -1), ! 'label':'?', ! }, ! ! {'type':'TextField', ! 'name':'srcEditPath', ! 'position':(10, 65), ! 'size':(405, -1), ! 'userdata':'Select the location on your computer where the PythonCard source code editor is installed.\n', ! }, ! ! {'type':'Button', ! 'name':'srcEditPathBtn', ! 'position':(425, 65), ! 'size':(25, -1), ! 'label':'...', ! }, ! ! {'type':'Button', ! 'name':'srcEditPathHelpBtn', ! 'position':(455, 65), ! 'size':(25, -1), ! 'label':'?', ! }, ! ! {'type':'TextField', ! 'name':'pixmapEditPath', ! 'position':(10, 110), ! 'size':(405, -1), ! 'userdata':'Select the location on your computer where your preferred pixmap editor is installed.\n', ! }, ! ! {'type':'Button', ! 'name':'pixmapEditPathBtn', ! 'position':(425, 110), ! 'size':(25, -1), ! 'label':'...', ! }, ! ! {'type':'Button', ! 'name':'pixmapEditPathHelpBtn', ! 'position':(455, 110), ! 'size':(25, -1), ! 'label':'?', ! }, ! ! {'type':'TextField', ! 'name':'installerPath', ! 'position':(10, 155), ! 'size':(405, -1), ! 'userdata':'Select the location on your computer where the McMillan installer software is installed. Note that projectmanager assumes that you have already configured this according to the documentation that comes with it.\n', ! }, ! ! {'type':'Button', ! 'name':'installerPathBtn', ! 'position':(425, 155), ! 'size':(25, -1), ! 'label':'...', ! }, ! ! {'type':'Button', ! 'name':'installerPathHelpBtn', ! 'position':(455, 155), ! 'size':(25, -1), ! 'label':'?', ! }, ! ! {'type':'TextField', ! 'name':'compilerPath', ! 'position':(10, 200), ! 'size':(405, -1), ! 'userdata':'Select the location on your computer where the Inno setup compiler is installed.', ! }, ! ! {'type':'Button', ! 'name':'compilerPathBtn', ! 'position':(425, 200), ! 'size':(25, -1), ! 'label':'...', ! }, ! ! {'type':'Button', ! 'name':'compilerPathHelpBtn', ! 'position':(455, 200), ! 'size':(25, -1), ! 'label':'?', ! }, ! ! {'type':'TextField', ! 'name':'appPublisher', ! 'position':(10, 245), ! 'size':(405, -1), ! 'userdata':"Defines the name which will be used to add an 'AppPublisher' entry to your Inno script file. This name will appear when someone does a right click on your standalone executable and selects 'properties'.", ! }, ! ! {'type':'Button', ! 'name':'appPublisherHelpBtn', ! 'position':(455, 245), ! 'size':(25, -1), ! 'label':'?', ! }, ! ! {'type':'TextField', ! 'name':'projectsPath', ! 'position':(10, 295), ! 'size':(405, -1), ! 'userdata':'Select the location on your computer where you normally keep your PythonCard projects.', ! }, ! ! {'type':'Button', ! 'name':'projectsPathBtn', ! 'position':(425, 295), ! 'size':(25, -1), ! 'label':'...', ! }, ! ! {'type':'Button', ! 'name':'projectsPathHelpBtn', ! 'position':(455, 295), ! 'size':(25, -1), ! 'label':'?', ! }, ! ! {'type':'Button', ! 'id':5100, ! 'name':'btnOK', ! 'position':(10, 330), ! 'label':'OK', ! }, ! ! {'type':'Button', ! 'id':5101, ! 'name':'btnCancel', ! 'position':(95, 330), ! 'label':'Cancel', ! }, ! ! {'type':'StaticText', ! 'name':'StaticText7', ! 'position':(10, 185), ! 'text':'Path to Inno setup compiler:', ! }, ! ! {'type':'StaticText', ! 'name':'StaticText6', ! 'position':(10, 230), ! 'text':'Your name as it will appear in finished applications properties:', ! }, ! ! {'type':'StaticText', ! 'name':'StaticText3', ! 'position':(10, 5), ! 'text':'Path to PythonCard resource editor:', ! }, ! ! {'type':'StaticText', ! 'name':'StaticText4', ! 'position':(10, 50), ! 'text':'Path to preferred code editor:', ! }, ! ! {'type':'StaticText', ! 'name':'StaticText5', ! 'position':(10, 95), ! 'text':'Path to preferred pixmap editor:', ! }, ! ! {'type':'StaticText', ! 'name':'StaticText1', ! 'position':(10, 140), ! 'text':'Path to McMillan Installer:', ! }, ! ! {'type':'StaticText', ! 'name':'StaticText2', ! 'position':(10, 280), ! 'text':'Path to your projects directory:', ! }, ! ! ] # end components ! } # end CustomDialog Index: standaloneBuilder.rsrc.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/standaloneBuilder.rsrc.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** standaloneBuilder.rsrc.py 9 Apr 2005 09:30:36 -0000 1.2 --- standaloneBuilder.rsrc.py 15 Apr 2005 15:18:54 -0000 1.3 *************** *** 6,10 **** 'title':'PythonCard standaloneBuilder', 'size':(800, 594), - 'position':(-1, -1), 'statusBar':1, --- 6,9 ---- *************** *** 127,130 **** --- 126,135 ---- 'components': [ + {'type':'StaticText', + 'name':'versionString', + 'position':(500, 125), + 'text':'n/a', + }, + {'type':'ImageButton', 'name':'newBtn', *************** *** 136,139 **** --- 141,145 ---- 'file':'pixmaps/new.png', 'toolTip':'Create a new project', + 'userdata':'frozen', }, *************** *** 147,150 **** --- 153,157 ---- 'file':'pixmaps/open.png', 'toolTip':'Open an existing project', + 'userdata':'frozen', }, *************** *** 158,161 **** --- 165,169 ---- 'file':'pixmaps/save.png', 'toolTip':'Save the current project', + 'userdata':'frozen', }, *************** *** 168,172 **** 'command':'prefsBtn', 'file':'pixmaps/prefs.png', ! 'toolTip':'ProjectManager preferences', }, --- 176,181 ---- 'command':'prefsBtn', 'file':'pixmaps/prefs.png', ! 'toolTip':'standaloneBuilder preferences', ! 'userdata':'frozen', }, *************** *** 180,188 **** 'file':'pixmaps/exit.png', 'toolTip':'Quit the program', }, {'type':'TextField', 'name':'projectName', ! 'position':(90, 60), 'size':(250, -1), }, --- 189,198 ---- 'file':'pixmaps/exit.png', 'toolTip':'Quit the program', + 'userdata':'frozen', }, {'type':'TextField', 'name':'projectName', ! 'position':(95, 60), 'size':(250, -1), }, *************** *** 203,207 **** {'type':'TextField', 'name':'baseDir', ! 'position':(90, 90), 'size':(250, -1), }, --- 213,217 ---- {'type':'TextField', 'name':'baseDir', ! 'position':(95, 90), 'size':(250, -1), }, *************** *** 209,213 **** {'type':'Button', 'name':'baseDirBtn', ! 'position':(345, 90), 'size':(22, 22), 'label':'...', --- 219,223 ---- {'type':'Button', 'name':'baseDirBtn', ! 'position':(350, 90), 'size':(22, 22), 'label':'...', *************** *** 222,226 **** {'type':'TextField', 'name':'mainScript', ! 'position':(90, 120), 'size':(250, -1), }, --- 232,236 ---- {'type':'TextField', 'name':'mainScript', ! 'position':(95, 120), 'size':(250, -1), }, *************** *** 228,266 **** {'type':'Button', 'name':'mainScriptBtn', ! 'position':(345, 120), 'size':(22, 22), 'label':'...', }, - {'type':'Spinner', - 'name':'majorVersion', - 'position':(535, 120), - 'size':(40, -1), - 'backgroundColor':(255, 255, 255), - 'max':100, - 'min':0, - 'value':99, - }, - - {'type':'Spinner', - 'name':'minorVersion', - 'position':(630, 120), - 'size':(40, -1), - 'backgroundColor':(255, 255, 255), - 'max':100, - 'min':1, - 'value':100, - }, - - {'type':'Spinner', - 'name':'fixNumber', - 'position':(710, 120), - 'size':(40, -1), - 'backgroundColor':(255, 255, 255), - 'max':100, - 'min':1, - 'value':1, - }, - {'type':'StaticBox', 'name':'StaticBox2', --- 238,246 ---- {'type':'Button', 'name':'mainScriptBtn', ! 'position':(350, 120), 'size':(22, 22), 'label':'...', }, {'type':'StaticBox', 'name':'StaticBox2', *************** *** 286,290 **** {'type':'Button', 'name':'scriptDelBtn', ! 'position':(95, 285), 'size':(-1, 22), 'label':'Remove', --- 266,270 ---- {'type':'Button', 'name':'scriptDelBtn', ! 'position':(100, 285), 'size':(-1, 22), 'label':'Remove', *************** *** 293,297 **** {'type':'Button', 'name':'scriptEditBtn', ! 'position':(175, 285), 'size':(-1, 22), 'label':'Edit...', --- 273,277 ---- {'type':'Button', 'name':'scriptEditBtn', ! 'position':(185, 285), 'size':(-1, 22), 'label':'Edit...', *************** *** 300,304 **** {'type':'Button', 'name':'scriptDelAllBtn', ! 'position':(300, 285), 'size':(-1, 22), 'label':'Clear all', --- 280,284 ---- {'type':'Button', 'name':'scriptDelAllBtn', ! 'position':(295, 285), 'size':(-1, 22), 'label':'Clear all', *************** *** 328,332 **** {'type':'Button', 'name':'resDelBtn', ! 'position':(495, 285), 'size':(-1, 22), 'label':'Remove', --- 308,312 ---- {'type':'Button', 'name':'resDelBtn', ! 'position':(500, 285), 'size':(-1, 22), 'label':'Remove', *************** *** 335,339 **** {'type':'Button', 'name':'resEditBtn', ! 'position':(575, 285), 'size':(-1, 22), 'label':'Edit...', --- 315,319 ---- {'type':'Button', 'name':'resEditBtn', ! 'position':(585, 285), 'size':(-1, 22), 'label':'Edit...', *************** *** 342,346 **** {'type':'Button', 'name':'resDelAllBtn', ! 'position':(700, 285), 'size':(-1, 22), 'label':'Clear all', --- 322,326 ---- {'type':'Button', 'name':'resDelAllBtn', ! 'position':(695, 285), 'size':(-1, 22), 'label':'Clear all', *************** *** 370,374 **** {'type':'Button', 'name':'pixmapDelBtn', ! 'position':(95, 440), 'size':(-1, 22), 'label':'Remove', --- 350,354 ---- {'type':'Button', 'name':'pixmapDelBtn', ! 'position':(100, 440), 'size':(-1, 22), 'label':'Remove', *************** *** 377,381 **** {'type':'Button', 'name':'pixmapEditBtn', ! 'position':(175, 440), 'size':(-1, 22), 'label':'Edit...', --- 357,361 ---- {'type':'Button', 'name':'pixmapEditBtn', ! 'position':(185, 440), 'size':(-1, 22), 'label':'Edit...', *************** *** 384,388 **** {'type':'Button', 'name':'pixmapDelAllBtn', ! 'position':(300, 440), 'size':(-1, 22), 'label':'Clear all', --- 364,368 ---- {'type':'Button', 'name':'pixmapDelAllBtn', ! 'position':(295, 440), 'size':(-1, 22), 'label':'Clear all', *************** *** 412,416 **** {'type':'Button', 'name':'docDelBtn', ! 'position':(495, 440), 'size':(-1, 22), 'label':'Remove', --- 392,396 ---- {'type':'Button', 'name':'docDelBtn', ! 'position':(500, 440), 'size':(-1, 22), 'label':'Remove', *************** *** 419,423 **** {'type':'Button', 'name':'docEditBtn', ! 'position':(575, 440), 'size':(-1, 22), 'label':'Edit...', --- 399,403 ---- {'type':'Button', 'name':'docEditBtn', ! 'position':(585, 440), 'size':(-1, 22), 'label':'Edit...', *************** *** 426,430 **** {'type':'Button', 'name':'docDelAllBtn', ! 'position':(700, 440), 'size':(-1, 22), 'label':'Clear all', --- 406,410 ---- {'type':'Button', 'name':'docDelAllBtn', ! 'position':(695, 440), 'size':(-1, 22), 'label':'Clear all', *************** *** 441,447 **** {'type':'Button', 'name':'changelogBtn', ! 'position':(95, 475), 'size':(-1, 22), ! 'command':'menuToolsLogEdit', 'label':'Changelog...', 'toolTip':'Edit the changelog file', --- 421,427 ---- {'type':'Button', 'name':'changelogBtn', ! 'position':(100, 475), 'size':(-1, 22), ! 'command':'changeLogBtn', 'label':'Changelog...', 'toolTip':'Edit the changelog file', *************** *** 450,454 **** {'type':'Button', 'name':'readmeBtn', ! 'position':(95, 500), 'size':(-1, 22), 'label':'README...', --- 430,434 ---- {'type':'Button', 'name':'readmeBtn', ! 'position':(100, 500), 'size':(-1, 22), 'label':'README...', *************** *** 458,462 **** {'type':'Button', 'name':'specBtn', ! 'position':(175, 475), 'size':(-1, 22), 'label':'Spec file...', --- 438,442 ---- {'type':'Button', 'name':'specBtn', ! 'position':(185, 475), 'size':(-1, 22), 'label':'Spec file...', *************** *** 466,470 **** {'type':'Button', 'name':'innoBtn', ! 'position':(175, 500), 'size':(-1, 22), 'label':'Inno script...', --- 446,450 ---- {'type':'Button', 'name':'innoBtn', ! 'position':(185, 500), 'size':(-1, 22), 'label':'Inno script...', *************** *** 474,489 **** {'type':'Button', 'name':'rebuildBtn', ! 'position':(700, 475), 'size':(-1, 22), 'label':'Rebuild', 'toolTip':'Rebuild the standalone version of your application', }, {'type':'Button', 'name':'releaseBtn', ! 'position':(700, 500), 'size':(-1, 22), 'label':'Release', 'toolTip':'Make a release of your finished application', }, --- 454,471 ---- {'type':'Button', 'name':'rebuildBtn', ! 'position':(695, 475), 'size':(-1, 22), 'label':'Rebuild', 'toolTip':'Rebuild the standalone version of your application', + 'userdata':'frozen', }, {'type':'Button', 'name':'releaseBtn', ! 'position':(695, 500), 'size':(-1, 22), 'label':'Release', 'toolTip':'Make a release of your finished application', + 'userdata':'frozen', }, *************** *** 503,519 **** {'type':'StaticText', 'name':'StaticText4', ! 'position':(405, 95), 'text':'Project description', }, {'type':'StaticText', - 'name':'StaticText1', - 'position':(690, 125), - 'text':'Fix', - }, - - {'type':'StaticText', 'name':'StaticText9', ! 'position':(440, 65), 'text':'Icon (Win)', }, --- 485,495 ---- {'type':'StaticText', 'name':'StaticText4', ! 'position':(395, 95), 'text':'Project description', }, {'type':'StaticText', 'name':'StaticText9', ! 'position':(435, 65), 'text':'Icon (Win)', }, *************** *** 521,525 **** {'type':'StaticText', 'name':'StaticText8', ! 'position':(455, 125), 'text':'Version', }, --- 497,501 ---- {'type':'StaticText', 'name':'StaticText8', ! 'position':(450, 125), 'text':'Version', }, *************** *** 537,552 **** }, - {'type':'StaticText', - 'name':'StaticText3', - 'position':(595, 125), - 'text':'Minor', - }, - - {'type':'StaticText', - 'name':'StaticText2', - 'position':(500, 125), - 'text':'Major', - }, - ] # end components } # end background --- 513,516 ---- Index: outputWindow.rsrc.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/outputWindow.rsrc.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** outputWindow.rsrc.py 9 Apr 2005 09:30:36 -0000 1.2 --- outputWindow.rsrc.py 15 Apr 2005 15:18:54 -0000 1.3 *************** *** 1,107 **** ! {'application':{'type':'Application', ! 'name':'Template', ! 'backgrounds': [ ! {'type':'Background', ! 'name':'outputWindow', ! 'title':'Rebuild project', ! 'size':(400, 300), ! 'visible':0, ! ! 'components': [ ! ! {'type':'Button', ! 'name':'closeBtn', ! 'position':(10, 225), ! 'label':'Close', ! }, ! ! {'type':'StaticText', ! 'name':'txt5', ! 'position':(10, 90), ! 'text':'Returned messages:', ! }, ! ! {'type':'TextArea', ! 'name':'returnedText', ! 'position':(10, 105), ! 'size':(375, 110), ! }, ! ! {'type':'StaticText', ! 'name':'txt4c', ! 'position':(145, 70), ! 'text':'please wait...', ! 'visible':False, ! }, ! ! {'type':'StaticText', ! 'name':'txt4b', ! 'position':(145, 70), ! 'font':{'style': 'bold', 'faceName': 'Verdana', 'family': 'sansSerif', 'size': 8}, ! 'text':'Done', ! 'visible':False, ! }, ! ! {'type':'StaticText', ! 'name':'txt4a', ! 'position':(10, 70), ! 'text':'Rebuilding distributable:', ! 'visible':False, ! }, ! ! {'type':'StaticText', ! 'name':'txt3c', ! 'position':(145, 50), ! 'text':'please wait...', ! 'visible':False, ! }, ! ! {'type':'StaticText', ! 'name':'txt3b', ! 'position':(145, 50), ! 'font':{'style': 'bold', 'faceName': 'Verdana', 'family': 'sansSerif', 'size': 8}, ! 'text':'Done', ! 'visible':False, ! }, ! ! {'type':'StaticText', ! 'name':'txt3a', ! 'position':(10, 50), ! 'text':'Rebuilding application:', ! 'visible':False, ! }, ! ! {'type':'StaticText', ! 'name':'txt2b', ! 'position':(145, 30), ! 'font':{'style': 'bold', 'faceName': 'Verdana', 'family': 'sansSerif', 'size': 8}, ! 'text':'Done', ! 'visible':False, ! }, ! ! {'type':'StaticText', ! 'name':'txt2a', ! 'position':(10, 30), ! 'text':'Rebuilding versioninfo file:', ! 'visible':False, ! }, ! ! {'type':'StaticText', ! 'name':'txt1b', ! 'position':(145, 10), ! 'font':{'style': 'bold', 'faceName': 'Verdana', 'family': 'sansSerif', 'size': 8}, ! 'text':'Done', ! 'visible':False, ! }, ! ! {'type':'StaticText', ! 'name':'txt1a', ! 'position':(10, 10), ! 'text':'Rebuilding spec file:', ! 'visible':False, ! }, ! ! ] # end components ! } # end background ! ] # end backgrounds ! } } --- 1,107 ---- ! {'application':{'type':'Application', ! 'name':'Template', ! 'backgrounds': [ ! {'type':'Background', ! 'name':'outputWindow', ! 'title':'Rebuild project', ! 'size':(400, 300), ! 'visible':0, ! ! 'components': [ ! ! {'type':'Button', ! 'name':'closeBtn', ! 'position':(10, 225), ! 'label':'Close', ! }, ! ! {'type':'StaticText', ! 'name':'txt5', ! 'position':(10, 90), ! 'text':'Returned messages:', ! }, ! ! {'type':'TextArea', ! 'name':'returnedText', ! 'position':(10, 105), ! 'size':(375, 110), ! }, ! ! {'type':'StaticText', ! 'name':'txt4c', ! 'position':(145, 70), ! 'text':'please wait...', ! 'visible':False, ! }, ! ! {'type':'StaticText', ! 'name':'txt4b', ! 'position':(145, 70), ! 'font':{'style': 'bold', 'faceName': 'Verdana', 'family': 'sansSerif', 'size': 8}, ! 'text':'Done', ! 'visible':False, ! }, ! ! {'type':'StaticText', ! 'name':'txt4a', ! 'position':(10, 70), ! 'text':'Rebuilding distributable:', ! 'visible':False, ! }, ! ! {'type':'StaticText', ! 'name':'txt3c', ! 'position':(145, 50), ! 'text':'please wait...', ! 'visible':False, ! }, ! ! {'type':'StaticText', ! 'name':'txt3b', ! 'position':(145, 50), ! 'font':{'style': 'bold', 'faceName': 'Verdana', 'family': 'sansSerif', 'size': 8}, ! 'text':'Done', ! 'visible':False, ! }, ! ! {'type':'StaticText', ! 'name':'txt3a', ! 'position':(10, 50), ! 'text':'Rebuilding application:', ! 'visible':False, ! }, ! ! {'type':'StaticText', ! 'name':'txt2b', ! 'position':(145, 30), ! 'font':{'style': 'bold', 'faceName': 'Verdana', 'family': 'sansSerif', 'size': 8}, ! 'text':'Done', ! 'visible':False, ! }, ! ! {'type':'StaticText', ! 'name':'txt2a', ! 'position':(10, 30), ! 'text':'Rebuilding versioninfo file:', ! 'visible':False, ! }, ! ! {'type':'StaticText', ! 'name':'txt1b', ! 'position':(145, 10), ! 'font':{'style': 'bold', 'faceName': 'Verdana', 'family': 'sansSerif', 'size': 8}, ! 'text':'Done', ! 'visible':False, ! }, ! ! {'type':'StaticText', ! 'name':'txt1a', ! 'position':(10, 10), ! 'text':'Rebuilding spec file:', ! 'visible':False, ! }, ! ! ] # end components ! } # end background ! ] # end backgrounds ! } } Index: newProjectWizardPage4.rsrc.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/newProjectWizardPage4.rsrc.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** newProjectWizardPage4.rsrc.py 9 Apr 2005 09:30:36 -0000 1.2 --- newProjectWizardPage4.rsrc.py 15 Apr 2005 15:18:54 -0000 1.3 *************** *** 1,74 **** ! {'type':'CustomDialog', ! 'name':'Template', ! 'title':'New Project Wizard', ! 'position':(171, 401), ! 'size':(600, 330), ! 'components': [ ! ! {'type':'Image', ! 'name':'Image1', ! 'position':(-5, -5), ! 'size':(174, 324), ! 'file':'pixmaps/newproject.png', ! }, ! ! {'type':'Button', ! 'name':'backBtn', ! 'position':(340, 275), ! 'enabled':False, ! 'label':'< Back', ! }, ! ! {'type':'Button', ! 'name':'nextBtn', ! 'position':(415, 275), ! 'label':'Next >', ! }, ! ! {'type':'Button', ! 'id':5101, ! 'name':'cancelBtn', ! 'position':(510, 275), ! 'label':'Cancel', ! }, ! ! {'type':'StaticText', ! 'name':'page4text1', ! 'position':(175, 0), ! 'font':{'faceName': 'Tahoma', 'family': 'sansSerif', 'size': 20}, ! 'text':'Ready to create new project', ! 'userdata':'page4', ! }, ! ! {'type':'StaticText', ! 'name':'page4text3', ! 'position':(175, 85), ! 'font':{'faceName': 'Tahoma', 'family': 'sansSerif', 'size': 8}, ! 'text':'We now have the information required to create a brand new project. Click Create to', ! 'userdata':'page4', ! }, ! ! {'type':'StaticText', ! 'name':'page4text4', ! 'position':(175, 100), ! 'font':{'faceName': 'Tahoma', 'family': 'sansSerif', 'size': 8}, ! 'text':'continue, or Cancel to exit the wizard.', ! 'userdata':'page4', ! }, ! ! {'type':'StaticText', ! 'name':'page4text5', ! 'position':(175, 125), ! 'text':'After the project has been created, you should open the project properties page and', ! 'userdata':'page4', ! }, ! ! {'type':'StaticText', ! 'name':'page4text6', ! 'position':(175, 140), ! 'text':'ensure that the settings are to your liking.', ! 'userdata':'page4', ! }, ! ! ] # end components ! } # end CustomDialog --- 1,76 ---- ! {'type':'CustomDialog', ! 'name':'Template', ! 'title':'New Project Wizard', ! 'position':(175, 82), ! 'size':(600, 330), ! 'components': [ ! ! {'type':'Image', ! 'name':'Image1', ! 'position':(-5, -5), ! 'size':(174, 324), ! 'file':'pixmaps/newproject.png', ! }, ! ! {'type':'Button', ! 'name':'backBtn', ! 'position':(340, 275), ! 'enabled':False, ! 'label':'< Back', ! }, ! ! {'type':'Button', ! 'name':'nextBtn', ! 'position':(415, 275), ! 'label':'Next >', ! }, ! ! {'type':'Button', ! 'id':5101, ! 'name':'cancelBtn', ! 'position':(510, 275), ! 'label':'Cancel', ! }, ! ! {'type':'StaticText', ! 'name':'page4text1', ! 'position':(175, 0), ! 'font':{'faceName': 'Tahoma', 'family': 'sansSerif', 'size': 20}, ! 'text':'Ready to create new project', ! 'userdata':'page4', ! }, ! ! {'type':'StaticText', ! 'name':'page4text3', ! 'position':(175, 85), ! 'font':{'faceName': u'Tahoma', 'size': 10}, ! 'text':'We now have the information required to create a brand new project.', ! 'userdata':'page4', ! }, ! ! {'type':'StaticText', ! 'name':'page4text4', ! 'position':(175, 100), ! 'font':{'faceName': u'Tahoma', 'size': 10}, ! 'text':'Click Create to continue, or Cancel to exit the wizard.', ! 'userdata':'page4', ! }, ! ! {'type':'StaticText', ! 'name':'page4text5', ! 'position':(175, 125), ! 'font':{'faceName': u'Tahoma', 'size': 10}, ! 'text':'After the project has been created, you should open the project', ! 'userdata':'page4', ! }, ! ! {'type':'StaticText', ! 'name':'page4text6', ! 'position':(175, 140), ! 'font':{'faceName': u'Tahoma', 'size': 10}, ! 'text':'properties page and ensure that the settings are to your liking.', ! 'userdata':'page4', ! }, ! ! ] # end components ! } # end CustomDialog Index: standaloneBuilder.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/standaloneBuilder.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** standaloneBuilder.py 9 Apr 2005 09:30:36 -0000 1.2 --- standaloneBuilder.py 15 Apr 2005 15:18:54 -0000 1.3 *************** *** 1,5 **** #!/usr/bin/python # ! # PythonCard project manager - Phil Edwards <ph...@li...> # Copyright (c) 2001-2003 PythonCard developers # All rights reserved. --- 1,5 ---- #!/usr/bin/python # ! # PythonCard standaloneBuilder tool - Phil Edwards <ph...@li...> # Copyright (c) 2001-2003 PythonCard developers [...1880 lines suppressed...] ! pstatus = self.project.get('Project', 'status') ! ! if pstatus == 'frozen': ! title = 'Frozen project' ! txt = 'This release of the %s project has been frozen ready ' % self.project.get('Project', 'name') ! txt += 'for release. The project ' ! txt += 'should be rebuilt on all the platforms you are interested in.\n\nYou ' ! txt += 'should then click the release button to un-freeze the ' ! txt += 'project and initialize the next version.' ! bull = dialog.alertDialog(self, wrap_string(txt, 70), title) ! for comp in self.components.keys(): ! if self.components[comp].userdata != pstatus: ! self.components[comp].enabled = False ! ! if pstatus == 'open': ! for comp in self.components.keys(): self.components[comp].enabled = True if __name__ == '__main__': ! app = model.Application(standaloneBuilder) app.MainLoop() Index: newProjectWizardPage1.rsrc.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/newProjectWizardPage1.rsrc.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** newProjectWizardPage1.rsrc.py 1 Apr 2005 09:58:50 -0000 1.1 --- newProjectWizardPage1.rsrc.py 15 Apr 2005 15:18:54 -0000 1.2 *************** *** 23,27 **** {'type':'TextField', 'name':'projectName', ! 'position':(245, 55), 'size':(340, -1), 'userdata':'page1', --- 23,27 ---- {'type':'TextField', 'name':'projectName', ! 'position':(250, 55), 'size':(340, -1), 'userdata':'page1', --- NEW FILE: versionDialog.rsrc.py --- {'type':'CustomDialog', 'name':'nextVersion', 'title':'Next Release Version Number', 'position':(169, 114), 'size':(260, 145), 'components': [ {'type':'StaticText', 'name':'StaticText1', 'position':(10, 10), 'text':'Please confirm the next release version number:', }, {'type':'Spinner', 'name':'majorVersion', 'position':(10, 40), 'size':(47, -1), 'max':100, 'min':0, 'value':11, }, {'type':'Spinner', 'name':'minorVersion', 'position':(87, 40), 'size':(47, -1), 'max':100, 'min':0, 'value':0, }, {'type':'Spinner', 'name':'fixLevel', 'position':(164, 40), 'size':(47, -1), 'max':100, 'min':0, 'value':0, }, {'type':'Button', 'id':5100, 'name':'btnOK', 'position':(10, 90), 'default':1, 'label':'OK', }, {'type':'Button', 'id':5101, 'name':'btnCancel', 'position':(90, 90), 'label':'Cancel', }, ] # end components } # end CustomDialog Index: newProjectWizardPage2.rsrc.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/newProjectWizardPage2.rsrc.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** newProjectWizardPage2.rsrc.py 1 Apr 2005 09:58:50 -0000 1.1 --- newProjectWizardPage2.rsrc.py 15 Apr 2005 15:18:54 -0000 1.2 *************** *** 23,27 **** {'type':'TextField', 'name':'projectDesc', ! 'position':(270, 55), 'size':(315, -1), 'userdata':'page2', --- 23,27 ---- {'type':'TextField', 'name':'projectDesc', ! 'position':(275, 55), 'size':(315, -1), 'userdata':'page2', Index: newProjectWizardPage3.rsrc.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/newProjectWizardPage3.rsrc.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** newProjectWizardPage3.rsrc.py 1 Apr 2005 09:58:50 -0000 1.1 --- newProjectWizardPage3.rsrc.py 15 Apr 2005 15:18:54 -0000 1.2 *************** *** 23,28 **** {'type':'TextField', 'name':'baseDir', ! 'position':(250, 55), ! 'size':(305, -1), 'userdata':'page3', }, --- 23,28 ---- {'type':'TextField', 'name':'baseDir', ! 'position':(255, 55), ! 'size':(300, -1), 'userdata':'page3', }, *************** *** 31,35 **** 'name':'baseDirBtn', 'position':(560, 55), ! 'size':(25, -1), 'label':'...', 'userdata':'page3', --- 31,35 ---- 'name':'baseDirBtn', 'position':(560, 55), ! 'size':(25, 25), 'label':'...', 'userdata':'page3', Index: propertiesDialog.rsrc.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/propertiesDialog.rsrc.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** propertiesDialog.rsrc.py 1 Apr 2005 09:58:50 -0000 1.1 --- propertiesDialog.rsrc.py 15 Apr 2005 15:18:54 -0000 1.2 *************** *** 1,198 **** ! {'type':'CustomDialog', ! 'name':'propertiesDialog', ! 'title':'Project properties', ! 'position':(555, 29), ! 'size':(430, 395), ! 'components': [ ! ! {'type':'TextField', ! 'name':'buildPath', ! 'position':(105, 5), ! 'size':(275, -1), ! }, ! ! {'type':'Button', ! 'name':'buildPathBtn', ! 'position':(385, 5), ! 'size':(30, -1), ! 'label':'...', ! }, ! ! {'type':'TextField', ! 'name':'distPath', ! 'position':(105, 40), ! 'size':(275, -1), ! }, ! ! {'type':'Button', ! 'name':'distPathBtn',... [truncated message content] |
From: Phil E. <l2...@us...> - 2005-04-15 15:19:04
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/doc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20050/doc Modified Files: about.html Log Message: standaloneBuilder is now essentially complete. Tested on Linux and windows XP, all seems fine. Index: about.html =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/doc/about.html,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** about.html 9 Apr 2005 09:30:36 -0000 1.1 --- about.html 15 Apr 2005 15:18:54 -0000 1.2 *************** *** 13,17 **** <td align="center" valign="top"> </td> <td valign="top"> ! standaloneBuilder is designed to herlp simplify the process of getting a PythonCard applpication distributed in standalone form, without the end user being required to install PythonCard, wxPython or even Python --- 13,17 ---- <td align="center" valign="top"> </td> <td valign="top"> ! standaloneBuilder is designed to help simplify the process of getting a PythonCard applpication distributed in standalone form, without the end user being required to install PythonCard, wxPython or even Python |
From: Phil E. <l2...@us...> - 2005-04-15 15:19:03
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/templates In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20050/templates Modified Files: changelog.txt Log Message: standaloneBuilder is now essentially complete. Tested on Linux and windows XP, all seems fine. Index: changelog.txt =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/templates/changelog.txt,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** changelog.txt 9 Apr 2005 09:35:04 -0000 1.1 --- changelog.txt 15 Apr 2005 15:18:54 -0000 1.2 *************** *** 1,2 **** ! %(name)s version Version %(major)s.%(minor)s.%(fix)s release date TBA --------------------------------------------------------------------------- --- 1,2 ---- ! %(name)s Version %(major)s.%(minor)s.%(fix)s release date TBA --------------------------------------------------------------------------- |
From: Phil E. <l2...@us...> - 2005-04-09 09:35:14
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/templates In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv784/templates Added Files: about.html author.html changelog.txt gpl.html gpl.txt readme.txt Log Message: Few more fixes to standaloneBuilder app --- NEW FILE: gpl.txt --- GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. <one line to give the program's name and a brief idea of what it does.> Copyright (C) <year> <name of author> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. <signature of Ty Coon>, 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. --- NEW FILE: author.html --- <font face="verdana"> <p>%(name)s was developed by %(publisher)s I would like to also extend my grateful thanks to the following:</p> <br></br> <div align="center"> <font face="verdana" size="2"> <table width="90%%"> <tr> <td> <hr> Kevin Altis <a href="mailto:al...@se...">al...@se...</a>, without whose excellent work on PythonCard none of this would be possible. </td> </tr> <tr> <td> <hr> </td> </tr> </table> </div> </font> --- NEW FILE: about.html --- <html> <head> </head> <body bgcolor="7f7f7f"> <font face="verdana" size="2"> <table border="0" width="100%%"> <tr> <td colspan="2"> <b>%(name)s (%(desc)s) Version %(major)s.%(minor)s.%(fix)s</b> </td> </tr> <tr> <td align="center" valign="top">insert project logo here</td> <td valign="top"> Add a verbose description of your project here... <p>%(name)s project homepage: <a href="%(appurl)s">%(appurl)s</a><p> <p>Developed using the PythonCard GUI toolkit and wxPython, <a href="http://pythoncard.sourceforge.net">http://pythoncard.sourceforge.net</a></p> </td> </tr> </table> </font> </body> </html> --- NEW FILE: gpl.html --- <font face="sans-serif"> <center> <p>This program is distributed under the terms of the GPL v2.</p> <p>GNU GENERAL PUBLIC LICENSE</p> <p>Version 2, June 1991</p> <p>Copyright (C) 1989, 1991 Free Software Foundation, Inc.<br> 675 Mass Ave, Cambridge, MA 02139, USA</p> <p>Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.</p> <p>Preamble</p></center> <p>The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.</p> <p>When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.</p> <p>To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.</p> <p>For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.</p> <p>We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.</p> <p>Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.</p> <p>Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.</p> <p>The precise terms and conditions for copying, distribution and modification follow.</p> <center><p>GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</p></center> <p>0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".</p> <p>Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.</p> <p>1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.</p> <p>You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.</p> <p>2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:</p> <p>a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.</p> <p>b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.</p> <p>c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)</p> <p>These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.</p> <p>Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.</p> <p>In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.</p> <p>3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:</p> <p>a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,</p> <p>b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,</p> <p>c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)</p> <p>The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.</p> <p>If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.</p> <p>4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.</p> <p>5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.</p> <p>6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.</p> <p>7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.</p> <p>If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.</p> <p>It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.</p> <p>This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.</p> <p>8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.</p> <p>9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.</p> <p>Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.</p> <p>10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.</p> <center><p>NO WARRANTY</p></center> <p>11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.</p> <p>12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p> <center><p>END OF TERMS AND CONDITIONS</p></center> </center> </font> --- NEW FILE: changelog.txt --- %(name)s version Version %(major)s.%(minor)s.%(fix)s release date TBA --------------------------------------------------------------------------- --- NEW FILE: readme.txt --- This is the README file for the %(name)s project. |
From: Phil E. <l2...@us...> - 2005-04-09 09:30:46
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/templates In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31166/templates Modified Files: versioninfo.txt Log Message: Few more fixes to standaloneBuilder app Index: versioninfo.txt =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/templates/versioninfo.txt,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** versioninfo.txt 1 Apr 2005 09:58:51 -0000 1.1 --- versioninfo.txt 9 Apr 2005 09:30:37 -0000 1.2 *************** *** 15,19 **** StringTable( '040904B0', ! [StringStruct('CompanyName', ''), StringStruct('FileDescription', '%(name)s Executable'), StringStruct('FileVersion', '%(major)s.%(minor)s.%(fix)s (build_%(build)s_%(date)s)'), --- 15,19 ---- StringTable( '040904B0', ! [StringStruct('CompanyName', '%(companyname)s'), StringStruct('FileDescription', '%(name)s Executable'), StringStruct('FileVersion', '%(major)s.%(minor)s.%(fix)s (build_%(build)s_%(date)s)'), |
From: Phil E. <l2...@us...> - 2005-04-09 09:30:46
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/pixmaps In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31166/pixmaps Added Files: standaloneBuilder.ico Log Message: Few more fixes to standaloneBuilder app --- NEW FILE: standaloneBuilder.ico --- (This appears to be a binary file; contents omitted.) |
From: Phil E. <l2...@us...> - 2005-04-09 09:30:45
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31166 Modified Files: customDialogs.py newProjectWizardPage4.rsrc.py outputWindow.py outputWindow.rsrc.py standaloneBuilder.py standaloneBuilder.rsrc.py Added Files: changelog.txt helpAbout.rsrc.py readme.txt Log Message: Few more fixes to standaloneBuilder app Index: standaloneBuilder.rsrc.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/standaloneBuilder.rsrc.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** standaloneBuilder.rsrc.py 1 Apr 2005 09:58:50 -0000 1.1 --- standaloneBuilder.rsrc.py 9 Apr 2005 09:30:36 -0000 1.2 *************** *** 3,9 **** 'backgrounds': [ {'type':'Background', ! 'name':'PM', ! 'title':'PythonCard Project Manager', 'size':(800, 594), 'statusBar':1, --- 3,10 ---- 'backgrounds': [ {'type':'Background', ! 'name':'standaloneBuilder', ! 'title':'PythonCard standaloneBuilder', 'size':(800, 594), + 'position':(-1, -1), 'statusBar':1, *************** *** 236,239 **** --- 237,241 ---- 'position':(535, 120), 'size':(40, -1), + 'backgroundColor':(255, 255, 255), 'max':100, 'min':0, *************** *** 245,248 **** --- 247,251 ---- 'position':(630, 120), 'size':(40, -1), + 'backgroundColor':(255, 255, 255), 'max':100, 'min':1, *************** *** 254,257 **** --- 257,261 ---- 'position':(710, 120), 'size':(40, -1), + 'backgroundColor':(255, 255, 255), 'max':100, 'min':1, --- NEW FILE: readme.txt --- This is the README file for the PythonCard standaloneBuilder tool --- NEW FILE: helpAbout.rsrc.py --- {'type':'CustomDialog', 'name':'dlgAbout', 'title':'About standaloneBuilder:', 'position':(129, 133), 'size':(680, 370), 'components': [ {'type':'Button', 'name':'AboutBtn', 'position':(10, 5), 'size':(-1, 32), 'label':'About', }, {'type':'Button', 'name':'AuthorBtn', 'position':(90, 5), 'size':(-1, 32), 'label':'Author', }, {'type':'Button', 'name':'LicenseBtn', 'position':(170, 5), 'size':(-1, 32), 'label':'License', }, {'type':'HtmlWindow', 'name':'HtmlWindow', 'position':(5, 40), 'size':(668, 255), 'backgroundColor':(255, 255, 255), }, {'type':'Button', 'id':5100, 'name':'btnOK', 'position':(590, 305), 'size':(-1, 32), 'label':'Close', }, ] # end components } # end CustomDialog --- NEW FILE: changelog.txt --- standaloneBuilder version Version 0.1.1 release date TBA --------------------------------------------------------------------------- - Help --> About dialog now works - The rebuild process now works 100% reliably - the project changelog.txt file can now be maintained from within the standaloneBuilder app pitself Index: outputWindow.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/outputWindow.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** outputWindow.py 1 Apr 2005 09:58:50 -0000 1.1 --- outputWindow.py 9 Apr 2005 09:30:36 -0000 1.2 *************** *** 38,44 **** def addLine(self, text): self.components.returnedText.text += str(text) ! self.Refresh() ! self.Update() ! wx.Yield() def on_closeBtn_mouseClick(self, event): --- 38,44 ---- def addLine(self, text): self.components.returnedText.text += str(text) ! #self.Refresh() ! #self.Update() ! #wx.Yield() def on_closeBtn_mouseClick(self, event): Index: customDialogs.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/customDialogs.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** customDialogs.py 1 Apr 2005 09:58:50 -0000 1.1 --- customDialogs.py 9 Apr 2005 09:30:36 -0000 1.2 *************** *** 103,107 **** print "OnCloseWindow" self.Destroy() ! class newProjectWizard(CustomDialog): """Displays a wizard for creating a new project""" --- 103,136 ---- print "OnCloseWindow" self.Destroy() ! ! class HTMLHelp(CustomDialog): ! """Displays an HTML based about box""" ! ! def __init__(self, aBg, links=None): ! path = os.path.join(aBg.application.applicationDirectory, 'helpAbout') ! aDialogRsrc = resource.ResourceFile(model.internationalResourceName(path)).getResource() ! CustomDialog.__init__(self, aBg, aDialogRsrc) ! self.parent = aBg ! #self.components.versionText.text = 'Version %s' % self.parent.pimpversion ! ! # links is a 3-element list giving the HTML files to use for the About, Author ! # and License buttons ! if links is None: links = ['doc/about.html', 'doc/author.html', 'doc/license.html'] ! self.links = links ! ! self.components.HtmlWindow.text = self.links[0] ! ! def on_btnOK_mouseClick(self, event): ! event.Skip() ! ! def on_AboutBtn_mouseClick(self, event): ! self.components.HtmlWindow.text = self.links[0] ! ! def on_AuthorBtn_mouseClick(self, event): ! self.components.HtmlWindow.text = self.links[1] ! ! def on_LicenseBtn_mouseClick(self, event): ! self.components.HtmlWindow.text = self.links[2] ! class newProjectWizard(CustomDialog): """Displays a wizard for creating a new project""" *************** *** 171,174 **** --- 200,204 ---- else: self.components.nextBtn.enabled = True + self.components.projectName.SetFocus() if self.pgCnt == 2: *************** *** 179,182 **** --- 209,213 ---- else: self.components.nextBtn.enabled = True + self.components.projectDesc.SetFocus() if self.pgCnt == 3: *************** *** 187,190 **** --- 218,222 ---- else: self.components.nextBtn.enabled = True + self.components.baseDir.SetFocus() if self.pgCnt == self.maxPages: *************** *** 192,195 **** --- 224,228 ---- else: self.components.nextBtn.label = 'Next >' + self.components.nextBtn.SetFocus() def on_backBtn_mouseClick(self, event): *************** *** 233,237 **** title = 'Select project base directory' basepath = self.parent.cfg.get('ConfigData', 'projects') ! result = dialog.directoryDialog(self, title, basepath) if result.accepted: self.components.baseDir.text = result.path --- 266,270 ---- title = 'Select project base directory' basepath = self.parent.cfg.get('ConfigData', 'projects') ! result = dialog.directoryDialog(self, title, basepath, wx.DD_NEW_DIR_BUTTON) if result.accepted: self.components.baseDir.text = result.path *************** *** 353,376 **** self.parent = aBg ! try: ! self.components.buildPath.text = self.parent.project.get('Project', 'buildfilespath') ! self.components.distPath.text = self.parent.project.get('Project', 'distfilespath') ! self.components.pixmapsPath.text = self.parent.project.get('Project', 'pixmapspath') ! self.components.tarballPath.text = self.parent.project.get('Project', 'tarballspath') ! self.components.appPublisher.text = self.parent.project.get('Project', 'publisher') ! self.components.appURL.text = self.parent.project.get('Project', 'appurl') ! self.components.appLicence.text = self.parent.project.get('Project', 'applicence') ! self.components.asciiChk.checked = self.parent.project.getboolean('Project', 'ascii') ! self.components.striplibsChk.checked = self.parent.project.getboolean('Project', 'striplib') ! self.components.consoleChk.checked = self.parent.project.getboolean('Project', 'console') # best to have a coonsole for new projects! ! self.components.optimizeChk.checked = self.parent.project.getboolean('Project', 'optimize') ! self.components.compressChk.checked = self.parent.project.getboolean('Project', 'compress') ! self.components.debugChk.checked = self.parent.project.getboolean('Project', 'debug') ! if self.parent.project.getboolean('Project', 'onedir'): ! self.components.buildType.stringSelection = 'Single directory' ! else: ! self.components.buildType.stringSelection = 'Single file' ! except: ! pass def on_buildPathBtn_mouseClick(self, event): --- 386,409 ---- self.parent = aBg ! #try: ! self.components.buildPath.text = self.parent.project.get('Project', 'buildfilespath') ! self.components.distPath.text = self.parent.project.get('Project', 'distfilespath') ! self.components.pixmapsPath.text = self.parent.project.get('Project', 'pixmapspath') ! self.components.tarballPath.text = self.parent.project.get('Project', 'tarballspath') ! self.components.appPublisher.text = self.parent.project.get('Project', 'publisher') ! self.components.appURL.text = self.parent.project.get('Project', 'appurl') ! self.components.appLicence.text = self.parent.project.get('Project', 'applicence') ! self.components.asciiChk.checked = self.parent.project.getboolean('Project', 'ascii') ! self.components.striplibsChk.checked = self.parent.project.getboolean('Project', 'striplib') ! self.components.consoleChk.checked = self.parent.project.getboolean('Project', 'console') # best to have a coonsole for new projects! ! self.components.optimizeChk.checked = self.parent.project.getboolean('Project', 'optimize') ! self.components.compressChk.checked = self.parent.project.getboolean('Project', 'compress') ! self.components.debugChk.checked = self.parent.project.getboolean('Project', 'debug') ! if self.parent.project.getboolean('Project', 'onedir'): ! self.components.buildType.stringSelection = 'Single directory' ! else: ! self.components.buildType.stringSelection = 'Single file' ! #except: ! # pass def on_buildPathBtn_mouseClick(self, event): *************** *** 446,476 **** print 'Cancel button!' event.Skip() - - class HTMLHelp(CustomDialog): - """Displays an HTML based about box""" - - def __init__(self, aBg, links=None): - path = os.path.join(aBg.stack.app.applicationDirectory, 'helpAbout') - aDialogRsrc = res.ResourceFile(model.internationalResourceName(path)).getResource() - CustomDialog.__init__(self, aBg, aDialogRsrc) - self.parent = aBg - self.components.versionText.text = 'Version %s' % self.parent.pimpversion - - # links is a 3-element list giving the HTML files to use for the About, Author - # and License buttons - if links is None: links = ['doc/about.html', 'doc/author.html', 'doc/license.html'] - self.links = links - - self.components.HtmlWindow.text = self.links[0] - - def on_btnOK_mouseClick(self, event): - event.Skip() - - def on_AboutBtn_mouseClick(self, event): - self.components.HtmlWindow.text = self.links[0] - - def on_AuthorBtn_mouseClick(self, event): - self.components.HtmlWindow.text = self.links[1] - - def on_LicenseBtn_mouseClick(self, event): - self.components.HtmlWindow.text = self.links[2] --- 479,480 ---- Index: standaloneBuilder.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/standaloneBuilder.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** standaloneBuilder.py 1 Apr 2005 09:58:50 -0000 1.1 --- standaloneBuilder.py 9 Apr 2005 09:30:36 -0000 1.2 *************** *** 60,64 **** import outputWindow ! class standaloneBuilder(model.Background): ############################################################################## --- 60,64 ---- import outputWindow ! class PM(model.Background): ############################################################################## *************** *** 110,140 **** def on_menuToolsLogAdd_command(self, event): # add a new changelog entry ! logString = ' (' ! logString += str(self.components.fixNumber.value) ! logString += ') ' ! result = dialog.multilineTextEntryDialog(self, ! 'Add Changelog Entry', ! 'Enter the new text below, and click OK:') if result.accepted: ! logString += result.text ! chglog = os.path.join(self.components.baseDir.text, 'changelog.txt') ! fd = open(chglog, 'r') # open for appending ! logfile = fd.readlines() ! print logfile ! bull = raw_input() ! fd.close() ! fd = open(chglog, 'w') # open for writing ! logfile.insert(2, logString) ! fd.write(string.join(logfile)) ! fd.close() def on_menuToolsLogEdit_command(self, event): # edit changelog, create it if it doesn't exist template = {} ! template['projectName'] = self.components.projectName.text ! template['majorVersion'] = self.components.majorVersion.value ! template['minorVersion'] = self.components.minorVersion.value ! template['fixNumber'] = self.components.fixNumber.value chglog = os.path.join(self.components.baseDir.text, 'changelog.txt') --- 110,169 ---- def on_menuToolsLogAdd_command(self, event): + template = {} + template['name'] = self.components.projectName.text + template['major'] = self.components.majorVersion.value + template['minor'] = self.components.minorVersion.value + template['fix'] = self.components.fixNumber.value + + chglog = os.path.join(self.components.baseDir.text, 'changelog.txt') + + if not os.path.exists(chglog): + fd = open(chglog, 'w') + tmplfile = os.path.join('templates', 'changelog.txt') + chglogData = open(tmplfile, 'r').read() + chglogData = chglogData % template + fd.write(chglogData) + fd.close() + # add a new changelog entry ! result = dialog.multilineTextEntryDialog(self, 'Add Changelog Entry', 'Enter the new text below, and click OK:') ! if result.accepted: ! fmtstring = string.split(wrap_string(result.text, 65), '\n') ! infd = open(chglog, 'r') ! outfd = open(chglog + '-new', 'w') ! ! # keep the top 2 lines of the existing file ! outfd.write(infd.readline()) ! outfd.write(infd.readline()) ! ! # write out the new entry ! for cnt in range(len(fmtstring)): ! if fmtstring[cnt] != '': ! if cnt == 0: ! outfd.write(' - ' + fmtstring[cnt] + '\n') ! else: ! outfd.write(' ' + fmtstring[cnt] + '\n') ! ! # then write out all the remaining entries ! ln = infd.readline() ! while ln: ! outfd.write(ln) ! ln = infd.readline() ! ! infd.close() ! outfd.close() ! ! os.unlink(chglog) ! os.rename(chglog + '-new', chglog) ! def on_menuToolsLogEdit_command(self, event): # edit changelog, create it if it doesn't exist template = {} ! template['name'] = self.components.projectName.text ! template['major'] = self.components.majorVersion.value ! template['minor'] = self.components.minorVersion.value ! template['fix'] = self.components.fixNumber.value chglog = os.path.join(self.components.baseDir.text, 'changelog.txt') *************** *** 143,147 **** fd = open(chglog, 'w') tmplfile = os.path.join('templates', 'changelog.txt') ! chglogData = open(tmplfile, 'r').read() % template fd.write(chglogData) fd.close() --- 172,177 ---- fd = open(chglog, 'w') tmplfile = os.path.join('templates', 'changelog.txt') ! chglogData = open(tmplfile, 'r').read() ! chglogData = chglogData % template fd.write(chglogData) fd.close() *************** *** 151,156 **** def on_doHelpAbout_command(self, event): ! # put your About box here ! pass ########################################################################## --- 181,187 ---- def on_doHelpAbout_command(self, event): ! dlg = HTMLHelp(self) ! dlg.showModal() ! dlg.destroy() ########################################################################## *************** *** 159,195 **** ########################################################################## def on_newBtn_command(self, event): if self.documentChanged: save = self.saveChanges() ! print 'save came back as %s' % save ! if save == "Cancel": ! pass # don't do anything, just go back to editing ! elif save == "No": ! self.newFile() # any changes will be lost else: if self.documentPath is None: ! if self.on_menuFileSaveAs_select(None): self.newFile() else: self.saveFile(self.documentPath) ! dlg = newProjectWizard(self) ! dlg.ShowModal() ! result = dlg.getResult() ! dlg.Destroy() ! self.newFile(result) ! else: ! # don't need to save, so launch the new project wizard ! dlg = newProjectWizard(self) ! dlg.ShowModal() ! result = dlg.getResult() ! dlg.Destroy() ! self.newFile(result) def on_openBtn_command(self, event): # should probably have an alert dialog here # warning about saving the current file before opening another one if self.documentChanged: save = self.saveChanges() ! if save == "Cancel": return # don't do anything, just go back to editing ! elif save == "No": pass # any changes will be lost else: --- 190,222 ---- ########################################################################## def on_newBtn_command(self, event): + print 'in newBtn, self.documentChanged is [%s]' % self.documentChanged if self.documentChanged: save = self.saveChanges() ! if save == wx.ID_CANCEL: ! return # don't do anything, just go back to editing ! elif save == wx.ID_NO: ! pass # any changes will be lost else: if self.documentPath is None: ! if not self.on_menuFileSaveAs_select(None): return else: self.saveFile(self.documentPath) ! ! # launch the new project wizard ! dlg = newProjectWizard(self) ! dlg.ShowModal() ! result = dlg.getResult() ! if result.accepted: self.newFile(result) ! dlg.Destroy() def on_openBtn_command(self, event): + print 'in openBtn, self.documentChanged is [%s]' % self.documentChanged # should probably have an alert dialog here # warning about saving the current file before opening another one if self.documentChanged: save = self.saveChanges() ! if save == wx.ID_CANCEL: return # don't do anything, just go back to editing ! elif save == wx.ID_NO: pass # any changes will be lost else: *************** *** 200,203 **** --- 227,231 ---- self.saveFile(self.documentPath) + #launch a file open dialog wildcard = "Project files (*.pmr)|*.pmr;*.PMR|All files (*.*)|*.*" result = dialog.openFileDialog(wildcard=wildcard) *************** *** 233,237 **** if result.paths[0] != self.components.projectIcon.text: self.components.projectIcon.text = result.paths[0] ! self.documentChanged = 1 def on_baseDirBtn_mouseClick(self, event): --- 261,265 ---- if result.paths[0] != self.components.projectIcon.text: self.components.projectIcon.text = result.paths[0] ! self.documentChanged = True def on_baseDirBtn_mouseClick(self, event): *************** *** 243,247 **** if result.path != old: self.components.baseDir.text = result.path ! self.documentChanged = 1 def on_mainScriptBtn_mouseClick(self, event): --- 271,275 ---- if result.path != old: self.components.baseDir.text = result.path ! self.documentChanged = True def on_mainScriptBtn_mouseClick(self, event): *************** *** 253,257 **** if result.accepted: p = os.path.basename(result.paths[0]) - print result.__dict__ if p != old: if p in self.components.scriptList.items: --- 281,284 ---- *************** *** 261,265 **** else: self.components.mainScript.text = p ! self.documentChanged = 1 def on_scriptAddBtn_mouseClick(self, event): --- 288,292 ---- else: self.components.mainScript.text = p ! self.documentChanged = True def on_scriptAddBtn_mouseClick(self, event): *************** *** 285,289 **** current.append(path) current.sort() ! self.documentChanged = 1 if self.documentChanged: self.components.scriptList.items = current --- 312,316 ---- current.append(path) current.sort() ! self.documentChanged = True if self.documentChanged: self.components.scriptList.items = current *************** *** 385,391 **** if self.documentChanged: save = self.saveChanges() ! if save == "Cancel": return # don't do anything, just go back to editing ! elif save == "No": pass # any changes will be lost else: --- 412,418 ---- if self.documentChanged: save = self.saveChanges() ! if save == wx.ID_CANCEL: return # don't do anything, just go back to editing ! elif save == wx.ID_NO: pass # any changes will be lost else: *************** *** 396,399 **** --- 423,435 ---- self.saveFile(self.documentPath) + # give a warning message if the debug and/or console options + # are switched on in project properties. + if self.project.getboolean('Project', 'console') or self.project.getboolean('Project', 'debug'): + txt = 'Please note that you currently have either the debug and/or the console option(s)' + txt += ' switched on in the properties for this project.\n\nYou should switch these off' + txt += ' prior to building the final version of your application' + title = 'Project options warning!' + bull = dialog.alertDialog(self, wrap_string(txt, 70), title) + # window for progress marks and output messages self.outputWindow.Show() *************** *** 404,461 **** self.outputWindow.Update() self.outputWindow.Refresh() ! specfile = self.components.projectName.text + '.spec' ! specfile = os.path.join(self.components.baseDir.text, specfile) ! self.buildSpecFile(specfile) self.outputWindow.components.txt1b.visible = True # rebuild the versioninfo file self.outputWindow.components.txt2a.visible = True self.outputWindow.Update() ! VINFO = open(os.path.join('templates', 'versioninfo.txt')).read() ! vinfo = {} ! #print self.project.__dict__ ! vinfo['major'] = self.project.get('Project', 'majorversion') ! vinfo['minor'] = self.project.get('Project', 'minorversion') ! vinfo['fix'] = self.project.get('Project', 'fixnumber') ! vinfo['build'] = str('%04d' % self.project.getint('Project', 'build')) ! vinfo['name'] = self.project.get('Project', 'name') ! vinfo['date'] = time.strftime('%Y%b%d').upper() ! vinfo['publisher'] = self.project.get('Project', 'publisher') ! vinfo['desc'] = self.project.get('Project', 'projectdesc') ! ! versionfile = os.path.join(self.components.baseDir.text, 'versioninfo.txt') ! fd = open(versionfile, 'w') ! fd.write(VINFO % vinfo) ! fd.close() self.outputWindow.components.txt2b.visible = True ! # rebuild the application. installer doesn't take too kindly to ! # having its stdin/stdout/stderr manipulated, so we have to redirect ! # all output to a temporary file and read the results from there ! # when done self.outputWindow.components.txt3a.visible = True self.outputWindow.Update() ! builder = os.path.join(self.cfg.get('ConfigData', 'installerpath'), 'Build.py') tfile = 'pmbuild.out' ! buildCommand = builder + ' ' + specfile + ' -o ' + os.path.join(self.components.baseDir.text, self.project.get('Project','buildfilespath')) ! buildCommand += ' > ' + tfile ! os.system(buildCommand) fd = open(tfile, 'r') result = fd.readline() while result: self.outputWindow.addLine(result) result = fd.readline() fd.close() - self.outputWindow.components.txt3b.visible = True - self.outputWindow.Update() ! # rebuild the Inno script file ! self.outputWindow.components.txt4a.visible = True ! self.outputWindow.Update() inno = [] ! innofile = self.components.projectName.text + '-new.iss' innofile = os.path.join(self.components.baseDir.text, innofile) ! inno.append('; script auto-generated by PROJECTMANAGER - do not edit!') inno.append('') inno.append('[Setup]') --- 440,526 ---- self.outputWindow.Update() self.outputWindow.Refresh() ! self.buildSpecFile() self.outputWindow.components.txt1b.visible = True # rebuild the versioninfo file self.outputWindow.components.txt2a.visible = True + self.outputWindow.Refresh() self.outputWindow.Update() ! self.buildVersionFile() self.outputWindow.components.txt2b.visible = True ! # rebuild the application self.outputWindow.components.txt3a.visible = True + self.outputWindow.components.txt3c.visible = True self.outputWindow.Update() ! self.buildApplication() ! self.outputWindow.components.txt3c.visible = False ! self.outputWindow.components.txt3b.visible = True ! self.outputWindow.Update() ! ! # rebuild the Inno script file ! self.outputWindow.components.txt4a.visible = True ! self.outputWindow.components.txt4c.visible = True ! self.outputWindow.Update() ! self.buildInnoFile() ! ! # rebuild the distributable ! self.buildDistFile() ! self.outputWindow.components.txt4c.visible = False ! self.outputWindow.components.txt4b.visible = True ! self.outputWindow.Update() ! self.outputWindow.Raise() ! ! # increment the build number to finish ! build = self.project.getint('Project', 'build') ! build += 1 ! self.project.set('Project', 'build', str(build)) ! self.statusBar.text = self.updateStatusBar() ! self.documentChanged = True ! ! def buildDistFile(self): ! # rebuild the distributable ! innofile = self.components.projectName.text + '.iss' ! innofile = os.path.join(self.components.baseDir.text, innofile) tfile = 'pmbuild.out' ! ! batchinfo = {} ! batchinfo['compilerpath'] = self.cfg.get('ConfigData', 'compilerpath') ! batchinfo['specpath'] = innofile ! batchinfo['tfile'] = tfile ! ! pbatch = """@echo off ! "%(compilerpath)s" "%(specpath)s" > %(tfile)s 2>&1 ! """ % batchinfo ! ! fd = open('pmbuild.bat', 'w') ! fd.write(pbatch) ! fd.close() ! ! os.system('pmbuild.bat') ! fd = open(tfile, 'r') + msgline = '' + capturing = False result = fd.readline() while result: + if capturing: msgline += '\n\n' + result + if result.startswith('Successful compile'): + msgline = result + capturing = True self.outputWindow.addLine(result) result = fd.readline() fd.close() ! if msgline != '': ! title = 'Build successful!' ! bull = dialog.alertDialog(self, wrap_string(msgline, 90), title) + def buildInnoFile(self): + # rebuild the Inno Setup spec file inno = [] ! innofile = self.components.projectName.text + '.iss' innofile = os.path.join(self.components.baseDir.text, innofile) ! inno.append('; script auto-generated by standaloneBuilder - do not edit!') inno.append('') inno.append('[Setup]') *************** *** 467,478 **** inno.append('AppVerName=%s' % appverstring) inno.append('AppPublisher=%s' % self.project.get('Project', 'publisher')) ! inno.append('AppPublisherURL=%s' % self.project.get('Project', 'appurl')) ! inno.append('AppSupportURL=%s' % self.project.get('Project', 'appurl')) ! inno.append('AppUpdatesURL=%s' % self.project.get('Project', 'appurl')) inno.append('DefaultDirName={pf}%s' % (chr(92) + self.project.get('Project', 'name'))) inno.append('DefaultGroupName=%s' % self.project.get('Project', 'name')) inno.append('AllowNoIcons=yes') ! licencefile = os.path.join(self.project.get('Project', 'basepath'),self.project.get('Project', 'applicence')) ! inno.append('LicenseFile=%s' % licencefile) infofile = os.path.join(self.project.get('Project', 'basepath'), 'changelog.txt') inno.append('InfoBeforeFile=%s' % infofile) --- 532,553 ---- inno.append('AppVerName=%s' % appverstring) inno.append('AppPublisher=%s' % self.project.get('Project', 'publisher')) ! ! if self.project.get('Project', 'appurl') != '': ! inno.append('AppPublisherURL=%s' % self.project.get('Project', 'appurl')) ! ! if self.project.get('Project', 'appurl') != '': ! inno.append('AppSupportURL=%s' % self.project.get('Project', 'appurl')) ! ! if self.project.get('Project', 'appurl') != '': ! inno.append('AppUpdatesURL=%s' % self.project.get('Project', 'appurl')) ! inno.append('DefaultDirName={pf}%s' % (chr(92) + self.project.get('Project', 'name'))) inno.append('DefaultGroupName=%s' % self.project.get('Project', 'name')) inno.append('AllowNoIcons=yes') ! ! if self.project.get('Project', 'applicence') != '': ! licencefile = os.path.join(self.project.get('Project', 'basepath'),self.project.get('Project', 'applicence')) ! inno.append('LicenseFile=%s' % licencefile) ! infofile = os.path.join(self.project.get('Project', 'basepath'), 'changelog.txt') inno.append('InfoBeforeFile=%s' % infofile) *************** *** 507,517 **** fd.close() ! # rebuild the distributable ! self.outputWindow.components.txt4b.visible = True ! self.outputWindow.Update() tfile = 'pmbuild.out' ! cmd = '"%s" "%s" > %s' % (self.cfg.get('ConfigData', 'compilerpath'), innofile, tfile) ! print cmd ! os.system(cmd) fd = open(tfile, 'r') result = fd.readline() --- 582,598 ---- fd.close() ! def buildApplication(self): ! # rebuild the application. installer doesn't take too kindly to ! # having its stdin/stdout/stderr manipulated, so we have to redirect ! # all output to a temporary file and read the results from there ! # when done ! builder = os.path.join(self.cfg.get('ConfigData', 'installerpath'), 'Build.py') tfile = 'pmbuild.out' ! specfile = self.components.projectName.text + '.spec' ! specfile = os.path.join(self.components.baseDir.text, specfile) ! buildCommand = builder + ' ' + specfile + ' -o ' + os.path.join(self.components.baseDir.text, self.project.get('Project','buildfilespath')) ! buildCommand += ' > ' + tfile ! print 'running [%s]' % buildCommand ! os.system(buildCommand) fd = open(tfile, 'r') result = fd.readline() *************** *** 520,549 **** result = fd.readline() fd.close() ! #stdin, stdout, stderr = os.popen3(cmd) ! #result = stdout.readline() ! #result2 = stderr.readline() ! #while result or result2: ! # self.outputWindow.addLine(result) ! # self.outputWindow.addLine(result2) ! #stdin.close() ! #stdout.close() ! #stderr.close() ! #print cmd ! # increment the build number to finish ! build = self.project.getint('Project', 'build') ! build += 1 ! self.project.set('Project', 'build', str(build)) ! self.statusBar.text = self.updateStatusBar() ! self.documentChanged = True - def buildSpecFile(self, specfile): spec = [] versionfile = self.project.get('Project', 'basepath') + os.sep + 'versioninfo.txt' spec.append("p = '%s%s' # defines project root directory" % (self.project.get('Project', 'basepath'), os.sep)) spec.append("a = Analysis([os.path.join(HOMEPATH,'support\\_mountzlib.py'),") spec.append(" os.path.join(HOMEPATH,'support\\useUnicode.py'),") ! spec.append(" p + 'pimp.py'],") spec.append(" pathex=['%s'])" % self.cfg.get('ConfigData', 'installerpath')) spec.append("pyz = PYZ(a.pure)") --- 601,636 ---- result = fd.readline() fd.close() ! ! def buildVersionFile(self): ! # build a versioninfo file and write it to disk ! VINFO = open(os.path.join('templates', 'versioninfo.txt')).read() ! vinfo = {} ! vinfo['major'] = self.project.get('Project', 'majorversion') ! vinfo['minor'] = self.project.get('Project', 'minorversion') ! vinfo['fix'] = self.project.get('Project', 'fixnumber') ! vinfo['build'] = self.project.getint('Project', 'build') ! vinfo['name'] = self.project.get('Project', 'name') ! vinfo['date'] = time.strftime('%Y%b%d').upper() ! vinfo['publisher'] = self.project.get('Project', 'publisher') ! vinfo['desc'] = self.project.get('Project', 'projectdesc') ! vinfo['companyname'] = self.cfg.get('ConfigData', 'companyname') + versionfile = os.path.join(self.components.baseDir.text, 'versioninfo.txt') + fd = open(versionfile, 'w') + fd.write(VINFO % vinfo) + fd.close() ! def buildSpecFile(self): ! # build a spec file and write it to disk ! specfile = self.components.projectName.text + '.spec' ! specfile = os.path.join(self.components.baseDir.text, specfile) spec = [] versionfile = self.project.get('Project', 'basepath') + os.sep + 'versioninfo.txt' + spec.append("p = '%s%s' # defines project root directory" % (self.project.get('Project', 'basepath'), os.sep)) spec.append("a = Analysis([os.path.join(HOMEPATH,'support\\_mountzlib.py'),") spec.append(" os.path.join(HOMEPATH,'support\\useUnicode.py'),") ! spec.append(" p + '%s']," % self.components.mainScript.text) spec.append(" pathex=['%s'])" % self.cfg.get('ConfigData', 'installerpath')) spec.append("pyz = PYZ(a.pure)") *************** *** 591,595 **** def on_releaseBtn_mouseClick(self, event): ! pass def on_specBtn_mouseClick(self, event): --- 678,689 ---- def on_releaseBtn_mouseClick(self, event): ! # under Linux, need to build a tarball and put it in the tarballs ! # folder, under windows we do a final rebuild using the same ! # code as above. In either case, we increment the minor portion ! # of the version number by 1 ! if sys.platform.startswith('linux'): ! pass ! else: ! pass def on_specBtn_mouseClick(self, event): *************** *** 634,640 **** break ! print 'using config file %s' % self.CONFIG_FILE ! ! # create a default config the very first time we run standaloneBuilder if not os.path.exists(self.CONFIG_FILE): self.createConfig() --- 728,732 ---- break ! # create a default config the very first time we run projectmanager if not os.path.exists(self.CONFIG_FILE): self.createConfig() *************** *** 646,654 **** def createConfig(self): title = 'Initial setup' ! txt = 'Since this is the first time you have run standaloneBuilder, you need to configure ' txt += 'the program according to your preferences. Most users should find that the ' txt += 'default settings are satisfactory. On this system, settings will be stored ' txt += 'in "%s". In the preferences dialog, you can click the "?" buttons to get ' % self.CONFIG_FILE ! txt += 'help with any of the options. Click OK to begin configuring standaloneBuilder.' bull = dialog.alertDialog(self, wrap_string(txt, 60), title) --- 738,746 ---- def createConfig(self): title = 'Initial setup' ! txt = 'Since this is the first time you have run projectmanager, you need to configure ' txt += 'the program according to your preferences. Most users should find that the ' txt += 'default settings are satisfactory. On this system, settings will be stored ' txt += 'in "%s". In the preferences dialog, you can click the "?" buttons to get ' % self.CONFIG_FILE ! txt += 'help with any of the options. Click OK to begin configuring projectmanager.' bull = dialog.alertDialog(self, wrap_string(txt, 60), title) *************** *** 682,685 **** --- 774,778 ---- self.cfg.set('ConfigData', 'compilerpath', '') self.cfg.set('ConfigData', 'publisher', '') + self.cfg.set('ConfigData', 'companyname', '') if sys.platform.startswith('linux') or sys.platform.startswith('freebsd'): *************** *** 694,698 **** if dlg.ShowModal() != wx.ID_OK: title = 'Preferences not saved!' ! txt = 'You must configure your preferences before using standaloneBuilder' bull = dialog.alertDialog(self, wrap_string(txt, 60), title) dlg.destroy() --- 787,791 ---- if dlg.ShowModal() != wx.ID_OK: title = 'Preferences not saved!' ! txt = 'You must configure your preferences before using projectmanager' bull = dialog.alertDialog(self, wrap_string(txt, 60), title) dlg.destroy() *************** *** 729,733 **** x.append(path) x.sort() ! self.documentChanged = 1 return x --- 822,826 ---- x.append(path) x.sort() ! self.documentChanged = True return x *************** *** 737,741 **** if selected != item: newlist.append(item) ! if newlist != items: self.documentChanged = 1 return newlist --- 830,834 ---- if selected != item: newlist.append(item) ! if newlist != items: self.documentChanged = True return newlist *************** *** 769,779 **** self.project.set('Project', 'pixmapspath', 'pixmaps') self.project.set('Project', 'tarballspath', 'tarballs') ! self.project.set('Project', 'onedir', 1) ! self.project.set('Project', 'ascii', 0) ! self.project.set('Project', 'striplib', 0) ! self.project.set('Project', 'console', 1) # best to have a coonsole for new projects! ! self.project.set('Project', 'optimize', 1) ! self.project.set('Project', 'compress', 0) ! self.project.set('Project', 'debug', 0) x = os.path.join('build', '%s.iss' % self.components.projectName.text) --- 862,879 ---- self.project.set('Project', 'pixmapspath', 'pixmaps') self.project.set('Project', 'tarballspath', 'tarballs') ! self.project.set('Project', 'onedir', '1') ! self.project.set('Project', 'ascii', '0') ! self.project.set('Project', 'striplib', '0') ! self.project.set('Project', 'console', '1') # best to have a console for new projects! ! self.project.set('Project', 'optimize', '1') ! self.project.set('Project', 'compress', '0') ! self.project.set('Project', 'debug', '0') ! self.project.set('Project', 'publisher', self.cfg.get('ConfigData', 'publisher')) ! self.project.set('Project', 'appurl', '') ! ! # license file has to be the full path ! lfile = os.path.join(wizResult.baseDir, 'doc') ! lfile = os.path.join(lfile, 'gpl.txt') ! self.project.set('Project', 'applicence', lfile) x = os.path.join('build', '%s.iss' % self.components.projectName.text) *************** *** 783,793 **** self.project.set('Project', 'specfile', x) ! self.project.set('Otherfiles', '1', os.path.join('doc', 'about.html')) ! self.project.set('Otherfiles', '2', os.path.join('doc', 'author.html')) ! self.project.set('Otherfiles', '3', os.path.join('doc', 'gpl.txt')) for comp in self.components.keys(): self.components[comp].enabled = 1 ! def UI2Project(self): # update the project object --- 883,970 ---- self.project.set('Project', 'specfile', x) ! self.project.set('Otherfiles', '0', os.path.join('doc', 'about.html')) ! self.project.set('Otherfiles', '1', os.path.join('doc', 'author.html')) ! self.project.set('Otherfiles', '2', os.path.join('doc', 'gpl.txt')) ! self.project.set('Otherfiles', '3', os.path.join('doc', 'gpl.html')) ! self.project.set('Otherfiles', '4', 'changelog.txt') ! self.project.set('Otherfiles', '5', 'readme.txt') ! ! self.createProject() ! self.Project2UI() for comp in self.components.keys(): self.components[comp].enabled = 1 ! ! def createProject(self): ! # create all the folders and other gubbins ! basepath = self.project.get('Project', 'basepath') ! ! os.mkdir(os.path.join(basepath, self.project.get('Project', 'buildfilespath'))) ! os.mkdir(os.path.join(basepath, self.project.get('Project', 'distfilespath'))) ! os.mkdir(os.path.join(basepath, self.project.get('Project', 'pixmapspath'))) ! os.mkdir(os.path.join(basepath, self.project.get('Project', 'tarballspath'))) ! os.mkdir(os.path.join(basepath, self.project.get('Project', 'docfilespath'))) ! ! # copy in various things from templates ! templatedir = os.path.dirname(os.path.abspath(__file__)) ! templatedir = os.path.join(templatedir, 'templates') ! ! vinfo = {} ! vinfo['major'] = self.project.get('Project', 'majorversion') ! vinfo['minor'] = self.project.get('Project', 'minorversion') ! vinfo['fix'] = self.project.get('Project', 'fixnumber') ! vinfo['build'] = str('%04d' % self.project.getint('Project', 'build')) ! vinfo['name'] = self.project.get('Project', 'name') ! vinfo['date'] = time.strftime('%Y%b%d').upper() ! vinfo['publisher'] = self.project.get('Project', 'publisher') ! vinfo['desc'] = self.project.get('Project', 'projectdesc') ! vinfo['appurl'] = self.project.get('Project', 'appurl') ! ! # HTML about page ! VINFO = open(os.path.join(templatedir, 'about.html')).read() ! afile = os.path.join(basepath, self.project.get('Project', 'docfilespath')) ! afile = os.path.join(afile, 'about.html') ! fd = open(afile, 'w') ! fd.write(VINFO % vinfo) ! fd.close() ! ! # HTML author page ! VINFO = open(os.path.join(templatedir, 'author.html')).read() ! afile = os.path.join(basepath, self.project.get('Project', 'docfilespath')) ! afile = os.path.join(afile, 'author.html') ! fd = open(afile, 'w') ! fd.write(VINFO % vinfo) ! fd.close() ! ! # HTML GPL license text page ! VINFO = open(os.path.join(templatedir, 'gpl.html')).read() ! afile = os.path.join(basepath, self.project.get('Project', 'docfilespath')) ! afile = os.path.join(afile, 'gpl.html') ! fd = open(afile, 'w') ! fd.write(VINFO % vinfo) ! fd.close() ! ! # plaintext GPL license text page ! VINFO = open(os.path.join(templatedir, 'gpl.txt')).read() ! afile = os.path.join(basepath, self.project.get('Project', 'docfilespath')) ! afile = os.path.join(afile, 'gpl.txt') ! fd = open(afile, 'w') ! fd.write(VINFO % vinfo) ! fd.close() ! ! # changelog template ! VINFO = open(os.path.join(templatedir, 'changelog.txt')).read() ! afile = os.path.join(basepath, 'changelog.txt') ! fd = open(afile, 'w') ! fd.write(VINFO % vinfo) ! fd.close() ! ! # readme template ! VINFO = open(os.path.join(templatedir, 'readme.txt')).read() ! afile = os.path.join(basepath, 'readme.txt') ! fd = open(afile, 'w') ! fd.write(VINFO % vinfo) ! fd.close() ! def UI2Project(self): # update the project object *************** *** 941,945 **** msg = "The text in the %s file has changed.\n\nDo you want to save the changes?" % filename result = dialog.messageDialog(self, msg, 'textEditor', wx.ICON_EXCLAMATION | wx.YES_NO | wx.CANCEL) ! print 'result is %s' % result return result.returned --- 1118,1122 ---- msg = "The text in the %s file has changed.\n\nDo you want to save the changes?" % filename result = dialog.messageDialog(self, msg, 'textEditor', wx.ICON_EXCLAMATION | wx.YES_NO | wx.CANCEL) ! print 'result is [%s]' % result return result.returned *************** *** 964,968 **** self.project.read(path) self.documentPath = path ! self.documentChanged = 0 self.SetTitle(os.path.split(path)[-1] + ' - ' + self.startTitle) self.Project2UI() --- 1141,1145 ---- self.project.read(path) self.documentPath = path ! self.documentChanged = False self.SetTitle(os.path.split(path)[-1] + ' - ' + self.startTitle) self.Project2UI() *************** *** 979,983 **** string += str(self.components.fixNumber.value) string += ' (Build ' + self.project.get('Project', 'build') + ')' - print string return string --- 1156,1159 ---- *************** *** 989,993 **** f.close() self.documentPath = path ! self.documentChanged = 0 self.SetTitle(os.path.split(path)[-1] + ' - ' + self.startTitle) self.statusBar.text = self.updateStatusBar() --- 1165,1169 ---- f.close() self.documentPath = path ! self.documentChanged = False self.SetTitle(os.path.split(path)[-1] + ' - ' + self.startTitle) self.statusBar.text = self.updateStatusBar() *************** *** 996,999 **** if __name__ == '__main__': ! app = model.Application(standaloneBuilder) app.MainLoop() --- 1172,1175 ---- if __name__ == '__main__': ! app = model.Application(PM) app.MainLoop() Index: outputWindow.rsrc.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/outputWindow.rsrc.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** outputWindow.rsrc.py 1 Apr 2005 09:58:50 -0000 1.1 --- outputWindow.rsrc.py 9 Apr 2005 09:30:36 -0000 1.2 *************** *** 8,26 **** 'visible':0, - 'menubar': {'type':'MenuBar', - 'menus': [ - {'type':'Menu', - 'name':'menuFile', - 'label':'&File', - 'items': [ - {'type':'MenuItem', - 'name':'menuFileExit', - 'label':'E&xit', - 'command':'exit', - }, - ] - }, - ] - }, 'components': [ --- 8,11 ---- *************** *** 44,47 **** --- 29,39 ---- {'type':'StaticText', + 'name':'txt4c', + 'position':(145, 70), + 'text':'please wait...', + 'visible':False, + }, + + {'type':'StaticText', 'name':'txt4b', 'position':(145, 70), *************** *** 59,62 **** --- 51,61 ---- {'type':'StaticText', + 'name':'txt3c', + 'position':(145, 50), + 'text':'please wait...', + 'visible':False, + }, + + {'type':'StaticText', 'name':'txt3b', 'position':(145, 50), Index: newProjectWizardPage4.rsrc.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/newProjectWizardPage4.rsrc.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** newProjectWizardPage4.rsrc.py 1 Apr 2005 09:58:50 -0000 1.1 --- newProjectWizardPage4.rsrc.py 9 Apr 2005 09:30:36 -0000 1.2 *************** *** 57,60 **** --- 57,74 ---- }, + {'type':'StaticText', + 'name':'page4text5', + 'position':(175, 125), + 'text':'After the project has been created, you should open the project properties page and', + 'userdata':'page4', + }, + + {'type':'StaticText', + 'name':'page4text6', + 'position':(175, 140), + 'text':'ensure that the settings are to your liking.', + 'userdata':'page4', + }, + ] # end components } # end CustomDialog |
From: Phil E. <l2...@us...> - 2005-04-09 09:30:45
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/doc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31166/doc Added Files: about.html author.html license.html license.txt Log Message: Few more fixes to standaloneBuilder app --- NEW FILE: license.html --- <html> <head> <title>PythonCard License</title> </head> <body> <pre> Copyright (c) 2001-2004 PythonCard developers All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The PythonCard developers and contributors are; Kevin Altis - developer, project lead, <al...@se...> Rowland Smith - developer Patrick K O'Brien - developer, PyCrust, <po...@or...> Neil Hodgson - developer, wxStyledTextCtrl (Scintilla), <ne...@sc...> Robin Dunn - developer, wxPython, <ro...@al...> Andy Todd - developer, dbBrowser sample, gadflyDatabase.py, documentation, <an...@ha...> Arlo Belshee - developer, lsystem sample Kim Wallmark - developer, lsystem sample Phil Edwards - developer, documentation, pysshed sample, Linux RPMs, <ph...@li...> Dan Winkler - developer, textIndexer sample, co-Godfather ;-) Kenneth Pronovici - Debian builds Dan Shafer - documentation, counter sample Thomas Heller - py2exe scripts, Windows distutils script Simon Kittle - textRouter sample Juergen Rauch - custdb sample Richard Wolff Randy Lea - rpn sample Riaan Booysen - STCStyleEditor.py David McNab - documentation David Primmer - documentation Fred Pacquier - fpop sample Gene Cash - EXIF.py Jon Dyte Roman Suzi William Volkman - multicolumnexample sample Bruce Eckel - moderator sample Tom Jacobs - montyhall sample Stephen Waterbury - twistedEchoClient sample Ward Cunningham - lsystem sample Alex Tweedly - resourceEditor additions </pre> </body> </html> --- NEW FILE: license.txt --- Copyright (c) 2001-2004 PythonCard developers All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The PythonCard developers and contributors are; Kevin Altis - developer, project lead, <al...@se...> Rowland Smith - developer Patrick K O'Brien - developer, PyCrust, <po...@or...> Neil Hodgson - developer, wxStyledTextCtrl (Scintilla), <ne...@sc...> Robin Dunn - developer, wxPython, <ro...@al...> Andy Todd - developer, dbBrowser sample, gadflyDatabase.py, documentation, <an...@ha...> Arlo Belshee - developer, lsystem sample Kim Wallmark - developer, lsystem sample Phil Edwards - developer, documentation, pysshed sample, Linux RPMs, <ph...@li...> Dan Winkler - developer, textIndexer sample, co-Godfather ;-) Kenneth Pronovici - Debian builds Dan Shafer - documentation, counter sample Thomas Heller - py2exe scripts, Windows distutils script Simon Kittle - textRouter sample Juergen Rauch - custdb sample Richard Wolff Randy Lea - rpn sample Riaan Booysen - STCStyleEditor.py David McNab - documentation David Primmer - documentation Fred Pacquier - fpop sample Gene Cash - EXIF.py Jon Dyte Roman Suzi William Volkman - multicolumnexample sample Bruce Eckel - moderator sample Tom Jacobs - montyhall sample Stephen Waterbury - twistedEchoClient sample Ward Cunningham - lsystem sample Alex Tweedly - resourceEditor additions --- NEW FILE: author.html --- <font face="verdana"> <p>standaloneBuilder was developed by Phil Edwards <ph...@li...> I would like to also extend my grateful thanks to the following:</p> <br></br> <div align="center"> <font face="verdana" size="2"> <table width="90%%"> <tr> <td> <hr> Kevin Altis <a href="mailto:al...@se...">al...@se...</a>, without whose excellent work on PythonCard none of this would be possible. </td> </tr> <tr> <td> <hr> </td> </tr> </table> </div> </font> --- NEW FILE: about.html --- <html> <head> </head> <body bgcolor="7f7f7f"> <font face="verdana" size="2"> <table border="0" width="100%"> <tr> <td colspan="2"> <b>standaloneBuilder Version 0.1.1</b> </td> </tr> <tr> <td align="center" valign="top"> </td> <td valign="top"> standaloneBuilder is designed to herlp simplify the process of getting a PythonCard applpication distributed in standalone form, without the end user being required to install PythonCard, wxPython or even Python itself. <p>Developed using the PythonCard GUI toolkit and wxPython, <a href="http://pythoncard.sourceforge.net">http://pythoncard.sourceforge.net</a></p> </td> </tr> </table> </font> </body> </html> |