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

Legend:
Removed from v.1637  
changed lines
  Added in v.1908

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26