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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26