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-04-09 09:24:45
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/doc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27432/doc Log Message: Directory /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/doc added to the repository |
From: Kevin A. <ka...@us...> - 2005-04-05 18:45:09
|
Update of /cvsroot/pythoncard/PythonCard/samples/minimalStandalone In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26892 Modified Files: setup.py Log Message: updated setup.py to support both py2app and py2exe based on Bob's script Index: setup.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/samples/minimalStandalone/setup.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** setup.py 26 Mar 2004 16:37:37 -0000 1.2 --- setup.py 5 Apr 2005 18:44:54 -0000 1.3 *************** *** 13,21 **** from distutils.core import setup ! import py2exe setup( name = "minimal", ! console = ["minimal.py"], ! data_files = [ (".", ["readme.txt", "minimal.rsrc.py"]) ] ) - --- 13,27 ---- from distutils.core import setup ! import sys ! ! if sys.platform == 'darwin': ! import py2app ! buildstyle = 'app' ! else: ! import py2exe ! buildstyle = 'console' setup( name = "minimal", ! data_files = [ (".", ["readme.txt", "minimal.rsrc.py"]) ], ! **{buildstyle: ["minimal.py"]} ) |
From: Kevin A. <ka...@us...> - 2005-04-04 20:27:31
|
Update of /cvsroot/pythoncard/PythonCard/docs/html In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22536 Modified Files: sidebar.php Log Message: added dev archive links Index: sidebar.php =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/docs/html/sidebar.php,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** sidebar.php 4 Apr 2005 20:22:31 -0000 1.6 --- sidebar.php 4 Apr 2005 20:27:22 -0000 1.7 *************** *** 34,37 **** --- 34,39 ---- <li><a href="http://sourceforge.net/tracker/?atid=369015&group_id=19015&func=browse">Feature Requests</a></li> <li><a href="http://lists.sourceforge.net/lists/listinfo/pythoncard-devel">Developer Mailing list</a></li> + <li> <a href="http://news.gmane.org/gmane.comp.python.pythoncard.devel">Archive @ gmane</a></li> + <li> <a href="http://sourceforge.net/mailarchive/forum.php?forum=pythoncard-devel">Archive @ SF</a></li> </ul> <h4>Exits</h4> |
From: Kevin A. <ka...@us...> - 2005-04-04 20:22:40
|
Update of /cvsroot/pythoncard/PythonCard/docs/html In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21293/html Modified Files: sidebar.php Log Message: added dev list Index: sidebar.php =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/docs/html/sidebar.php,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** sidebar.php 18 Oct 2004 17:55:57 -0000 1.5 --- sidebar.php 4 Apr 2005 20:22:31 -0000 1.6 *************** *** 33,36 **** --- 33,37 ---- <li><a href='http://sourceforge.net/tracker/?atid=119015&group_id=19015&func=browse'>Bug Reports</a></li> <li><a href="http://sourceforge.net/tracker/?atid=369015&group_id=19015&func=browse">Feature Requests</a></li> + <li><a href="http://lists.sourceforge.net/lists/listinfo/pythoncard-devel">Developer Mailing list</a></li> </ul> <h4>Exits</h4> |
From: Kevin A. <ka...@us...> - 2005-04-01 16:29:30
|
Update of /cvsroot/pythoncard/PythonCard/tools/resourceEditor In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23409 Modified Files: resourceEditor.rsrc.py Log Message: Delete shortcut changed to Ctrl+D, Duplicate is Ctrl+U Index: resourceEditor.rsrc.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/tools/resourceEditor/resourceEditor.rsrc.py,v retrieving revision 1.54 retrieving revision 1.55 diff -C2 -d -r1.54 -r1.55 *** resourceEditor.rsrc.py 25 Sep 2004 15:13:25 -0000 1.54 --- resourceEditor.rsrc.py 1 Apr 2005 16:29:19 -0000 1.55 *************** *** 91,100 **** {'type':'MenuItem', 'name':'menuComponentDuplicate', ! 'label':'&Duplicate', 'command':'componentDuplicate', }, {'type':'MenuItem', 'name':'menuComponentDelete', ! 'label':'Delete\tDel', 'command':'componentDelete', }, --- 91,100 ---- {'type':'MenuItem', 'name':'menuComponentDuplicate', ! 'label':'&Duplicate\tCtrl+U', 'command':'componentDuplicate', }, {'type':'MenuItem', 'name':'menuComponentDelete', ! 'label':'Delete\tCtrl+D', 'command':'componentDelete', }, |
From: Phil E. <l2...@us...> - 2005-04-01 09:59:01
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/pixmaps In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1697/pixmaps Added Files: blank.png exit.png new.png newproject.png open.png prefs.png save.png Log Message: Initial checkin of standaloneBuilder app --- NEW FILE: save.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: prefs.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: open.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: blank.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: new.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: newproject.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: exit.png --- (This appears to be a binary file; contents omitted.) |
From: Phil E. <l2...@us...> - 2005-04-01 09:59:01
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/templates In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1697/templates Added Files: versioninfo.txt Log Message: Initial checkin of standaloneBuilder app --- NEW FILE: versioninfo.txt --- 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', ''), 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])]) ] ) |
From: Phil E. <l2...@us...> - 2005-04-01 09:57:52
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/templates In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1274/templates Log Message: Directory /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/templates added to the repository |
From: Phil E. <l2...@us...> - 2005-04-01 09:55:28
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/pixmaps In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32425/pixmaps Log Message: Directory /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder/pixmaps added to the repository |
From: Phil E. <l2...@us...> - 2005-04-01 09:50:37
|
Update of /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29591/standaloneBuilder Log Message: Directory /cvsroot/pythoncard/PythonCard/tools/standaloneBuilder added to the repository |
From: Phil E. <l2...@us...> - 2005-04-01 09:49:56
|
Update of /cvsroot/pythoncard/PythonCard In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28931 Modified Files: EXIF.py Log Message: Updated version from Genes website which should fix the last overflow error when reading EXIF tags Index: EXIF.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/EXIF.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** EXIF.py 17 Jan 2004 20:43:35 -0000 1.3 --- EXIF.py 1 Apr 2005 09:49:43 -0000 1.4 *************** *** 1,13 **** # Library to extract EXIF information in digital camera image files # # Contains code from "exifdump.py" originally written by Thierry Bousch # <bo...@to...> and released into the public domain. # # Updated and turned into general-purpose library by Gene Cash ! # <email gcash cfl.rr.com> # ! # This copyright license is intended to be similar to the FreeBSD license. # ! # Copyright 2002 Gene Cash All rights reserved. # # Redistribution and use in source and binary forms, with or without --- 1,30 ---- # Library to extract EXIF information in digital camera image files # + # To use this library call with: + # f=open(path_name, 'rb') + # tags=EXIF.process_file(f) + # tags will now be a dictionary mapping names of EXIF tags to their + # values in the file named by path_name. You can process the tags + # as you wish. In particular, you can iterate through all the tags with: + # for tag in tags.keys(): + # if tag not in ('JPEGThumbnail', 'TIFFThumbnail', 'Filename', + # 'EXIF MakerNote'): + # print "Key: %s, value %s" % (tag, tags[tag]) + # (This code uses the if statement to avoid printing out a few of the + # tags that tend to be long or boring.) + # + # The tags dictionary will include keys for all of the usual EXIF + # tags, and will also include keys for Makernotes used by some + # cameras, for which we have a good specification. + # # Contains code from "exifdump.py" originally written by Thierry Bousch # <bo...@to...> and released into the public domain. # # Updated and turned into general-purpose library by Gene Cash ! # <email gcash at cfl.rr.com> # ! # This copyright license is intended to be similar to the FreeBSD license. # ! # Copyright 2002 Gene Cash All rights reserved. # # Redistribution and use in source and binary forms, with or without *************** *** 37,40 **** --- 54,67 ---- # wrote it. Also, if it breaks you get to keep both pieces. # + # Patch Contributors: + # * Simon J. Gerraty <sj...@cr...> + # s2n fix & orientation decode + # * John T. Riedl <ri...@cs...> + # Added support for newer Nikon type 3 Makernote format for D70 and some + # other Nikon cameras. + # * Joerg Schaefer <sch...@gm...> + # Fixed subtle bug when faking an EXIF header, which affected maker notes + # using relative offsets, and a fix for Nikon D100. + # # 21-AUG-99 TB Last update by Thierry Bousch to his code. # 17-JAN-02 CEC Discovered code on web. *************** *** 59,66 **** # Added Nikon, Fujifilm, Casio MakerNotes. # 30-NOV-03 CEC Fixed problem with canon_decode_tag() not creating an ! # IFD_Tag() object. Fixed bit shift warning. # - # To do: - # * Better printing of ratios # field type descriptions as (length, abbreviation, full name) tuples --- 86,92 ---- # Added Nikon, Fujifilm, Casio MakerNotes. # 30-NOV-03 CEC Fixed problem with canon_decode_tag() not creating an ! # IFD_Tag() object. ! # 15-FEB-04 CEC Finally fixed bit shift warning by converting Y to 0L. # # field type descriptions as (length, abbreviation, full name) tuples *************** *** 96,100 **** 0x0110: ('Model', ), 0x0111: ('StripOffsets', ), ! 0x0112: ('Orientation', ), 0x0115: ('SamplesPerPixel', ), 0x0116: ('RowsPerStrip', ), --- 122,134 ---- 0x0110: ('Model', ), 0x0111: ('StripOffsets', ), ! 0x0112: ('Orientation', ! {1: 'Horizontal (normal)', ! 2: 'Mirrored horizontal', ! 3: 'Rotated 180', ! 4: 'Mirrored vertical', ! 5: 'Mirrored horizontal then rotated 90 CCW', ! 6: 'Rotated 90 CW', ! 7: 'Mirrored horizontal then rotated 90 CW', ! 8: 'Rotated 90 CCW'}), 0x0115: ('SamplesPerPixel', ), 0x0116: ('RowsPerStrip', ), *************** *** 220,223 **** --- 254,258 ---- 0xA301: ('SceneType', {1: 'Directly Photographed'}), + 0xA302: ('CVAPattern',), } *************** *** 272,278 **** --- 307,324 ---- 0x0007: ('FocusMode', ), 0x0008: ('FlashSetting', ), + 0x0009: ('AutoFlashMode', ), + 0x000B: ('WhiteBalanceBias', ), + 0x000C: ('WhiteBalanceRBCoeff', ), 0x000F: ('ISOSelection', ), + 0x0012: ('FlashCompensation', ), + 0x0013: ('ISOSpeedRequested', ), + 0x0016: ('PhotoCornerCoordinates', ), + 0x0018: ('FlashBracketCompensationApplied', ), + 0x0019: ('AEBracketCompensationApplied', ), 0x0080: ('ImageAdjustment', ), + 0x0081: ('ToneCompensation', ), 0x0082: ('AuxiliaryLens', ), + 0x0083: ('LensType', ), + 0x0084: ('LensMinMaxFocalMaxAperture', ), 0x0085: ('ManualFocusDistance', ), 0x0086: ('DigitalZoomFactor', ), *************** *** 283,286 **** --- 329,346 ---- 0x0300: 'Left', 0x0400: 'Right'}), + 0x0089: ('BracketingMode', + {0x00: 'Single frame, no bracketing', + 0x01: 'Continuous, no bracketing', + 0x02: 'Timer, no bracketing', + 0x10: 'Single frame, exposure bracketing', + 0x11: 'Continuous, exposure bracketing', + 0x12: 'Timer, exposure bracketing', + 0x40: 'Single frame, white balance bracketing', + 0x41: 'Continuous, white balance bracketing', + 0x42: 'Timer, white balance bracketing'}), + 0x008D: ('ColorMode', ), + 0x008F: ('SceneMode?', ), + 0x0090: ('LightingType', ), + 0x0092: ('HueAdjustment', ), 0x0094: ('Saturation', {-3: 'B&W', *************** *** 291,294 **** --- 351,358 ---- 2: '2'}), 0x0095: ('NoiseReduction', ), + 0x00A7: ('TotalShutterReleases', ), + 0x00A9: ('ImageOptimization', ), + 0x00AA: ('Saturation', ), + 0x00AB: ('DigitalVariProgram', ), 0x0010: ('DataDump', ) } *************** *** 357,361 **** 0x0208: ('PictureInfo', ), # print as string ! 0x0209: ('CameraID', lambda x: ''.join(map(chr, x))), 0x0F00: ('DataDump', ) } --- 421,425 ---- 0x0208: ('PictureInfo', ), # print as string ! 0x0209: ('CameraID', lambda x: ''.join(map(chr, x))), 0x0F00: ('DataDump', ) } *************** *** 625,629 **** 0X0030: '1.50 EV', 0X0034: '1.67 EV', ! 0X0040: '2 EV'}), 19: ('SubjectDistance', ) } --- 689,693 ---- 0X0030: '1.50 EV', 0X0034: '1.67 EV', ! 0X0040: '2 EV'}), 19: ('SubjectDistance', ) } *************** *** 639,643 **** def s2n_intel(str): x=0 ! y=0 for c in str: x=x | (ord(c) << y) --- 703,707 ---- def s2n_intel(str): x=0 ! y=0L for c in str: x=x | (ord(c) << y) *************** *** 698,709 **** # class that handles an EXIF header class EXIF_header: ! def __init__(self, file, endian, offset, debug=0): self.file=file self.endian=endian self.offset=offset self.debug=debug self.tags={} # convert slice to integer, based on sign and endian flags def s2n(self, offset, length, signed=0): self.file.seek(self.offset+offset) --- 762,777 ---- # class that handles an EXIF header class EXIF_header: ! def __init__(self, file, endian, offset, fake_exif, debug=0): self.file=file self.endian=endian self.offset=offset + self.fake_exif=fake_exif self.debug=debug self.tags={} # convert slice to integer, based on sign and endian flags + # usually this offset is assumed to be relative to the beginning of the + # start of the EXIF information. For some cameras that use relative tags, + # this offset may be relative to some other starting point. def s2n(self, offset, length, signed=0): self.file.seek(self.offset+offset) *************** *** 715,722 **** # Sign extension ? if signed: ! #msb=1 << (8*length-1) ! #if val & msb: ! # val=val-(msb << 1) ! pass return val --- 783,789 ---- # Sign extension ? if signed: ! msb=1L << (8*length-1) ! if val & msb: ! val=val-(msb << 1) return val *************** *** 751,759 **** # return list of entries in this IFD ! def dump_IFD(self, ifd, ifd_name, dict=EXIF_TAGS): entries=self.s2n(ifd, 2) for i in range(entries): entry=ifd+2+12*i tag=self.s2n(entry, 2) field_type=self.s2n(entry+2, 2) if not 0 < field_type < len(FIELD_TYPES): --- 818,833 ---- # return list of entries in this IFD ! def dump_IFD(self, ifd, ifd_name, dict=EXIF_TAGS, relative=0): entries=self.s2n(ifd, 2) for i in range(entries): + # entry is index of start of this IFD in the file entry=ifd+2+12*i tag=self.s2n(entry, 2) + # get tag name. We do it early to make debugging easier + tag_entry=dict.get(tag) + if tag_entry: + tag_name=tag_entry[0] + else: + tag_name='Tag 0x%04X' % tag field_type=self.s2n(entry+2, 2) if not 0 < field_type < len(FIELD_TYPES): *************** *** 765,770 **** offset=entry+8 if count*typelen > 4: ! # not the value, it's a pointer to the value ! offset=self.s2n(offset, 4) field_offset=offset if field_type == 2: --- 839,855 ---- offset=entry+8 if count*typelen > 4: ! # offset is not the value; it's a pointer to the value ! # if relative we set things up so s2n will seek to the right ! # place when it adds self.offset. Note that this 'relative' ! # is for the Nikon type 3 makernote. Other cameras may use ! # other relative offsets, which would have to be computed here ! # slightly differently. ! if relative: ! tmp_offset=self.s2n(offset, 4) ! offset=tmp_offset+ifd-self.offset+4 ! if self.fake_exif: ! offset=offset+18 ! else: ! offset=self.s2n(offset, 4) field_offset=offset if field_type == 2: *************** *** 772,776 **** if count != 0: self.file.seek(self.offset+offset) ! values=self.file.read(count).strip().replace('\x00','') else: values='' --- 857,862 ---- if count != 0: self.file.seek(self.offset+offset) ! values=self.file.read(count) ! values=values.strip().replace('\x00','') else: values='' *************** *** 792,799 **** else: printable=str(values) ! # figure out tag name ! tag_entry=dict.get(tag) if tag_entry: - tag_name=tag_entry[0] if len(tag_entry) != 1: # optional 2nd tag element is present --- 878,883 ---- else: printable=str(values) ! # compute printable version of values if tag_entry: if len(tag_entry) != 1: # optional 2nd tag element is present *************** *** 804,811 **** printable='' for i in values: ! # use LUT for this tag printable+=tag_entry[1].get(i, repr(i)) - else: - tag_name='Tag 0x%04X' % tag self.tags[ifd_name+' '+tag_name]=IFD_Tag(printable, tag, field_type, --- 888,893 ---- printable='' for i in values: ! # use lookup table for this tag printable+=tag_entry[1].get(i, repr(i)) self.tags[ifd_name+' '+tag_name]=IFD_Tag(printable, tag, field_type, *************** *** 813,818 **** count*typelen) if self.debug: ! print ' %s: %s' % (tag_name, ! repr(self.tags[ifd_name+' '+tag_name])) # extract uncompressed TIFF thumbnail (like pulling teeth) --- 895,900 ---- count*typelen) if self.debug: ! print ' debug: %s: %s' % (tag_name, ! repr(self.tags[ifd_name+' '+tag_name])) # extract uncompressed TIFF thumbnail (like pulling teeth) *************** *** 873,876 **** --- 955,976 ---- # decode all the camera-specific MakerNote formats + + # Note is the data that comprises this MakerNote. The MakerNote will + # likely have pointers in it that point to other parts of the file. We'll + # use self.offset as the starting point for most of those pointers, since + # they are relative to the beginning of the file. + # + # If the MakerNote is in a newer format, it may use relative addressing + # within the MakerNote. In that case we'll use relative addresses for the + # pointers. + # + # As an aside: it's not just to be annoying that the manufacturers use + # relative offsets. It's so that if the makernote has to be moved by the + # picture software all of the offsets don't have to be adjusted. Overall, + # this is probably the right strategy for makernotes, though the spec is + # ambiguous. (The spec does not appear to imagine that makernotes would + # follow EXIF format internally. Once they did, it's ambiguous whether + # the offsets should be from the header at the start of all the EXIF info, + # or from the header at the start of the makernote.) def decode_maker_note(self): note=self.tags['EXIF MakerNote'] *************** *** 879,889 **** # Nikon ! if make == 'NIKON': ! if note.values[0:5] == [78, 105, 107, 111, 110]: # "Nikon" ! # older model self.dump_IFD(note.field_offset+8, 'MakerNote', dict=MAKERNOTE_NIKON_OLDER_TAGS) else: ! # newer model (E99x or D1) self.dump_IFD(note.field_offset, 'MakerNote', dict=MAKERNOTE_NIKON_NEWER_TAGS) --- 979,1004 ---- # Nikon ! # The maker note usually starts with the word Nikon, followed by the ! # type of the makernote (1 or 2, as a short). If the word Nikon is ! # not at the start of the makernote, it's probably type 2, since some ! # cameras work that way. ! if make in ('NIKON', 'NIKON CORPORATION'): ! if note.values[0:7] == [78, 105, 107, 111, 110, 00, 01]: ! if self.debug: ! print "Looks like a type 1 Nikon MakerNote." self.dump_IFD(note.field_offset+8, 'MakerNote', dict=MAKERNOTE_NIKON_OLDER_TAGS) + elif note.values[0:7] == [78, 105, 107, 111, 110, 00, 02]: + if self.debug: + print "Looks like a labeled type 2 Nikon MakerNote" + if note.values[12:14] != [0, 42] and note.values[12:14] != [42L, 0L]: + raise ValueError, "Missing marker tag '42' in MakerNote." + # skip the Makernote label and the TIFF header + self.dump_IFD(note.field_offset+10+8, 'MakerNote', + dict=MAKERNOTE_NIKON_NEWER_TAGS, relative=1) else: ! # E99x or D1 ! if self.debug: ! print "Looks like an unlabeled type 2 Nikon MakerNote" self.dump_IFD(note.field_offset, 'MakerNote', dict=MAKERNOTE_NIKON_NEWER_TAGS) *************** *** 905,909 **** if make == 'FUJIFILM': # bug: everything else is "Motorola" endian, but the MakerNote ! # is "Intel" endian endian=self.endian self.endian='I' --- 1020,1024 ---- if make == 'FUJIFILM': # bug: everything else is "Motorola" endian, but the MakerNote ! # is "Intel" endian endian=self.endian self.endian='I' *************** *** 960,963 **** --- 1075,1079 ---- # it's a JPEG file # skip JFIF style header(s) + fake_exif=0 while data[2] == '\xFF' and data[6:10] in ('JFIF', 'JFXX', 'OLYM'): length=ord(data[4])*256+ord(data[5]) *************** *** 965,968 **** --- 1081,1085 ---- # fake an EXIF beginning of file data='\xFF\x00'+file.read(10) + fake_exif=1 if data[2] == '\xFF' and data[6:10] == 'Exif': # detected EXIF header *************** *** 979,983 **** if debug: print {'I': 'Intel', 'M': 'Motorola'}[endian], 'format' ! hdr=EXIF_header(file, endian, offset, debug) ifd_list=hdr.list_IFDs() ctr=0 --- 1096,1100 ---- if debug: print {'I': 'Intel', 'M': 'Motorola'}[endian], 'format' ! hdr=EXIF_header(file, endian, offset, fake_exif, debug) ifd_list=hdr.list_IFDs() ctr=0 |
From: Kevin A. <ka...@us...> - 2005-03-30 18:08:19
|
Update of /cvsroot/pythoncard/PythonCard/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10392/docs Modified Files: changelog.txt Log Message: revised internationalResourceName to support platform-specific resources Index: changelog.txt =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/docs/changelog.txt,v retrieving revision 1.318 retrieving revision 1.319 diff -C2 -d -r1.318 -r1.319 *** changelog.txt 28 Mar 2005 05:51:21 -0000 1.318 --- changelog.txt 30 Mar 2005 18:07:25 -0000 1.319 *************** *** 9,12 **** --- 9,13 ---- Release 0.8.2 2005-05-?? + revised internationalResourceName to support platform-specific resources added UK <-> US to conversions.py and simplified SOAP.py module check updated turtle.py and bitmapcanvas.py component to force update on Mac |
From: Kevin A. <ka...@us...> - 2005-03-30 18:07:54
|
Update of /cvsroot/pythoncard/PythonCard In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10392 Modified Files: model.py Log Message: revised internationalResourceName to support platform-specific resources Index: model.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/model.py,v retrieving revision 1.190 retrieving revision 1.191 diff -C2 -d -r1.190 -r1.191 *** model.py 28 Sep 2004 21:24:24 -0000 1.190 --- model.py 30 Mar 2005 18:07:39 -0000 1.191 *************** *** 134,139 **** def internationalResourceName(base): ! aFileName = base + ".rsrc.py" try: default = locale.getdefaultlocale() --- 134,156 ---- + # KEA 2005-03-30 + # revised to support platform-specific resource files def internationalResourceName(base): ! postfix = ".rsrc.py" ! # build up a list of possible filenames ! # in order of preference and use the first one that exists ! filenames = [base + postfix] ! ! if wx.Platform == '__WXMSW__': ! platform = 'win' ! elif wx.Platform == '__WXGTK__': ! platform = 'gtk' ! elif wx.Platform == '__WXMAC__': ! platform = 'mac' ! else: ! platform = None ! if platform: ! filenames.insert(0, base + '.' + platform + postfix) ! try: default = locale.getdefaultlocale() *************** *** 141,155 **** default = None log.debug('default: ' + str(default)) if default and default[0] is not None: language, country = default[0].split('_') ! languageCountryName = base + '.' + language + '_' + country + ".rsrc.py" ! languageOnlyName = base + '.' + language + ".rsrc.py" ! if os.path.exists(languageCountryName): ! aFileName = languageCountryName ! elif os.path.exists(languageOnlyName): ! aFileName = languageOnlyName ! log.debug(language + ' ' + country + ' ' + languageCountryName + ' ' + \ ! languageOnlyName + ' ' + aFileName) ! return aFileName --- 158,180 ---- default = None log.debug('default: ' + str(default)) + if default and default[0] is not None: language, country = default[0].split('_') ! log.debug(language + ' ' + country) ! # languageOnlyName ! filenames.insert(0, base + '.' + language + postfix) ! # languageCountryName ! filenames.insert(0, base + '.' + language + '_' + country + postfix) ! # now with platform specified as well ! if platform: ! filenames.insert(0, base + '.' + platform + '.' + language + postfix) ! filenames.insert(0, base + '.' + platform + '.' + language + '_' + country + postfix) ! ! log.debug(filenames) ! for f in filenames: ! if os.path.exists(f): ! filename = f ! break ! return filename |
From: Phil E. <l2...@us...> - 2005-03-30 15:55:31
|
Update of /cvsroot/pythoncard/PythonCard/docs/html In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1897 Modified Files: linux_installation.html Log Message: Found an occurence of PythonoCardPrototype in the text... Index: linux_installation.html =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/docs/html/linux_installation.html,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** linux_installation.html 30 Mar 2005 15:37:13 -0000 1.14 --- linux_installation.html 30 Mar 2005 15:55:12 -0000 1.15 *************** *** 103,111 **** other PythonCard sample applications with the command:</p> <p class="code">/usr/share/PythonCard/samples/samples.pyw</p> ! <h3>PythonCardPrototype Menu Items</h3> <p>You will find some new items on the window manager menu - the PythonCard resource editor will be found under Applications --> Development --> Development environments, whilst the PythonCard code editor and samples launcher will be found under Applications --> Development --> Tools.</p> <h3>If You Are Having Problems</h3> <p>Installing the software from RPM <i>ought</i> to be fairly straightforward. --- 103,113 ---- other PythonCard sample applications with the command:</p> <p class="code">/usr/share/PythonCard/samples/samples.pyw</p> ! ! <h3>PythonCard Menu Items</h3> <p>You will find some new items on the window manager menu - the PythonCard resource editor will be found under Applications --> Development --> Development environments, whilst the PythonCard code editor and samples launcher will be found under Applications --> Development --> Tools.</p> + <h3>If You Are Having Problems</h3> <p>Installing the software from RPM <i>ought</i> to be fairly straightforward. |
From: Phil E. <l2...@us...> - 2005-03-30 15:37:52
|
Update of /cvsroot/pythoncard/PythonCard/docs/html In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23414 Modified Files: linux_installation.html Log Message: Update the notes for PythonCard-0.8.1 RPM install, also covers current version of wxPython RPMs Index: linux_installation.html =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/docs/html/linux_installation.html,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** linux_installation.html 29 Mar 2005 12:05:58 -0000 1.13 --- linux_installation.html 30 Mar 2005 15:37:13 -0000 1.14 *************** *** 16,20 **** <a href="#mandrake">Mandrake</a> and <a href="#debian">Debian</a>.</p> <h2><a id="mandrake">Mandrake Linux Using RPM's</a></h2> ! <p>Installing PythonCard on your Linux system requires the following steps:</p> <ol> <li>Ensure that you have a suitable version of Python installed.</li> --- 16,24 ---- <a href="#mandrake">Mandrake</a> and <a href="#debian">Debian</a>.</p> <h2><a id="mandrake">Mandrake Linux Using RPM's</a></h2> ! <p>The notes below concentrate specifically on installing PythonCard from RPMs on ! a Mandrake system. For other Linux distributions which also use the RPM format for ! packages (for example, SuSE, RedHat or Fedora) the process will be broadly similar, ! but you should take care to select the correct versions of the various RPMs that ! are required. Installing PythonCard on a Linux system requires the following steps:</p> <ol> <li>Ensure that you have a suitable version of Python installed.</li> *************** *** 26,32 **** </ol> <h3>Check your Python version</h3> ! <p>PythonCardPrototype requires that you have Python 2.2.1 or higher installed. At the time of writing, it is known that all versions of Mandrake ! Linux from 8.2 upwards install a suitable Python version by default. If you are still using version 9.0 or lower, you really should think seriously about upgrading.</p> --- 30,36 ---- </ol> <h3>Check your Python version</h3> ! <p>PythonCard requires that you have Python 2.3 or higher installed. At the time of writing, it is known that all versions of Mandrake ! Linux from 9.1 upwards install a suitable Python version by default. If you are still using version 9.0 or lower, you really should think seriously about upgrading.</p> *************** *** 40,65 **** <p>This Linux system has Python 2.3 installed, so there's no problem here. :-)</p> <h3>Downloading the wxPython RPMs</h3> ! <p>PythonCard relies on the wxPython package. If you are using Mandrake or ! another Linux distribrution which uses the RPM package format (for instance ! Red Hat or Fedora Core) you can install wxPython using the pre-built packages ! available at <a href="http://www.wxpython.org/download.php#binaries">the ! wxPython download page</a>. Make sure you select the correct files for your ! version of Python and operating system you have. ! link instead. Tell your browser where you want the file stored and the ! download proceeds. Note where on your system the file is saved by your ! browser.</p> <h3>Downloading the PythonCard RPM</h3> ! <p>The latest version of the PythonCard RPM's are always available via the <a href="http://www.linux2000.com/pythoncard.html">Linux2000 PythonCard page</a> , and are also mirrored on the main Pythoncard site on SourceForge - <a href="http://sourceforge.net/project/showfiles.php?group_id=19015">click here</a> ! to go to the download page. You will need to download the RPM which is ! appropriate for the Linux distribution you are using. At the time of writing, ! supported distributions for RPM installation include Mandrake Linux versions ! 8.2, 9.0 and 9.1 (for Python 2.2) and versions 9.2 and 10.0 for Python 2.3</p> ! <p>For Mandrake Linux 8.2, 9.0 and 9.1, you should install <a href="http://www.linux2000.com/downloads/PythonCardPrototype-0.7.3.1-1mdk.noarch.rpm">PythonCardPrototype-0.7.3.1-1mdk.noarch.rpm</a>.</p> ! <p>For Mandrake Linux 9.2 and 10.0, you should install <a href="http://www.linux2000.com/downloads/PythonCardPrototype-0.7.3.1-2mdk.noarch.rpm">PythonCardPrototype-0.7.3.1-2mdk.noarch.rpm</a>.</p> ! <p>Click the appropriate link to begin downloading the RPM. Tell your browser ! where you want the file stored and the download proceeds. Note where on your ! system the file is saved by your browser.</p> <h3>Installing the wxPython RPMs</h3> <p>Type 'su -' and enter your root password when prompted. The command to --- 44,76 ---- <p>This Linux system has Python 2.3 installed, so there's no problem here. :-)</p> <h3>Downloading the wxPython RPMs</h3> ! <p>PythonCard relies on the wxPython package. The specific wxPython RPMs you will ! need (at the time of writing, at least) are as follows:</p> ! ! <p> ! <a href="http://prdownloads.sourceforge.net/wxpython/wxPython-common-gtk2-unicode-2.5.4.1-mdk101_py2.3.i586.rpm">wxPython-common-gtk2-unicode-2.5.4.1-mdk101_py2.3.i586.rpm</a> ! <a href="http://prdownloads.sourceforge.net/wxpython/wxPython2.5-gtk2-unicode-2.5.4.1-mdk101_py2.3.i586.rpm">wxPython2.5-gtk2-unicode-2.5.4.1-mdk101_py2.3.i586.rpm</a> ! </p> ! ! <p>Whilst the versions of wxPython which are built against the older GTK1.0 ! libraries will work, the GTK2 versions offer some advantages ! as far as Mandrake is concerned (widgets look slightly 'nicer' and ! execution speed is improved) and it is these which are recommended.</p> ! ! <p>If you are installing on a distribution other than Mandrake, you should consult ! the wxPython download page ! at <a href="http://www.wxpython.org/download.php#binaries">http://www.wxpython.org/download.php#binaries</a> ! to determine the correct RPMs for your system.</p> ! ! <p>Save the files somewhere convenient on your system. Make a note of the location for later.</p> ! <h3>Downloading the PythonCard RPM</h3> ! <p>The latest version of the PythonCard RPMs are always available via the <a href="http://www.linux2000.com/pythoncard.html">Linux2000 PythonCard page</a> , and are also mirrored on the main Pythoncard site on SourceForge - <a href="http://sourceforge.net/project/showfiles.php?group_id=19015">click here</a> ! to go to the download page. Supported Mandrake Linux distributions for RPM installation are 10.0 and 10.1 in ! both <em>Community</em> and <em>Official</em> flavours.</p> ! <p>Download <a href="http://www.linux2000.com/downloads/PythonCard-0.8.1-1mdk.noarch.rpm">http://www.linux2000.com/downloads/PythonCard-0.8.1-1mdk.noarch.rpm</a> ! and save the file somehwere convenient as before.</p> ! <h3>Installing the wxPython RPMs</h3> <p>Type 'su -' and enter your root password when prompted. The command to *************** *** 70,84 **** browser saved the downloaded RPM and substitute the correct file type and version number of the file you have downloaded.</p> ! <h3>Installing PythonCardPrototype</h3> ! <p>The command to install the PythonCardPrototype RPM is pretty similar:</p> ! <p class="code">rpm -Uvh /home/fred/PythonCardPrototype-0.7.3.1-2mdk.noarch.rpm</p> <p>Again, replace "/home/fred" with the full path to where your browser saved the RPM, and substitute the relevant RPM file name for you distribution.</p> <h3>Confirming Installation</h3> ! <p>We'll run the PythonCardPrototype quot;minimal" application to check that the installation seems OK. To run this, open a shell prompt as your normal user, and type the following:</p> ! <p class="code">/usr/share/PythonCardPrototype/samples/minimal/minimal.py</p> <p class="imageCaption"><img src="http://pythoncard.sourceforge.net/images/snapminimal_01.png" alt="PythonCard minimal application window open to confirm installation is correct" /><br /> Figure 1. PythonCard minimal application window open to confirm installation --- 81,97 ---- browser saved the downloaded RPM and substitute the correct file type and version number of the file you have downloaded.</p> ! ! <h3>Installing PythonCard</h3> ! <p>The command to install the PythonCard RPM is pretty similar:</p> ! <p class="code">rpm -Uvh /home/fred/PythonCard-0.8.1-1mdk.noarch.rpm</p> <p>Again, replace "/home/fred" with the full path to where your browser saved the RPM, and substitute the relevant RPM file name for you distribution.</p> + <h3>Confirming Installation</h3> ! <p>We'll run the PythonCardPrototype "minimal" application to check that the installation seems OK. To run this, open a shell prompt as your normal user, and type the following:</p> ! <p class="code">/usr/share/PythonCard/samples/minimal/minimal.py</p> <p class="imageCaption"><img src="http://pythoncard.sourceforge.net/images/snapminimal_01.png" alt="PythonCard minimal application window open to confirm installation is correct" /><br /> Figure 1. PythonCard minimal application window open to confirm installation *************** *** 89,93 **** <p>Assuming that the minimal application starts up okay, you can browse the other PythonCard sample applications with the command:</p> ! <p class="code">/usr/share/PythonCardPrototype/samples/samples.pyw</p> <h3>PythonCardPrototype Menu Items</h3> <p>You will find some new items on the window manager menu - the PythonCard --- 102,106 ---- <p>Assuming that the minimal application starts up okay, you can browse the other PythonCard sample applications with the command:</p> ! <p class="code">/usr/share/PythonCard/samples/samples.pyw</p> <h3>PythonCardPrototype Menu Items</h3> <p>You will find some new items on the window manager menu - the PythonCard *************** *** 99,104 **** If for some reason either the RPM's won't install, or the minimal application doesn't run, go back over these instructions carefully. In particular, make ! sure that wxPython and PythonCardPrototype both appear in the site-packages ! folder in Python's Lib folder.</p> <p>If everything seems OK and you still can't get minimal.py to launch, post a message to the PythonCard Users Mailing List. (If you aren't yet a member, --- 112,117 ---- If for some reason either the RPM's won't install, or the minimal application doesn't run, go back over these instructions carefully. In particular, make ! sure that wxPython and PythonCard both appear in the site-packages ! folder in Python's lib folder.</p> <p>If everything seems OK and you still can't get minimal.py to launch, post a message to the PythonCard Users Mailing List. (If you aren't yet a member, |
From: Andy T. <an...@us...> - 2005-03-29 12:06:17
|
Update of /cvsroot/pythoncard/PythonCard/docs/html In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2676 Modified Files: linux_installation.html Log Message: Updated wxPython installation instructions for linux Index: linux_installation.html =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/docs/html/linux_installation.html,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** linux_installation.html 28 Mar 2005 05:42:40 -0000 1.12 --- linux_installation.html 29 Mar 2005 12:05:58 -0000 1.13 *************** *** 39,47 **** >>> (Type Ctrl-D here to exit)</p> <p>This Linux system has Python 2.3 installed, so there's no problem here. :-)</p> ! <h3>Downloading the wxPython RPM</h3> ! <p>PythonCard relies on the wxPython package. If your Python version is 2.3 ! (or 2.3.something) click on this <a href="http://prdownloads.sourceforge.net/wxpython/wxPythonGTK-py2.3-2.5.1.5-1.i386.rpm">wxPython 2.5.1.5 for Python 2.3.x</a> ! link to begin the download. If your Python version is 2.2 (or 2.2.something) ! click on this <a href="http://prdownloads.sourceforge.net/wxpython/wxPythonGTK-py2.2-2.5.1.5-1.i386.rpm">wxPython 2.5.1.5 for Python 2.2.x</a> link instead. Tell your browser where you want the file stored and the download proceeds. Note where on your system the file is saved by your --- 39,49 ---- >>> (Type Ctrl-D here to exit)</p> <p>This Linux system has Python 2.3 installed, so there's no problem here. :-)</p> ! <h3>Downloading the wxPython RPMs</h3> ! <p>PythonCard relies on the wxPython package. If you are using Mandrake or ! another Linux distribrution which uses the RPM package format (for instance ! Red Hat or Fedora Core) you can install wxPython using the pre-built packages ! available at <a href="http://www.wxpython.org/download.php#binaries">the ! wxPython download page</a>. Make sure you select the correct files for your ! version of Python and operating system you have. link instead. Tell your browser where you want the file stored and the download proceeds. Note where on your system the file is saved by your *************** *** 60,69 **** where you want the file stored and the download proceeds. Note where on your system the file is saved by your browser.</p> ! <h3>Installing the wxPython RPM</h3> <p>Type 'su -' and enter your root password when prompted. The command to install the RPM is:</p> ! <p class="code">rpm -Uvh /home/fred/wxPythonGTK-py2.3-2.5.1.5-1.i386.rpm</p> <p>You should replace "/home/fred" with the full path to where your ! browser saved the downloaded RPM.</p> <h3>Installing PythonCardPrototype</h3> <p>The command to install the PythonCardPrototype RPM is pretty similar:</p> --- 62,73 ---- where you want the file stored and the download proceeds. Note where on your system the file is saved by your browser.</p> ! <h3>Installing the wxPython RPMs</h3> <p>Type 'su -' and enter your root password when prompted. The command to install the RPM is:</p> ! <p class="code">rpm -Uvh /home/fred/wxPython-common-gtk2-<type and version number>.i386.rpm</p> ! <p class="code">rpm -Uvh /home/fred/wxPython2.5-gtk2-<type and version number>.i386.rpm</p> <p>You should replace "/home/fred" with the full path to where your ! browser saved the downloaded RPM and substitute the correct file type and ! version number of the file you have downloaded.</p> <h3>Installing PythonCardPrototype</h3> <p>The command to install the PythonCardPrototype RPM is pretty similar:</p> |
From: Kevin A. <ka...@us...> - 2005-03-28 18:56:26
|
Update of /cvsroot/pythoncard/PythonCard/samples/lsystem In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5349 Modified Files: lsystem.rsrc.py lsystemInteractive.rsrc.py Log Message: adjusted text and static text positions to avoid overlap on Mac Index: lsystem.rsrc.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/samples/lsystem/lsystem.rsrc.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** lsystem.rsrc.py 4 Oct 2004 19:03:09 -0000 1.4 --- lsystem.rsrc.py 28 Mar 2005 18:56:01 -0000 1.5 *************** *** 74,78 **** {'type':'TextField', 'name':'angleDisplay', ! 'position':(414, 25), 'size':(36, -1), }, --- 74,78 ---- {'type':'TextField', 'name':'angleDisplay', ! 'position':(420, 25), 'size':(36, -1), }, *************** *** 99,103 **** {'type':'StaticText', 'name':'iterationDisplay', ! 'position':(427, 76), }, --- 99,103 ---- {'type':'StaticText', 'name':'iterationDisplay', ! 'position':(435, 76), }, Index: lsystemInteractive.rsrc.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/samples/lsystem/lsystemInteractive.rsrc.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** lsystemInteractive.rsrc.py 4 Oct 2004 19:03:09 -0000 1.2 --- lsystemInteractive.rsrc.py 28 Mar 2005 18:56:01 -0000 1.3 *************** *** 74,78 **** {'type':'TextField', 'name':'angleDisplay', ! 'position':(414, 25), 'size':(36, -1), }, --- 74,78 ---- {'type':'TextField', 'name':'angleDisplay', ! 'position':(420, 25), 'size':(36, -1), }, *************** *** 99,103 **** {'type':'StaticText', 'name':'iterationDisplay', ! 'position':(427, 76), }, --- 99,103 ---- {'type':'StaticText', 'name':'iterationDisplay', ! 'position':(435, 76), }, |
From: Kevin A. <ka...@us...> - 2005-03-28 17:29:48
|
Update of /cvsroot/pythoncard/PythonCard/components In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24566/components Modified Files: textfield.py Log Message: added IsBeingDeleted() guard to prevent firing events when object is in the process of being deleted, which could cause crashes if the handler attempts to access a deleted object Index: textfield.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/components/textfield.py,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** textfield.py 25 Sep 2004 03:21:20 -0000 1.30 --- textfield.py 28 Mar 2005 17:29:39 -0000 1.31 *************** *** 315,319 **** # same with DiscardEdits() above #modified = obj.IsModified() ! if aWxEvent.target.IsModified(): #closeFieldEvent = aWxEvent.Clone() #closeFieldEvent.SetEventType(event.wxEVT_CLOSE_FIELD) --- 315,319 ---- # same with DiscardEdits() above #modified = obj.IsModified() ! if not aWxEvent.target.IsBeingDeleted() and aWxEvent.target.IsModified(): #closeFieldEvent = aWxEvent.Clone() #closeFieldEvent.SetEventType(event.wxEVT_CLOSE_FIELD) |
From: Kevin A. <ka...@us...> - 2005-03-28 17:29:47
|
Update of /cvsroot/pythoncard/PythonCard In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24566 Modified Files: widget.py Log Message: added IsBeingDeleted() guard to prevent firing events when object is in the process of being deleted, which could cause crashes if the handler attempts to access a deleted object Index: widget.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/widget.py,v retrieving revision 1.135 retrieving revision 1.136 diff -C2 -d -r1.135 -r1.136 *** widget.py 31 Dec 2004 20:44:09 -0000 1.135 --- widget.py 28 Mar 2005 17:29:37 -0000 1.136 *************** *** 374,378 **** #handler = self.eventIdToHandler.get(eventType, None) handler = self.eventIdToHandler.get(eventType, None) ! if handler: event.EventLog.getInstance().log(eventName, self.name, True) if 0: --- 374,380 ---- #handler = self.eventIdToHandler.get(eventType, None) handler = self.eventIdToHandler.get(eventType, None) ! # KEA 2005-03-28 ! # don't fire events when objects are in the process of being deleted ! if handler and not aWxEvent.target.IsBeingDeleted(): event.EventLog.getInstance().log(eventName, self.name, True) if 0: |
From: Kevin A. <ka...@us...> - 2005-03-28 05:51:32
|
Update of /cvsroot/pythoncard/PythonCard/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14265/docs Modified Files: changelog.txt Log Message: start of 0.8.2 changes Index: changelog.txt =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/docs/changelog.txt,v retrieving revision 1.317 retrieving revision 1.318 diff -C2 -d -r1.317 -r1.318 *** changelog.txt 19 Oct 2004 22:21:23 -0000 1.317 --- changelog.txt 28 Mar 2005 05:51:21 -0000 1.318 *************** *** 8,13 **** ! Release 0.8.2 2004-11-?? ! --- 8,15 ---- ! Release 0.8.2 2005-05-?? ! added UK <-> US to conversions.py and simplified SOAP.py module check ! updated turtle.py and bitmapcanvas.py component to force update on Mac ! renamed samples.py to samples.pyw |
From: Kevin A. <ka...@us...> - 2005-03-28 05:49:26
|
Update of /cvsroot/pythoncard/PythonCard/samples/conversions In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13067/samples/conversions Modified Files: conversions.py conversions.rsrc.py Log Message: added UK <-> US to conversions.py and simplified SOAP.py module check Index: conversions.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/samples/conversions/conversions.py,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** conversions.py 5 May 2004 16:53:25 -0000 1.14 --- conversions.py 28 Mar 2005 05:49:14 -0000 1.15 *************** *** 7,10 **** --- 7,16 ---- from PythonCard import model + try: + import SOAP + SOAP_AVAILABLE = True + except ImportError: + SOAP_AVAILABLE = False + class Conversion: *************** *** 95,110 **** class CurrencyConversion(Conversion): - def __init__(self, components): - components.labelUp.text = 'Aussie Dollars' - components.btnConvertUp.label = 'US Dollars to Aussie Dollars' - components.btnConvertDown.label = 'Aussie Dollars to US Dollars' - components.labelDown.text = 'US Dollars' - - def toDown(self, txt): - return self.convertToUS(txt) - - def toUp(self, txt): - return self.convertToAus(txt) - def convert(self, fromCur, toCur, txt): import SOAP --- 101,104 ---- *************** *** 121,124 **** --- 115,150 ---- return str(float(txt) * rate) + class CurrencyConversionUKUS(CurrencyConversion): + def __init__(self, components): + components.labelUp.text = 'UK Pounds' + components.btnConvertUp.label = 'US Dollars to UK Pounds' + components.btnConvertDown.label = 'UK Pounds to US Dollars' + components.labelDown.text = 'US Dollars' + + def toDown(self, txt): + return self.convertToUS(txt) + + def toUp(self, txt): + return self.convertToUK(txt) + + def convertToUS(self, txt): + return self.convert('UK', 'US', txt) + + def convertToUK(self, txt): + return self.convert('US', 'UK', txt) + + class CurrencyConversionAUSUS(CurrencyConversion): + def __init__(self, components): + components.labelUp.text = 'Aussie Dollars' + components.btnConvertUp.label = 'US Dollars to Aussie Dollars' + components.btnConvertDown.label = 'Aussie Dollars to US Dollars' + components.labelDown.text = 'US Dollars' + + def toDown(self, txt): + return self.convertToUS(txt) + + def toUp(self, txt): + return self.convertToAus(txt) + def convertToUS(self, txt): return self.convert('Australia', 'US', txt) *************** *** 127,134 **** return self.convert('US', 'Australia', txt) class Conversions(model.Background): def on_initialize(self, event): ! self.conversion = TemperatureConversion(self.components) def on_btnConvertDown_mouseClick(self, event): --- 153,168 ---- return self.convert('US', 'Australia', txt) + class Conversions(model.Background): def on_initialize(self, event): ! # only enable currency conversion option if the SOAP module is installed ! if not SOAP_AVAILABLE: ! self.menuBar.setChecked('menuConvertCurrencyUKUS', False) ! self.menuBar.setEnabled('menuConvertCurrencyUKUS', False) ! self.menuBar.setChecked('menuConvertCurrencyAUSUS', False) ! self.menuBar.setEnabled('menuConvertCurrencyAUSUS', False) ! #self.conversion = TemperatureConversion(self.components) ! self.on_menuConvertTemperature_select(None) def on_btnConvertDown_mouseClick(self, event): *************** *** 137,165 **** def on_btnConvertUp_mouseClick(self, event): self.components.field1.text = self.conversion.toUp(self.components.field2.text) def on_menuConvertMorseCode_select(self, event): self.conversion = MorseCodeConversion(self.components) self.menuBar.setChecked('menuConvertMorseCode') - self.menuBar.setChecked('menuConvertTemperature', 0) - self.menuBar.setChecked('menuConvertCurrency', 0) def on_menuConvertTemperature_select(self, event): self.conversion = TemperatureConversion(self.components) ! self.menuBar.setChecked('menuConvertMorseCode', 0) self.menuBar.setChecked('menuConvertTemperature') - self.menuBar.setChecked('menuConvertCurrency', 0) ! def on_menuConvertCurrency_select(self, event): ! "We only enable this option if the SOAP module is installed" ! try: ! import SOAP ! except ImportError: ! self.menuBar.setChecked('menuConvertCurrency', 0) ! self.menuBar.setEnabled('menuConvertCurrency', 0) ! return ! self.conversion = CurrencyConversion(self.components) ! self.menuBar.setChecked('menuConvertMorseCode', 0) ! self.menuBar.setChecked('menuConvertTemperature', 0) ! self.menuBar.setChecked('menuConvertCurrency') --- 171,200 ---- def on_btnConvertUp_mouseClick(self, event): self.components.field1.text = self.conversion.toUp(self.components.field2.text) + + def uncheckAllMenuItems(self): + self.menuBar.setChecked('menuConvertMorseCode', False) + self.menuBar.setChecked('menuConvertTemperature', False) + self.menuBar.setChecked('menuConvertCurrencyUKUS', False) + self.menuBar.setChecked('menuConvertCurrencyAUSUS', False) def on_menuConvertMorseCode_select(self, event): self.conversion = MorseCodeConversion(self.components) + self.uncheckAllMenuItems() self.menuBar.setChecked('menuConvertMorseCode') def on_menuConvertTemperature_select(self, event): self.conversion = TemperatureConversion(self.components) ! self.uncheckAllMenuItems() self.menuBar.setChecked('menuConvertTemperature') ! def on_menuConvertCurrencyUKUS_select(self, event): ! self.conversion = CurrencyConversionUKUS(self.components) ! self.uncheckAllMenuItems() ! self.menuBar.setChecked('menuConvertCurrencyUKUS') ! ! def on_menuConvertCurrencyAUSUS_select(self, event): ! self.conversion = CurrencyConversionAUSUS(self.components) ! self.uncheckAllMenuItems() ! self.menuBar.setChecked('menuConvertCurrencyAUSUS') Index: conversions.rsrc.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/samples/conversions/conversions.rsrc.py,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** conversions.rsrc.py 31 Jul 2004 06:27:51 -0000 1.10 --- conversions.rsrc.py 28 Mar 2005 05:49:14 -0000 1.11 *************** *** 37,43 **** 'checked':1}, { 'type':'MenuItem', ! 'name':'menuConvertCurrency', ! 'label':'Currency', ! 'checkable':1 }] } ] --- 37,48 ---- 'checked':1}, { 'type':'MenuItem', ! 'name':'menuConvertCurrencyUKUS', ! 'label':'Currency - UK <-> US', ! 'checkable':1 }, ! { 'type':'MenuItem', ! 'name':'menuConvertCurrencyAUSUS', ! 'label':'Currency - AUS <-> US', ! 'checkable':1 }, ! ] } ] |
From: Kevin A. <ka...@us...> - 2005-03-28 05:47:09
|
Update of /cvsroot/pythoncard/PythonCard/samples/turtle In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12028/samples/turtle Modified Files: turtle.py Log Message: added explicit Update for Mac BitmapCanvas refresh Index: turtle.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/samples/turtle/turtle.py,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** turtle.py 10 Oct 2004 01:21:56 -0000 1.25 --- turtle.py 28 Mar 2005 05:47:00 -0000 1.26 *************** *** 26,30 **** if wx.Platform == '__WXMAC__': ! self.menuBar.setChecked('menuCommandsAutoRefresh', False) self.components.bufOff.autoRefresh = False --- 26,33 ---- if wx.Platform == '__WXMAC__': ! # KEA 2005-03-26 ! # if CallAfter isn't used, the Mac doesn't update the menu correctly ! # this might be a bug ! wx.CallAfter(self.menuBar.setChecked, 'menuCommandsAutoRefresh', False) self.components.bufOff.autoRefresh = False |
From: Kevin A. <ka...@us...> - 2005-03-28 05:47:09
|
Update of /cvsroot/pythoncard/PythonCard/samples/gravity In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12028/samples/gravity Modified Files: gravity.py Log Message: added explicit Update for Mac BitmapCanvas refresh Index: gravity.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/samples/gravity/gravity.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** gravity.py 10 Oct 2004 01:20:20 -0000 1.6 --- gravity.py 28 Mar 2005 05:47:00 -0000 1.7 *************** *** 176,183 **** for ball in self.sprites: ball.move() ! if wx.Platform == '__WXMAC__': ! canvas.redraw() ! else: ! canvas.refresh() frame += 1 self.statusBar.text = "Average FPS: %.4f Balls: %d" % (frame / (seconds - startTime), len(self.sprites)) --- 176,180 ---- for ball in self.sprites: ball.move() ! canvas.refresh() frame += 1 self.statusBar.text = "Average FPS: %.4f Balls: %d" % (frame / (seconds - startTime), len(self.sprites)) *************** *** 234,241 **** for ball in self.sprites: ball.move() ! if wx.Platform == '__WXMAC__': ! self.components.bufOff.redraw() ! else: ! self.components.bufOff.refresh() --- 231,235 ---- for ball in self.sprites: ball.move() ! self.components.bufOff.refresh() |
From: Kevin A. <ka...@us...> - 2005-03-28 05:47:08
|
Update of /cvsroot/pythoncard/PythonCard/components In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12028/components Modified Files: bitmapcanvas.py Log Message: added explicit Update for Mac BitmapCanvas refresh Index: bitmapcanvas.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/components/bitmapcanvas.py,v retrieving revision 1.45 retrieving revision 1.46 diff -C2 -d -r1.45 -r1.46 *** bitmapcanvas.py 10 Oct 2004 02:32:18 -0000 1.45 --- bitmapcanvas.py 28 Mar 2005 05:46:59 -0000 1.46 *************** *** 397,401 **** dc = wx.ClientDC(self) dc.BlitPointSize((0, 0), (self._size[0], self._size[1]), self._bufImage, (0, 0)) ! #self._delegate.Refresh() --- 397,405 ---- dc = wx.ClientDC(self) dc.BlitPointSize((0, 0), (self._size[0], self._size[1]), self._bufImage, (0, 0)) ! # KEA 2005-03-26 ! # this is necessary to force a screen update on the Mac ! if wx.Platform == '__WXMAC__': ! #self.canvas.Refresh() ! self.Update() |
From: Kevin A. <ka...@us...> - 2005-03-28 05:47:08
|
Update of /cvsroot/pythoncard/PythonCard In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12028 Modified Files: turtle.py Log Message: added explicit Update for Mac BitmapCanvas refresh Index: turtle.py =================================================================== RCS file: /cvsroot/pythoncard/PythonCard/turtle.py,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** turtle.py 11 May 2004 14:35:16 -0000 1.20 --- turtle.py 28 Mar 2005 05:46:59 -0000 1.21 *************** *** 418,421 **** --- 418,427 ---- #self._goto(x, y) # actually this isn't equivelant + # KEA 2005-03-26 + # this is necessary to force a screen update on the Mac + if wx.Platform == '__WXMAC__' and self.canvas.autoRefresh: + #self.canvas.Refresh() + self.canvas.Update() + def line(self, x1, y1, x2, y2): """draws a line from x1, y1 to x2, y2 using the current *************** *** 427,430 **** --- 433,442 ---- self.canvas.drawLine((round(x1), round(y1)), (round(x2), round(y2))) + # KEA 2005-03-26 + # this is necessary to force a screen update on the Mac + if wx.Platform == '__WXMAC__' and self.canvas.autoRefresh: + #self.canvas.Refresh() + self.canvas.Update() + # probably replace this with a wxPython primitive for polygons # so we can support filled polys... *************** *** 457,460 **** --- 469,478 ---- self._dirty = False + # KEA 2005-03-26 + # this is necessary to force a screen update on the Mac + if wx.Platform == '__WXMAC__' and self.canvas.autoRefresh: + #self.canvas.Refresh() + self.canvas.Update() + # need to enhance this to support the various # color settings: colourName, rgb *************** *** 628,631 **** --- 646,653 ---- if not self._drawingTurtle: + # KEA 2005-03-26 + # this is necessary to force a screen update on the Mac + if wx.Platform == '__WXMAC__' and self.canvas.autoRefresh: + self.canvas.Update() if self._visible: # this is necessary to avoid an endless loop as drawTurtle uses _goto |