/[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 1760 by bh, Fri Sep 26 18:36:12 2003 UTC revision 1916 by bh, Mon Nov 3 14:19:54 2003 UTC
# Line 1  Line 1 
1    2003-11-03  Bernhard Herzog  <[email protected]>
2    
3            * Extensions/profiling/profiling.py (popup_dialog_box): New config
4            variable to indicate whether the result should be shown in a
5            dialog box
6            (profile_screen_renderer, time_screen_renderer): Only show a
7            dialog box if popup_dialog_box is true.
8            (profile_screen_renderer): Flush stdout after the printing the
9            first part of the "profiling..." message
10    
11            * Thuban/UI/baserenderer.py
12            (BaseRenderer.draw_shape_layer_incrementally): Cache the pens and
13            brushes for the groups so that they're not created over and over
14            again
15    
16            * Thuban/Model/classification.py (Classification.__getattr__)
17            (Classification._compile_classification)
18            (Classification._clear_compiled_classification): New. Methods to
19            manage a 'compiled' representation of the classification groups
20            which is created on demand
21            (Classification.InsertGroup, Classification.RemoveGroup)
22            (Classification.ReplaceGroup): reset the compiled representation
23            (Classification.FindGroup): Use the compiled representation to
24            find the matching group
25            (ClassGroupRange.GetRangeTuple): New. Return the range as a tuple
26    
27    2003-10-31  Bernhard Herzog  <[email protected]>
28    
29            * Thuban/Model/classification.py (Classification.SetDefaultGroup):
30            Send a CLASS_CHANGED message
31            (Classification.RemoveGroup): Send a CLASS_CHANGED message and do
32            not return the removed group since it wasn't used.
33    
34            * test/test_classification.py
35            (TestClassification.test_set_default_group): New. Test the
36            SetDefaultGroup method
37            (TestClassification.test_insert_group): New. Test the InsertGroup
38            method
39            (TestClassification.test_remove_group): New. Test the RemoveGroup
40            method
41            (TestClassification.test_replace_group): New. Test the
42            ReplaceGroup method
43    
44    2003-10-31  Bernhard Herzog  <[email protected]>
45    
46            * test/test_classification.py (TestClassification.setUp):
47            Subscribe to the CLASS_CHANGED messages
48            (TestClassification.tearDown): New. Destroy the classification
49            properly
50            (TestClassification.test_defaults): Add tests for the default line
51            width and whether no messages were sent yet
52            (TestClassification.test_set_default_properties): Add tests for
53            messages and setting the default line width
54            (TestClassification.test_add_singleton)
55            (TestClassification.test_add_range)
56            (TestClassification.test_multiple_groups): Add tests for messages
57    
58    2003-10-31  Bernhard Herzog  <[email protected]>
59    
60            Some more refactoring in preparation for new tests:
61    
62            * test/test_classification.py (TestClassification.setUp): New.
63            Instantiate the classification here. Update the test methods
64            accordingly.
65            (TestClassification.test_multiple_groups): Make sure that the two
66            singletons matching 1 are considered different.
67    
68    2003-10-31  Bernhard Herzog  <[email protected]>
69    
70            * test/test_classification.py (red, green, blue): New. These
71            constants were used in several cases. Update the relevant methods.
72            (TestClassification.test_defaults)
73            (TestClassification.test_set_default_properties)
74            (TestClassification.test_add_singleton)
75            (TestClassification.test_add_range)
76            (TestClassification.test_multiple_groups)
77            (TestClassification.test_deepcopy): New. These were formerly all
78            part of the single method test.
79            (TestClassification.test_deepcopy): Removed.
80            (TestClassIterator): Removed. The test case is now a method of
81            TestClassification since it tests part of the public interface of
82            Classification
83            (TestClassification.test_iterator): New. Used to be
84            TestClassIterator effectively
85    
86    2003-10-31  Jan-Oliver Wagner <[email protected]>
87    
88            GUIfied the functions of the profiling extension.
89    
90            * /Extensions/profiling/__init__.py: New: Init to make this
91            directory a package.
92    
93            * Extensions/profiling/profiling.py: Moved menu entries to
94            the Extensions menu. Applied _() for strings.
95            (profile_screen_renderer): Catch the detailed printout and present
96            it in a dialog.
97            (time_screen_renderer): Raise a dialog to present the result instead
98            of printing it to stdout.
99    
100    2003-10-31  Bernhard Herzog  <[email protected]>
101    
102            * test/test_classification.py (TestClassGroupProperties)
103            (TestClassGroup, TestClassGroupDefault, TestClassGroupRange)
104            (TestClassGroupSingleton, TestClassIterator, TestClassification):
105            Split TestClassification into several classes, one for each class
106            being tested. TestClassification itself now only tests
107            Classification. This split makes changes to the tests a bit easier
108    
109    2003-10-31  Bernhard Herzog  <[email protected]>
110    
111            * Extensions/profiling/profiling.py: New. Extension to measure
112            Thuban performance
113    
114    2003-10-31  Frank Koormann <[email protected]>
115    
116            Added two items to legend popup menu: Remove Layer and Show Layer Table
117    
118            * Thuban/UI/legend.py (LegendPanel._OnRemoveLayer,
119            LegendPanel._OnShowTable): New event handlers, call the corresponding
120            mainwindow methods.
121            (LegendTree._OnRightClick): Added items to popup menu.
122    
123    2003-10-30  Bernhard Herzog  <[email protected]>
124    
125            * Thuban/UI/dialogs.py (ThubanFrame.__init__): Handle
126            EVT_WINDOW_DESTROY
127            (ThubanFrame.OnDestroy): New. Handler for EVT_WINDOW_DESTROY. Does
128            nothing but is convenient for the derived classes.
129    
130            * Thuban/UI/tableview.py
131            (TableFrame.OnDestroy, LayerTableFrame.OnDestroy): New.
132            Unsubscribe the messages here not in OnClose because that might
133            get called multiple times. Fixes RT #2196
134            (TableFrame.OnClose, LayerTableFrame.OnClose): Removed. Not needed
135            anymore.
136    
137            * README: Update the minimum requirement for wxPython. Since we
138            now use the EVT_WINDOW_DESTROY event, we need at least 2.4.0.4,
139            the version in which that was introduced for all platforms
140    
141    2003-10-30  Frank Koormann <[email protected]>
142    
143            * Thuban/UI/join.py (JoinDialog.OnJoin): Wrapped the major parts of
144            the join process in a ThubanBeginBusyCursor, ThubanEndBusyCursor
145            frame.
146    
147    2003-10-30  Jan-Oliver Wagner <[email protected]>
148    
149            Improved APR import extension, added further EPSG definitions
150            and some cleanup regarding string class.
151    
152            * test/test_proj.py (TestProjection.test_get_projection_units_geo):
153            Added test for alias 'longlat'.
154    
155            * Resources/Projections/epsg-deprecated.proj: New. Contains
156            deprecated EPSG definitions.
157    
158            * Extensions/importAPR/odb.py (ODBBaseObject.TreeInfo): Added
159            the variable names for objects.
160    
161            * Extensions/importAPR/apr.py (APR_BLnSym, APR_BMkSym, APR_BShSym): New.
162            Copied from importAPR and provided with documentation.
163    
164            * Extensions/importAPR/importAPR.py (APR_BLnSym, APR_BMkSym, APR_BShSym):
165            Moved to apr.py.
166            (APR_View): Added object ref 'ITheme'.
167    
168            * Thuban/Lib/fileutil.py, Thuban/UI/proj4dialog.py: Replaced string
169            split function by corresponding use of the string class method.
170    
171            * Thuban/Model/xmlwriter.py: Replaced string replace function by
172            corresponding string method.
173    
174    2003-10-29  Bernhard Herzog  <[email protected]>
175    
176            * Thuban/UI/baserenderer.py
177            (BaseRenderer.draw_shape_layer_incrementally): Speed up the
178            special case of a classification that only has the default group
179    
180    2003-10-27  Bernhard Herzog  <[email protected]>
181    
182            * po/fr.po, po/es.po: Updated translations from Daniel Calvelo
183    
184            * po/de.po: Update.
185    
186            * Thuban/UI/application.py
187            (ThubanApplication.ShowExceptionDialog): Handle translation of the
188            dialog message properly
189    
190    2003-10-27  Bernhard Herzog  <[email protected]>
191    
192            Rework how localization works so that we use wx's translation
193            functions when running Thuban as a normal application but not when
194            we don't need any UI, such as in the test suite. See the comment
195            in Thuban/__init__.py for details
196    
197            * Thuban/__init__.py (_): Add one level of indirection to make the
198            translation handling more flexible and to make it possible to use
199            either wx's translation services or not.
200            (gettext_identity, translation_function_installed)
201            (install_translation_function): New function to help with this
202    
203            * Thuban/UI/__init__.py: Install the wx specific translation
204            function if it's OK to do that
205    
206            * test/support.py (initthuban): Install a dummy translation
207            function so that importing Thuban.UI doesn't install a wx specific
208            one for which would need to import wxPython
209    
210    2003-10-27  Bernhard Herzog  <[email protected]>
211    
212            * HOWTO-Release: Source archives should be created first and the
213            binary packages should be created from the source archives.
214            There's an official debian package now so there's no need to test
215            the rpm on debian anymore
216    
217    2003-10-27  Bernhard Herzog  <[email protected]>
218    
219            Several rendering changes:
220    
221             - Render the selection into a separate bitmap so that only that
222               bitmap needs to be redrawn when the selection changes
223    
224             - Render incrementally showing previews and allowing interaction
225               before rendering is complete
226    
227             - Update the renderer interface a bit. Most parameters of
228               RenderMap are now parameters of the constructor
229    
230            * Thuban/UI/baserenderer.py (BaseRenderer.__init__): Add the map
231            and the update region as parameters. Update the doc-string
232            (BaseRenderer.render_map_incrementally): New. Generator function
233            to renders the map incrementally
234            (BaseRenderer.render_map): Remove the map argument (it's now in
235            the constructor) and simply iterate over the
236            render_map_incrementally generator to draw the map.
237            (BaseRenderer.draw_shape_layer_incrementally)
238            (BaseRenderer.draw_shape_layer): Renamed to
239            draw_shape_layer_incrementally and changed into a generator that
240            yields True every 500 shapes. Used by render_map_incrementally to
241            render shape layers incrementally
242    
243            * Thuban/UI/renderer.py (ScreenRenderer.RenderMap): Removed the
244            map and region parameters which are now in the constructor
245            (ScreenRenderer.RenderMapIncrementally): New. Public frontend for
246            the inherited render_map_incrementally.
247            (BaseRenderer.draw_shape_layer): Removed.
248            (ScreenRenderer.draw_selection_incrementally): New. The selection
249            drawing part of the removed draw_shape_layer as a generator
250            (ScreenRenderer.layer_shapes): Update because of the region
251            parameter change
252            (ExportRenderer.__init__): New. Extend the inherited constructor
253            with the destination region for the drawing
254            (ExportRenderer.RenderMap): Removed the map and region parameters
255            which are now in the constructor
256    
257            * Thuban/UI/view.py (MapCanvas.PreviewBitmap): New. Return a
258            bitmap suitable for a preview in a tool
259            (CanvasPanTool.MouseMove): Use the PreviewBitmap method to get the
260            bitmap
261            (MapPrintout.draw_on_dc): Adapt to new renderer interface
262            (MapCanvas.OnPaint): Handle drawing the selection bitmap if it
263            exists
264            (MapCanvas.OnIdle): Update the logic to deal with incremental
265            rendering and the selection bitmap
266            (MapCanvas._do_redraw): Handle the instantiation of the render
267            iterator and the redraws during rendering
268            (MapCanvas._render_iterator): New. Generator to incrementally
269            redraw both bitmaps
270            (MapCanvas.Export): Adapt to new renderer interface.
271            (MapCanvas.full_redraw): Reset the selection bitmap and the
272            renderer iterator too
273            (MapCanvas.redraw_selection): New. Force a redraw of the selection
274            bitmap
275            (MapCanvas.shape_selected): Only redraw the selection bitmap
276    
277            * test/test_baserenderer.py
278            (TestBaseRenderer.test_polygon_no_projection)
279            (TestBaseRenderer.test_raster_no_projection)
280            (TestBaseRenderer.test_point_map_projection)
281            (TestBaseRenderer.test_point_layer_and_map_projection)
282            (TestBaseRenderer.test_point_layer_projection)
283            (TestBaseRenderer.test_point_with_classification): Adapt to new
284            renderer interface
285    
286    2003-10-24  Bernhard Herzog  <[email protected]>
287    
288            * libraries/thuban/wxproj.cpp (draw_polygon_shape)
289            (point_in_polygon_shape, shape_centroid): Raise an exception if
290            the shape can't be read. Previously invalid shape ids would lead
291            to a segfault.
292    
293            * test/test_wxproj.py (TestShapeCentroid.test_invalid_shape_id):
294            New. test whether an exception is raised for invalid shape ids
295    
296    2003-10-24  Jan-Oliver Wagner <[email protected]>
297    
298            * Thuban/Model/proj.py (Projection.GetProjectedUnits): Added 'longlat'
299            as alias for 'latlong'.
300    
301            * Thuban/UI/projdialog.py (ProjFrame.__init__): Added 'longlat'
302            as alias for 'latlong'.
303    
304    2003-10-24  Jan-Oliver Wagner <[email protected]>
305    
306            * Thuban/UI/projdialog.py (ProjFrame.proj_selection_changed): Set
307            the projection even for the UnknownPanel.
308            (UnknownProjPanel.__init__): Define the text and create the textctrl
309            widget.
310            (UnknownProjPanel._DoLayout): Replaced static text widget by the
311            textctrl created in __init__.
312            (UnknownProjPanel.SetProjection): Set the text for the text ctrl
313            including the parameters of the projection.
314            
315    2003-10-24  Jan-Oliver Wagner <[email protected]>
316    
317            * Resources/Projections/epsg.proj: New. This is a list of
318            EPSG codes with parameters for proj. The list has been
319            generated using devtools/create_epsg.py based on the
320            file nad/epsg of the proj 4.4.7 package. Four projection
321            definitions have been deleted as they are not accepted by proj:
322            "CH1903+ / LV95", "Bern 1898 (Bern) / LV03C", "CH1903 / LV03"
323            and "HD72 / EOV".
324    
325    2003-10-22  Bernhard Herzog  <[email protected]>
326    
327            Some more tweaks to the projection dialog which should fix RT
328            #1886.
329    
330            * Thuban/UI/projlist.py (ProjectionList.Destroy): Unsubscribe from
331            the ProjFile's messages and call the base class methods correctly
332            (ProjectionList.SelectProjection): Set the wxLIST_STATE_FOCUSED
333            flag on the newly selected item too. Otherwise some other item is
334            focused and the first time the focus is moved with the keyboard
335            the selection moves in unexpected ways.
336    
337            * Thuban/UI/projdialog.py (ProjFrame.__init__): Do not set the
338            focus on the OK button, only on the projection list. That way the
339            list really has the focus initially
340            (ProjFrame.OnClose): Call the projection list's Destroy method to
341            make it unsubscribe all messages
342    
343    2003-10-21  Bernhard Herzog  <[email protected]>
344    
345            Rework the projection dialog to fix a few bugs, including RT 2166
346            and most of 2168
347    
348            * Thuban/UI/projlist.py: New. The class ProjectionList is a
349            special wxListCtrl to show a list of projections in a more MVC
350            fashion
351    
352            * Thuban/UI/projdialog.py (ProjFrame): Substantial changes
353            throughout the class. The main change is to use the ProjectionList
354            class instead of a normal wxListBox. Also, add an explicit
355            "Unknown" projection to the projection choice control.
356            (ProjPanel.__init__): Add an "unknown" ellipsoid
357            (TMPanel.__init__, LCCPanel.__init__): Tweak the order of
358            instantiation of the panel's controls to make the tab-order more
359            natural
360    
361    2003-10-21  Bernhard Herzog  <[email protected]>
362    
363            * test/test_load.py (TestSingleLayer.file_contents)
364            (TestSingleLayer.test): Add non-ascii characters to the titles of
365            session, map and layer. This is effectively a port of the
366            TestUnicodeStrings test in test_load_0_8.py which for some reason
367            was only added there.
368    
369            * test/test_load_0_9.py (TestSingleLayer.file_contents)
370            (TestSingleLayer.test): Same as in test_load.py: add non-ascii
371            characters to the titles of session, map and layer,.
372    
373    2003-10-21  Bernhard Herzog  <[email protected]>
374    
375            Add EPSG projection handling to .thuban files
376    
377            * test/test_save.py (SaveSessionTest.dtd)
378            (SaveSessionTest.testEmptySession)
379            (SaveSessionTest.testLayerProjection)
380            (SaveSessionTest.testRasterLayer)
381            (SaveSessionTest.testClassifiedLayer)
382            (SaveSessionTest.test_dbf_table)
383            (SaveSessionTest.test_joined_table)
384            (SaveSessionTest.test_save_postgis): Update to 1.0-dev namespace
385            (SaveSessionTest.testSingleLayer): Update to 1.0-dev namespace and
386            use a and epsg projection to test saving them
387    
388            * test/test_load.py (LoadSessionTest.dtd): Update to 1.0-dev
389            namespace
390            (TestLayerVisibility.file_contents, TestLabels.file_contents)
391            (TestLayerProjection.file_contents)
392            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
393            (TestPostGISLayer.file_contents)
394            (TestPostGISLayerPassword.file_contents)
395            (TestLoadError.file_contents, TestLoadError.test): Update to use
396            1.0-dev namespace
397            (TestSingleLayer.file_contents, TestSingleLayer.test): Update to
398            use 1.0-dev namespace and use an EPSG projection to test whether
399            loading it works
400    
401            * test/test_load_0_9.py: New. Effectively a copy of test_load.py
402            as of Thuban 0.9. These are now tests to determine whether Thuban
403            can still read files generated by Thuban 0.9
404    
405            * Thuban/Model/save.py (SessionSaver.write)
406            (SessionSaver.write_session): Use the 1.0 dtd and 1.0-dev
407            namespace
408            (SessionSaver.write_projection): Write the projection's epsg
409            attribute
410    
411            * Thuban/Model/load.py (SessionLoader.__init__): Also accept the
412            thuban-1.0-dev.dtd namespace
413            (SessionLoader.check_attrs): Allow a callable object as conversion
414            too
415            (SessionLoader.start_projection, SessionLoader.end_projection)
416            (SessionLoader.start_parameter): Handle the epsg attribute and
417            rename a few instance variables to lower case
418    
419            * Resources/XML/thuban-1.0.dtd: New. Only difference to
420            thuban-0.9.dtd is the epsg attribute for projections.
421    
422    2003-10-21  Bernhard Herzog  <[email protected]>
423    
424            * test/runtests.py (main): Let the user specify which tests to run
425            on the command line
426    
427            * test/support.py (ThubanTestResult.getDescription): Override to
428            give a better short description. The description can be used as a
429            parameter to run_tests to run that particular test in isolation.
430    
431    2003-10-21  Frank Koormann   <[email protected]>
432    
433            Popup menu for legend. Scheduled for the 1.2 release this was too
434            simple to implement: The popup menu is bound to the legend tree, while
435            the events are hanlded by its anchestor, the legend panel. This
436            allows reuse of all the event handlers already implemented for the
437            legend toolbar buttons.
438    
439            * Thuban/UI/legend.py (LegendPanel.__init__): EVT_MENU macros
440            to add handlers for the events issued by the popup menu.
441            (LegendPanel._OnToggleVisibility): Handler for toggling layer
442            visibility event
443            (LegendPanel._OnProjection): Handler for layer projection event.
444            (LegendTree.__init__): Added EVT_TREE_ITEM_RIGHT_CLICK
445            (LegendTree._OnRightClick): Event handler for right click, select item
446            and pop up menu.
447            (LegendTree.ToggleVisibility): Toggle layer visibility
448            (LegendTree.LayerProjection): Raise layer projection dialog for
449            current layer.
450    
451    2003-10-21  Bernhard Herzog  <[email protected]>
452    
453            * Resources/Projections/defaults.proj: Use correct DOCTYPE
454            declaration. The top-level element is projectionlist not projfile
455    
456    2003-10-20  Bernhard Herzog  <[email protected]>
457    
458            * Thuban/UI/projdialog.py (ProjFrame.write_proj_file): New. helper
459            method to write a projfile and display a busy cursor and error
460            dialogs.
461            (ProjFrame._OnSave, ProjFrame._OnAddToList, ProjFrame._OnImport)
462            (ProjFrame._OnExport, ProjFrame._OnRemove): Use write_proj_file
463            (ProjFrame.__FillAvailList): Translate "<None>" too and display a
464            busy cursor while loading the user and system prj files.
465    
466    2003-10-16  Bernhard Herzog  <[email protected]>
467    
468            * Thuban/Model/resource.py (projfile_cache): Introduce a cache for
469            ProjFile objects
470            (clear_proj_file_cache): New function to clear the cache. Mainly
471            useful for use by the test suite
472            (read_proj_file): Use the cache.
473    
474            * test/test_proj.py (TestProjFile): Clarify the doc-string
475            (ProjFileReadTests): Update doc-string
476            (ProjFileReadTests.test_get_system_proj_file): Check whether the
477            system proj files is cached.
478            (ProjFileLoadTestCase): New base class for the proj file tests
479            derived from support.FileLoadTestCase to provide some common
480            behavior.
481            (TestLoadingProjFile)
482            (TestLoadingProjFileWithEmptyProjectionlist.file_contents)
483            (TestProjFileWithInvalidParameters.file_contents): Derive from
484            ProjFileLoadTestCase
485            (TestLoadingProjFile.test_caching): New. Test whether the cache
486            works
487    
488    2003-10-16      Silke Reimer    <[email protected]>
489    
490            * debian/*: New directory with configuration files for building a thuban
491              deb-package.
492    
493    2003-10-14  Bernhard Herzog  <[email protected]>
494    
495            * test/test_proj.py: Execute support.run_tests when run as
496            __main__ so that missing unsubscribes are detected
497            (TestProjFile.tearDown): Destroy the proj_file properly
498    
499    2003-10-14  Bernhard Herzog  <[email protected]>
500    
501            * Thuban/Model/messages.py (PROJECTION_ADDED)
502            (PROJECTION_REPLACED, PROJECTION_REMOVED): New message types for
503            the ProjFile objects
504    
505            * Thuban/Model/proj.py (ProjFile): Derive from Publisher so we can
506            easily send messages when the projections change
507            (ProjFile.Add, ProjFile.Remove, ProjFile.Replace): Issue messages
508            when the change was successful
509    
510            * test/test_proj.py (TestProjFile.setUp): Subscribe to some of the
511            proj file messages
512            (TestProjFile.test_add_remove)
513            (TestProjFile.test_remove_non_existing)
514            (TestProjFile.test_replace)
515            (TestProjFile.test_replace_non_existing): Test whether the right
516            messages are sent
517    
518    2003-10-14  Bernhard Herzog  <[email protected]>
519    
520            * test/test_proj.py (TestProjFile.test): Refactor into several
521            tests
522            (TestProjFile.test_add_remove)
523            (TestProjFile.test_remove_non_existing)
524            (TestProjFile.test_replace)
525            (TestProjFile.test_replace_non_existing): Some of the new
526            individual test cases
527            (TestProjFileSimple): New class for the rest of the test cases
528            that came out of the refactoring
529            (ProjFileTest): Derive from xmlsupport.ValidationTest so that the
530            derived classes don't have to
531    
532    2003-10-13  Bernhard Herzog  <[email protected]>
533    
534            Add an optional EPSG code to the projection objects and extend the
535            .proj file format accordingly.
536    
537            * Resources/XML/projfile.dtd (element projection): Add epsg
538            attribute
539    
540            * Thuban/Model/proj.py (Projection.__init__): New parameter and
541            instance variable epsg. Update doc-string
542            (Projection.EPSGCode, Projection.Label): New methods to provide
543            access to EPSG code and a label for use in dialogs
544    
545            * Thuban/Model/resource.py (ProjFileReader.start_projection)
546            (ProjFileReader.end_projection, ProjFileSaver.write_projfile):
547            Handle the epsg code attribute when reading or writing proj files
548    
549            * Thuban/UI/projdialog.py (ProjFrame._OnSave)
550            (ProjFrame._OnAddToList, ProjFrame.__DoOnProjAvail)
551            (ProjFrame.__FillAvailList): Use the projection's Label method to
552            get the string for the list box
553    
554            * test/test_proj.py (TestProjection.test_label)
555            (TestProjection.test_label_epsg)
556            (TestProjection.test_epsgcode_for_non_epsg_projection)
557            (TestProjection.test_epsgcode_for_real_epsg_projection): New tests
558            for the label and EPSGCode methods
559            (WriteProjFileTests.doTestWrite, WriteProjFileTests.test_write)
560            (WriteProjFileTests.test_write_empty_file): Create the ProjFile
561            objects in the test cases and put the expected contents into the
562            test case methods too. Update doTestWrite accordingly
563            (TestLoadingProjFile)
564            (TestLoadingProjFileWithEmptyProjectionlist): New classes with the
565            read tests from TestProjFile.
566            (TestProjFile.doTestRead, TestProjFile.testRead): Removed. These
567            tests are now in the new classes.
568            (sample_projfile, sample_projfile_data)
569            (sample_projfile2, sample_projfile_data2): Removed. Not used
570            anymore.
571            (TestProjFile.test_read_unreadable_file): No need to reset the
572            permissions at the end anymore since we use a unique filename
573    
574    2003-10-13  Bernhard Herzog  <[email protected]>
575    
576            * test/test_proj.py: Some more refactoring of the test cases
577            (ProjFileTest): New base class for the proj file tests.
578            (TestProjFile): Derive from ProjFileTest
579            (TestProjFile.test_read_unreadable_file)
580            (TestProjFile.test_read_empty_file, TestProjFile.doTestRead): Use
581            the new filename method to get a unique filename
582            (TestProjFile.doTestWrite, TestProjFile.testWrite): Removed.
583            (WriteProjFileTests): New class for proj file write tests.
584            Contains the write test that were in TestProjFile originally.
585    
586    2003-10-13  Bernhard Herzog  <[email protected]>
587    
588            * test/test_proj.py (TestProjFile.testRead)
589            (TestProjFile.test_read_non_existing_file)
590            (TestProjFile.test_read_unreadable_file)
591            (TestProjFile.test_read_empty_file): Split into several methods.
592    
593    2003-10-10  Bernhard Herzog  <[email protected]>
594    
595            * Thuban/UI/sizers.py: New file with custom sizers.
596    
597            * Thuban/UI/projdialog.py (ProjFrame.build_dialog): Instantiate
598            all projection type specific panels and put them into a
599            NotebookLikeSizer. This way the dialog doesn't change its size
600            when a different projection is selected
601            (ProjFrame.__init__): Rename projection_panels
602            projection_panel_defs and reuse projection_panels for a list of
603            the instantiated panels.
604            (ProjFrame._show_proj_panel, ProjFrame.__DoOnProjAvail)
605            (ProjFrame.__DoOnProjChoice): Changes due to the new handling of
606            the panels
607            (UnknownProjPanel._DoLayout): Place the newlines in the message
608            differently to make the panel narrower.
609            (TMPanel._DoLayout): Layout the parameters in one column.
610    
611    2003-10-10  Bernhard Herzog  <[email protected]>
612    
613            * Thuban/UI/projdialog.py (ProjFrame.build_dialog): New method
614            that contains all the setup for the dialog's widgets, layout and
615            event handling.
616            (__): Call build_dialog to build the dialog.
617            (ProjFrame.__set_properties, ProjFrame.__do_layout): Removed.
618            Their functionality is now in build_dialog
619            (ProjFrame.__VerifyButtons, ProjFrame.__VerifyButtons)
620            (ProjFrame.__DoOnProjAvail, ProjFrame.__DoOnProjAvail)
621            (ProjFrame.__DoOnProjChoice): Small updates due to slightly
622            different widget names and hierarchy introduced with build_dialog.
623    
624    2003-10-10  Bernhard Herzog  <[email protected]>
625    
626            * README: Fix typo.
627    
628    2003-10-09  Bernhard Herzog  <[email protected]>
629    
630            * Thuban/Model/proj.py (ProjFile.Add): Do not check whether the
631            projection is already in the list. This is *a lot* faster when
632            loading files with hundreds of projections since it saves a linear
633            search. OTOH this will allow adding the same projection to the
634            user.proj file multiple times in the projection dialog but we'll
635            deal with that later
636    
637    2003-10-09  Jan-Oliver Wagner <[email protected]>
638    
639            * devtools: New. Directory for developer tools that are not intended
640            for the regular user.
641    
642            * devtools/create_epsg.py: New. Convert the epsg file of proj into
643            a python .proj file.
644    
645    2003-10-09  Bernhard Herzog  <[email protected]>
646    
647            * test/test_proj.py
648            (TestProjection.test_get_parameter_without_equals_sign): New. Test
649            whether GetParameter handles parameters without "=" sign correctly
650    
651            * Thuban/Model/proj.py (Projection.GetParameter): Handle
652            parameters that do not contain a "=". Update the doc-string
653    
654    2003-10-08  Bernhard Herzog  <[email protected]>
655    
656            * Thuban/UI/projdialog.py (ProjFrame.__set_properties): Remove the
657            length limit on the projname text control
658    
659    2003-10-08  Bernhard Herzog  <[email protected]>
660    
661            * test/test_proj.py (TestProjection.test_get_projection_units_geo)
662            (TestProjection.test_get_projection_units_normal): New. Tests for
663            the Projection.GetProjectedUnits method
664    
665    2003-10-08  Jan-Oliver Wagner <[email protected]>
666    
667            * Thuban/Model/resource.py (get_user_proj_file): small bug-fix:
668            Added missing 'val' parameter.
669    
670    2003-10-08  Bernhard Herzog  <[email protected]>
671    
672            * Thuban/UI/projdialog.py (ProjFrame.__DoOnProjAvail): When the
673            projection type of the currently selected projection is not known,
674            i.e. there's no panel for it, use the UnknownProjPanel
675            (ProjFrame.__DoOnProjChoice, ProjFrame._show_proj_panel): Split
676            the actual replacing of the proj panel into the new method
677            _show_proj_panel.
678            (UnknownProjPanel): Add doc-string.
679            (UnknownProjPanel._DoLayout): Insert a newline into the text so
680            that the panel is not so wide.
681    
682    2003-10-08  Bernhard Herzog  <[email protected]>
683    
684            * Thuban/Model/resource.py (read_proj_file): Return the warnings
685            too. Update the doc-string
686            (get_proj_files): Removed. It wasn't used anywhere
687            (get_system_proj_files, get_system_proj_file): Rename to
688            get_system_proj_file and return the ProjFile object and not a list
689            of ProjFile objects. Update the callers.
690            (get_user_proj_files, get_user_proj_file): Rename to
691            get_user_proj_file return the ProjFile object and not a list of
692            ProjFile objects. Update the callers.
693            (ProjFileReader.__init__): New instance variable for the warnings.
694            Rename the __pf ivar to projfile. Update the methods referring to
695            __pf
696            (ProjFileReader.end_projection): Catch any errors raised when
697            instantiating the projection and record that as an error. The
698            projection will not be in the final ProjFile object.
699            (ProjFileReader.GetWarnings): New method to return the warnings.
700    
701            * Thuban/UI/projdialog.py (ProjFrame.show_warnings): New method to
702            show the warnings from the projfile reader
703            (ProjFrame._OnImport): Deal with any warnings returned by
704            read_proj_file
705            (ProjFrame.__FillAvailList): Deal with any warnings returned by
706            get_system_proj_file or get_user_proj_file.
707    
708            * test/test_proj.py (TestProjFile.doTestRead): Check the warnings.
709            (TestProjFileWithInvalidParameters.file_contents): New test cases
710            to test whether read_proj_file handles invalid projection
711            parameters correctly
712            (TestProjFile.test_get_system_proj_file): New. Simple test for
713            resource.get_system_proj_file
714    
715    2003-10-07  Bernhard Herzog  <[email protected]>
716    
717            * test/test_derivedshapestore.py
718            (TestDerivedShapeStoreExceptions.tearDown): Clear the session
719            properly so that the temporary directories get deleted correctly
720    
721    2003-10-06  Bernhard Herzog  <[email protected]>
722    
723            Handle the title changes in a proper MVC way.
724    
725            * Thuban/UI/mainwindow.py (MainWindow.__init__): Subscribe to the
726            canvas' TITLE_CHANGED messages
727            (MainWindow.update_title): New. Update the main window's title
728            (MainWindow.__SetTitle): Removed. Use update_title instead.
729            (MainWindow.SetMap): Use update_title instead of __SetTitle
730            (MainWindow.RenameMap): Do change the window title explicitly
731            here. That's handled in a proper MVC way now.
732            (MainWindow.title_changed): New. Subscriber for the TITLE_CHANGED
733            messages
734    
735            * Thuban/Lib/connector.py (Conduit): New class to help classes
736            that forward messages
737    
738            * Thuban/UI/viewport.py: Forward the map's TITLE_CHANGED messages
739            (ViewPort): Derive from Conduit instead of Publisher
740            (ViewPort.Subscribe, ViewPort.Unsubscribe): Use the new base class
741            when calling the inherited versions
742            (ViewPort._subscribe_map, ViewPort._unsubscribe_map): New helper
743            methods to subscribe and unsubscribe map messages
744            (ViewPort.SetMap, ViewPort.Destroy): Use the new helper methods to
745            handle the map subscriptions
746            (ViewPort.Map, ViewPort.map_projection_changed)
747            (ViewPort.layer_projection_changed): Add or update doc-strings
748    
749            * test/test_connector.py (TestPublisher.test_issue_simple): Fix
750            typo
751            (MyConduit): Helper class for the Conduit test.
752            (TestConduit): Test cases for Conduit
753    
754            * test/test_connector.py: Use support.run_tests as main.
755    
756            * test/test_viewport.py (ViewPortTest.setUp): Also subscribe to
757            the TITLE_CHANGED messages
758            (ViewPortTest.test_forwarding_title_changed): New test to check
759            whether the viewport forwards the map's TITLE_CHANGED messages
760            (TestViewportWithPostGIS.tearDown): Call the map's Destroy method
761            after the port's because the latter may require a still functional
762            map.
763    
764    2003-10-06  Bernhard Herzog  <[email protected]>
765    
766            * Thuban/UI/application.py (ThubanApplication.maps_changed): Add
767            doc-string
768    
769    2003-10-06  Bernhard Herzog  <[email protected]>
770    
771            * test/test_viewport.py (ViewPortTest.setUp)
772            (SimpleViewPortTest.test_init_with_size): Move the test for the
773            initial size as a constructor parameter from ViewPortTest.setUp
774            method to a new separate test in SimpleViewPortTest.
775    
776    2003-10-06  Bernhard Herzog  <[email protected]>
777    
778            * test/test_viewport.py (MockView): New class derived from
779            ViewPort with a mock implementation of GetTextExtent to be used in
780            the test cases
781            (ViewPortTest.setUp): Use MockView instead of ViewPort
782    
783            * Thuban/UI/viewport.py (ViewPort.GetTextExtent): Turn this method
784            into what would be a "pure virtual function" in C++: always raise
785            NotImplementedError. Mock implementations for test cases don't
786            belong into the real code
787    
788    2003-10-02  Bernhard Herzog  <[email protected]>
789    
790            * test/test_layer.py (TestLayer.test_empty_layer): Explicitly
791            close the dbf file we create so that it's contents have been
792            written properly.
793    
794            * libraries/shapelib/shptree.c, libraries/shapelib/shpopen.c,
795            libraries/shapelib/shapefil.h, libraries/shapelib/dbfopen.c:
796            Update to shapelib 1.2.10
797    
798    2003-10-01  Jan-Oliver Wagner <[email protected]>
799    
800            * Thuban/UI/tree.py, Thuban/UI/main.py: Remove the #! line as
801            it annoys lintian which warns about these files not being
802            executable. The #! isn't necessary here since if you absolutely
803            must execute them you can always say "python <filename>".
804    
805  2003-09-26  Bernhard Herzog  <[email protected]>  2003-09-26  Bernhard Herzog  <[email protected]>
806    
807          * Thuban/Model/classgen.py (GenQuantiles0): Removed since it's          * Thuban/Model/classgen.py (GenQuantiles0): Removed since it's
# Line 1421  Line 2225 
2225    
2226          * Thuban/Model/range.py, Thuban/version.py: Remove the #! line as          * Thuban/Model/range.py, Thuban/version.py: Remove the #! line as
2227          it annoys lintian which warns about these files not being          it annoys lintian which warns about these files not being
2228          executable. The #1 isn't necessary here since if you absolutely          executable. The #! isn't necessary here since if you absolutely
2229          must execute them you can always say "python <filename>".          must execute them you can always say "python <filename>".
2230    
2231          * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Remove          * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Remove

Legend:
Removed from v.1760  
changed lines
  Added in v.1916

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26