/[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 126 by bh, Thu May 2 18:55:46 2002 UTC revision 426 by jonathan, Mon Feb 24 18:45:37 2003 UTC
# Line 1  Line 1 
1    2003-02-24  Jonathan Coles   <[email protected]>
2    
3            * Thuban/common.py (Color2wxColour, wxColour2Color): Conversion
4            functions from Thuban color objects to wxWindow colour objects.
5    
6            * Thuban/Model/classification.py (Classification): Renamed
7            GetProperties() to GetClassData(). Used the new iterator
8            in TreeInfo().
9            (ClassIterator): Iterator implementation to iterate over the
10            ClassData objects in a classification object.
11    
12            * Thuban/Model/save.py (Saver.write_classificaton): Uses
13            the new iterator to save the classification information.
14    
15            * Thuban/UI/classifier.py (SelectPropertiesDialog): Support
16            for changing the stroke and fill colors and previewing the
17            changes.
18    
19            * Thuban/UI/mainwindow.py (MainWindow.OpenSession,
20            MainWindow.SaveSessionAs): Text string changes so the dialogs
21            have more meaningful titles.
22    
23            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Change
24            Classification method name from GetProperties to GetClassData.
25    
26            * Thuban/UI/view.py (MapCanvas.find_shape_at): Use method calls
27            instead of accessing now non-existent class variables.
28    
29    2003-02-24  Bernhard Herzog  <[email protected]>
30    
31            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Remove
32            unneeded Shape() call. Rendering is substantially faster without
33            it and it avoids some problems with broken shape files.
34    
35    2003-02-20  Frank Koormann   <[email protected]>
36    
37            Force minimal size of identify and label dialogs. The autosizing
38            looked too ugly.
39    
40            * Thuban/UI/controls.py (RecordListCtrl): Set minimal width for columns.
41            * Thuban/UI/labeldialog.py (LabelDialog.dialog_layout):
42            Set size of listctrl.
43            * Thuban/UI/identifyview.py (IdentifyView.__init__):
44            Set size of dialog.
45    
46    2003-02-19  Jonathan Coles   <[email protected]>
47    
48            * test/test_classification.py, test/test_layer.py,
49            test/test_load.py, test/test_map.py, test/test_session.py:
50            Updated the tests to use the new functions that are in the
51            respective classes.
52    
53            * Thuban/Model/classification.py (Classification):
54            Uses the new ClassData* classes. Modification messages are
55            passed up to the parent layer (if it exists).
56            (ClassData): New class to encapsulate the common data in each
57            classification property.
58            (ClassDataDefault): Represents the Default class. data.
59            (ClassDataPoint): Represents a single class. data point
60            (ClassDataRange): Represents a class. range
61            (ClassDataMap): Represents a class. map (unused).
62    
63            * Thuban/Model/color.py: Added Color.None to represent something
64            with no color. Color.Black represents the color black.
65            (NoColor): Helper class derived from Color to represent something
66            with no color.
67    
68            * Thuban/Model/layer.py (Layer): Removed references to fill, stroke,
69            stroke_width attributes. Made the 'classification' attribute private.
70            New methods for setting/getting the classification.
71    
72            * Thuban/Model/load.py (ProcessSession): Use new methods on Layer
73            to get the classifcation and use the new ClassData* classes to
74            hold the classification data. Use Str2Num to convert numbers
75            properly.
76    
77            * Thuban/Model/save.py (Saver): Use new Color and Classification
78            methods
79    
80            * Thuban/UI/classifier.py (ClassGrid): New class to represent a
81            custom grid.
82            (ClassTable): Support for editing Values and Labels and for
83            changing what type (point or range) of data is stored in each
84            property based on how the user enters the data.
85            (Classifier): Support for saving the new classifications and
86            launching the dialog to edit a property.
87            (SelectPropertiesDialog): New class for editing the visual
88            properties of a classification (stroke color, width, and fill color)
89            (ClassPreviewer): Took the Draw method from ClassRenderer and
90            made most of it into this new class. Intend to use this class in
91            the SelectPropertiesDialog for previewing changes.
92    
93            * Thuban/UI/renderer.py: Use new Color and Classification methods.
94    
95            * Thuban/UI/tree.py: Formatting changes.
96    
97            * Doc/thuban.dtd: Add 'label' element
98    
99            * Thuban/common.py: New. Contains common routines used throughout
100            the code.
101            (Str2Num): Takes a string and converts it to the "best" type of
102            number.
103    
104    2003-02-14  Bernhard Herzog  <[email protected]>
105    
106            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Make sure that the
107            dragging flag is always set to 0 even when the tool implementation
108            raises an exception
109    
110    2003-02-11  Bernhard Herzog  <[email protected]>
111    
112            * Thuban/UI/application.py (ThubanApplication.splash_screen): New
113            method to create a splash screen.
114            (ThubanApplication.ShowMainWindow): New. Show the main window.
115            Needed so the splash screen can display the mainwindow
116            (ThubanApplication.OnInit): Call the
117            new splash_screen method to determine whether the application
118            should display a splash screen. If it displays a splash screen do
119            not immediately show the main window.
120    
121    2003-02-11  Jonathan Coles  <[email protected]>
122    
123            * Thuban/Model/classification.py: Added import line to fix
124            feature conflicts between running on python2.2 and python2.1.
125    
126            * Thuban/UI/classifier.py (ClassTable): Didn't need to hang
127            onto the clinfo parameter, so removed the deepcopy().
128    
129    2003-02-10  Jonathan Coles  <[email protected]>
130    
131            * Thuban/Model/save.py (Saver.open_element, Saver.close_element):
132            Added element_open variable to track opening and closing of tags
133            so that tags that don't span more than one line are closed with
134            /> instead of </tag_name>. Use the GetDefault*() methods of
135            the Classification class.
136    
137            * Thuban/Model/classification.py (Classificaton): Added set and
138            get methods for the default data. The class also takes a layer
139            reference so that modification messages can be sent. Fixed the
140            methods to use the new ClassData class.
141            (ClassData): New class to encapsulate the classification data
142    
143            * Thuban/Model/layer.py (Layer): Remove the
144            Set[Fill|Stroke|StrokeWidth]() methods. Code should call the
145            SetDefault*() methods on the layer's classification object.
146            (Layer.__init__): Use the new SetDefault*() methods in the
147            Classification class.
148    
149            * Thuban/Model/load.py (ProcessSession): Use the new ClassData
150            object instead of a dictionary.
151    
152            * Thuban/UI/classifier.py (ClassRenderer): New class to
153            draw the classifications in the dialog box's table.
154            (Classifier): Modified to use the ClassRenderer class.
155    
156            * Thuban/UI/mainwindow.py (MainWindow): Use the SetDefault*()
157            methods of the Classification class.
158    
159            * Thuban/UI/renderer.py (MapRenderer): Use the Get*() methods
160            of the ClassData class.
161    
162            * test/test_classification.py, test/test_layer.py,
163            test/test_map.py, test/test_session.py: Fix the tests to work
164            with the above code changes.
165    
166    2003-02-03  Jonathan Coles  <[email protected]>
167    
168            * Thuban/Model/classification.py (Classification): Added getNull()
169            to return the NullData reference
170    
171            * Thuban/Model/layer.py (Layer.SetFill, Layer.SetStroke,
172            Layer.SetStrokeWidth): Modified these functions to change the
173            null data in the classification rather than keep these values
174            directly in the Layer class. Menu options to change these values
175            work again.
176    
177    2003-01-28  Jonathan Coles  <[email protected]>
178    
179            * Thuban/UI/classifier.py (Classifier): Resolved merging conflicts.
180            Fixed crashing problem on some systems. Dialog box shows
181            classification data.
182    
183            * Thuban/UI/tree.py (SessionTreeCtrl.add_items): Handle drawing
184            Colors in the tree view.
185    
186            * Thuban/Model/layer.py (Layer.TreeInfo): Added a call to build
187            the tree info for classifications. Commented out unnecessary lines.
188    
189            * Thuban/Model/classification.py (Classification.TreeInfo): New
190            function to add information about the classification into the
191            tree view.
192    
193    2003-01-27  Jan-Oliver Wagner <[email protected]>
194    
195            * Thuban/__init__.py (_): New.
196    
197            * Thuban/Model/classification.py, Thuban/Model/extension.py,
198            Thuban/Model/layer.py, Thuban/Model/load.py, Thuban/Model/map.py,
199            Thuban/Model/session.py, Thuban/UI/application.py,
200            Thuban/UI/classifier.py, Thuban/UI/context.py, Thuban/UI/controls.py,
201            Thuban/UI/identifyview.py, Thuban/UI/labeldialog.py,
202            Thuban/UI/mainwindow.py, Thuban/UI/menu.py, Thuban/UI/proj4dialog.py,
203            Thuban/UI/renderer.py, Thuban/UI/tree.py, Thuban/Lib/connector.py,
204            Thuban/Lib/fileutil.py: Replace user string by _() for i18n.
205    
206    2003-01-27  Jonathan Coles  <[email protected]>
207    
208            * Thuban/Model/layer.py: Classification initialization calls.
209    
210            * Thuban/Model/classification.py: Created class to encapsulate
211            a layer classification. Supports specific data points and
212            ranges.
213    
214            * Thuban/Model/load.py: Added support for loading classification
215            information.
216    
217            * Thuban/Model/save.py: Added support for saving classification
218            information.
219    
220            * Thuban/UI/classifier.py: Initial class for a dialog box for
221            specifying classification information.
222    
223            * Thuban/UI/mainwindows.py: Support for opening the classifier
224            dialog.
225    
226            * Thuban/UI/renderer.py: Support for drawing a layer with the
227            classification information.
228    
229            * Data/iceland_sample_class.thuban: iceland_sample with
230            classification data.
231    
232            * test/test_classification: Tests for the Classification class.
233    
234    2002-12-09  Bernhard Herzog  <[email protected]>
235    
236            * test/test_command.py: New. Tests for the command classes.
237    
238            * Thuban/UI/command.py (ToolCommand): New class for tool commands.
239            (Command.IsTool): New method to distinguish between command
240            switching tools and other commands.
241    
242            * Thuban/UI/view.py (MapCanvas.SelectTool): New method to select
243            the tool to avoid direct assignments to instance variables
244            (MapCanvas.ZoomInTool, MapCanvas.ZoomOutTool, MapCanvas.PanTool)
245            (MapCanvas.IdentifyTool, MapCanvas.LabelTool): Use SelectTool to
246            change the tool
247    
248            * Thuban/UI/mainwindow.py (MainWindow.update_command_ui): If an
249            active tool's command turns insensitive, disable the tool.
250            (_tool_command): Use the new ToolCommand class
251    
252            * Examples/simple_extensions/simple_tool.py (simple_tool): Use the
253            SelectTool method to change the tool
254            (iconfile): Use the ToolCommand class
255    
256    2002-12-03  Bernhard Herzog  <[email protected]>
257    
258            * Thuban/UI/tree.py (SessionTreeCtrl.normalize_selection): Handle
259            the case of selected items that are not children of Layers or Maps
260            properly. Previously this bug would trigger an assertion in
261            wxWindows.
262    
263    2002-11-06  Frank Koormann  <[email protected]>
264    
265            * Thuban/UI/mainwindow.py: Altered the order of tools in the
266            toolbar: First now are all navigation tools (Zoom In/Out, Pan,
267            Full Extent).
268    
269    2002-10-23  Bernhard Herzog  <[email protected]>
270    
271            * setup.py (setup call): version now 0.1.3
272    
273            * MANIFEST.in: Add the files in test/
274    
275            * test/README: Add note about tests requiring the iceland data
276    
277            * Thuban/UI/mainwindow.py (MainWindow.About): Add 2002 to
278            copyright notice.
279    
280    2002-10-18  Bernhard Herzog  <[email protected]>
281    
282            * test/test_map.py
283            (TestMapWithContents.test_projected_bounding_box): Use an explicit
284            epsilon.
285    
286            * test/support.py (FloatComparisonMixin.assertFloatEqual)
287            (FloatComparisonMixin.assertFloatSeqEqual): give a more useful
288            message if the assertion fails and don't return the return value
289            of self.assert_. In assertFloatSeqEqual the return meant that not
290            all items of the sequence were compared.
291    
292    2002-09-20  Bernhard Herzog  <[email protected]>
293    
294            * test/test_fileutil.py: New. Test cases for Thuban.Lib.fileutil
295    
296            * Thuban/Lib/fileutil.py: Fixup some whitespace and typos
297    
298            * test/test_map.py (TestMapWithContents.test_tree_info): Create
299            the string with the bounding box on the fly because of platform
300            differences in the way %g is handled.
301    
302            * test/test_layer.py (TestLayer.test_empty_layer): Create an empty
303            DBFfile too because Thuban layers can't yet cope missing DBF
304            files.
305    
306    2002-09-20  Bernhard Herzog  <[email protected]>
307    
308            * test/test_menu.py: Use initthuban instead of
309            add_thuban_dir_to_path to initialize Thuban.
310    
311            * test/support.py (FloatComparisonMixin.assertFloatEqual): New.
312            Mixin class for float comparisons
313            (SubscriberMixin): New. Mixin class to test messages sent through
314            the Connector class
315    
316            * test/README: Fix a typo and add the -v flag to the command for
317            individual tests
318    
319            * test/test_session.py: New. Test cases for Thuban.Model.session
320    
321            * test/test_proj.py: New. Test cases for Thuban.Model.proj
322    
323            * test/test_map.py: New. Test cases for Thuban.Model.map
324    
325            * test/test_layer.py: New. Test cases for Thuban.Model.layer
326    
327            * test/test_label.py: New. Test cases for Thuban.Model.label
328    
329            * test/test_connector.py: New. Test cases for Thuban.Lib.connector
330    
331            * test/test_color.py: New. Test cases for Thuban.Model.color
332    
333            * test/test_base.py: New. Test cases for Thuban.Model.base
334    
335    2002-09-13  Bernhard Herzog  <[email protected]>
336    
337            * Thuban/Model/session.py (Session.forwarded_channels): Forward
338            the CHANGED channel too.
339    
340            * Thuban/Model/map.py (Map.forwarded_channels): Forward the
341            CHANGED channel too.
342            (Map.__init__): Call the Modifiable constructor as well.
343    
344            * Thuban/Model/base.py (Modifiable.UnsetModified): Issue a CHANGED
345            event if the modified flag changes.
346            (Modifiable.changed): Tweak the doc-string.
347    
348            * Thuban/UI/mainwindow.py (MainWindow.view_position_changed)
349            (MainWindow.set_position_text): Put the code that puts the text
350            with the mouse position into the status bar into the new method
351            set_position_text so that it can overwritten in derived classes.
352    
353    2002-09-12  Bernhard Herzog  <[email protected]>
354    
355            * Thuban/UI/mainwindow.py (MainWindow.RunMessageBox): Center the
356            message box on the main window.
357    
358    2002-09-11  Bernhard Herzog  <[email protected]>
359    
360            * Thuban/UI/mainwindow.py: Underline the 'x' in "Exit" instead of
361            the 'E' because it's less likely to interfere with other menu
362            entries.
363            (MainWindow.build_menu): remove an incorrect comment.
364    
365    2002-09-10  Bernhard Herzog  <[email protected]>
366    
367            * Thuban/UI/mainwindow.py (MainWindow.Map): New.
368            (_tool_command): Add sensitive parameter
369            (_has_visible_map): Sensitivity callback to tools and other
370            commands that require a visible map. Use it in map_zoom_in_tool,
371            map_zoom_out_tool, map_pan_tool, map_identify_tool, map_label_tool
372            and map_full_extent
373    
374    2002-09-06  Bernhard Herzog  <[email protected]>
375    
376            * Thuban/UI/mainwindow.py (MainWindow.OnClose): Unsubscribe
377            VIEW_POSITION
378    
379    2002-09-04  Frank Koormann  <[email protected]>
380    
381            * Resources/Bitmaps/fullextent.xpm: Updated Icon (removed "potatoe")
382    
383    2002-09-02  Bernhard Herzog  <[email protected]>
384    
385            * Thuban/UI/view.py: Get rid of the idle redraw. This is done by
386            wxWindows already and our implementation doesn't work correctly
387            with wxGTK 2.3:
388            (MapCanvas.__init__): Remove the instance variable
389            (MapCanvas.OnPaint): Always call do_redraw when there's a map to
390            be drawin
391            (MapCanvas.OnIdle): Removed.
392    
393            * Thuban/UI/view.py (MapCanvas.unprojected_rect_around_point): Add
394            a parameter to determine the size of the rectangle.
395            (MapCanvas.find_shape_at): Create the box around the point on a
396            layer by layer basis and make the size depend on the shape type.
397            This solves a problem with the selection of point shapes at the
398            border of the layer's bounding box
399    
400    2002-08-30  Bernhard Herzog  <[email protected]>
401    
402            * Thuban/UI/mainwindow.py (MainWindow.CanRemoveLayer): New method
403            for the sensitivity  of remove layer.
404            (_can_remove_layer): New. Sensitivity callback for remove layer
405            (Command layer_remove): Use _can_remove_layer
406    
407            * Thuban/Model/map.py (Map.CanRemoveLayer): New method to
408            determine whether a given layer can be deleted.
409    
410            * Thuban/UI/view.py (MapCanvas.__init__, MapCanvas.OnPaint)
411            (MapCanvas.do_redraw): Get rid of the unused update_region
412            instance variable
413    
414            * Thuban/UI/view.py: Add/update some doc-strings.
415    
416            * test/: new subdirectory with a bunch of unit tests.
417    
418            * test/README, test/test_table.py, test/test_save.py,
419            test/test_menu.py, test/test_load.py: Initial set of tests and
420            brief instructions on how to run them
421    
422    2002-08-29  Bernhard Herzog  <[email protected]>
423    
424            * Thuban/UI/renderer.py (ScreenRenderer.draw_shape_layer): Handle
425            arcs with multiple parts.
426    
427            * Thuban/UI/view.py (ZoomInTool.MouseUp, ZoomOutTool.MouseUp):
428            Handle degenrate rectangles.
429    
430            * Thuban/Model/table.py: Make writing records work correctly:
431            (Table.__init__): Keep track of whether the DBF is open for
432            writing
433            (Table.write_record): Open the DBF file for writing when necessary
434    
435    2002-08-27  Bernhard Herzog  <[email protected]>
436    
437            * Thuban/Model/table.py (Table.write_record, Table.__init__): Open
438            dbf files only for reading by default. Use a new writable dbf
439            object for writing.
440    
441    2002-08-26  Bernhard Herzog  <[email protected]>
442    
443            * Thuban/UI/mainwindow.py: Refactor the context creation:
444            (MainWindow.Context): New method to return a context
445            (MainWindow.invoke_command, MainWindow.update_command_ui): Use the
446            new method
447    
448            * Thuban/UI/tableview.py (TableGrid, LayerTableGrid): Split the
449            layer table specific code from TableGrid into LayerTableGrid
450            (TableFrame, LayerTableFrame): Split the layer table specific code
451            from TableFrame into LayerTableFrame
452            (LayerTableGrid.select_shape): Remove a debug print
453    
454            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Use the
455            LayerTableFrame
456    
457    2002-08-23  Bernhard Herzog  <[email protected]>
458    
459            * Thuban/Model/layer.py (Layer.__init__): Make sure we have an
460            absolute filename.
461    
462    2002-08-22  Bernhard Herzog  <[email protected]>
463    
464            * Thuban/Model/table.py (Table.write_record): New method to write
465            records.
466            (Table.__init__): Open the DBF file for writing too.
467    
468            * Thuban/UI/controls.py (RecordTable.SetValue): Write the value
469            into the underlying table.
470    
471            * extensions/shapelib/shapefil.h (DBFCommit),
472            extensions/shapelib/dbfopen.c (DBFCommit): New API function to
473            commit any changes made to the DBF file.
474    
475            * Thuban/UI/mainwindow.py (make_check_current_tool)
476            (_tool_command): Put the code that generates the "checked"
477            callback into a separate function so that we can reuse it
478            elsewhere
479    
480            * Thuban/Model/save.py (Saver): New class to handle serializing a
481            session into an XML file. The main reason to introduce a class is
482            that applications built on Thuban can derive from it so that they
483            can save additional information in a session file.
484            (save_session): Delegate almost all the work to the Saver class.
485            Rename the filename argument to file because it may be a file like
486            object now.
487    
488            * Thuban/Model/load.py: Get rid of the Python 1.5.2 compatibility
489            code. Remove the little test code which would be executed when the
490            module is run as a script which didn't work anymore since it can't
491            import the other Thuban modules.
492            (ProcessSession, load_session): Refactor the ProcessSession to
493            have one method for each element start and end tag so that derived
494            classes can easily override the processing of individual tags.
495            Also, always parse with namespaces enabled because applications
496            built on top of Thuban will likely use namespaces if they extend
497            the session file format.
498    
499    2002-08-21  Bernhard Herzog  <[email protected]>
500    
501            * setup.py (ThubanInstall.run): Don't repr install_lib_orig
502            because thubaninit_contents will do it for us.
503    
504    2002-08-16  Jan-Oliver Wagner <[email protected]>
505    
506            * Thuban/UI/mainwindow.py: menu item 'show session tree' now disable if
507            tree window already open
508    
509    2002-08-15  Bernhard Herzog  <[email protected]>
510    
511            * Thuban/Model/layer.py (Layer.Destroy): Call the unboundd method
512            with self.
513    
514            * Thuban/UI/view.py (MapCanvas.OnLeftUp): Only release the mouse
515            when we have actually captured it.
516    
517            * Thuban/Model/layer.py (Layer.Destroy): New. Explicitly close the
518            shapefile and destroy the table.
519    
520            * Thuban/Model/table.py (Table.Destroy): New. Close the DBF file.
521    
522    2002-08-14  Bernhard Herzog  <[email protected]>
523    
524            * Thuban/UI/controls.py (RecordTable.__init__): Remove the unused
525            instance variable columns
526            (RecordTable.GetTypeName): row and col may be negative in some
527            cases.
528    
529            * setup.py (InstallLocal.initialize_options)
530            (InstallLocal.finalize_options, InstallLocal.user_options): New
531            option create-init-file to build a thubaninit.py when running
532            install_local
533            (InstallLocal.run): Create the thubaninit.py module when requested
534            (thubaninit_contents): Split the template into several parts and
535            create a new function thubaninit_contents that creates the
536            contents of a thubaninit module.
537            (ThubanInstall.run): Use the new function to create the thubaninit
538            module.
539    
540    2002-07-30  Bernhard Herzog  <[email protected]>
541    
542            * Thuban/UI/application.py (ThubanApplication.OnExit): Do some
543            cleanup.
544            (ThubanApplication.MainLoop): Extend to automatically call OnExit.
545    
546            * Thuban/Model/session.py (Session.Destroy): Don't bypass the
547            direct base class' Destroy method.
548    
549            * Thuban/Model/map.py (Map.ClearLayers): New method to delete all
550            layers.
551            (Map.Destroy): Destroy the label_layer as well and call the
552            inherited Desatroymethod first so that no more messages are
553            issued.
554            (Map.RaiseLayer, Map.LowerLayer): Only issue LAYERS_CHANGED
555            message if the stacking order actually has changed. Add
556            doc-strings.
557            (Map.BoundingBox): Correct the doc-string.
558            (Map.AddLayer, Map.RemoveLayer, Map.Layers, Map.HasLayers)
559            (Map.ProjectedBoundingBox, Map.SetProjection): Add doc-strings.
560    
561            * Thuban/Model/label.py (LabelLayer.ClearLabels): New to delete
562            all labels.
563    
564    2002-07-29  Bernhard Herzog  <[email protected]>
565    
566            * Thuban/Model/map.py (Map.subscribe_layer_channels)
567            (Map.unsubscribe_layer_channels): Put the code that (un)subscribes
568            to a layer's channels into separate methods.
569            (Map.RemoveLayer, Map.AddLayer): Call the new methods
570            (Map.Destroy): Unsubscribe from a layer's channels before
571            destroying it.
572    
573            * Thuban/UI/view.py (MapCanvas.find_shape_at): Change the
574            selected_layer parameter to searched_layer which is the layer to
575            search in.
576            (MapCanvas.SelectShapeAt): New parameter layer to restrict the
577            search to that layer. Return the selected layer and shape.
578    
579            * Examples/simple_extensions/simple_tool.py (simple_tool): Fix a
580            typo
581    
582    2002-07-24  Bernhard Herzog  <[email protected]>
583    
584            * Thuban/UI/application.py (ThubanApplication.create_session):
585            Extend the doc string.
586            (ThubanApplication.subscribe_session)
587            (ThubanApplication.unsubscribe_session): New methods to
588            subscribe/unsubscribe to/from session channels.
589            (ThubanApplication.SetSession): Call the new methods here.
590            (ThubanApplication.maps_changed, ThubanApplication.set_map):
591            Renamed set_map to maps_changed. Its now a subscriber for
592            MAPS_CHANGED.
593    
594            * Thuban/UI/view.py (ZoomOutTool.MouseUp): Use the correct
595            x-coordinate in case of simple clicks
596    
597            * Thuban/Model/base.py (Modifiable.changed): Apply the args tuple,
598            don't pass it as a parameter
599    
600            * Thuban/Model/session.py (Session.RemoveMap): New
601    
602            * Thuban/UI/mainwindow.py (MainWindow.__init__): Turn the initial
603            window size into a parameter.
604    
605    2002-07-23  Bernhard Herzog  <[email protected]>
606    
607            * Thuban/UI/menu.py (Menu.item_index): Also search for menus not
608            just commands.
609    
610            * Thuban/UI/mainwindow.py (MainWindow.__init__): Change the
611            parameter list a bit to allow setting the window title and the
612            initial message in the status bar. Update the callers.
613    
614            * Thuban/UI/application.py (ThubanApplication.OnInit)
615            (ThubanApplication.CreateMainWindow): Put the mainwindow
616            instantiation into a separate method so that it can be overridden
617            by a subclass.
618    
619    2002-07-19  Bernhard Herzog  <[email protected]>
620    
621            * Thuban/Model/session.py: Issue a CHANGED message every time
622            another changed message is issued to make it easier to get
623            notified of changes.
624            (Session): Update the doc string
625            (Session.forward): Issue changed-events as CHANGED as well.
626            (Session.changed): Overwrite the inherited version to issue
627            CHANGED events as well.
628    
629            * Thuban/UI/tree.py: We can now simply subscribe to the session's
630            CHANGED channel to be informed of changes.
631            (SessionTreeCtrl.session_channels): Not needed any longer.
632            (SessionTreeCtrl.unsubscribe_all, SessionTreeCtrl.session_changed):
633            Only have to (un)subscribe CHANGED
634    
635            * Thuban/Model/map.py (Map.TreeInfo): Deal better with empty maps.
636    
637            * Thuban/UI/main.py, Thuban/UI/__init__.py: Move the work-around
638            for the wxPython locale bug to __init__.py so that it's
639            automatically executed by anybody using UI code from Thuban.
640    
641    2002-07-18  Bernhard Herzog  <[email protected]>
642    
643            * Thuban/UI/main.py (main): app no longer needs to be global
644    
645            * Thuban/UI/mainwindow.py (MainWindow.__init__): Add application
646            as parameter and store it in an instance variable
647            (MainWindow.invoke_command, MainWindow.update_command_ui)
648            (MainWindow.save_modified_session, MainWindow.NewSession)
649            (MainWindow.OpenSession, MainWindow.SaveSession)
650            (MainWindow.SaveSessionAs, MainWindow.ShowSessionTree): Use self's
651            application object.
652    
653            * Thuban/UI/application.py (ThubanApplication.OnInit): Instantiate
654            the main window with self.
655    
656            * Thuban/UI/context.py: New module with the context class
657    
658            * Thuban/UI/command.py (Command): Update doc string.
659    
660            * Thuban/UI/mainwindow.py (MainWindow.invoke_command,
661            MainWindow.update_command_ui): Pass an instance of the context
662            class to the command's methods
663            (check_current_tool, call_method): Handle the new context
664            implementation
665    
666            * Examples/simple_extensions/simple_tool.py (simple_tool,
667            check_simple_tool): Handle the new context implementation
668    
669            * Examples/simple_extensions/simple_command.py (simple_command):
670            Handle the new context implementation. Update the comments about
671            the context.
672    
673            * Thuban/UI/application.py (ThubanApplication.SetSession): Add
674            doc-string
675            (ThubanApplication.Session): New method to return the session
676            object
677    
678            * Thuban/UI/tree.py (SessionTreeCtrl.update_tree): The
679            interactor's selected_layer may not be a layer of the current
680            session when the tree is updated while a new session is being set.
681    
682    2002-07-17  Bernhard Herzog  <[email protected]>
683    
684            * Thuban/UI/tree.py (color_string): Removed. No longer used.
685            (SessionTreeCtrl.update_tree, SessionTreeCtrl.add_items): Split
686            update_tree into update_tree and add_items. The tree now uses a
687            more generic way to display the contents of the tree.
688            (SessionTreeCtrl): Add a doc string explaining the TreeInfo method
689    
690            * Thuban/Model/layer.py (Layer.TreeInfo),
691            Thuban/Model/extension.py (Extension.TreeInfo),
692            Thuban/Model/map.py (Map.TreeInfo),
693            Thuban/Model/session.py (Session.TreeInfo):
694            Add TreeInfo methods to implement the new tree view update scheme
695    
696    2002-07-16  Bernhard Herzog  <[email protected]>
697    
698            * Thuban/UI/application.py: Don't use "import from" for the
699            MainWindow. It can't always be resolved.
700            (ThubanApplication.OnInit): change reference to MainWindow
701            accordingly.
702    
703            * Thuban/UI/menu.py (Menu.SetItems): New method to replace a menu
704            completely
705    
706    2002-07-10  Bernhard Herzog  <[email protected]>
707    
708            * setup.py (create_init_module): New configurable variable whose
709            default depends on the platform we're running on.
710            (ThubanInstall.initialize_options): Initialize
711            self.create_init_module from the global create_init_module
712            (ThubanInstall.user_options): indictate that the options
713            create-init-module and init-module-dir have arguments.
714    
715            * setup.py: In the setup call change the version number to include
716            cvs.
717    
718            * MANIFEST.in: Add the files in Examples
719    
720    2002-07-09  Bernhard Herzog  <[email protected]>
721    
722            * setup.py: In the setup call, use the thuban homepage as the
723            value of the url parameter.
724    
725            * Examples: New subdirectory for examples.
726    
727            * Examples/simple_extensions/simple_tool.xpm,
728            Examples/simple_extensions/simple_tool.py,
729            Examples/simple_extensions/simple_command.py,
730            Examples/simple_extensions/README: Simple examples showing how to
731            add new commands and tools.
732    
733            * setup.cfg (bdist_rpm): Add the default value for prefix and tell
734            bdist_rpm that we also have an install script.
735            (bdist_inno): Add 2002 to the copyright notice.
736    
737            * setup.py: Create a file in python's site-packages directory to
738            make installation of Thuban as a library easier.
739            (ThubanInstall.user_options): Add two new options,
740            create-init-module and init-module-dir
741            (ThubanInstall.expand_with_pure_python_dirs): New method to expand
742            filenames for installation in the default directories.
743            (ThubanInstall.select_scheme, ThubanInstall.convert_paths): Extend
744            the inherited methods to capture some filenames before they're
745            transformed too much by distutils.
746            (ThubanInstall.run): Create the init module if requested.
747            (ThubanInstall.thuban_init_filename): New method to return the
748            full name of the init module.
749            (ThubanInstall.get_outputs): Append the filename of the init
750            module.
751    
752    2002-07-08  Bernhard Herzog  <[email protected]>
753    
754            * setup.py (thuban_bdist_rpm): Extend this version of bdist_rpm to
755            handle the prefix properly which means that the default for the
756            installation prefix should be /usr for RPMs and /usr/local when
757            doing a normal source install.
758            (bdist_rpm_install_script): Script to override the default install
759            commands in the specfile generated by the bdist_rpm command.
760            (thuban_bdist_rpm.user_options): Add a prefix option
761            (thuban_bdist_rpm.initialize_options): Init the prefix option.
762            Create the script files for the spec files as empty files here
763            (thuban_bdist_rpm._make_spec_file): Override the inherited method
764            to fill the script files with content.
765    
766            * Thuban/Model/save.py (relative_filename): Wrapper around
767            Thuban.Lib.fileutil.relative_filename that accepts an empty dir
768            argument. save_session now automatically uses this version,
769            solving a problem when saving to a relative filename.
770    
771            * setup.py: In the setup call, make sure that the library
772            directories are under $prefix/lib not directly under $prefix.
773    
774    2002-06-20  Jan-Oliver Wagner <[email protected]>
775    
776            * Thuban/Model/extension.py: new module to handle extension objects.
777            * Thuban/Model/messages.py: new messages for extensions.
778            * Thuban/Model/session.py (Session.Extensions, Session.HasExtensions,
779            Session.AddExtension): new for handling extensions.
780            Also some other minor changes to round up extension handling.
781            * Thuban/UI/tree.py (SessionTreeCrtl:update_tree): Added visualization
782            of Extension titles and title and names of its objects.
783    
784    2002-05-29  Bernhard Herzog  <[email protected]>
785    
786            * Thuban/UI/mainwindow.py (MainWindow.bind_command_events): Bind
787            the events for a command.
788            (MainWindow.add_toolbar_command, MainWindow.add_menu_command):
789            Call bind_command_events to bind the events. add_toolbar_command
790            can now bind events too so that it's possible to have commands
791            that are only available through the toolbar.
792            (MainWindow.init_ids): New instance variable events_bound to keep
793            track of for which commands events have been bound.
794    
795    2002-05-28  Bernhard Herzog  <[email protected]>
796    
797            * Thuban/UI/menu.py: New module to build and manage menus.
798    
799            * Thuban/UI/mainwindow.py: Remove some unused imports.
800            (MainWindow.__init__, main_menu): move the definition of the main
801            menu from __init__ to the Menu instance main_menu.
802            (MainWindow.build_menu_bar, MainWindow.build_menu): New methods to
803            build the menu bar and sub-menus from a menu description.
804    
805            * Thuban/UI/application.py (ThubanApplication.OnInit): Read the
806            startup file
807            (ThubanApplication.read_startup_files): New method to run
808            ~/.thuban/thubanstart.py
809    
810            * Thuban/UI/mainwindow.py (MainWindow.__init__, main_toolbar):
811            Move the toolbar definition to the Menu instance main_toolbar.
812            (MainWindow.build_toolbar): New method to build the toolbar
813            similar to the build_menu methods
814    
815    2002-05-23  Bernhard Herzog  <[email protected]>
816    
817            * Thuban/UI/mainwindow.py (MainWindow.__init__): Fix spelling of
818            layer_outline_color. Fix it in the definition of the command too.
819    
820            * Thuban/UI/command.py (Command): Fix typo in doc string
821    
822    2002-05-22  Bernhard Herzog  <[email protected]>
823    
824            * Thuban/UI/mainwindow.py (MainWindow.RunMessageBox): Fix a typo
825            in the docstring
826    
827    2002-05-15  Bernhard Herzog  <[email protected]>
828    
829            * Thuban/Model/layer.py (Layer.open_shapefile): Set bbox to None
830            when the shapefile is empty.
831            (Layer.BoundingBox, Layer.LatLongBoundingBox): Both methods may
832            now return None for empty shapefiles. Update doc-strings.
833    
834            * Thuban/Model/map.py (Map.BoundingBox): Add doc-string. Deal with
835            the layer's bbox being None.
836    
837            * Thuban/UI/tree.py (SessionTreeCtrl.update_tree): Deal with the
838            layer's bbox being None.
839    
840            * Thuban/UI/view.py (MapCanvas.shape_selected): Only redraw when
841            necessary.
842            (MapCanvas.__init__): New instance variables, last_selected_layer
843            and last_selected_shape to determine how the selection has
844            changed.
845    
846            * Thuban/UI/tableview.py (TableGrid.__init__): Do not call
847            AutoSizeColumns because it will cause a traversal of the entire
848            table which for large .dbf files will take a very long time.
849    
850    2002-05-14  Bernhard Herzog  <[email protected]>
851    
852            * Thuban/Model/layer.py (Layer.open_shapefile): Choose a better
853            maximum depth for the tree than shapelib does by default.
854    
855    2002-05-10  Bernhard Herzog  <[email protected]>
856    
857            * setup.py (py_modules): The shptree modules doesn't have a
858            wrapper, so don't include it in the py_modules
859    
860    2002-05-08  Bernhard Herzog  <[email protected]>
861    
862            * extensions/shapelib/shptree.c (compare_ints): Make arguments
863            const void * as in the qsort prototype
864            (SHPTreeFindLikelyShapes): Remove some unused variables.
865    
866            * Thuban/UI/view.py (PanTool.MouseMove): Use the bitmap the view
867            maintains to redraw the window during a drag.
868            (MapCanvas.unprojected_rect_around_point): New method to determine
869            a small region around a point for hit-testing.
870            (MapCanvas.find_shape_at): Only test the shapes in a small region
871            around the point.
872    
873            * setup.py: Increment the version to 0.1.2
874    
875            * Thuban/UI/tree.py (SessionTreeCtrl.unsubscribe_all): Remove a
876            debug print and set session to None after unsubscribing
877    
878    2002-05-07  Bernhard Herzog  <[email protected]>
879    
880            * Data/iceland_sample.session, Data/iceland_sample.thuban: Rename
881            the file to have a .thuban extension.
882    
883            * Thuban/UI/tree.py (session_channels): New class constant with
884            all the session channels to subscribe to to update the tree
885            (SessionTreeCtrl.session_changed): Remember the session so that we
886            can unsubscribe properly. Use the new class constant to
887            unsubscribe from the old session and subscribe to the new one.
888            (SessionTreeCtrl.unsubscribe_all): New method to unsubscribe all
889            subscriptions of the SessionTreeCtrl.
890            (SessionTreeView.OnClose): Call the tree's unsubscribe_all method.
891    
892            * Thuban/UI/mainwindow.py (MainWindow.__init__): Add the "Show
893            Session Tree" command to the file menu.
894    
895            * Thuban/UI/view.py (MapCanvas.do_redraw): Pass the entire bitmap
896            as update_region to the renderer.
897    
898            * Thuban/UI/renderer.py
899            (ScreenRenderer.layer_ids, ScreenRenderer.draw_shape_layer): The
900            update box is now directly a tuple, not a wxRect anymore.
901    
902            * Thuban/Model/layer.py (Layer.ShapesInRegion): Remove some debug
903            prints.
904    
905    2002-05-07  Bernhard Herzog  <[email protected]>
906    
907            * setup.py: Add the shptree extension module. See
908            extensions/pyshapelib/ChangeLog for more details.
909    
910            * extensions/shapelib/shpopen.c, extensions/shapelib/shapefil.h,
911            extensions/shapelib/dbfopen.c: Really update to the versions of
912            shapelib 1.2.9. For some reason it wasn't really done on
913            2002-04-11.
914    
915            * extensions/shapelib/shptree.c: Modified version of shptree.c of
916            shapelib 1.2.9. The only real difference is the use of qsort
917            instead of a bubble sort implementation
918    
919            * Thuban/Model/layer.py (Layer.__init__): New instance variable
920            shapetree to hold the shapelib quadtree for the shapefile
921            (Layer.open_shapefile): Create the quad tree.
922            (Layer.ShapesInRegion): New method to return the ids of shapes in
923            a given region using the quad tree.
924    
925            * extensions/thuban/wxproj.cpp (project_points): Fix some typos in
926            comment
927            (draw_polygon_shape): Accept both arcs and polygons.
928            (initwxproj): Use the new PYSHAPELIB_IMPORT_API macro to import
929            the api.
930    
931            * Thuban/UI/renderer.py (MapRenderer.layer_ids): New method to
932            return the shape ids to be rendered in a given layer.
933            (MapRenderer.draw_shape_layer): Call layer_ids to get the list of
934            ids. Use draw_polygon_shape to draw arc shapes as well.
935            (ScreenRenderer.RenderMap): New parameter for the rectangle that
936            has to be updated
937            (ScreenRenderer.layer_ids): Make use of the layer's quadtree by
938            calling it's ShapesInRegion method.
939    
940            * Thuban/UI/view.py (MapCanvas.__init__): New instance variable
941            update_region for the update region.
942            (MapCanvas.OnPaint): Maintain the update region
943            (MapCanvas.do_redraw): Pass the bounding box of the update_region
944            to the renderer when drawing the bitmap. Reset the update_region.
945    
946    2002-05-03  Bernhard Herzog  <[email protected]>
947    
948            * Thuban/UI/mainwindow.py (MainWindow.SaveSessionAs,
949            MainWindow.OpenSession): Change the file extension of the session
950            files to .thuban
951    
952            * Thuban/Model/session.py (Session.AddMap, forwarded_channels):
953            Move the map channels to be forwarded by the session into the
954            class constant with forwarded_channels. Also add
955            LAYER_PROJECTION_CHANGED and LAYER_VISIBILITY_CHANGED to
956            forwarded_channels
957    
958            * Thuban/Model/base.py (Modifiable.changed): Fix doc-string (a
959            typo and some rewording).
960    
961  2002-05-02  Bernhard Herzog  <[email protected]>  2002-05-02  Bernhard Herzog  <[email protected]>
962    
963          * Thuban/UI/view.py: Keep the temporary bitmap used during drawing          * Thuban/UI/view.py: Keep the temporary bitmap used during drawing
# Line 40  Line 1000 
1000          * Thuban/UI/messages.py (VIEW_POSITION): New message for the          * Thuban/UI/messages.py (VIEW_POSITION): New message for the
1001          position in the statusbar          position in the statusbar
1002    
1003  2002-04-26      Frank Koormann <[email protected]>  2002-04-26  Frank Koormann <[email protected]>
1004    
1005          * Thuban/UI/mainwindow.py: AddLayer, Dialog title s/session/data          * Thuban/UI/mainwindow.py: AddLayer, Dialog title s/session/data
1006    
1007  2002-04-24      Frank Koormann <[email protected]>  2002-04-24  Frank Koormann <[email protected]>
1008            
1009          * Resources/Bitmaps/identify.xpm: shadow added          * Resources/Bitmaps/identify.xpm: shadow added
1010    
1011          * Resources/Bitmaps/fullextent.xpm: new          * Resources/Bitmaps/fullextent.xpm: new
           
 2002-04-22      Jan-Oliver Wagner <[email protected]>  
1012    
1013          * Thuban/UI/tree.py (update_tree): added test for None on map bounding box  2002-04-22  Jan-Oliver Wagner <[email protected]>
1014    
1015            * Thuban/UI/tree.py (update_tree): added test for None on map bounding
1016            box
1017    
1018  2002-04-21      Jan-Oliver Wagner <[email protected]>  2002-04-21  Jan-Oliver Wagner <[email protected]>
1019    
1020          * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog): new          * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog): new
1021    
1022          * Thuban/UI/tree.py (update_tree): added added map extent          * Thuban/UI/tree.py (update_tree): added added map extent
1023    
1024          * Thuban/UI/mainwindow.py (_method_command): extended by parameter          * Thuban/UI/mainwindow.py (_method_command): extended by parameter
1025          icon; added map_full_extend as tool          icon; added map_full_extend as tool
1026    
1027  2002-04-19      Jan-Oliver Wagner <[email protected]>  2002-04-19  Jan-Oliver Wagner <[email protected]>
1028    
1029          * Thuban/UI/mainwindow.py (SaveSession): launch save as dialog for          * Thuban/UI/mainwindow.py (SaveSession): launch save as dialog for
1030          saving _new_ sessions          saving _new_ sessions
# Line 165  Line 1126 
1126    
1127          * setup.py: increase version number to 0.1          * setup.py: increase version number to 0.1
1128          (data_dist): New command class for data distribution          (data_dist): New command class for data distribution
           
