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

Legend:
Removed from v.18  
changed lines
  Added in v.152

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26