/[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 1420 by bh, Tue Jul 15 09:29:39 2003 UTC revision 1653 by bh, Mon Aug 25 16:00:06 2003 UTC
# Line 1  Line 1 
1    2003-08-25  Bernhard Herzog  <[email protected]>
2    
3            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Release the the mouse
4            before calling MouseLeftUp. MouseLeftUp may pop up modal dialogs
5            which leads to an effectively frozen X session because the user
6            can only interact with the dialog but the mouse is still grabbed
7            by the canvas.
8            Also, call the tool's Hide method before MouseLeftUp because
9            MouseLeftUp may change the tool's coordinates.
10    
11    2003-08-25  Bernhard Herzog  <[email protected]>
12    
13            * Thuban/UI/application.py (ThubanApplication.OpenSession): Catch
14            LoadCancelled exceptions and handle them by returning immediately.
15    
16    2003-08-25  Bernhard Herzog  <[email protected]>
17    
18            GUI part of loading sessions with postgis connections which may
19            require user interaction to get passwords or updated parameters
20    
21            * Thuban/UI/dbdialog.py (DBDialog): Reimplement to make it look a
22            bit nucer and be more generic.
23            (DBFrame.OnAdd): Adapt to new DBDialog interface
24    
25            * Thuban/UI/application.py (ThubanApplication.OpenSession): New
26            optional parameter db_connection_callback which is passed to
27            load_session.
28    
29            * Thuban/UI/mainwindow.py (MainWindow.run_db_param_dialog): New.
30            Suitable as a db_connection_callback
31            (MainWindow.OpenSession): Use self.run_db_param_dialog as the
32            db_connection_callback of the application's OpenSession method
33    
34    
35    2003-08-25  Bernhard Herzog  <[email protected]>
36    
37            Basic loading of sessions containing postgis connections:
38    
39            * Thuban/Model/load.py (LoadError): Add doc-string
40            (LoadCancelled): New exception class to indicate a cancelled load
41            (SessionLoader.__init__): Add the db_connection_callback parameter
42            which will be used by the loader to get updated parameters and a
43            password for a database connection
44            (SessionLoader.__init__): Add the new XML elements to the
45            dispatchers dictionary
46            (SessionLoader.check_attrs): Two new conversions, ascii to convert
47            to a byte-string object and idref as a generic id reference
48            (SessionLoader.start_dbconnection)
49            (SessionLoader.start_dbshapesource): New. Handlers for the new XML
50            elements
51            (load_session): Add the db_connection_callback to pass through the
52            SessionLoader
53    
54            * test/test_load.py (TestPostGISLayer, TestPostGISLayerPassword):
55            New classes to test loading of sessions with postgis database
56            connections.
57    
58    2003-08-25  Bernhard Herzog  <[email protected]>
59    
60            * Thuban/UI/mainwindow.py (__ThubanVersion__): Remove this and
61            replace it and the comment with __BuildDate__ by the Source: and
62            Id: cvs keywords as used in the other files.
63    
64    2003-08-25  Bernhard Herzog  <[email protected]>
65    
66            * Thuban/Model/load.py (SessionLoader.check_attrs): Raise a
67            LoadError when a required attribute is missing. The code used to
68            be commented out for some reason, but probably should have been
69            active.
70    
71            * test/test_load.py (TestLoadError.test): Test the message in the
72            LoadError too to make sure it really is about the missing
73            attribute
74    
75    2003-08-22  Bernhard Herzog  <[email protected]>
76    
77            * test/test_save.py (SaveSessionTest.test_dbf_table)
78            (SaveSessionTest.test_joined_table): Add XML validation tests.
79    
80    2003-08-22  Bernhard Herzog  <[email protected]>
81    
82            Implement saving a session with a postgis connection
83    
84            * Resources/XML/thuban-0.9.dtd (dbconnection, dbshapesource) New
85            elements for database connections and shapestores using db
86            connections
87            (session): Add the dbconnections to the content model
88    
89            * Thuban/Model/save.py (SessionSaver.write_db_connections): New.
90            Write the db connections
91            (SessionSaver.write_session): Call write_db_connections to write
92            the connection before the data sources
93            (SessionSaver.write_data_containers): Handle postgis shapestores
94    
95            * test/test_save.py (SaveSessionTest.thubanids)
96            (SaveSessionTest.thubanidrefs): Update for new DTD
97            (SaveSessionTest.test_save_postgis): New. Test saving a session
98            with postgis connections
99    
100            * Thuban/Model/postgisdb.py (PostGISTable.DBConnection)
101            (PostGISTable.TableName): New accessor methods for the connection
102            and table name
103    
104            * test/test_postgis_db.py (TestPostGISTable.test_dbconn)
105            (TestPostGISTable.test_dbname): New methods to test the new
106            PostGISConnection methods
107    
108    2003-08-22  Bernhard Herzog  <[email protected]>
109    
110            * Thuban/Model/postgisdb.py (ConnectionError): New exception class
111            for exceptions occurring when establishing a Database connection
112            (PostGISConnection.connect): Catch psycopg.OperationalError during
113            connects and raise ConnectionError.
114    
115            * test/test_postgis_db.py (TestPostgisDBExceptions): New class for
116            tests for database exceptions
117    
118    2003-08-22  Bernhard Herzog  <[email protected]>
119    
120            Prepare the test suite for tests with required authentication
121    
122            * test/postgissupport.py (PostgreSQLServer.__init__): Add instance
123            variables with two predefined users/passwords, one for the admin
124            and one for a non-privileged user.
125            (PostgreSQLServer.createdb): Pass the admin name to initdb and add
126            the non-privileged user to the database and set the admin password
127            (PostgreSQLServer.wait_for_postmaster): Use the admin user name.
128            Better error reporting
129            (PostgreSQLServer.connection_params)
130            (PostgreSQLServer.connection_string): New methods to return
131            information about how to connect to the server
132            (PostgreSQLServer.execute_sql): New. Convenience method to execute
133            SQL statements
134            (PostgreSQLServer.require_authentication): Toggle whether the
135            server requires authentication
136            (PostgreSQLServer.create_user, PostgreSQLServer.alter_user): New.
137            Add or alter users
138            (PostGISDatabase.initdb): Pass the admin name one the
139            subprocesses' command lines. Grant select rights on
140            geometry_columns to everybody.
141            (upload_shapefile): Use the admin name and password when
142            connecting. Grant select rights on the new table to everybody.
143    
144            * test/test_viewport.py (TestViewportWithPostGIS.setUp): Use the
145            server's new methods to get the connection parameters.
146    
147            * test/test_postgis_session.py (TestSessionWithPostGIS.setUp)
148            (TestSessionWithPostGIS.test_remove_dbconn_exception): Use the
149            server's new methods to get the connection parameters.
150    
151            * test/test_postgis_db.py
152            (TestPostGISConnection.test_gis_tables_empty)
153            (TestPostGISConnection.test_gis_tables_non_empty)
154            (PostGISStaticTests.setUp): Use the server's new methods to get
155            the connection parameters.
156    
157    2003-08-22  Bernhard Herzog  <[email protected]>
158    
159            * Thuban/UI/about.py (About.__init__): Add the psycopg version.
160    
161            * Thuban/version.py: Add psycopg version
162    
163            * Thuban/Model/postgisdb.py (psycopg_version): New. Return the
164            version of the psycopg module
165    
166    2003-08-22  Bernhard Herzog  <[email protected]>
167    
168            * Thuban/UI/dbdialog.py (DBPwdDlg): Removed because it's not used.
169            (DBFrame.OnEdit): Removed because it's not used and wouldn't work
170            at the moment. The functionality should probably be implemented
171            some time, though.
172            (DBFrame.OnRemove): Display a message if the connection can't be
173            removed because it's still in use.
174    
175    2003-08-22  Jan-Oliver Wagner <[email protected]>
176    
177            * Thuban/UI/about.py (About.__init__): split up the huge about
178            text into elements/lists for easier translation. This fixes bug
179            https://intevation.de/rt/webrt?serial_num=2058
180            Also, made some forgotten string available for the i18n.
181    
182    2003-08-21  Bernhard Herzog  <[email protected]>
183    
184            Make postgis support really optional including insensitive menu
185            items.
186    
187            * Thuban/Model/postgisdb.py (has_postgis_support): New. Return
188            whether the postgis is supported.
189    
190            * Thuban/UI/dbdialog.py: Put the psycopg import into try..except
191            to make postgis support optional
192    
193            * Thuban/UI/mainwindow.py (_has_postgis_support): New. Context
194            version of Thuban.Model.postgisdb.has_postgis_support
195            (database_management command): Make it only sensitive if postgis
196            is supported.
197    
198    2003-08-21  Jan-Oliver Wagner <[email protected]>
199    
200            * Doc/manual/thuban-manual.xml: Added CVS revision for rev-history.
201            (section Adding and Removing Layers): Added text and described
202            multi-selection.
203            (chapter Extensions): New.
204    
205    2003-08-21  Jan-Oliver Wagner <[email protected]>
206    
207            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Changed dialog
208            settings to allow multiple files to load into the map.
209            Also reduced selection to *.shp as a default.
210    
211    2003-08-20  Bernhard Herzog  <[email protected]>
212    
213            Add dialogs and commands to open database connections and add
214            database layers.
215    
216            * Thuban/UI/mainwindow.py (MainWindow.DatabaseManagement): New
217            method to open the database connection management dialog
218            (MainWindow.AddDBLayer): New method to add a layer from a database
219            (_has_dbconnections): New helper function to use for sensitivity
220            (database_management command, layer_add_db command): New commands
221            that call the above new methods.
222            (main_menu): Add the new commands to the menu.
223    
224            * Thuban/Model/postgisdb.py (PostGISConnection.__init__)
225            (PostGISConnection.connect): Establish the actual connection in a
226            separate method and call it in __init__. This makes it easier to
227            override the behavior in test cases
228            (PostGISConnection.BriefDescription): New method to return a brief
229            description for use in dialogs.
230    
231            * test/test_postgis_db.py (NonConnection): DB connection that
232            doesn't actually connect
233            (TestBriefDescription): New class with tests for the new
234            BriefDescription method
235    
236    2003-08-19  Jan-Oliver Wagner <[email protected]>
237    
238            Moved anything from extensions to libraries.
239    
240            * libraries: New.
241    
242            * libraries/ pyprojection, pyshapelib, shapelib, thuban: New.
243    
244            * libraries/pyprojection/ LICENSE, MANIFEST.in, Projection.i,
245            Projection.py, Projection_wrap.c, setup.py, swighelp.txt: These files have
246            been moved here from thuban/extensions/pyprojection/
247            See there in the Attic for the older history.
248    
249            * libraries/pyshapelib/ COPYING, ChangeLog, NEWS, README, dbflib.i,
250            dbflib.py, dbflib_wrap.c, pyshapelib_api.h, pytest.py, setup.py,
251            shapelib.i, shapelib.py, shapelib_wrap.c, shptreemodule.c: These files
252            have been moved here from thuban/extensions/pyshapelib/
253            See there in the Attic for the older history.
254    
255            * libraries/shapelib/ dbfopen.c, shapefil.h, shpopen.c, shptree.c: These
256            files have been moved here from thuban/extensions/shapelib/
257            See there in the Attic for the older history.
258    
259            * libraries/thuban/ bmpdataset.cpp, cpl_mfile.cpp, cpl_mfile.h,
260            gdalwarp.cpp, wxproj.cpp: These files have been moved here from
261            thuban/extensions/thuban/
262            See there in the Attic for the older history.
263    
264            * MANIFEST.in, setup.cfg, setup.py: renamed extensions to libraries.
265    
266            * extensions/thuban/ bmpdataset.cpp, cpl_mfile.cpp, cpl_mfile.h,
267            gdalwarp.cpp, wxproj.cpp: Moved to libraries/thuban.
268    
269            * extensions/shapelib/ dbfopen.c, shapefil.h, shpopen.c, shptree.c:
270            Moved to libraries/shapelib.
271    
272            * extensions/pyshapelib/ COPYING, NEWS, dbflib.py, pytest.py,
273            shapelib.py, README, dbflib_wrap.c, setup.py, shapelib_wrap.c,
274            ChangeLog, dbflib.i, pyshapelib_api.h, shapelib.i, shptreemodule.c:
275            Moved to libraries/pyshapelib.
276    
277            * extensions/pyprojection/ MANIFEST.in, Projection.py, setup.py,
278            LICENSE, Projection.i, Projection_wrap.c, swighelp.txt:
279            Moved to libraries/pyprojection.
280    
281            * extensions/ pyprojection, pyshapelib, shapelib, thuban: Removed.
282    
283            * extensions: Removed.
284    
285    2003-08-19  Bernhard Herzog  <[email protected]>
286    
287            * test/test_viewport.py (ViewPortTest): We don't use the
288            facilities of FileTestMixin so don't derive from it.
289            (TestViewportWithPostGIS): New class with tests for using a
290            viewport on a map with postgis layers.
291    
292    2003-08-19  Bernhard Herzog  <[email protected]>
293    
294            Add the db connection management to the session.
295    
296            * Thuban/Model/session.py (Session.__init__): New instance
297            variable db_connections
298            (Session.AddDBConnection, Session.DBConnections)
299            (Session.HasDBConnections, Session.CanRemoveDBConnection)
300            (Session.RemoveDBConnection): New methods to manage and query the
301            db connections managed by the session
302            (Session.OpenDBShapeStore): New method to open a shapestore from a
303            db connection
304    
305            * Thuban/Model/messages.py (DBCONN_REMOVED, DBCONN_ADDED): New
306            messages for the db connection handling in the session
307    
308            * test/test_postgis_session.py: New. test cases for the session's
309            db connection handling with postgis connections
310    
311    2003-08-19  Bernhard Herzog  <[email protected]>
312    
313            Add very basic postgis database support and the corresponding test
314            cases. The test cases require a PostgreSQL + postgis installation
315            but no existing database. The database will be created
316            automatically by the test cases
317    
318            * test/README: Add note about skipped tests and the requirements
319            of the postgis tests.
320    
321            * Thuban/Model/postgisdb.py: New. Basic postgis database support.
322    
323            * test/test_postgis_db.py: New. Test cases for the postgis
324            support.
325    
326            * Thuban/Model/wellknowntext.py: New. Parser for well-known-text
327            format
328    
329            * test/test_wellknowntext.py: New. Test cases for the
330            wellknowntext parser
331    
332            * test/postgissupport.py: New. Support module for tests involving
333            a postgis database.
334    
335            * test/support.py (execute_as_testsuite): Shut down the postmaster
336            if it's still running after the tests
337    
338            * Thuban/Model/data.py (RAW_WKT): New constant for raw data in
339            well known text format
340    
341    2003-08-19  Jan-Oliver Wagner <[email protected]>
342    
343            * Examples/simple_extensions/hello_world.py: New. Raises a Hello World
344            message dialog.
345    
346    2003-08-18  Bernhard Herzog  <[email protected]>
347    
348            * test/support.py (ThubanTestResult.printErrors): Indent the
349            reason for the skips in the output to make it a bit more readable.
350            (execute_as_testsuite): New helper function to run a test suite
351            and print some more information.
352            (run_tests): Use execute_as_testsuite to run the tests
353    
354            * test/runtests.py (main): Use execute_as_testsuite to run the
355            tests
356    
357    2003-08-18  Bernhard Herzog  <[email protected]>
358    
359            Fix some bugs in Thuban and the test suite that were uncovered by
360            changes introduced in Python 2.3:
361    
362            * Thuban/Model/table.py (DBFTable.__init__): Make sure the
363            filename is an absolute name
364    
365            * Thuban/Model/layer.py (RasterLayer.__init__): Make sure the
366            filename is an absolute name
367    
368            * test/test_save.py (SaveSessionTest.testRasterLayer): Use a
369            unique filename to save to and use the correct relative filename
370            in the expected output.
371            (SaveSessionTest.test_dbf_table): Use the correct relative
372            filename in the expected output.
373    
374            * test/test_layer.py (TestLayer.test_raster_layer): Update the
375            test to check whether the filename is absolute.
376    
377    2003-08-18  Jan-Oliver Wagner <[email protected]>
378    
379            * Thuban/UI/about.py (About.__init__): Added Silke Reimer.
380    
381    2003-08-15  Bernhard Herzog  <[email protected]>
382    
383            Change the way shapes are returned by a shape store. The
384            ShapesInRegion method returns an iterator over actual shape
385            objects instead of a list of shape ids.
386    
387            * Thuban/Model/data.py (ShapefileShape.ShapeID): New. Return shape
388            id.
389            (ShapefileStore.ShapesInRegion): Return an iterator over the
390            shapes which yields shape objects instead of returning a list of
391            shape ids
392            (ShapefileStore.AllShapes): New. Return an iterator over all
393            shapes in the shape store
394            (DerivedShapeStore.AllShapes): New. Like in ShapefileStore
395    
396            * Thuban/Model/layer.py (Layer.ShapesInRegion): Update
397            doc-string.
398    
399            * Thuban/UI/baserenderer.py
400            (BaseRenderer.layer_ids, BaseRenderer.layer_shapes): Rename to
401            layer_shapes and make it return an iterator containg shapes
402            instead of a list of ids.
403            (BaseRenderer.draw_shape_layer): Update doc-string; Adapt to
404            layer_shapes() change
405    
406            * Thuban/UI/renderer.py (ScreenRenderer.layer_ids)
407            (ScreenRenderer.layer_shapes): Rename as in BaseRenderer
408    
409            * Thuban/UI/viewport.py (ViewPort._find_shape_in_layer): Adapt to
410            changes in the ShapesInRegion return value.
411            (ViewPort._get_hit_tester): Remove commented out code
412    
413            * test/mockgeo.py (SimpleShapeStore.ShapesInRegion): Adapt to the
414            new return value.
415            (SimpleShapeStore.AllShapes): New. Implement this method too.
416    
417            * test/test_layer.py (TestLayer.test_arc_layer)
418            (TestLayer.test_polygon_layer, TestLayer.test_point_layer)
419            (TestLayer.test_point_layer_with_projection)
420            (TestLayer.test_derived_store): Adapt to changes in the
421            ShapesInRegion return value.
422    
423            * test/test_shapefilestore.py
424            (TestShapefileStoreArc.test_shapes_in_region)
425            (TestShapefileStorePolygon.test_shapes_in_region)
426            (TestShapefileStorePoint.test_shapes_in_region): Adapt to changes
427            in the ShapesInRegion return value.
428            (TestShapefileStorePoint.test_all_shapes)
429            (TestShapefileStoreArc.test_shape_shapeid): New tests for the new
430            methods
431    
432            * test/test_derivedshapestore.py
433            (TestDerivedShapeStore.test_shapes_in_region): Adapt to changes in
434            the ShapesInRegion return value.
435            (TestDerivedShapeStore.test_all_shapes)
436            (TestDerivedShapeStore.test_shape_shapeid): New tests for the new
437            methods
438    
439    2003-08-15  Bernhard Herzog  <[email protected]>
440    
441            Make the renderers deal correctly with raw vs. python level
442            representation of shape geometries
443    
444            * Thuban/UI/baserenderer.py (BaseRenderer.low_level_renderer):
445            Return a flag useraw in addition to the callable and the parameter
446            to indicate whether the callable can deal with the raw shape data
447            or uses the higher level python lists of coordinates. The callable
448            now should accept either the raw data or the return value of the
449            shape's Points() method.
450            (BaseRenderer.draw_shape_layer): Adapt to the low_level_renderer
451            change
452            (BaseRenderer.projected_points): Instead of the shape id use the
453            points list as parameter.
454            (BaseRenderer.draw_polygon_shape, BaseRenderer.draw_arc_shape)
455            (BaseRenderer.draw_point_shape): Adapt to projected_points()
456            change and accept the points list as parameter instead of the
457            shape id.
458    
459            * Thuban/UI/renderer.py (MapRenderer.low_level_renderer): Return
460            the useraw flag as required by the BaseRenderer
461            (ScreenRenderer.draw_shape_layer): Adapt to low-level renderer
462            changes.
463    
464            * test/test_baserenderer.py
465            (TestBaseRenderer.test_point_with_classification): New test for
466            rendering a map with classifications.
467    
468    2003-08-15  Bernhard Herzog  <[email protected]>
469    
470            * Thuban/UI/viewport.py (ViewPort.find_shape_at)
471            (ViewPort._find_shape_in_layer, ViewPort._find_shape_in_layer)
472            (ViewPort._get_hit_tester, ViewPort.projected_points)
473            (ViewPort._hit_point, ViewPort._hit_arc, ViewPort._hit_polygon)
474            (ViewPort._find_label_at): Split the find_shape_at method into
475            several new methods and use the functions in the hit-test module.
476    
477            * Thuban/UI/hittest.py: New module with Python-level hit-testing
478            functions
479    
480            * test/test_hittest.py: New. Test for the new hittest module
481    
482    2003-08-15  Bernhard Herzog  <[email protected]>
483    
484            * Thuban/Model/layer.py (Layer.ShapesInRegion): Apply the layer
485            projection to all corners of the bounding box to get a better
486            approximation of the projected bounding box
487    
488            * test/test_layer.py (TestLayer.test_point_layer_with_projection):
489            New. Test coordinate handling of a layer with a projection.
490            Catches the bug fixed in Layer.ShapesInRegion
491    
492    2003-08-15  Bernhard Herzog  <[email protected]>
493    
494            Move some of the mock objects in test_baserenderer into their own
495            module so they can easily be used from other tests
496    
497            * test/mockgeo.py: New test helper module with some mock objects
498            for geometry related things like shapes, shapestores and
499            projections.
500    
501            * test/test_mockgeo.py: New. Tests for the new helper module
502    
503            * test/test_baserenderer.py: Some of the mock-objects are in
504            mockgeo now.
505    
506    2003-08-12  Jan-Oliver Wagner <[email protected]>
507    
508            * Thuban/UI/about.py (About.__init__): Added Bj�rn Broscheit.
509    
510    2003-08-12  Bernhard Herzog  <[email protected]>
511    
512            * po/de.po: New. German translations by Bjoern Broscheit
513    
514    2003-08-12  Bernhard Herzog  <[email protected]>
515    
516            * Thuban/UI/projdialog.py (UnknownProjPanel._DoLayout): Translated
517            strings have to be one string literal.
518    
519    2003-08-11  Bernhard Herzog  <[email protected]>
520    
521            * test/support.py (FloatComparisonMixin.assertPointListEquals):
522            New. This method was used in various derived classes, but it's
523            better to have it here.
524    
525            * test/test_shapefilestore.py
526            (ShapefileStoreTests.assertPointListEquals): Removed. It's now in
527            FloatComparisonMixin
528    
529            * test/test_layer.py (TestLayer.assertPointListEquals): Removed.
530            It's now in FloatComparisonMixin
531    
532            * test/test_derivedshapestore.py
533            (TestDerivedShapeStore.assertPointListEquals): Removed. It's now
534            in FloatComparisonMixin
535    
536    2003-08-11  Bernhard Herzog  <[email protected]>
537    
538            * Thuban/UI/join.py (JoinDialog.OnJoin): Add missing space to
539            error message
540    
541    2003-08-08  Jan-Oliver Wagner <[email protected]>
542    
543            * Doc/manual/thuban-manual.xml: Now use authorgroup. Added revhistory
544            with version number.
545            Changed title to reflect version number of Thuban.
546    
547    2003-08-08  Jan-Oliver Wagner <[email protected]>
548    
549            * Thuban/UI/about.py (About.__init__): Reworked the hall of fame. Now
550            the list corresponds to the "About" web page.
551    
552    2003-08-08  Bernhard Herzog  <[email protected]>
553    
554            * Thuban/UI/projdialog.py (UTMProposeZoneDialog.dialogLayout):
555            Make sure translated strings are recognized as one string literal.
556    
557            * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog.dialogLayout):
558            Make sure translated strings are recognized as one string literal.
559    
560            * Thuban/UI/classgen.py (ClassGenDialog.OnOK): Make sure
561            translated strings are recognized as one string literal.
562    
563            * Thuban/UI/application.py (ThubanApplication.OpenSession): Make
564            sure translated strings are recognized as one string literal.
565    
566    2003-08-07  Bernhard Herzog  <[email protected]>
567    
568            * Thuban/Model/data.py (DerivedShapeStore.RawShapeFormat): New.
569            Simply delegates to the original shapestore.
570    
571            * test/test_derivedshapestore.py
572            (TestDerivedShapeStore.test_raw_format): New. Test case for
573            DerivedShapeStore.RawShapeFormat
574    
575    2003-08-07  Bernhard Herzog  <[email protected]>
576    
577            Add raw data interface to shape objects.
578    
579            * Thuban/Model/data.py (ShapefileShape, Shape): Rname the shape
580            class to ShapefileShape which now holds shapefile specific
581            information.
582            (ShapefileShape.compute_bbox): Simplified to not cache any
583            information. The way this method is used that shouldn't matter
584            performance wise.
585            (ShapefileShape.RawData): New. Return the shapeid which is the raw
586            data format for shapes from shapefiles.
587            (ShapefileStore.RawShapeFormat): New. Return the raw datatype used
588            in the shape objects returned by a shapestore. For a
589            ShapefileStore this is always RAW_SHAPEFILE.
590            (RAW_PYTHON, RAW_SHAPEFILE): Constants for the RawShapeFormat
591            method.
592    
593            * test/test_shapefilestore.py
594            (TestShapefileStore.test_raw_format): New test to test the raw
595            format feature of shapes.
596    
597            * Thuban/Model/layer.py: Remove the unused import of Shape from
598            data. It was only there for interface compatibility but it's not
599            used inside of Thuban and the generic Shape class has gone away.
600    
601            * Thuban/UI/renderer.py (MapRenderer.low_level_renderer): Check
602            the raw data format and only use an optimized version of its a
603            shapefile.
604    
605    2003-08-07  Bernhard Herzog  <[email protected]>
606    
607            * test/test_baserenderer.py (SimpleShape): Shape class for the
608            tests.
609            (SimpleShapeStore.Shape): Use SimpleShape instead of
610            Thuban.Model.data.Shape to make the tests independed of the coming
611            changes.
612    
613    2003-08-07  Bernhard Herzog  <[email protected]>
614    
615            * test/support.py (SkipTest, ThubanTestResult, ThubanTestRunner)
616            (ThubanTestProgram): New classes that extend the respective
617            classes from unittest. These new version support skipping tests
618            under certain expected conditions. In the Thuban test suite we
619            uses this for tests that require the optional gdal support.
620            (run_tests): Use ThubanTestProgram instead of the unittest.main()
621    
622            * test/runtests.py (main): Use the new ThubanTestRunner instead of
623            the normal one from unittest
624    
625            * test/test_layer.py (TestLayer.test_raster_layer): If this test
626            is not run because gdal support isn't available report this to the
627            runner.
628    
629            * test/test_baserenderer.py
630            (TestBaseRenderer.test_raster_no_projection): Do not run this test
631            if gdal support isn't available and report this to the runner.
632    
633    2003-08-06  Bernhard Herzog  <[email protected]>
634    
635            Rearrange the renderers a bit, partly in preparation for changes
636            required for the postgis merge, partly to make it more testable.
637            Also make the representation of coordinates in Shapes more
638            consistent.
639    
640            * Thuban/UI/renderer.py (MapRenderer): Most of the code/methods in
641            this class is now in BaseRenderer. This class is now practically
642            only a specialization of BaseRenderer for rendering to an actual
643            wx DC.
644            (ScreenRenderer.draw_shape_layer): Use self.low_level_renderer()
645            to get the shapetype specific rendering functions.
646    
647            * Thuban/UI/baserenderer.py: New file with the basic rendering
648            logic. The code in this file is completely independend of wx.
649            (BaseRenderer): Class with the basic rendering logic
650    
651            * test/test_baserenderer.py: New. Test cases for BaseRenderer
652    
653            * Thuban/UI/view.py (MapCanvas.__init__): New instance variable
654            error_on_redraw to guard agains endless loops and stack overflows
655            when there's a bug in the rendering code that raises exceptions.
656            (MapCanvas.OnIdle, MapCanvas._do_redraw): Split the actual
657            rendering into a separate method _do_redraw so that error handling
658            is a bit easier. When an exception occurs, set error_on_redraw to
659            true. When it's true on entry to OnIdle do nothing and return
660            immediately.
661    
662            * Thuban/Model/data.py (ShapefileStore.Shape): For consistency, a
663            Shape object will always have the coordinates as a list of list of
664            coordinate pairs (tuples).
665            (Shape.compute_bbox): Adapt to new representation.
666    
667            * Thuban/UI/viewport.py (ViewPort.find_shape_at)
668            (ViewPort.LabelShapeAt): Adapt to new coordinate representation in
669            Shape objects.
670    
671            * test/test_shapefilestore.py
672            (ShapefileStoreTests.assertFloatTuplesEqual)
673            (ShapefileStoreTests.assertPointListEquals): Rename to
674            assertPointListEquals and change purpose to checking equality of
675            the lists returned by Shape.Points().
676            (TestShapefileStoreArc.test_shape)
677            (TestShapefileStorePolygon.test_shape)
678            (TestShapefileStorePoint.test_shape): Use the new
679            assertPointListEquals instead of assertFloatTuplesEqual
680    
681            * test/test_layer.py (TestLayer.assertFloatTuplesEqual)
682            (TestLayer.assertPointListEquals): Rename to assertPointListEquals
683            and change purpose to checking equality of the lists returned by
684            Shape.Points().
685            (TestLayer.test_arc_layer, TestLayer.test_arc_layer)
686            (TestLayer.test_polygon_layer, TestLayer.test_point_layer)
687            (TestLayer.test_derived_store): Use the new assertPointListEquals
688            instead of assertFloatTuplesEqual
689    
690            * test/test_derivedshapestore.py
691            (TestDerivedShapeStore.assertFloatTuplesEqual)
692            (TestDerivedShapeStore.assertPointListEquals): Rename to
693            assertPointListEquals and change purpose to checking equality of
694            the lists returned by Shape.Points().
695            (TestDerivedShapeStore.test_shape): Use the new
696            assertPointListEquals instead of assertFloatTuplesEqual
697    
698    2003-08-06  Jan-Oliver Wagner <[email protected]>
699    
700            * Thuban/UI/projdialog.py (UTMPanel._OnPropose): Added test for
701            a bounding box. A dialog is raised in case, no bounding box
702            is found. This fixes bug #2043:
703            https://intevation.de/rt/webrt?serial_num=2043
704    
705    2003-08-05  Bernhard Herzog  <[email protected]>
706    
707            * Thuban/Model/color.py (Color.__repr__): Make the repr of a color
708            object look like a Color instantiation. Formerly it looked like a
709            tuple.
710    
711            * test/test_color.py (TestColor.test_repr)
712            (TestColor.test_equality, TestColor.test_inequality): New. test
713            some more apects of the Color class
714            (TestTransparent.test_repr, TestTransparent.test_hex)
715            (TestTransparent.test_equality): New. Test cases for the
716            Transparent object.
717    
718    2003-08-04  Jan-Oliver Wagner <[email protected]>
719    
720            * Doc/manual/thuban-manual.xml: a number of small improvements.
721            The resulting file is the version submitted for GREAT-ER II.
722    
723    2003-08-01  Bernhard Herzog  <[email protected]>
724    
725            * Thuban/UI/resource.py, Thuban/UI/projdialog.py,
726            Thuban/UI/join.py, Thuban/UI/classgen.py, Thuban/UI/about.py,
727            Thuban/Model/resource.py: Insert cvs keywords and doc-strings.
728    
729            * Thuban/UI/common.py: Insert cvs keywords and doc-strings.
730            (Color2wxColour, wxColour2Color, ThubanBeginBusyCursor)
731            (ThubanEndBusyCursor): Add doc-strings
732    
733    2003-08-01  Bernhard Herzog  <[email protected]>
734    
735            First step towards PostGIS integration. More abstraction by movin
736            more code from the layer to the shapestore. More methods of the
737            layer are now simply delegated to the equivalent method of the
738            shapestore. The SHAPETYPE_* constants are now in data not in
739            layer.
740    
741            * Thuban/Model/data.py (SHAPETYPE_POLYGON, SHAPETYPE_ARC)
742            (SHAPETYPE_POINT, Shape): Move these constants and classes from
743            layer.py to data.py
744            (ShapefileStore.__init__): More Initialization for the new methods
745            and functionality.
746            (ShapefileStore.ShapeType, ShapefileStore.NumShapes)
747            (ShapefileStore.BoundingBox, ShapefileStore.ShapesInRegion)
748            (ShapefileStore.Shape): New methods that were formerly implemented
749            in the layer.
750            (DerivedShapeStore.Shape, DerivedShapeStore.ShapesInRegion)
751            (DerivedShapeStore.ShapeType, DerivedShapeStore.NumShapes)
752            (DerivedShapeStore.BoundingBox): New. DerivedShapeStore
753            equivalents of the new shape methods. These versions are simply
754            delegated to the original shapstore.
755    
756            * Thuban/Model/layer.py (SHAPETYPE_POLYGON, SHAPETYPE_ARC)
757            (SHAPETYPE_POINT, Shape): Removed. They're now in data.py
758            (Layer.SetShapeStore): Removed the initializatin of instance
759            variables that were needed for the stuff that's now in
760            ShapefileStore
761            (Layer.BoundingBox, Layer.NumShapes, Layer.ShapeType)
762            (Layer.Shape, Layer.ShapesInRegion): Simply delegate to the
763            shapestore.
764    
765            * Thuban/UI/classifier.py, Thuban/UI/renderer.py,
766            Thuban/UI/viewport.py: Import the SHAPETYPE_* constants from data
767            instead of layer.
768    
769            * test/test_shapefilestore.py: New. Tests for ShapefileStore.
770    
771            * test/test_derivedshapestore.py: New. Tests for DerivedShapeStore.
772    
773            * test/test_layer.py: Import the SHAPETYPE_* constants from data
774            instead of layer.
775            (TestLayer.test_derived_store): Remove the test for the exception
776            when instantiating the DerivedShapeStore with an incompatible
777            table which is now in test_derivedshapestore.py. Add some more
778            tests of the layer methods to determine whether they work for a
779            DerivedShapeStore as well.
780    
781    2003-07-31  Jonathan Coles   <[email protected]>
782    
783            * Doc/manual/thuban-manual.xml: Fix the list of required packages
784            by just listing the name and where they can be found.
785    
786    2003-07-31  Frank Koormann   <[email protected]>
787    
788            * Doc/manual/thuban-manual.xml:
789            Changed the screenshot elements to figure.
790            Changed some variablelist elements to itemizedlist.
791            Added section on GDAL formats.
792    
793    2003-07-31  Jonathan Coles   <[email protected]>
794    
795            * Doc/manual/thuban-manual.xml: Added a few sentences about
796            the Fix Border Color option when generating classes.
797    
798    2003-07-30  Jonathan Coles   <[email protected]>
799    
800            * Thuban/Model/classgen.py: Add docstrings. Rename specific
801            Ramp instances to use lower_case_style.
802    
803            * Thuban/UI/classgen.py: Use renamed Ramp instances.
804            
805            * Thuban/UI/classifier.py: Add docstrings.
806    
807            * Thuban/UI/dock.py: Add docstrings.
808    
809            * test/test_classgen.py: Use renamed Ramp instances.
810    
811    2003-07-30  Bernhard Herzog  <[email protected]>
812    
813            * Thuban/Lib/connector.py (QueueingPublisher): Removed. This class
814            was never used in Thuban.
815    
816    2003-07-30  Bernhard Herzog  <[email protected]>
817    
818            * Thuban/UI/join.py (JoinDialog.__init__): Use the table's Title()
819            method directly instead of going through the transient_table
820            method. This faster because transient_table may force the copy of
821            a DBF file into the transient database and setting a table's title
822            doesnm't affect the title of the associated transient table, so
823            this fixes RT #2042
824    
825            * Thuban/UI/main.py (__version__): Don't import the already
826            removed show_exception_dialog.
827    
828    2003-07-29  Jonathan Coles   <[email protected]>
829    
830            * Thuban/UI/application.py (ThubanApplication.ShowExceptionDialog):
831            Put back this method and remove the equivalent function since we
832            are setting the exception hook from within this class (OnInit).
833    
834    2003-07-29  Jonathan Coles   <[email protected]>
835    
836            * Doc/manual/images/5_2_custom_ramp.png,
837            Doc/manual/images/5_2_quantiles.png,
838            Doc/manual/images/5_2_uniform_dist.png,
839            Doc/manual/images/5_2_unique_values.png,
840            Doc/manual/images/8_int_error.png: New screen shots.
841    
842            * Doc/manual/thuban-manual.xml: Fixed typos and wording, clarified
843            some points, and added more screen shots.
844    
845    2003-07-29  Bernhard Herzog  <[email protected]>
846    
847            * Thuban/Model/data.py: Remove the now unused import of warnings
848    
849    2003-07-29  Bernhard Herzog  <[email protected]>
850    
851            * Thuban/Model/data.py (SimpleStore): Removed. This class has been
852            deprecated since before the 0.8 release and isn't used in Thuban
853            itself anymore.
854    
855            * Thuban/Model/transientdb.py: Remove some unnecessary imports
856    
857    2003-07-29  Jonathan Coles   <[email protected]>
858    
859            * Thuban/UI/application.py (ThubanApplication.OnInit): set the
860            python exception hook here so that we are sure to catch any
861            Thuban exception that happen during initialization.
862    
863            * Thuban/UI/main.py (main): Don't set the exception hook here,
864            it will get set in ThubanApplication.OnInit.
865    
866    2003-07-29  Jonathan Coles   <[email protected]>
867                                                                                
868            * Thuban/UI/application.py (ThubanApplication.ShowExceptionDialog):
869            Removed and called it show_exception_dialog() so that the exception
870            handler can be set before the class is created.
871                                                                                
872            * Thuban/UI/main.py (main): Install the exception handler before
873            a ThubanApplication is created.
874                                                                                    
875    2003-07-29  Bernhard Herzog  <[email protected]>
876    
877            * po/it.po: New. Italian translation by Maurizio Napolitano
878    
879            * po/ru.po: New. Russian translation by Alex Shevlakov
880    
881    2003-07-29  Frank Koormann   <[email protected]>
882    
883            * Doc/manual/thuban-manual.xml: Extended section on supported
884            projections.
885            
886    2003-07-29  Frank Koormann   <[email protected]>
887    
888            * Doc/manual/thuban-manual.xml: gaspell-checked.
889    
890    2003-07-29  Jonathan Coles   <[email protected]>
891    
892            * Doc/manual/images/3_5_legend.png: Added border to improve look
893            on white background.
894    
895    2003-07-29  Jonathan Coles   <[email protected]>
896    
897            * Doc/manual/thuban-manual.xml: Fixed grammar and typos. Added
898            descriptions for the legend toolbar.
899    
900            * Doc/manual/images/4_2_raster_layer_properties.png: Removed
901            cursor from dialog box.
902    
903    2003-07-28  Jonathan Coles   <[email protected]>
904    
905            * Doc/manual/thuban-manual.xml: More screenshots and more chapters.
906    
907            * Doc/manual/images/2_4_session_tree.png,
908            Doc/manual/images/3_5_legend.png, Doc/manual/images/3_rename_map.png,
909            Doc/manual/images/4_2_layer_properties.png,
910            Doc/manual/images/4_2_raster_layer_properties.png,
911            Doc/manual/images/5_3_genclass.png,
912            Doc/manual/images/5_classification.png,
913            Doc/manual/images/6_projection.png,
914            Doc/manual/images/7_1_table_view.png,
915            Doc/manual/images/7_2_5_join.png: New screenshots.
916    
917    2003-07-24  Jonathan Coles   <[email protected]>
918    
919            * Doc/manual/thuban-manual.xml: Chapter on Projection Management.
920    
921    2003-07-24  Jonathan Coles   <[email protected]>
922    
923            * Doc/manual/thuban-manual.xml: Added EPS images and wrote
924            chapter on Layer Management.
925    
926            * Doc/manual/Makefile: New. Makefile to generate all formats for the
927            manual and images.
928    
929    2003-07-24  Bernhard Herzog  <[email protected]>
930    
931            * Thuban/Model/range.py, Thuban/version.py: Remove the #! line as
932            it annoys lintian which warns about these files not being
933            executable. The #1 isn't necessary here since if you absolutely
934            must execute them you can always say "python <filename>".
935    
936            * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Remove
937            superfluous code to set brush and pen for point shapes
938    
939            * Thuban/UI/viewport.py: Remove commented out code that wouldn't
940            belong in viewport anyway
941    
942    2003-07-24  Frank Koormann   <[email protected]>
943    
944            * Doc/manual/thuban-manual.xml: Added section on table management.
945    
946    2003-07-24  Bernhard Herzog  <[email protected]>
947    
948            * test/runtests.py (main): Recognize the long "verbose" option
949            correctly.
950    
951    2003-07-22  Jonathan Coles   <[email protected]>
952    
953            * Doc/manual/thuban-manual.xml: Continue to write first revision
954            of the manual.
955    
956            * Thuban/UI/renderer.py (MapRenderer.render_map): Wrap method
957            with Begin/EndDrawing() calls to ensure we aren't doing to
958            many updates to the dc during rendering.
959            (ScreenRenderer.draw_shape_layer): self.draw_point_shape takes
960            a pen and brush argument so they need to be passed to the function.
961    
962            * Thuban/UI/viewport.py (ViewPort.calc_min_max_scales): New.
963            Calculates the minimum and maximum scale values. Factored out
964            of set_view_transform so that it could be used to zoom all the
965            way into a single point.
966            (ViewPort.set_view_transform): Call calc_min_max_scales().
967            (ViewPort.FitSelectedToWindow): Zoom to the maximum scale
968            if only a single point is selected.
969    
970            * Doc/manual/images/1_2_legend_close.png,
971            Doc/manual/images/1_2_legend_dock.png,
972            Doc/manual/images/1_2_mainwindow.png,
973            Doc/manual/images/1_2_mainwindow.ps,
974            Doc/manual/images/1_2_mainwindow.sk,
975            Doc/manual/images/3_2_fullextent.png,
976            Doc/manual/images/3_2_fulllayerextent.png,
977            Doc/manual/images/3_2_fullshapeextent.png,
978            Doc/manual/images/3_2_pan.png,
979            Doc/manual/images/3_2_zoomin.png,
980            Doc/manual/images/3_2_zoomout.png,
981            Doc/manual/images/3_3_identify.png,
982            Doc/manual/images/3_3_label.png,
983            Doc/manual/images/3_5_invisible.png,
984            Doc/manual/images/3_5_movedown.png,
985            Doc/manual/images/3_5_moveup.png,
986            Doc/manual/images/3_5_props.png,
987            Doc/manual/images/3_5_tobottom.png,
988            Doc/manual/images/3_5_totop.png,
989            Doc/manual/images/3_5_visible.png: New. Images for the documentation.
990    
991    2003-07-18  Bernhard Herzog  <[email protected]>
992    
993            * Thuban/UI/messages.py (MAP_REPLACED): New message.
994    
995            * Thuban/UI/viewport.py (ViewPort.SetMap): Issue MAP_REPLACED
996            after the new map has been assigned
997    
998            * Thuban/UI/mainwindow.py (MainWindow.delegated_messages):
999            Delegate MAP_REPLACED to the canvas too
1000            (MainWindow.prepare_new_session): Removed. Thanks to the new
1001            MAP_REPLACED message it's no longer needed
1002            (MainWindow.OpenSession, MainWindow.NewSession):
1003            prepare_new_session has been removed.
1004    
1005            * Thuban/UI/classifier.py (Classifier.__init__): Subscribe to
1006            MAP_REPLACED so that we can close the dialog if a new map is set.
1007            (Classifier.unsubscribe_messages): Unsubscribe from MAP_REPLACED
1008            (Classifier.map_replaced): Handle MAP_REPLACED by closing the
1009            dialog
1010    
1011            * test/test_viewport.py (SimpleViewPortTest)
1012            (SimpleViewPortTest.test_default_size): Add doc-strings
1013            (ViewPortTest.setUp): Bind map to self.map so we can use it in
1014            tests. Subscribe to MAP_REPLACED messages too.
1015            (ViewPortTest.tearDown): No need to explicitly unsubscribe
1016            (ViewPortTest.test_set_map): New test for the SetMap method.
1017    
1018    2003-07-18  Bernhard Herzog  <[email protected]>
1019    
1020            * test/test_viewport.py (SimpleViewPortTest.test_default_size):
1021            Move this test from ViewPortTest.setUp to this new separate test
1022            case. setUp is not the place for the actual tests.
1023            (ViewPortTest.test_inital_settings, ViewPortTest.setUp): Move some
1024            more of the test from setUp to the new test test_inital_settings.
1025            (ViewPortTest.test_win_to_proj, ViewPortTest.test_proj_to_win)
1026            (ViewPortTest.test_proj_conv): Split test_proj_conv into
1027            test_win_to_proj and test_proj_to_win and make the tests easier to
1028            understand
1029            (ViewPortTest.testFitRectToWindow, ViewPortTest.testZoomFactor)
1030            (ViewPortTest.testZoomOutToRect, ViewPortTest.testTranslate)
1031            (ViewPortTest.test_unprojected_rect_around_point)
1032            (ViewPortTest.test_find_shape_at, ViewPortTest.testTools):
1033            Reformat to increase readability.
1034    
1035    2003-07-18  Bernhard Herzog  <[email protected]>
1036    
1037            * Thuban/UI/view.py (MapCanvas.OnLeftDown): Capture the mouse.
1038    
1039    2003-07-18  Bernhard Herzog  <[email protected]>
1040    
1041            * test/runtests.py: The test suite can now be run without an X
1042            connection. To make sure this remains true, remove the DISPLAY
1043            environment variable so that an error occurs if the wxGTK is
1044            imported accidentally
1045    
1046    2003-07-18  Bernhard Herzog  <[email protected]>
1047    
1048            * Thuban/UI/viewport.py: Remove unused imports
1049    
1050            * Thuban/UI/view.py: Remove unused imports
1051    
1052    2003-07-18  Bernhard Herzog  <[email protected]>
1053    
1054            * test/test_export.py Remove unused imports. The OutputTransform
1055            function is now in viewport.py and is called output_transform
1056            (TestScalebar.test_output_transform)
1057            (TestScalebar.test_OutputTransform): Renamed to
1058            test_output_transform and updated to use output_transform instead
1059            of OutputTransform
1060    
1061            * Thuban/UI/view.py (OutputTransform): Moved to viewport.py and
1062            renamed.
1063            (MapCanvas.Export, MapPrintout.draw_on_dc): OutputTransform was
1064            renamed to output_transform
1065    
1066            * Thuban/UI/viewport.py (OutputTransform, output_transform):
1067            Rename to output_transform
1068    
1069    2003-07-18  Bernhard Herzog  <[email protected]>
1070    
1071            * Thuban/Model/layer.py (Layer.__init__): Rename
1072            classificationField to classificatin_column and init it here so
1073            that it can be used in SetClassificationColumn
1074            (Layer.GetClassificationColumn, Layer.GetClassificationField):
1075            Rename to GetClassificationColumn.
1076            (Layer.SetClassificationColumn, Layer.SetClassificationField):
1077            Rename to SetClassificationColumn and issue a LAYER_CHANGED
1078            message if the column changes.
1079            (Layer._classification_changed, Layer.ClassChanged): Rename to
1080            _classification_changed. Update the callers.
1081            (Layer.SetShapeStore): Further field->column renames.
1082    
1083            * Thuban/Model/load.py (SessionLoader.start_classification)
1084            (SessionLoader.start_clpoint): Updates because of
1085            field->column method name changes in the Layer class
1086    
1087            * Thuban/Model/save.py (SessionSaver.write_classification): Updates
1088            because of field->column method name changes in the Layer class
1089    
1090            * Thuban/UI/classifier.py (Classifier.__init__)
1091            (Classifier._OnTry, Classifier._OnRevert): Updates because of
1092            field->column method name changes in the Layer class
1093    
1094            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Updates
1095            because of field->column method name changes in the Layer class
1096    
1097            * Thuban/UI/viewport.py (ViewPort.find_shape_at): Updates because
1098            of field->column method name changes in the Layer class
1099    
1100            * test/test_save.py (SaveSessionTest.testClassifiedLayer)
1101            (SaveSessionTest.testClassifiedLayer): Update because of
1102            field->column method name changes in the Layer class
1103    
1104            * test/test_layer.py (SetShapeStoreTests.setUp)
1105            (SetShapeStoreTests.test_sanity): Update because of field->column
1106            method name changes in the Layer class
1107            (TestLayerModification.setUp): Subscribe to LAYER_CHANGED as well
1108            (TestLayerModification.test_sanity)
1109            (TestLayerModification.test_initial_settings): remove unsued code
1110            and rename to test_sanity.
1111            (TestLayerModification.test_set_classification): New test for
1112            SetClassification and SetClassificationField.
1113    
1114    2003-07-18  Bernhard Herzog  <[email protected]>
1115    
1116            * test/test_classgen.py (TestFixedRamp.test): Extend test to check
1117            the non-fixed values as well. The old test would have accepted a
1118            fixed ramp that only returnes the fixed properties
1119    
1120    2003-07-17  Jonathan Coles   <[email protected]>
1121    
1122            * Doc/manual/mainwindow.png, Doc/manual/mainwindow.xcf: Screen
1123            shots for the manual. The XCF file is the source image and
1124            has additional layers to support changes.
1125    
1126            * Doc/manual/thuban-manual.xml: Wrote an initial Introduction.
1127    
1128            * Thuban/UI/classifier.py (Classifier.__BuildClassification):
1129            Return both the new class and the field name.
1130    
1131            * Thuban/UI/mainwindow.py (MainWindow.ToggleLegend): Don't
1132            fit the map to the window as this changes any zoom level that
1133            the user may have set.
1134    
1135    2003-07-16  Jonathan Coles   <[email protected]>
1136    
1137            * Thuban/Model/classgen.py (generate_singletons,
1138            generate_uniform_distribution, generate_quantiles): Remove
1139            fixes parameter, but maintain the same functionality by having
1140            the calling function pass a FixedRamp object for the ramp.
1141            (FixedRamp): New. Adapts a ramp to have fixed property values.
1142    
1143            * Thuban/Model/classification.py: Use new CLASS_CHANGED message.
1144            (Classification): Inherit from Publisher.
1145            (Classification.__init__): Remove the layer parameter.
1146            Classifications no longer need to have a parent layer.
1147            (Classification.GetField, Classification.GetFieldType,
1148            Classification.SetFieldInfo): Removed. The field name is stored
1149            in the layer, and the type can be retreived by calling
1150            Layer.GetFieldType().
1151            (Classification._set_layer, Classification.GetLayer): Removed.
1152            Classifications no longer have a parent layer.
1153    
1154            * Thuban/Model/layer.py (Layer.Destroy): Unsubscribe from the
1155            classification.
1156            (Layer.SetShapeStore): Reset the classification first while
1157            we still have the old shape store to work with.
1158            (Layer.GetClassificationField, Layer.SetClassificationField):
1159            New. Method for getting/setting the field to classify on.
1160            (Layer.SetClassification): Simplified now that the layer
1161            simply has to hold a reference to the classification and not
1162            tell the classification who owns it.
1163            Fixes RTbug #2023.
1164    
1165            * Thuban/Model/load.py (SessionLoader.start_classification):
1166            Set the field name on the layer, not the classification.
1167    
1168            * Thuban/Model/messages.py: Add CLASS_CHANGED for when a
1169            classification is modified.
1170    
1171            * Thuban/Model/save.py (SessionSaver.write_classification):
1172            Get the field name and type from the layer.
1173    
1174            * Thuban/Model/table.py (table_to_dbf, table_to_csv): Renamed
1175            parameter records to rows and add docstring. Fixes RTbug #1997.
1176    
1177            * Thuban/UI/classgen.py (ClassGenDialog.OnOK): Use a fixed
1178            ramp when we need to fix certain values of a ramp rather than
1179            using the old fixes parameter. Fixes RTbug #2024.
1180    
1181            * Thuban/UI/classifier.py (ClassGrid.CreateTable): Add fieldType
1182            parameter.
1183            (ClassTable.Reset): Add fieldType parameter and use it, rather
1184            than asking the classification.
1185            (Classifier.__init__): Remember the original class's field
1186            and ask the layer for the field type, rather than the classification.
1187            (Classifier.__SetGridTable): Retrieve the field and field type
1188            for the table because they are not in the classification.
1189            (Classifier._OnTry, Classifier._OnRevert): Set the classification
1190            field on the layer in addition to the classification itself.
1191    
1192            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Get the
1193            classification field from layer.
1194    
1195            * Thuban/UI/viewport.py (ViewPort.find_shape_at): Get the
1196            classification field from layer. Split up tests and remove
1197            *-imports. Fixes RTbug #1992.
1198    
1199            * test/test_classgen.py (TestFixedRamp): Test for the FixedRamp class.
1200    
1201            * test/test_classification.py
1202            (TestClassification.test_classification): Remove tests for methods
1203            that no longer exist.
1204    
1205            * test/test_layer.py (SetShapeStoreTests.setUp): Classification
1206            __init__ no longer has a field parameter, use SetClassificationField.
1207            (SetShapeStoreTests.test_sanity): Use layer object to get class
1208            field info.
1209    
1210            * test/test_save.py (SaveSessionTest.testClassifiedLayer): Use
1211            SetClassificationField on layer to set class field info.
1212    
1213            * test/test_viewport.py: Renamed from test/test_view.py.
1214    
1215    2003-07-16  Jan-Oliver Wagner <[email protected]>
1216    
1217            * Doc/manual/thuban-manual.xml: Added authors and an initial
1218            coarse structure.
1219    
1220    2003-07-15  Bernhard Herzog  <[email protected]>
1221    
1222            * test/support.py (FloatComparisonMixin): This is a mix-in class
1223            and therefore should not be derived from any other class.
1224    
1225            * test/test_range.py (RangeTest): FloatComparisonMixin is a
1226            mix-in, so derive from TestCase as well.
1227    
1228  2003-07-15  Bernhard Herzog  <[email protected]>  2003-07-15  Bernhard Herzog  <[email protected]>
1229    
1230          * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Rework the          * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Rework the

Legend:
Removed from v.1420  
changed lines
  Added in v.1653

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26