/[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 1582 by bh, Tue Aug 12 15:08:40 2003 UTC revision 1895 by frank, Fri Oct 31 10:13:32 2003 UTC
# Line 1  Line 1 
1    2003-10-31  Frank Koormann <[email protected]>
2    
3            Added two items to legend popup menu: Remove Layer and Show Layer Table
4    
5            * Thuban/UI/legend.py (LegendPanel._OnRemoveLayer,
6            LegendPanel._OnShowTable): New event handlers, call the corresponding
7            mainwindow methods.
8            (LegendTree._OnRightClick): Added items to popup menu.
9    
10    2003-10-30  Bernhard Herzog  <[email protected]>
11    
12            * Thuban/UI/dialogs.py (ThubanFrame.__init__): Handle
13            EVT_WINDOW_DESTROY
14            (ThubanFrame.OnDestroy): New. Handler for EVT_WINDOW_DESTROY. Does
15            nothing but is convenient for the derived classes.
16    
17            * Thuban/UI/tableview.py
18            (TableFrame.OnDestroy, LayerTableFrame.OnDestroy): New.
19            Unsubscribe the messages here not in OnClose because that might
20            get called multiple times. Fixes RT #2196
21            (TableFrame.OnClose, LayerTableFrame.OnClose): Removed. Not needed
22            anymore.
23    
24            * README: Update the minimum requirement for wxPython. Since we
25            now use the EVT_WINDOW_DESTROY event, we need at least 2.4.0.4,
26            the version in which that was introduced for all platforms
27    
28    2003-10-30  Frank Koormann <[email protected]>
29    
30            * Thuban/UI/join.py (JoinDialog.OnJoin): Wrapped the major parts of
31            the join process in a ThubanBeginBusyCursor, ThubanEndBusyCursor
32            frame.
33    
34    2003-10-30  Jan-Oliver Wagner <[email protected]>
35    
36            Improved APR import extension, added further EPSG definitions
37            and some cleanup regarding string class.
38    
39            * test/test_proj.py (TestProjection.test_get_projection_units_geo):
40            Added test for alias 'longlat'.
41    
42            * Resources/Projections/epsg-deprecated.proj: New. Contains
43            deprecated EPSG definitions.
44    
45            * Extensions/importAPR/odb.py (ODBBaseObject.TreeInfo): Added
46            the variable names for objects.
47    
48            * Extensions/importAPR/apr.py (APR_BLnSym, APR_BMkSym, APR_BShSym): New.
49            Copied from importAPR and provided with documentation.
50    
51            * Extensions/importAPR/importAPR.py (APR_BLnSym, APR_BMkSym, APR_BShSym):
52            Moved to apr.py.
53            (APR_View): Added object ref 'ITheme'.
54    
55            * Thuban/Lib/fileutil.py, Thuban/UI/proj4dialog.py: Replaced string
56            split function by corresponding use of the string class method.
57    
58            * Thuban/Model/xmlwriter.py: Replaced string replace function by
59            corresponding string method.
60    
61    2003-10-29  Bernhard Herzog  <[email protected]>
62    
63            * Thuban/UI/baserenderer.py
64            (BaseRenderer.draw_shape_layer_incrementally): Speed up the
65            special case of a classification that only has the default group
66    
67    2003-10-27  Bernhard Herzog  <[email protected]>
68    
69            * po/fr.po, po/es.po: Updated translations from Daniel Calvelo
70    
71            * po/de.po: Update.
72    
73            * Thuban/UI/application.py
74            (ThubanApplication.ShowExceptionDialog): Handle translation of the
75            dialog message properly
76    
77    2003-10-27  Bernhard Herzog  <[email protected]>
78    
79            Rework how localization works so that we use wx's translation
80            functions when running Thuban as a normal application but not when
81            we don't need any UI, such as in the test suite. See the comment
82            in Thuban/__init__.py for details
83    
84            * Thuban/__init__.py (_): Add one level of indirection to make the
85            translation handling more flexible and to make it possible to use
86            either wx's translation services or not.
87            (gettext_identity, translation_function_installed)
88            (install_translation_function): New function to help with this
89    
90            * Thuban/UI/__init__.py: Install the wx specific translation
91            function if it's OK to do that
92    
93            * test/support.py (initthuban): Install a dummy translation
94            function so that importing Thuban.UI doesn't install a wx specific
95            one for which would need to import wxPython
96    
97    2003-10-27  Bernhard Herzog  <[email protected]>
98    
99            * HOWTO-Release: Source archives should be created first and the
100            binary packages should be created from the source archives.
101            There's an official debian package now so there's no need to test
102            the rpm on debian anymore
103    
104    2003-10-27  Bernhard Herzog  <[email protected]>
105    
106            Several rendering changes:
107    
108             - Render the selection into a separate bitmap so that only that
109               bitmap needs to be redrawn when the selection changes
110    
111             - Render incrementally showing previews and allowing interaction
112               before rendering is complete
113    
114             - Update the renderer interface a bit. Most parameters of
115               RenderMap are now parameters of the constructor
116    
117            * Thuban/UI/baserenderer.py (BaseRenderer.__init__): Add the map
118            and the update region as parameters. Update the doc-string
119            (BaseRenderer.render_map_incrementally): New. Generator function
120            to renders the map incrementally
121            (BaseRenderer.render_map): Remove the map argument (it's now in
122            the constructor) and simply iterate over the
123            render_map_incrementally generator to draw the map.
124            (BaseRenderer.draw_shape_layer_incrementally)
125            (BaseRenderer.draw_shape_layer): Renamed to
126            draw_shape_layer_incrementally and changed into a generator that
127            yields True every 500 shapes. Used by render_map_incrementally to
128            render shape layers incrementally
129    
130            * Thuban/UI/renderer.py (ScreenRenderer.RenderMap): Removed the
131            map and region parameters which are now in the constructor
132            (ScreenRenderer.RenderMapIncrementally): New. Public frontend for
133            the inherited render_map_incrementally.
134            (BaseRenderer.draw_shape_layer): Removed.
135            (ScreenRenderer.draw_selection_incrementally): New. The selection
136            drawing part of the removed draw_shape_layer as a generator
137            (ScreenRenderer.layer_shapes): Update because of the region
138            parameter change
139            (ExportRenderer.__init__): New. Extend the inherited constructor
140            with the destination region for the drawing
141            (ExportRenderer.RenderMap): Removed the map and region parameters
142            which are now in the constructor
143    
144            * Thuban/UI/view.py (MapCanvas.PreviewBitmap): New. Return a
145            bitmap suitable for a preview in a tool
146            (CanvasPanTool.MouseMove): Use the PreviewBitmap method to get the
147            bitmap
148            (MapPrintout.draw_on_dc): Adapt to new renderer interface
149            (MapCanvas.OnPaint): Handle drawing the selection bitmap if it
150            exists
151            (MapCanvas.OnIdle): Update the logic to deal with incremental
152            rendering and the selection bitmap
153            (MapCanvas._do_redraw): Handle the instantiation of the render
154            iterator and the redraws during rendering
155            (MapCanvas._render_iterator): New. Generator to incrementally
156            redraw both bitmaps
157            (MapCanvas.Export): Adapt to new renderer interface.
158            (MapCanvas.full_redraw): Reset the selection bitmap and the
159            renderer iterator too
160            (MapCanvas.redraw_selection): New. Force a redraw of the selection
161            bitmap
162            (MapCanvas.shape_selected): Only redraw the selection bitmap
163    
164            * test/test_baserenderer.py
165            (TestBaseRenderer.test_polygon_no_projection)
166            (TestBaseRenderer.test_raster_no_projection)
167            (TestBaseRenderer.test_point_map_projection)
168            (TestBaseRenderer.test_point_layer_and_map_projection)
169            (TestBaseRenderer.test_point_layer_projection)
170            (TestBaseRenderer.test_point_with_classification): Adapt to new
171            renderer interface
172    
173    2003-10-24  Bernhard Herzog  <[email protected]>
174    
175            * libraries/thuban/wxproj.cpp (draw_polygon_shape)
176            (point_in_polygon_shape, shape_centroid): Raise an exception if
177            the shape can't be read. Previously invalid shape ids would lead
178            to a segfault.
179    
180            * test/test_wxproj.py (TestShapeCentroid.test_invalid_shape_id):
181            New. test whether an exception is raised for invalid shape ids
182    
183    2003-10-24  Jan-Oliver Wagner <[email protected]>
184    
185            * Thuban/Model/proj.py (Projection.GetProjectedUnits): Added 'longlat'
186            as alias for 'latlong'.
187    
188            * Thuban/UI/projdialog.py (ProjFrame.__init__): Added 'longlat'
189            as alias for 'latlong'.
190    
191    2003-10-24  Jan-Oliver Wagner <[email protected]>
192    
193            * Thuban/UI/projdialog.py (ProjFrame.proj_selection_changed): Set
194            the projection even for the UnknownPanel.
195            (UnknownProjPanel.__init__): Define the text and create the textctrl
196            widget.
197            (UnknownProjPanel._DoLayout): Replaced static text widget by the
198            textctrl created in __init__.
199            (UnknownProjPanel.SetProjection): Set the text for the text ctrl
200            including the parameters of the projection.
201            
202    2003-10-24  Jan-Oliver Wagner <[email protected]>
203    
204            * Resources/Projections/epsg.proj: New. This is a list of
205            EPSG codes with parameters for proj. The list has been
206            generated using devtools/create_epsg.py based on the
207            file nad/epsg of the proj 4.4.7 package. Four projection
208            definitions have been deleted as they are not accepted by proj:
209            "CH1903+ / LV95", "Bern 1898 (Bern) / LV03C", "CH1903 / LV03"
210            and "HD72 / EOV".
211    
212    2003-10-22  Bernhard Herzog  <[email protected]>
213    
214            Some more tweaks to the projection dialog which should fix RT
215            #1886.
216    
217            * Thuban/UI/projlist.py (ProjectionList.Destroy): Unsubscribe from
218            the ProjFile's messages and call the base class methods correctly
219            (ProjectionList.SelectProjection): Set the wxLIST_STATE_FOCUSED
220            flag on the newly selected item too. Otherwise some other item is
221            focused and the first time the focus is moved with the keyboard
222            the selection moves in unexpected ways.
223    
224            * Thuban/UI/projdialog.py (ProjFrame.__init__): Do not set the
225            focus on the OK button, only on the projection list. That way the
226            list really has the focus initially
227            (ProjFrame.OnClose): Call the projection list's Destroy method to
228            make it unsubscribe all messages
229    
230    2003-10-21  Bernhard Herzog  <[email protected]>
231    
232            Rework the projection dialog to fix a few bugs, including RT 2166
233            and most of 2168
234    
235            * Thuban/UI/projlist.py: New. The class ProjectionList is a
236            special wxListCtrl to show a list of projections in a more MVC
237            fashion
238    
239            * Thuban/UI/projdialog.py (ProjFrame): Substantial changes
240            throughout the class. The main change is to use the ProjectionList
241            class instead of a normal wxListBox. Also, add an explicit
242            "Unknown" projection to the projection choice control.
243            (ProjPanel.__init__): Add an "unknown" ellipsoid
244            (TMPanel.__init__, LCCPanel.__init__): Tweak the order of
245            instantiation of the panel's controls to make the tab-order more
246            natural
247    
248    2003-10-21  Bernhard Herzog  <[email protected]>
249    
250            * test/test_load.py (TestSingleLayer.file_contents)
251            (TestSingleLayer.test): Add non-ascii characters to the titles of
252            session, map and layer. This is effectively a port of the
253            TestUnicodeStrings test in test_load_0_8.py which for some reason
254            was only added there.
255    
256            * test/test_load_0_9.py (TestSingleLayer.file_contents)
257            (TestSingleLayer.test): Same as in test_load.py: add non-ascii
258            characters to the titles of session, map and layer,.
259    
260    2003-10-21  Bernhard Herzog  <[email protected]>
261    
262            Add EPSG projection handling to .thuban files
263    
264            * test/test_save.py (SaveSessionTest.dtd)
265            (SaveSessionTest.testEmptySession)
266            (SaveSessionTest.testLayerProjection)
267            (SaveSessionTest.testRasterLayer)
268            (SaveSessionTest.testClassifiedLayer)
269            (SaveSessionTest.test_dbf_table)
270            (SaveSessionTest.test_joined_table)
271            (SaveSessionTest.test_save_postgis): Update to 1.0-dev namespace
272            (SaveSessionTest.testSingleLayer): Update to 1.0-dev namespace and
273            use a and epsg projection to test saving them
274    
275            * test/test_load.py (LoadSessionTest.dtd): Update to 1.0-dev
276            namespace
277            (TestLayerVisibility.file_contents, TestLabels.file_contents)
278            (TestLayerProjection.file_contents)
279            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
280            (TestPostGISLayer.file_contents)
281            (TestPostGISLayerPassword.file_contents)
282            (TestLoadError.file_contents, TestLoadError.test): Update to use
283            1.0-dev namespace
284            (TestSingleLayer.file_contents, TestSingleLayer.test): Update to
285            use 1.0-dev namespace and use an EPSG projection to test whether
286            loading it works
287    
288            * test/test_load_0_9.py: New. Effectively a copy of test_load.py
289            as of Thuban 0.9. These are now tests to determine whether Thuban
290            can still read files generated by Thuban 0.9
291    
292            * Thuban/Model/save.py (SessionSaver.write)
293            (SessionSaver.write_session): Use the 1.0 dtd and 1.0-dev
294            namespace
295            (SessionSaver.write_projection): Write the projection's epsg
296            attribute
297    
298            * Thuban/Model/load.py (SessionLoader.__init__): Also accept the
299            thuban-1.0-dev.dtd namespace
300            (SessionLoader.check_attrs): Allow a callable object as conversion
301            too
302            (SessionLoader.start_projection, SessionLoader.end_projection)
303            (SessionLoader.start_parameter): Handle the epsg attribute and
304            rename a few instance variables to lower case
305    
306            * Resources/XML/thuban-1.0.dtd: New. Only difference to
307            thuban-0.9.dtd is the epsg attribute for projections.
308    
309    2003-10-21  Bernhard Herzog  <[email protected]>
310    
311            * test/runtests.py (main): Let the user specify which tests to run
312            on the command line
313    
314            * test/support.py (ThubanTestResult.getDescription): Override to
315            give a better short description. The description can be used as a
316            parameter to run_tests to run that particular test in isolation.
317    
318    2003-10-21  Frank Koormann   <[email protected]>
319    
320            Popup menu for legend. Scheduled for the 1.2 release this was too
321            simple to implement: The popup menu is bound to the legend tree, while
322            the events are hanlded by its anchestor, the legend panel. This
323            allows reuse of all the event handlers already implemented for the
324            legend toolbar buttons.
325    
326            * Thuban/UI/legend.py (LegendPanel.__init__): EVT_MENU macros
327            to add handlers for the events issued by the popup menu.
328            (LegendPanel._OnToggleVisibility): Handler for toggling layer
329            visibility event
330            (LegendPanel._OnProjection): Handler for layer projection event.
331            (LegendTree.__init__): Added EVT_TREE_ITEM_RIGHT_CLICK
332            (LegendTree._OnRightClick): Event handler for right click, select item
333            and pop up menu.
334            (LegendTree.ToggleVisibility): Toggle layer visibility
335            (LegendTree.LayerProjection): Raise layer projection dialog for
336            current layer.
337    
338    2003-10-21  Bernhard Herzog  <[email protected]>
339    
340            * Resources/Projections/defaults.proj: Use correct DOCTYPE
341            declaration. The top-level element is projectionlist not projfile
342    
343    2003-10-20  Bernhard Herzog  <[email protected]>
344    
345            * Thuban/UI/projdialog.py (ProjFrame.write_proj_file): New. helper
346            method to write a projfile and display a busy cursor and error
347            dialogs.
348            (ProjFrame._OnSave, ProjFrame._OnAddToList, ProjFrame._OnImport)
349            (ProjFrame._OnExport, ProjFrame._OnRemove): Use write_proj_file
350            (ProjFrame.__FillAvailList): Translate "<None>" too and display a
351            busy cursor while loading the user and system prj files.
352    
353    2003-10-16  Bernhard Herzog  <[email protected]>
354    
355            * Thuban/Model/resource.py (projfile_cache): Introduce a cache for
356            ProjFile objects
357            (clear_proj_file_cache): New function to clear the cache. Mainly
358            useful for use by the test suite
359            (read_proj_file): Use the cache.
360    
361            * test/test_proj.py (TestProjFile): Clarify the doc-string
362            (ProjFileReadTests): Update doc-string
363            (ProjFileReadTests.test_get_system_proj_file): Check whether the
364            system proj files is cached.
365            (ProjFileLoadTestCase): New base class for the proj file tests
366            derived from support.FileLoadTestCase to provide some common
367            behavior.
368            (TestLoadingProjFile)
369            (TestLoadingProjFileWithEmptyProjectionlist.file_contents)
370            (TestProjFileWithInvalidParameters.file_contents): Derive from
371            ProjFileLoadTestCase
372            (TestLoadingProjFile.test_caching): New. Test whether the cache
373            works
374    
375    2003-10-16      Silke Reimer    <[email protected]>
376    
377            * debian/*: New directory with configuration files for building a thuban
378              deb-package.
379    
380    2003-10-14  Bernhard Herzog  <[email protected]>
381    
382            * test/test_proj.py: Execute support.run_tests when run as
383            __main__ so that missing unsubscribes are detected
384            (TestProjFile.tearDown): Destroy the proj_file properly
385    
386    2003-10-14  Bernhard Herzog  <[email protected]>
387    
388            * Thuban/Model/messages.py (PROJECTION_ADDED)
389            (PROJECTION_REPLACED, PROJECTION_REMOVED): New message types for
390            the ProjFile objects
391    
392            * Thuban/Model/proj.py (ProjFile): Derive from Publisher so we can
393            easily send messages when the projections change
394            (ProjFile.Add, ProjFile.Remove, ProjFile.Replace): Issue messages
395            when the change was successful
396    
397            * test/test_proj.py (TestProjFile.setUp): Subscribe to some of the
398            proj file messages
399            (TestProjFile.test_add_remove)
400            (TestProjFile.test_remove_non_existing)
401            (TestProjFile.test_replace)
402            (TestProjFile.test_replace_non_existing): Test whether the right
403            messages are sent
404    
405    2003-10-14  Bernhard Herzog  <[email protected]>
406    
407            * test/test_proj.py (TestProjFile.test): Refactor into several
408            tests
409            (TestProjFile.test_add_remove)
410            (TestProjFile.test_remove_non_existing)
411            (TestProjFile.test_replace)
412            (TestProjFile.test_replace_non_existing): Some of the new
413            individual test cases
414            (TestProjFileSimple): New class for the rest of the test cases
415            that came out of the refactoring
416            (ProjFileTest): Derive from xmlsupport.ValidationTest so that the
417            derived classes don't have to
418    
419    2003-10-13  Bernhard Herzog  <[email protected]>
420    
421            Add an optional EPSG code to the projection objects and extend the
422            .proj file format accordingly.
423    
424            * Resources/XML/projfile.dtd (element projection): Add epsg
425            attribute
426    
427            * Thuban/Model/proj.py (Projection.__init__): New parameter and
428            instance variable epsg. Update doc-string
429            (Projection.EPSGCode, Projection.Label): New methods to provide
430            access to EPSG code and a label for use in dialogs
431    
432            * Thuban/Model/resource.py (ProjFileReader.start_projection)
433            (ProjFileReader.end_projection, ProjFileSaver.write_projfile):
434            Handle the epsg code attribute when reading or writing proj files
435    
436            * Thuban/UI/projdialog.py (ProjFrame._OnSave)
437            (ProjFrame._OnAddToList, ProjFrame.__DoOnProjAvail)
438            (ProjFrame.__FillAvailList): Use the projection's Label method to
439            get the string for the list box
440    
441            * test/test_proj.py (TestProjection.test_label)
442            (TestProjection.test_label_epsg)
443            (TestProjection.test_epsgcode_for_non_epsg_projection)
444            (TestProjection.test_epsgcode_for_real_epsg_projection): New tests
445            for the label and EPSGCode methods
446            (WriteProjFileTests.doTestWrite, WriteProjFileTests.test_write)
447            (WriteProjFileTests.test_write_empty_file): Create the ProjFile
448            objects in the test cases and put the expected contents into the
449            test case methods too. Update doTestWrite accordingly
450            (TestLoadingProjFile)
451            (TestLoadingProjFileWithEmptyProjectionlist): New classes with the
452            read tests from TestProjFile.
453            (TestProjFile.doTestRead, TestProjFile.testRead): Removed. These
454            tests are now in the new classes.
455            (sample_projfile, sample_projfile_data)
456            (sample_projfile2, sample_projfile_data2): Removed. Not used
457            anymore.
458            (TestProjFile.test_read_unreadable_file): No need to reset the
459            permissions at the end anymore since we use a unique filename
460    
461    2003-10-13  Bernhard Herzog  <[email protected]>
462    
463            * test/test_proj.py: Some more refactoring of the test cases
464            (ProjFileTest): New base class for the proj file tests.
465            (TestProjFile): Derive from ProjFileTest
466            (TestProjFile.test_read_unreadable_file)
467            (TestProjFile.test_read_empty_file, TestProjFile.doTestRead): Use
468            the new filename method to get a unique filename
469            (TestProjFile.doTestWrite, TestProjFile.testWrite): Removed.
470            (WriteProjFileTests): New class for proj file write tests.
471            Contains the write test that were in TestProjFile originally.
472    
473    2003-10-13  Bernhard Herzog  <[email protected]>
474    
475            * test/test_proj.py (TestProjFile.testRead)
476            (TestProjFile.test_read_non_existing_file)
477            (TestProjFile.test_read_unreadable_file)
478            (TestProjFile.test_read_empty_file): Split into several methods.
479    
480    2003-10-10  Bernhard Herzog  <[email protected]>
481    
482            * Thuban/UI/sizers.py: New file with custom sizers.
483    
484            * Thuban/UI/projdialog.py (ProjFrame.build_dialog): Instantiate
485            all projection type specific panels and put them into a
486            NotebookLikeSizer. This way the dialog doesn't change its size
487            when a different projection is selected
488            (ProjFrame.__init__): Rename projection_panels
489            projection_panel_defs and reuse projection_panels for a list of
490            the instantiated panels.
491            (ProjFrame._show_proj_panel, ProjFrame.__DoOnProjAvail)
492            (ProjFrame.__DoOnProjChoice): Changes due to the new handling of
493            the panels
494            (UnknownProjPanel._DoLayout): Place the newlines in the message
495            differently to make the panel narrower.
496            (TMPanel._DoLayout): Layout the parameters in one column.
497    
498    2003-10-10  Bernhard Herzog  <[email protected]>
499    
500            * Thuban/UI/projdialog.py (ProjFrame.build_dialog): New method
501            that contains all the setup for the dialog's widgets, layout and
502            event handling.
503            (__): Call build_dialog to build the dialog.
504            (ProjFrame.__set_properties, ProjFrame.__do_layout): Removed.
505            Their functionality is now in build_dialog
506            (ProjFrame.__VerifyButtons, ProjFrame.__VerifyButtons)
507            (ProjFrame.__DoOnProjAvail, ProjFrame.__DoOnProjAvail)
508            (ProjFrame.__DoOnProjChoice): Small updates due to slightly
509            different widget names and hierarchy introduced with build_dialog.
510    
511    2003-10-10  Bernhard Herzog  <[email protected]>
512    
513            * README: Fix typo.
514    
515    2003-10-09  Bernhard Herzog  <[email protected]>
516    
517            * Thuban/Model/proj.py (ProjFile.Add): Do not check whether the
518            projection is already in the list. This is *a lot* faster when
519            loading files with hundreds of projections since it saves a linear
520            search. OTOH this will allow adding the same projection to the
521            user.proj file multiple times in the projection dialog but we'll
522            deal with that later
523    
524    2003-10-09  Jan-Oliver Wagner <[email protected]>
525    
526            * devtools: New. Directory for developer tools that are not intended
527            for the regular user.
528    
529            * devtools/create_epsg.py: New. Convert the epsg file of proj into
530            a python .proj file.
531    
532    2003-10-09  Bernhard Herzog  <[email protected]>
533    
534            * test/test_proj.py
535            (TestProjection.test_get_parameter_without_equals_sign): New. Test
536            whether GetParameter handles parameters without "=" sign correctly
537    
538            * Thuban/Model/proj.py (Projection.GetParameter): Handle
539            parameters that do not contain a "=". Update the doc-string
540    
541    2003-10-08  Bernhard Herzog  <[email protected]>
542    
543            * Thuban/UI/projdialog.py (ProjFrame.__set_properties): Remove the
544            length limit on the projname text control
545    
546    2003-10-08  Bernhard Herzog  <[email protected]>
547    
548            * test/test_proj.py (TestProjection.test_get_projection_units_geo)
549            (TestProjection.test_get_projection_units_normal): New. Tests for
550            the Projection.GetProjectedUnits method
551    
552    2003-10-08  Jan-Oliver Wagner <[email protected]>
553    
554            * Thuban/Model/resource.py (get_user_proj_file): small bug-fix:
555            Added missing 'val' parameter.
556    
557    2003-10-08  Bernhard Herzog  <[email protected]>
558    
559            * Thuban/UI/projdialog.py (ProjFrame.__DoOnProjAvail): When the
560            projection type of the currently selected projection is not known,
561            i.e. there's no panel for it, use the UnknownProjPanel
562            (ProjFrame.__DoOnProjChoice, ProjFrame._show_proj_panel): Split
563            the actual replacing of the proj panel into the new method
564            _show_proj_panel.
565            (UnknownProjPanel): Add doc-string.
566            (UnknownProjPanel._DoLayout): Insert a newline into the text so
567            that the panel is not so wide.
568    
569    2003-10-08  Bernhard Herzog  <[email protected]>
570    
571            * Thuban/Model/resource.py (read_proj_file): Return the warnings
572            too. Update the doc-string
573            (get_proj_files): Removed. It wasn't used anywhere
574            (get_system_proj_files, get_system_proj_file): Rename to
575            get_system_proj_file and return the ProjFile object and not a list
576            of ProjFile objects. Update the callers.
577            (get_user_proj_files, get_user_proj_file): Rename to
578            get_user_proj_file return the ProjFile object and not a list of
579            ProjFile objects. Update the callers.
580            (ProjFileReader.__init__): New instance variable for the warnings.
581            Rename the __pf ivar to projfile. Update the methods referring to
582            __pf
583            (ProjFileReader.end_projection): Catch any errors raised when
584            instantiating the projection and record that as an error. The
585            projection will not be in the final ProjFile object.
586            (ProjFileReader.GetWarnings): New method to return the warnings.
587    
588            * Thuban/UI/projdialog.py (ProjFrame.show_warnings): New method to
589            show the warnings from the projfile reader
590            (ProjFrame._OnImport): Deal with any warnings returned by
591            read_proj_file
592            (ProjFrame.__FillAvailList): Deal with any warnings returned by
593            get_system_proj_file or get_user_proj_file.
594    
595            * test/test_proj.py (TestProjFile.doTestRead): Check the warnings.
596            (TestProjFileWithInvalidParameters.file_contents): New test cases
597            to test whether read_proj_file handles invalid projection
598            parameters correctly
599            (TestProjFile.test_get_system_proj_file): New. Simple test for
600            resource.get_system_proj_file
601    
602    2003-10-07  Bernhard Herzog  <[email protected]>
603    
604            * test/test_derivedshapestore.py
605            (TestDerivedShapeStoreExceptions.tearDown): Clear the session
606            properly so that the temporary directories get deleted correctly
607    
608    2003-10-06  Bernhard Herzog  <[email protected]>
609    
610            Handle the title changes in a proper MVC way.
611    
612            * Thuban/UI/mainwindow.py (MainWindow.__init__): Subscribe to the
613            canvas' TITLE_CHANGED messages
614            (MainWindow.update_title): New. Update the main window's title
615            (MainWindow.__SetTitle): Removed. Use update_title instead.
616            (MainWindow.SetMap): Use update_title instead of __SetTitle
617            (MainWindow.RenameMap): Do change the window title explicitly
618            here. That's handled in a proper MVC way now.
619            (MainWindow.title_changed): New. Subscriber for the TITLE_CHANGED
620            messages
621    
622            * Thuban/Lib/connector.py (Conduit): New class to help classes
623            that forward messages
624    
625            * Thuban/UI/viewport.py: Forward the map's TITLE_CHANGED messages
626            (ViewPort): Derive from Conduit instead of Publisher
627            (ViewPort.Subscribe, ViewPort.Unsubscribe): Use the new base class
628            when calling the inherited versions
629            (ViewPort._subscribe_map, ViewPort._unsubscribe_map): New helper
630            methods to subscribe and unsubscribe map messages
631            (ViewPort.SetMap, ViewPort.Destroy): Use the new helper methods to
632            handle the map subscriptions
633            (ViewPort.Map, ViewPort.map_projection_changed)
634            (ViewPort.layer_projection_changed): Add or update doc-strings
635    
636            * test/test_connector.py (TestPublisher.test_issue_simple): Fix
637            typo
638            (MyConduit): Helper class for the Conduit test.
639            (TestConduit): Test cases for Conduit
640    
641            * test/test_connector.py: Use support.run_tests as main.
642    
643            * test/test_viewport.py (ViewPortTest.setUp): Also subscribe to
644            the TITLE_CHANGED messages
645            (ViewPortTest.test_forwarding_title_changed): New test to check
646            whether the viewport forwards the map's TITLE_CHANGED messages
647            (TestViewportWithPostGIS.tearDown): Call the map's Destroy method
648            after the port's because the latter may require a still functional
649            map.
650    
651    2003-10-06  Bernhard Herzog  <[email protected]>
652    
653            * Thuban/UI/application.py (ThubanApplication.maps_changed): Add
654            doc-string
655    
656    2003-10-06  Bernhard Herzog  <[email protected]>
657    
658            * test/test_viewport.py (ViewPortTest.setUp)
659            (SimpleViewPortTest.test_init_with_size): Move the test for the
660            initial size as a constructor parameter from ViewPortTest.setUp
661            method to a new separate test in SimpleViewPortTest.
662    
663    2003-10-06  Bernhard Herzog  <[email protected]>
664    
665            * test/test_viewport.py (MockView): New class derived from
666            ViewPort with a mock implementation of GetTextExtent to be used in
667            the test cases
668            (ViewPortTest.setUp): Use MockView instead of ViewPort
669    
670            * Thuban/UI/viewport.py (ViewPort.GetTextExtent): Turn this method
671            into what would be a "pure virtual function" in C++: always raise
672            NotImplementedError. Mock implementations for test cases don't
673            belong into the real code
674    
675    2003-10-02  Bernhard Herzog  <[email protected]>
676    
677            * test/test_layer.py (TestLayer.test_empty_layer): Explicitly
678            close the dbf file we create so that it's contents have been
679            written properly.
680    
681            * libraries/shapelib/shptree.c, libraries/shapelib/shpopen.c,
682            libraries/shapelib/shapefil.h, libraries/shapelib/dbfopen.c:
683            Update to shapelib 1.2.10
684    
685    2003-10-01  Jan-Oliver Wagner <[email protected]>
686    
687            * Thuban/UI/tree.py, Thuban/UI/main.py: Remove the #! line as
688            it annoys lintian which warns about these files not being
689            executable. The #! isn't necessary here since if you absolutely
690            must execute them you can always say "python <filename>".
691    
692    2003-09-26  Bernhard Herzog  <[email protected]>
693    
694            * Thuban/Model/classgen.py (GenQuantiles0): Removed since it's
695            only used in GREAT-ER but not used in Thuban itself. When GREAT-ER
696            is ported to a newer the import will fail, so it should be noticed
697            immediately that this function is gone.
698            Fixes RT#1919
699    
700    2003-09-26  Bernhard Herzog  <[email protected]>
701    
702            Add a DTD for the projection files and make thuban write valid
703            projection files
704    
705            * Resources/XML/projfile.dtd: New. DTD for thuban's projection
706            files
707    
708            * Thuban/Model/resource.py (ProjFileSaver.write): Use
709            'projectionlist' as the name in the document type declaration so
710            that it matches the element type of the root element.
711    
712            * test/test_proj.py (sample_projfile, sample_projfile2): Use
713            'projectionlist' as the name in the document type declaration just
714            as it is done now in the files thuban would write
715            (sample_projfile, sample_projfile_data): Fix spelling of
716            "Mercator"
717            (TestProjFile.doTestWrite): Validate the written and the expected
718            XML data
719            (TestProjFile): Derive from ValidationTest so that we can run xml
720            validation tests
721    
722    2003-09-24  Bernhard Herzog  <[email protected]>
723    
724            * Thuban/UI/renderer.py (ExportRenderer.render_legend): Do not
725            modify the list returned by map.Layers() in place since it is the
726            actual list of layers used by the map.
727    
728    2003-09-23  Jan-Oliver Wagner <[email protected]>
729    
730            * Doc/manual/thuban-manual.xml: Added subsection to chapter
731            Extensions to describe the extensions coming with the Thuban
732            standard package (gns2shp and importAPR).
733    
734    2003-09-23  Bernhard Herzog  <[email protected]>
735    
736            * libraries/thuban/wxproj.cpp (project_point): if there's an
737            inverse but no forward projection, convert to degrees after
738            applying the inverse projection. Fixes RT#2096
739    
740            * test/test_wxproj.py: New. Test cases for wxproj.so. One test
741            implicitly tests for the fix to RT#2096
742    
743            * test/support.py (FloatComparisonMixin.assertFloatSeqEqual):
744            Check that the sequences have the same lengths
745    
746            * Resources/Projections/defaults.proj (Geographic projection): Use
747            a much more precise value for the to_meter attribute.
748    
749    2003-09-22  Bernhard Herzog  <[email protected]>
750    
751            * test/support.py (initthuban): Make sure to unset the LANG env.
752            var. so that tests that compare translated strings work. Solves RT
753            #2094
754    
755    2003-09-22  Jan-Oliver Wagner <[email protected]>
756    
757            Small improvement of APR import.
758    
759            * Extensions/importAPR/test/test_apr.py (aprTest.test_LClass):
760            Added tests for text-ranges.
761    
762            * Extensions/importAPR/apr.py (APR_LClass.GetThubanRange): Now
763            returns a string object if the range is based on text.
764    
765            * Extensions/importAPR/importAPR.py (import_apr_dialog): Unified
766            range retrieval.
767    
768    2003-09-22  Jan-Oliver Wagner <[email protected]>
769    
770            Initial version of the importAPR extension which is in
771            experimental state.
772    
773            * /Extensions/importAPR/, /Extensions/importAPR/samples/,
774            /Extensions/importAPR/test/: New directories.
775    
776            * /Extensions/importAPR/samples/README: New: Howto load the samples.
777    
778            * /Extensions/importAPR/samples/iceland.apr: New: A sample APR
779            file which refers to the Thuban Iceland demo data.
780    
781            * /Extensions/importAPR/test/README: New: Howto execute the tests.
782    
783            * /Extensions/importAPR/test/test_apr.py: New: Tests for APR classes.
784    
785            * /Extensions/importAPR/apr.py: New: Classes for ArcView Objects
786            as in '.apr'-files.
787    
788            * /Extensions/importAPR/odb.py: New: Classes for generic ArcView
789            ODB Objects as in '.apr', '.avl' and other files.
790    
791            * /Extensions/importAPR/__init__.py: New: Init to make this
792            directory a package.
793    
794            * /Extensions/importAPR/importAPR.py: New: Import a ArcView
795            project file (.apr) and convert it to Thuban.
796    
797    2003-09-22  Jan-Oliver Wagner <[email protected]>
798    
799            * Extensions/gns2shp.gns2shp.py: The main module of gns2shp.
800    
801    2003-09-19  Jan-Oliver Wagner <[email protected]>
802    
803            * Doc/manual/thuban-manual.xml: Extended section 'Installation'
804            with description on RPM installation and RPM binary package
805            creation.
806    
807    2003-09-18  Bernhard Herzog  <[email protected]>
808    
809            * setup.py (data_files): Only add the mo files if the Locales
810            directory actually exists, so that setup.py works with a fresh CVS
811            checkout
812    
813    2003-09-12  Jan-Oliver Wagner <[email protected]>
814    
815            * Examples/simple_extensions/simple_tool.py: bugfix: Tool is now
816            in viewport, not anymore in view
817    
818    2003-09-04  Jan-Oliver Wagner <[email protected]>
819    
820            Introducing first Extension (gns2shp).
821    
822            * Extensions, Extensions/gns2shp, Extensions/gns2shp/test: New.
823    
824            * Extensions/__init__.py: New. init to make this dir a package.
825    
826            * Extensions/gns2shp/__init__.py: New. init to make this dir a package.
827    
828            * Extensions/gns2shp/test/README: New. some info on this test directory.
829    
830            * Extensions/gns2shp/test/ls.txt: New. test data set (Liechtenstein).
831    
832            * Extensions/gns2shp/test/test_gns2shp.py: New. Test for correct creation
833            of Shapefile from GNS text file format
834    
835    2003-09-03  Jan-Oliver Wagner <[email protected]>
836    
837            Fix/workaround for bug #2019:
838            https://intevation.de/rt/webrt?serial_num=2019
839    
840            * Thuban/UI/identifyview.py (IdentifyView.ID_STOP): New.
841            (IdentifyView.__init__): Added another button that allows to
842            stop the identify mode.
843            (IdentifyView.OnStop): New. Stops the identify mode.
844    
845    2003-09-03  Jan-Oliver Wagner <[email protected]>
846    
847            Introducing a new exception dialog that allows to exit the
848            application immediately.
849            This fixes bug #2060: https://intevation.de/rt/webrt?serial_num=2060
850    
851            * Thuban/UI/exceptiondialog.py: New. A special exception dialog.
852    
853            * Thuban/UI/application.py (ThubanApplication.ShowExceptionDialog):
854            Made strings available to translations. Exchanged the simple
855            ScrolledMessageDialog by the new ExceptionDialog.
856    
857    2003-09-01  Bernhard Herzog  <[email protected]>
858    
859            * NEWS: New. Summary of changes and release notes.
860    
861            * MANIFEST.in: Add NEWS
862    
863    2003-09-01  Bernhard Herzog  <[email protected]>
864    
865            * MANIFEST.in: Correct the include statement for the mo-files and
866            include the documentation too.
867    
868            * setup.py (data_files): Add the .mo files
869            (setup call): Up to version 0.9.0
870    
871    2003-09-01  Bernhard Herzog  <[email protected]>
872    
873            * Thuban/UI/dbdialog.py (ChooseDBTableDialog.__init__): Change the
874            parameter list to just parent and session
875            (ChooseDBTableDialog.__set_properties): Removed. Setting the
876            selection of empty list boxes is not allowed (and produces C++
877            assertion errors) and the rest of the setup is better done in
878            __init__ anyway.
879            (ChooseDBTableDialog.OnCancel, ChooseDBTableDialog.OnOK)
880            (ChooseDBTableDialog.OnLBDClick, DBDialog.OnOK): Use the Python
881            builtins True/False for booleans to avoid warnings from wxPython
882    
883            * Thuban/UI/mainwindow.py (MainWindow.AddDBLayer): Adapt to new
884            ChooseDBTableDialog constructor parameters.
885    
886    2003-09-01  Bernhard Herzog  <[email protected]>
887    
888            * Thuban/Model/postgisdb.py
889            (PostGISTable): Extend doc-string
890            (PostGISTable._fetch_table_information): Set the column index
891            correctly, pretending ignored columns don't exist.
892    
893            * test/test_postgis_db.py (TestPostGISIgnoredColumns): New tests
894            for postgis tables with data types not yet supported by thuban.
895    
896    2003-08-29  Bernhard Herzog  <[email protected]>
897    
898            * HOWTO-Release: Tweak item about running the tests.
899    
900    2003-08-29  Jan-Oliver Wagner <[email protected]>
901    
902            * /Doc/manual/thuban-manual.xml: updated to version 1.0pre2.
903    
904    2003-08-29  Bernhard Herzog  <[email protected]>
905    
906            Add some missing parameters to projections. Proj complains about
907            them on windows but for some reason not on Linux.
908    
909            * test/test_save.py (SaveSessionTest.testLayerProjection): Add
910            missing required projection parameters
911    
912            * test/test_proj.py (TestProjFile.test): Add missing required
913            projection parameters
914    
915            * test/test_load_0_8.py (TestLayerProjection.file_contents)
916            (TestLayerProjection.test): Add missing required projection
917            parameters and tests for them
918    
919            * test/test_load.py (TestLayerProjection.file_contents)
920            (TestLayerProjection.test): Add missing required projection
921            parameters and tests for them
922    
923            * test/test_layer.py (TestLayer.test_base_layer): Add missing
924            required projection parameters
925    
926    2003-08-29  Bernhard Herzog  <[email protected]>
927    
928            * libraries/pyprojection/Projection.i: Use pj_get_errno_ref to
929            access the pj_errno because directly accessing pj_errno doesn't
930            work on windows if the proj library is in a DLL
931    
932            * libraries/pyprojection/Projection_wrap.c: Update from Projection.i
933    
934    2003-08-28  Bernhard Herzog  <[email protected]>
935    
936            * test/test_proj.py: Import things from Thuban after calling
937            initthuban
938    
939            * test/test_load.py (LoadSessionTest.filenames): New class
940            variable with the filename attributes to normalize
941            (LoadSessionTest.check_format): Pass self.filenames to
942            sax_eventlist to normalize the filename attributes
943    
944            * test/xmlsupport.py: Add cvs keywords
945            (SaxEventLister.__init__): New parameter filenames which indicates
946            attributes that contain filenames
947            (SaxEventLister.startElementNS): Normalize the filename attributes
948            with os.path.normpath
949            (sax_eventlist): New parameter filenames to pass through to
950            SaxEventLister
951    
952            * test/test_derivedshapestore.py: Make this file callable as a
953            program to execute the tests
954            (TestDerivedShapeStoreExceptions.test_table_with_wrong_size): Bind
955            the session to self.session so that it gets destroyed properly
956    
957            * test/test_layer.py (TestLayer.tearDown): Call the session's
958            Destroy method
959    
960            * test/test_map.py (TestMapBase.tearDown): Destroy self.session
961            too if it exists
962            (TestMapAddLayer.test_add_layer): Bind the session to self.session
963            so that it gets destroyed properly
964    
965            * test/postgissupport.py (reason_for_not_running_tests): Add a
966            test for the existence of popen2.Popen4.
967    
968            * test/test_save.py (SaveSessionTest.tearDown): New. Provide a
969            reliable way to destroy the sessions created in the test cases
970            (SaveSessionTest.test_dbf_table): Bind the session to self.session
971            so that it gets destroyed properly
972            (SaveSessionTest.testLayerProjection): Bind the session to
973            self.session so that it gets destroyed properly
974    
975            * test/test_session.py (UnreferencedTablesTests.tearDown): Make
976            sure that the session is destroyed properly
977    
978            * test/test_shapefilestore.py: Make this callable as a program to
979            execute the tests
980    
981            * test/test_scalebar.py: Remove unnecessary import of _ from
982            Thuban
983    
984            * test/support.py (print_garbage_information): Call initthuban
985            here because it may be called indirectly from test cases that test
986            test support modules which do not use anything from thuban itself
987            (ThubanTestProgram.runTests): Remove unnecessary debug print
988    
989    2003-08-28  Bernhard Herzog  <[email protected]>
990    
991            * Thuban/version.py (longversion): Update to 0.9
992    
993            * Thuban/UI/mainwindow.py: Remove some unused imports
994    
995            * README: Add section about required additional software. Add date
996            and revision CVS keywords
997    
998            * HOWTO-Release: Add item about the translations. Add date and
999            revision CVs keywords and change formatting to match README a bit
1000            better
1001    
1002            * po/de.po: Update for 0.9
1003    
1004            * test/README: Tweak the wording a little because many tests are
1005            not really unittest.
1006    
1007    2003-08-27  Bernhard Herzog  <[email protected]>
1008    
1009            As preparation for the 0.9 release, switch thuban files to a
1010            non-dev namespace
1011    
1012            * Thuban/Model/save.py (SessionSaver.write_session): Write files
1013            with the http://thuban.intevation.org/dtds/thuban-0.9.dtd
1014            namespace
1015    
1016            * Thuban/Model/load.py (SessionLoader.__init__): Accept the
1017            http://thuban.intevation.org/dtds/thuban-0.9.dtd namespace too
1018    
1019            * test/test_save.py (SaveSessionTest.dtd)
1020            (SaveSessionTest.testEmptySession)
1021            (SaveSessionTest.testSingleLayer)
1022            (SaveSessionTest.testLayerProjection)
1023            (SaveSessionTest.testRasterLayer)
1024            (SaveSessionTest.testClassifiedLayer)
1025            (SaveSessionTest.test_dbf_table)
1026            (SaveSessionTest.test_joined_table)
1027            (SaveSessionTest.test_save_postgis): Update for new namespace
1028    
1029            * test/test_load.py (LoadSessionTest.dtd, TestSingleLayer)
1030            (TestLayerVisibility.file_contents, TestLabels.file_contents)
1031            (TestLayerProjection.file_contents)
1032            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
1033            (TestPostGISLayer.file_contents)
1034            (TestPostGISLayerPassword.file_contents)
1035            (TestLoadError.file_contents, TestLoadError.test): Update for new
1036            namespace
1037    
1038    2003-08-27  Bernhard Herzog  <[email protected]>
1039    
1040            Make the table interface distinguish between row ids (an integer
1041            that uniquely identifies a row) and row ordinals (a simple row
1042            count from 0 to NumRows() - 1)
1043    
1044            * Thuban/Model/postgisdb.py (PostGISTable.RowIdToOrdinal)
1045            (PostGISTable.RowOrdinalToId): New methods to conver between row
1046            ids and row ordinals
1047            (PostGISTable.ReadRowAsDict, PostGISTable.ReadValue): New keyword
1048            parameter row_is_ordinal to indicate whether the row parameter is
1049            the row id or the ordinal
1050    
1051            * Thuban/Model/transientdb.py (TransientTableBase.RowIdToOrdinal)
1052            (TransientTableBase.RowOrdinalToId)
1053            (AutoTransientTable.RowIdToOrdinal)
1054            (AutoTransientTable.RowOrdinalToId): Same new methods as in
1055            PostGISTable.
1056            (TransientTableBase.ReadRowAsDict, TransientTableBase.ReadValue)
1057            (AutoTransientTable.ReadRowAsDict, AutoTransientTable.ReadValue):
1058            Same new parameter as in PostGISTable.
1059    
1060            * Thuban/Model/table.py (DBFTable.RowIdToOrdinal)
1061            (DBFTable.RowOrdinalToId, MemoryTable.RowIdToOrdinal)
1062            (MemoryTable.RowOrdinalToId): Same new methods as in PostGISTable.
1063            (DBFTable.ReadValue, DBFTable.ReadRowAsDict)
1064            (MemoryTable.ReadValue, MemoryTable.ReadRowAsDict): Same new
1065            parameter as in PostGISTable.
1066    
1067            * Thuban/UI/tableview.py (DataTable.RowIdToOrdinal)
1068            (DataTable.RowOrdinalToId): New methods to convert between row ids
1069            and row ordinals.
1070            (TableGrid.SelectRowById): New method to select a row based on its
1071            ID as opposed to its ordinal
1072            (DataTable.GetValue, TableGrid.OnRangeSelect)
1073            (TableGrid.OnSelectCell, LayerTableGrid.select_shapes)
1074            (QueryTableFrame.OnQuery, QueryTableFrame.get_selected)
1075            (LayerTableFrame.__init__): Convert between row ids and row
1076            ordinals as appropriate
1077    
1078            * test/postgissupport.py (PostGISDatabase.__init__): Add
1079            doc-string.
1080            (PostGISDatabase.initdb): The optional third item in a tuple in
1081            tables is now a (key, value) list with additional arguments to
1082            pass to upload_shapefile
1083            (upload_shapefile): New parameter gid_offset to allow gids that
1084            are not the same as the shapeids in the shapefile
1085            (PostgreSQLServer.get_default_static_data_db): Use the new
1086            gid_offset to make the gids in landmarks 1000 higher than the
1087            shapeids in the shapefile
1088    
1089            * test/test_viewport.py
1090            (TestViewportWithPostGIS.test_find_shape_at_point): Adapt to the
1091            new shapeids in the landmarks table
1092    
1093            * test/test_transientdb.py
1094            (TestTransientTable.run_iceland_political_tests)
1095            (TestTransientTable.test_transient_joined_table): Add tests for
1096            the new table methods and new keywords arguments.
1097    
1098            * test/test_postgis_db.py
1099            (TestPostGISTable.test_read_row_as_dict_row_count_mode)
1100            (TestPostGISTable.test_read_value_row_count_mode)
1101            (TestPostGISTable.test_row_id_to_ordinal)
1102            (TestPostGISTable.test_row_oridnal_to_id): New test for the new
1103            table methods and the new arguments
1104            (TestPostGISShapestorePoint.test_shapes_in_region)
1105            (TestPostGISShapestorePoint.test_shape_raw_data)
1106            (TestPostGISShapestorePoint.test_shape_points)
1107            (TestPostGISShapestorePoint.test_shape_shapeid)
1108            (TestPostGISShapestorePoint.test_all_shapes)
1109            (TestPostGISTable.test_simple_query)
1110            (TestPostGISTable.test_simple_query)
1111            (TestPostGISTable.test_simple_query)
1112            (TestPostGISTable.test_read_value)
1113            (TestPostGISTable.test_read_row_as_dict): Adapt to the new
1114            shapeids in the landmarks table
1115    
1116            * test/test_memory_table.py
1117            (TestMemoryTable.test_read_row_as_dict_row_count_mode)
1118            (TestMemoryTable.test_read_value_row_count_mode)
1119            (TestMemoryTable.test_row_id_to_ordinal)
1120            (TestMemoryTable.test_row_oridnal_to_id): New test for the new
1121            table methods and the new arguments
1122    
1123            * test/test_dbf_table.py
1124            (TestDBFTable.test_read_row_as_dict_row_count_mode)
1125            (TestDBFTable.test_read_value_row_count_mode)
1126            (TestDBFTable.test_row_id_to_ordinal)
1127            (TestDBFTable.test_row_oridnal_to_id): New test for the new table
1128            methods and the new arguments
1129    
1130    2003-08-26  Bernhard Herzog  <[email protected]>
1131    
1132            * Thuban/Model/postgisdb.py (PostGISShapeStore.BoundingBox): Use a
1133            more postgis specific but much faster method to get the bounding
1134            box
1135    
1136    2003-08-26  Bernhard Herzog  <[email protected]>
1137    
1138            * Thuban/Model/postgisdb.py (PostGISTable.Title)
1139            (PostGISShapeStore.AllShapes): Add these missing methods.
1140            (PostGISShapeStore.ShapesInRegion): No need to raise
1141            StopIteration. We can simply return
1142    
1143            * test/test_postgis_db.py (TestPostGISTable.test_title)
1144            (TestPostGISShapestorePoint.test_all_shapes): New tests for the
1145            new methods
1146    
1147    2003-08-25  Bernhard Herzog  <[email protected]>
1148    
1149            * Thuban/Model/postgisdb.py (shapetype_map): Add MUTLIPOLYGON.
1150    
1151            * test/test_postgis_db.py (PolygonTests): New class containing
1152            those tests from TestPostGISShapestorePolygon that can also be
1153            used to test MUTLIPOLYGON tables
1154            (TestPostGISShapestorePolygon): Most tests are now in PolygonTests
1155            so derive from that
1156            (TestPostGISShapestoreMultiPolygon): New class with tests for
1157            MUTLIPOLYGON tables
1158    
1159            * test/postgissupport.py (PostGISDatabase.initdb): Allow the
1160            tables argument to have tuples with three items to override the
1161            WKT type used.
1162            (PostgreSQLServer.get_default_static_data_db): Use the above to
1163            create a polygon table with MUTLIPOLYGONs
1164            (point_to_wkt, coords_to_point, polygon_to_wkt, coords_to_polygon)
1165            (arc_to_wkt, coords_to_multilinestring): Rename from *_to_wkt to
1166            coords_to*
1167            (coords_to_multipolygon): New. Convert to MUTLIPOLYGON
1168            (wkt_converter): New. Map WKT types to converters
1169            (upload_shapefile): New parameter force_wkt_type to use a
1170            different WKT type than the default
1171    
1172    2003-08-25  Bernhard Herzog  <[email protected]>
1173    
1174            * Thuban/UI/application.py
1175            (ThubanApplication.run_db_param_dialog): New. Suitable as a
1176            db_connection_callback. Main difference is that the dialog run
1177            from this method doesn't have a parent so it can be used even when
1178            there is no main window
1179            (ThubanApplication.OpenSession): Use self.run_db_param_dialog if
1180            no db_connection_callback was given. This way the dialog pops up
1181            even when the .thuban file was given as a command line parameter.
1182    
1183    2003-08-25  Bernhard Herzog  <[email protected]>
1184    
1185            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Release the the mouse
1186            before calling MouseLeftUp. MouseLeftUp may pop up modal dialogs
1187            which leads to an effectively frozen X session because the user
1188            can only interact with the dialog but the mouse is still grabbed
1189            by the canvas.
1190            Also, call the tool's Hide method before MouseLeftUp because
1191            MouseLeftUp may change the tool's coordinates.
1192    
1193    2003-08-25  Bernhard Herzog  <[email protected]>
1194    
1195            * Thuban/UI/application.py (ThubanApplication.OpenSession): Catch
1196            LoadCancelled exceptions and handle them by returning immediately.
1197    
1198    2003-08-25  Bernhard Herzog  <[email protected]>
1199    
1200            GUI part of loading sessions with postgis connections which may
1201            require user interaction to get passwords or updated parameters
1202    
1203            * Thuban/UI/dbdialog.py (DBDialog): Reimplement to make it look a
1204            bit nucer and be more generic.
1205            (DBFrame.OnAdd): Adapt to new DBDialog interface
1206    
1207            * Thuban/UI/application.py (ThubanApplication.OpenSession): New
1208            optional parameter db_connection_callback which is passed to
1209            load_session.
1210    
1211            * Thuban/UI/mainwindow.py (MainWindow.run_db_param_dialog): New.
1212            Suitable as a db_connection_callback
1213            (MainWindow.OpenSession): Use self.run_db_param_dialog as the
1214            db_connection_callback of the application's OpenSession method
1215    
1216    
1217    2003-08-25  Bernhard Herzog  <[email protected]>
1218    
1219            Basic loading of sessions containing postgis connections:
1220    
1221            * Thuban/Model/load.py (LoadError): Add doc-string
1222            (LoadCancelled): New exception class to indicate a cancelled load
1223            (SessionLoader.__init__): Add the db_connection_callback parameter
1224            which will be used by the loader to get updated parameters and a
1225            password for a database connection
1226            (SessionLoader.__init__): Add the new XML elements to the
1227            dispatchers dictionary
1228            (SessionLoader.check_attrs): Two new conversions, ascii to convert
1229            to a byte-string object and idref as a generic id reference
1230            (SessionLoader.start_dbconnection)
1231            (SessionLoader.start_dbshapesource): New. Handlers for the new XML
1232            elements
1233            (load_session): Add the db_connection_callback to pass through the
1234            SessionLoader
1235    
1236            * test/test_load.py (TestPostGISLayer, TestPostGISLayerPassword):
1237            New classes to test loading of sessions with postgis database
1238            connections.
1239    
1240    2003-08-25  Bernhard Herzog  <[email protected]>
1241    
1242            * Thuban/UI/mainwindow.py (__ThubanVersion__): Remove this and
1243            replace it and the comment with __BuildDate__ by the Source: and
1244            Id: cvs keywords as used in the other files.
1245    
1246    2003-08-25  Bernhard Herzog  <[email protected]>
1247    
1248            * Thuban/Model/load.py (SessionLoader.check_attrs): Raise a
1249            LoadError when a required attribute is missing. The code used to
1250            be commented out for some reason, but probably should have been
1251            active.
1252    
1253            * test/test_load.py (TestLoadError.test): Test the message in the
1254            LoadError too to make sure it really is about the missing
1255            attribute
1256    
1257    2003-08-22  Bernhard Herzog  <[email protected]>
1258    
1259            * test/test_save.py (SaveSessionTest.test_dbf_table)
1260            (SaveSessionTest.test_joined_table): Add XML validation tests.
1261    
1262    2003-08-22  Bernhard Herzog  <[email protected]>
1263    
1264            Implement saving a session with a postgis connection
1265    
1266            * Resources/XML/thuban-0.9.dtd (dbconnection, dbshapesource) New
1267            elements for database connections and shapestores using db
1268            connections
1269            (session): Add the dbconnections to the content model
1270    
1271            * Thuban/Model/save.py (SessionSaver.write_db_connections): New.
1272            Write the db connections
1273            (SessionSaver.write_session): Call write_db_connections to write
1274            the connection before the data sources
1275            (SessionSaver.write_data_containers): Handle postgis shapestores
1276    
1277            * test/test_save.py (SaveSessionTest.thubanids)
1278            (SaveSessionTest.thubanidrefs): Update for new DTD
1279            (SaveSessionTest.test_save_postgis): New. Test saving a session
1280            with postgis connections
1281    
1282            * Thuban/Model/postgisdb.py (PostGISTable.DBConnection)
1283            (PostGISTable.TableName): New accessor methods for the connection
1284            and table name
1285    
1286            * test/test_postgis_db.py (TestPostGISTable.test_dbconn)
1287            (TestPostGISTable.test_dbname): New methods to test the new
1288            PostGISConnection methods
1289    
1290    2003-08-22  Bernhard Herzog  <[email protected]>
1291    
1292            * Thuban/Model/postgisdb.py (ConnectionError): New exception class
1293            for exceptions occurring when establishing a Database connection
1294            (PostGISConnection.connect): Catch psycopg.OperationalError during
1295            connects and raise ConnectionError.
1296    
1297            * test/test_postgis_db.py (TestPostgisDBExceptions): New class for
1298            tests for database exceptions
1299    
1300    2003-08-22  Bernhard Herzog  <[email protected]>
1301    
1302            Prepare the test suite for tests with required authentication
1303    
1304            * test/postgissupport.py (PostgreSQLServer.__init__): Add instance
1305            variables with two predefined users/passwords, one for the admin
1306            and one for a non-privileged user.
1307            (PostgreSQLServer.createdb): Pass the admin name to initdb and add
1308            the non-privileged user to the database and set the admin password
1309            (PostgreSQLServer.wait_for_postmaster): Use the admin user name.
1310            Better error reporting
1311            (PostgreSQLServer.connection_params)
1312            (PostgreSQLServer.connection_string): New methods to return
1313            information about how to connect to the server
1314            (PostgreSQLServer.execute_sql): New. Convenience method to execute
1315            SQL statements
1316            (PostgreSQLServer.require_authentication): Toggle whether the
1317            server requires authentication
1318            (PostgreSQLServer.create_user, PostgreSQLServer.alter_user): New.
1319            Add or alter users
1320            (PostGISDatabase.initdb): Pass the admin name one the
1321            subprocesses' command lines. Grant select rights on
1322            geometry_columns to everybody.
1323            (upload_shapefile): Use the admin name and password when
1324            connecting. Grant select rights on the new table to everybody.
1325    
1326            * test/test_viewport.py (TestViewportWithPostGIS.setUp): Use the
1327            server's new methods to get the connection parameters.
1328    
1329            * test/test_postgis_session.py (TestSessionWithPostGIS.setUp)
1330            (TestSessionWithPostGIS.test_remove_dbconn_exception): Use the
1331            server's new methods to get the connection parameters.
1332    
1333            * test/test_postgis_db.py
1334            (TestPostGISConnection.test_gis_tables_empty)
1335            (TestPostGISConnection.test_gis_tables_non_empty)
1336            (PostGISStaticTests.setUp): Use the server's new methods to get
1337            the connection parameters.
1338    
1339    2003-08-22  Bernhard Herzog  <[email protected]>
1340    
1341            * Thuban/UI/about.py (About.__init__): Add the psycopg version.
1342    
1343            * Thuban/version.py: Add psycopg version
1344    
1345            * Thuban/Model/postgisdb.py (psycopg_version): New. Return the
1346            version of the psycopg module
1347    
1348    2003-08-22  Bernhard Herzog  <[email protected]>
1349    
1350            * Thuban/UI/dbdialog.py (DBPwdDlg): Removed because it's not used.
1351            (DBFrame.OnEdit): Removed because it's not used and wouldn't work
1352            at the moment. The functionality should probably be implemented
1353            some time, though.
1354            (DBFrame.OnRemove): Display a message if the connection can't be
1355            removed because it's still in use.
1356    
1357    2003-08-22  Jan-Oliver Wagner <[email protected]>
1358    
1359            * Thuban/UI/about.py (About.__init__): split up the huge about
1360            text into elements/lists for easier translation. This fixes bug
1361            https://intevation.de/rt/webrt?serial_num=2058
1362            Also, made some forgotten string available for the i18n.
1363    
1364    2003-08-21  Bernhard Herzog  <[email protected]>
1365    
1366            Make postgis support really optional including insensitive menu
1367            items.
1368    
1369            * Thuban/Model/postgisdb.py (has_postgis_support): New. Return
1370            whether the postgis is supported.
1371    
1372            * Thuban/UI/dbdialog.py: Put the psycopg import into try..except
1373            to make postgis support optional
1374    
1375            * Thuban/UI/mainwindow.py (_has_postgis_support): New. Context
1376            version of Thuban.Model.postgisdb.has_postgis_support
1377            (database_management command): Make it only sensitive if postgis
1378            is supported.
1379    
1380    2003-08-21  Jan-Oliver Wagner <[email protected]>
1381    
1382            * Doc/manual/thuban-manual.xml: Added CVS revision for rev-history.
1383            (section Adding and Removing Layers): Added text and described
1384            multi-selection.
1385            (chapter Extensions): New.
1386    
1387    2003-08-21  Jan-Oliver Wagner <[email protected]>
1388    
1389            * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Changed dialog
1390            settings to allow multiple files to load into the map.
1391            Also reduced selection to *.shp as a default.
1392    
1393    2003-08-20  Bernhard Herzog  <[email protected]>
1394    
1395            Add dialogs and commands to open database connections and add
1396            database layers.
1397    
1398            * Thuban/UI/mainwindow.py (MainWindow.DatabaseManagement): New
1399            method to open the database connection management dialog
1400            (MainWindow.AddDBLayer): New method to add a layer from a database
1401            (_has_dbconnections): New helper function to use for sensitivity
1402            (database_management command, layer_add_db command): New commands
1403            that call the above new methods.
1404            (main_menu): Add the new commands to the menu.
1405    
1406            * Thuban/Model/postgisdb.py (PostGISConnection.__init__)
1407            (PostGISConnection.connect): Establish the actual connection in a
1408            separate method and call it in __init__. This makes it easier to
1409            override the behavior in test cases
1410            (PostGISConnection.BriefDescription): New method to return a brief
1411            description for use in dialogs.
1412    
1413            * test/test_postgis_db.py (NonConnection): DB connection that
1414            doesn't actually connect
1415            (TestBriefDescription): New class with tests for the new
1416            BriefDescription method
1417    
1418    2003-08-19  Jan-Oliver Wagner <[email protected]>
1419    
1420            Moved anything from extensions to libraries.
1421    
1422            * libraries: New.
1423    
1424            * libraries/ pyprojection, pyshapelib, shapelib, thuban: New.
1425    
1426            * libraries/pyprojection/ LICENSE, MANIFEST.in, Projection.i,
1427            Projection.py, Projection_wrap.c, setup.py, swighelp.txt: These files have
1428            been moved here from thuban/extensions/pyprojection/
1429            See there in the Attic for the older history.
1430    
1431            * libraries/pyshapelib/ COPYING, ChangeLog, NEWS, README, dbflib.i,
1432            dbflib.py, dbflib_wrap.c, pyshapelib_api.h, pytest.py, setup.py,
1433            shapelib.i, shapelib.py, shapelib_wrap.c, shptreemodule.c: These files
1434            have been moved here from thuban/extensions/pyshapelib/
1435            See there in the Attic for the older history.
1436    
1437            * libraries/shapelib/ dbfopen.c, shapefil.h, shpopen.c, shptree.c: These
1438            files have been moved here from thuban/extensions/shapelib/
1439            See there in the Attic for the older history.
1440    
1441            * libraries/thuban/ bmpdataset.cpp, cpl_mfile.cpp, cpl_mfile.h,
1442            gdalwarp.cpp, wxproj.cpp: These files have been moved here from
1443            thuban/extensions/thuban/
1444            See there in the Attic for the older history.
1445    
1446            * MANIFEST.in, setup.cfg, setup.py: renamed extensions to libraries.
1447    
1448            * extensions/thuban/ bmpdataset.cpp, cpl_mfile.cpp, cpl_mfile.h,
1449            gdalwarp.cpp, wxproj.cpp: Moved to libraries/thuban.
1450    
1451            * extensions/shapelib/ dbfopen.c, shapefil.h, shpopen.c, shptree.c:
1452            Moved to libraries/shapelib.
1453    
1454            * extensions/pyshapelib/ COPYING, NEWS, dbflib.py, pytest.py,
1455            shapelib.py, README, dbflib_wrap.c, setup.py, shapelib_wrap.c,
1456            ChangeLog, dbflib.i, pyshapelib_api.h, shapelib.i, shptreemodule.c:
1457            Moved to libraries/pyshapelib.
1458    
1459            * extensions/pyprojection/ MANIFEST.in, Projection.py, setup.py,
1460            LICENSE, Projection.i, Projection_wrap.c, swighelp.txt:
1461            Moved to libraries/pyprojection.
1462    
1463            * extensions/ pyprojection, pyshapelib, shapelib, thuban: Removed.
1464    
1465            * extensions: Removed.
1466    
1467    2003-08-19  Bernhard Herzog  <[email protected]>
1468    
1469            * test/test_viewport.py (ViewPortTest): We don't use the
1470            facilities of FileTestMixin so don't derive from it.
1471            (TestViewportWithPostGIS): New class with tests for using a
1472            viewport on a map with postgis layers.
1473    
1474    2003-08-19  Bernhard Herzog  <[email protected]>
1475    
1476            Add the db connection management to the session.
1477    
1478            * Thuban/Model/session.py (Session.__init__): New instance
1479            variable db_connections
1480            (Session.AddDBConnection, Session.DBConnections)
1481            (Session.HasDBConnections, Session.CanRemoveDBConnection)
1482            (Session.RemoveDBConnection): New methods to manage and query the
1483            db connections managed by the session
1484            (Session.OpenDBShapeStore): New method to open a shapestore from a
1485            db connection
1486    
1487            * Thuban/Model/messages.py (DBCONN_REMOVED, DBCONN_ADDED): New
1488            messages for the db connection handling in the session
1489    
1490            * test/test_postgis_session.py: New. test cases for the session's
1491            db connection handling with postgis connections
1492    
1493    2003-08-19  Bernhard Herzog  <[email protected]>
1494    
1495            Add very basic postgis database support and the corresponding test
1496            cases. The test cases require a PostgreSQL + postgis installation
1497            but no existing database. The database will be created
1498            automatically by the test cases
1499    
1500            * test/README: Add note about skipped tests and the requirements
1501            of the postgis tests.
1502    
1503            * Thuban/Model/postgisdb.py: New. Basic postgis database support.
1504    
1505            * test/test_postgis_db.py: New. Test cases for the postgis
1506            support.
1507    
1508            * Thuban/Model/wellknowntext.py: New. Parser for well-known-text
1509            format
1510    
1511            * test/test_wellknowntext.py: New. Test cases for the
1512            wellknowntext parser
1513    
1514            * test/postgissupport.py: New. Support module for tests involving
1515            a postgis database.
1516    
1517            * test/support.py (execute_as_testsuite): Shut down the postmaster
1518            if it's still running after the tests
1519    
1520            * Thuban/Model/data.py (RAW_WKT): New constant for raw data in
1521            well known text format
1522    
1523    2003-08-19  Jan-Oliver Wagner <[email protected]>
1524    
1525            * Examples/simple_extensions/hello_world.py: New. Raises a Hello World
1526            message dialog.
1527    
1528    2003-08-18  Bernhard Herzog  <[email protected]>
1529    
1530            * test/support.py (ThubanTestResult.printErrors): Indent the
1531            reason for the skips in the output to make it a bit more readable.
1532            (execute_as_testsuite): New helper function to run a test suite
1533            and print some more information.
1534            (run_tests): Use execute_as_testsuite to run the tests
1535    
1536            * test/runtests.py (main): Use execute_as_testsuite to run the
1537            tests
1538    
1539    2003-08-18  Bernhard Herzog  <[email protected]>
1540    
1541            Fix some bugs in Thuban and the test suite that were uncovered by
1542            changes introduced in Python 2.3:
1543    
1544            * Thuban/Model/table.py (DBFTable.__init__): Make sure the
1545            filename is an absolute name
1546    
1547            * Thuban/Model/layer.py (RasterLayer.__init__): Make sure the
1548            filename is an absolute name
1549    
1550            * test/test_save.py (SaveSessionTest.testRasterLayer): Use a
1551            unique filename to save to and use the correct relative filename
1552            in the expected output.
1553            (SaveSessionTest.test_dbf_table): Use the correct relative
1554            filename in the expected output.
1555    
1556            * test/test_layer.py (TestLayer.test_raster_layer): Update the
1557            test to check whether the filename is absolute.
1558    
1559    2003-08-18  Jan-Oliver Wagner <[email protected]>
1560    
1561            * Thuban/UI/about.py (About.__init__): Added Silke Reimer.
1562    
1563    2003-08-15  Bernhard Herzog  <[email protected]>
1564    
1565            Change the way shapes are returned by a shape store. The
1566            ShapesInRegion method returns an iterator over actual shape
1567            objects instead of a list of shape ids.
1568    
1569            * Thuban/Model/data.py (ShapefileShape.ShapeID): New. Return shape
1570            id.
1571            (ShapefileStore.ShapesInRegion): Return an iterator over the
1572            shapes which yields shape objects instead of returning a list of
1573            shape ids
1574            (ShapefileStore.AllShapes): New. Return an iterator over all
1575            shapes in the shape store
1576            (DerivedShapeStore.AllShapes): New. Like in ShapefileStore
1577    
1578            * Thuban/Model/layer.py (Layer.ShapesInRegion): Update
1579            doc-string.
1580    
1581            * Thuban/UI/baserenderer.py
1582            (BaseRenderer.layer_ids, BaseRenderer.layer_shapes): Rename to
1583            layer_shapes and make it return an iterator containg shapes
1584            instead of a list of ids.
1585            (BaseRenderer.draw_shape_layer): Update doc-string; Adapt to
1586            layer_shapes() change
1587    
1588            * Thuban/UI/renderer.py (ScreenRenderer.layer_ids)
1589            (ScreenRenderer.layer_shapes): Rename as in BaseRenderer
1590    
1591            * Thuban/UI/viewport.py (ViewPort._find_shape_in_layer): Adapt to
1592            changes in the ShapesInRegion return value.
1593            (ViewPort._get_hit_tester): Remove commented out code
1594    
1595            * test/mockgeo.py (SimpleShapeStore.ShapesInRegion): Adapt to the
1596            new return value.
1597            (SimpleShapeStore.AllShapes): New. Implement this method too.
1598    
1599            * test/test_layer.py (TestLayer.test_arc_layer)
1600            (TestLayer.test_polygon_layer, TestLayer.test_point_layer)
1601            (TestLayer.test_point_layer_with_projection)
1602            (TestLayer.test_derived_store): Adapt to changes in the
1603            ShapesInRegion return value.
1604    
1605            * test/test_shapefilestore.py
1606            (TestShapefileStoreArc.test_shapes_in_region)
1607            (TestShapefileStorePolygon.test_shapes_in_region)
1608            (TestShapefileStorePoint.test_shapes_in_region): Adapt to changes
1609            in the ShapesInRegion return value.
1610            (TestShapefileStorePoint.test_all_shapes)
1611            (TestShapefileStoreArc.test_shape_shapeid): New tests for the new
1612            methods
1613    
1614            * test/test_derivedshapestore.py
1615            (TestDerivedShapeStore.test_shapes_in_region): Adapt to changes in
1616            the ShapesInRegion return value.
1617            (TestDerivedShapeStore.test_all_shapes)
1618            (TestDerivedShapeStore.test_shape_shapeid): New tests for the new
1619            methods
1620    
1621    2003-08-15  Bernhard Herzog  <[email protected]>
1622    
1623            Make the renderers deal correctly with raw vs. python level
1624            representation of shape geometries
1625    
1626            * Thuban/UI/baserenderer.py (BaseRenderer.low_level_renderer):
1627            Return a flag useraw in addition to the callable and the parameter
1628            to indicate whether the callable can deal with the raw shape data
1629            or uses the higher level python lists of coordinates. The callable
1630            now should accept either the raw data or the return value of the
1631            shape's Points() method.
1632            (BaseRenderer.draw_shape_layer): Adapt to the low_level_renderer
1633            change
1634            (BaseRenderer.projected_points): Instead of the shape id use the
1635            points list as parameter.
1636            (BaseRenderer.draw_polygon_shape, BaseRenderer.draw_arc_shape)
1637            (BaseRenderer.draw_point_shape): Adapt to projected_points()
1638            change and accept the points list as parameter instead of the
1639            shape id.
1640    
1641            * Thuban/UI/renderer.py (MapRenderer.low_level_renderer): Return
1642            the useraw flag as required by the BaseRenderer
1643            (ScreenRenderer.draw_shape_layer): Adapt to low-level renderer
1644            changes.
1645    
1646            * test/test_baserenderer.py
1647            (TestBaseRenderer.test_point_with_classification): New test for
1648            rendering a map with classifications.
1649    
1650    2003-08-15  Bernhard Herzog  <[email protected]>
1651    
1652            * Thuban/UI/viewport.py (ViewPort.find_shape_at)
1653            (ViewPort._find_shape_in_layer, ViewPort._find_shape_in_layer)
1654            (ViewPort._get_hit_tester, ViewPort.projected_points)
1655            (ViewPort._hit_point, ViewPort._hit_arc, ViewPort._hit_polygon)
1656            (ViewPort._find_label_at): Split the find_shape_at method into
1657            several new methods and use the functions in the hit-test module.
1658    
1659            * Thuban/UI/hittest.py: New module with Python-level hit-testing
1660            functions
1661    
1662            * test/test_hittest.py: New. Test for the new hittest module
1663    
1664    2003-08-15  Bernhard Herzog  <[email protected]>
1665    
1666            * Thuban/Model/layer.py (Layer.ShapesInRegion): Apply the layer
1667            projection to all corners of the bounding box to get a better
1668            approximation of the projected bounding box
1669    
1670            * test/test_layer.py (TestLayer.test_point_layer_with_projection):
1671            New. Test coordinate handling of a layer with a projection.
1672            Catches the bug fixed in Layer.ShapesInRegion
1673    
1674    2003-08-15  Bernhard Herzog  <[email protected]>
1675    
1676            Move some of the mock objects in test_baserenderer into their own
1677            module so they can easily be used from other tests
1678    
1679            * test/mockgeo.py: New test helper module with some mock objects
1680            for geometry related things like shapes, shapestores and
1681            projections.
1682    
1683            * test/test_mockgeo.py: New. Tests for the new helper module
1684    
1685            * test/test_baserenderer.py: Some of the mock-objects are in
1686            mockgeo now.
1687    
1688    2003-08-12  Jan-Oliver Wagner <[email protected]>
1689    
1690            * Thuban/UI/about.py (About.__init__): Added Bj�rn Broscheit.
1691    
1692  2003-08-12  Bernhard Herzog  <[email protected]>  2003-08-12  Bernhard Herzog  <[email protected]>
1693    
1694          * po/de.po: New. German translations by Bjoern Broscheit          * po/de.po: New. German translations by Bjoern Broscheit
# Line 421  Line 2112 
2112    
2113          * Thuban/Model/range.py, Thuban/version.py: Remove the #! line as          * Thuban/Model/range.py, Thuban/version.py: Remove the #! line as
2114          it annoys lintian which warns about these files not being          it annoys lintian which warns about these files not being
2115          executable. The #1 isn't necessary here since if you absolutely          executable. The #! isn't necessary here since if you absolutely
2116          must execute them you can always say "python <filename>".          must execute them you can always say "python <filename>".
2117    
2118          * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Remove          * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Remove

Legend:
Removed from v.1582  
changed lines
  Added in v.1895

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26