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

Legend:
Removed from v.1655  
changed lines
  Added in v.1922

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26