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

Legend:
Removed from v.1790  
changed lines
  Added in v.1925

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26