1129    
1130  2001-09-14  Bernhard Herzog  <[email protected]>  2001-09-14  Bernhard Herzog  <[email protected]>
1131    
1132          * Thuban/UI/identifyview.py (IdentifyListCtrl.selected_shape):          * Thuban/UI/identifyview.py (IdentifyListCtrl.selected_shape):
1133          Handle the case of no layer (i.e. layer is None) properly.          Handle the case of no layer (i.e. layer is None) properly.
1134    
1135          * Thuban/UI/proj4dialog.py (UTMDialog.__init__, Proj4Dialog.__init__):          * Thuban/UI/proj4dialog.py (UTMDialog.__init__, Proj4Dialog.__init__):
1136          Set the initial selection of the combo boxes to reflect the          Set the initial selection of the combo boxes to reflect the
1137          projection we're starting with in a way that works on windows,          projection we're starting with in a way that works on windows,
1138          too.          too.
# Line 282  Line 1242 
1242          (MainWindow.identify_view_on_demand): Store the interactor in an          (MainWindow.identify_view_on_demand): Store the interactor in an
1243          instvar and use that reference instead of going through main.app          instvar and use that reference instead of going through main.app
1244    
1245          * Thuban/UI/mainwindow.py (MainWindow.ShowSessionTree):          * Thuban/UI/mainwindow.py (MainWindow.ShowSessionTree):
1246          * Thuban/UI/application.py (ThubanApplication.OnInit):          * Thuban/UI/application.py (ThubanApplication.OnInit):
1247          * Thuban/UI/main.py (main): Create the session tree view in main          * Thuban/UI/main.py (main): Create the session tree view in main
1248          with the new mainwindow method ShowSessionTree and not directly          with the new mainwindow method ShowSessionTree and not directly
1249          the application's OnInit method          the application's OnInit method
# Line 299  Line 1259 
1259          layer to the tableview dialog.          layer to the tableview dialog.
1260    
1261          * Thuban/UI/tableview.py: Add some doc-strings          * Thuban/UI/tableview.py: Add some doc-strings
1262          (TableGrid):          (TableGrid):
1263          (TableGrid.OnRangeSelect):          (TableGrid.OnRangeSelect):
1264          (TableGrid.OnSelectCell):          (TableGrid.OnSelectCell):
1265          (TableFrame.__init__):          (TableFrame.__init__):
# Line 366  Line 1326 
1326  2001-09-05  Bernhard Herzog  <[email protected]>  2001-09-05  Bernhard Herzog  <[email protected]>
1327    
1328          * Thuban/UI/view.py (MapCanvas.__init__): New argument, interactor.          * Thuban/UI/view.py (MapCanvas.__init__): New argument, interactor.
1329            
1330          * Thuban/UI/mainwindow.py (MainWindow.__init__): New argument          * Thuban/UI/mainwindow.py (MainWindow.__init__): New argument
1331          interactor to pass through to the MapCanvas          interactor to pass through to the MapCanvas
1332            
1333          * Thuban/UI/application.py (ThubanApplication.OnInit): Use the new          * Thuban/UI/application.py (ThubanApplication.OnInit): Use the new
1334          argument to the MainWindow constructor to get rid of the ugly hack          argument to the MainWindow constructor to get rid of the ugly hack
1335          that made main.app available early just so that the mapcanvas          that made main.app available early just so that the mapcanvas
# Line 416  Line 1376 
1376          (ThubanInstall.run): Remove the leading install root from the          (ThubanInstall.run): Remove the leading install root from the
1377          script filename if an install root was specified and use the new          script filename if an install root was specified and use the new
1378          link_file method          link_file method
1379            
1380          * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Fit the map to          * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Fit the map to
1381          the window when the first layer is added to the map.          the window when the first layer is added to the map.
1382    
# Line 453  Line 1413 
1413          (InnoIconItem): Helper class for bdist_inno          (InnoIconItem): Helper class for bdist_inno
1414          (thuban_bdist_inno): Thuban specific version of bdist_inno. Added          (thuban_bdist_inno): Thuban specific version of bdist_inno. Added
1415          this together with the appropriate parameters, to the setup call.          this together with the appropriate parameters, to the setup call.
1416            
1417          * setup.cfg (bdist_inno): added new section for the inno setup          * setup.cfg (bdist_inno): added new section for the inno setup
1418          installer          installer
1419    

Legend:
Removed from v.126  
changed lines
  Added in v.426

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26