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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 146 - (show 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 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 2002-05-03 Bernhard Herzog <[email protected]>
43
44 * Thuban/UI/mainwindow.py (MainWindow.SaveSessionAs,
45 MainWindow.OpenSession): Change the file extension of the session
46 files to .thuban
47
48 * Thuban/Model/session.py (Session.AddMap, forwarded_channels):
49 Move the map channels to be forwarded by the session into the
50 class constant with forwarded_channels. Also add
51 LAYER_PROJECTION_CHANGED and LAYER_VISIBILITY_CHANGED to
52 forwarded_channels
53
54 * Thuban/Model/base.py (Modifiable.changed): Fix doc-string (a
55 typo and some rewording).
56
57 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 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 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
105 * Resources/Bitmaps/identify.xpm: shadow added
106
107 * Resources/Bitmaps/fullextent.xpm: new
108
109 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 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 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 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 2002-04-04 Bernhard Herzog <[email protected]>
155
156 * setup.py (thuban_bdist_rpm.initialize_options): Use
157 initialize_options to create the scripts for the rpm.
158
159 * extensions/pyprojection/setup.py (PROJ4_PREFIX): Just use /
160
161 2002-04-03 Bernhard Herzog <[email protected]>
162
163 * setup.py: Increment version to 0.1.1
164
165 * 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 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 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 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 2002-01-14 Bernhard Herzog <[email protected]>
212
213 * setup.py (data_dist.make_distribution): Fix some typos
214
215 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 2001-09-14 Bernhard Herzog <[email protected]>
227
228 * 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 * 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 2001-09-13 Bernhard Herzog <[email protected]>
244
245 * Thuban/UI/tree.py (SessionTreeCtrl.OnSelChanged): Make sure to
246 deselect the layer if no layer is selected
247
248 * 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 (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
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 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 2001-09-10 Bernhard Herzog <[email protected]>
287
288 * 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 * 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 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 (MapCanvas.FitRectToWindow): If the rect has zero with or zero
316 height do nothing (avoids zero division errors)
317
318 2001-09-06 Bernhard Herzog <[email protected]>
319
320 * 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 * 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 * 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 * 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 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 2001-09-04 Bernhard Herzog <[email protected]>
435
436 * 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 * 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 2001-09-03 Bernhard Herzog <[email protected]>
463
464 * 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 * 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 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 2001-08-28 Bernhard Herzog <[email protected]>
530
531 * setup.py: Fix some doc strings
532
533 * 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