/[thuban]/branches/WIP-pyshapelib-bramz/ChangeLog
ViewVC logotype

Annotation of /branches/WIP-pyshapelib-bramz/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log


Revision 146 - (hide annotations)
Tue May 7 14:59:27 2002 UTC (22 years, 10 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 20306 byte(s)
update ChangeLog

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

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26