/[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 1657 by bh, Mon Aug 25 18:27:16 2003 UTC revision 1878 by bh, Mon Oct 27 17:52:47 2003 UTC
# Line 1  Line 1 
1    2003-10-27  Bernhard Herzog  <[email protected]>
2    
3            * po/fr.po, po/es.po: Updated translations from Daniel Calvelo
4    
5            * po/de.po: Update.
6    
7            * Thuban/UI/application.py
8            (ThubanApplication.ShowExceptionDialog): Handle translation of the
9            dialog message properly
10    
11    2003-10-27  Bernhard Herzog  <[email protected]>
12    
13            Rework how localization works so that we use wx's translation
14            functions when running Thuban as a normal application but not when
15            we don't need any UI, such as in the test suite. See the comment
16            in Thuban/__init__.py for details
17    
18            * Thuban/__init__.py (_): Add one level of indirection to make the
19            translation handling more flexible and to make it possible to use
20            either wx's translation services or not.
21            (gettext_identity, translation_function_installed)
22            (install_translation_function): New function to help with this
23    
24            * Thuban/UI/__init__.py: Install the wx specific translation
25            function if it's OK to do that
26    
27            * test/support.py (initthuban): Install a dummy translation
28            function so that importing Thuban.UI doesn't install a wx specific
29            one for which would need to import wxPython
30    
31    2003-10-27  Bernhard Herzog  <[email protected]>
32    
33            * HOWTO-Release: Source archives should be created first and the
34            binary packages should be created from the source archives.
35            There's an official debian package now so there's no need to test
36            the rpm on debian anymore
37    
38    2003-10-27  Bernhard Herzog  <[email protected]>
39    
40            Several rendering changes:
41    
42             - Render the selection into a separate bitmap so that only that
43               bitmap needs to be redrawn when the selection changes
44    
45             - Render incrementally showing previews and allowing interaction
46               before rendering is complete
47    
48             - Update the renderer interface a bit. Most parameters of
49               RenderMap are now parameters of the constructor
50    
51            * Thuban/UI/baserenderer.py (BaseRenderer.__init__): Add the map
52            and the update region as parameters. Update the doc-string
53            (BaseRenderer.render_map_incrementally): New. Generator function
54            to renders the map incrementally
55            (BaseRenderer.render_map): Remove the map argument (it's now in
56            the constructor) and simply iterate over the
57            render_map_incrementally generator to draw the map.
58            (BaseRenderer.draw_shape_layer_incrementally)
59            (BaseRenderer.draw_shape_layer): Renamed to
60            draw_shape_layer_incrementally and changed into a generator that
61            yields True every 500 shapes. Used by render_map_incrementally to
62            render shape layers incrementally
63    
64            * Thuban/UI/renderer.py (ScreenRenderer.RenderMap): Removed the
65            map and region parameters which are now in the constructor
66            (ScreenRenderer.RenderMapIncrementally): New. Public frontend for
67            the inherited render_map_incrementally.
68            (BaseRenderer.draw_shape_layer): Removed.
69            (ScreenRenderer.draw_selection_incrementally): New. The selection
70            drawing part of the removed draw_shape_layer as a generator
71            (ScreenRenderer.layer_shapes): Update because of the region
72            parameter change
73            (ExportRenderer.__init__): New. Extend the inherited constructor
74            with the destination region for the drawing
75            (ExportRenderer.RenderMap): Removed the map and region parameters
76            which are now in the constructor
77    
78            * Thuban/UI/view.py (MapCanvas.PreviewBitmap): New. Return a
79            bitmap suitable for a preview in a tool
80            (CanvasPanTool.MouseMove): Use the PreviewBitmap method to get the
81            bitmap
82            (MapPrintout.draw_on_dc): Adapt to new renderer interface
83            (MapCanvas.OnPaint): Handle drawing the selection bitmap if it
84            exists
85            (MapCanvas.OnIdle): Update the logic to deal with incremental
86            rendering and the selection bitmap
87            (MapCanvas._do_redraw): Handle the instantiation of the render
88            iterator and the redraws during rendering
89            (MapCanvas._render_iterator): New. Generator to incrementally
90            redraw both bitmaps
91            (MapCanvas.Export): Adapt to new renderer interface.
92            (MapCanvas.full_redraw): Reset the selection bitmap and the
93            renderer iterator too
94            (MapCanvas.redraw_selection): New. Force a redraw of the selection
95            bitmap
96            (MapCanvas.shape_selected): Only redraw the selection bitmap
97    
98            * test/test_baserenderer.py
99            (TestBaseRenderer.test_polygon_no_projection)
100            (TestBaseRenderer.test_raster_no_projection)
101            (TestBaseRenderer.test_point_map_projection)
102            (TestBaseRenderer.test_point_layer_and_map_projection)
103            (TestBaseRenderer.test_point_layer_projection)
104            (TestBaseRenderer.test_point_with_classification): Adapt to new
105            renderer interface
106    
107    2003-10-24  Bernhard Herzog  <[email protected]>
108    
109            * libraries/thuban/wxproj.cpp (draw_polygon_shape)
110            (point_in_polygon_shape, shape_centroid): Raise an exception if
111            the shape can't be read. Previously invalid shape ids would lead
112            to a segfault.
113    
114            * test/test_wxproj.py (TestShapeCentroid.test_invalid_shape_id):
115            New. test whether an exception is raised for invalid shape ids
116    
117    2003-10-24  Jan-Oliver Wagner <[email protected]>
118    
119            * Thuban/Model/proj.py (Projection.GetProjectedUnits): Added 'longlat'
120            as alias for 'latlong'.
121    
122            * Thuban/UI/projdialog.py (ProjFrame.__init__): Added 'longlat'
123            as alias for 'latlong'.
124    
125    2003-10-24  Jan-Oliver Wagner <[email protected]>
126    
127            * Thuban/UI/projdialog.py (ProjFrame.proj_selection_changed): Set
128            the projection even for the UnknownPanel.
129            (UnknownProjPanel.__init__): Define the text and create the textctrl
130            widget.
131            (UnknownProjPanel._DoLayout): Replaced static text widget by the
132            textctrl created in __init__.
133            (UnknownProjPanel.SetProjection): Set the text for the text ctrl
134            including the parameters of the projection.
135            
136    2003-10-24  Jan-Oliver Wagner <[email protected]>
137    
138            * Resources/Projections/epsg.proj: New. This is a list of
139            EPSG codes with parameters for proj. The list has been
140            generated using devtools/create_epsg.py based on the
141            file nad/epsg of the proj 4.4.7 package. Four projection
142            definitions have been deleted as they are not accepted by proj:
143            "CH1903+ / LV95", "Bern 1898 (Bern) / LV03C", "CH1903 / LV03"
144            and "HD72 / EOV".
145    
146    2003-10-22  Bernhard Herzog  <[email protected]>
147    
148            Some more tweaks to the projection dialog which should fix RT
149            #1886.
150    
151            * Thuban/UI/projlist.py (ProjectionList.Destroy): Unsubscribe from
152            the ProjFile's messages and call the base class methods correctly
153            (ProjectionList.SelectProjection): Set the wxLIST_STATE_FOCUSED
154            flag on the newly selected item too. Otherwise some other item is
155            focused and the first time the focus is moved with the keyboard
156            the selection moves in unexpected ways.
157    
158            * Thuban/UI/projdialog.py (ProjFrame.__init__): Do not set the
159            focus on the OK button, only on the projection list. That way the
160            list really has the focus initially
161            (ProjFrame.OnClose): Call the projection list's Destroy method to
162            make it unsubscribe all messages
163    
164    2003-10-21  Bernhard Herzog  <[email protected]>
165    
166            Rework the projection dialog to fix a few bugs, including RT 2166
167            and most of 2168
168    
169            * Thuban/UI/projlist.py: New. The class ProjectionList is a
170            special wxListCtrl to show a list of projections in a more MVC
171            fashion
172    
173            * Thuban/UI/projdialog.py (ProjFrame): Substantial changes
174            throughout the class. The main change is to use the ProjectionList
175            class instead of a normal wxListBox. Also, add an explicit
176            "Unknown" projection to the projection choice control.
177            (ProjPanel.__init__): Add an "unknown" ellipsoid
178            (TMPanel.__init__, LCCPanel.__init__): Tweak the order of
179            instantiation of the panel's controls to make the tab-order more
180            natural
181    
182    2003-10-21  Bernhard Herzog  <[email protected]>
183    
184            * test/test_load.py (TestSingleLayer.file_contents)
185            (TestSingleLayer.test): Add non-ascii characters to the titles of
186            session, map and layer. This is effectively a port of the
187            TestUnicodeStrings test in test_load_0_8.py which for some reason
188            was only added there.
189    
190            * test/test_load_0_9.py (TestSingleLayer.file_contents)
191            (TestSingleLayer.test): Same as in test_load.py: add non-ascii
192            characters to the titles of session, map and layer,.
193    
194    2003-10-21  Bernhard Herzog  <[email protected]>
195    
196            Add EPSG projection handling to .thuban files
197    
198            * test/test_save.py (SaveSessionTest.dtd)
199            (SaveSessionTest.testEmptySession)
200            (SaveSessionTest.testLayerProjection)
201            (SaveSessionTest.testRasterLayer)
202            (SaveSessionTest.testClassifiedLayer)
203            (SaveSessionTest.test_dbf_table)
204            (SaveSessionTest.test_joined_table)
205            (SaveSessionTest.test_save_postgis): Update to 1.0-dev namespace
206            (SaveSessionTest.testSingleLayer): Update to 1.0-dev namespace and
207            use a and epsg projection to test saving them
208    
209            * test/test_load.py (LoadSessionTest.dtd): Update to 1.0-dev
210            namespace
211            (TestLayerVisibility.file_contents, TestLabels.file_contents)
212            (TestLayerProjection.file_contents)
213            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
214            (TestPostGISLayer.file_contents)
215            (TestPostGISLayerPassword.file_contents)
216            (TestLoadError.file_contents, TestLoadError.test): Update to use
217            1.0-dev namespace
218            (TestSingleLayer.file_contents, TestSingleLayer.test): Update to
219            use 1.0-dev namespace and use an EPSG projection to test whether
220            loading it works
221    
222            * test/test_load_0_9.py: New. Effectively a copy of test_load.py
223            as of Thuban 0.9. These are now tests to determine whether Thuban
224            can still read files generated by Thuban 0.9
225    
226            * Thuban/Model/save.py (SessionSaver.write)
227            (SessionSaver.write_session): Use the 1.0 dtd and 1.0-dev
228            namespace
229            (SessionSaver.write_projection): Write the projection's epsg
230            attribute
231    
232            * Thuban/Model/load.py (SessionLoader.__init__): Also accept the
233            thuban-1.0-dev.dtd namespace
234            (SessionLoader.check_attrs): Allow a callable object as conversion
235            too
236            (SessionLoader.start_projection, SessionLoader.end_projection)
237            (SessionLoader.start_parameter): Handle the epsg attribute and
238            rename a few instance variables to lower case
239    
240            * Resources/XML/thuban-1.0.dtd: New. Only difference to
241            thuban-0.9.dtd is the epsg attribute for projections.
242    
243    2003-10-21  Bernhard Herzog  <[email protected]>
244    
245            * test/runtests.py (main): Let the user specify which tests to run
246            on the command line
247    
248            * test/support.py (ThubanTestResult.getDescription): Override to
249            give a better short description. The description can be used as a
250            parameter to run_tests to run that particular test in isolation.
251    
252    2003-10-21  Frank Koormann   <[email protected]>
253    
254            Popup menu for legend. Scheduled for the 1.2 release this was too
255            simple to implement: The popup menu is bound to the legend tree, while
256            the events are hanlded by its anchestor, the legend panel. This
257            allows reuse of all the event handlers already implemented for the
258            legend toolbar buttons.
259    
260            * Thuban/UI/legend.py (LegendPanel.__init__): EVT_MENU macros
261            to add handlers for the events issued by the popup menu.
262            (LegendPanel._OnToggleVisibility): Handler for toggling layer
263            visibility event
264            (LegendPanel._OnProjection): Handler for layer projection event.
265            (LegendTree.__init__): Added EVT_TREE_ITEM_RIGHT_CLICK
266            (LegendTree._OnRightClick): Event handler for right click, select item
267            and pop up menu.
268            (LegendTree.ToggleVisibility): Toggle layer visibility
269            (LegendTree.LayerProjection): Raise layer projection dialog for
270            current layer.
271    
272    2003-10-21  Bernhard Herzog  <[email protected]>
273    
274            * Resources/Projections/defaults.proj: Use correct DOCTYPE
275            declaration. The top-level element is projectionlist not projfile
276    
277    2003-10-20  Bernhard Herzog  <[email protected]>
278    
279            * Thuban/UI/projdialog.py (ProjFrame.write_proj_file): New. helper
280            method to write a projfile and display a busy cursor and error
281            dialogs.
282            (ProjFrame._OnSave, ProjFrame._OnAddToList, ProjFrame._OnImport)
283            (ProjFrame._OnExport, ProjFrame._OnRemove): Use write_proj_file
284            (ProjFrame.__FillAvailList): Translate "<None>" too and display a
285            busy cursor while loading the user and system prj files.
286    
287    2003-10-16  Bernhard Herzog  <[email protected]>
288    
289            * Thuban/Model/resource.py (projfile_cache): Introduce a cache for
290            ProjFile objects
291            (clear_proj_file_cache): New function to clear the cache. Mainly
292            useful for use by the test suite
293            (read_proj_file): Use the cache.
294    
295            * test/test_proj.py (TestProjFile): Clarify the doc-string
296            (ProjFileReadTests): Update doc-string
297            (ProjFileReadTests.test_get_system_proj_file): Check whether the
298            system proj files is cached.
299            (ProjFileLoadTestCase): New base class for the proj file tests
300            derived from support.FileLoadTestCase to provide some common
301            behavior.
302            (TestLoadingProjFile)
303            (TestLoadingProjFileWithEmptyProjectionlist.file_contents)
304            (TestProjFileWithInvalidParameters.file_contents): Derive from
305            ProjFileLoadTestCase
306            (TestLoadingProjFile.test_caching): New. Test whether the cache
307            works
308    
309    2003-10-16      Silke Reimer    <[email protected]>
310    
311            * debian/*: New directory with configuration files for building a thuban
312              deb-package.
313    
314    2003-10-14  Bernhard Herzog  <[email protected]>
315    
316            * test/test_proj.py: Execute support.run_tests when run as
317            __main__ so that missing unsubscribes are detected
318            (TestProjFile.tearDown): Destroy the proj_file properly
319    
320    2003-10-14  Bernhard Herzog  <[email protected]>
321    
322            * Thuban/Model/messages.py (PROJECTION_ADDED)
323            (PROJECTION_REPLACED, PROJECTION_REMOVED): New message types for
324            the ProjFile objects
325    
326            * Thuban/Model/proj.py (ProjFile): Derive from Publisher so we can
327            easily send messages when the projections change
328            (ProjFile.Add, ProjFile.Remove, ProjFile.Replace): Issue messages
329            when the change was successful
330    
331            * test/test_proj.py (TestProjFile.setUp): Subscribe to some of the
332            proj file messages
333            (TestProjFile.test_add_remove)
334            (TestProjFile.test_remove_non_existing)
335            (TestProjFile.test_replace)
336            (TestProjFile.test_replace_non_existing): Test whether the right
337            messages are sent
338    
339    2003-10-14  Bernhard Herzog  <[email protected]>
340    
341            * test/test_proj.py (TestProjFile.test): Refactor into several
342            tests
343            (TestProjFile.test_add_remove)
344            (TestProjFile.test_remove_non_existing)
345            (TestProjFile.test_replace)
346            (TestProjFile.test_replace_non_existing): Some of the new
347            individual test cases
348            (TestProjFileSimple): New class for the rest of the test cases
349            that came out of the refactoring
350            (ProjFileTest): Derive from xmlsupport.ValidationTest so that the
351            derived classes don't have to
352    
353    2003-10-13  Bernhard Herzog  <[email protected]>
354    
355            Add an optional EPSG code to the projection objects and extend the
356            .proj file format accordingly.
357    
358            * Resources/XML/projfile.dtd (element projection): Add epsg
359            attribute
360    
361            * Thuban/Model/proj.py (Projection.__init__): New parameter and
362            instance variable epsg. Update doc-string
363            (Projection.EPSGCode, Projection.Label): New methods to provide
364            access to EPSG code and a label for use in dialogs
365    
366            * Thuban/Model/resource.py (ProjFileReader.start_projection)
367            (ProjFileReader.end_projection, ProjFileSaver.write_projfile):
368            Handle the epsg code attribute when reading or writing proj files
369    
370            * Thuban/UI/projdialog.py (ProjFrame._OnSave)
371            (ProjFrame._OnAddToList, ProjFrame.__DoOnProjAvail)
372            (ProjFrame.__FillAvailList): Use the projection's Label method to
373            get the string for the list box
374    
375            * test/test_proj.py (TestProjection.test_label)
376            (TestProjection.test_label_epsg)
377            (TestProjection.test_epsgcode_for_non_epsg_projection)
378            (TestProjection.test_epsgcode_for_real_epsg_projection): New tests
379            for the label and EPSGCode methods
380            (WriteProjFileTests.doTestWrite, WriteProjFileTests.test_write)
381            (WriteProjFileTests.test_write_empty_file): Create the ProjFile
382            objects in the test cases and put the expected contents into the
383            test case methods too. Update doTestWrite accordingly
384            (TestLoadingProjFile)
385            (TestLoadingProjFileWithEmptyProjectionlist): New classes with the
386            read tests from TestProjFile.
387            (TestProjFile.doTestRead, TestProjFile.testRead): Removed. These
388            tests are now in the new classes.
389            (sample_projfile, sample_projfile_data)
390            (sample_projfile2, sample_projfile_data2): Removed. Not used
391            anymore.
392            (TestProjFile.test_read_unreadable_file): No need to reset the
393            permissions at the end anymore since we use a unique filename
394    
395    2003-10-13  Bernhard Herzog  <[email protected]>
396    
397            * test/test_proj.py: Some more refactoring of the test cases
398            (ProjFileTest): New base class for the proj file tests.
399            (TestProjFile): Derive from ProjFileTest
400            (TestProjFile.test_read_unreadable_file)
401            (TestProjFile.test_read_empty_file, TestProjFile.doTestRead): Use
402            the new filename method to get a unique filename
403            (TestProjFile.doTestWrite, TestProjFile.testWrite): Removed.
404            (WriteProjFileTests): New class for proj file write tests.
405            Contains the write test that were in TestProjFile originally.
406    
407    2003-10-13  Bernhard Herzog  <[email protected]>
408    
409            * test/test_proj.py (TestProjFile.testRead)
410            (TestProjFile.test_read_non_existing_file)
411            (TestProjFile.test_read_unreadable_file)
412            (TestProjFile.test_read_empty_file): Split into several methods.
413    
414    2003-10-10  Bernhard Herzog  <[email protected]>
415    
416            * Thuban/UI/sizers.py: New file with custom sizers.
417    
418            * Thuban/UI/projdialog.py (ProjFrame.build_dialog): Instantiate
419            all projection type specific panels and put them into a
420            NotebookLikeSizer. This way the dialog doesn't change its size
421            when a different projection is selected
422            (ProjFrame.__init__): Rename projection_panels
423            projection_panel_defs and reuse projection_panels for a list of
424            the instantiated panels.
425            (ProjFrame._show_proj_panel, ProjFrame.__DoOnProjAvail)
426            (ProjFrame.__DoOnProjChoice): Changes due to the new handling of
427            the panels
428            (UnknownProjPanel._DoLayout): Place the newlines in the message
429            differently to make the panel narrower.
430            (TMPanel._DoLayout): Layout the parameters in one column.
431    
432    2003-10-10  Bernhard Herzog  <[email protected]>
433    
434            * Thuban/UI/projdialog.py (ProjFrame.build_dialog): New method
435            that contains all the setup for the dialog's widgets, layout and
436            event handling.
437            (__): Call build_dialog to build the dialog.
438            (ProjFrame.__set_properties, ProjFrame.__do_layout): Removed.
439            Their functionality is now in build_dialog
440            (ProjFrame.__VerifyButtons, ProjFrame.__VerifyButtons)
441            (ProjFrame.__DoOnProjAvail, ProjFrame.__DoOnProjAvail)
442            (ProjFrame.__DoOnProjChoice): Small updates due to slightly
443            different widget names and hierarchy introduced with build_dialog.
444    
445    2003-10-10  Bernhard Herzog  <[email protected]>
446    
447            * README: Fix typo.
448    
449    2003-10-09  Bernhard Herzog  <[email protected]>
450    
451            * Thuban/Model/proj.py (ProjFile.Add): Do not check whether the
452            projection is already in the list. This is *a lot* faster when
453            loading files with hundreds of projections since it saves a linear
454            search. OTOH this will allow adding the same projection to the
455            user.proj file multiple times in the projection dialog but we'll
456            deal with that later
457    
458    2003-10-09  Jan-Oliver Wagner <[email protected]>
459    
460            * devtools: New. Directory for developer tools that are not intended
461            for the regular user.
462    
463            * devtools/create_epsg.py: New. Convert the epsg file of proj into
464            a python .proj file.
465    
466    2003-10-09  Bernhard Herzog  <[email protected]>
467    
468            * test/test_proj.py
469            (TestProjection.test_get_parameter_without_equals_sign): New. Test
470            whether GetParameter handles parameters without "=" sign correctly
471    
472            * Thuban/Model/proj.py (Projection.GetParameter): Handle
473            parameters that do not contain a "=". Update the doc-string
474    
475    2003-10-08  Bernhard Herzog  <[email protected]>
476    
477            * Thuban/UI/projdialog.py (ProjFrame.__set_properties): Remove the
478            length limit on the projname text control
479    
480    2003-10-08  Bernhard Herzog  <[email protected]>
481    
482            * test/test_proj.py (TestProjection.test_get_projection_units_geo)
483            (TestProjection.test_get_projection_units_normal): New. Tests for
484            the Projection.GetProjectedUnits method
485    
486    2003-10-08  Jan-Oliver Wagner <[email protected]>
487    
488            * Thuban/Model/resource.py (get_user_proj_file): small bug-fix:
489            Added missing 'val' parameter.
490    
491    2003-10-08  Bernhard Herzog  <[email protected]>
492    
493            * Thuban/UI/projdialog.py (ProjFrame.__DoOnProjAvail): When the
494            projection type of the currently selected projection is not known,
495            i.e. there's no panel for it, use the UnknownProjPanel
496            (ProjFrame.__DoOnProjChoice, ProjFrame._show_proj_panel): Split
497            the actual replacing of the proj panel into the new method
498            _show_proj_panel.
499            (UnknownProjPanel): Add doc-string.
500            (UnknownProjPanel._DoLayout): Insert a newline into the text so
501            that the panel is not so wide.
502    
503    2003-10-08  Bernhard Herzog  <[email protected]>
504    
505            * Thuban/Model/resource.py (read_proj_file): Return the warnings
506            too. Update the doc-string
507            (get_proj_files): Removed. It wasn't used anywhere
508            (get_system_proj_files, get_system_proj_file): Rename to
509            get_system_proj_file and return the ProjFile object and not a list
510            of ProjFile objects. Update the callers.
511            (get_user_proj_files, get_user_proj_file): Rename to
512            get_user_proj_file return the ProjFile object and not a list of
513            ProjFile objects. Update the callers.
514            (ProjFileReader.__init__): New instance variable for the warnings.
515            Rename the __pf ivar to projfile. Update the methods referring to
516            __pf
517            (ProjFileReader.end_projection): Catch any errors raised when
518            instantiating the projection and record that as an error. The
519            projection will not be in the final ProjFile object.
520            (ProjFileReader.GetWarnings): New method to return the warnings.
521    
522            * Thuban/UI/projdialog.py (ProjFrame.show_warnings): New method to
523            show the warnings from the projfile reader
524            (ProjFrame._OnImport): Deal with any warnings returned by
525            read_proj_file
526            (ProjFrame.__FillAvailList): Deal with any warnings returned by
527            get_system_proj_file or get_user_proj_file.
528    
529            * test/test_proj.py (TestProjFile.doTestRead): Check the warnings.
530            (TestProjFileWithInvalidParameters.file_contents): New test cases
531            to test whether read_proj_file handles invalid projection
532            parameters correctly
533            (TestProjFile.test_get_system_proj_file): New. Simple test for
534            resource.get_system_proj_file
535    
536    2003-10-07  Bernhard Herzog  <[email protected]>
537    
538            * test/test_derivedshapestore.py
539            (TestDerivedShapeStoreExceptions.tearDown): Clear the session
540            properly so that the temporary directories get deleted correctly
541    
542    2003-10-06  Bernhard Herzog  <[email protected]>
543    
544            Handle the title changes in a proper MVC way.
545    
546            * Thuban/UI/mainwindow.py (MainWindow.__init__): Subscribe to the
547            canvas' TITLE_CHANGED messages
548            (MainWindow.update_title): New. Update the main window's title
549            (MainWindow.__SetTitle): Removed. Use update_title instead.
550            (MainWindow.SetMap): Use update_title instead of __SetTitle
551            (MainWindow.RenameMap): Do change the window title explicitly
552            here. That's handled in a proper MVC way now.
553            (MainWindow.title_changed): New. Subscriber for the TITLE_CHANGED
554            messages
555    
556            * Thuban/Lib/connector.py (Conduit): New class to help classes
557            that forward messages
558    
559            * Thuban/UI/viewport.py: Forward the map's TITLE_CHANGED messages
560            (ViewPort): Derive from Conduit instead of Publisher
561            (ViewPort.Subscribe, ViewPort.Unsubscribe): Use the new base class
562            when calling the inherited versions
563            (ViewPort._subscribe_map, ViewPort._unsubscribe_map): New helper
564            methods to subscribe and unsubscribe map messages
565            (ViewPort.SetMap, ViewPort.Destroy): Use the new helper methods to
566            handle the map subscriptions
567            (ViewPort.Map, ViewPort.map_projection_changed)
568            (ViewPort.layer_projection_changed): Add or update doc-strings
569    
570            * test/test_connector.py (TestPublisher.test_issue_simple): Fix
571            typo
572            (MyConduit): Helper class for the Conduit test.
573            (TestConduit): Test cases for Conduit
574    
575            * test/test_connector.py: Use support.run_tests as main.
576    
577            * test/test_viewport.py (ViewPortTest.setUp): Also subscribe to
578            the TITLE_CHANGED messages
579            (ViewPortTest.test_forwarding_title_changed): New test to check
580            whether the viewport forwards the map's TITLE_CHANGED messages
581            (TestViewportWithPostGIS.tearDown): Call the map's Destroy method
582            after the port's because the latter may require a still functional
583            map.
584    
585    2003-10-06  Bernhard Herzog  <[email protected]>
586    
587            * Thuban/UI/application.py (ThubanApplication.maps_changed): Add
588            doc-string
589    
590    2003-10-06  Bernhard Herzog  <[email protected]>
591    
592            * test/test_viewport.py (ViewPortTest.setUp)
593            (SimpleViewPortTest.test_init_with_size): Move the test for the
594            initial size as a constructor parameter from ViewPortTest.setUp
595            method to a new separate test in SimpleViewPortTest.
596    
597    2003-10-06  Bernhard Herzog  <[email protected]>
598    
599            * test/test_viewport.py (MockView): New class derived from
600            ViewPort with a mock implementation of GetTextExtent to be used in
601            the test cases
602            (ViewPortTest.setUp): Use MockView instead of ViewPort
603    
604            * Thuban/UI/viewport.py (ViewPort.GetTextExtent): Turn this method
605            into what would be a "pure virtual function" in C++: always raise
606            NotImplementedError. Mock implementations for test cases don't
607            belong into the real code
608    
609    2003-10-02  Bernhard Herzog  <[email protected]>
610    
611            * test/test_layer.py (TestLayer.test_empty_layer): Explicitly
612            close the dbf file we create so that it's contents have been
613            written properly.
614    
615            * libraries/shapelib/shptree.c, libraries/shapelib/shpopen.c,
616            libraries/shapelib/shapefil.h, libraries/shapelib/dbfopen.c:
617            Update to shapelib 1.2.10
618    
619    2003-10-01  Jan-Oliver Wagner <[email protected]>
620    
621            * Thuban/UI/tree.py, Thuban/UI/main.py: Remove the #! line as
622            it annoys lintian which warns about these files not being
623            executable. The #! isn't necessary here since if you absolutely
624            must execute them you can always say "python <filename>".
625    
626    2003-09-26  Bernhard Herzog  <[email protected]>
627    
628            * Thuban/Model/classgen.py (GenQuantiles0): Removed since it's
629            only used in GREAT-ER but not used in Thuban itself. When GREAT-ER
630            is ported to a newer the import will fail, so it should be noticed
631            immediately that this function is gone.
632            Fixes RT#1919
633    
634    2003-09-26  Bernhard Herzog  <[email protected]>
635    
636            Add a DTD for the projection files and make thuban write valid
637            projection files
638    
639            * Resources/XML/projfile.dtd: New. DTD for thuban's projection
640            files
641    
642            * Thuban/Model/resource.py (ProjFileSaver.write): Use
643            'projectionlist' as the name in the document type declaration so
644            that it matches the element type of the root element.
645    
646            * test/test_proj.py (sample_projfile, sample_projfile2): Use
647            'projectionlist' as the name in the document type declaration just
648            as it is done now in the files thuban would write
649            (sample_projfile, sample_projfile_data): Fix spelling of
650            "Mercator"
651            (TestProjFile.doTestWrite): Validate the written and the expected
652            XML data
653            (TestProjFile): Derive from ValidationTest so that we can run xml
654            validation tests
655    
656    2003-09-24  Bernhard Herzog  <[email protected]>
657    
658            * Thuban/UI/renderer.py (ExportRenderer.render_legend): Do not
659            modify the list returned by map.Layers() in place since it is the
660            actual list of layers used by the map.
661    
662    2003-09-23  Jan-Oliver Wagner <[email protected]>
663    
664            * Doc/manual/thuban-manual.xml: Added subsection to chapter
665            Extensions to describe the extensions coming with the Thuban
666            standard package (gns2shp and importAPR).
667    
668    2003-09-23  Bernhard Herzog  <[email protected]>
669    
670            * libraries/thuban/wxproj.cpp (project_point): if there's an
671            inverse but no forward projection, convert to degrees after
672            applying the inverse projection. Fixes RT#2096
673    
674            * test/test_wxproj.py: New. Test cases for wxproj.so. One test
675            implicitly tests for the fix to RT#2096
676    
677            * test/support.py (FloatComparisonMixin.assertFloatSeqEqual):
678            Check that the sequences have the same lengths
679    
680            * Resources/Projections/defaults.proj (Geographic projection): Use
681            a much more precise value for the to_meter attribute.
682    
683    2003-09-22  Bernhard Herzog  <[email protected]>
684    
685            * test/support.py (initthuban): Make sure to unset the LANG env.
686            var. so that tests that compare translated strings work. Solves RT
687            #2094
688    
689    2003-09-22  Jan-Oliver Wagner <[email protected]>
690    
691            Small improvement of APR import.
692    
693            * Extensions/importAPR/test/test_apr.py (aprTest.test_LClass):
694            Added tests for text-ranges.
695    
696            * Extensions/importAPR/apr.py (APR_LClass.GetThubanRange): Now
697            returns a string object if the range is based on text.
698    
699            * Extensions/importAPR/importAPR.py (import_apr_dialog): Unified
700            range retrieval.
701    
702    2003-09-22  Jan-Oliver Wagner <[email protected]>
703    
704            Initial version of the importAPR extension which is in
705            experimental state.
706    
707            * /Extensions/importAPR/, /Extensions/importAPR/samples/,
708            /Extensions/importAPR/test/: New directories.
709    
710            * /Extensions/importAPR/samples/README: New: Howto load the samples.
711    
712            * /Extensions/importAPR/samples/iceland.apr: New: A sample APR
713            file which refers to the Thuban Iceland demo data.
714    
715            * /Extensions/importAPR/test/README: New: Howto execute the tests.
716    
717            * /Extensions/importAPR/test/test_apr.py: New: Tests for APR classes.
718    
719            * /Extensions/importAPR/apr.py: New: Classes for ArcView Objects
720            as in '.apr'-files.
721    
722            * /Extensions/importAPR/odb.py: New: Classes for generic ArcView
723            ODB Objects as in '.apr', '.avl' and other files.
724    
725            * /Extensions/importAPR/__init__.py: New: Init to make this
726            directory a package.
727    
728            * /Extensions/importAPR/importAPR.py: New: Import a ArcView
729            project file (.apr) and convert it to Thuban.
730    
731    2003-09-22  Jan-Oliver Wagner <[email protected]>
732    
733            * Extensions/gns2shp.gns2shp.py: The main module of gns2shp.
734    
735    2003-09-19  Jan-Oliver Wagner <[email protected]>
736    
737            * Doc/manual/thuban-manual.xml: Extended section 'Installation'
738            with description on RPM installation and RPM binary package
739            creation.
740    
741    2003-09-18  Bernhard Herzog  <[email protected]>
742    
743            * setup.py (data_files): Only add the mo files if the Locales
744            directory actually exists, so that setup.py works with a fresh CVS
745            checkout
746    
747    2003-09-12  Jan-Oliver Wagner <[email protected]>
748    
749            * Examples/simple_extensions/simple_tool.py: bugfix: Tool is now
750            in viewport, not anymore in view
751    
752    2003-09-04  Jan-Oliver Wagner <[email protected]>
753    
754            Introducing first Extension (gns2shp).
755    
756            * Extensions, Extensions/gns2shp, Extensions/gns2shp/test: New.
757    
758            * Extensions/__init__.py: New. init to make this dir a package.
759    
760            * Extensions/gns2shp/__init__.py: New. init to make this dir a package.
761    
762            * Extensions/gns2shp/test/README: New. some info on this test directory.
763    
764            * Extensions/gns2shp/test/ls.txt: New. test data set (Liechtenstein).
765    
766            * Extensions/gns2shp/test/test_gns2shp.py: New. Test for correct creation
767            of Shapefile from GNS text file format
768    
769    2003-09-03  Jan-Oliver Wagner <[email protected]>
770    
771            Fix/workaround for bug #2019:
772            https://intevation.de/rt/webrt?serial_num=2019
773    
774            * Thuban/UI/identifyview.py (IdentifyView.ID_STOP): New.
775            (IdentifyView.__init__): Added another button that allows to
776            stop the identify mode.
777            (IdentifyView.OnStop): New. Stops the identify mode.
778    
779    2003-09-03  Jan-Oliver Wagner <[email protected]>
780    
781            Introducing a new exception dialog that allows to exit the
782            application immediately.
783            This fixes bug #2060: https://intevation.de/rt/webrt?serial_num=2060
784    
785            * Thuban/UI/exceptiondialog.py: New. A special exception dialog.
786    
787            * Thuban/UI/application.py (ThubanApplication.ShowExceptionDialog):
788            Made strings available to translations. Exchanged the simple
789            ScrolledMessageDialog by the new ExceptionDialog.
790    
791    2003-09-01  Bernhard Herzog  <[email protected]>
792    
793            * NEWS: New. Summary of changes and release notes.
794    
795            * MANIFEST.in: Add NEWS
796    
797    2003-09-01  Bernhard Herzog  <[email protected]>
798    
799            * MANIFEST.in: Correct the include statement for the mo-files and
800            include the documentation too.
801    
802            * setup.py (data_files): Add the .mo files
803            (setup call): Up to version 0.9.0
804    
805    2003-09-01  Bernhard Herzog  <[email protected]>
806    
807            * Thuban/UI/dbdialog.py (ChooseDBTableDialog.__init__): Change the
808            parameter list to just parent and session
809            (ChooseDBTableDialog.__set_properties): Removed. Setting the
810            selection of empty list boxes is not allowed (and produces C++
811            assertion errors) and the rest of the setup is better done in
812            __init__ anyway.
813            (ChooseDBTableDialog.OnCancel, ChooseDBTableDialog.OnOK)
814            (ChooseDBTableDialog.OnLBDClick, DBDialog.OnOK): Use the Python
815            builtins True/False for booleans to avoid warnings from wxPython
816    
817            * Thuban/UI/mainwindow.py (MainWindow.AddDBLayer): Adapt to new
818            ChooseDBTableDialog constructor parameters.
819    
820    2003-09-01  Bernhard Herzog  <[email protected]>
821    
822            * Thuban/Model/postgisdb.py
823            (PostGISTable): Extend doc-string
824            (PostGISTable._fetch_table_information): Set the column index
825            correctly, pretending ignored columns don't exist.
826    
827            * test/test_postgis_db.py (TestPostGISIgnoredColumns): New tests
828            for postgis tables with data types not yet supported by thuban.
829    
830    2003-08-29  Bernhard Herzog  <[email protected]>
831    
832            * HOWTO-Release: Tweak item about running the tests.
833    
834    2003-08-29  Jan-Oliver Wagner <[email protected]>
835    
836            * /Doc/manual/thuban-manual.xml: updated to version 1.0pre2.
837    
838    2003-08-29  Bernhard Herzog  <[email protected]>
839    
840            Add some missing parameters to projections. Proj complains about
841            them on windows but for some reason not on Linux.
842    
843            * test/test_save.py (SaveSessionTest.testLayerProjection): Add
844            missing required projection parameters
845    
846            * test/test_proj.py (TestProjFile.test): Add missing required
847            projection parameters
848    
849            * test/test_load_0_8.py (TestLayerProjection.file_contents)
850            (TestLayerProjection.test): Add missing required projection
851            parameters and tests for them
852    
853            * test/test_load.py (TestLayerProjection.file_contents)
854            (TestLayerProjection.test): Add missing required projection
855            parameters and tests for them
856    
857            * test/test_layer.py (TestLayer.test_base_layer): Add missing
858            required projection parameters
859    
860    2003-08-29  Bernhard Herzog  <[email protected]>
861    
862            * libraries/pyprojection/Projection.i: Use pj_get_errno_ref to
863            access the pj_errno because directly accessing pj_errno doesn't
864            work on windows if the proj library is in a DLL
865    
866            * libraries/pyprojection/Projection_wrap.c: Update from Projection.i
867    
868    2003-08-28  Bernhard Herzog  <[email protected]>
869    
870            * test/test_proj.py: Import things from Thuban after calling
871            initthuban
872    
873            * test/test_load.py (LoadSessionTest.filenames): New class
874            variable with the filename attributes to normalize
875            (LoadSessionTest.check_format): Pass self.filenames to
876            sax_eventlist to normalize the filename attributes
877    
878            * test/xmlsupport.py: Add cvs keywords
879            (SaxEventLister.__init__): New parameter filenames which indicates
880            attributes that contain filenames
881            (SaxEventLister.startElementNS): Normalize the filename attributes
882            with os.path.normpath
883            (sax_eventlist): New parameter filenames to pass through to
884            SaxEventLister
885    
886            * test/test_derivedshapestore.py: Make this file callable as a
887            program to execute the tests
888            (TestDerivedShapeStoreExceptions.test_table_with_wrong_size): Bind
889            the session to self.session so that it gets destroyed properly
890    
891            * test/test_layer.py (TestLayer.tearDown): Call the session's
892            Destroy method
893    
894            * test/test_map.py (TestMapBase.tearDown): Destroy self.session
895            too if it exists
896            (TestMapAddLayer.test_add_layer): Bind the session to self.session
897            so that it gets destroyed properly
898    
899            * test/postgissupport.py (reason_for_not_running_tests): Add a
900            test for the existence of popen2.Popen4.
901    
902            * test/test_save.py (SaveSessionTest.tearDown): New. Provide a
903            reliable way to destroy the sessions created in the test cases
904            (SaveSessionTest.test_dbf_table): Bind the session to self.session
905            so that it gets destroyed properly
906            (SaveSessionTest.testLayerProjection): Bind the session to
907            self.session so that it gets destroyed properly
908    
909            * test/test_session.py (UnreferencedTablesTests.tearDown): Make
910            sure that the session is destroyed properly
911    
912            * test/test_shapefilestore.py: Make this callable as a program to
913            execute the tests
914    
915            * test/test_scalebar.py: Remove unnecessary import of _ from
916            Thuban
917    
918            * test/support.py (print_garbage_information): Call initthuban
919            here because it may be called indirectly from test cases that test
920            test support modules which do not use anything from thuban itself
921            (ThubanTestProgram.runTests): Remove unnecessary debug print
922    
923    2003-08-28  Bernhard Herzog  <[email protected]>
924    
925            * Thuban/version.py (longversion): Update to 0.9
926    
927            * Thuban/UI/mainwindow.py: Remove some unused imports
928    
929            * README: Add section about required additional software. Add date
930            and revision CVS keywords
931    
932            * HOWTO-Release: Add item about the translations. Add date and
933            revision CVs keywords and change formatting to match README a bit
934            better
935    
936            * po/de.po: Update for 0.9
937    
938            * test/README: Tweak the wording a little because many tests are
939            not really unittest.
940    
941    2003-08-27  Bernhard Herzog  <[email protected]>
942    
943            As preparation for the 0.9 release, switch thuban files to a
944            non-dev namespace
945    
946            * Thuban/Model/save.py (SessionSaver.write_session): Write files
947            with the http://thuban.intevation.org/dtds/thuban-0.9.dtd
948            namespace
949    
950            * Thuban/Model/load.py (SessionLoader.__init__): Accept the
951            http://thuban.intevation.org/dtds/thuban-0.9.dtd namespace too
952    
953            * test/test_save.py (SaveSessionTest.dtd)
954            (SaveSessionTest.testEmptySession)
955            (SaveSessionTest.testSingleLayer)
956            (SaveSessionTest.testLayerProjection)
957            (SaveSessionTest.testRasterLayer)
958            (SaveSessionTest.testClassifiedLayer)
959            (SaveSessionTest.test_dbf_table)
960            (SaveSessionTest.test_joined_table)
961            (SaveSessionTest.test_save_postgis): Update for new namespace
962    
963            * test/test_load.py (LoadSessionTest.dtd, TestSingleLayer)
964            (TestLayerVisibility.file_contents, TestLabels.file_contents)
965            (TestLayerProjection.file_contents)
966            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
967            (TestPostGISLayer.file_contents)
968            (TestPostGISLayerPassword.file_contents)
969            (TestLoadError.file_contents, TestLoadError.test): Update for new
970            namespace
971    
972    2003-08-27  Bernhard Herzog  <[email protected]>
973    
974            Make the table interface distinguish between row ids (an integer
975            that uniquely identifies a row) and row ordinals (a simple row
976            count from 0 to NumRows() - 1)
977    
978            * Thuban/Model/postgisdb.py (PostGISTable.RowIdToOrdinal)
979            (PostGISTable.RowOrdinalToId): New methods to conver between row
980            ids and row ordinals
981            (PostGISTable.ReadRowAsDict, PostGISTable.ReadValue): New keyword
982            parameter row_is_ordinal to indicate whether the row parameter is
983            the row id or the ordinal
984    
985            * Thuban/Model/transientdb.py (TransientTableBase.RowIdToOrdinal)
986            (TransientTableBase.RowOrdinalToId)
987            (AutoTransientTable.RowIdToOrdinal)
988            (AutoTransientTable.RowOrdinalToId): Same new methods as in
989            PostGISTable.
990            (TransientTableBase.ReadRowAsDict, TransientTableBase.ReadValue)
991            (AutoTransientTable.ReadRowAsDict, AutoTransientTable.ReadValue):
992            Same new parameter as in PostGISTable.
993    
994            * Thuban/Model/table.py (DBFTable.RowIdToOrdinal)
995            (DBFTable.RowOrdinalToId, MemoryTable.RowIdToOrdinal)
996            (MemoryTable.RowOrdinalToId): Same new methods as in PostGISTable.
997            (DBFTable.ReadValue, DBFTable.ReadRowAsDict)
998            (MemoryTable.ReadValue, MemoryTable.ReadRowAsDict): Same new
999            parameter as in PostGISTable.
1000    
1001            * Thuban/UI/tableview.py (DataTable.RowIdToOrdinal)
1002            (DataTable.RowOrdinalToId): New methods to convert between row ids
1003            and row ordinals.
1004            (TableGrid.SelectRowById): New method to select a row based on its
1005            ID as opposed to its ordinal
1006            (DataTable.GetValue, TableGrid.OnRangeSelect)
1007            (TableGrid.OnSelectCell, LayerTableGrid.select_shapes)
1008            (QueryTableFrame.OnQuery, QueryTableFrame.get_selected)
1009            (LayerTableFrame.__init__): Convert between row ids and row
1010            ordinals as appropriate
1011    
1012            * test/postgissupport.py (PostGISDatabase.__init__): Add
1013            doc-string.
1014            (PostGISDatabase.initdb): The optional third item in a tuple in
1015            tables is now a (key, value) list with additional arguments to
1016            pass to upload_shapefile
1017            (upload_shapefile): New parameter gid_offset to allow gids that
1018            are not the same as the shapeids in the shapefile
1019            (PostgreSQLServer.get_default_static_data_db): Use the new
1020            gid_offset to make the gids in landmarks 1000 higher than the
1021            shapeids in the shapefile
1022    
1023            * test/test_viewport.py
1024            (TestViewportWithPostGIS.test_find_shape_at_point): Adapt to the
1025            new shapeids in the landmarks table
1026    
1027            * test/test_transientdb.py
1028            (TestTransientTable.run_iceland_political_tests)
1029            (TestTransientTable.test_transient_joined_table): Add tests for
1030            the new table methods and new keywords arguments.
1031    
1032            * test/test_postgis_db.py
1033            (TestPostGISTable.test_read_row_as_dict_row_count_mode)
1034            (TestPostGISTable.test_read_value_row_count_mode)
1035            (TestPostGISTable.test_row_id_to_ordinal)
1036            (TestPostGISTable.test_row_oridnal_to_id): New test for the new
1037            table methods and the new arguments
1038            (TestPostGISShapestorePoint.test_shapes_in_region)
1039            (TestPostGISShapestorePoint.test_shape_raw_data)
1040            (TestPostGISShapestorePoint.test_shape_points)
1041            (TestPostGISShapestorePoint.test_shape_shapeid)
1042            (TestPostGISShapestorePoint.test_all_shapes)
1043            (TestPostGISTable.test_simple_query)
1044            (TestPostGISTable.test_simple_query)
1045            (TestPostGISTable.test_simple_query)
1046            (TestPostGISTable.test_read_value)
1047            (TestPostGISTable.test_read_row_as_dict): Adapt to the new
1048            shapeids in the landmarks table
1049    
1050            * test/test_memory_table.py
1051            (TestMemoryTable.test_read_row_as_dict_row_count_mode)
1052            (TestMemoryTable.test_read_value_row_count_mode)
1053            (TestMemoryTable.test_row_id_to_ordinal)
1054            (TestMemoryTable.test_row_oridnal_to_id): New test for the new
1055            table methods and the new arguments
1056    
1057            * test/test_dbf_table.py
1058            (TestDBFTable.test_read_row_as_dict_row_count_mode)
1059            (TestDBFTable.test_read_value_row_count_mode)
1060            (TestDBFTable.test_row_id_to_ordinal)
1061            (TestDBFTable.test_row_oridnal_to_id): New test for the new table
1062            methods and the new arguments
1063    
1064    2003-08-26  Bernhard Herzog  <[email protected]>
1065    
1066            * Thuban/Model/postgisdb.py (PostGISShapeStore.BoundingBox): Use a
1067            more postgis specific but much faster method to get the bounding
1068            box
1069    
1070    2003-08-26  Bernhard Herzog  <[email protected]>
1071    
1072            * Thuban/Model/postgisdb.py (PostGISTable.Title)
1073            (PostGISShapeStore.AllShapes): Add these missing methods.
1074            (PostGISShapeStore.ShapesInRegion): No need to raise
1075            StopIteration. We can simply return
1076    
1077            * test/test_postgis_db.py (TestPostGISTable.test_title)
1078            (TestPostGISShapestorePoint.test_all_shapes): New tests for the
1079            new methods
1080    
1081  2003-08-25  Bernhard Herzog  <[email protected]>  2003-08-25  Bernhard Herzog  <[email protected]>
1082    
1083          * Thuban/Model/postgisdb.py (shapetype_map): Add MUTLIPOLYGON.          * Thuban/Model/postgisdb.py (shapetype_map): Add MUTLIPOLYGON.
# Line 966  Line 2046 
2046    
2047          * Thuban/Model/range.py, Thuban/version.py: Remove the #! line as          * Thuban/Model/range.py, Thuban/version.py: Remove the #! line as
2048          it annoys lintian which warns about these files not being          it annoys lintian which warns about these files not being
2049          executable. The #1 isn't necessary here since if you absolutely          executable. The #! isn't necessary here since if you absolutely
2050          must execute them you can always say "python <filename>".          must execute them you can always say "python <filename>".
2051    
2052          * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Remove          * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Remove

Legend:
Removed from v.1657  
changed lines
  Added in v.1878

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26