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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 152 - (show annotations)
Tue May 7 17:01:49 2002 UTC (22 years, 10 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 21281 byte(s)
update ChangeLog

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]>
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
501 the window when the first layer is added to the map.
502
503 * setup.py (ThubanInstall.run): Honor the build root (self.root)
504 when linking thuban.py to <prefix>/bin
505
506 2001-08-31 Bernhard Herzog <[email protected]>
507
508 * setup.py: In the setup call, the install parameters shouldn't
509 have trailing slashes because distutils on non-posix platforms
510 doesn't like that. The same applies to other directories like
511 "Resources/Bitmaps"
512
513 In the configuration section for nt, move the wxWindows directory
514 optins into the part clearly marked as editable.
515
516 (InstallLocal.initialize_options):
517 (InstallLocal.user_options): remove the currently unused debug
518 flag
519 (thuban_build_py.find_all_modules): Add this method so that it
520 works for our case of having packages and modules in one
521 distribution as well.
522 (ThubanInstall.initialize_options):
523 (ThubanInstall.finalize_options):
524 (ThubanInstall.user_options):
525 (ThubanInstall.boolean_options): Add new options, do-symlink and
526 extra files. Since these are the first ThubanInstall specific
527 options, override user_options and boolean_options
528 (ThubanInstall.run): Honor the new do-symlink and extra-files
529 options.
530 (ThubanInstall.get_outputs): Add to override the base-class's
531 version and add the extra-files to the outputs
532 (bdist_inno): New class for windows distributions with Inno Setup
533 (InnoIconItem): Helper class for bdist_inno
534 (thuban_bdist_inno): Thuban specific version of bdist_inno. Added
535 this together with the appropriate parameters, to the setup call.
536
537 * setup.cfg (bdist_inno): added new section for the inno setup
538 installer
539
540 * Thuban/UI/tree.py (myTreeCtrlPanel.__init__): New inst var
541 changing_selection to avoid recursive selection events when
542 modifying the selection in response to a selection event.
543 (myTreeCtrlPanel.normalize_selection): Set the new inst var when
544 changing the tree's selection.
545 (myTreeCtrlPanel.OnSelChanged): Only normalize the selection when
546 we're not being called indirectly from normalize_selection.
547
548 * Thuban/UI/mainwindow.py (MainWindow.update_command_ui): Call
549 event.Check only if the command is actuall checkable.
550 (MainWindow.__init__): Call the toolbar's Realize method to make
551 sure that the items are actually shown
552
553 2001-08-28 Bernhard Herzog <[email protected]>
554
555 * setup.py: Fix some doc strings
556
557 * ChangeLog: started
558

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26