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

Legend:
Removed from v.1855  
changed lines
  Added in v.2138

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26