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

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26