/[thuban]/branches/greater-ms3/thuban/ChangeLog
ViewVC logotype

Diff of /branches/greater-ms3/thuban/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 634 by jonathan, Wed Apr 9 15:41:58 2003 UTC revision 792 by jan, Wed Apr 30 12:26:57 2003 UTC
# Line 1  Line 1 
1    2003-04-30  Jan-Oliver Wagner <[email protected]>
2    
3            * Thuban/Model/layer.py (Layer.SetShapeStore): Fixed a bug:
4            don't set the Classification to None if the classfication field
5            is None (ie only a DEFAULT).
6    
7    2003-04-30  Bernhard Herzog  <[email protected]>
8    
9            * Thuban/UI/view.py: Fix some typos.
10    
11            * Thuban/UI/mainwindow.py (MainWindow.identify_view_on_demand): Do
12            not pop up the dialog if the selection becomes empty (this could
13            happen if e.g. a new selection is opened while the identify tool
14            is active and dialog had been closed)
15    
16    2003-04-30  Bernhard Herzog  <[email protected]>
17    
18            * Thuban/Model/transientdb.py (TransientTableBase.__init__): New
19            instance variable read_record_last_result
20            (TransientTableBase.read_record): Make sure reading the same
21            record twice works. The implementation uses the new instance
22            variable read_record_last_result
23    
24            * test/test_transientdb.py
25            (TestTransientTable.test_transient_table_read_twice): New test
26            case for the above bug-fix.
27    
28    2003-04-29  Bernhard Herzog  <[email protected]>
29    
30            * Thuban/Model/session.py (Session.Destroy): Explicitly close the
31            transient DB if it exists to make sure it doesn't leave a journal
32            file in the temp directory.
33    
34            * Thuban/Model/transientdb.py (TransientDatabase.close): Set
35            self.conn to None after closing the connection to make sure it's
36            not closed twice
37    
38    2003-04-29  Jonathan Coles   <[email protected]>
39    
40            Add a visible parameter in the layer XML tag. The default value is
41            "true". If anything other than "false" is specified we also assume
42            "true". Addresses RTbug #1025.
43    
44            * Doc/thuban.dtd: Add visible parameter to a layer.
45    
46            * Thuban/Model/layer.py (BaseLayer.__init__): Change default value
47            of visible from 1 to True.
48            (Layer.__init__): Change default value of visible from 1 to True.
49    
50            * Thuban/Model/load.py (SessionLoader.start_layer): Read visible
51            parameter.
52    
53            * Thuban/Model/save.py (SessionSaver.write_layer): Save visible
54            parameter.
55    
56            * test/test_load.py: Add new test data contents_test_visible.
57            (LoadSessionTest.setUp): save test data.
58            (LoadSessionTest.testLayerVisibility): Test if the visible flag
59            is loaded correctly.
60    
61            * test/test_save.py (SaveSessionTest.testSingleLayer): Add test
62            for saving an invisible layer.
63    
64    2003-04-29  Jonathan Coles   <[email protected]>
65    
66            * Thuban/UI/mainwindow.py (MainWindow.SetMap): Look up the
67            legend dialog box and tell it to change its map to the one
68            supplied to SetMap(). Fixes RTbug #1770.
69    
70    2003-04-29  Bernhard Herzog  <[email protected]>
71    
72            Next step of table implementation. Introduce a transient database
73            using SQLite that some of the data is copied to on demand. This
74            allows us to do joins and other operations that require an index
75            for good performance with reasonable efficiency. Thuban now needs
76            SQLite 2.8.0 and pysqlite 0.4.1. Older versions may work but I
77            haven't tested that.
78            
79            * Thuban/Model/transientdb.py: New. Transient database
80            implementation.
81    
82            * test/test_transientdb.py: New. Tests for the transient DB
83            classes.
84    
85            * Thuban/Model/session.py (AutoRemoveFile, AutoRemoveDir): New
86            classes to help automatically remove temporary files and
87            directories.
88            (Session.__init__): New instance variables temp_dir for the
89            temporary directory and transient_db for the SQLite database
90            (Session.temp_directory): New. Create a temporary directory if not
91            yet done and return its name. Use AutoRemoveDir to have it
92            automatically deleted
93            (Session.TransientDB): Instantiate the transient database if not
94            done yet and return it.
95    
96            * Thuban/Model/data.py (ShapefileStore.__init__): Use an
97            AutoTransientTable so that data is copied to the transient DB on
98            demand.
99            (SimpleStore): New class that simply combines a table and a
100            shapefile
101    
102            * Thuban/Model/table.py (Table, DBFTable): Rename Table into
103            DBFTable and update its doc-string to reflect the fact that this
104            is only the table interface to a DBF file. Table is now an alias
105            for DBFTable for temporary backwards compatibility.
106    
107            * Thuban/UI/application.py (ThubanApplication.OnExit): Make sure
108            the last reference to the session goes away so that the temporary
109            files are removed properly.
110    
111            * test/test_load.py (LoadSessionTest.tearDown): Remove the
112            reference to the session to make sure the temporary files are
113            removed.
114    
115    2003-04-29  Bernhard Herzog  <[email protected]>
116    
117            * Thuban/Model/load.py (XMLReader.__init__, XMLReader.read): Turn
118            the __parser instance variable into a normal local variable in
119            read. It's only used there and read will never be called more than
120            once. Plus it introduces a reference cycle that keeps can keep the
121            session object alive for a long time.
122    
123    2003-04-29  Jonathan Coles   <[email protected]>
124    
125            * Thuban/Model/proj.py (Projection): Removed Set*() methods to make
126            Projection an immutable item. Fixes RTbug #1825.
127            (Projection.__init__): Initialize instance variables here.
128            (ProjFile.Replace): New. Replace the given projection object with
129            the new projection object. This solves the problem of needing the
130            mutator Projection.SetProjection() in the ProjFrame class and
131            allows a projection to change parameters without changing its
132            location in the file.
133    
134            * Thuban/UI/mainwindow.py (MainWindow.SaveSessionAs): Dialog should
135            be of type wxSAVE and should verify overwriting a file.
136    
137            * Thuban/UI/projdialog.py (ProjFrame._OnSave): Use the new
138            ProjFile.Replace() method instead of the mutator
139            Projection.SetProjection(). Also requires that we reassign the
140            client data to the new projection.
141    
142            * test/test_proj.py (TestProjection.test): Test GetName() and
143            GetAllParameters()
144            (TestProjFile.test): Remove tests for Set*() methods. Add tests
145            for Replace().
146    
147    2003-04-25  Jonathan Coles   <[email protected]>
148    
149            * Thuban/Model/save.py (SessionSaver.write_projection): Make sure
150            to save the name of the projection.
151    
152            * test/test_save.py (SaveSessionTest.testLayerProjection): New
153            test to verify layer projections are saved correctly.
154    
155    2003-04-25  Jonathan Coles   <[email protected]>
156    
157            * Thuban/Model/proj.py (Projection.SetName): Set the name
158            to "Unknown" if name is None.
159            (Projection.SetAllParameters): New. Set the projection's
160            parameter list to the one supplied.
161            (Projection.SetProjection): New. Set the projection's
162            properties to those of the supplied Projection.
163    
164            * Thuban/UI/mainwindow.py (MainWindow.MapProjection): Set
165            the dialog title to include the map's title.
166            (MainWindow.LayerProjection): Set the dialog title to include
167            the layer's title.
168    
169            * Thuban/UI/projdialog.py (ProjFrame.__ShowError): Consolidate
170            error dialogs into a single method call.
171            (ProjFrame.__VerifyButtons): Add more states to check.
172            (ProjFrame.__GetProjection): Return the current state of an
173            edited projection or None.
174            (ProjFrame.__FillAvailList): Remove checks for states that
175            shouldn't exist.
176            (ProjFrame._OnNew): Clear all selected items and supply
177            a projection panel if necessary.
178    
179            * test/test_proj.py (TestProjFile.test): Add tests for
180            ProjFile.SetAllParameters, ProjFile.SetProjection,
181            ProjFile.SetName.
182    
183    2003-04-25  Jonathan Coles   <[email protected]>
184    
185            * Thuban/UI/projdialog.py (ProjFrame.__FillAvailList): Now
186            takes an optional argument to select the current projection.
187            This does not guarantee that the item is visible due to
188            limited wxWindows functionality. Fixes RTBug #1821.
189    
190    2003-04-25  Jonathan Coles   <[email protected]>
191    
192            * Thuban/Model/load.py (SessionLoader.start_projection): Remember
193            the projection name and use it when constructing the Projection
194            object.
195    
196            * Thuban/Model/proj.py (Projection.__init__): Change the default
197            value for 'name' to None and then test if name is equal to None
198            in the body of the constructor. This way the caller doesn't have to
199            know what the default value should be. Namely, useful in load.py
200            where we have to pick a default value if the 'name' parameter
201            doesn't exist in the XML file.
202    
203            * test/test_load.py (LoadSessionTest.testLayerProjection): New.
204            Tests a file where a layer has a projection.
205    
206    2003-04-25  Jonathan Coles   <[email protected]>
207    
208            * Thuban/Model/layer.py (Layer.TreeInfo): Add an item to the
209            tree for projection information.
210    
211            * Thuban/Model/load.py (XMLReader.GetFilename): Renamed from
212            XMLReader.GetFileName.
213            (SessionLoader): Added support for loading projection tags that
214            appear inside a layer.
215    
216            * Thuban/Model/proj.py (ProjFile): Document the class. Move
217            back to using a list because the order of the projections in
218            the file is important to maintain. Fixes RTbug #1817.
219    
220            * Thuban/Model/resource.py: Rename calls to ProjFile.GetFileName
221            to ProjFile.GetFilename.
222    
223            * Thuban/Model/save.py (SessionSaver.write_layer): Save projection
224            information.
225    
226            * Thuban/UI/projdialog.py (ProjFrame._OnAddToList): Renamed from
227            ProjFrame._OnSaveAs. Removed old dead code from previous
228            implementation.
229            (ProjFrame._OnExport): Add support for exporting more than one
230            projection to a single file.
231            (ProjFrame.__FillAvailList): use string formatting (% operator)
232            to build strings that are (partly) translated. Fixes RTbug #1818.
233    
234            * test/test_proj.py (TestProjFile.test): New. Tests the base ProjFile
235            class.
236    
237    2003-04-24  Bernhard Herzog  <[email protected]>
238    
239            * po/es.po: Updated Spanish translation by Daniel Calvelo Aros
240    
241            * po/fr.po: New. French translation by Daniel Calvelo Aros
242    
243            * Thuban/UI/projdialog.py (ProjFrame._OnSaveAs): Don't translate
244            empty strings.
245    
246    2003-04-24  Jonathan Coles   <[email protected]>
247    
248            * Thuban/Model/layer.py (Layer.GetProjection): New. Needed to
249            implement the interface that the ProjFrame dialog expects.
250    
251            * Thuban/Model/proj.py (Projection.SetName): New. Allows the
252            name of the projection to be changed.
253            (ProjFile): Use a dictionary instead of a list so that removing
254            projections is easier and we are sure about uniqueness.
255            (ProjFile.Remove): Remove the given projection object.
256    
257            * Thuban/Model/resource.py (GetSystemProjFiles, GetUserProjFiles):
258            Return a list with only one projection file instead of searching for
259            any projection file. This simplifies many things if the user can
260            only have one system file and one user file.
261    
262            * Thuban/UI/classgen.py: Change all references to
263            genCombo to genChoice.
264    
265            * Thuban/UI/mainwindow.py: Add a Projection option under the
266            layer menu.
267            (MainWindow.LayerProjection): New. Open up a projection window
268            for a layer.
269    
270            * Thuban/UI/projdialog.py: Large changes to how the dialog is
271            laid out. Use three panels instead of one. One for the list of
272            projections, one for the edit controls, and one for the buttons.
273            Fixed resizing problems so that the dialog resizes correctly
274            when the projection panel changes. Added import/export, save, and
275            new buttons/functionality.
276    
277    2003-04-24  Bernhard Herzog  <[email protected]>
278    
279            First step towards table management. Introduce a simple data
280            abstraction so that we replace the data a layer uses more easily
281            in the next step.
282    
283            * Thuban/Model/data.py: New file with a simple data abstraction
284            that bundles shapefile and dbffile into one object.
285    
286            * Thuban/Model/session.py (Session.OpenShapefile): New method to
287            open shapefiles and return a shape store object
288    
289            * Thuban/Model/layer.py (Layer.__init__): Pass the data as a store
290            object instead of a shapefile filename. This introduces a new
291            instance variable store holding the datastore. For intermediate
292            backwards compatibility keep the old instance variables.
293            (open_shapefile): Removed. No longer needed with the shape store.
294            (Layer.SetShapeStore, Layer.ShapeStore): New methods to set and
295            get the shape store used by a layer.
296            (Layer.Destroy): No need to explicitly destroy the shapefile or
297            table anymore.
298    
299            * Thuban/UI/mainwindow.py (MainWindow.AddLayer)
300            (MainWindow.AddLayer): Use the session's OpenShapefile method to
301            open shapefiles
302    
303            * Thuban/Model/load.py (ProcessSession.start_layer): Use the
304            session's OpenShapefile method to open shapefiles
305    
306            * test/test_classification.py
307            (TestClassification.test_classification): Use the session's
308            OpenShapefile method to open shapefiles and build the filename in
309            a more platform independed way
310    
311            * test/test_layer.py (TestLayer.setUp, TestLayer.tearDown):
312            Implement to have a session to use in the tests
313            (TestLayer.test_arc_layer, TestLayer.test_polygon_layer)
314            (TestLayer.test_point_layer, TestLayer.test_empty_layer): Use the
315            session's OpenShapefile method to open shapefiles
316            (TestLayerLegend.setUp): Instantiate a session so that we can use
317            it to open shapefiles.
318            (TestLayerLegend.tearDown): Make sure that all references to
319            layers and session are removed otherwise we may get a resource
320            leak
321    
322            * test/test_map.py (TestMapAddLayer.test_add_layer)
323            (TestMapWithContents.setUp): Instantiate a session so that we can
324            use it to open shapefiles.
325            (TestMapWithContents.tearDown): Make sure that all references to
326            layers, maps and sessions are removed otherwise we may get a
327            resource leak
328            ("__main__"): use support.run_tests() so that more info about
329            uncollected garbage is printed
330    
331            * test/test_save.py (SaveSessionTest.testSingleLayer): Use the
332            session's OpenShapefile method to open shapefiles
333            ("__main__"): use support.run_tests() so that more info about
334            uncollected garbage is printed
335    
336            * test/test_selection.py (TestSelection.tearDown): Make sure that
337            all references to the session and the selection are removed
338            otherwise we may get a resource leak
339            (TestSelection.get_layer): Instantiate a session so that we can
340            use it to open shapefiles.
341            ("__main__"): use support.run_tests() so that more info about
342            uncollected garbage is printed
343    
344            * test/test_session.py (TestSessionBase.tearDown)
345            (TestSessionWithContent.tearDown): Make sure that all references
346            to the session and layers are removed otherwise we may get a
347            resource leak
348            (TestSessionWithContent.setUp): Use the session's OpenShapefile
349            method to open shapefiles
350    
351    2003-04-24  Jonathan Coles   <[email protected]>
352    
353            * Thuban/Model/load.py (XMLReader.read): Should have been checking
354            if the file_or_filename object had the 'read' attribute.
355    
356    2003-04-23  Jonathan Coles   <[email protected]>
357    
358            * Thuban/Model/resource.py: Fixes RTbug #1813.
359            (ReadProjFile): Add documentation about which exceptions are raised.
360            Always pass the exceptions up to the caller.
361            (GetProjFiles): If the directory can't be read return an empty list.
362            If any of the proj files can't be read skip that file and go
363            on to the next one.
364    
365            * test/test_proj.py: Added test cases to handle nonexistent files,
366            unreadable files, and files that don't parse correctly.
367    
368    2003-04-23  Jonathan Coles   <[email protected]>
369    
370            Projection dialog. Allows the user to select from a list
371            of projection templates and optionally edit them and save new ones.
372    
373            * Thuban/UI/projdialog.py (ProjFrame): New. Main dialog.
374            (ProjPanel): Base class for projection specific panels.
375            (TMPanel): Projection panel for Transverse Mercartor.
376            (UTMPanel): Projection panel for Universal Transverse Mercartor.
377            (LCCPanel): Projection panel for Lambert Conic Conformal.
378            (GeoPanel): Projetion panel for Geographic Projection.
379    
380    2003-04-23  Jonathan Coles   <[email protected]>
381    
382            * Thuban/Model/load.py (XMLReader): Renamed from XMLProcessor to
383            promote symmetry. There now exists XMLReader and XMLWriter.
384            (XMLReader.read): New. Call to read the given file descriptor or
385            filename.
386            (XMLReader.close): New. Make sure the file is closed.
387            (XMLReader.GetFileName): New. Return just the file name that is being
388            read from.
389            (XMLReader.GetDirectory): New. Return just the directory of the file
390            that is being read.
391            (XMLReader.AddDispatchers): New. Take a dictionary which contains
392            the names of functions to call as the XML tree is parsed.
393            (XMLReader.startElementNS): Updated to use new dispatcher dictionary.
394            (XMLReader.endElementNS): Updated to use new dispatcher dictionary.
395            (SessionLoader): Removed class variables start_dispatcher and
396            end_dispatcher since this functionality is now part of a class
397            instance. Fixes RTbug #1808.
398            (SessionLoader.__init__): Add dispatcher functions.
399            (load_xmlfile): Code was moved into the XMLReader.read().
400            (load_session): Use modified SessionLoader.
401    
402            * Thuban/Model/map.py (Map.GetProjection): New. Returns the
403            map's projection.
404    
405            * Thuban/Model/proj.py (Projection.GetParameters): Renamed to
406            GetAllParameters.
407            (Projection.GetParameter): Returns the value for the given parameter.
408    
409            * Thuban/Model/resource.py: Use XMLReader and XMLWriter.
410            (GetProjFiles): Renamed from GetProjections. Now returns a list
411            of ProjFile objects.
412            (GetSystemProjFiles): Renamed from GetSuppliedProjections. Returns
413            a list of ProjFile objects whose files are not user defined.
414            (GetUserProjFiles): Renamed from GetUserProjections. Returns a
415            list of ProjFile objects whose files are user defined.
416            (ProjFileReader): Extend new XMLReader.
417    
418            * Thuban/Model/save.py (XMLWriter): Renamed from XMLSaver to
419            promote symmetry.
420    
421            * Thuban/UI/classgen.py (ClassGenDialog.__init__): Use a wxChoice
422            control instead of a wxComboBox. wxChoice controls do not generate
423            events as the uses highlights possible choices which fixes problems
424            with resizing the dialog when the use selects an option.
425    
426            * Thuban/UI/classifier.py (Classifier.__init__): Use a wxChoice
427            control instead of a wxComboBox.
428    
429            * Thuban/UI/mainwindow.py (MainWindow.Projection): Use new projection
430            dialog.
431    
432            * test/test_proj.py (TestProjection.test): New tests for GetParameter
433            method.
434    
435    2003-04-22  Bernhard Herzog  <[email protected]>
436    
437            * Thuban/UI/mainwindow.py: Remove some unused imports and global
438            constants
439    
440            * Thuban/UI/identifyview.py (IdentifyListCtrl.selected_shape)
441            (IdentifyGridCtrl.selected_shape): Use table, not shapetable.
442    
443    2003-04-17  Bernhard Herzog  <[email protected]>
444    
445            * Thuban/Model/layer.py: Don't import LAYER_LEGEND_CHANGED.
446            (Layer): Update doc-string since LAYER_LEGEND_CHANGED is not used
447            anymore.
448            (Layer.BoundingBox, Layer.GetFieldType, Layer.NumShapes)
449            (Layer.ShapeType, Layer.Shape): No need to call
450            self.open_shapefile since it's always called in __init__
451    
452            * Thuban/UI/application.py (ThubanApplication.MainLoop): Removed.
453            In wxPython 2.4 there's no need to extend MainLoop anymore since
454            wxPython itself makes sure OnExit is called.
455    
456    2003-04-16  Jonathan Coles   <[email protected]>
457    
458            Initial putback of projection management code. Includes new
459            classes to read and write projection files. The current load
460            and save classes were abstracted a bit so they could be reused.
461            The Projection class was extended to provide new methods and
462            have a name.
463    
464            * Thuban/Model/load.py (XMLProcessor): New. Contains all the
465            general XML reading methods that were part of ProcessSession.
466    
467            * Thuban/Model/proj.py (Projection.__init__): Accepts an optional
468            name.
469            (ProjFile): New. Represents a file that contains projection
470            information.
471    
472            * Thuban/Model/resource.py: New. Contains general utilities
473            for read and writing projection files.
474    
475            * Thuban/Model/save.py (XMLSaver): New. Contains all the
476            general XML writing methods that were part of SessionSaver.
477            (SessionSaver): Renamed from Saver.
478    
479            * test/test_proj.py: New test cases for the projection
480            file read and write functions.
481    
482    2003-04-16  Jonathan Coles   <[email protected]>
483    
484            * Thuban/Model/classification.py: Use repr() around values
485            in the ClassGroup*.__repr__() methods so it is clearer when
486            a value is a string and when it is a number.
487    
488            * test/test_load.py: Rework the classification test to test
489            that we can load old files.
490            (testLabels): Test a file where the groups have labels.
491    
492    2003-04-16  Bernhard Herzog  <[email protected]>
493    
494            Safer implementation of the performance enhancements of the
495            low-level renderer:
496            
497            * extensions/thuban/wxproj.cpp (extract_projection)
498            (extract_pointer): Rename extract_projection to extract_pointer
499            and redefine its purpose to return the pointer stored in a CObject
500            returned by the object's cobject method. Update all callers.
501            (s_draw_info, free_draw_info, draw_polygon_init): Implement the
502            handling of these low-level parameters so that each s_draw_info
503            instance is handled as a CObject at python level that also
504            contains real references to the actual python objects which
505            contain the values in the struct. Add free_draw_info as the
506            destructor.
507            (draw_polygon_shape): Add the py_draw_info parameter which must a
508            cobject containing an s_draw_info pointer.
509    
510            * Thuban/UI/renderer.py (MapRenderer.polygon_render_param): New
511            method to instantiat the low-level render parameter
512            (MapRenderer.draw_shape_layer): Use the new method. Remove some
513            commented out code.
514            (MapRenderer.draw_polygon_shape): Make the first parameter not the
515            layer but the low-level render parameter
516            (ScreenRenderer.draw_shape_layer): Use the low-level render
517            parameter.
518    
519    2003-04-15  Jonathan Coles   <[email protected]>
520    
521            * Thuban/Model/classification.py: Implemented __repr__ for
522            the ClassGroup* classes to make debugging a bit easier.
523            (ClassGroup.SetLabel): Check that the string is an instance
524            of StringTypes not StringType. Accounts for Unicode strings.
525    
526            * Thuban/Model/color.py: Implemented __repr__ to make
527            debugging a bit easier.
528    
529            * Thuban/Model/save.py (Saver.write_classification): Need to
530            save the group label.
531    
532            * test/test_load.py (testClassification): New. Loads the
533            iceland_sample_test.thuban file and checks if it was loaded
534            correctly.
535    
536    2003-04-15  Jonathan Coles   <[email protected]>
537    
538            * extensions/thuban/wxproj.cpp (draw_polygon_init): New. Used
539            to improve rendering performance by initializing the variables
540            that are not change each time draw_polygon_shape() is called.
541            The values are stored in a global struct draw_info.
542            (draw_polygon_shape): Removed initialization code that is
543            now in draw_polygon_init().
544    
545            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Make
546            drawing initialization call to draw_polygon_init()
547            (MapRenderer.draw_polygon_shape): Use new signature of
548            draw_polygon_shape.
549    
550            * Thuban/UI/classgen.py (GenUniformPanel): Fix spin control
551            weirdness by setting the range to (1, maxint).
552    
553            * Thuban/Model/classification.py (ClassGroupProperties): Make
554            instance variables private and optimize comparison operator
555            by first checking if the color references are the same.
556            (ClassGroupSingleton): Make instance variables private.
557            (ClassGroupRange): Make instance variables private.
558    
559            * HOWTO-Release: Filled in missing steps for releasing packages.
560    
561    2003-04-15  Bernhard Herzog  <[email protected]>
562    
563            First stab at internationalized messages:
564    
565            * Thuban/__init__.py (_): Implement the translation function for
566            real using the python gettext module.
567    
568            * Thuban/UI/classifier.py (ClassTable.GetRowLabelValue): Don't
569            translate empty strings.
570    
571            * Thuban/UI/application.py (ThubanApplication.read_startup_files):
572            Add a missing space to a warning message
573    
574            * po/README: New. Notes about the management of the translation
575            files.
576    
577            * po/Makefile: New. Makefile to help manage the translation files.
578    
579            * po/es.po: New. Spanish translation by Daniel Calvelo Aros
580    
581            * MANIFEST.in: Include the *.mo files in Resources/Locale and the
582            translations and support files in po/
583    
584            * setup.py (data_files): Add the *.mo files to the data_files too
585    
586            * README: Add note about the translations when building from CVS
587    
588    2003-04-14  Jonathan Coles   <[email protected]>
589    
590            * Thuban/UI/dock.py: Fixes some window resizing problems most
591            noticable under windows. Always assume the button bitmaps will
592            be there. Code clean up.
593            (DockabelWindow.Dock, DockableWindow.UnDock): Force all the
594            images for the dock/undock button to the same images.
595            Work around for RTbug #1801.
596    
597            * Thuban/UI/legend.py (LegendPanel.__init__): The toolbar should
598            be allowed to grow within the sizer. Fixes a bug under Windows
599            where the toolbar wasn't being drawn.
600    
601    2003-04-14  Frank Koormann   <[email protected]>
602    
603            * Resources/Bitmaps/dock_12.xpm, Resources/Bitmaps/undock_12.xpm:
604            Updated design to try to make the button functionality more
605            transparent.
606    
607    2003-04-14  Jonathan Coles   <[email protected]>
608    
609            * Thuban/UI/legend.py (LegendPanel.__init__): Call Create() to
610            finalize the intialization of the panel.
611    
612            * Thuban/UI/dock.py (DockPanel.Create): New. Finalizes the
613            creation of the panel. Should be the last thing called in the
614            initializer of a subclass.
615    
616            * Thuban/UI/classgen.py (ClassGenDialog.__init__): Actively
617            set the current selections in the combo boxes. This is needed
618            under Windows.
619    
620            * Thuban/UI/classifier.py (Classifier.__init__): Add a top
621            level panel to the dialog so that the background colors are
622            consistent under Windows.
623    
624    2003-04-11  Jonathan Coles   <[email protected]>
625    
626            * Thuban/UI/classgen.py: Change color ramps to start at white
627            not black.
628    
629            * Thuban/UI/legend.py: Enable/disable the legend buttons when
630            the legend changes. Fixes RTbug #1793.
631    
632            * test/test_classification.py: Added test for copying of
633            classifications.
634    
635    2003-04-11  Jonathan Coles   <[email protected]>
636    
637            * Thuban/UI/resource.py: New. Centralize the loading of resources
638            such as bitmaps.
639    
640            * Thuban/UI/classgen.py (GenUniquePanel.__init__): Reordered buttons,
641            added images to the move buttons, added 'reverse' button.
642            (CustomRampPanel.__init__): Added images to the move buttons.
643            (GreyRamp): New. Generates a ramp from white to black.
644            (HotToColdRamp): New. Generates a ramp from cold to hot colors.
645    
646            * Thuban/UI/classifier.py: Refactored ID's from ID_CLASSIFY_* to
647            ID_PROPERTY_*.
648            (Classifier.__init__): Minor changes to the layout.
649            (Classifier._OnTitleChanged): Listen for when the user edits the
650            title and update the dialog's title and the layer's title.
651    
652            * Thuban/UI/dock.py: Use new bitmaps for the control buttons.
653    
654            * Thuban/UI/legend.py: Use new bitmaps for the control buttons.
655            (LegendTree._OnMsgLayerTitleChanged): Change the displayed title
656            if the layer's title changes.
657    
658            * Thuban/UI/mainwindow.py: Added new menu item and associated code
659            to open a dialog to rename the map.
660            (MainWindow): Use new resource class to import bitmaps.
661    
662    2003-04-11  Jonathan Coles   <[email protected]>
663    
664            * Resources/Bitmaps/close_12.xpm, Resources/Bitmaps/dock_12.xpm,
665            Resources/Bitmaps/group_use.xpm, Resources/Bitmaps/group_use_all.xpm,
666            Resources/Bitmaps/group_use_none.xpm,
667            Resources/Bitmaps/group_use_not.xpm,
668            Resources/Bitmaps/hide_layer.xpm,
669            Resources/Bitmaps/layer_properties.xpm,
670            Resources/Bitmaps/lower_layer.xpm, Resources/Bitmaps/raise_layer.xpm,
671            Resources/Bitmaps/show_layer.xpm, Resources/Bitmaps/undock_12.xpm:
672            New.
673    
674    2003-04-10  Jonathan Coles   <[email protected]>
675    
676            * Thuban/Model/classification.py: (ClassGroupRange.__init__):
677            Should pass group to ClassGroup constructor.
678    
679    2003-04-10  Jonathan Coles   <[email protected]>
680    
681            * Thuban/Model/classification.py: (ClassGroup): Move all the common
682            methods of the derived classes ([Set|Get]Properties(), __eq__, __ne__)
683            here. Implement SetVisible(), IsVisible().
684            (ClassGroup.__init__): Add group parameter which acts as a copy
685            constructor.
686    
687            * Thuban/UI/classifier.py (ClassTable): Add a new column for the
688            "Visible" check boxes.
689            (Classifier): Rename the buttons and refactor the code to match
690            the new labels.
691    
692            * Thuban/UI/legend.py: Classify button is now called "Properties".
693            Refactored the code to change variable names.
694            (LegendTree.__FillTreeLayer): Only list a group if it is visible.
695    
696            * Thuban/UI/mainwindow.py: MainWindow.OpenClassifier renamed to
697            MainWindow.OpenLayerProperties. MainWindow.LayerEditProperties
698            renamed to MainWindow.LayerEditProperties.
699            (MainWindow.ToggleLegend): Don't include map name in legend title.
700            (MainWindow.SetMap): Added the map name to the window title.
701            (MainWindow.LayerFillColor, MainWindow.LayerTransparentFill,
702            MainWindow.LayerOutlineColor, MainWindow.LayerNoOutline): Removed.
703            Functionality is found in the layer properties dialog.
704    
705            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Only
706            draw visible groups.
707    
708  2003-04-09  Jonathan Coles   <[email protected]>  2003-04-09  Jonathan Coles   <[email protected]>
709    
710          * Thuban/UI/classgen.py: Modifications to allow simple          * Thuban/UI/classgen.py: Modifications to allow simple

Legend:
Removed from v.634  
changed lines
  Added in v.792

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26