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

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

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

revision 1894 by bh, Thu Oct 30 18:17:17 2003 UTC revision 2162 by joey, Sun Apr 11 18:40:06 2004 UTC
# Line 1  Line 1 
1    2004-04-11  Martin Schulze  <[email protected]>
2    
3            * Extensions/wms/infodialog.py: Adjusted the class documentation
4    
5            * Extensions/wms/wms.py (WMSLayer.__init__, WMSLayer.GetMapImg):
6            Switch to using Thuban{Begin,End}BusyCursor instead of the pure
7            wxWidgets variants.
8            (WMSLayer.__init__): The epsg_id variable is named top_srs now.
9    
10            * Extensions/wms/infodialog.py: Added an information dialog that
11            will display various information about the WMS current resource,
12            so that additional information such as the title, the abstract,
13            fees and access constraints can be displayed for the user if they
14            are documented in the WMS XML.
15    
16    2004-04-10  Martin Schulze  <[email protected]>
17    
18            * Extensions/wms/parser.py (WMSCapabilitiesParser.grok): Adjusted
19            string handling.  It's "foo".lower() and not lower(foo) without
20            lower imported from strings or something.
21    
22            * Extensions/wms/wms.py (WMSLayer): Incorporated WMSCapabilities
23            from capabilities.py and parser.py.  Implement priority list for
24            supported graphics formats, take care of wbmp != bmp.  PNG, TIFF
25            and GIF are supported here, but not yet by main Thuban.  Hence,
26            support for them may be removed later.  Special contribution to
27            usability: get wxWidgets to change the cursor when we're waiting
28            for data from the network so the user won't start to worry.  This
29            causes a redrawing error/warning, though.
30    
31            * Extensions/wms/parser.py (WMSCapabilitiesParser.grok): Unlink
32            the DOM object.
33    
34    2004-04-01  Martin Schulze  <[email protected]>
35    
36            * Extensions/wms/capabilities.py: Adjusted documentation
37            (WMSCapabilities.__init__): Improved documentation, fixed syntax
38            (WMSCapabilities.saveCapabilities): Only catch IOError when
39            handling files
40            (WMSCapabilities.loadCapabilities): Only catch IOError when
41            handling files
42            __main__: corrected variable naming
43            (WMSCapabilities.fetchCapabilities,loadCapabilities): Make this
44            class a specialisation of WMSCapabilitiesParser as well.  Also
45            execute grok() after loading or fetching capabilities, if that
46            went well, so that subsequent calls can already access the data.
47            (WMSCapabilities.getVersion): Export the used version of the
48            GetCapabilities request, so we can use it for subsequent calls,
49            i.e. for GetMap requests.
50            (WMSCapabilities.fetchCapabilities): Added proper error handling
51            when the GetCapabilities request failed, so that the surrounding
52            program can act accordingly.
53    
54    2004-03-30  Martin Schulze  <[email protected]>
55    
56            * Extensions/wms/parser.py (WMSCapabilitiesParser.getLayerSRS):
57            Adjusted the getLayerSRS method to return the list of SRSes
58            extracted from <SRS> elements instead of <BoundingBox> elements.
59            Added a bit of documentation as well.
60            (WMSCapabilitiesParser.checkLayerSRS): Removed integrity test
61            since it was only implemented due to a misunderstanding.
62    
63            * Extensions/wms/test/test_parser.py
64            (TestWMSCapabilitiesParser.test_LayerSRS): Adjust the tests to
65            reflect the corrected interpretation of the standard: i.e. a layer
66            does not have to define a BoundingBox for all SRSes it supports.
67            Hence the <SRS></SRS> specification is authoritative, not the list
68            of BoundingBoxes.
69            (TestWMSCapabilitiesParser.test_BoundingBoxes): Added a new test
70            to ensure None is returned for a non-existing SRS.
71            (TestWMSCapabilitiesParser.test_grok): Removed test_grok method
72            since it is not applicable anymore.  Listing more SRSes in <SRS>
73            elements is valid according to the specs.
74    
75    2004-03-26  Bernhard Reiter <[email protected]>
76    
77            * README: Nicer formatting of text. Improved descriptions.
78            Reflected wxWidgets name change.
79            
80            * Thuban/UI/about.py: Extended copyright to 2004 and added
81            information about the thuban-devel mailinglist.
82    
83    2004-03-24  Martin Schulze  <[email protected]>
84    
85            * Extensions/wms/capabilities.py: Renamed the class to contain
86            'WMS', also added a linebreak where required
87    
88            * Extensions/wms/parser.py: Finally added the XML parser for the
89            GetCapabilities response.
90    
91            * Extensions/wms/test/sample.xml: Adjusted the sample file so that
92            <SRS> elements match the <BoundingBox> elements, except for the
93            layer 'beschriftung'.
94    
95            * Extensions/wms/test/test_parser.py: Encode non-ascii strings
96            since Python uses unicode strings internally, otherwise
97            comparisons will fail.  Removed tests for getLayerBBoxSRS() since
98            the SRS will be calculated anyway and this method is obsoleted by
99            getLayerSRS().  Denote SRS as strings and not as cardinal numbers.
100            Move loading the sample file into the setUp method.  Added a test
101            for finding the integrity problem in the sample response.
102            Improved formatting.
103    
104            * Extensions/wms/domutils.py: Added convenience routines for
105            handling of Document Object Model (DOM) nodes.
106    
107            * Extensions/wms/test/test_domutils.py: Added a test for the
108            domutils module
109    
110    2004-03-19  Martin Schulze  <[email protected]>
111    
112            * Extensions/wms/test/test_parser.py (TestWMSCapabilitiesParser):
113            Moved path detection and adding into a module of its own,
114            adjustpath, which exports thubandir as main Thuban directory.
115    
116            * Extensions/wms/test/test_ogclib.py (TestWMSLib): Moved path
117            detection and adding into a module of its own, adjustpath, which
118            exports thubandir as main Thuban directory.  Reorganised the
119            module in order to support the SkipTest feature for Thuban test
120            cases.
121    
122            * Extensions/wms/test/adjustpath.py: Moved path detection and
123            adding into a module of its own.
124    
125    2004-03-18  Martin Schulze  <[email protected]>
126    
127            * Extensions/wms/test/test_parser.py: Added another test for
128            checking whether the WMS XML parser (to be implemented) returns
129            the information we expect.  This requires a sample WMS WML file
130            (sample.xml) which has been extracted from the frida server and
131            "improved" manually.
132    
133            * Extensions/wms/test/test_ogclib.py: Added legacy code to add the
134            main Thuban directory to the path in order to be able to import
135            random modules.  Adjusted the PyOGCLib detection to reuse the
136            information gathered.  Also added a note about the PYTHONPATH
137            environment variable.
138    
139            * Extensions/wms/test/test_ogclib.py: The format specification is
140            a mime-type, not a graphic format, hence image/jpeg wou ld be the
141            proper format and not JPEG.  We'll also have to take care of the
142            encoding of / as %2F.
143    
144    2004-03-16  Martin Schulze  <[email protected]>
145    
146            * Extensions/wms/test/test_ogclib.py: Added a (hopefully)
147            comprehensive test for the getMapURL method, built compare URLs
148            according to the documentation in OGC 01-068r3
149    
150            * Extensions/wms/capabilities.py (WMSCapabilities): Added the
151            class WMSCapabilities to manage capabilites, will incorporate
152            parsing the capabilities response and provide details for other
153            classes.
154    
155    2004-03-12  Bernhard Herzog  <[email protected]>
156    
157            Support views in addition to normal tables in the postgis
158            shapestore
159    
160            * Thuban/Model/postgisdb.py
161            (PostGISShapeStore._fetch_table_information): Add a fallback for
162            the case where the table name is not in the geometry_columns
163            table.  This is usually the case for views.  Also, set
164            self.shapestore here.
165            (PostGISShapeStore.ShapeType): No need to query the database all
166            the time.  The shape type is now determined in
167            _fetch_table_information
168    
169            * test/postgissupport.py (PostgreSQLServer.new_postgis_db)
170            (PostgreSQLServer.get_static_data_db, PostGISDatabase.__init__):
171            New parameter to specify views.
172            (PostGISDatabase.has_data): Also compare the views.  New views
173            parameter
174            (PostGISDatabase.initdb): Create the views.
175            (PostgreSQLServer.get_default_static_data_db): Add the v_landmarks
176            view
177    
178            * test/test_postgis_db.py
179            (TestPostGISShapestorePointFromViews): New.  Test a
180            PostGISShapeStore with a view
181            (TestPostGISShapestorePointOIDAsGIDColumn.setUp): Pass the name of
182            the geometry_column explicitly to test whether that works
183    
184    2004-03-12  Bernhard Herzog  <[email protected]>
185    
186            Final step for explicit id/geometry columns: Loading and saving
187    
188            * Resources/XML/thuban-1.1.dtd: New.  Derived from thuban-1.0.dtd
189            with the following changes:
190            (dbshapesource): Two new attributes id_column and geometry_column
191    
192            * Thuban/Model/save.py (SessionSaver.write): Use the new dtd
193            (SessionSaver.write_session): Use the new namespace
194            (SessionSaver.write_data_containers): Write the new dbshapesource
195            parameters
196    
197            * Thuban/Model/load.py (SessionLoader.__init__): New namespace for
198            the new file format version
199            (SessionLoader.start_dbshapesource): Handle the new db parameters
200    
201            * test/test_save.py: Update to the new dtd and namespace
202            (SaveSessionTest.test_save_postgis): Update the NonConnectionStore
203            mock object to provide a working IDColumn method.
204    
205            * test/test_load_1_0.py: New.  Copy of the test_load.py before
206            today's changes but with the round-trip tests removed.
207    
208            * test/test_load_0_9.py: Update doc-string.
209    
210            * test/test_load.py: Update all .thuban files to the new dtd and
211            namespace.
212            (TestPostGISLayer.file_contents): Add the new dbshapesource
213            paramters
214    
215    2004-03-11  Bernhard Herzog  <[email protected]>
216    
217            Next step for explicit id/geometry columns: User interaction
218    
219            * Thuban/UI/dbdialog.py (ChooseDBTableDialog.__init__): Rework how
220            the dialog is constructed. Add combo boxes to select id and
221            geometry column.  Rename some instance variables.
222            (ChooseDBTableDialog.GetTable): Return id and geometry column
223            names
224            (ChooseDBTableDialog.OnTableSelect): New. Event handler for
225            selections in the table list
226    
227            * Thuban/UI/mainwindow.py (MainWindow.AddDBLayer): Use id_column
228            and geometry_column
229    
230            * Thuban/Model/session.py (Session.OpenDBShapeStore): Add the new
231            parameters for id_column and geometry column of PostGISShapeStore
232            here as well.
233    
234            * Thuban/Model/postgisdb.py (type_map): Add ROWID psycog type.
235            (_raw_type_map): New. Map raw PostgreSQL type ints to thuban types
236            (PostGISConnection.GeometryTables): Use a better query to
237            determine which relations in the database might be usable for
238            shapestores.  Now supports views as well but is more PostgreSQL
239            specific
240            (PostGISConnection.table_columns): New. Somewhat experimental
241            method to let the db dialogs provide lists of columns to users so
242            that they can select id and geometry columns.
243            (PostGISTable.__init__): The default value of the id_column
244            parameter is now None it still means "gid" effectively, though.
245            (PostGISTable.IDColumn): New introspection method to return a
246            column object for the id column
247            (PostGISShapeStore.GeometryColumn): New introspection method to
248            return a column object for the geometry column
249    
250            * test/test_postgis_db.py
251            (TestPostGISConnection.test_gis_tables_non_empty):
252            Removed. Subsumed by the new:
253            (TestPostGISConnection.test_gis_tables_with_views_and_tables):
254            New. Tes the GeometryTables and table_columns methods with actual
255            tables and views.
256            (PointTests.test_id_column, PointTests.test_geometry_column):
257            New. tests for the new methods.
258            (TestPostGISShapestorePoint.setUp)
259            (TestPostGISShapestorePointSRID.setUp)
260            (TestPostGISShapestorePointExplicitGIDColumn.setUp): Fill the
261            instance variables needed by the new tests
262    
263    2004-03-11  Bernhard Herzog  <[email protected]>
264    
265            * Thuban/UI/classgen.py (GenQuantilesPanel.GetList): The row
266            numbers given to ReadValue are ordinals.
267    
268    2004-03-11  Bernhard Herzog  <[email protected]>
269    
270            Elimiate the requirement for PostGIS tables to have a column
271            called "gid".
272    
273            * Thuban/Model/postgisdb.py (PostGISTable.__init__): New parameter
274            id_column to specify which column to use to identify rows.  Also
275            new instance variables id_column and quoted_id_column
276            (PostGISTable.RowIdToOrdinal, PostGISTable.RowOrdinalToId)
277            (PostGISTable.ReadRowAsDict, PostGISTable.ReadValue)
278            (PostGISTable.SimpleQuery): Use the id column name provided to the
279            constructor instead of "gid"
280            (PostGISShapeStore.__init__): New parameter id_column analogously
281            to PostGISTable.__init__.  This parameter is simply passed through
282            to the base class constructor
283            (PostGISShapeStore._create_col_from_description): Fix typo in
284            doc-string
285            (PostGISShapeStore.Shape, PostGISShapeStore.AllShapes)
286            (PostGISShapeStore.ShapesInRegion): Use the id column name
287            provided to the constructor instead of "gid"
288    
289            * test/postgissupport.py
290            (PostgreSQLServer.get_default_static_data_db): New static table
291            landmarks_point_id with an id column != "gid.  Update the comments
292            a bit.
293            (skip_if_addgeometrycolumn_does_not_use_quote_ident): Fix typo in
294            doc-
295            (upload_shapefile): New parameter gid_column to use a name other
296            than "gid" for the column to store the shape ids
297    
298            * test/test_postgis_db.py (TableTests): New.  Mixin-class
299            containing all tests previously in TestPostGISTable.  The actual
300            tests are the same but the code is a bit more configurable to
301            allow for different id columns etc.
302            (TestPostGISTable): Derive from TableTests now for the actual
303            tests.
304            (TestPostGISTableExplicitGIDColumn): New. Like TestPostGISTable
305            except that it the landmarks_point_id table to test the id_column
306            parameter
307            (PointTests): Extend the doc-string
308            (TestPostGISShapestorePointExplicitGIDColumn)
309            (TestPostGISShapestorePointOIDAsGIDColumn): New classes derived
310            from PointTests to test the explicit id_column parameter.  One
311            tests with the name of the column holding the shape ids, the other
312            uses PostgreSQL's OID column.  For the latter a number of methods
313            have to be overwritten to make them independent of the actual id
314            values.
315    
316    2004-03-08  Silke Reimer  <[email protected]>
317    
318            Update debian directory:
319    
320            * debian/changelog: Added new version.
321            * deiban/rules: Updated management of patches (with cbds)
322            * debian/control: Added cbds to dependencies
323            * debian/patches/*: New. Adds better support for patches of thuban in
324                            debian
325            * debian/menu: Syntax of menu changed slightly
326            * debian/setup.py.patch: removed because it has been moved to
327                            debian/patechs/setup.py.patch
328            
329    
330    2004-02-26  Bernhard Herzog  <[email protected]>
331    
332            Create the Doc/technotes directory for text files with information
333            for developers
334    
335            * Doc/technotes/README: New. README for the technotes
336    
337            * Doc/technotes/coding_guidelines.txt: New. Coding guidelines for
338            Thuban
339    
340            * Doc/technotes/release_process.txt: New. Used to be
341            HOWTO-Release.  Now slightly adapted to technote formatting style.
342    
343            * HOWTO-Release: Removed.  It's contents are now in
344            Doc/technotes/release_process.txt
345    
346    2004-02-25  Bernhard Herzog  <[email protected]>
347    
348            * libraries/thuban/wxproj.cpp (get_wx_version): New.  Return the
349            version of wxWindows the module was compiled with so we can check
350            that against the wxPython version.
351    
352            * Thuban/version.py (thuban_branch, thuban_release): New variables
353            controlling which and how Thuban versions are shown.  See the
354            comments for details.
355            (verify_versions): Also check that the wx version that wxproj is
356            compiled against matches that of the wxPython we use at runtime
357    
358    2004-02-20  Bernhard Herzog  <[email protected]>
359    
360            * Extensions/wms/wms.py (epsg_code_to_projection): Use
361            get_system_proj_file to read the epsg projections.  The old way
362            depended on the current directory being the top Thuban directory.
363    
364    2004-02-20  Bernhard Herzog  <[email protected]>
365    
366            * Extensions/svgexport/test/test_svgmapwriter.py
367            (TestVirtualDC.test_clippath): Remove a debug print
368    
369    2004-02-20  Bernhard Herzog  <[email protected]>
370    
371            * Extensions/svgexport/__init__.py: New.  Turn
372            Extensions/svgexport into a package.
373    
374            * Extensions/svgexport/svgmapwriter.py: Reorder the imports and
375            doc-string a bit.  The doc-string must come first, otherwise it's
376            not a doc-string.  The __future__ import must be the first thing
377            after the doc-string.  Use only double quotes in doc-strings.
378            Single quotes trip up emacs syntax highlighting if the text
379            contains apostrophes.
380    
381    2004-02-20  Bernhard Herzog  <[email protected]>
382    
383            * Extensions/svgexport/test/__init__.py,
384            Extensions/svgexport/test/test_svgmapwriter.py: New. Initial test
385            suite for svgexport
386    
387            * test/runtests.py (find_test_modules): New. Function with the
388            module finding code from main.
389            (main): Use find_test_modules to figure out the default test
390            modules and take modules from Extensions.svgexport.test too.
391    
392    2004-02-19  Bernhard Herzog  <[email protected]>
393    
394            * Thuban/UI/application.py (ThubanApplication.OnInit): Make sure
395            the mainwindow has a reference to the map of the initial session.
396            This fixes a bug introduced with the fix for RT#2245
397    
398    2004-02-19  Bernhard Herzog  <[email protected]>
399    
400            * Extensions/svgexport/svgsaver.py,
401            Extensions/svgexport/svgmapwriter.py,
402            Extensions/svgexport/maplegend.py: Added again.  This time in the
403            correct place.
404    
405    2004-02-17  Bernhard Herzog  <[email protected]>
406    
407            Fix for RT#2245
408    
409            * Thuban/UI/application.py (ThubanApplication.OnInit): Initialize
410            instance variables before trying to create any windows.  Creating
411            windows can start an event loop if e.g. message boxes are popped
412            up for some reason, and event handlers, especially EVT_UPDATE_UI
413            may want to access things from the application.
414            (ThubanApplication.maps_changed): The mainwindow may not have been
415            created yet, so check whether it has been created before calling
416            its methods
417    
418            * Thuban/UI/view.py (MapCanvas.OnIdle): Only try to redraw if we
419            have a map
420    
421    2004-02-17  Bernhard Herzog  <[email protected]>
422    
423            * test/test_svgmapwriter.py, Extensions/svgsaver.py,
424            Extensions/svgmapwriter.py, Extensions/maplegend.py,
425            extensions/svgexport/svgsaver.py,
426            extensions/svgexport/svgmapwriter.py,
427            extensions/svgexport/maplegend.py: Removed.  These files were in
428            the wrong places or didn't work at all.
429    
430    2004-02-16  Bernhard Herzog  <[email protected]>
431    
432            * Thuban/UI/view.py (MapCanvas.Export): Remove accidentally added
433            line
434    
435    2004-02-16  Bernhard Herzog  <[email protected]>
436    
437            * Thuban/UI/view.py (MapCanvas.Export): Avoid UnboundLocalError.
438    
439    2004-02-15  Markus Rechtien  <[email protected]>
440            
441            * Extensions/svgexport/svgmapwriter.py: New. Adds the capability
442            to write a session to a file in SVG format.
443            * Extensions/svgexport/svgsaver.py: New. Uses svgmapwriter.py
444            to write a SVG map of a session.
445            * Extensions/svgexport/maplegend: New. Writes a basic maplegend
446            in SVG format for the current session.
447    
448    2004-02-13  Bernhard Herzog  <[email protected]>
449    
450            * Thuban/UI/mainwindow.py (MainWindow.AddDBLayer): When the layer
451            can't be created, return immediately after displaying the error
452            message.
453    
454    2004-02-11  Bernhard Herzog  <[email protected]>
455    
456            Handle postgis tables with more than one geometry column.
457    
458            * Thuban/Model/postgisdb.py
459            (PostGISTable._fetch_table_information): Delegate the creation of
460            column objects to a different method so that we can extend that in
461            derived classes
462            (PostGISTable._create_col_from_description): New. Column object
463            creation part of _fetch_table_information
464            (PostGISShapeStore._create_col_from_description): New. Extend
465            inherited method to handle geometry columns
466            (PostGISShapeStore.__init__): New parameter geometry_column to
467            specify which geometry column to use.  Optional but mandatory for
468            tables with more than one geometry column
469            (PostGISShapeStore._fetch_table_information): Also use the name of
470            the geometry column when looking for the srid
471            (PostGISShapeStore.ShapeType): Also use the name of the geometry
472            column when looking for the shape type
473    
474            * test/test_save.py (SaveSessionTest.test_save_postgis): Adapt
475            NonConnectionStore to changes in the PostGISShapeStore
476    
477            * test/test_postgis_db.py
478            (TestPostGISSpecialCases.test_shapestore_two_geom_cols): Test
479            PostGISShapeStore with tables having two geometry columns.
480    
481    2004-02-10  Bernhard Herzog  <[email protected]>
482    
483            Fix some postgis problems.  What remains to be done is real
484            handling of SRIDs as they affect how reprojection is done
485    
486            * Thuban/Model/postgisdb.py (quote_identifier): Fix typo in
487            doc-string
488            (PostGISShapeStore._fetch_table_information): New. Extend
489            inherited method to retrieve srid
490            (PostGISShapeStore.BoundingBox): Handle tables without data.
491            extent yields NULL for those
492            (PostGISShapeStore.ShapesInRegion): Use the srid of the table.
493    
494            * test/test_postgis_db.py
495            (TestPostGISSpecialCases.test_shapestore_empty_table): New test
496            for the special case of a table without any data
497            (TestPostGISShapestorePointSRID): New class with tests for a table
498            that uses srids
499            (PolygonTests): Fix a doc-string typo
500    
501            * test/postgissupport.py (PostGISDatabase.__init__): New parameter
502            reference_systems with a specification of spacial reference
503            systems to create in the new db.
504            (PostgreSQLServer.new_postgis_db)
505            (PostgreSQLServer.get_static_data_db): New parameter
506            reference_systems to be passed through ultimately to
507            PostGISDatabase.  In new_postgis_db also check whether an existing
508            db already has the right srids
509            (PostgreSQLServer.get_default_static_data_db): Add srids and a
510            table that uses srids
511            (PostGISDatabase.initdb): Create the entries for the reference
512            systems
513            (PostGISDatabase.has_data): Add reference_systems parameter to
514            check for those too
515            (upload_shapefile): New parameter srid to create tables with a
516            specific srid
517    
518    2004-02-06  Frank Koormann  <[email protected]>
519    
520            * po/pt_BR.po: Fixed charset
521    
522    2004-02-05  Frank Koormann  <[email protected]>
523    
524            * po/pt_BR.po: Fixed format string for error message, missing %s
525            added (Thuban/UI/application.py:273)
526    
527    2004-02-03  Frank Koormann  <[email protected]>
528            
529            First version of Portuguese (Brazilian) translation
530    
531            * po/pt_BR.po: New, translation of pot (2004-01-15 16:07+0300) for
532            Brazilian Portuguese by Eduardo Patto Kanegae.
533    
534            * Thuban/UI/about.py (About.__init.py__): Added Eduardo to the list of
535            translators.
536    
537    
538    2004-01-22  Frank Koormann  <[email protected]>
539    
540            * Doc/manual/thuban-manual.xml: Added section on installation of
541            Thuban under Win32 systems. Fixed image path references in the postgis
542            section. Some minor source formattings.
543    
544    2004-01-21  Frank Koormann  <[email protected]>
545    
546            Make Thuban remember path selections (at least for one application run).
547    
548            * Thuban/UI/application.py (Application.OnInit): Initialize path as a
549            attribute of application object. Path is a dictionary of
550            strings, currently with the items "data" and "projection".  
551            (Application.SetPath): New, stores path for the specified item.
552            (Application.Path): New, return path for the specified item.
553    
554            * Thuban/UI/mainwindow.py
555            (MainWindow.OpenSession, MainWindow.SaveSessionAs,
556            MainWindow.AddLayer, MainWindow.AddRasterLayer,
557            MainWindow.TableOpen): Access "data" path information of the
558            application.
559            
560            * Thuban/UI/projdialog.py (ProjFrame._OnImport, ProjFrame._OnExport):
561            Access "projection" path information of the application.
562    
563    2004-01-05  Bernhard Herzog  <[email protected]>
564    
565            * po/ru.po: Updated translations from Alex Shevlakov
566    
567    2004-01-05  Bernhard Herzog  <[email protected]>
568    
569            * po/Makefile, po/README: Move the description of how to generate
570            the translation statistics to the README.
571    
572    2003-12-23  Bernhard Herzog  <[email protected]>
573    
574            * NEWS: Update for 1.0.0
575    
576            * po/it.po: Another update from Maurizio Napolitano
577    
578    2003-12-23  Bernhard Herzog  <[email protected]>
579    
580            * po/it.po: Updated translation from Maurizio Napolitano
581    
582    2003-12-23  Bernhard Herzog  <[email protected]>
583    
584            * Thuban/UI/join.py (JoinDialog.__init__): Mark one more string
585            for translation
586    
587            * Thuban/UI/mainwindow.py (MainWindow.TableRename)
588            (MainWindow.RenameMap, MainWindow.RenameLayer): Mark some more
589            strings for translation
590    
591            * po/de.po: Update with the newly marked strings.
592    
593    2003-12-22  Bernhard Herzog  <[email protected]>
594    
595            * HOWTO-Release: Fix the places where version numbers have to be
596            updated
597    
598    2003-12-22  Bernhard Herzog  <[email protected]>
599    
600            * setup.py (setup call): 1.0.0, yeah!
601    
602            * Thuban/version.py (longversion): 1.0.0, yeah!
603    
604            * Thuban/Model/load.py (SessionLoader.__init__): Accept the
605            1.0.0 namespace too
606    
607            * Thuban/Model/save.py (SessionSaver.write_session): Save with
608            1.0.0 namespace
609    
610            * test/test_load.py (LoadSessionTest.dtd)
611            (TestSingleLayer.file_contents)
612            (TestNonAsciiColumnName.file_contents)
613            (TestLayerVisibility.file_contents)
614            (TestClassification.file_contents, TestLabels.file_contents)
615            (TestLayerProjection.file_contents)
616            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
617            (TestLabelLayer.file_contents, TestPostGISLayer.file_contents)
618            (TestPostGISLayerPassword.file_contents)
619            (TestLoadError.file_contents, TestLoadError.test): Update for
620            1.0.0 namespace
621    
622            * test/test_save.py (SaveSessionTest.dtd)
623            (SaveSessionTest.testEmptySession)
624            (SaveSessionTest.testSingleLayer)
625            (SaveSessionTest.testLayerProjection)
626            (SaveSessionTest.testRasterLayer)
627            (SaveSessionTest.testClassifiedLayer)
628            (SaveSessionTest.test_dbf_table)
629            (SaveSessionTest.test_joined_table)
630            (SaveSessionTest.test_save_postgis): Update for 1.0.0 namespace
631    
632    2003-12-22  Bernhard Herzog  <[email protected]>
633    
634            * Thuban/Model/load.py (SessionLoader.start_label): Make sure the
635            alignment flags are byte strings not unicode and that they have
636            valid values
637    
638            * test/test_load.py (TestLabelLayer): New. Test loading (and
639            indirectly saving) of maps with labels.
640    
641    2003-12-22  Bernhard Herzog  <[email protected]>
642    
643            * Thuban/UI/tableview.py (TableGrid.OnDestroy)
644            (TableGrid.__init__): Handle EVT_WINDOW_DESTROY in the grid to
645            unsubscribe all subscribers.
646            (LayerTableFrame.OnDestroy): Do not unsubscribe any messages from
647            self.grid since it may already have been destroyed.
648            Fixes RT #2256
649    
650    2003-12-19  Bernhard Herzog  <[email protected]>
651    
652            * po/fr.po, po/es.po: Updated translations from Daniel Calvelo
653    
654    2003-12-16  Bernhard Herzog  <[email protected]>
655            
656            * debian/bitmappath.patch, debian/setup.py.patch:
657                    added to ensure compliance with FHS for debian
658            * debian/rules, debian/changelog:
659                added patches in rules to ensure compliance with FHS for debian
660    
661    2003-12-16  Bernhard Herzog  <[email protected]>
662    
663            * po/Makefile (mo): Make the output a bit nicer so that it prints
664            statistics about the translations. Add a comment how produce even
665            nicer statistics with sed.
666    
667    2003-12-09  Frank Koormann   <[email protected]>
668    
669            * Resources/Projections/defaults.proj:
670            French projection sample with correct accents (UNICODE).
671    
672    2003-12-05  Bernhard Herzog  <[email protected]>
673    
674            * MANIFEST.in: Add the devtools directory
675    
676            * setup.py (setup call): Use license instead of licence. This
677            silences a deprecation warning on Python 2.3
678    
679    2003-12-05  Frank Koormann   <[email protected]>
680    
681            Documentation synced with 1.0rc1
682    
683            * Doc/manual/thuban-manual.xml:
684            Minor formatting changes and references to database layers .
685            Introduction.Internationalization: New section on i18n.
686            MapManagement.AddingandRemovingLayers: Added item on database layers.  
687            MapManagement.TheLegend: Added section and screenshot on popup menu.
688            ProjectionManagement: Updated screenshot and sentence on EPSG.
689            Appendix.SupportedDataSources: Added PostGIS.
690            Appendix.WorkingwithPostGIS: New section.
691    
692            * Doc/manual/images/6_projection.png: Updated screenshot including
693            EPSG checkboxes.
694    
695            * Doc/manual/images/3_5_popup_menu.png: New, popup menu screenshot.
696    
697            * Doc/manual/images/app_postgis_add_layer.png,
698            Doc/manual/images/app_postgis_db_add.png,
699            Doc/manual/images/app_postgis_db_management.png:
700            New screenshots focussing on database layers
701    
702    2003-12-05  Frank Koormann   <[email protected]>
703    
704            * Thuban/UI/projdialog.py (load_user_proj): If user.proj is missing
705            write warning to stderr instead of rising a warning dialog
706    
707    2003-12-03  Bernhard Herzog  <[email protected]>
708    
709            Fix for RT #2243
710    
711            * Thuban/UI/mainwindow.py (MainWindow.has_selected_shape_layer):
712            New. Like has_selected_layer but for shape layers only
713            (_has_selected_shape_layer): New. Like _has_selected_layer but for
714            shape layers only
715            (layer_show_table command, layer_jointable command): Use these
716            commands should only be available for shape layers
717    
718    2003-12-03  Bernhard Herzog  <[email protected]>
719    
720            * Thuban/UI/mainwindow.py (MainWindow.Unsubscribe): Deal with
721            publishers that are wx objects and may have been destroyed by wx
722            already. Fixes RT #2242.
723    
724    2003-12-03  Bernhard Herzog  <[email protected]>
725    
726            * po/ru.po: Updates from Alex Shevlakov
727    
728    2003-12-03  Silke Reimer <silkeintevation.de>
729    
730            * debian/control, debian/changelog: Added gdal-support to
731                    debian package, updated to new thuban version
732    
733    
734    2003-12-03  Bernhard Herzog  <[email protected]>
735    
736            * Thuban/Lib/version.py: New. Module for version number
737            manipulations. The version of make_tuple here also deals better
738            with more unusual version number strings, such as e.g.
739            "1.2+cvs20031111"
740    
741            * Thuban/version.py (make_tuple): Removed. It's now in
742            Thuban.Lib.version. Use that implementation instead.
743    
744            * test/test_lib_version.py: New. Tests for Thuban/Lib/version.py
745    
746    2003-12-02  Bernhard Herzog  <[email protected]>
747    
748            * MANIFEST.in: Add debian files
749    
750            * setup.py (setup call): Add packages for the Extensions so that
751            they're installed too
752            (data_files): Add READMEs and sample data from some Extensions
753    
754            * NEWS: Add note about the extensions in binary packages
755    
756    2003-12-02  Bernhard Herzog  <[email protected]>
757    
758            * Thuban/Model/save.py (SessionSaver.write_session): Save files
759            with the thuban-1.0rc1
760    
761            * Thuban/Model/load.py (SessionLoader.__init__): Recognize the
762            thuban-1.0rc1 namespace too
763    
764            * test/test_save.py (SaveSessionTest.dtd)
765            (SaveSessionTest.testEmptySession)
766            (SaveSessionTest.testSingleLayer)
767            (SaveSessionTest.testLayerProjection)
768            (SaveSessionTest.testRasterLayer)
769            (SaveSessionTest.testClassifiedLayer)
770            (SaveSessionTest.test_dbf_table)
771            (SaveSessionTest.test_joined_table)
772            (SaveSessionTest.test_save_postgis): Update to thuban-1.0rc1
773            namespace
774    
775            * test/test_load.py (LoadSessionTest.dtd): Update to thuban-1.0rc1
776            namespace
777            (TestSingleLayer.file_contents)
778            (TestNonAsciiColumnName.file_contents)
779            (TestLayerVisibility.file_contents)
780            (TestClassification.file_contents, TestLabels.file_contents)
781            (TestLayerProjection.file_contents)
782            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
783            (TestPostGISLayer.file_contents)
784            (TestPostGISLayerPassword.file_contents)
785            (TestLoadError.file_contents, TestLoadError.test): Update to
786            thuban-1.0rc1 namespace
787    
788    2003-12-01  Bernhard Herzog  <[email protected]>
789    
790            * setup.py (proj4_prefix, wx_prefix, gdal_prefix): Fix these for
791            nt to better match Intevation's current w32 setup
792    
793            * HOWTO-Release: Add note about updating MANIFEST.in
794    
795            * MANIFEST.in: Add the Extensions
796    
797            * NEWS: Update for 1.0rc1
798    
799    2003-12-01  Bernhard Herzog  <[email protected]>
800    
801            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Change the wild
802            cards for the dialog so that shapefiles ending in all uppercase
803            SHP are listed too
804    
805    2003-11-28  Bernhard Herzog  <[email protected]>
806    
807            * Thuban/version.py (longversion): Update to 1.0rc1
808    
809            * setup.py (setup call): Update version to 1.0rc1. Use the
810            [email protected] email address as author email instead of my
811            personal one.
812    
813    2003-11-28  Bernhard Herzog  <[email protected]>
814    
815            * po/de.po: Update german translation.
816    
817    2003-11-28  Bernhard Herzog  <[email protected]>
818    
819            Unify the filenames stored in .thuban files so that the .thuban
820            files are more platform independend
821    
822            * Thuban/Model/save.py (unify_filename): New. Unify filenames so
823            that they can be used on both windows and unix
824            (SessionSaver.prepare_filename): New. Handle all filename
825            transformations for filenames stored in the thuban file
826            (SessionSaver.write_data_containers, SessionSaver.write_layer):
827            Use prepare_filename
828    
829            * test/test_save.py (SaveSessionTest.testSingleLayer)
830            (SaveSessionTest.testLayerProjection)
831            (SaveSessionTest.testRasterLayer)
832            (SaveSessionTest.testClassifiedLayer)
833            (SaveSessionTest.test_dbf_table)
834            (SaveSessionTest.test_joined_table): Filenames are always stored
835            with slashes on all currently supported platforms so adapt all
836            tests to this
837    
838            * test/test_load.py (LoadSessionTest.filenames): With the new
839            filename scheme the filenames in the tests should be
840            understandable on all currently supported platforms so we turn
841            this into an empty list because we don't have to normalize them
842            anymore
843    
844    2003-11-28  Bernhard Herzog  <[email protected]>
845    
846            * test/test_layer.py (TestLayer.test_arc_layer_with_projection):
847            Add the ellipsoid to the projection since some Proj versions
848            complain if it's missing.
849    
850    2003-11-27  Bernhard Herzog  <[email protected]>
851    
852            Corect some bounding box projection problems
853    
854            * Thuban/Model/proj.py (Projection.InverseBBox): New. Inverse
855            version of ForwardBBox
856            (Projection._transform_bbox): New. common implementation of
857            ForwardBBox and InverseBBox
858            (Projection.ForwardBBox): Use _transform_bbox.
859    
860            * test/test_proj.py (TestProjection.test): Add test for
861            InverseBBox
862    
863            * Thuban/Model/layer.py (Layer.LatLongBoundingBox)
864            (Layer.ShapesBoundingBox, RasterLayer.LatLongBoundingBox): Use the
865            new InverseBBox method to determine the unprojected bounding box
866            (Layer.ShapesInRegion): Use the ForwardBBox method to project the
867            bbox.
868    
869            * test/test_layer.py (TestLayer.test_point_layer_with_projection):
870            Removed.
871            (TestLayer.test_arc_layer_with_projection): New. This test is
872            better able to test whether bounding boxes are projected correctly
873            than test_point_layer_with_projection
874    
875            * Thuban/UI/viewport.py (ViewPort.map_projection_changed): Use
876            InverseBBox to unproject bboxes
877    
878    2003-11-25  Bernhard Herzog  <[email protected]>
879    
880            * Thuban/UI/about.py (About.__init__): Make sure we have ASCII
881            source code.
882    
883    2003-11-25  Bernhard Herzog  <[email protected]>
884    
885            * Thuban/Model/layer.py (Layer.__getattr__): Removed. It was only
886            there for backwards compatibility and all code relying on that
887            should have been updated by now.
888    
889    2003-11-25  Bernhard Herzog  <[email protected]>
890    
891            * test/test_load.py (TestClassification.test): Add the missing
892            round trip test.
893            (TestClassification.file_contents): Update to the newest file
894            format
895    
896    2003-11-25  Bernhard Herzog  <[email protected]>
897    
898            Add very experimental (and possibly dangerous) extension to draw
899            polygons:
900    
901            * Extensions/drawshape/README: New. Brief installation
902            instructions
903    
904            * Extensions/drawshape/drawshape.py: New. Implementation of the
905            drawshape extensions
906    
907            * Extensions/drawshape/patch.diff: Patch to apply before the
908            extension can be used.
909    
910    2003-11-24  Bernhard Herzog  <[email protected]>
911    
912            * Thuban/Model/data.py (ShapefileStore._open_shapefile)
913            (ShapefileStore.__init__): Factor opening the shapefile into a
914            separate method (the new _open_shapefile). This makes the code a
915            bit more readable but the real reason is that it makes some evil
916            hacks easier. :-)
917    
918    2003-11-24  Bernhard Herzog  <[email protected]>
919    
920            * Thuban/Model/load.py (SessionLoader.check_attrs): If no
921            converter is specified for an attribute assume it's a string
922            containing only Latin1 characters. Update doc-string accordingly.
923            This change should fix many places where unicode objects might
924            accidentally enter Thuban.
925    
926            * test/test_load.py (TestNonAsciiColumnName): New test to check
927            what happens with column names in DBF files that contain non-ascii
928            characters
929    
930    2003-11-21  Bernhard Herzog  <[email protected]>
931    
932            Enable the experimental attribute editing again and introduce a
933            command line switch to actually activate it
934    
935            * Thuban/UI/main.py (options): New. Container for options set on
936            the commmand line
937            (main): Add the --enable-attribute-editing flag.
938    
939            * Thuban/UI/identifyview.py (IdentifyView.__init__): If attribute
940            editing is enabled use the grid ctrl which allows editing of the
941            values
942    
943            * Thuban/Model/transientdb.py (AutoTransientTable.write_record):
944            New. Just delegate this to the underlying table.
945    
946    2003-11-20  Bernhard Herzog  <[email protected]>
947    
948            * test/test_proj.py (ProjFileReadTests.test_read_unreadable_file):
949            Skip this test if run under non-posix systems since it only works
950            there
951    
952    2003-11-19  Bernhard Herzog  <[email protected]>
953    
954            * Thuban/Model/resource.py: Rework the way gdal support is
955            determined so that we can give a reason in the about why gdal is
956            not supported.
957            (gdal_support_status): New. Variable holding a string with the
958            reason for no gdal support
959    
960            * Thuban/UI/about.py (About.__init__): Add the reason why gdal is
961            not supported to the message
962    
963    2003-11-19  Bernhard Herzog  <[email protected]>
964    
965            Remove the old table interface and its test cases
966    
967            * Thuban/Model/table.py (OldTableInterfaceMixin): Removed.
968            (DBFTable, MemoryTable): Do not derive from OldTableInterfaceMixin
969            anymore
970    
971            * Thuban/Model/transientdb.py (TransientTableBase)
972            (AutoTransientTable): Do not derive from OldTableInterfaceMixin
973            anymore
974    
975            * test/test_table.py: Removed since the old interface it tests is
976            gone.
977    
978            * test/runtests.py (main): The old table interface is gone and
979            with it the deprecation warnings so remove the code that turns
980            these warnings into errors
981    
982    2003-11-19  Bernhard Herzog  <[email protected]>
983    
984            * test/test_table.py: Revert to revision 1.5 again. Changing the
985            tests to use the new table interface is completely wrong since the
986            whole purpose of the tests in this module is to test the old
987            interface.
988    
989    2003-11-18  Bernhard Herzog  <[email protected]>
990    
991            * Thuban/Model/postgisdb.py (PostGISConnection.MatchesParameters):
992            New. Test whether the connection matches a set of connection
993            parameters
994    
995            * Thuban/UI/dbdialog.py (DBFrame.conns_changed): Fix doc-string
996            (DBFrame.OnAdd): Use the new MatchesParameters method when looking
997            for existing connections with the same parameters and break out of
998            the loop correctly.
999    
1000            * test/test_postgis_db.py (TestBriefDescription)
1001            (TestPostGISSimple.test_brief_description): Rename
1002            TestBriefDescription to TestPostGISSimple and the test method to
1003            test_brief_description so that we can add more test methods.
1004            (TestPostGISSimple.test_matches_parameters): New. Test the new
1005            MatchesParameters method
1006    
1007    2003-11-18  Bernhard Herzog  <[email protected]>
1008    
1009            * Thuban/Lib/connector.py (Publisher): Introduce a new flag,
1010            _was_destroyed, to indicate whether an publisher instance has
1011            already been destroyed.
1012            (Publisher.Unsubscribe): Only disconnect if the publisher has not
1013            been destroyed yet.
1014            (Publisher.Destroy): Set the _was_destroyed flag to true.
1015    
1016            * test/test_connector.py
1017            (TestPublisher.test_unsubscribe_after_destroy): New. Test that
1018            calling Unsubscribe after Destroy doesn't raise an exception
1019    
1020    2003-11-14  Bernhard Herzog  <[email protected]>
1021    
1022            * Thuban/UI/identifyview.py (IdentifyView.selected_shape): Fix
1023            typo in doc-string
1024    
1025    2003-11-13  Bernhard Herzog  <[email protected]>
1026    
1027            Quote table and column names properly for postgis.
1028    
1029            * Thuban/Model/postgisdb.py (quote_identifier): New. Function to
1030            quote an identifier for use in an sql statement
1031            (PostGISColumn.__init__): Add the quoted_name attribute
1032            (PostGISTable.__init__): New instance variable quoted_tablename
1033            (PostGISTable._fetch_table_information): Use the quoted table
1034            name. New isntance variable quoted_geo_col with a quoted version
1035            of geometry_column
1036            (PostGISTable.NumRows, PostGISTable.RowIdToOrdinal)
1037            (PostGISTable.RowOrdinalToId): Use the quoted table name
1038            (PostGISTable.ReadValue, PostGISTable.ValueRange)
1039            (PostGISTable.UniqueValues, PostGISTable.SimpleQuery)
1040            (PostGISShapeStore.BoundingBox, PostGISShapeStore.Shape)
1041            (PostGISShapeStore.AllShapes, PostGISShapeStore.ShapesInRegion):
1042            Use quoted table and column names
1043    
1044            * test/test_postgis_db.py (TestPostGISSpecialCases)
1045            (TestPostGISIgnoredColumns): Rename the class to
1046            TestPostGISSpecialCases because that better describes the new
1047            cases
1048            (TestPostGISSpecialCases.test_unsupported_types)
1049            (TestPostGISSpecialCases.test): Rename the method to
1050            test_unsupported_types because we need a more descriptive name now
1051            that there are more methods
1052            (TestPostGISSpecialCases.test_table_name_quoting)
1053            (TestPostGISSpecialCases.test_column_name_quoting)
1054            (TestPostGISSpecialCases.test_shapestore_name_quoting): New test
1055            cases to test quoting of table and column names in PostGISTable
1056            and PostGISShapeStore
1057    
1058            * test/postgissupport.py
1059            (skip_if_addgeometrycolumn_does_not_use_quote_ident): New. Skip if
1060            AddGeometryColumn desn't support table or column names with sapces
1061            or double quotes
1062    
1063    2003-11-12  Jan-Oliver Wagner <[email protected]>
1064    
1065            * Extensions/wms/__init__.py: New: Init to make this
1066            directory a package.
1067    
1068            * Extensions/wms/wms.py: New: Provide layers via OGC WMS.
1069    
1070    2003-11-11  Bernhard Herzog  <[email protected]>
1071    
1072            * Thuban/Model/resource.py (EPSG_DEPRECATED_PROJ_FILE): New.
1073            Constant for the file woth deprecated epsg projections
1074            (get_system_proj_file): Update doc-string
1075    
1076            * Thuban/UI/projdialog.py (ProjFrame.build_dialog): Add a space
1077            above the EPS widgets, introduce a check box for the deprecated
1078            eps projections and a label for the epsg widgets
1079            (ProjFrame._OnShowEPSG): Handle the deprecated EPSG projections
1080            too
1081    
1082    2003-11-11  Bernhard Herzog  <[email protected]>
1083    
1084            Avoid warnings when run under Python 2.3
1085    
1086            * Thuban/UI/baserenderer.py (BaseRenderer.draw_point_shape)
1087            (BaseRenderer.draw_label_layer): Coordinates must be ints.
1088    
1089            * Thuban/UI/renderer.py (MapRenderer.make_point): Turn this into a
1090            real method so that we can convert to int.
1091            (MapRenderer.label_font): The font size mist be an int.
1092    
1093            * Thuban/UI/common.py (Color2wxColour): The color values must be
1094            ints. Also, remove the unnecessary asserts.
1095    
1096            * test/test_load_0_8.py (TestUnicodeStrings.file_contents)
1097            (TestUnicodeStrings.test): Python source code should not contain
1098            non-ascii characters unless an encoding is specified in the file.
1099            Therefore use \x escapes in the string literals for non-ascii
1100            characters.
1101    
1102    2003-11-11  Bernhard Herzog  <[email protected]>
1103    
1104            * Thuban/Model/resource.py (get_system_proj_file): Add a filename
1105            parameter so that this function can be used for all proj files in
1106            Resource/Projections
1107            (DEFAULT_PROJ_FILE, EPSG_PROJ_FILE): New. Predefined filenames for
1108            get_system_proj_file
1109    
1110            * Thuban/UI/projdialog.py (ProjFrame.__init__): Instead of one
1111            ProjFile self.__sysProjFile use a dictionary of system ProjFile
1112            objects self._sys_proj_files
1113            (ProjFrame.build_dialog): Adapt to the new changes in the
1114            ProjectionList constructor. Add a check button to toggle whether
1115            EPSG projections are shown
1116            (ProjFrame._OnShowEPSG): New. Handler for the epsg check button
1117            events.
1118            (ProjFrame.load_user_proj, ProjFrame.load_system_proj): Only show
1119            the busy cursor if the files have not yet been loaded by the
1120            dialog.
1121            (ProjFrame.load_system_proj): Add a parameter for the name of the
1122            proj file. Maintain the dictionary of system projections
1123            self._sys_proj_files
1124    
1125            * Thuban/UI/projlist.py (ProjectionList): Merge the system_projs,
1126            user_projs parameters into one parameter proj_files which is a
1127            list of proj files.
1128            (ProjectionList._subscribe_proj_files)
1129            (ProjectionList._unsubscribe_proj_files): New. Move
1130            subscription/unsubscription of projfile messages to separate
1131            methods
1132            (ProjectionList.Destroy): The unsubscribe is now done in
1133            _unsubscribe_proj_files
1134            (ProjectionList.update_projections): We now have a list of proj
1135            file objects
1136            (ProjectionList.SetProjFiles): New method to set a new list of
1137            proj file objects
1138    
1139            * test/test_proj.py (ProjFileReadTests.test_get_system_proj_file):
1140            Specify explicitly which system proj file to load.
1141    
1142    2003-11-11  Bernhard Herzog  <[email protected]>
1143    
1144            * Thuban/Model/load.py (SessionLoader.Destroy): New. Clear all
1145            instance variables to cut cyclic references. The GC would have
1146            collected the loader eventually but it can happen that it doesn't
1147            run at all until thuban is closed (2.3 but not 2.2 tries a bit
1148            harder and forces a collection when the interpreter terminates)
1149            (load_session): Call the handler's Destroy method to make sure
1150            that it gets garbage collected early. Otherwise it will be
1151            collected very late if at all and it holds some references to e.g.
1152            shapestores and the session which can lead to leaks (of e.g. the
1153            temporary files)
1154    
1155            * test/test_load.py (TestSingleLayer.test_leak): New. test for the
1156            resource leak in load_session
1157    
1158    2003-11-10  Bernhard Herzog  <[email protected]>
1159    
1160            * Thuban/UI/baserenderer.py: Add a way to specify how layers in
1161            extensions are to be rendered.
1162            (_renderer_extensions): New. List with renderer for layers in
1163            extensions
1164            (add_renderer_extension): New. Add a renderer extension
1165            (init_renderer_extensions): New. Init the renderer extensions
1166            (BaseRenderer.render_map_incrementally): Search
1167            _renderer_extensions for how to draw unknown layer types
1168            (BaseRenderer.draw_raster_data): Add format parameter so that
1169            formats other than BMP can be drawn
1170            (BaseRenderer.draw_raster_layer): Pass an explicit format to
1171            draw_raster_data
1172    
1173            * Thuban/UI/renderer.py (raster_format_map): New. Mapping form the
1174            strings of the format parameter of draw_raster_data method to wx
1175            constants
1176            (MapRenderer.draw_raster_data): Add the format parameter and use
1177            raster_format_map to map it to the right wxwindows constant for
1178            wxImageFromStream
1179    
1180            * test/test_baserenderer.py (SimpleRenderer.draw_raster_data): Add
1181            the format parameter and record it
1182            (TestBaseRenderer.test_raster_no_projection): check the format
1183            paramter of the draw_raster_data method
1184            (TestBaseRenderer.test_renderer_extension): New. Test the renderer
1185            extension facility
1186    
1187    2003-11-07  Bernhard Herzog  <[email protected]>
1188    
1189            Tweak the usage of the sqlite database to make common use cases
1190            more responsive. In most cases copying the data to the sqlite
1191            database takes so long that using sqlite doesn't have enough
1192            advantages.
1193    
1194            * Thuban/Model/transientdb.py (TransientTableBase.ValueRange): Add
1195            comments about performance and query the min and max in separate
1196            statements because only that way will indexes be used.
1197            (TransientTableBase.UniqueValues): Add some comments about
1198            performance.
1199            (AutoTransientTable.ValueRange, AutoTransientTable.UniqueValues):
1200            Do not copy the data to the transient DB but use the transient
1201            copy if it exists. See the new comments for the performance trade
1202            offs
1203    
1204            * test/test_transientdb.py
1205            (TestTransientTable.test_auto_transient_table): Make sure that the
1206            data is copied to the transient database at some point.
1207    
1208    2003-11-03  Bernhard Herzog  <[email protected]>
1209    
1210            * Thuban/Model/data.py (ShapefileStore.ShapesInRegion): Bind some
1211            globals to locals so that it's a bit faster
1212    
1213    2003-11-03  Bernhard Herzog  <[email protected]>
1214    
1215            * Thuban/UI/baserenderer.py
1216            (BaseRenderer.draw_shape_layer_incrementally): Use the ReadValue
1217            method. ReadValue is faster than ReadRowAsDict since it only reads
1218            one cell especially now that the dbf file objects actually
1219            implement it.
1220    
1221            * Thuban/Model/table.py (DBFTable.ReadValue): Use the new
1222            read_attribute method of the dbf objects
1223    
1224    2003-11-03  Bernhard Herzog  <[email protected]>
1225    
1226            * Extensions/profiling/profiling.py (popup_dialog_box): New config
1227            variable to indicate whether the result should be shown in a
1228            dialog box
1229            (profile_screen_renderer, time_screen_renderer): Only show a
1230            dialog box if popup_dialog_box is true.
1231            (profile_screen_renderer): Flush stdout after the printing the
1232            first part of the "profiling..." message
1233    
1234            * Thuban/UI/baserenderer.py
1235            (BaseRenderer.draw_shape_layer_incrementally): Cache the pens and
1236            brushes for the groups so that they're not created over and over
1237            again
1238    
1239            * Thuban/Model/classification.py (Classification.__getattr__)
1240            (Classification._compile_classification)
1241            (Classification._clear_compiled_classification): New. Methods to
1242            manage a 'compiled' representation of the classification groups
1243            which is created on demand
1244            (Classification.InsertGroup, Classification.RemoveGroup)
1245            (Classification.ReplaceGroup): reset the compiled representation
1246            (Classification.FindGroup): Use the compiled representation to
1247            find the matching group
1248            (ClassGroupRange.GetRangeTuple): New. Return the range as a tuple
1249    
1250    2003-10-31  Bernhard Herzog  <[email protected]>
1251    
1252            * Thuban/Model/classification.py (Classification.SetDefaultGroup):
1253            Send a CLASS_CHANGED message
1254            (Classification.RemoveGroup): Send a CLASS_CHANGED message and do
1255            not return the removed group since it wasn't used.
1256    
1257            * test/test_classification.py
1258            (TestClassification.test_set_default_group): New. Test the
1259            SetDefaultGroup method
1260            (TestClassification.test_insert_group): New. Test the InsertGroup
1261            method
1262            (TestClassification.test_remove_group): New. Test the RemoveGroup
1263            method
1264            (TestClassification.test_replace_group): New. Test the
1265            ReplaceGroup method
1266    
1267    2003-10-31  Bernhard Herzog  <[email protected]>
1268    
1269            * test/test_classification.py (TestClassification.setUp):
1270            Subscribe to the CLASS_CHANGED messages
1271            (TestClassification.tearDown): New. Destroy the classification
1272            properly
1273            (TestClassification.test_defaults): Add tests for the default line
1274            width and whether no messages were sent yet
1275            (TestClassification.test_set_default_properties): Add tests for
1276            messages and setting the default line width
1277            (TestClassification.test_add_singleton)
1278            (TestClassification.test_add_range)
1279            (TestClassification.test_multiple_groups): Add tests for messages
1280    
1281    2003-10-31  Bernhard Herzog  <[email protected]>
1282    
1283            Some more refactoring in preparation for new tests:
1284    
1285            * test/test_classification.py (TestClassification.setUp): New.
1286            Instantiate the classification here. Update the test methods
1287            accordingly.
1288            (TestClassification.test_multiple_groups): Make sure that the two
1289            singletons matching 1 are considered different.
1290    
1291    2003-10-31  Bernhard Herzog  <[email protected]>
1292    
1293            * test/test_classification.py (red, green, blue): New. These
1294            constants were used in several cases. Update the relevant methods.
1295            (TestClassification.test_defaults)
1296            (TestClassification.test_set_default_properties)
1297            (TestClassification.test_add_singleton)
1298            (TestClassification.test_add_range)
1299            (TestClassification.test_multiple_groups)
1300            (TestClassification.test_deepcopy): New. These were formerly all
1301            part of the single method test.
1302            (TestClassification.test_deepcopy): Removed.
1303            (TestClassIterator): Removed. The test case is now a method of
1304            TestClassification since it tests part of the public interface of
1305            Classification
1306            (TestClassification.test_iterator): New. Used to be
1307            TestClassIterator effectively
1308    
1309    2003-10-31  Jan-Oliver Wagner <[email protected]>
1310    
1311            GUIfied the functions of the profiling extension.
1312    
1313            * /Extensions/profiling/__init__.py: New: Init to make this
1314            directory a package.
1315    
1316            * Extensions/profiling/profiling.py: Moved menu entries to
1317            the Extensions menu. Applied _() for strings.
1318            (profile_screen_renderer): Catch the detailed printout and present
1319            it in a dialog.
1320            (time_screen_renderer): Raise a dialog to present the result instead
1321            of printing it to stdout.
1322    
1323    2003-10-31  Bernhard Herzog  <[email protected]>
1324    
1325            * test/test_classification.py (TestClassGroupProperties)
1326            (TestClassGroup, TestClassGroupDefault, TestClassGroupRange)
1327            (TestClassGroupSingleton, TestClassIterator, TestClassification):
1328            Split TestClassification into several classes, one for each class
1329            being tested. TestClassification itself now only tests
1330            Classification. This split makes changes to the tests a bit easier
1331    
1332    2003-10-31  Bernhard Herzog  <[email protected]>
1333    
1334            * Extensions/profiling/profiling.py: New. Extension to measure
1335            Thuban performance
1336    
1337    2003-10-31  Frank Koormann <[email protected]>
1338    
1339            Added two items to legend popup menu: Remove Layer and Show Layer Table
1340    
1341            * Thuban/UI/legend.py (LegendPanel._OnRemoveLayer,
1342            LegendPanel._OnShowTable): New event handlers, call the corresponding
1343            mainwindow methods.
1344            (LegendTree._OnRightClick): Added items to popup menu.
1345    
1346  2003-10-30  Bernhard Herzog  <[email protected]>  2003-10-30  Bernhard Herzog  <[email protected]>
1347    
1348          * Thuban/UI/dialogs.py (ThubanFrame.__init__): Handle          * Thuban/UI/dialogs.py (ThubanFrame.__init__): Handle
# Line 3218  Line 4563 
4563          Fix problem of hidden properties dialog under windows after double          Fix problem of hidden properties dialog under windows after double
4564          click on layer tree:          click on layer tree:
4565          The tree control always gets an Expanded / Collapsed event after          The tree control always gets an Expanded / Collapsed event after
4566          the ItemActivated  on double click, which raises the main window again.         We add a second ItemActivated event to the queue, which simply          the ItemActivated  on double click, which raises the main window again.
4567            We add a second ItemActivated event to the queue, which simply
4568          raises the already displayed window.          raises the already displayed window.
4569    
4570          * Thuban/UI/legend.py (LegendTree.__init__): Instance variable          * Thuban/UI/legend.py (LegendTree.__init__): Instance variable

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26