/[thuban]/branches/WIP-pyshapelib-bramz/ChangeLog
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1894 by bh, Thu Oct 30 18:17:17 2003 UTC revision 2064 by mrechtie, Sun Feb 15 14:16:14 2004 UTC
# Line 1  Line 1 
1    2004-02-15  Markus Rechtien  <[email protected]>
2            
3            * Extensions/svgexport/svgmapwriter.py: New. Adds the capability
4            to write a session to a file in SVG format.
5            * Extensions/svgexport/svgsaver.py: New. Uses svgmapwriter.py
6            to write a SVG map of a session.
7            * Extensions/svgexport/maplegend: New. Writes a basic maplegend
8            in SVG format for the current session.
9    
10    2004-02-13  Bernhard Herzog  <[email protected]>
11    
12            * Thuban/UI/mainwindow.py (MainWindow.AddDBLayer): When the layer
13            can't be created, return immediately after displaying the error
14            message.
15    
16    2004-02-11  Bernhard Herzog  <[email protected]>
17    
18            Handle postgis tables with more than one geometry column.
19    
20            * Thuban/Model/postgisdb.py
21            (PostGISTable._fetch_table_information): Delegate the creation of
22            column objects to a different method so that we can extend that in
23            derived classes
24            (PostGISTable._create_col_from_description): New. Column object
25            creation part of _fetch_table_information
26            (PostGISShapeStore._create_col_from_description): New. Extend
27            inherited method to handle geometry columns
28            (PostGISShapeStore.__init__): New parameter geometry_column to
29            specify which geometry column to use.  Optional but mandatory for
30            tables with more than one geometry column
31            (PostGISShapeStore._fetch_table_information): Also use the name of
32            the geometry column when looking for the srid
33            (PostGISShapeStore.ShapeType): Also use the name of the geometry
34            column when looking for the shape type
35    
36            * test/test_save.py (SaveSessionTest.test_save_postgis): Adapt
37            NonConnectionStore to changes in the PostGISShapeStore
38    
39            * test/test_postgis_db.py
40            (TestPostGISSpecialCases.test_shapestore_two_geom_cols): Test
41            PostGISShapeStore with tables having two geometry columns.
42    
43    2004-02-10  Bernhard Herzog  <[email protected]>
44    
45            Fix some postgis problems.  What remains to be done is real
46            handling of SRIDs as they affect how reprojection is done
47    
48            * Thuban/Model/postgisdb.py (quote_identifier): Fix typo in
49            doc-string
50            (PostGISShapeStore._fetch_table_information): New. Extend
51            inherited method to retrieve srid
52            (PostGISShapeStore.BoundingBox): Handle tables without data.
53            extent yields NULL for those
54            (PostGISShapeStore.ShapesInRegion): Use the srid of the table.
55    
56            * test/test_postgis_db.py
57            (TestPostGISSpecialCases.test_shapestore_empty_table): New test
58            for the special case of a table without any data
59            (TestPostGISShapestorePointSRID): New class with tests for a table
60            that uses srids
61            (PolygonTests): Fix a doc-string typo
62    
63            * test/postgissupport.py (PostGISDatabase.__init__): New parameter
64            reference_systems with a specification of spacial reference
65            systems to create in the new db.
66            (PostgreSQLServer.new_postgis_db)
67            (PostgreSQLServer.get_static_data_db): New parameter
68            reference_systems to be passed through ultimately to
69            PostGISDatabase.  In new_postgis_db also check whether an existing
70            db already has the right srids
71            (PostgreSQLServer.get_default_static_data_db): Add srids and a
72            table that uses srids
73            (PostGISDatabase.initdb): Create the entries for the reference
74            systems
75            (PostGISDatabase.has_data): Add reference_systems parameter to
76            check for those too
77            (upload_shapefile): New parameter srid to create tables with a
78            specific srid
79    
80    2004-02-06  Frank Koormann  <[email protected]>
81    
82            * po/pt_BR.po: Fixed charset
83    
84    2004-02-05  Frank Koormann  <[email protected]>
85    
86            * po/pt_BR.po: Fixed format string for error message, missing %s
87            added (Thuban/UI/application.py:273)
88    
89    2004-02-03  Frank Koormann  <[email protected]>
90            
91            First version of Portuguese (Brazilian) translation
92    
93            * po/pt_BR.po: New, translation of pot (2004-01-15 16:07+0300) for
94            Brazilian Portuguese by Eduardo Patto Kanegae.
95    
96            * Thuban/UI/about.py (About.__init.py__): Added Eduardo to the list of
97            translators.
98    
99    
100    2004-01-22  Frank Koormann  <[email protected]>
101    
102            * Doc/manual/thuban-manual.xml: Added section on installation of
103            Thuban under Win32 systems. Fixed image path references in the postgis
104            section. Some minor source formattings.
105    
106    2004-01-21  Frank Koormann  <[email protected]>
107    
108            Make Thuban remember path selections (at least for one application run).
109    
110            * Thuban/UI/application.py (Application.OnInit): Initialize path as a
111            attribute of application object. Path is a dictionary of
112            strings, currently with the items "data" and "projection".  
113            (Application.SetPath): New, stores path for the specified item.
114            (Application.Path): New, return path for the specified item.
115    
116            * Thuban/UI/mainwindow.py
117            (MainWindow.OpenSession, MainWindow.SaveSessionAs,
118            MainWindow.AddLayer, MainWindow.AddRasterLayer,
119            MainWindow.TableOpen): Access "data" path information of the
120            application.
121            
122            * Thuban/UI/projdialog.py (ProjFrame._OnImport, ProjFrame._OnExport):
123            Access "projection" path information of the application.
124    
125    2004-01-05  Bernhard Herzog  <[email protected]>
126    
127            * po/ru.po: Updated translations from Alex Shevlakov
128    
129    2004-01-05  Bernhard Herzog  <[email protected]>
130    
131            * po/Makefile, po/README: Move the description of how to generate
132            the translation statistics to the README.
133    
134    2003-12-23  Bernhard Herzog  <[email protected]>
135    
136            * NEWS: Update for 1.0.0
137    
138            * po/it.po: Another update from Maurizio Napolitano
139    
140    2003-12-23  Bernhard Herzog  <[email protected]>
141    
142            * po/it.po: Updated translation from Maurizio Napolitano
143    
144    2003-12-23  Bernhard Herzog  <[email protected]>
145    
146            * Thuban/UI/join.py (JoinDialog.__init__): Mark one more string
147            for translation
148    
149            * Thuban/UI/mainwindow.py (MainWindow.TableRename)
150            (MainWindow.RenameMap, MainWindow.RenameLayer): Mark some more
151            strings for translation
152    
153            * po/de.po: Update with the newly marked strings.
154    
155    2003-12-22  Bernhard Herzog  <[email protected]>
156    
157            * HOWTO-Release: Fix the places where version numbers have to be
158            updated
159    
160    2003-12-22  Bernhard Herzog  <[email protected]>
161    
162            * setup.py (setup call): 1.0.0, yeah!
163    
164            * Thuban/version.py (longversion): 1.0.0, yeah!
165    
166            * Thuban/Model/load.py (SessionLoader.__init__): Accept the
167            1.0.0 namespace too
168    
169            * Thuban/Model/save.py (SessionSaver.write_session): Save with
170            1.0.0 namespace
171    
172            * test/test_load.py (LoadSessionTest.dtd)
173            (TestSingleLayer.file_contents)
174            (TestNonAsciiColumnName.file_contents)
175            (TestLayerVisibility.file_contents)
176            (TestClassification.file_contents, TestLabels.file_contents)
177            (TestLayerProjection.file_contents)
178            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
179            (TestLabelLayer.file_contents, TestPostGISLayer.file_contents)
180            (TestPostGISLayerPassword.file_contents)
181            (TestLoadError.file_contents, TestLoadError.test): Update for
182            1.0.0 namespace
183    
184            * test/test_save.py (SaveSessionTest.dtd)
185            (SaveSessionTest.testEmptySession)
186            (SaveSessionTest.testSingleLayer)
187            (SaveSessionTest.testLayerProjection)
188            (SaveSessionTest.testRasterLayer)
189            (SaveSessionTest.testClassifiedLayer)
190            (SaveSessionTest.test_dbf_table)
191            (SaveSessionTest.test_joined_table)
192            (SaveSessionTest.test_save_postgis): Update for 1.0.0 namespace
193    
194    2003-12-22  Bernhard Herzog  <[email protected]>
195    
196            * Thuban/Model/load.py (SessionLoader.start_label): Make sure the
197            alignment flags are byte strings not unicode and that they have
198            valid values
199    
200            * test/test_load.py (TestLabelLayer): New. Test loading (and
201            indirectly saving) of maps with labels.
202    
203    2003-12-22  Bernhard Herzog  <[email protected]>
204    
205            * Thuban/UI/tableview.py (TableGrid.OnDestroy)
206            (TableGrid.__init__): Handle EVT_WINDOW_DESTROY in the grid to
207            unsubscribe all subscribers.
208            (LayerTableFrame.OnDestroy): Do not unsubscribe any messages from
209            self.grid since it may already have been destroyed.
210            Fixes RT #2256
211    
212    2003-12-19  Bernhard Herzog  <[email protected]>
213    
214            * po/fr.po, po/es.po: Updated translations from Daniel Calvelo
215    
216    2003-12-16  Bernhard Herzog  <[email protected]>
217            
218            * debian/bitmappath.patch, debian/setup.py.patch:
219                    added to ensure compliance with FHS for debian
220            * debian/rules, debian/changelog:
221                added patches in rules to ensure compliance with FHS for debian
222    
223    2003-12-16  Bernhard Herzog  <[email protected]>
224    
225            * po/Makefile (mo): Make the output a bit nicer so that it prints
226            statistics about the translations. Add a comment how produce even
227            nicer statistics with sed.
228    
229    2003-12-09  Frank Koormann   <[email protected]>
230    
231            * Resources/Projections/defaults.proj:
232            French projection sample with correct accents (UNICODE).
233    
234    2003-12-05  Bernhard Herzog  <[email protected]>
235    
236            * MANIFEST.in: Add the devtools directory
237    
238            * setup.py (setup call): Use license instead of licence. This
239            silences a deprecation warning on Python 2.3
240    
241    2003-12-05  Frank Koormann   <[email protected]>
242    
243            Documentation synced with 1.0rc1
244    
245            * Doc/manual/thuban-manual.xml:
246            Minor formatting changes and references to database layers .
247            Introduction.Internationalization: New section on i18n.
248            MapManagement.AddingandRemovingLayers: Added item on database layers.  
249            MapManagement.TheLegend: Added section and screenshot on popup menu.
250            ProjectionManagement: Updated screenshot and sentence on EPSG.
251            Appendix.SupportedDataSources: Added PostGIS.
252            Appendix.WorkingwithPostGIS: New section.
253    
254            * Doc/manual/images/6_projection.png: Updated screenshot including
255            EPSG checkboxes.
256    
257            * Doc/manual/images/3_5_popup_menu.png: New, popup menu screenshot.
258    
259            * Doc/manual/images/app_postgis_add_layer.png,
260            Doc/manual/images/app_postgis_db_add.png,
261            Doc/manual/images/app_postgis_db_management.png:
262            New screenshots focussing on database layers
263    
264    2003-12-05  Frank Koormann   <[email protected]>
265    
266            * Thuban/UI/projdialog.py (load_user_proj): If user.proj is missing
267            write warning to stderr instead of rising a warning dialog
268    
269    2003-12-03  Bernhard Herzog  <[email protected]>
270    
271            Fix for RT #2243
272    
273            * Thuban/UI/mainwindow.py (MainWindow.has_selected_shape_layer):
274            New. Like has_selected_layer but for shape layers only
275            (_has_selected_shape_layer): New. Like _has_selected_layer but for
276            shape layers only
277            (layer_show_table command, layer_jointable command): Use these
278            commands should only be available for shape layers
279    
280    2003-12-03  Bernhard Herzog  <[email protected]>
281    
282            * Thuban/UI/mainwindow.py (MainWindow.Unsubscribe): Deal with
283            publishers that are wx objects and may have been destroyed by wx
284            already. Fixes RT #2242.
285    
286    2003-12-03  Bernhard Herzog  <[email protected]>
287    
288            * po/ru.po: Updates from Alex Shevlakov
289    
290    2003-12-03  Silke Reimer <silkeintevation.de>
291    
292            * debian/control, debian/changelog: Added gdal-support to
293                    debian package, updated to new thuban version
294    
295    
296    2003-12-03  Bernhard Herzog  <[email protected]>
297    
298            * Thuban/Lib/version.py: New. Module for version number
299            manipulations. The version of make_tuple here also deals better
300            with more unusual version number strings, such as e.g.
301            "1.2+cvs20031111"
302    
303            * Thuban/version.py (make_tuple): Removed. It's now in
304            Thuban.Lib.version. Use that implementation instead.
305    
306            * test/test_lib_version.py: New. Tests for Thuban/Lib/version.py
307    
308    2003-12-02  Bernhard Herzog  <[email protected]>
309    
310            * MANIFEST.in: Add debian files
311    
312            * setup.py (setup call): Add packages for the Extensions so that
313            they're installed too
314            (data_files): Add READMEs and sample data from some Extensions
315    
316            * NEWS: Add note about the extensions in binary packages
317    
318    2003-12-02  Bernhard Herzog  <[email protected]>
319    
320            * Thuban/Model/save.py (SessionSaver.write_session): Save files
321            with the thuban-1.0rc1
322    
323            * Thuban/Model/load.py (SessionLoader.__init__): Recognize the
324            thuban-1.0rc1 namespace too
325    
326            * test/test_save.py (SaveSessionTest.dtd)
327            (SaveSessionTest.testEmptySession)
328            (SaveSessionTest.testSingleLayer)
329            (SaveSessionTest.testLayerProjection)
330            (SaveSessionTest.testRasterLayer)
331            (SaveSessionTest.testClassifiedLayer)
332            (SaveSessionTest.test_dbf_table)
333            (SaveSessionTest.test_joined_table)
334            (SaveSessionTest.test_save_postgis): Update to thuban-1.0rc1
335            namespace
336    
337            * test/test_load.py (LoadSessionTest.dtd): Update to thuban-1.0rc1
338            namespace
339            (TestSingleLayer.file_contents)
340            (TestNonAsciiColumnName.file_contents)
341            (TestLayerVisibility.file_contents)
342            (TestClassification.file_contents, TestLabels.file_contents)
343            (TestLayerProjection.file_contents)
344            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
345            (TestPostGISLayer.file_contents)
346            (TestPostGISLayerPassword.file_contents)
347            (TestLoadError.file_contents, TestLoadError.test): Update to
348            thuban-1.0rc1 namespace
349    
350    2003-12-01  Bernhard Herzog  <[email protected]>
351    
352            * setup.py (proj4_prefix, wx_prefix, gdal_prefix): Fix these for
353            nt to better match Intevation's current w32 setup
354    
355            * HOWTO-Release: Add note about updating MANIFEST.in
356    
357            * MANIFEST.in: Add the Extensions
358    
359            * NEWS: Update for 1.0rc1
360    
361    2003-12-01  Bernhard Herzog  <[email protected]>
362    
363            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Change the wild
364            cards for the dialog so that shapefiles ending in all uppercase
365            SHP are listed too
366    
367    2003-11-28  Bernhard Herzog  <[email protected]>
368    
369            * Thuban/version.py (longversion): Update to 1.0rc1
370    
371            * setup.py (setup call): Update version to 1.0rc1. Use the
372            [email protected] email address as author email instead of my
373            personal one.
374    
375    2003-11-28  Bernhard Herzog  <[email protected]>
376    
377            * po/de.po: Update german translation.
378    
379    2003-11-28  Bernhard Herzog  <[email protected]>
380    
381            Unify the filenames stored in .thuban files so that the .thuban
382            files are more platform independend
383    
384            * Thuban/Model/save.py (unify_filename): New. Unify filenames so
385            that they can be used on both windows and unix
386            (SessionSaver.prepare_filename): New. Handle all filename
387            transformations for filenames stored in the thuban file
388            (SessionSaver.write_data_containers, SessionSaver.write_layer):
389            Use prepare_filename
390    
391            * test/test_save.py (SaveSessionTest.testSingleLayer)
392            (SaveSessionTest.testLayerProjection)
393            (SaveSessionTest.testRasterLayer)
394            (SaveSessionTest.testClassifiedLayer)
395            (SaveSessionTest.test_dbf_table)
396            (SaveSessionTest.test_joined_table): Filenames are always stored
397            with slashes on all currently supported platforms so adapt all
398            tests to this
399    
400            * test/test_load.py (LoadSessionTest.filenames): With the new
401            filename scheme the filenames in the tests should be
402            understandable on all currently supported platforms so we turn
403            this into an empty list because we don't have to normalize them
404            anymore
405    
406    2003-11-28  Bernhard Herzog  <[email protected]>
407    
408            * test/test_layer.py (TestLayer.test_arc_layer_with_projection):
409            Add the ellipsoid to the projection since some Proj versions
410            complain if it's missing.
411    
412    2003-11-27  Bernhard Herzog  <[email protected]>
413    
414            Corect some bounding box projection problems
415    
416            * Thuban/Model/proj.py (Projection.InverseBBox): New. Inverse
417            version of ForwardBBox
418            (Projection._transform_bbox): New. common implementation of
419            ForwardBBox and InverseBBox
420            (Projection.ForwardBBox): Use _transform_bbox.
421    
422            * test/test_proj.py (TestProjection.test): Add test for
423            InverseBBox
424    
425            * Thuban/Model/layer.py (Layer.LatLongBoundingBox)
426            (Layer.ShapesBoundingBox, RasterLayer.LatLongBoundingBox): Use the
427            new InverseBBox method to determine the unprojected bounding box
428            (Layer.ShapesInRegion): Use the ForwardBBox method to project the
429            bbox.
430    
431            * test/test_layer.py (TestLayer.test_point_layer_with_projection):
432            Removed.
433            (TestLayer.test_arc_layer_with_projection): New. This test is
434            better able to test whether bounding boxes are projected correctly
435            than test_point_layer_with_projection
436    
437            * Thuban/UI/viewport.py (ViewPort.map_projection_changed): Use
438            InverseBBox to unproject bboxes
439    
440    2003-11-25  Bernhard Herzog  <[email protected]>
441    
442            * Thuban/UI/about.py (About.__init__): Make sure we have ASCII
443            source code.
444    
445    2003-11-25  Bernhard Herzog  <[email protected]>
446    
447            * Thuban/Model/layer.py (Layer.__getattr__): Removed. It was only
448            there for backwards compatibility and all code relying on that
449            should have been updated by now.
450    
451    2003-11-25  Bernhard Herzog  <[email protected]>
452    
453            * test/test_load.py (TestClassification.test): Add the missing
454            round trip test.
455            (TestClassification.file_contents): Update to the newest file
456            format
457    
458    2003-11-25  Bernhard Herzog  <[email protected]>
459    
460            Add very experimental (and possibly dangerous) extension to draw
461            polygons:
462    
463            * Extensions/drawshape/README: New. Brief installation
464            instructions
465    
466            * Extensions/drawshape/drawshape.py: New. Implementation of the
467            drawshape extensions
468    
469            * Extensions/drawshape/patch.diff: Patch to apply before the
470            extension can be used.
471    
472    2003-11-24  Bernhard Herzog  <[email protected]>
473    
474            * Thuban/Model/data.py (ShapefileStore._open_shapefile)
475            (ShapefileStore.__init__): Factor opening the shapefile into a
476            separate method (the new _open_shapefile). This makes the code a
477            bit more readable but the real reason is that it makes some evil
478            hacks easier. :-)
479    
480    2003-11-24  Bernhard Herzog  <[email protected]>
481    
482            * Thuban/Model/load.py (SessionLoader.check_attrs): If no
483            converter is specified for an attribute assume it's a string
484            containing only Latin1 characters. Update doc-string accordingly.
485            This change should fix many places where unicode objects might
486            accidentally enter Thuban.
487    
488            * test/test_load.py (TestNonAsciiColumnName): New test to check
489            what happens with column names in DBF files that contain non-ascii
490            characters
491    
492    2003-11-21  Bernhard Herzog  <[email protected]>
493    
494            Enable the experimental attribute editing again and introduce a
495            command line switch to actually activate it
496    
497            * Thuban/UI/main.py (options): New. Container for options set on
498            the commmand line
499            (main): Add the --enable-attribute-editing flag.
500    
501            * Thuban/UI/identifyview.py (IdentifyView.__init__): If attribute
502            editing is enabled use the grid ctrl which allows editing of the
503            values
504    
505            * Thuban/Model/transientdb.py (AutoTransientTable.write_record):
506            New. Just delegate this to the underlying table.
507    
508    2003-11-20  Bernhard Herzog  <[email protected]>
509    
510            * test/test_proj.py (ProjFileReadTests.test_read_unreadable_file):
511            Skip this test if run under non-posix systems since it only works
512            there
513    
514    2003-11-19  Bernhard Herzog  <[email protected]>
515    
516            * Thuban/Model/resource.py: Rework the way gdal support is
517            determined so that we can give a reason in the about why gdal is
518            not supported.
519            (gdal_support_status): New. Variable holding a string with the
520            reason for no gdal support
521    
522            * Thuban/UI/about.py (About.__init__): Add the reason why gdal is
523            not supported to the message
524    
525    2003-11-19  Bernhard Herzog  <[email protected]>
526    
527            Remove the old table interface and its test cases
528    
529            * Thuban/Model/table.py (OldTableInterfaceMixin): Removed.
530            (DBFTable, MemoryTable): Do not derive from OldTableInterfaceMixin
531            anymore
532    
533            * Thuban/Model/transientdb.py (TransientTableBase)
534            (AutoTransientTable): Do not derive from OldTableInterfaceMixin
535            anymore
536    
537            * test/test_table.py: Removed since the old interface it tests is
538            gone.
539    
540            * test/runtests.py (main): The old table interface is gone and
541            with it the deprecation warnings so remove the code that turns
542            these warnings into errors
543    
544    2003-11-19  Bernhard Herzog  <[email protected]>
545    
546            * test/test_table.py: Revert to revision 1.5 again. Changing the
547            tests to use the new table interface is completely wrong since the
548            whole purpose of the tests in this module is to test the old
549            interface.
550    
551    2003-11-18  Bernhard Herzog  <[email protected]>
552    
553            * Thuban/Model/postgisdb.py (PostGISConnection.MatchesParameters):
554            New. Test whether the connection matches a set of connection
555            parameters
556    
557            * Thuban/UI/dbdialog.py (DBFrame.conns_changed): Fix doc-string
558            (DBFrame.OnAdd): Use the new MatchesParameters method when looking
559            for existing connections with the same parameters and break out of
560            the loop correctly.
561    
562            * test/test_postgis_db.py (TestBriefDescription)
563            (TestPostGISSimple.test_brief_description): Rename
564            TestBriefDescription to TestPostGISSimple and the test method to
565            test_brief_description so that we can add more test methods.
566            (TestPostGISSimple.test_matches_parameters): New. Test the new
567            MatchesParameters method
568    
569    2003-11-18  Bernhard Herzog  <[email protected]>
570    
571            * Thuban/Lib/connector.py (Publisher): Introduce a new flag,
572            _was_destroyed, to indicate whether an publisher instance has
573            already been destroyed.
574            (Publisher.Unsubscribe): Only disconnect if the publisher has not
575            been destroyed yet.
576            (Publisher.Destroy): Set the _was_destroyed flag to true.
577    
578            * test/test_connector.py
579            (TestPublisher.test_unsubscribe_after_destroy): New. Test that
580            calling Unsubscribe after Destroy doesn't raise an exception
581    
582    2003-11-14  Bernhard Herzog  <[email protected]>
583    
584            * Thuban/UI/identifyview.py (IdentifyView.selected_shape): Fix
585            typo in doc-string
586    
587    2003-11-13  Bernhard Herzog  <[email protected]>
588    
589            Quote table and column names properly for postgis.
590    
591            * Thuban/Model/postgisdb.py (quote_identifier): New. Function to
592            quote an identifier for use in an sql statement
593            (PostGISColumn.__init__): Add the quoted_name attribute
594            (PostGISTable.__init__): New instance variable quoted_tablename
595            (PostGISTable._fetch_table_information): Use the quoted table
596            name. New isntance variable quoted_geo_col with a quoted version
597            of geometry_column
598            (PostGISTable.NumRows, PostGISTable.RowIdToOrdinal)
599            (PostGISTable.RowOrdinalToId): Use the quoted table name
600            (PostGISTable.ReadValue, PostGISTable.ValueRange)
601            (PostGISTable.UniqueValues, PostGISTable.SimpleQuery)
602            (PostGISShapeStore.BoundingBox, PostGISShapeStore.Shape)
603            (PostGISShapeStore.AllShapes, PostGISShapeStore.ShapesInRegion):
604            Use quoted table and column names
605    
606            * test/test_postgis_db.py (TestPostGISSpecialCases)
607            (TestPostGISIgnoredColumns): Rename the class to
608            TestPostGISSpecialCases because that better describes the new
609            cases
610            (TestPostGISSpecialCases.test_unsupported_types)
611            (TestPostGISSpecialCases.test): Rename the method to
612            test_unsupported_types because we need a more descriptive name now
613            that there are more methods
614            (TestPostGISSpecialCases.test_table_name_quoting)
615            (TestPostGISSpecialCases.test_column_name_quoting)
616            (TestPostGISSpecialCases.test_shapestore_name_quoting): New test
617            cases to test quoting of table and column names in PostGISTable
618            and PostGISShapeStore
619    
620            * test/postgissupport.py
621            (skip_if_addgeometrycolumn_does_not_use_quote_ident): New. Skip if
622            AddGeometryColumn desn't support table or column names with sapces
623            or double quotes
624    
625    2003-11-12  Jan-Oliver Wagner <[email protected]>
626    
627            * Extensions/wms/__init__.py: New: Init to make this
628            directory a package.
629    
630            * Extensions/wms/wms.py: New: Provide layers via OGC WMS.
631    
632    2003-11-11  Bernhard Herzog  <[email protected]>
633    
634            * Thuban/Model/resource.py (EPSG_DEPRECATED_PROJ_FILE): New.
635            Constant for the file woth deprecated epsg projections
636            (get_system_proj_file): Update doc-string
637    
638            * Thuban/UI/projdialog.py (ProjFrame.build_dialog): Add a space
639            above the EPS widgets, introduce a check box for the deprecated
640            eps projections and a label for the epsg widgets
641            (ProjFrame._OnShowEPSG): Handle the deprecated EPSG projections
642            too
643    
644    2003-11-11  Bernhard Herzog  <[email protected]>
645    
646            Avoid warnings when run under Python 2.3
647    
648            * Thuban/UI/baserenderer.py (BaseRenderer.draw_point_shape)
649            (BaseRenderer.draw_label_layer): Coordinates must be ints.
650    
651            * Thuban/UI/renderer.py (MapRenderer.make_point): Turn this into a
652            real method so that we can convert to int.
653            (MapRenderer.label_font): The font size mist be an int.
654    
655            * Thuban/UI/common.py (Color2wxColour): The color values must be
656            ints. Also, remove the unnecessary asserts.
657    
658            * test/test_load_0_8.py (TestUnicodeStrings.file_contents)
659            (TestUnicodeStrings.test): Python source code should not contain
660            non-ascii characters unless an encoding is specified in the file.
661            Therefore use \x escapes in the string literals for non-ascii
662            characters.
663    
664    2003-11-11  Bernhard Herzog  <[email protected]>
665    
666            * Thuban/Model/resource.py (get_system_proj_file): Add a filename
667            parameter so that this function can be used for all proj files in
668            Resource/Projections
669            (DEFAULT_PROJ_FILE, EPSG_PROJ_FILE): New. Predefined filenames for
670            get_system_proj_file
671    
672            * Thuban/UI/projdialog.py (ProjFrame.__init__): Instead of one
673            ProjFile self.__sysProjFile use a dictionary of system ProjFile
674            objects self._sys_proj_files
675            (ProjFrame.build_dialog): Adapt to the new changes in the
676            ProjectionList constructor. Add a check button to toggle whether
677            EPSG projections are shown
678            (ProjFrame._OnShowEPSG): New. Handler for the epsg check button
679            events.
680            (ProjFrame.load_user_proj, ProjFrame.load_system_proj): Only show
681            the busy cursor if the files have not yet been loaded by the
682            dialog.
683            (ProjFrame.load_system_proj): Add a parameter for the name of the
684            proj file. Maintain the dictionary of system projections
685            self._sys_proj_files
686    
687            * Thuban/UI/projlist.py (ProjectionList): Merge the system_projs,
688            user_projs parameters into one parameter proj_files which is a
689            list of proj files.
690            (ProjectionList._subscribe_proj_files)
691            (ProjectionList._unsubscribe_proj_files): New. Move
692            subscription/unsubscription of projfile messages to separate
693            methods
694            (ProjectionList.Destroy): The unsubscribe is now done in
695            _unsubscribe_proj_files
696            (ProjectionList.update_projections): We now have a list of proj
697            file objects
698            (ProjectionList.SetProjFiles): New method to set a new list of
699            proj file objects
700    
701            * test/test_proj.py (ProjFileReadTests.test_get_system_proj_file):
702            Specify explicitly which system proj file to load.
703    
704    2003-11-11  Bernhard Herzog  <[email protected]>
705    
706            * Thuban/Model/load.py (SessionLoader.Destroy): New. Clear all
707            instance variables to cut cyclic references. The GC would have
708            collected the loader eventually but it can happen that it doesn't
709            run at all until thuban is closed (2.3 but not 2.2 tries a bit
710            harder and forces a collection when the interpreter terminates)
711            (load_session): Call the handler's Destroy method to make sure
712            that it gets garbage collected early. Otherwise it will be
713            collected very late if at all and it holds some references to e.g.
714            shapestores and the session which can lead to leaks (of e.g. the
715            temporary files)
716    
717            * test/test_load.py (TestSingleLayer.test_leak): New. test for the
718            resource leak in load_session
719    
720    2003-11-10  Bernhard Herzog  <[email protected]>
721    
722            * Thuban/UI/baserenderer.py: Add a way to specify how layers in
723            extensions are to be rendered.
724            (_renderer_extensions): New. List with renderer for layers in
725            extensions
726            (add_renderer_extension): New. Add a renderer extension
727            (init_renderer_extensions): New. Init the renderer extensions
728            (BaseRenderer.render_map_incrementally): Search
729            _renderer_extensions for how to draw unknown layer types
730            (BaseRenderer.draw_raster_data): Add format parameter so that
731            formats other than BMP can be drawn
732            (BaseRenderer.draw_raster_layer): Pass an explicit format to
733            draw_raster_data
734    
735            * Thuban/UI/renderer.py (raster_format_map): New. Mapping form the
736            strings of the format parameter of draw_raster_data method to wx
737            constants
738            (MapRenderer.draw_raster_data): Add the format parameter and use
739            raster_format_map to map it to the right wxwindows constant for
740            wxImageFromStream
741    
742            * test/test_baserenderer.py (SimpleRenderer.draw_raster_data): Add
743            the format parameter and record it
744            (TestBaseRenderer.test_raster_no_projection): check the format
745            paramter of the draw_raster_data method
746            (TestBaseRenderer.test_renderer_extension): New. Test the renderer
747            extension facility
748    
749    2003-11-07  Bernhard Herzog  <[email protected]>
750    
751            Tweak the usage of the sqlite database to make common use cases
752            more responsive. In most cases copying the data to the sqlite
753            database takes so long that using sqlite doesn't have enough
754            advantages.
755    
756            * Thuban/Model/transientdb.py (TransientTableBase.ValueRange): Add
757            comments about performance and query the min and max in separate
758            statements because only that way will indexes be used.
759            (TransientTableBase.UniqueValues): Add some comments about
760            performance.
761            (AutoTransientTable.ValueRange, AutoTransientTable.UniqueValues):
762            Do not copy the data to the transient DB but use the transient
763            copy if it exists. See the new comments for the performance trade
764            offs
765    
766            * test/test_transientdb.py
767            (TestTransientTable.test_auto_transient_table): Make sure that the
768            data is copied to the transient database at some point.
769    
770    2003-11-03  Bernhard Herzog  <[email protected]>
771    
772            * Thuban/Model/data.py (ShapefileStore.ShapesInRegion): Bind some
773            globals to locals so that it's a bit faster
774    
775    2003-11-03  Bernhard Herzog  <[email protected]>
776    
777            * Thuban/UI/baserenderer.py
778            (BaseRenderer.draw_shape_layer_incrementally): Use the ReadValue
779            method. ReadValue is faster than ReadRowAsDict since it only reads
780            one cell especially now that the dbf file objects actually
781            implement it.
782    
783            * Thuban/Model/table.py (DBFTable.ReadValue): Use the new
784            read_attribute method of the dbf objects
785    
786    2003-11-03  Bernhard Herzog  <[email protected]>
787    
788            * Extensions/profiling/profiling.py (popup_dialog_box): New config
789            variable to indicate whether the result should be shown in a
790            dialog box
791            (profile_screen_renderer, time_screen_renderer): Only show a
792            dialog box if popup_dialog_box is true.
793            (profile_screen_renderer): Flush stdout after the printing the
794            first part of the "profiling..." message
795    
796            * Thuban/UI/baserenderer.py
797            (BaseRenderer.draw_shape_layer_incrementally): Cache the pens and
798            brushes for the groups so that they're not created over and over
799            again
800    
801            * Thuban/Model/classification.py (Classification.__getattr__)
802            (Classification._compile_classification)
803            (Classification._clear_compiled_classification): New. Methods to
804            manage a 'compiled' representation of the classification groups
805            which is created on demand
806            (Classification.InsertGroup, Classification.RemoveGroup)
807            (Classification.ReplaceGroup): reset the compiled representation
808            (Classification.FindGroup): Use the compiled representation to
809            find the matching group
810            (ClassGroupRange.GetRangeTuple): New. Return the range as a tuple
811    
812    2003-10-31  Bernhard Herzog  <[email protected]>
813    
814            * Thuban/Model/classification.py (Classification.SetDefaultGroup):
815            Send a CLASS_CHANGED message
816            (Classification.RemoveGroup): Send a CLASS_CHANGED message and do
817            not return the removed group since it wasn't used.
818    
819            * test/test_classification.py
820            (TestClassification.test_set_default_group): New. Test the
821            SetDefaultGroup method
822            (TestClassification.test_insert_group): New. Test the InsertGroup
823            method
824            (TestClassification.test_remove_group): New. Test the RemoveGroup
825            method
826            (TestClassification.test_replace_group): New. Test the
827            ReplaceGroup method
828    
829    2003-10-31  Bernhard Herzog  <[email protected]>
830    
831            * test/test_classification.py (TestClassification.setUp):
832            Subscribe to the CLASS_CHANGED messages
833            (TestClassification.tearDown): New. Destroy the classification
834            properly
835            (TestClassification.test_defaults): Add tests for the default line
836            width and whether no messages were sent yet
837            (TestClassification.test_set_default_properties): Add tests for
838            messages and setting the default line width
839            (TestClassification.test_add_singleton)
840            (TestClassification.test_add_range)
841            (TestClassification.test_multiple_groups): Add tests for messages
842    
843    2003-10-31  Bernhard Herzog  <[email protected]>
844    
845            Some more refactoring in preparation for new tests:
846    
847            * test/test_classification.py (TestClassification.setUp): New.
848            Instantiate the classification here. Update the test methods
849            accordingly.
850            (TestClassification.test_multiple_groups): Make sure that the two
851            singletons matching 1 are considered different.
852    
853    2003-10-31  Bernhard Herzog  <[email protected]>
854    
855            * test/test_classification.py (red, green, blue): New. These
856            constants were used in several cases. Update the relevant methods.
857            (TestClassification.test_defaults)
858            (TestClassification.test_set_default_properties)
859            (TestClassification.test_add_singleton)
860            (TestClassification.test_add_range)
861            (TestClassification.test_multiple_groups)
862            (TestClassification.test_deepcopy): New. These were formerly all
863            part of the single method test.
864            (TestClassification.test_deepcopy): Removed.
865            (TestClassIterator): Removed. The test case is now a method of
866            TestClassification since it tests part of the public interface of
867            Classification
868            (TestClassification.test_iterator): New. Used to be
869            TestClassIterator effectively
870    
871    2003-10-31  Jan-Oliver Wagner <[email protected]>
872    
873            GUIfied the functions of the profiling extension.
874    
875            * /Extensions/profiling/__init__.py: New: Init to make this
876            directory a package.
877    
878            * Extensions/profiling/profiling.py: Moved menu entries to
879            the Extensions menu. Applied _() for strings.
880            (profile_screen_renderer): Catch the detailed printout and present
881            it in a dialog.
882            (time_screen_renderer): Raise a dialog to present the result instead
883            of printing it to stdout.
884    
885    2003-10-31  Bernhard Herzog  <[email protected]>
886    
887            * test/test_classification.py (TestClassGroupProperties)
888            (TestClassGroup, TestClassGroupDefault, TestClassGroupRange)
889            (TestClassGroupSingleton, TestClassIterator, TestClassification):
890            Split TestClassification into several classes, one for each class
891            being tested. TestClassification itself now only tests
892            Classification. This split makes changes to the tests a bit easier
893    
894    2003-10-31  Bernhard Herzog  <[email protected]>
895    
896            * Extensions/profiling/profiling.py: New. Extension to measure
897            Thuban performance
898    
899    2003-10-31  Frank Koormann <[email protected]>
900    
901            Added two items to legend popup menu: Remove Layer and Show Layer Table
902    
903            * Thuban/UI/legend.py (LegendPanel._OnRemoveLayer,
904            LegendPanel._OnShowTable): New event handlers, call the corresponding
905            mainwindow methods.
906            (LegendTree._OnRightClick): Added items to popup menu.
907    
908  2003-10-30  Bernhard Herzog  <[email protected]>  2003-10-30  Bernhard Herzog  <[email protected]>
909    
910          * Thuban/UI/dialogs.py (ThubanFrame.__init__): Handle          * Thuban/UI/dialogs.py (ThubanFrame.__init__): Handle

Legend:
Removed from v.1894  
changed lines
  Added in v.2064

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26