/[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 1760 by bh, Fri Sep 26 18:36:12 2003 UTC revision 2039 by bh, Mon Dec 22 18:03:39 2003 UTC
# Line 1  Line 1 
1    2003-12-22  Bernhard Herzog  <[email protected]>
2    
3            * HOWTO-Release: Fix the places where version numbers have to be
4            updated
5    
6    2003-12-22  Bernhard Herzog  <[email protected]>
7    
8            * setup.py (setup call): 1.0.0, yeah!
9    
10            * Thuban/version.py (longversion): 1.0.0, yeah!
11    
12            * Thuban/Model/load.py (SessionLoader.__init__): Accept the
13            1.0.0 namespace too
14    
15            * Thuban/Model/save.py (SessionSaver.write_session): Save with
16            1.0.0 namespace
17    
18            * test/test_load.py (LoadSessionTest.dtd)
19            (TestSingleLayer.file_contents)
20            (TestNonAsciiColumnName.file_contents)
21            (TestLayerVisibility.file_contents)
22            (TestClassification.file_contents, TestLabels.file_contents)
23            (TestLayerProjection.file_contents)
24            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
25            (TestLabelLayer.file_contents, TestPostGISLayer.file_contents)
26            (TestPostGISLayerPassword.file_contents)
27            (TestLoadError.file_contents, TestLoadError.test): Update for
28            1.0.0 namespace
29    
30            * test/test_save.py (SaveSessionTest.dtd)
31            (SaveSessionTest.testEmptySession)
32            (SaveSessionTest.testSingleLayer)
33            (SaveSessionTest.testLayerProjection)
34            (SaveSessionTest.testRasterLayer)
35            (SaveSessionTest.testClassifiedLayer)
36            (SaveSessionTest.test_dbf_table)
37            (SaveSessionTest.test_joined_table)
38            (SaveSessionTest.test_save_postgis): Update for 1.0.0 namespace
39    
40    2003-12-22  Bernhard Herzog  <[email protected]>
41    
42            * Thuban/Model/load.py (SessionLoader.start_label): Make sure the
43            alignment flags are byte strings not unicode and that they have
44            valid values
45    
46            * test/test_load.py (TestLabelLayer): New. Test loading (and
47            indirectly saving) of maps with labels.
48    
49    2003-12-22  Bernhard Herzog  <[email protected]>
50    
51            * Thuban/UI/tableview.py (TableGrid.OnDestroy)
52            (TableGrid.__init__): Handle EVT_WINDOW_DESTROY in the grid to
53            unsubscribe all subscribers.
54            (LayerTableFrame.OnDestroy): Do not unsubscribe any messages from
55            self.grid since it may already have been destroyed.
56            Fixes RT #2256
57    
58    2003-12-19  Bernhard Herzog  <[email protected]>
59    
60            * po/fr.po, po/es.po: Updated translations from Daniel Calvelo
61    
62    2003-12-16  Bernhard Herzog  <[email protected]>
63            
64            * debian/bitmappath.patch, debian/setup.py.patch:
65                    added to ensure compliance with FHS for debian
66            * debian/rules, debian/changelog:
67                added patches in rules to ensure compliance with FHS for debian
68    
69    2003-12-16  Bernhard Herzog  <[email protected]>
70    
71            * po/Makefile (mo): Make the output a bit nicer so that it prints
72            statistics about the translations. Add a comment how produce even
73            nicer statistics with sed.
74    
75    2003-12-09  Frank Koormann   <[email protected]>
76    
77            * Resources/Projections/defaults.proj:
78            French projection sample with correct accents (UNICODE).
79    
80    2003-12-05  Bernhard Herzog  <[email protected]>
81    
82            * MANIFEST.in: Add the devtools directory
83    
84            * setup.py (setup call): Use license instead of licence. This
85            silences a deprecation warning on Python 2.3
86    
87    2003-12-05  Frank Koormann   <[email protected]>
88    
89            Documentation synced with 1.0rc1
90    
91            * Doc/manual/thuban-manual.xml:
92            Minor formatting changes and references to database layers .
93            Introduction.Internationalization: New section on i18n.
94            MapManagement.AddingandRemovingLayers: Added item on database layers.  
95            MapManagement.TheLegend: Added section and screenshot on popup menu.
96            ProjectionManagement: Updated screenshot and sentence on EPSG.
97            Appendix.SupportedDataSources: Added PostGIS.
98            Appendix.WorkingwithPostGIS: New section.
99    
100            * Doc/manual/images/6_projection.png: Updated screenshot including
101            EPSG checkboxes.
102    
103            * Doc/manual/images/3_5_popup_menu.png: New, popup menu screenshot.
104    
105            * Doc/manual/images/app_postgis_add_layer.png,
106            Doc/manual/images/app_postgis_db_add.png,
107            Doc/manual/images/app_postgis_db_management.png:
108            New screenshots focussing on database layers
109    
110    2003-12-05  Frank Koormann   <[email protected]>
111    
112            * Thuban/UI/projdialog.py (load_user_proj): If user.proj is missing
113            write warning to stderr instead of rising a warning dialog
114    
115    2003-12-03  Bernhard Herzog  <[email protected]>
116    
117            Fix for RT #2243
118    
119            * Thuban/UI/mainwindow.py (MainWindow.has_selected_shape_layer):
120            New. Like has_selected_layer but for shape layers only
121            (_has_selected_shape_layer): New. Like _has_selected_layer but for
122            shape layers only
123            (layer_show_table command, layer_jointable command): Use these
124            commands should only be available for shape layers
125    
126    2003-12-03  Bernhard Herzog  <[email protected]>
127    
128            * Thuban/UI/mainwindow.py (MainWindow.Unsubscribe): Deal with
129            publishers that are wx objects and may have been destroyed by wx
130            already. Fixes RT #2242.
131    
132    2003-12-03  Bernhard Herzog  <[email protected]>
133    
134            * po/ru.po: Updates from Alex Shevlakov
135    
136    2003-12-03  Silke Reimer <silkeintevation.de>
137    
138            * debian/control, debian/changelog: Added gdal-support to
139                    debian package, updated to new thuban version
140    
141    
142    2003-12-03  Bernhard Herzog  <[email protected]>
143    
144            * Thuban/Lib/version.py: New. Module for version number
145            manipulations. The version of make_tuple here also deals better
146            with more unusual version number strings, such as e.g.
147            "1.2+cvs20031111"
148    
149            * Thuban/version.py (make_tuple): Removed. It's now in
150            Thuban.Lib.version. Use that implementation instead.
151    
152            * test/test_lib_version.py: New. Tests for Thuban/Lib/version.py
153    
154    2003-12-02  Bernhard Herzog  <[email protected]>
155    
156            * MANIFEST.in: Add debian files
157    
158            * setup.py (setup call): Add packages for the Extensions so that
159            they're installed too
160            (data_files): Add READMEs and sample data from some Extensions
161    
162            * NEWS: Add note about the extensions in binary packages
163    
164    2003-12-02  Bernhard Herzog  <[email protected]>
165    
166            * Thuban/Model/save.py (SessionSaver.write_session): Save files
167            with the thuban-1.0rc1
168    
169            * Thuban/Model/load.py (SessionLoader.__init__): Recognize the
170            thuban-1.0rc1 namespace too
171    
172            * test/test_save.py (SaveSessionTest.dtd)
173            (SaveSessionTest.testEmptySession)
174            (SaveSessionTest.testSingleLayer)
175            (SaveSessionTest.testLayerProjection)
176            (SaveSessionTest.testRasterLayer)
177            (SaveSessionTest.testClassifiedLayer)
178            (SaveSessionTest.test_dbf_table)
179            (SaveSessionTest.test_joined_table)
180            (SaveSessionTest.test_save_postgis): Update to thuban-1.0rc1
181            namespace
182    
183            * test/test_load.py (LoadSessionTest.dtd): Update to thuban-1.0rc1
184            namespace
185            (TestSingleLayer.file_contents)
186            (TestNonAsciiColumnName.file_contents)
187            (TestLayerVisibility.file_contents)
188            (TestClassification.file_contents, TestLabels.file_contents)
189            (TestLayerProjection.file_contents)
190            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
191            (TestPostGISLayer.file_contents)
192            (TestPostGISLayerPassword.file_contents)
193            (TestLoadError.file_contents, TestLoadError.test): Update to
194            thuban-1.0rc1 namespace
195    
196    2003-12-01  Bernhard Herzog  <[email protected]>
197    
198            * setup.py (proj4_prefix, wx_prefix, gdal_prefix): Fix these for
199            nt to better match Intevation's current w32 setup
200    
201            * HOWTO-Release: Add note about updating MANIFEST.in
202    
203            * MANIFEST.in: Add the Extensions
204    
205            * NEWS: Update for 1.0rc1
206    
207    2003-12-01  Bernhard Herzog  <[email protected]>
208    
209            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Change the wild
210            cards for the dialog so that shapefiles ending in all uppercase
211            SHP are listed too
212    
213    2003-11-28  Bernhard Herzog  <[email protected]>
214    
215            * Thuban/version.py (longversion): Update to 1.0rc1
216    
217            * setup.py (setup call): Update version to 1.0rc1. Use the
218            [email protected] email address as author email instead of my
219            personal one.
220    
221    2003-11-28  Bernhard Herzog  <[email protected]>
222    
223            * po/de.po: Update german translation.
224    
225    2003-11-28  Bernhard Herzog  <[email protected]>
226    
227            Unify the filenames stored in .thuban files so that the .thuban
228            files are more platform independend
229    
230            * Thuban/Model/save.py (unify_filename): New. Unify filenames so
231            that they can be used on both windows and unix
232            (SessionSaver.prepare_filename): New. Handle all filename
233            transformations for filenames stored in the thuban file
234            (SessionSaver.write_data_containers, SessionSaver.write_layer):
235            Use prepare_filename
236    
237            * test/test_save.py (SaveSessionTest.testSingleLayer)
238            (SaveSessionTest.testLayerProjection)
239            (SaveSessionTest.testRasterLayer)
240            (SaveSessionTest.testClassifiedLayer)
241            (SaveSessionTest.test_dbf_table)
242            (SaveSessionTest.test_joined_table): Filenames are always stored
243            with slashes on all currently supported platforms so adapt all
244            tests to this
245    
246            * test/test_load.py (LoadSessionTest.filenames): With the new
247            filename scheme the filenames in the tests should be
248            understandable on all currently supported platforms so we turn
249            this into an empty list because we don't have to normalize them
250            anymore
251    
252    2003-11-28  Bernhard Herzog  <[email protected]>
253    
254            * test/test_layer.py (TestLayer.test_arc_layer_with_projection):
255            Add the ellipsoid to the projection since some Proj versions
256            complain if it's missing.
257    
258    2003-11-27  Bernhard Herzog  <[email protected]>
259    
260            Corect some bounding box projection problems
261    
262            * Thuban/Model/proj.py (Projection.InverseBBox): New. Inverse
263            version of ForwardBBox
264            (Projection._transform_bbox): New. common implementation of
265            ForwardBBox and InverseBBox
266            (Projection.ForwardBBox): Use _transform_bbox.
267    
268            * test/test_proj.py (TestProjection.test): Add test for
269            InverseBBox
270    
271            * Thuban/Model/layer.py (Layer.LatLongBoundingBox)
272            (Layer.ShapesBoundingBox, RasterLayer.LatLongBoundingBox): Use the
273            new InverseBBox method to determine the unprojected bounding box
274            (Layer.ShapesInRegion): Use the ForwardBBox method to project the
275            bbox.
276    
277            * test/test_layer.py (TestLayer.test_point_layer_with_projection):
278            Removed.
279            (TestLayer.test_arc_layer_with_projection): New. This test is
280            better able to test whether bounding boxes are projected correctly
281            than test_point_layer_with_projection
282    
283            * Thuban/UI/viewport.py (ViewPort.map_projection_changed): Use
284            InverseBBox to unproject bboxes
285    
286    2003-11-25  Bernhard Herzog  <[email protected]>
287    
288            * Thuban/UI/about.py (About.__init__): Make sure we have ASCII
289            source code.
290    
291    2003-11-25  Bernhard Herzog  <[email protected]>
292    
293            * Thuban/Model/layer.py (Layer.__getattr__): Removed. It was only
294            there for backwards compatibility and all code relying on that
295            should have been updated by now.
296    
297    2003-11-25  Bernhard Herzog  <[email protected]>
298    
299            * test/test_load.py (TestClassification.test): Add the missing
300            round trip test.
301            (TestClassification.file_contents): Update to the newest file
302            format
303    
304    2003-11-25  Bernhard Herzog  <[email protected]>
305    
306            Add very experimental (and possibly dangerous) extension to draw
307            polygons:
308    
309            * Extensions/drawshape/README: New. Brief installation
310            instructions
311    
312            * Extensions/drawshape/drawshape.py: New. Implementation of the
313            drawshape extensions
314    
315            * Extensions/drawshape/patch.diff: Patch to apply before the
316            extension can be used.
317    
318    2003-11-24  Bernhard Herzog  <[email protected]>
319    
320            * Thuban/Model/data.py (ShapefileStore._open_shapefile)
321            (ShapefileStore.__init__): Factor opening the shapefile into a
322            separate method (the new _open_shapefile). This makes the code a
323            bit more readable but the real reason is that it makes some evil
324            hacks easier. :-)
325    
326    2003-11-24  Bernhard Herzog  <[email protected]>
327    
328            * Thuban/Model/load.py (SessionLoader.check_attrs): If no
329            converter is specified for an attribute assume it's a string
330            containing only Latin1 characters. Update doc-string accordingly.
331            This change should fix many places where unicode objects might
332            accidentally enter Thuban.
333    
334            * test/test_load.py (TestNonAsciiColumnName): New test to check
335            what happens with column names in DBF files that contain non-ascii
336            characters
337    
338    2003-11-21  Bernhard Herzog  <[email protected]>
339    
340            Enable the experimental attribute editing again and introduce a
341            command line switch to actually activate it
342    
343            * Thuban/UI/main.py (options): New. Container for options set on
344            the commmand line
345            (main): Add the --enable-attribute-editing flag.
346    
347            * Thuban/UI/identifyview.py (IdentifyView.__init__): If attribute
348            editing is enabled use the grid ctrl which allows editing of the
349            values
350    
351            * Thuban/Model/transientdb.py (AutoTransientTable.write_record):
352            New. Just delegate this to the underlying table.
353    
354    2003-11-20  Bernhard Herzog  <[email protected]>
355    
356            * test/test_proj.py (ProjFileReadTests.test_read_unreadable_file):
357            Skip this test if run under non-posix systems since it only works
358            there
359    
360    2003-11-19  Bernhard Herzog  <[email protected]>
361    
362            * Thuban/Model/resource.py: Rework the way gdal support is
363            determined so that we can give a reason in the about why gdal is
364            not supported.
365            (gdal_support_status): New. Variable holding a string with the
366            reason for no gdal support
367    
368            * Thuban/UI/about.py (About.__init__): Add the reason why gdal is
369            not supported to the message
370    
371    2003-11-19  Bernhard Herzog  <[email protected]>
372    
373            Remove the old table interface and its test cases
374    
375            * Thuban/Model/table.py (OldTableInterfaceMixin): Removed.
376            (DBFTable, MemoryTable): Do not derive from OldTableInterfaceMixin
377            anymore
378    
379            * Thuban/Model/transientdb.py (TransientTableBase)
380            (AutoTransientTable): Do not derive from OldTableInterfaceMixin
381            anymore
382    
383            * test/test_table.py: Removed since the old interface it tests is
384            gone.
385    
386            * test/runtests.py (main): The old table interface is gone and
387            with it the deprecation warnings so remove the code that turns
388            these warnings into errors
389    
390    2003-11-19  Bernhard Herzog  <[email protected]>
391    
392            * test/test_table.py: Revert to revision 1.5 again. Changing the
393            tests to use the new table interface is completely wrong since the
394            whole purpose of the tests in this module is to test the old
395            interface.
396    
397    2003-11-18  Bernhard Herzog  <[email protected]>
398    
399            * Thuban/Model/postgisdb.py (PostGISConnection.MatchesParameters):
400            New. Test whether the connection matches a set of connection
401            parameters
402    
403            * Thuban/UI/dbdialog.py (DBFrame.conns_changed): Fix doc-string
404            (DBFrame.OnAdd): Use the new MatchesParameters method when looking
405            for existing connections with the same parameters and break out of
406            the loop correctly.
407    
408            * test/test_postgis_db.py (TestBriefDescription)
409            (TestPostGISSimple.test_brief_description): Rename
410            TestBriefDescription to TestPostGISSimple and the test method to
411            test_brief_description so that we can add more test methods.
412            (TestPostGISSimple.test_matches_parameters): New. Test the new
413            MatchesParameters method
414    
415    2003-11-18  Bernhard Herzog  <[email protected]>
416    
417            * Thuban/Lib/connector.py (Publisher): Introduce a new flag,
418            _was_destroyed, to indicate whether an publisher instance has
419            already been destroyed.
420            (Publisher.Unsubscribe): Only disconnect if the publisher has not
421            been destroyed yet.
422            (Publisher.Destroy): Set the _was_destroyed flag to true.
423    
424            * test/test_connector.py
425            (TestPublisher.test_unsubscribe_after_destroy): New. Test that
426            calling Unsubscribe after Destroy doesn't raise an exception
427    
428    2003-11-14  Bernhard Herzog  <[email protected]>
429    
430            * Thuban/UI/identifyview.py (IdentifyView.selected_shape): Fix
431            typo in doc-string
432    
433    2003-11-13  Bernhard Herzog  <[email protected]>
434    
435            Quote table and column names properly for postgis.
436    
437            * Thuban/Model/postgisdb.py (quote_identifier): New. Function to
438            quote an identifier for use in an sql statement
439            (PostGISColumn.__init__): Add the quoted_name attribute
440            (PostGISTable.__init__): New instance variable quoted_tablename
441            (PostGISTable._fetch_table_information): Use the quoted table
442            name. New isntance variable quoted_geo_col with a quoted version
443            of geometry_column
444            (PostGISTable.NumRows, PostGISTable.RowIdToOrdinal)
445            (PostGISTable.RowOrdinalToId): Use the quoted table name
446            (PostGISTable.ReadValue, PostGISTable.ValueRange)
447            (PostGISTable.UniqueValues, PostGISTable.SimpleQuery)
448            (PostGISShapeStore.BoundingBox, PostGISShapeStore.Shape)
449            (PostGISShapeStore.AllShapes, PostGISShapeStore.ShapesInRegion):
450            Use quoted table and column names
451    
452            * test/test_postgis_db.py (TestPostGISSpecialCases)
453            (TestPostGISIgnoredColumns): Rename the class to
454            TestPostGISSpecialCases because that better describes the new
455            cases
456            (TestPostGISSpecialCases.test_unsupported_types)
457            (TestPostGISSpecialCases.test): Rename the method to
458            test_unsupported_types because we need a more descriptive name now
459            that there are more methods
460            (TestPostGISSpecialCases.test_table_name_quoting)
461            (TestPostGISSpecialCases.test_column_name_quoting)
462            (TestPostGISSpecialCases.test_shapestore_name_quoting): New test
463            cases to test quoting of table and column names in PostGISTable
464            and PostGISShapeStore
465    
466            * test/postgissupport.py
467            (skip_if_addgeometrycolumn_does_not_use_quote_ident): New. Skip if
468            AddGeometryColumn desn't support table or column names with sapces
469            or double quotes
470    
471    2003-11-12  Jan-Oliver Wagner <[email protected]>
472    
473            * Extensions/wms/__init__.py: New: Init to make this
474            directory a package.
475    
476            * Extensions/wms/wms.py: New: Provide layers via OGC WMS.
477    
478    2003-11-11  Bernhard Herzog  <[email protected]>
479    
480            * Thuban/Model/resource.py (EPSG_DEPRECATED_PROJ_FILE): New.
481            Constant for the file woth deprecated epsg projections
482            (get_system_proj_file): Update doc-string
483    
484            * Thuban/UI/projdialog.py (ProjFrame.build_dialog): Add a space
485            above the EPS widgets, introduce a check box for the deprecated
486            eps projections and a label for the epsg widgets
487            (ProjFrame._OnShowEPSG): Handle the deprecated EPSG projections
488            too
489    
490    2003-11-11  Bernhard Herzog  <[email protected]>
491    
492            Avoid warnings when run under Python 2.3
493    
494            * Thuban/UI/baserenderer.py (BaseRenderer.draw_point_shape)
495            (BaseRenderer.draw_label_layer): Coordinates must be ints.
496    
497            * Thuban/UI/renderer.py (MapRenderer.make_point): Turn this into a
498            real method so that we can convert to int.
499            (MapRenderer.label_font): The font size mist be an int.
500    
501            * Thuban/UI/common.py (Color2wxColour): The color values must be
502            ints. Also, remove the unnecessary asserts.
503    
504            * test/test_load_0_8.py (TestUnicodeStrings.file_contents)
505            (TestUnicodeStrings.test): Python source code should not contain
506            non-ascii characters unless an encoding is specified in the file.
507            Therefore use \x escapes in the string literals for non-ascii
508            characters.
509    
510    2003-11-11  Bernhard Herzog  <[email protected]>
511    
512            * Thuban/Model/resource.py (get_system_proj_file): Add a filename
513            parameter so that this function can be used for all proj files in
514            Resource/Projections
515            (DEFAULT_PROJ_FILE, EPSG_PROJ_FILE): New. Predefined filenames for
516            get_system_proj_file
517    
518            * Thuban/UI/projdialog.py (ProjFrame.__init__): Instead of one
519            ProjFile self.__sysProjFile use a dictionary of system ProjFile
520            objects self._sys_proj_files
521            (ProjFrame.build_dialog): Adapt to the new changes in the
522            ProjectionList constructor. Add a check button to toggle whether
523            EPSG projections are shown
524            (ProjFrame._OnShowEPSG): New. Handler for the epsg check button
525            events.
526            (ProjFrame.load_user_proj, ProjFrame.load_system_proj): Only show
527            the busy cursor if the files have not yet been loaded by the
528            dialog.
529            (ProjFrame.load_system_proj): Add a parameter for the name of the
530            proj file. Maintain the dictionary of system projections
531            self._sys_proj_files
532    
533            * Thuban/UI/projlist.py (ProjectionList): Merge the system_projs,
534            user_projs parameters into one parameter proj_files which is a
535            list of proj files.
536            (ProjectionList._subscribe_proj_files)
537            (ProjectionList._unsubscribe_proj_files): New. Move
538            subscription/unsubscription of projfile messages to separate
539            methods
540            (ProjectionList.Destroy): The unsubscribe is now done in
541            _unsubscribe_proj_files
542            (ProjectionList.update_projections): We now have a list of proj
543            file objects
544            (ProjectionList.SetProjFiles): New method to set a new list of
545            proj file objects
546    
547            * test/test_proj.py (ProjFileReadTests.test_get_system_proj_file):
548            Specify explicitly which system proj file to load.
549    
550    2003-11-11  Bernhard Herzog  <[email protected]>
551    
552            * Thuban/Model/load.py (SessionLoader.Destroy): New. Clear all
553            instance variables to cut cyclic references. The GC would have
554            collected the loader eventually but it can happen that it doesn't
555            run at all until thuban is closed (2.3 but not 2.2 tries a bit
556            harder and forces a collection when the interpreter terminates)
557            (load_session): Call the handler's Destroy method to make sure
558            that it gets garbage collected early. Otherwise it will be
559            collected very late if at all and it holds some references to e.g.
560            shapestores and the session which can lead to leaks (of e.g. the
561            temporary files)
562    
563            * test/test_load.py (TestSingleLayer.test_leak): New. test for the
564            resource leak in load_session
565    
566    2003-11-10  Bernhard Herzog  <[email protected]>
567    
568            * Thuban/UI/baserenderer.py: Add a way to specify how layers in
569            extensions are to be rendered.
570            (_renderer_extensions): New. List with renderer for layers in
571            extensions
572            (add_renderer_extension): New. Add a renderer extension
573            (init_renderer_extensions): New. Init the renderer extensions
574            (BaseRenderer.render_map_incrementally): Search
575            _renderer_extensions for how to draw unknown layer types
576            (BaseRenderer.draw_raster_data): Add format parameter so that
577            formats other than BMP can be drawn
578            (BaseRenderer.draw_raster_layer): Pass an explicit format to
579            draw_raster_data
580    
581            * Thuban/UI/renderer.py (raster_format_map): New. Mapping form the
582            strings of the format parameter of draw_raster_data method to wx
583            constants
584            (MapRenderer.draw_raster_data): Add the format parameter and use
585            raster_format_map to map it to the right wxwindows constant for
586            wxImageFromStream
587    
588            * test/test_baserenderer.py (SimpleRenderer.draw_raster_data): Add
589            the format parameter and record it
590            (TestBaseRenderer.test_raster_no_projection): check the format
591            paramter of the draw_raster_data method
592            (TestBaseRenderer.test_renderer_extension): New. Test the renderer
593            extension facility
594    
595    2003-11-07  Bernhard Herzog  <[email protected]>
596    
597            Tweak the usage of the sqlite database to make common use cases
598            more responsive. In most cases copying the data to the sqlite
599            database takes so long that using sqlite doesn't have enough
600            advantages.
601    
602            * Thuban/Model/transientdb.py (TransientTableBase.ValueRange): Add
603            comments about performance and query the min and max in separate
604            statements because only that way will indexes be used.
605            (TransientTableBase.UniqueValues): Add some comments about
606            performance.
607            (AutoTransientTable.ValueRange, AutoTransientTable.UniqueValues):
608            Do not copy the data to the transient DB but use the transient
609            copy if it exists. See the new comments for the performance trade
610            offs
611    
612            * test/test_transientdb.py
613            (TestTransientTable.test_auto_transient_table): Make sure that the
614            data is copied to the transient database at some point.
615    
616    2003-11-03  Bernhard Herzog  <[email protected]>
617    
618            * Thuban/Model/data.py (ShapefileStore.ShapesInRegion): Bind some
619            globals to locals so that it's a bit faster
620    
621    2003-11-03  Bernhard Herzog  <[email protected]>
622    
623            * Thuban/UI/baserenderer.py
624            (BaseRenderer.draw_shape_layer_incrementally): Use the ReadValue
625            method. ReadValue is faster than ReadRowAsDict since it only reads
626            one cell especially now that the dbf file objects actually
627            implement it.
628    
629            * Thuban/Model/table.py (DBFTable.ReadValue): Use the new
630            read_attribute method of the dbf objects
631    
632    2003-11-03  Bernhard Herzog  <[email protected]>
633    
634            * Extensions/profiling/profiling.py (popup_dialog_box): New config
635            variable to indicate whether the result should be shown in a
636            dialog box
637            (profile_screen_renderer, time_screen_renderer): Only show a
638            dialog box if popup_dialog_box is true.
639            (profile_screen_renderer): Flush stdout after the printing the
640            first part of the "profiling..." message
641    
642            * Thuban/UI/baserenderer.py
643            (BaseRenderer.draw_shape_layer_incrementally): Cache the pens and
644            brushes for the groups so that they're not created over and over
645            again
646    
647            * Thuban/Model/classification.py (Classification.__getattr__)
648            (Classification._compile_classification)
649            (Classification._clear_compiled_classification): New. Methods to
650            manage a 'compiled' representation of the classification groups
651            which is created on demand
652            (Classification.InsertGroup, Classification.RemoveGroup)
653            (Classification.ReplaceGroup): reset the compiled representation
654            (Classification.FindGroup): Use the compiled representation to
655            find the matching group
656            (ClassGroupRange.GetRangeTuple): New. Return the range as a tuple
657    
658    2003-10-31  Bernhard Herzog  <[email protected]>
659    
660            * Thuban/Model/classification.py (Classification.SetDefaultGroup):
661            Send a CLASS_CHANGED message
662            (Classification.RemoveGroup): Send a CLASS_CHANGED message and do
663            not return the removed group since it wasn't used.
664    
665            * test/test_classification.py
666            (TestClassification.test_set_default_group): New. Test the
667            SetDefaultGroup method
668            (TestClassification.test_insert_group): New. Test the InsertGroup
669            method
670            (TestClassification.test_remove_group): New. Test the RemoveGroup
671            method
672            (TestClassification.test_replace_group): New. Test the
673            ReplaceGroup method
674    
675    2003-10-31  Bernhard Herzog  <[email protected]>
676    
677            * test/test_classification.py (TestClassification.setUp):
678            Subscribe to the CLASS_CHANGED messages
679            (TestClassification.tearDown): New. Destroy the classification
680            properly
681            (TestClassification.test_defaults): Add tests for the default line
682            width and whether no messages were sent yet
683            (TestClassification.test_set_default_properties): Add tests for
684            messages and setting the default line width
685            (TestClassification.test_add_singleton)
686            (TestClassification.test_add_range)
687            (TestClassification.test_multiple_groups): Add tests for messages
688    
689    2003-10-31  Bernhard Herzog  <[email protected]>
690    
691            Some more refactoring in preparation for new tests:
692    
693            * test/test_classification.py (TestClassification.setUp): New.
694            Instantiate the classification here. Update the test methods
695            accordingly.
696            (TestClassification.test_multiple_groups): Make sure that the two
697            singletons matching 1 are considered different.
698    
699    2003-10-31  Bernhard Herzog  <[email protected]>
700    
701            * test/test_classification.py (red, green, blue): New. These
702            constants were used in several cases. Update the relevant methods.
703            (TestClassification.test_defaults)
704            (TestClassification.test_set_default_properties)
705            (TestClassification.test_add_singleton)
706            (TestClassification.test_add_range)
707            (TestClassification.test_multiple_groups)
708            (TestClassification.test_deepcopy): New. These were formerly all
709            part of the single method test.
710            (TestClassification.test_deepcopy): Removed.
711            (TestClassIterator): Removed. The test case is now a method of
712            TestClassification since it tests part of the public interface of
713            Classification
714            (TestClassification.test_iterator): New. Used to be
715            TestClassIterator effectively
716    
717    2003-10-31  Jan-Oliver Wagner <[email protected]>
718    
719            GUIfied the functions of the profiling extension.
720    
721            * /Extensions/profiling/__init__.py: New: Init to make this
722            directory a package.
723    
724            * Extensions/profiling/profiling.py: Moved menu entries to
725            the Extensions menu. Applied _() for strings.
726            (profile_screen_renderer): Catch the detailed printout and present
727            it in a dialog.
728            (time_screen_renderer): Raise a dialog to present the result instead
729            of printing it to stdout.
730    
731    2003-10-31  Bernhard Herzog  <[email protected]>
732    
733            * test/test_classification.py (TestClassGroupProperties)
734            (TestClassGroup, TestClassGroupDefault, TestClassGroupRange)
735            (TestClassGroupSingleton, TestClassIterator, TestClassification):
736            Split TestClassification into several classes, one for each class
737            being tested. TestClassification itself now only tests
738            Classification. This split makes changes to the tests a bit easier
739    
740    2003-10-31  Bernhard Herzog  <[email protected]>
741    
742            * Extensions/profiling/profiling.py: New. Extension to measure
743            Thuban performance
744    
745    2003-10-31  Frank Koormann <[email protected]>
746    
747            Added two items to legend popup menu: Remove Layer and Show Layer Table
748    
749            * Thuban/UI/legend.py (LegendPanel._OnRemoveLayer,
750            LegendPanel._OnShowTable): New event handlers, call the corresponding
751            mainwindow methods.
752            (LegendTree._OnRightClick): Added items to popup menu.
753    
754    2003-10-30  Bernhard Herzog  <[email protected]>
755    
756            * Thuban/UI/dialogs.py (ThubanFrame.__init__): Handle
757            EVT_WINDOW_DESTROY
758            (ThubanFrame.OnDestroy): New. Handler for EVT_WINDOW_DESTROY. Does
759            nothing but is convenient for the derived classes.
760    
761            * Thuban/UI/tableview.py
762            (TableFrame.OnDestroy, LayerTableFrame.OnDestroy): New.
763            Unsubscribe the messages here not in OnClose because that might
764            get called multiple times. Fixes RT #2196
765            (TableFrame.OnClose, LayerTableFrame.OnClose): Removed. Not needed
766            anymore.
767    
768            * README: Update the minimum requirement for wxPython. Since we
769            now use the EVT_WINDOW_DESTROY event, we need at least 2.4.0.4,
770            the version in which that was introduced for all platforms
771    
772    2003-10-30  Frank Koormann <[email protected]>
773    
774            * Thuban/UI/join.py (JoinDialog.OnJoin): Wrapped the major parts of
775            the join process in a ThubanBeginBusyCursor, ThubanEndBusyCursor
776            frame.
777    
778    2003-10-30  Jan-Oliver Wagner <[email protected]>
779    
780            Improved APR import extension, added further EPSG definitions
781            and some cleanup regarding string class.
782    
783            * test/test_proj.py (TestProjection.test_get_projection_units_geo):
784            Added test for alias 'longlat'.
785    
786            * Resources/Projections/epsg-deprecated.proj: New. Contains
787            deprecated EPSG definitions.
788    
789            * Extensions/importAPR/odb.py (ODBBaseObject.TreeInfo): Added
790            the variable names for objects.
791    
792            * Extensions/importAPR/apr.py (APR_BLnSym, APR_BMkSym, APR_BShSym): New.
793            Copied from importAPR and provided with documentation.
794    
795            * Extensions/importAPR/importAPR.py (APR_BLnSym, APR_BMkSym, APR_BShSym):
796            Moved to apr.py.
797            (APR_View): Added object ref 'ITheme'.
798    
799            * Thuban/Lib/fileutil.py, Thuban/UI/proj4dialog.py: Replaced string
800            split function by corresponding use of the string class method.
801    
802            * Thuban/Model/xmlwriter.py: Replaced string replace function by
803            corresponding string method.
804    
805    2003-10-29  Bernhard Herzog  <[email protected]>
806    
807            * Thuban/UI/baserenderer.py
808            (BaseRenderer.draw_shape_layer_incrementally): Speed up the
809            special case of a classification that only has the default group
810    
811    2003-10-27  Bernhard Herzog  <[email protected]>
812    
813            * po/fr.po, po/es.po: Updated translations from Daniel Calvelo
814    
815            * po/de.po: Update.
816    
817            * Thuban/UI/application.py
818            (ThubanApplication.ShowExceptionDialog): Handle translation of the
819            dialog message properly
820    
821    2003-10-27  Bernhard Herzog  <[email protected]>
822    
823            Rework how localization works so that we use wx's translation
824            functions when running Thuban as a normal application but not when
825            we don't need any UI, such as in the test suite. See the comment
826            in Thuban/__init__.py for details
827    
828            * Thuban/__init__.py (_): Add one level of indirection to make the
829            translation handling more flexible and to make it possible to use
830            either wx's translation services or not.
831            (gettext_identity, translation_function_installed)
832            (install_translation_function): New function to help with this
833    
834            * Thuban/UI/__init__.py: Install the wx specific translation
835            function if it's OK to do that
836    
837            * test/support.py (initthuban): Install a dummy translation
838            function so that importing Thuban.UI doesn't install a wx specific
839            one for which would need to import wxPython
840    
841    2003-10-27  Bernhard Herzog  <[email protected]>
842    
843            * HOWTO-Release: Source archives should be created first and the
844            binary packages should be created from the source archives.
845            There's an official debian package now so there's no need to test
846            the rpm on debian anymore
847    
848    2003-10-27  Bernhard Herzog  <[email protected]>
849    
850            Several rendering changes:
851    
852             - Render the selection into a separate bitmap so that only that
853               bitmap needs to be redrawn when the selection changes
854    
855             - Render incrementally showing previews and allowing interaction
856               before rendering is complete
857    
858             - Update the renderer interface a bit. Most parameters of
859               RenderMap are now parameters of the constructor
860    
861            * Thuban/UI/baserenderer.py (BaseRenderer.__init__): Add the map
862            and the update region as parameters. Update the doc-string
863            (BaseRenderer.render_map_incrementally): New. Generator function
864            to renders the map incrementally
865            (BaseRenderer.render_map): Remove the map argument (it's now in
866            the constructor) and simply iterate over the
867            render_map_incrementally generator to draw the map.
868            (BaseRenderer.draw_shape_layer_incrementally)
869            (BaseRenderer.draw_shape_layer): Renamed to
870            draw_shape_layer_incrementally and changed into a generator that
871            yields True every 500 shapes. Used by render_map_incrementally to
872            render shape layers incrementally
873    
874            * Thuban/UI/renderer.py (ScreenRenderer.RenderMap): Removed the
875            map and region parameters which are now in the constructor
876            (ScreenRenderer.RenderMapIncrementally): New. Public frontend for
877            the inherited render_map_incrementally.
878            (BaseRenderer.draw_shape_layer): Removed.
879            (ScreenRenderer.draw_selection_incrementally): New. The selection
880            drawing part of the removed draw_shape_layer as a generator
881            (ScreenRenderer.layer_shapes): Update because of the region
882            parameter change
883            (ExportRenderer.__init__): New. Extend the inherited constructor
884            with the destination region for the drawing
885            (ExportRenderer.RenderMap): Removed the map and region parameters
886            which are now in the constructor
887    
888            * Thuban/UI/view.py (MapCanvas.PreviewBitmap): New. Return a
889            bitmap suitable for a preview in a tool
890            (CanvasPanTool.MouseMove): Use the PreviewBitmap method to get the
891            bitmap
892            (MapPrintout.draw_on_dc): Adapt to new renderer interface
893            (MapCanvas.OnPaint): Handle drawing the selection bitmap if it
894            exists
895            (MapCanvas.OnIdle): Update the logic to deal with incremental
896            rendering and the selection bitmap
897            (MapCanvas._do_redraw): Handle the instantiation of the render
898            iterator and the redraws during rendering
899            (MapCanvas._render_iterator): New. Generator to incrementally
900            redraw both bitmaps
901            (MapCanvas.Export): Adapt to new renderer interface.
902            (MapCanvas.full_redraw): Reset the selection bitmap and the
903            renderer iterator too
904            (MapCanvas.redraw_selection): New. Force a redraw of the selection
905            bitmap
906            (MapCanvas.shape_selected): Only redraw the selection bitmap
907    
908            * test/test_baserenderer.py
909            (TestBaseRenderer.test_polygon_no_projection)
910            (TestBaseRenderer.test_raster_no_projection)
911            (TestBaseRenderer.test_point_map_projection)
912            (TestBaseRenderer.test_point_layer_and_map_projection)
913            (TestBaseRenderer.test_point_layer_projection)
914            (TestBaseRenderer.test_point_with_classification): Adapt to new
915            renderer interface
916    
917    2003-10-24  Bernhard Herzog  <[email protected]>
918    
919            * libraries/thuban/wxproj.cpp (draw_polygon_shape)
920            (point_in_polygon_shape, shape_centroid): Raise an exception if
921            the shape can't be read. Previously invalid shape ids would lead
922            to a segfault.
923    
924            * test/test_wxproj.py (TestShapeCentroid.test_invalid_shape_id):
925            New. test whether an exception is raised for invalid shape ids
926    
927    2003-10-24  Jan-Oliver Wagner <[email protected]>
928    
929            * Thuban/Model/proj.py (Projection.GetProjectedUnits): Added 'longlat'
930            as alias for 'latlong'.
931    
932            * Thuban/UI/projdialog.py (ProjFrame.__init__): Added 'longlat'
933            as alias for 'latlong'.
934    
935    2003-10-24  Jan-Oliver Wagner <[email protected]>
936    
937            * Thuban/UI/projdialog.py (ProjFrame.proj_selection_changed): Set
938            the projection even for the UnknownPanel.
939            (UnknownProjPanel.__init__): Define the text and create the textctrl
940            widget.
941            (UnknownProjPanel._DoLayout): Replaced static text widget by the
942            textctrl created in __init__.
943            (UnknownProjPanel.SetProjection): Set the text for the text ctrl
944            including the parameters of the projection.
945            
946    2003-10-24  Jan-Oliver Wagner <[email protected]>
947    
948            * Resources/Projections/epsg.proj: New. This is a list of
949            EPSG codes with parameters for proj. The list has been
950            generated using devtools/create_epsg.py based on the
951            file nad/epsg of the proj 4.4.7 package. Four projection
952            definitions have been deleted as they are not accepted by proj:
953            "CH1903+ / LV95", "Bern 1898 (Bern) / LV03C", "CH1903 / LV03"
954            and "HD72 / EOV".
955    
956    2003-10-22  Bernhard Herzog  <[email protected]>
957    
958            Some more tweaks to the projection dialog which should fix RT
959            #1886.
960    
961            * Thuban/UI/projlist.py (ProjectionList.Destroy): Unsubscribe from
962            the ProjFile's messages and call the base class methods correctly
963            (ProjectionList.SelectProjection): Set the wxLIST_STATE_FOCUSED
964            flag on the newly selected item too. Otherwise some other item is
965            focused and the first time the focus is moved with the keyboard
966            the selection moves in unexpected ways.
967    
968            * Thuban/UI/projdialog.py (ProjFrame.__init__): Do not set the
969            focus on the OK button, only on the projection list. That way the
970            list really has the focus initially
971            (ProjFrame.OnClose): Call the projection list's Destroy method to
972            make it unsubscribe all messages
973    
974    2003-10-21  Bernhard Herzog  <[email protected]>
975    
976            Rework the projection dialog to fix a few bugs, including RT 2166
977            and most of 2168
978    
979            * Thuban/UI/projlist.py: New. The class ProjectionList is a
980            special wxListCtrl to show a list of projections in a more MVC
981            fashion
982    
983            * Thuban/UI/projdialog.py (ProjFrame): Substantial changes
984            throughout the class. The main change is to use the ProjectionList
985            class instead of a normal wxListBox. Also, add an explicit
986            "Unknown" projection to the projection choice control.
987            (ProjPanel.__init__): Add an "unknown" ellipsoid
988            (TMPanel.__init__, LCCPanel.__init__): Tweak the order of
989            instantiation of the panel's controls to make the tab-order more
990            natural
991    
992    2003-10-21  Bernhard Herzog  <[email protected]>
993    
994            * test/test_load.py (TestSingleLayer.file_contents)
995            (TestSingleLayer.test): Add non-ascii characters to the titles of
996            session, map and layer. This is effectively a port of the
997            TestUnicodeStrings test in test_load_0_8.py which for some reason
998            was only added there.
999    
1000            * test/test_load_0_9.py (TestSingleLayer.file_contents)
1001            (TestSingleLayer.test): Same as in test_load.py: add non-ascii
1002            characters to the titles of session, map and layer,.
1003    
1004    2003-10-21  Bernhard Herzog  <[email protected]>
1005    
1006            Add EPSG projection handling to .thuban files
1007    
1008            * test/test_save.py (SaveSessionTest.dtd)
1009            (SaveSessionTest.testEmptySession)
1010            (SaveSessionTest.testLayerProjection)
1011            (SaveSessionTest.testRasterLayer)
1012            (SaveSessionTest.testClassifiedLayer)
1013            (SaveSessionTest.test_dbf_table)
1014            (SaveSessionTest.test_joined_table)
1015            (SaveSessionTest.test_save_postgis): Update to 1.0-dev namespace
1016            (SaveSessionTest.testSingleLayer): Update to 1.0-dev namespace and
1017            use a and epsg projection to test saving them
1018    
1019            * test/test_load.py (LoadSessionTest.dtd): Update to 1.0-dev
1020            namespace
1021            (TestLayerVisibility.file_contents, TestLabels.file_contents)
1022            (TestLayerProjection.file_contents)
1023            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
1024            (TestPostGISLayer.file_contents)
1025            (TestPostGISLayerPassword.file_contents)
1026            (TestLoadError.file_contents, TestLoadError.test): Update to use
1027            1.0-dev namespace
1028            (TestSingleLayer.file_contents, TestSingleLayer.test): Update to
1029            use 1.0-dev namespace and use an EPSG projection to test whether
1030            loading it works
1031    
1032            * test/test_load_0_9.py: New. Effectively a copy of test_load.py
1033            as of Thuban 0.9. These are now tests to determine whether Thuban
1034            can still read files generated by Thuban 0.9
1035    
1036            * Thuban/Model/save.py (SessionSaver.write)
1037            (SessionSaver.write_session): Use the 1.0 dtd and 1.0-dev
1038            namespace
1039            (SessionSaver.write_projection): Write the projection's epsg
1040            attribute
1041    
1042            * Thuban/Model/load.py (SessionLoader.__init__): Also accept the
1043            thuban-1.0-dev.dtd namespace
1044            (SessionLoader.check_attrs): Allow a callable object as conversion
1045            too
1046            (SessionLoader.start_projection, SessionLoader.end_projection)
1047            (SessionLoader.start_parameter): Handle the epsg attribute and
1048            rename a few instance variables to lower case
1049    
1050            * Resources/XML/thuban-1.0.dtd: New. Only difference to
1051            thuban-0.9.dtd is the epsg attribute for projections.
1052    
1053    2003-10-21  Bernhard Herzog  <[email protected]>
1054    
1055            * test/runtests.py (main): Let the user specify which tests to run
1056            on the command line
1057    
1058            * test/support.py (ThubanTestResult.getDescription): Override to
1059            give a better short description. The description can be used as a
1060            parameter to run_tests to run that particular test in isolation.
1061    
1062    2003-10-21  Frank Koormann   <[email protected]>
1063    
1064            Popup menu for legend. Scheduled for the 1.2 release this was too
1065            simple to implement: The popup menu is bound to the legend tree, while
1066            the events are hanlded by its anchestor, the legend panel. This
1067            allows reuse of all the event handlers already implemented for the
1068            legend toolbar buttons.
1069    
1070            * Thuban/UI/legend.py (LegendPanel.__init__): EVT_MENU macros
1071            to add handlers for the events issued by the popup menu.
1072            (LegendPanel._OnToggleVisibility): Handler for toggling layer
1073            visibility event
1074            (LegendPanel._OnProjection): Handler for layer projection event.
1075            (LegendTree.__init__): Added EVT_TREE_ITEM_RIGHT_CLICK
1076            (LegendTree._OnRightClick): Event handler for right click, select item
1077            and pop up menu.
1078            (LegendTree.ToggleVisibility): Toggle layer visibility
1079            (LegendTree.LayerProjection): Raise layer projection dialog for
1080            current layer.
1081    
1082    2003-10-21  Bernhard Herzog  <[email protected]>
1083    
1084            * Resources/Projections/defaults.proj: Use correct DOCTYPE
1085            declaration. The top-level element is projectionlist not projfile
1086    
1087    2003-10-20  Bernhard Herzog  <[email protected]>
1088    
1089            * Thuban/UI/projdialog.py (ProjFrame.write_proj_file): New. helper
1090            method to write a projfile and display a busy cursor and error
1091            dialogs.
1092            (ProjFrame._OnSave, ProjFrame._OnAddToList, ProjFrame._OnImport)
1093            (ProjFrame._OnExport, ProjFrame._OnRemove): Use write_proj_file
1094            (ProjFrame.__FillAvailList): Translate "<None>" too and display a
1095            busy cursor while loading the user and system prj files.
1096    
1097    2003-10-16  Bernhard Herzog  <[email protected]>
1098    
1099            * Thuban/Model/resource.py (projfile_cache): Introduce a cache for
1100            ProjFile objects
1101            (clear_proj_file_cache): New function to clear the cache. Mainly
1102            useful for use by the test suite
1103            (read_proj_file): Use the cache.
1104    
1105            * test/test_proj.py (TestProjFile): Clarify the doc-string
1106            (ProjFileReadTests): Update doc-string
1107            (ProjFileReadTests.test_get_system_proj_file): Check whether the
1108            system proj files is cached.
1109            (ProjFileLoadTestCase): New base class for the proj file tests
1110            derived from support.FileLoadTestCase to provide some common
1111            behavior.
1112            (TestLoadingProjFile)
1113            (TestLoadingProjFileWithEmptyProjectionlist.file_contents)
1114            (TestProjFileWithInvalidParameters.file_contents): Derive from
1115            ProjFileLoadTestCase
1116            (TestLoadingProjFile.test_caching): New. Test whether the cache
1117            works
1118    
1119    2003-10-16      Silke Reimer    <[email protected]>
1120    
1121            * debian/*: New directory with configuration files for building a thuban
1122              deb-package.
1123    
1124    2003-10-14  Bernhard Herzog  <[email protected]>
1125    
1126            * test/test_proj.py: Execute support.run_tests when run as
1127            __main__ so that missing unsubscribes are detected
1128            (TestProjFile.tearDown): Destroy the proj_file properly
1129    
1130    2003-10-14  Bernhard Herzog  <[email protected]>
1131    
1132            * Thuban/Model/messages.py (PROJECTION_ADDED)
1133            (PROJECTION_REPLACED, PROJECTION_REMOVED): New message types for
1134            the ProjFile objects
1135    
1136            * Thuban/Model/proj.py (ProjFile): Derive from Publisher so we can
1137            easily send messages when the projections change
1138            (ProjFile.Add, ProjFile.Remove, ProjFile.Replace): Issue messages
1139            when the change was successful
1140    
1141            * test/test_proj.py (TestProjFile.setUp): Subscribe to some of the
1142            proj file messages
1143            (TestProjFile.test_add_remove)
1144            (TestProjFile.test_remove_non_existing)
1145            (TestProjFile.test_replace)
1146            (TestProjFile.test_replace_non_existing): Test whether the right
1147            messages are sent
1148    
1149    2003-10-14  Bernhard Herzog  <[email protected]>
1150    
1151            * test/test_proj.py (TestProjFile.test): Refactor into several
1152            tests
1153            (TestProjFile.test_add_remove)
1154            (TestProjFile.test_remove_non_existing)
1155            (TestProjFile.test_replace)
1156            (TestProjFile.test_replace_non_existing): Some of the new
1157            individual test cases
1158            (TestProjFileSimple): New class for the rest of the test cases
1159            that came out of the refactoring
1160            (ProjFileTest): Derive from xmlsupport.ValidationTest so that the
1161            derived classes don't have to
1162    
1163    2003-10-13  Bernhard Herzog  <[email protected]>
1164    
1165            Add an optional EPSG code to the projection objects and extend the
1166            .proj file format accordingly.
1167    
1168            * Resources/XML/projfile.dtd (element projection): Add epsg
1169            attribute
1170    
1171            * Thuban/Model/proj.py (Projection.__init__): New parameter and
1172            instance variable epsg. Update doc-string
1173            (Projection.EPSGCode, Projection.Label): New methods to provide
1174            access to EPSG code and a label for use in dialogs
1175    
1176            * Thuban/Model/resource.py (ProjFileReader.start_projection)
1177            (ProjFileReader.end_projection, ProjFileSaver.write_projfile):
1178            Handle the epsg code attribute when reading or writing proj files
1179    
1180            * Thuban/UI/projdialog.py (ProjFrame._OnSave)
1181            (ProjFrame._OnAddToList, ProjFrame.__DoOnProjAvail)
1182            (ProjFrame.__FillAvailList): Use the projection's Label method to
1183            get the string for the list box
1184    
1185            * test/test_proj.py (TestProjection.test_label)
1186            (TestProjection.test_label_epsg)
1187            (TestProjection.test_epsgcode_for_non_epsg_projection)
1188            (TestProjection.test_epsgcode_for_real_epsg_projection): New tests
1189            for the label and EPSGCode methods
1190            (WriteProjFileTests.doTestWrite, WriteProjFileTests.test_write)
1191            (WriteProjFileTests.test_write_empty_file): Create the ProjFile
1192            objects in the test cases and put the expected contents into the
1193            test case methods too. Update doTestWrite accordingly
1194            (TestLoadingProjFile)
1195            (TestLoadingProjFileWithEmptyProjectionlist): New classes with the
1196            read tests from TestProjFile.
1197            (TestProjFile.doTestRead, TestProjFile.testRead): Removed. These
1198            tests are now in the new classes.
1199            (sample_projfile, sample_projfile_data)
1200            (sample_projfile2, sample_projfile_data2): Removed. Not used
1201            anymore.
1202            (TestProjFile.test_read_unreadable_file): No need to reset the
1203            permissions at the end anymore since we use a unique filename
1204    
1205    2003-10-13  Bernhard Herzog  <[email protected]>
1206    
1207            * test/test_proj.py: Some more refactoring of the test cases
1208            (ProjFileTest): New base class for the proj file tests.
1209            (TestProjFile): Derive from ProjFileTest
1210            (TestProjFile.test_read_unreadable_file)
1211            (TestProjFile.test_read_empty_file, TestProjFile.doTestRead): Use
1212            the new filename method to get a unique filename
1213            (TestProjFile.doTestWrite, TestProjFile.testWrite): Removed.
1214            (WriteProjFileTests): New class for proj file write tests.
1215            Contains the write test that were in TestProjFile originally.
1216    
1217    2003-10-13  Bernhard Herzog  <[email protected]>
1218    
1219            * test/test_proj.py (TestProjFile.testRead)
1220            (TestProjFile.test_read_non_existing_file)
1221            (TestProjFile.test_read_unreadable_file)
1222            (TestProjFile.test_read_empty_file): Split into several methods.
1223    
1224    2003-10-10  Bernhard Herzog  <[email protected]>
1225    
1226            * Thuban/UI/sizers.py: New file with custom sizers.
1227    
1228            * Thuban/UI/projdialog.py (ProjFrame.build_dialog): Instantiate
1229            all projection type specific panels and put them into a
1230            NotebookLikeSizer. This way the dialog doesn't change its size
1231            when a different projection is selected
1232            (ProjFrame.__init__): Rename projection_panels
1233            projection_panel_defs and reuse projection_panels for a list of
1234            the instantiated panels.
1235            (ProjFrame._show_proj_panel, ProjFrame.__DoOnProjAvail)
1236            (ProjFrame.__DoOnProjChoice): Changes due to the new handling of
1237            the panels
1238            (UnknownProjPanel._DoLayout): Place the newlines in the message
1239            differently to make the panel narrower.
1240            (TMPanel._DoLayout): Layout the parameters in one column.
1241    
1242    2003-10-10  Bernhard Herzog  <[email protected]>
1243    
1244            * Thuban/UI/projdialog.py (ProjFrame.build_dialog): New method
1245            that contains all the setup for the dialog's widgets, layout and
1246            event handling.
1247            (__): Call build_dialog to build the dialog.
1248            (ProjFrame.__set_properties, ProjFrame.__do_layout): Removed.
1249            Their functionality is now in build_dialog
1250            (ProjFrame.__VerifyButtons, ProjFrame.__VerifyButtons)
1251            (ProjFrame.__DoOnProjAvail, ProjFrame.__DoOnProjAvail)
1252            (ProjFrame.__DoOnProjChoice): Small updates due to slightly
1253            different widget names and hierarchy introduced with build_dialog.
1254    
1255    2003-10-10  Bernhard Herzog  <[email protected]>
1256    
1257            * README: Fix typo.
1258    
1259    2003-10-09  Bernhard Herzog  <[email protected]>
1260    
1261            * Thuban/Model/proj.py (ProjFile.Add): Do not check whether the
1262            projection is already in the list. This is *a lot* faster when
1263            loading files with hundreds of projections since it saves a linear
1264            search. OTOH this will allow adding the same projection to the
1265            user.proj file multiple times in the projection dialog but we'll
1266            deal with that later
1267    
1268    2003-10-09  Jan-Oliver Wagner <[email protected]>
1269    
1270            * devtools: New. Directory for developer tools that are not intended
1271            for the regular user.
1272    
1273            * devtools/create_epsg.py: New. Convert the epsg file of proj into
1274            a python .proj file.
1275    
1276    2003-10-09  Bernhard Herzog  <[email protected]>
1277    
1278            * test/test_proj.py
1279            (TestProjection.test_get_parameter_without_equals_sign): New. Test
1280            whether GetParameter handles parameters without "=" sign correctly
1281    
1282            * Thuban/Model/proj.py (Projection.GetParameter): Handle
1283            parameters that do not contain a "=". Update the doc-string
1284    
1285    2003-10-08  Bernhard Herzog  <[email protected]>
1286    
1287            * Thuban/UI/projdialog.py (ProjFrame.__set_properties): Remove the
1288            length limit on the projname text control
1289    
1290    2003-10-08  Bernhard Herzog  <[email protected]>
1291    
1292            * test/test_proj.py (TestProjection.test_get_projection_units_geo)
1293            (TestProjection.test_get_projection_units_normal): New. Tests for
1294            the Projection.GetProjectedUnits method
1295    
1296    2003-10-08  Jan-Oliver Wagner <[email protected]>
1297    
1298            * Thuban/Model/resource.py (get_user_proj_file): small bug-fix:
1299            Added missing 'val' parameter.
1300    
1301    2003-10-08  Bernhard Herzog  <[email protected]>
1302    
1303            * Thuban/UI/projdialog.py (ProjFrame.__DoOnProjAvail): When the
1304            projection type of the currently selected projection is not known,
1305            i.e. there's no panel for it, use the UnknownProjPanel
1306            (ProjFrame.__DoOnProjChoice, ProjFrame._show_proj_panel): Split
1307            the actual replacing of the proj panel into the new method
1308            _show_proj_panel.
1309            (UnknownProjPanel): Add doc-string.
1310            (UnknownProjPanel._DoLayout): Insert a newline into the text so
1311            that the panel is not so wide.
1312    
1313    2003-10-08  Bernhard Herzog  <[email protected]>
1314    
1315            * Thuban/Model/resource.py (read_proj_file): Return the warnings
1316            too. Update the doc-string
1317            (get_proj_files): Removed. It wasn't used anywhere
1318            (get_system_proj_files, get_system_proj_file): Rename to
1319            get_system_proj_file and return the ProjFile object and not a list
1320            of ProjFile objects. Update the callers.
1321            (get_user_proj_files, get_user_proj_file): Rename to
1322            get_user_proj_file return the ProjFile object and not a list of
1323            ProjFile objects. Update the callers.
1324            (ProjFileReader.__init__): New instance variable for the warnings.
1325            Rename the __pf ivar to projfile. Update the methods referring to
1326            __pf
1327            (ProjFileReader.end_projection): Catch any errors raised when
1328            instantiating the projection and record that as an error. The
1329            projection will not be in the final ProjFile object.
1330            (ProjFileReader.GetWarnings): New method to return the warnings.
1331    
1332            * Thuban/UI/projdialog.py (ProjFrame.show_warnings): New method to
1333            show the warnings from the projfile reader
1334            (ProjFrame._OnImport): Deal with any warnings returned by
1335            read_proj_file
1336            (ProjFrame.__FillAvailList): Deal with any warnings returned by
1337            get_system_proj_file or get_user_proj_file.
1338    
1339            * test/test_proj.py (TestProjFile.doTestRead): Check the warnings.
1340            (TestProjFileWithInvalidParameters.file_contents): New test cases
1341            to test whether read_proj_file handles invalid projection
1342            parameters correctly
1343            (TestProjFile.test_get_system_proj_file): New. Simple test for
1344            resource.get_system_proj_file
1345    
1346    2003-10-07  Bernhard Herzog  <[email protected]>
1347    
1348            * test/test_derivedshapestore.py
1349            (TestDerivedShapeStoreExceptions.tearDown): Clear the session
1350            properly so that the temporary directories get deleted correctly
1351    
1352    2003-10-06  Bernhard Herzog  <[email protected]>
1353    
1354            Handle the title changes in a proper MVC way.
1355    
1356            * Thuban/UI/mainwindow.py (MainWindow.__init__): Subscribe to the
1357            canvas' TITLE_CHANGED messages
1358            (MainWindow.update_title): New. Update the main window's title
1359            (MainWindow.__SetTitle): Removed. Use update_title instead.
1360            (MainWindow.SetMap): Use update_title instead of __SetTitle
1361            (MainWindow.RenameMap): Do change the window title explicitly
1362            here. That's handled in a proper MVC way now.
1363            (MainWindow.title_changed): New. Subscriber for the TITLE_CHANGED
1364            messages
1365    
1366            * Thuban/Lib/connector.py (Conduit): New class to help classes
1367            that forward messages
1368    
1369            * Thuban/UI/viewport.py: Forward the map's TITLE_CHANGED messages
1370            (ViewPort): Derive from Conduit instead of Publisher
1371            (ViewPort.Subscribe, ViewPort.Unsubscribe): Use the new base class
1372            when calling the inherited versions
1373            (ViewPort._subscribe_map, ViewPort._unsubscribe_map): New helper
1374            methods to subscribe and unsubscribe map messages
1375            (ViewPort.SetMap, ViewPort.Destroy): Use the new helper methods to
1376            handle the map subscriptions
1377            (ViewPort.Map, ViewPort.map_projection_changed)
1378            (ViewPort.layer_projection_changed): Add or update doc-strings
1379    
1380            * test/test_connector.py (TestPublisher.test_issue_simple): Fix
1381            typo
1382            (MyConduit): Helper class for the Conduit test.
1383            (TestConduit): Test cases for Conduit
1384    
1385            * test/test_connector.py: Use support.run_tests as main.
1386    
1387            * test/test_viewport.py (ViewPortTest.setUp): Also subscribe to
1388            the TITLE_CHANGED messages
1389            (ViewPortTest.test_forwarding_title_changed): New test to check
1390            whether the viewport forwards the map's TITLE_CHANGED messages
1391            (TestViewportWithPostGIS.tearDown): Call the map's Destroy method
1392            after the port's because the latter may require a still functional
1393            map.
1394    
1395    2003-10-06  Bernhard Herzog  <[email protected]>
1396    
1397            * Thuban/UI/application.py (ThubanApplication.maps_changed): Add
1398            doc-string
1399    
1400    2003-10-06  Bernhard Herzog  <[email protected]>
1401    
1402            * test/test_viewport.py (ViewPortTest.setUp)
1403            (SimpleViewPortTest.test_init_with_size): Move the test for the
1404            initial size as a constructor parameter from ViewPortTest.setUp
1405            method to a new separate test in SimpleViewPortTest.
1406    
1407    2003-10-06  Bernhard Herzog  <[email protected]>
1408    
1409            * test/test_viewport.py (MockView): New class derived from
1410            ViewPort with a mock implementation of GetTextExtent to be used in
1411            the test cases
1412            (ViewPortTest.setUp): Use MockView instead of ViewPort
1413    
1414            * Thuban/UI/viewport.py (ViewPort.GetTextExtent): Turn this method
1415            into what would be a "pure virtual function" in C++: always raise
1416            NotImplementedError. Mock implementations for test cases don't
1417            belong into the real code
1418    
1419    2003-10-02  Bernhard Herzog  <[email protected]>
1420    
1421            * test/test_layer.py (TestLayer.test_empty_layer): Explicitly
1422            close the dbf file we create so that it's contents have been
1423            written properly.
1424    
1425            * libraries/shapelib/shptree.c, libraries/shapelib/shpopen.c,
1426            libraries/shapelib/shapefil.h, libraries/shapelib/dbfopen.c:
1427            Update to shapelib 1.2.10
1428    
1429    2003-10-01  Jan-Oliver Wagner <[email protected]>
1430    
1431            * Thuban/UI/tree.py, Thuban/UI/main.py: Remove the #! line as
1432            it annoys lintian which warns about these files not being
1433            executable. The #! isn't necessary here since if you absolutely
1434            must execute them you can always say "python <filename>".
1435    
1436  2003-09-26  Bernhard Herzog  <[email protected]>  2003-09-26  Bernhard Herzog  <[email protected]>
1437    
1438          * Thuban/Model/classgen.py (GenQuantiles0): Removed since it's          * Thuban/Model/classgen.py (GenQuantiles0): Removed since it's
# Line 1421  Line 2856 
2856    
2857          * Thuban/Model/range.py, Thuban/version.py: Remove the #! line as          * Thuban/Model/range.py, Thuban/version.py: Remove the #! line as
2858          it annoys lintian which warns about these files not being          it annoys lintian which warns about these files not being
2859          executable. The #1 isn't necessary here since if you absolutely          executable. The #! isn't necessary here since if you absolutely
2860          must execute them you can always say "python <filename>".          must execute them you can always say "python <filename>".
2861    
2862          * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Remove          * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Remove

Legend:
Removed from v.1760  
changed lines
  Added in v.2039

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26