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

Legend:
Removed from v.107  
changed lines
  Added in v.459

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26