/[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 32 by bh, Thu Sep 6 13:32:55 2001 UTC revision 190 by bh, Tue May 28 12:39:49 2002 UTC
# Line 1  Line 1 
1    2002-05-28  Bernhard Herzog  <[email protected]>
2    
3            * Thuban/UI/menu.py: New module to build and manage menus.
4    
5            * Thuban/UI/mainwindow.py: Remove some unused imports.
6            (MainWindow.__init__, main_menu): move the definition of the main
7            menu from __init__ to the Menu instance main_menu.
8            (MainWindow.build_menu_bar, MainWindow.build_menu): New methods to
9            build the menu bar and sub-menus from a menu description.
10    
11            * Thuban/UI/application.py (ThubanApplication.OnInit): Read the
12            startup file
13            (ThubanApplication.read_startup_files): New method to run
14            ~/.thuban/thubanstart.py
15    
16    2002-05-23  Bernhard Herzog  <[email protected]>
17    
18            * Thuban/UI/mainwindow.py (MainWindow.__init__): Fix spelling of
19            layer_outline_color. Fix it in the definition of the command too.
20    
21            * Thuban/UI/command.py (Command): Fix typo in doc string
22    
23    2002-05-22  Bernhard Herzog  <[email protected]>
24    
25            * Thuban/UI/mainwindow.py (MainWindow.RunMessageBox): Fix a typo
26            in the docstring
27    
28    2002-05-15  Bernhard Herzog  <[email protected]>
29    
30            * Thuban/Model/layer.py (Layer.open_shapefile): Set bbox to None
31            when the shapefile is empty.
32            (Layer.BoundingBox, Layer.LatLongBoundingBox): Both methods may
33            now return None for empty shapefiles. Update doc-strings.
34    
35            * Thuban/Model/map.py (Map.BoundingBox): Add doc-string. Deal with
36            the layer's bbox being None.
37    
38            * Thuban/UI/tree.py (SessionTreeCtrl.update_tree): Deal with the
39            layer's bbox being None.
40    
41            * Thuban/UI/view.py (MapCanvas.shape_selected): Only redraw when
42            necessary.
43            (MapCanvas.__init__): New instance variables, last_selected_layer
44            and last_selected_shape to determine how the selection has
45            changed.
46    
47            * Thuban/UI/tableview.py (TableGrid.__init__): Do not call
48            AutoSizeColumns because it will cause a traversal of the entire
49            table which for large .dbf files will take a very long time.
50    
51    2002-05-14  Bernhard Herzog  <[email protected]>
52    
53            * Thuban/Model/layer.py (Layer.open_shapefile): Choose a better
54            maximum depth for the tree than shapelib does by default.
55    
56    2002-05-10  Bernhard Herzog  <[email protected]>
57    
58            * setup.py (py_modules): The shptree modules doesn't have a
59            wrapper, so don't include it in the py_modules
60    
61    2002-05-08  Bernhard Herzog  <[email protected]>
62    
63            * extensions/shapelib/shptree.c (compare_ints): Make arguments
64            const void * as in the qsort prototype
65            (SHPTreeFindLikelyShapes): Remove some unused variables.
66    
67            * Thuban/UI/view.py (PanTool.MouseMove): Use the bitmap the view
68            maintains to redraw the window during a drag.
69            (MapCanvas.unprojected_rect_around_point): New method to determine
70            a small region around a point for hit-testing.
71            (MapCanvas.find_shape_at): Only test the shapes in a small region
72            around the point.
73    
74            * setup.py: Increment the version to 0.1.2
75    
76            * Thuban/UI/tree.py (SessionTreeCtrl.unsubscribe_all): Remove a
77            debug print and set session to None after unsubscribing
78    
79    2002-05-07  Bernhard Herzog  <[email protected]>
80    
81            * Data/iceland_sample.session, Data/iceland_sample.thuban: Rename
82            the file to have a .thuban extension.
83    
84            * Thuban/UI/tree.py (session_channels): New class constant with
85            all the session channels to subscribe to to update the tree
86            (SessionTreeCtrl.session_changed): Remember the session so that we
87            can unsubscribe properly. Use the new class constant to
88            unsubscribe from the old session and subscribe to the new one.
89            (SessionTreeCtrl.unsubscribe_all): New method to unsubscribe all
90            subscriptions of the SessionTreeCtrl.
91            (SessionTreeView.OnClose): Call the tree's unsubscribe_all method.
92    
93            * Thuban/UI/mainwindow.py (MainWindow.__init__): Add the "Show
94            Session Tree" command to the file menu.
95    
96            * Thuban/UI/view.py (MapCanvas.do_redraw): Pass the entire bitmap
97            as update_region to the renderer.
98    
99            * Thuban/UI/renderer.py
100            (ScreenRenderer.layer_ids, ScreenRenderer.draw_shape_layer): The
101            update box is now directly a tuple, not a wxRect anymore.
102    
103            * Thuban/Model/layer.py (Layer.ShapesInRegion): Remove some debug
104            prints.
105    
106    2002-05-07  Bernhard Herzog  <[email protected]>
107    
108            * setup.py: Add the shptree extension module. See
109            extensions/pyshapelib/ChangeLog for more details.
110    
111            * extensions/shapelib/shpopen.c, extensions/shapelib/shapefil.h,
112            extensions/shapelib/dbfopen.c: Really update to the versions of
113            shapelib 1.2.9. For some reason it wasn't really done on
114            2002-04-11.
115    
116            * extensions/shapelib/shptree.c: Modified version of shptree.c of
117            shapelib 1.2.9. The only real difference is the use of qsort
118            instead of a bubble sort implementation
119    
120            * Thuban/Model/layer.py (Layer.__init__): New instance variable
121            shapetree to hold the shapelib quadtree for the shapefile
122            (Layer.open_shapefile): Create the quad tree.
123            (Layer.ShapesInRegion): New method to return the ids of shapes in
124            a given region using the quad tree.
125    
126            * extensions/thuban/wxproj.cpp (project_points): Fix some typos in
127            comment
128            (draw_polygon_shape): Accept both arcs and polygons.
129            (initwxproj): Use the new PYSHAPELIB_IMPORT_API macro to import
130            the api.
131    
132            * Thuban/UI/renderer.py (MapRenderer.layer_ids): New method to
133            return the shape ids to be rendered in a given layer.
134            (MapRenderer.draw_shape_layer): Call layer_ids to get the list of
135            ids. Use draw_polygon_shape to draw arc shapes as well.
136            (ScreenRenderer.RenderMap): New parameter for the rectangle that
137            has to be updated
138            (ScreenRenderer.layer_ids): Make use of the layer's quadtree by
139            calling it's ShapesInRegion method.
140    
141            * Thuban/UI/view.py (MapCanvas.__init__): New instance variable
142            update_region for the update region.
143            (MapCanvas.OnPaint): Maintain the update region
144            (MapCanvas.do_redraw): Pass the bounding box of the update_region
145            to the renderer when drawing the bitmap. Reset the update_region.
146    
147    2002-05-03  Bernhard Herzog  <[email protected]>
148    
149            * Thuban/UI/mainwindow.py (MainWindow.SaveSessionAs,
150            MainWindow.OpenSession): Change the file extension of the session
151            files to .thuban
152    
153            * Thuban/Model/session.py (Session.AddMap, forwarded_channels):
154            Move the map channels to be forwarded by the session into the
155            class constant with forwarded_channels. Also add
156            LAYER_PROJECTION_CHANGED and LAYER_VISIBILITY_CHANGED to
157            forwarded_channels
158    
159            * Thuban/Model/base.py (Modifiable.changed): Fix doc-string (a
160            typo and some rewording).
161    
162    2002-05-02  Bernhard Herzog  <[email protected]>
163    
164            * Thuban/UI/view.py: Keep the temporary bitmap used during drawing
165            around to speed up most redraws:
166            (MapCanvas.__init__): New instance variable bitmap which holds the
167            bitmap
168            (MapCanvas.do_redraw): Redraw self.bitmap if necessary. Use
169            self.bitmap to draw.
170            (MapCanvas.full_redraw): New method to force a full redraw
171            including the bitmap
172            (MapCanvas.SetMap): Subscribe full_redraw instead of redraw to
173            make sure the bitmap is redrawn.
174            (MapCanvas.projection_changed, MapCanvas.set_view_transform,
175            MapCanvas.shape_selected): Call full_redraw instead of readraw to
176            make sure the bitmap is redrawn.
177            (MapCanvas.OnSize): New method to handle size events so that the
178            bitmap can be redrawn.
179    
180    2002-04-29  Bernhard Herzog  <[email protected]>
181    
182            * Thuban/UI/mainwindow.py (MainWindow.__init__): Subscribe to the
183            canvas' VIEW_POSITION event
184            (MainWindow.view_position_changed): Handler for VIEW_POSITION.
185            Update the text in the status-bar accordingly.
186    
187            * Thuban/UI/view.py (MapCanvas): Derive from Publisher as well
188            (MapCanvas.__del__): Implement because Publisher.__del__ has to be
189            called.
190            (MapCanvas.__init__): Bind EVT_LEAVE_WINDOW too. Initialize
191            current_position
192            (MapCanvas.set_current_position): New method to set
193            current_position. Issue a VIEW_POSITION event
194            (MapCanvas.CurrentPosition): New public method to return the value
195            of current_position. Should be called when the VIEW_POSITION event
196            is processed.
197            (MapCanvas.OnLeftDown, MapCanvas.OnLeftUp, MapCanvas.OnMotion):
198            Update the position.
199            (MapCanvas.OnLeaveWindow): Set the position to None.
200    
201            * Thuban/UI/messages.py (VIEW_POSITION): New message for the
202            position in the statusbar
203    
204    2002-04-26      Frank Koormann <[email protected]>
205    
206            * Thuban/UI/mainwindow.py: AddLayer, Dialog title s/session/data
207    
208    2002-04-24      Frank Koormann <[email protected]>
209            
210            * Resources/Bitmaps/identify.xpm: shadow added
211    
212            * Resources/Bitmaps/fullextent.xpm: new
213            
214    2002-04-22      Jan-Oliver Wagner <[email protected]>
215    
216            * Thuban/UI/tree.py (update_tree): added test for None on map bounding box
217    
218    2002-04-21      Jan-Oliver Wagner <[email protected]>
219    
220            * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog): new
221    
222            * Thuban/UI/tree.py (update_tree): added added map extent
223    
224            * Thuban/UI/mainwindow.py (_method_command): extended by parameter
225            icon; added map_full_extend as tool
226    
227    2002-04-19      Jan-Oliver Wagner <[email protected]>
228    
229            * Thuban/UI/mainwindow.py (SaveSession): launch save as dialog for
230            saving _new_ sessions
231    
232            * Thuban/Model/session.py (create_empty_session): new session
233            don't have a filename (set to None)
234    
235            * Thuban/UI/tree.py (update_tree): added filename and modified flag
236    
237            * Thuban/Model/load.py (ProcessSession): convert projection
238            parameters from unicode to regular string
239    
240            * Data/iceland_sample.session: Added UTM Zone 26 projection.
241    
242    2002-04-11  Bernhard Herzog  <[email protected]>
243    
244            * extensions/shapelib/shapefil.h, extensions/shapelib/shpopen.c,
245            extensions/shapelib/dbfopen.c: Update to the versions of shapelib
246            1.2.9
247    
248            * setup.py (Lib.wxproj extension): Don't link shpopen.c and put
249            the pyshapelib directoy into the list of include dirs, so that
250            pyshapelib_api.h can be found.
251    
252            * extensions/thuban/wxproj.cpp (pyshapelib_api): New variable that
253            holds the pyshapelib C-API
254            (draw_polygon_shape, point_in_polygon_shape, shape_centroid): Use
255            pyshapelib_api to access the shapelib functions.
256            (initwxproj): Import the c_api from the shapelib module and
257            initialize pyshapelib_api.
258    
259    2002-04-04  Bernhard Herzog  <[email protected]>
260    
261            * setup.py (thuban_bdist_rpm.initialize_options): Use
262            initialize_options to create the scripts for the rpm.
263    
264            * extensions/pyprojection/setup.py (PROJ4_PREFIX): Just use /
265    
266    2002-04-03  Bernhard Herzog  <[email protected]>
267    
268            * setup.py: Increment version to 0.1.1
269    
270            * Thuban/UI/mainwindow.py (MainWindow.__init__): Move the "Add
271            Layer" and "Remove Layer" commands from the layer menu to the map
272            menu
273    
274    2002-02-15  Bernhard Herzog  <[email protected]>
275    
276            * Thuban/Model/layer.py (Layer.Shape): list append only takes one
277            argument (python <= 1.5.2 erroneously accepted multiuple
278            arguments)
279    
280    2002-02-04  Bernhard Herzog  <[email protected]>
281    
282            * Thuban/UI/identifyview.py (IdentifyGridCtrl): New class to use a
283            RecordGrid in the identifyview.
284            (IdentifyView.__init__): Use IdentifyGridCtrl instead of
285            IdentifyListCtrl. The grid allows editing of the values.
286    
287            * Thuban/UI/controls.py (RecordTable, RecordGridCtrl): New classes
288            implementing a grid for a single row of a thuban table.
289    
290            * Thuban/UI/view.py (MapCanvas.SelectShapeAt): Search through all
291            layers by default. Easier to use than the previous default of only
292            searching through the select layer which meant that if no layer
293            was selected, you couldn't select a shape.
294    
295            * Thuban/UI/tableview.py (TableGrid.__init__): Fix typo
296    
297            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Honour the
298            stroke_width attribute
299    
300            * Thuban/Model/save.py (save_session): Write the new stroke_width
301            attribute
302    
303            * Thuban/Model/load.py (ProcessSession.startElement): Read the
304            stroke_width attribute
305    
306            * Thuban/Model/layer.py (Layer.__init__): New parameter and
307            instance variable stroke_width
308            (Layer.SetStrokeWidth): Set the stroke_width.
309    
310    2002-02-01  Bernhard Herzog  <[email protected]>
311    
312            * extensions/thuban/wxproj.cpp (project_points): Fix two
313            off-by-one errors in the last loop that joins the various parts
314            together.
315    
316    2002-01-14  Bernhard Herzog  <[email protected]>
317    
318            * setup.py (data_dist.make_distribution): Fix some typos
319    
320    2001-09-18  Bernhard Herzog  <[email protected]>
321    
322            * README: Slight tweaking in preparation for the 0.1 release
323    
324            * setup.cfg: Add section for sdist to create both tgz and zip
325            archives
326    
327            * setup.py: increase version number to 0.1
328            (data_dist): New command class for data distribution
329            
330    
331    2001-09-14  Bernhard Herzog  <[email protected]>
332    
333            * Thuban/UI/identifyview.py (IdentifyListCtrl.selected_shape):
334            Handle the case of no layer (i.e. layer is None) properly.
335    
336            * Thuban/UI/proj4dialog.py (UTMDialog.__init__, Proj4Dialog.__init__):
337            Set the initial selection of the combo boxes to reflect the
338            projection we're starting with in a way that works on windows,
339            too.
340    
341            * Thuban/Lib/connector.py (Connector.print_connections): Print the
342            puiblisher's ids in hex to make it easier to compare them to the
343            standard repr of python methods
344    
345            * Thuban/Model/map.py (Map.Destroy): Unsubscribe the label_layer
346            messages
347    
348    2001-09-13  Bernhard Herzog  <[email protected]>
349    
350            * Thuban/UI/tree.py (SessionTreeCtrl.OnSelChanged): Make sure to
351            deselect the layer if no layer is selected
352    
353            * Thuban/UI/view.py (MapCanvas.OnPaint): Only delay drawing to
354            idle time when there actually is something to draw. If there's
355            nothing to draw simply clear the window
356            (MapCanvas.do_redraw): Call dc.EndDrawing and add some comments.
357            (MapCanvas.SetMap): force a redraw in all cases because
358            FitMapToWindow doesn't always do it.
359            (MapCanvas.ZoomFactor): Add an optional parameter, center, to
360            specify the point to move into the center of the window
361            (ZoomOutTool.MouseUp, ZoomInTool.MouseUp): If the mouse wasn't
362            dragged, zoon in/out by a factor of 2
363            (MapCanvas.find_shape_at): Iterate backwards (i.e. with decreasing
364            index, i.e. reversed drawing order) so that objects appearing to
365            be in from of others are selected first. This is probably mostly
366            relevant for point shapes where the symbols used may overlap
367    
368            * Thuban/Model/session.py (create_empty_session): Unset the
369            modified bit before returning it
370    
371            * Thuban/UI/mainwindow.py (MainWindow.NewSession): Use
372            create_empty_session session to create the new, empty session.
373    
374            * Thuban/UI/mainwindow.py (MainWindow.__init__): Set the size of
375            the tool bitmaps.
376            (MainWindow.OnClose, MainWindow.save_modified_session): Separate
377            the code that asks whether the session should be saved into the
378            new method save_modified_session.
379            (MainWindow.OpenSession, MainWindow.NewSession): Use the new
380            method to save modified session here too.
381    
382    2001-09-11  Bernhard Herzog  <[email protected]>
383    
384            * setup.py (InnoIconItem): fix typo
385    
386            (thuban_bdist_inno.run):
387            (bdist_inno.run): Move the decision not to create symlinks on
388            non-nt platforms to thuban_bdist_inno and do it unconditinally
389            since we never want to create the symlinks here
390    
391    2001-09-10  Bernhard Herzog  <[email protected]>
392    
393            * Thuban/UI/mainwindow.py (MainWindow.IdentifyTool): Popup the
394            identify view immediately
395    
396            * Thuban/UI/controls.py: New file with two classes RecordListCtrl
397            and SelectableRecordListCtrl that implement the code shared by the
398            identify view and the label dialog
399    
400            * Thuban/UI/identifyview.py (IdentifyListCtrl): Derive from the
401            new class RecordListCtrl
402    
403            * Thuban/UI/labeldialog.py (LabelDialog.OnOK): Check whether the
404            return value of GetValue is None instead of using it as a boolean
405            directly so that Zero numbers are handled properly.
406            (LabelListCtrl): Derive from the new class
407            SelectableRecordListCtrl
408    
409            * Thuban/UI/proj4dialog.py (Proj4Dialog.__init__):
410            (Proj4Dialog.dialogLayout): Make the window resizable and set the
411            size of the text control explicitly to make the sizers work on
412            both Windows and X.
413    
414    2001-09-07  Bernhard Herzog  <[email protected]>
415    
416            * Thuban/UI/view.py (MapCanvas.find_shape_at):Add a new parameter
417            that can limit the search to the currently selected layer.
418            (MapCanvas.SelectShapeAt): Make sure that the currently selected
419            layer stays selected even when no shape is found
420            (MapCanvas.FitRectToWindow): If the rect has zero with or zero
421            height do nothing (avoids zero division errors)
422    
423  2001-09-06  Bernhard Herzog  <[email protected]>  2001-09-06  Bernhard Herzog  <[email protected]>
424    
425            * Thuban/UI/tree.py (SessionTreeCtrl, SessionTreeView.__init__):
426            Correct the spelling of SessionTreeCtrl. dabbrev is too damn
427            convenient :-)
428            (SessionTreeCtrl.__init__, SessionTreeCtrl.update_tree): Introduce
429            a new instvar layer_to_item to map layers to tree items
430            (SessionTreeCtrl.layer_selected): Select the appropriate tree item
431            to match the current selection in the interactor
432    
433            * Thuban/UI/interactor.py (Interactor.SelectedLayer):
434            (Interactor.HasSelectedLayer): New methods to query the current
435            selection
436    
437            * Thuban/UI/mainwindow.py (MainWindow.current_layer):
438            (MainWindow.has_selected_layer): Simply call the appropriate
439            interactor method
440    
441            * Thuban/UI/mainwindow.py (MainWindow.__init__):
442            (MainWindow.LayerShowTable):
443            (MainWindow.identify_view_on_demand): Store the interactor in an
444            instvar and use that reference instead of going through main.app
445    
446            * Thuban/UI/mainwindow.py (MainWindow.ShowSessionTree):
447            * Thuban/UI/application.py (ThubanApplication.OnInit):
448            * Thuban/UI/main.py (main): Create the session tree view in main
449            with the new mainwindow method ShowSessionTree and not directly
450            the application's OnInit method
451    
452            * Thuban/UI/tree.py (myTreeCtrlPanel):
453            (SessioinTreeCtrl): Rename to SessioinTreeCtrl and turn it into a
454            TreeCtrl isntead of a panel. This affects most method since we now
455            refer to self instead of self.tree
456            (SessionTreeView): New class implementing a non-modal dialog
457            showing the session tree.
458    
459            * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Pass the
460            layer to the tableview dialog.
461    
462            * Thuban/UI/tableview.py: Add some doc-strings
463            (TableGrid):
464            (TableGrid.OnRangeSelect):
465            (TableGrid.OnSelectCell):
466            (TableFrame.__init__):
467            (TableFrame.row_selected):
468            Selecting rows in the grid view now updates the selected shapes
469            through the TableFrame. To achieve this we derive TableGrid from
470            Publisher and introduce the message type ROW_SELECTED which the
471            TableFrame subscribes to and which is issued by OnRangeSelect and
472            OnSelectCell
473    
474            (DataTable.SelectRow): Removed because it's no longer needed in
475            the row/shape selection scheme
476    
477          * Thuban/UI/dialogs.py: New file implementing common classes for          * Thuban/UI/dialogs.py: New file implementing common classes for
478          dialogs          dialogs
479    

Legend:
Removed from v.32  
changed lines
  Added in v.190

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26