/[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 1826 by bh, Tue Oct 14 15:21:27 2003 UTC revision 1965 by bh, Wed Nov 19 19:48:59 2003 UTC
# Line 1  Line 1 
1    2003-11-19  Bernhard Herzog  <[email protected]>
2    
3            * Thuban/Model/resource.py: Rework the way gdal support is
4            determined so that we can give a reason in the about why gdal is
5            not supported.
6            (gdal_support_status): New. Variable holding a string with the
7            reason for no gdal support
8    
9            * Thuban/UI/about.py (About.__init__): Add the reason why gdal is
10            not supported to the message
11    
12    2003-11-19  Bernhard Herzog  <[email protected]>
13    
14            Remove the old table interface and its test cases
15    
16            * Thuban/Model/table.py (OldTableInterfaceMixin): Removed.
17            (DBFTable, MemoryTable): Do not derive from OldTableInterfaceMixin
18            anymore
19    
20            * Thuban/Model/transientdb.py (TransientTableBase)
21            (AutoTransientTable): Do not derive from OldTableInterfaceMixin
22            anymore
23    
24            * test/test_table.py: Removed since the old interface it tests is
25            gone.
26    
27            * test/runtests.py (main): The old table interface is gone and
28            with it the deprecation warnings so remove the code that turns
29            these warnings into errors
30    
31    2003-11-19  Bernhard Herzog  <[email protected]>
32    
33            * test/test_table.py: Revert to revision 1.5 again. Changing the
34            tests to use the new table interface is completely wrong since the
35            whole purpose of the tests in this module is to test the old
36            interface.
37    
38    2003-11-18  Bernhard Herzog  <[email protected]>
39    
40            * Thuban/Model/postgisdb.py (PostGISConnection.MatchesParameters):
41            New. Test whether the connection matches a set of connection
42            parameters
43    
44            * Thuban/UI/dbdialog.py (DBFrame.conns_changed): Fix doc-string
45            (DBFrame.OnAdd): Use the new MatchesParameters method when looking
46            for existing connections with the same parameters and break out of
47            the loop correctly.
48    
49            * test/test_postgis_db.py (TestBriefDescription)
50            (TestPostGISSimple.test_brief_description): Rename
51            TestBriefDescription to TestPostGISSimple and the test method to
52            test_brief_description so that we can add more test methods.
53            (TestPostGISSimple.test_matches_parameters): New. Test the new
54            MatchesParameters method
55    
56    2003-11-18  Bernhard Herzog  <[email protected]>
57    
58            * Thuban/Lib/connector.py (Publisher): Introduce a new flag,
59            _was_destroyed, to indicate whether an publisher instance has
60            already been destroyed.
61            (Publisher.Unsubscribe): Only disconnect if the publisher has not
62            been destroyed yet.
63            (Publisher.Destroy): Set the _was_destroyed flag to true.
64    
65            * test/test_connector.py
66            (TestPublisher.test_unsubscribe_after_destroy): New. Test that
67            calling Unsubscribe after Destroy doesn't raise an exception
68    
69    2003-11-14  Bernhard Herzog  <[email protected]>
70    
71            * Thuban/UI/identifyview.py (IdentifyView.selected_shape): Fix
72            typo in doc-string
73    
74    2003-11-13  Bernhard Herzog  <[email protected]>
75    
76            Quote table and column names properly for postgis.
77    
78            * Thuban/Model/postgisdb.py (quote_identifier): New. Function to
79            quote an identifier for use in an sql statement
80            (PostGISColumn.__init__): Add the quoted_name attribute
81            (PostGISTable.__init__): New instance variable quoted_tablename
82            (PostGISTable._fetch_table_information): Use the quoted table
83            name. New isntance variable quoted_geo_col with a quoted version
84            of geometry_column
85            (PostGISTable.NumRows, PostGISTable.RowIdToOrdinal)
86            (PostGISTable.RowOrdinalToId): Use the quoted table name
87            (PostGISTable.ReadValue, PostGISTable.ValueRange)
88            (PostGISTable.UniqueValues, PostGISTable.SimpleQuery)
89            (PostGISShapeStore.BoundingBox, PostGISShapeStore.Shape)
90            (PostGISShapeStore.AllShapes, PostGISShapeStore.ShapesInRegion):
91            Use quoted table and column names
92    
93            * test/test_postgis_db.py (TestPostGISSpecialCases)
94            (TestPostGISIgnoredColumns): Rename the class to
95            TestPostGISSpecialCases because that better describes the new
96            cases
97            (TestPostGISSpecialCases.test_unsupported_types)
98            (TestPostGISSpecialCases.test): Rename the method to
99            test_unsupported_types because we need a more descriptive name now
100            that there are more methods
101            (TestPostGISSpecialCases.test_table_name_quoting)
102            (TestPostGISSpecialCases.test_column_name_quoting)
103            (TestPostGISSpecialCases.test_shapestore_name_quoting): New test
104            cases to test quoting of table and column names in PostGISTable
105            and PostGISShapeStore
106    
107            * test/postgissupport.py
108            (skip_if_addgeometrycolumn_does_not_use_quote_ident): New. Skip if
109            AddGeometryColumn desn't support table or column names with sapces
110            or double quotes
111    
112    2003-11-12  Jan-Oliver Wagner <[email protected]>
113    
114            * Extensions/wms/__init__.py: New: Init to make this
115            directory a package.
116    
117            * Extensions/wms/wms.py: New: Provide layers via OGC WMS.
118    
119    2003-11-11  Bernhard Herzog  <[email protected]>
120    
121            * Thuban/Model/resource.py (EPSG_DEPRECATED_PROJ_FILE): New.
122            Constant for the file woth deprecated epsg projections
123            (get_system_proj_file): Update doc-string
124    
125            * Thuban/UI/projdialog.py (ProjFrame.build_dialog): Add a space
126            above the EPS widgets, introduce a check box for the deprecated
127            eps projections and a label for the epsg widgets
128            (ProjFrame._OnShowEPSG): Handle the deprecated EPSG projections
129            too
130    
131    2003-11-11  Bernhard Herzog  <[email protected]>
132    
133            Avoid warnings when run under Python 2.3
134    
135            * Thuban/UI/baserenderer.py (BaseRenderer.draw_point_shape)
136            (BaseRenderer.draw_label_layer): Coordinates must be ints.
137    
138            * Thuban/UI/renderer.py (MapRenderer.make_point): Turn this into a
139            real method so that we can convert to int.
140            (MapRenderer.label_font): The font size mist be an int.
141    
142            * Thuban/UI/common.py (Color2wxColour): The color values must be
143            ints. Also, remove the unnecessary asserts.
144    
145            * test/test_load_0_8.py (TestUnicodeStrings.file_contents)
146            (TestUnicodeStrings.test): Python source code should not contain
147            non-ascii characters unless an encoding is specified in the file.
148            Therefore use \x escapes in the string literals for non-ascii
149            characters.
150    
151    2003-11-11  Bernhard Herzog  <[email protected]>
152    
153            * Thuban/Model/resource.py (get_system_proj_file): Add a filename
154            parameter so that this function can be used for all proj files in
155            Resource/Projections
156            (DEFAULT_PROJ_FILE, EPSG_PROJ_FILE): New. Predefined filenames for
157            get_system_proj_file
158    
159            * Thuban/UI/projdialog.py (ProjFrame.__init__): Instead of one
160            ProjFile self.__sysProjFile use a dictionary of system ProjFile
161            objects self._sys_proj_files
162            (ProjFrame.build_dialog): Adapt to the new changes in the
163            ProjectionList constructor. Add a check button to toggle whether
164            EPSG projections are shown
165            (ProjFrame._OnShowEPSG): New. Handler for the epsg check button
166            events.
167            (ProjFrame.load_user_proj, ProjFrame.load_system_proj): Only show
168            the busy cursor if the files have not yet been loaded by the
169            dialog.
170            (ProjFrame.load_system_proj): Add a parameter for the name of the
171            proj file. Maintain the dictionary of system projections
172            self._sys_proj_files
173    
174            * Thuban/UI/projlist.py (ProjectionList): Merge the system_projs,
175            user_projs parameters into one parameter proj_files which is a
176            list of proj files.
177            (ProjectionList._subscribe_proj_files)
178            (ProjectionList._unsubscribe_proj_files): New. Move
179            subscription/unsubscription of projfile messages to separate
180            methods
181            (ProjectionList.Destroy): The unsubscribe is now done in
182            _unsubscribe_proj_files
183            (ProjectionList.update_projections): We now have a list of proj
184            file objects
185            (ProjectionList.SetProjFiles): New method to set a new list of
186            proj file objects
187    
188            * test/test_proj.py (ProjFileReadTests.test_get_system_proj_file):
189            Specify explicitly which system proj file to load.
190    
191    2003-11-11  Bernhard Herzog  <[email protected]>
192    
193            * Thuban/Model/load.py (SessionLoader.Destroy): New. Clear all
194            instance variables to cut cyclic references. The GC would have
195            collected the loader eventually but it can happen that it doesn't
196            run at all until thuban is closed (2.3 but not 2.2 tries a bit
197            harder and forces a collection when the interpreter terminates)
198            (load_session): Call the handler's Destroy method to make sure
199            that it gets garbage collected early. Otherwise it will be
200            collected very late if at all and it holds some references to e.g.
201            shapestores and the session which can lead to leaks (of e.g. the
202            temporary files)
203    
204            * test/test_load.py (TestSingleLayer.test_leak): New. test for the
205            resource leak in load_session
206    
207    2003-11-10  Bernhard Herzog  <[email protected]>
208    
209            * Thuban/UI/baserenderer.py: Add a way to specify how layers in
210            extensions are to be rendered.
211            (_renderer_extensions): New. List with renderer for layers in
212            extensions
213            (add_renderer_extension): New. Add a renderer extension
214            (init_renderer_extensions): New. Init the renderer extensions
215            (BaseRenderer.render_map_incrementally): Search
216            _renderer_extensions for how to draw unknown layer types
217            (BaseRenderer.draw_raster_data): Add format parameter so that
218            formats other than BMP can be drawn
219            (BaseRenderer.draw_raster_layer): Pass an explicit format to
220            draw_raster_data
221    
222            * Thuban/UI/renderer.py (raster_format_map): New. Mapping form the
223            strings of the format parameter of draw_raster_data method to wx
224            constants
225            (MapRenderer.draw_raster_data): Add the format parameter and use
226            raster_format_map to map it to the right wxwindows constant for
227            wxImageFromStream
228    
229            * test/test_baserenderer.py (SimpleRenderer.draw_raster_data): Add
230            the format parameter and record it
231            (TestBaseRenderer.test_raster_no_projection): check the format
232            paramter of the draw_raster_data method
233            (TestBaseRenderer.test_renderer_extension): New. Test the renderer
234            extension facility
235    
236    2003-11-07  Bernhard Herzog  <[email protected]>
237    
238            Tweak the usage of the sqlite database to make common use cases
239            more responsive. In most cases copying the data to the sqlite
240            database takes so long that using sqlite doesn't have enough
241            advantages.
242    
243            * Thuban/Model/transientdb.py (TransientTableBase.ValueRange): Add
244            comments about performance and query the min and max in separate
245            statements because only that way will indexes be used.
246            (TransientTableBase.UniqueValues): Add some comments about
247            performance.
248            (AutoTransientTable.ValueRange, AutoTransientTable.UniqueValues):
249            Do not copy the data to the transient DB but use the transient
250            copy if it exists. See the new comments for the performance trade
251            offs
252    
253            * test/test_transientdb.py
254            (TestTransientTable.test_auto_transient_table): Make sure that the
255            data is copied to the transient database at some point.
256    
257    2003-11-03  Bernhard Herzog  <[email protected]>
258    
259            * Thuban/Model/data.py (ShapefileStore.ShapesInRegion): Bind some
260            globals to locals so that it's a bit faster
261    
262    2003-11-03  Bernhard Herzog  <[email protected]>
263    
264            * Thuban/UI/baserenderer.py
265            (BaseRenderer.draw_shape_layer_incrementally): Use the ReadValue
266            method. ReadValue is faster than ReadRowAsDict since it only reads
267            one cell especially now that the dbf file objects actually
268            implement it.
269    
270            * Thuban/Model/table.py (DBFTable.ReadValue): Use the new
271            read_attribute method of the dbf objects
272    
273    2003-11-03  Bernhard Herzog  <[email protected]>
274    
275            * Extensions/profiling/profiling.py (popup_dialog_box): New config
276            variable to indicate whether the result should be shown in a
277            dialog box
278            (profile_screen_renderer, time_screen_renderer): Only show a
279            dialog box if popup_dialog_box is true.
280            (profile_screen_renderer): Flush stdout after the printing the
281            first part of the "profiling..." message
282    
283            * Thuban/UI/baserenderer.py
284            (BaseRenderer.draw_shape_layer_incrementally): Cache the pens and
285            brushes for the groups so that they're not created over and over
286            again
287    
288            * Thuban/Model/classification.py (Classification.__getattr__)
289            (Classification._compile_classification)
290            (Classification._clear_compiled_classification): New. Methods to
291            manage a 'compiled' representation of the classification groups
292            which is created on demand
293            (Classification.InsertGroup, Classification.RemoveGroup)
294            (Classification.ReplaceGroup): reset the compiled representation
295            (Classification.FindGroup): Use the compiled representation to
296            find the matching group
297            (ClassGroupRange.GetRangeTuple): New. Return the range as a tuple
298    
299    2003-10-31  Bernhard Herzog  <[email protected]>
300    
301            * Thuban/Model/classification.py (Classification.SetDefaultGroup):
302            Send a CLASS_CHANGED message
303            (Classification.RemoveGroup): Send a CLASS_CHANGED message and do
304            not return the removed group since it wasn't used.
305    
306            * test/test_classification.py
307            (TestClassification.test_set_default_group): New. Test the
308            SetDefaultGroup method
309            (TestClassification.test_insert_group): New. Test the InsertGroup
310            method
311            (TestClassification.test_remove_group): New. Test the RemoveGroup
312            method
313            (TestClassification.test_replace_group): New. Test the
314            ReplaceGroup method
315    
316    2003-10-31  Bernhard Herzog  <[email protected]>
317    
318            * test/test_classification.py (TestClassification.setUp):
319            Subscribe to the CLASS_CHANGED messages
320            (TestClassification.tearDown): New. Destroy the classification
321            properly
322            (TestClassification.test_defaults): Add tests for the default line
323            width and whether no messages were sent yet
324            (TestClassification.test_set_default_properties): Add tests for
325            messages and setting the default line width
326            (TestClassification.test_add_singleton)
327            (TestClassification.test_add_range)
328            (TestClassification.test_multiple_groups): Add tests for messages
329    
330    2003-10-31  Bernhard Herzog  <[email protected]>
331    
332            Some more refactoring in preparation for new tests:
333    
334            * test/test_classification.py (TestClassification.setUp): New.
335            Instantiate the classification here. Update the test methods
336            accordingly.
337            (TestClassification.test_multiple_groups): Make sure that the two
338            singletons matching 1 are considered different.
339    
340    2003-10-31  Bernhard Herzog  <[email protected]>
341    
342            * test/test_classification.py (red, green, blue): New. These
343            constants were used in several cases. Update the relevant methods.
344            (TestClassification.test_defaults)
345            (TestClassification.test_set_default_properties)
346            (TestClassification.test_add_singleton)
347            (TestClassification.test_add_range)
348            (TestClassification.test_multiple_groups)
349            (TestClassification.test_deepcopy): New. These were formerly all
350            part of the single method test.
351            (TestClassification.test_deepcopy): Removed.
352            (TestClassIterator): Removed. The test case is now a method of
353            TestClassification since it tests part of the public interface of
354            Classification
355            (TestClassification.test_iterator): New. Used to be
356            TestClassIterator effectively
357    
358    2003-10-31  Jan-Oliver Wagner <[email protected]>
359    
360            GUIfied the functions of the profiling extension.
361    
362            * /Extensions/profiling/__init__.py: New: Init to make this
363            directory a package.
364    
365            * Extensions/profiling/profiling.py: Moved menu entries to
366            the Extensions menu. Applied _() for strings.
367            (profile_screen_renderer): Catch the detailed printout and present
368            it in a dialog.
369            (time_screen_renderer): Raise a dialog to present the result instead
370            of printing it to stdout.
371    
372    2003-10-31  Bernhard Herzog  <[email protected]>
373    
374            * test/test_classification.py (TestClassGroupProperties)
375            (TestClassGroup, TestClassGroupDefault, TestClassGroupRange)
376            (TestClassGroupSingleton, TestClassIterator, TestClassification):
377            Split TestClassification into several classes, one for each class
378            being tested. TestClassification itself now only tests
379            Classification. This split makes changes to the tests a bit easier
380    
381    2003-10-31  Bernhard Herzog  <[email protected]>
382    
383            * Extensions/profiling/profiling.py: New. Extension to measure
384            Thuban performance
385    
386    2003-10-31  Frank Koormann <[email protected]>
387    
388            Added two items to legend popup menu: Remove Layer and Show Layer Table
389    
390            * Thuban/UI/legend.py (LegendPanel._OnRemoveLayer,
391            LegendPanel._OnShowTable): New event handlers, call the corresponding
392            mainwindow methods.
393            (LegendTree._OnRightClick): Added items to popup menu.
394    
395    2003-10-30  Bernhard Herzog  <[email protected]>
396    
397            * Thuban/UI/dialogs.py (ThubanFrame.__init__): Handle
398            EVT_WINDOW_DESTROY
399            (ThubanFrame.OnDestroy): New. Handler for EVT_WINDOW_DESTROY. Does
400            nothing but is convenient for the derived classes.
401    
402            * Thuban/UI/tableview.py
403            (TableFrame.OnDestroy, LayerTableFrame.OnDestroy): New.
404            Unsubscribe the messages here not in OnClose because that might
405            get called multiple times. Fixes RT #2196
406            (TableFrame.OnClose, LayerTableFrame.OnClose): Removed. Not needed
407            anymore.
408    
409            * README: Update the minimum requirement for wxPython. Since we
410            now use the EVT_WINDOW_DESTROY event, we need at least 2.4.0.4,
411            the version in which that was introduced for all platforms
412    
413    2003-10-30  Frank Koormann <[email protected]>
414    
415            * Thuban/UI/join.py (JoinDialog.OnJoin): Wrapped the major parts of
416            the join process in a ThubanBeginBusyCursor, ThubanEndBusyCursor
417            frame.
418    
419    2003-10-30  Jan-Oliver Wagner <[email protected]>
420    
421            Improved APR import extension, added further EPSG definitions
422            and some cleanup regarding string class.
423    
424            * test/test_proj.py (TestProjection.test_get_projection_units_geo):
425            Added test for alias 'longlat'.
426    
427            * Resources/Projections/epsg-deprecated.proj: New. Contains
428            deprecated EPSG definitions.
429    
430            * Extensions/importAPR/odb.py (ODBBaseObject.TreeInfo): Added
431            the variable names for objects.
432    
433            * Extensions/importAPR/apr.py (APR_BLnSym, APR_BMkSym, APR_BShSym): New.
434            Copied from importAPR and provided with documentation.
435    
436            * Extensions/importAPR/importAPR.py (APR_BLnSym, APR_BMkSym, APR_BShSym):
437            Moved to apr.py.
438            (APR_View): Added object ref 'ITheme'.
439    
440            * Thuban/Lib/fileutil.py, Thuban/UI/proj4dialog.py: Replaced string
441            split function by corresponding use of the string class method.
442    
443            * Thuban/Model/xmlwriter.py: Replaced string replace function by
444            corresponding string method.
445    
446    2003-10-29  Bernhard Herzog  <[email protected]>
447    
448            * Thuban/UI/baserenderer.py
449            (BaseRenderer.draw_shape_layer_incrementally): Speed up the
450            special case of a classification that only has the default group
451    
452    2003-10-27  Bernhard Herzog  <[email protected]>
453    
454            * po/fr.po, po/es.po: Updated translations from Daniel Calvelo
455    
456            * po/de.po: Update.
457    
458            * Thuban/UI/application.py
459            (ThubanApplication.ShowExceptionDialog): Handle translation of the
460            dialog message properly
461    
462    2003-10-27  Bernhard Herzog  <[email protected]>
463    
464            Rework how localization works so that we use wx's translation
465            functions when running Thuban as a normal application but not when
466            we don't need any UI, such as in the test suite. See the comment
467            in Thuban/__init__.py for details
468    
469            * Thuban/__init__.py (_): Add one level of indirection to make the
470            translation handling more flexible and to make it possible to use
471            either wx's translation services or not.
472            (gettext_identity, translation_function_installed)
473            (install_translation_function): New function to help with this
474    
475            * Thuban/UI/__init__.py: Install the wx specific translation
476            function if it's OK to do that
477    
478            * test/support.py (initthuban): Install a dummy translation
479            function so that importing Thuban.UI doesn't install a wx specific
480            one for which would need to import wxPython
481    
482    2003-10-27  Bernhard Herzog  <[email protected]>
483    
484            * HOWTO-Release: Source archives should be created first and the
485            binary packages should be created from the source archives.
486            There's an official debian package now so there's no need to test
487            the rpm on debian anymore
488    
489    2003-10-27  Bernhard Herzog  <[email protected]>
490    
491            Several rendering changes:
492    
493             - Render the selection into a separate bitmap so that only that
494               bitmap needs to be redrawn when the selection changes
495    
496             - Render incrementally showing previews and allowing interaction
497               before rendering is complete
498    
499             - Update the renderer interface a bit. Most parameters of
500               RenderMap are now parameters of the constructor
501    
502            * Thuban/UI/baserenderer.py (BaseRenderer.__init__): Add the map
503            and the update region as parameters. Update the doc-string
504            (BaseRenderer.render_map_incrementally): New. Generator function
505            to renders the map incrementally
506            (BaseRenderer.render_map): Remove the map argument (it's now in
507            the constructor) and simply iterate over the
508            render_map_incrementally generator to draw the map.
509            (BaseRenderer.draw_shape_layer_incrementally)
510            (BaseRenderer.draw_shape_layer): Renamed to
511            draw_shape_layer_incrementally and changed into a generator that
512            yields True every 500 shapes. Used by render_map_incrementally to
513            render shape layers incrementally
514    
515            * Thuban/UI/renderer.py (ScreenRenderer.RenderMap): Removed the
516            map and region parameters which are now in the constructor
517            (ScreenRenderer.RenderMapIncrementally): New. Public frontend for
518            the inherited render_map_incrementally.
519            (BaseRenderer.draw_shape_layer): Removed.
520            (ScreenRenderer.draw_selection_incrementally): New. The selection
521            drawing part of the removed draw_shape_layer as a generator
522            (ScreenRenderer.layer_shapes): Update because of the region
523            parameter change
524            (ExportRenderer.__init__): New. Extend the inherited constructor
525            with the destination region for the drawing
526            (ExportRenderer.RenderMap): Removed the map and region parameters
527            which are now in the constructor
528    
529            * Thuban/UI/view.py (MapCanvas.PreviewBitmap): New. Return a
530            bitmap suitable for a preview in a tool
531            (CanvasPanTool.MouseMove): Use the PreviewBitmap method to get the
532            bitmap
533            (MapPrintout.draw_on_dc): Adapt to new renderer interface
534            (MapCanvas.OnPaint): Handle drawing the selection bitmap if it
535            exists
536            (MapCanvas.OnIdle): Update the logic to deal with incremental
537            rendering and the selection bitmap
538            (MapCanvas._do_redraw): Handle the instantiation of the render
539            iterator and the redraws during rendering
540            (MapCanvas._render_iterator): New. Generator to incrementally
541            redraw both bitmaps
542            (MapCanvas.Export): Adapt to new renderer interface.
543            (MapCanvas.full_redraw): Reset the selection bitmap and the
544            renderer iterator too
545            (MapCanvas.redraw_selection): New. Force a redraw of the selection
546            bitmap
547            (MapCanvas.shape_selected): Only redraw the selection bitmap
548    
549            * test/test_baserenderer.py
550            (TestBaseRenderer.test_polygon_no_projection)
551            (TestBaseRenderer.test_raster_no_projection)
552            (TestBaseRenderer.test_point_map_projection)
553            (TestBaseRenderer.test_point_layer_and_map_projection)
554            (TestBaseRenderer.test_point_layer_projection)
555            (TestBaseRenderer.test_point_with_classification): Adapt to new
556            renderer interface
557    
558    2003-10-24  Bernhard Herzog  <[email protected]>
559    
560            * libraries/thuban/wxproj.cpp (draw_polygon_shape)
561            (point_in_polygon_shape, shape_centroid): Raise an exception if
562            the shape can't be read. Previously invalid shape ids would lead
563            to a segfault.
564    
565            * test/test_wxproj.py (TestShapeCentroid.test_invalid_shape_id):
566            New. test whether an exception is raised for invalid shape ids
567    
568    2003-10-24  Jan-Oliver Wagner <[email protected]>
569    
570            * Thuban/Model/proj.py (Projection.GetProjectedUnits): Added 'longlat'
571            as alias for 'latlong'.
572    
573            * Thuban/UI/projdialog.py (ProjFrame.__init__): Added 'longlat'
574            as alias for 'latlong'.
575    
576    2003-10-24  Jan-Oliver Wagner <[email protected]>
577    
578            * Thuban/UI/projdialog.py (ProjFrame.proj_selection_changed): Set
579            the projection even for the UnknownPanel.
580            (UnknownProjPanel.__init__): Define the text and create the textctrl
581            widget.
582            (UnknownProjPanel._DoLayout): Replaced static text widget by the
583            textctrl created in __init__.
584            (UnknownProjPanel.SetProjection): Set the text for the text ctrl
585            including the parameters of the projection.
586            
587    2003-10-24  Jan-Oliver Wagner <[email protected]>
588    
589            * Resources/Projections/epsg.proj: New. This is a list of
590            EPSG codes with parameters for proj. The list has been
591            generated using devtools/create_epsg.py based on the
592            file nad/epsg of the proj 4.4.7 package. Four projection
593            definitions have been deleted as they are not accepted by proj:
594            "CH1903+ / LV95", "Bern 1898 (Bern) / LV03C", "CH1903 / LV03"
595            and "HD72 / EOV".
596    
597    2003-10-22  Bernhard Herzog  <[email protected]>
598    
599            Some more tweaks to the projection dialog which should fix RT
600            #1886.
601    
602            * Thuban/UI/projlist.py (ProjectionList.Destroy): Unsubscribe from
603            the ProjFile's messages and call the base class methods correctly
604            (ProjectionList.SelectProjection): Set the wxLIST_STATE_FOCUSED
605            flag on the newly selected item too. Otherwise some other item is
606            focused and the first time the focus is moved with the keyboard
607            the selection moves in unexpected ways.
608    
609            * Thuban/UI/projdialog.py (ProjFrame.__init__): Do not set the
610            focus on the OK button, only on the projection list. That way the
611            list really has the focus initially
612            (ProjFrame.OnClose): Call the projection list's Destroy method to
613            make it unsubscribe all messages
614    
615    2003-10-21  Bernhard Herzog  <[email protected]>
616    
617            Rework the projection dialog to fix a few bugs, including RT 2166
618            and most of 2168
619    
620            * Thuban/UI/projlist.py: New. The class ProjectionList is a
621            special wxListCtrl to show a list of projections in a more MVC
622            fashion
623    
624            * Thuban/UI/projdialog.py (ProjFrame): Substantial changes
625            throughout the class. The main change is to use the ProjectionList
626            class instead of a normal wxListBox. Also, add an explicit
627            "Unknown" projection to the projection choice control.
628            (ProjPanel.__init__): Add an "unknown" ellipsoid
629            (TMPanel.__init__, LCCPanel.__init__): Tweak the order of
630            instantiation of the panel's controls to make the tab-order more
631            natural
632    
633    2003-10-21  Bernhard Herzog  <[email protected]>
634    
635            * test/test_load.py (TestSingleLayer.file_contents)
636            (TestSingleLayer.test): Add non-ascii characters to the titles of
637            session, map and layer. This is effectively a port of the
638            TestUnicodeStrings test in test_load_0_8.py which for some reason
639            was only added there.
640    
641            * test/test_load_0_9.py (TestSingleLayer.file_contents)
642            (TestSingleLayer.test): Same as in test_load.py: add non-ascii
643            characters to the titles of session, map and layer,.
644    
645    2003-10-21  Bernhard Herzog  <[email protected]>
646    
647            Add EPSG projection handling to .thuban files
648    
649            * test/test_save.py (SaveSessionTest.dtd)
650            (SaveSessionTest.testEmptySession)
651            (SaveSessionTest.testLayerProjection)
652            (SaveSessionTest.testRasterLayer)
653            (SaveSessionTest.testClassifiedLayer)
654            (SaveSessionTest.test_dbf_table)
655            (SaveSessionTest.test_joined_table)
656            (SaveSessionTest.test_save_postgis): Update to 1.0-dev namespace
657            (SaveSessionTest.testSingleLayer): Update to 1.0-dev namespace and
658            use a and epsg projection to test saving them
659    
660            * test/test_load.py (LoadSessionTest.dtd): Update to 1.0-dev
661            namespace
662            (TestLayerVisibility.file_contents, TestLabels.file_contents)
663            (TestLayerProjection.file_contents)
664            (TestRasterLayer.file_contents, TestJoinedTable.file_contents)
665            (TestPostGISLayer.file_contents)
666            (TestPostGISLayerPassword.file_contents)
667            (TestLoadError.file_contents, TestLoadError.test): Update to use
668            1.0-dev namespace
669            (TestSingleLayer.file_contents, TestSingleLayer.test): Update to
670            use 1.0-dev namespace and use an EPSG projection to test whether
671            loading it works
672    
673            * test/test_load_0_9.py: New. Effectively a copy of test_load.py
674            as of Thuban 0.9. These are now tests to determine whether Thuban
675            can still read files generated by Thuban 0.9
676    
677            * Thuban/Model/save.py (SessionSaver.write)
678            (SessionSaver.write_session): Use the 1.0 dtd and 1.0-dev
679            namespace
680            (SessionSaver.write_projection): Write the projection's epsg
681            attribute
682    
683            * Thuban/Model/load.py (SessionLoader.__init__): Also accept the
684            thuban-1.0-dev.dtd namespace
685            (SessionLoader.check_attrs): Allow a callable object as conversion
686            too
687            (SessionLoader.start_projection, SessionLoader.end_projection)
688            (SessionLoader.start_parameter): Handle the epsg attribute and
689            rename a few instance variables to lower case
690    
691            * Resources/XML/thuban-1.0.dtd: New. Only difference to
692            thuban-0.9.dtd is the epsg attribute for projections.
693    
694    2003-10-21  Bernhard Herzog  <[email protected]>
695    
696            * test/runtests.py (main): Let the user specify which tests to run
697            on the command line
698    
699            * test/support.py (ThubanTestResult.getDescription): Override to
700            give a better short description. The description can be used as a
701            parameter to run_tests to run that particular test in isolation.
702    
703    2003-10-21  Frank Koormann   <[email protected]>
704    
705            Popup menu for legend. Scheduled for the 1.2 release this was too
706            simple to implement: The popup menu is bound to the legend tree, while
707            the events are hanlded by its anchestor, the legend panel. This
708            allows reuse of all the event handlers already implemented for the
709            legend toolbar buttons.
710    
711            * Thuban/UI/legend.py (LegendPanel.__init__): EVT_MENU macros
712            to add handlers for the events issued by the popup menu.
713            (LegendPanel._OnToggleVisibility): Handler for toggling layer
714            visibility event
715            (LegendPanel._OnProjection): Handler for layer projection event.
716            (LegendTree.__init__): Added EVT_TREE_ITEM_RIGHT_CLICK
717            (LegendTree._OnRightClick): Event handler for right click, select item
718            and pop up menu.
719            (LegendTree.ToggleVisibility): Toggle layer visibility
720            (LegendTree.LayerProjection): Raise layer projection dialog for
721            current layer.
722    
723    2003-10-21  Bernhard Herzog  <[email protected]>
724    
725            * Resources/Projections/defaults.proj: Use correct DOCTYPE
726            declaration. The top-level element is projectionlist not projfile
727    
728    2003-10-20  Bernhard Herzog  <[email protected]>
729    
730            * Thuban/UI/projdialog.py (ProjFrame.write_proj_file): New. helper
731            method to write a projfile and display a busy cursor and error
732            dialogs.
733            (ProjFrame._OnSave, ProjFrame._OnAddToList, ProjFrame._OnImport)
734            (ProjFrame._OnExport, ProjFrame._OnRemove): Use write_proj_file
735            (ProjFrame.__FillAvailList): Translate "<None>" too and display a
736            busy cursor while loading the user and system prj files.
737    
738    2003-10-16  Bernhard Herzog  <[email protected]>
739    
740            * Thuban/Model/resource.py (projfile_cache): Introduce a cache for
741            ProjFile objects
742            (clear_proj_file_cache): New function to clear the cache. Mainly
743            useful for use by the test suite
744            (read_proj_file): Use the cache.
745    
746            * test/test_proj.py (TestProjFile): Clarify the doc-string
747            (ProjFileReadTests): Update doc-string
748            (ProjFileReadTests.test_get_system_proj_file): Check whether the
749            system proj files is cached.
750            (ProjFileLoadTestCase): New base class for the proj file tests
751            derived from support.FileLoadTestCase to provide some common
752            behavior.
753            (TestLoadingProjFile)
754            (TestLoadingProjFileWithEmptyProjectionlist.file_contents)
755            (TestProjFileWithInvalidParameters.file_contents): Derive from
756            ProjFileLoadTestCase
757            (TestLoadingProjFile.test_caching): New. Test whether the cache
758            works
759    
760    2003-10-16      Silke Reimer    <[email protected]>
761    
762            * debian/*: New directory with configuration files for building a thuban
763              deb-package.
764    
765    2003-10-14  Bernhard Herzog  <[email protected]>
766    
767            * test/test_proj.py: Execute support.run_tests when run as
768            __main__ so that missing unsubscribes are detected
769            (TestProjFile.tearDown): Destroy the proj_file properly
770    
771  2003-10-14  Bernhard Herzog  <[email protected]>  2003-10-14  Bernhard Herzog  <[email protected]>
772    
773          * Thuban/Model/messages.py (PROJECTION_ADDED)          * Thuban/Model/messages.py (PROJECTION_ADDED)

Legend:
Removed from v.1826  
changed lines
  Added in v.1965

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26