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

Legend:
Removed from v.26  
changed lines
  Added in v.172

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26