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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 252 - (show annotations)
Tue Jul 30 14:18:59 2002 UTC (22 years, 7 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 34601 byte(s)
update ChangeLog

1 2002-07-30 Bernhard Herzog <[email protected]>
2
3 * Thuban/UI/application.py (ThubanApplication.OnExit): Do some
4 cleanup.
5 (ThubanApplication.MainLoop): Extend to automatically call OnExit.
6
7 * Thuban/Model/session.py (Session.Destroy): Don't bypass the
8 direct base class' Destroy method.
9
10 * Thuban/Model/map.py (Map.ClearLayers): New method to delete all
11 layers.
12 (Map.Destroy): Destroy the label_layer as well and call the
13 inherited Desatroymethod first so that no more messages are
14 issued.
15 (Map.RaiseLayer, Map.LowerLayer): Only issue LAYERS_CHANGED
16 message if the stacking order actually has changed. Add
17 doc-strings.
18 (Map.BoundingBox): Correct the doc-string.
19 (Map.AddLayer, Map.RemoveLayer, Map.Layers, Map.HasLayers)
20 (Map.ProjectedBoundingBox, Map.SetProjection): Add doc-strings.
21
22 * Thuban/Model/label.py (LabelLayer.ClearLabels): New to delete
23 all labels.
24
25 2002-07-29 Bernhard Herzog <[email protected]>
26
27 * Thuban/Model/map.py (Map.subscribe_layer_channels)
28 (Map.unsubscribe_layer_channels): Put the code that (un)subscribes
29 to a layer's channels into separate methods.
30 (Map.RemoveLayer, Map.AddLayer): Call the new methods
31 (Map.Destroy): Unsubscribe from a layer's channels before
32 destroying it.
33
34 * Thuban/UI/view.py (MapCanvas.find_shape_at): Change the
35 selected_layer parameter to searched_layer which is the layer to
36 search in.
37 (MapCanvas.SelectShapeAt): New parameter layer to restrict the
38 search to that layer. Return the selected layer and shape.
39
40 * Examples/simple_extensions/simple_tool.py (simple_tool): Fix a
41 typo
42
43 2002-07-24 Bernhard Herzog <[email protected]>
44
45 * Thuban/UI/application.py (ThubanApplication.create_session):
46 Extend the doc string.
47 (ThubanApplication.subscribe_session)
48 (ThubanApplication.unsubscribe_session): New methods to
49 subscribe/unsubscribe to/from session channels.
50 (ThubanApplication.SetSession): Call the new methods here.
51 (ThubanApplication.maps_changed, ThubanApplication.set_map):
52 Renamed set_map to maps_changed. Its now a subscriber for
53 MAPS_CHANGED.
54
55 * Thuban/UI/view.py (ZoomOutTool.MouseUp): Use the correct
56 x-coordinate in case of simple clicks
57
58 * Thuban/Model/base.py (Modifiable.changed): Apply the args tuple,
59 don't pass it as a parameter
60
61 * Thuban/Model/session.py (Session.RemoveMap): New
62
63 * Thuban/UI/mainwindow.py (MainWindow.__init__): Turn the initial
64 window size into a parameter.
65
66 2002-07-23 Bernhard Herzog <[email protected]>
67
68 * Thuban/UI/menu.py (Menu.item_index): Also search for menus not
69 just commands.
70
71 * Thuban/UI/mainwindow.py (MainWindow.__init__): Change the
72 parameter list a bit to allow setting the window title and the
73 initial message in the status bar. Update the callers.
74
75 * Thuban/UI/application.py (ThubanApplication.OnInit)
76 (ThubanApplication.CreateMainWindow): Put the mainwindow
77 instantiation into a separate method so that it can be overridden
78 by a subclass.
79
80 2002-07-19 Bernhard Herzog <[email protected]>
81
82 * Thuban/Model/session.py: Issue a CHANGED message every time
83 another changed message is issued to make it easier to get
84 notified of changes.
85 (Session): Update the doc string
86 (Session.forward): Issue changed-events as CHANGED as well.
87 (Session.changed): Overwrite the inherited version to issue
88 CHANGED events as well.
89
90 * Thuban/UI/tree.py: We can now simply subscribe to the session's
91 CHANGED channel to be informed of changes.
92 (SessionTreeCtrl.session_channels): Not needed any longer.
93 (SessionTreeCtrl.unsubscribe_all, SessionTreeCtrl.session_changed):
94 Only have to (un)subscribe CHANGED
95
96 * Thuban/Model/map.py (Map.TreeInfo): Deal better with empty maps.
97
98 * Thuban/UI/main.py, Thuban/UI/__init__.py: Move the work-around
99 for the wxPython locale bug to __init__.py so that it's
100 automatically executed by anybody using UI code from Thuban.
101
102 2002-07-18 Bernhard Herzog <[email protected]>
103
104 * Thuban/UI/main.py (main): app no longer needs to be global
105
106 * Thuban/UI/mainwindow.py (MainWindow.__init__): Add application
107 as parameter and store it in an instance variable
108 (MainWindow.invoke_command, MainWindow.update_command_ui)
109 (MainWindow.save_modified_session, MainWindow.NewSession)
110 (MainWindow.OpenSession, MainWindow.SaveSession)
111 (MainWindow.SaveSessionAs, MainWindow.ShowSessionTree): Use self's
112 application object.
113
114 * Thuban/UI/application.py (ThubanApplication.OnInit): Instantiate
115 the main window with self.
116
117 * Thuban/UI/context.py: New module with the context class
118
119 * Thuban/UI/command.py (Command): Update doc string.
120
121 * Thuban/UI/mainwindow.py (MainWindow.invoke_command,
122 MainWindow.update_command_ui): Pass an instance of the context
123 class to the command's methods
124 (check_current_tool, call_method): Handle the new context
125 implementation
126
127 * Examples/simple_extensions/simple_tool.py (simple_tool,
128 check_simple_tool): Handle the new context implementation
129
130 * Examples/simple_extensions/simple_command.py (simple_command):
131 Handle the new context implementation. Update the comments about
132 the context.
133
134 * Thuban/UI/application.py (ThubanApplication.SetSession): Add
135 doc-string
136 (ThubanApplication.Session): New method to return the session
137 object
138
139 * Thuban/UI/tree.py (SessionTreeCtrl.update_tree): The
140 interactor's selected_layer may not be a layer of the current
141 session when the tree is updated while a new session is being set.
142
143 2002-07-17 Bernhard Herzog <[email protected]>
144
145 * Thuban/UI/tree.py (color_string): Removed. No longer used.
146 (SessionTreeCtrl.update_tree, SessionTreeCtrl.add_items): Split
147 update_tree into update_tree and add_items. The tree now uses a
148 more generic way to display the contents of the tree.
149 (SessionTreeCtrl): Add a doc string explaining the TreeInfo method
150
151 * Thuban/Model/layer.py (Layer.TreeInfo),
152 Thuban/Model/extension.py (Extension.TreeInfo),
153 Thuban/Model/map.py (Map.TreeInfo),
154 Thuban/Model/session.py (Session.TreeInfo):
155 Add TreeInfo methods to implement the new tree view update scheme
156
157 2002-07-16 Bernhard Herzog <[email protected]>
158
159 * Thuban/UI/application.py: Don't use "import from" for the
160 MainWindow. It can't always be resolved.
161 (ThubanApplication.OnInit): change reference to MainWindow
162 accordingly.
163
164 * Thuban/UI/menu.py (Menu.SetItems): New method to replace a menu
165 completely
166
167 2002-07-10 Bernhard Herzog <[email protected]>
168
169 * setup.py (create_init_module): New configurable variable whose
170 default depends on the platform we're running on.
171 (ThubanInstall.initialize_options): Initialize
172 self.create_init_module from the global create_init_module
173 (ThubanInstall.user_options): indictate that the options
174 create-init-module and init-module-dir have arguments.
175
176 * setup.py: In the setup call change the version number to include
177 cvs.
178
179 * MANIFEST.in: Add the files in Examples
180
181 2002-07-09 Bernhard Herzog <[email protected]>
182
183 * setup.py: In the setup call, use the thuban homepage as the
184 value of the url parameter.
185
186 * Examples: New subdirectory for examples.
187
188 * Examples/simple_extensions/simple_tool.xpm,
189 Examples/simple_extensions/simple_tool.py,
190 Examples/simple_extensions/simple_command.py,
191 Examples/simple_extensions/README: Simple examples showing how to
192 add new commands and tools.
193
194 * setup.cfg (bdist_rpm): Add the default value for prefix and tell
195 bdist_rpm that we also have an install script.
196 (bdist_inno): Add 2002 to the copyright notice.
197
198 * setup.py: Create a file in python's site-packages directory to
199 make installation of Thuban as a library easier.
200 (ThubanInstall.user_options): Add two new options,
201 create-init-module and init-module-dir
202 (ThubanInstall.expand_with_pure_python_dirs): New method to expand
203 filenames for installation in the default directories.
204 (ThubanInstall.select_scheme, ThubanInstall.convert_paths): Extend
205 the inherited methods to capture some filenames before they're
206 transformed too much by distutils.
207 (ThubanInstall.run): Create the init module if requested.
208 (ThubanInstall.thuban_init_filename): New method to return the
209 full name of the init module.
210 (ThubanInstall.get_outputs): Append the filename of the init
211 module.
212
213 2002-07-08 Bernhard Herzog <[email protected]>
214
215 * setup.py (thuban_bdist_rpm): Extend this version of bdist_rpm to
216 handle the prefix properly which means that the default for the
217 installation prefix should be /usr for RPMs and /usr/local when
218 doing a normal source install.
219 (bdist_rpm_install_script): Script to override the default install
220 commands in the specfile generated by the bdist_rpm command.
221 (thuban_bdist_rpm.user_options): Add a prefix option
222 (thuban_bdist_rpm.initialize_options): Init the prefix option.
223 Create the script files for the spec files as empty files here
224 (thuban_bdist_rpm._make_spec_file): Override the inherited method
225 to fill the script files with content.
226
227 * Thuban/Model/save.py (relative_filename): Wrapper around
228 Thuban.Lib.fileutil.relative_filename that accepts an empty dir
229 argument. save_session now automatically uses this version,
230 solving a problem when saving to a relative filename.
231
232 * setup.py: In the setup call, make sure that the library
233 directories are under $prefix/lib not directly under $prefix.
234
235 2002-06-20 Jan-Oliver Wagner <[email protected]>
236
237 * Thuban/Model/extension.py: new module to handle extension objects.
238 * Thuban/Model/messages.py: new messages for extensions.
239 * Thuban/Model/session.py (Session.Extensions, Session.HasExtensions,
240 Session.AddExtension): new for handling extensions.
241 Also some other minor changes to round up extension handling.
242 * Thuban/UI/tree.py (SessionTreeCrtl:update_tree): Added visualization
243 of Extension titles and title and names of its objects.
244
245 2002-05-29 Bernhard Herzog <[email protected]>
246
247 * Thuban/UI/mainwindow.py (MainWindow.bind_command_events): Bind
248 the events for a command.
249 (MainWindow.add_toolbar_command, MainWindow.add_menu_command):
250 Call bind_command_events to bind the events. add_toolbar_command
251 can now bind events too so that it's possible to have commands
252 that are only available through the toolbar.
253 (MainWindow.init_ids): New instance variable events_bound to keep
254 track of for which commands events have been bound.
255
256 2002-05-28 Bernhard Herzog <[email protected]>
257
258 * Thuban/UI/menu.py: New module to build and manage menus.
259
260 * Thuban/UI/mainwindow.py: Remove some unused imports.
261 (MainWindow.__init__, main_menu): move the definition of the main
262 menu from __init__ to the Menu instance main_menu.
263 (MainWindow.build_menu_bar, MainWindow.build_menu): New methods to
264 build the menu bar and sub-menus from a menu description.
265
266 * Thuban/UI/application.py (ThubanApplication.OnInit): Read the
267 startup file
268 (ThubanApplication.read_startup_files): New method to run
269 ~/.thuban/thubanstart.py
270
271 * Thuban/UI/mainwindow.py (MainWindow.__init__, main_toolbar):
272 Move the toolbar definition to the Menu instance main_toolbar.
273 (MainWindow.build_toolbar): New method to build the toolbar
274 similar to the build_menu methods
275
276 2002-05-23 Bernhard Herzog <[email protected]>
277
278 * Thuban/UI/mainwindow.py (MainWindow.__init__): Fix spelling of
279 layer_outline_color. Fix it in the definition of the command too.
280
281 * Thuban/UI/command.py (Command): Fix typo in doc string
282
283 2002-05-22 Bernhard Herzog <[email protected]>
284
285 * Thuban/UI/mainwindow.py (MainWindow.RunMessageBox): Fix a typo
286 in the docstring
287
288 2002-05-15 Bernhard Herzog <[email protected]>
289
290 * Thuban/Model/layer.py (Layer.open_shapefile): Set bbox to None
291 when the shapefile is empty.
292 (Layer.BoundingBox, Layer.LatLongBoundingBox): Both methods may
293 now return None for empty shapefiles. Update doc-strings.
294
295 * Thuban/Model/map.py (Map.BoundingBox): Add doc-string. Deal with
296 the layer's bbox being None.
297
298 * Thuban/UI/tree.py (SessionTreeCtrl.update_tree): Deal with the
299 layer's bbox being None.
300
301 * Thuban/UI/view.py (MapCanvas.shape_selected): Only redraw when
302 necessary.
303 (MapCanvas.__init__): New instance variables, last_selected_layer
304 and last_selected_shape to determine how the selection has
305 changed.
306
307 * Thuban/UI/tableview.py (TableGrid.__init__): Do not call
308 AutoSizeColumns because it will cause a traversal of the entire
309 table which for large .dbf files will take a very long time.
310
311 2002-05-14 Bernhard Herzog <[email protected]>
312
313 * Thuban/Model/layer.py (Layer.open_shapefile): Choose a better
314 maximum depth for the tree than shapelib does by default.
315
316 2002-05-10 Bernhard Herzog <[email protected]>
317
318 * setup.py (py_modules): The shptree modules doesn't have a
319 wrapper, so don't include it in the py_modules
320
321 2002-05-08 Bernhard Herzog <[email protected]>
322
323 * extensions/shapelib/shptree.c (compare_ints): Make arguments
324 const void * as in the qsort prototype
325 (SHPTreeFindLikelyShapes): Remove some unused variables.
326
327 * Thuban/UI/view.py (PanTool.MouseMove): Use the bitmap the view
328 maintains to redraw the window during a drag.
329 (MapCanvas.unprojected_rect_around_point): New method to determine
330 a small region around a point for hit-testing.
331 (MapCanvas.find_shape_at): Only test the shapes in a small region
332 around the point.
333
334 * setup.py: Increment the version to 0.1.2
335
336 * Thuban/UI/tree.py (SessionTreeCtrl.unsubscribe_all): Remove a
337 debug print and set session to None after unsubscribing
338
339 2002-05-07 Bernhard Herzog <[email protected]>
340
341 * Data/iceland_sample.session, Data/iceland_sample.thuban: Rename
342 the file to have a .thuban extension.
343
344 * Thuban/UI/tree.py (session_channels): New class constant with
345 all the session channels to subscribe to to update the tree
346 (SessionTreeCtrl.session_changed): Remember the session so that we
347 can unsubscribe properly. Use the new class constant to
348 unsubscribe from the old session and subscribe to the new one.
349 (SessionTreeCtrl.unsubscribe_all): New method to unsubscribe all
350 subscriptions of the SessionTreeCtrl.
351 (SessionTreeView.OnClose): Call the tree's unsubscribe_all method.
352
353 * Thuban/UI/mainwindow.py (MainWindow.__init__): Add the "Show
354 Session Tree" command to the file menu.
355
356 * Thuban/UI/view.py (MapCanvas.do_redraw): Pass the entire bitmap
357 as update_region to the renderer.
358
359 * Thuban/UI/renderer.py
360 (ScreenRenderer.layer_ids, ScreenRenderer.draw_shape_layer): The
361 update box is now directly a tuple, not a wxRect anymore.
362
363 * Thuban/Model/layer.py (Layer.ShapesInRegion): Remove some debug
364 prints.
365
366 2002-05-07 Bernhard Herzog <[email protected]>
367
368 * setup.py: Add the shptree extension module. See
369 extensions/pyshapelib/ChangeLog for more details.
370
371 * extensions/shapelib/shpopen.c, extensions/shapelib/shapefil.h,
372 extensions/shapelib/dbfopen.c: Really update to the versions of
373 shapelib 1.2.9. For some reason it wasn't really done on
374 2002-04-11.
375
376 * extensions/shapelib/shptree.c: Modified version of shptree.c of
377 shapelib 1.2.9. The only real difference is the use of qsort
378 instead of a bubble sort implementation
379
380 * Thuban/Model/layer.py (Layer.__init__): New instance variable
381 shapetree to hold the shapelib quadtree for the shapefile
382 (Layer.open_shapefile): Create the quad tree.
383 (Layer.ShapesInRegion): New method to return the ids of shapes in
384 a given region using the quad tree.
385
386 * extensions/thuban/wxproj.cpp (project_points): Fix some typos in
387 comment
388 (draw_polygon_shape): Accept both arcs and polygons.
389 (initwxproj): Use the new PYSHAPELIB_IMPORT_API macro to import
390 the api.
391
392 * Thuban/UI/renderer.py (MapRenderer.layer_ids): New method to
393 return the shape ids to be rendered in a given layer.
394 (MapRenderer.draw_shape_layer): Call layer_ids to get the list of
395 ids. Use draw_polygon_shape to draw arc shapes as well.
396 (ScreenRenderer.RenderMap): New parameter for the rectangle that
397 has to be updated
398 (ScreenRenderer.layer_ids): Make use of the layer's quadtree by
399 calling it's ShapesInRegion method.
400
401 * Thuban/UI/view.py (MapCanvas.__init__): New instance variable
402 update_region for the update region.
403 (MapCanvas.OnPaint): Maintain the update region
404 (MapCanvas.do_redraw): Pass the bounding box of the update_region
405 to the renderer when drawing the bitmap. Reset the update_region.
406
407 2002-05-03 Bernhard Herzog <[email protected]>
408
409 * Thuban/UI/mainwindow.py (MainWindow.SaveSessionAs,
410 MainWindow.OpenSession): Change the file extension of the session
411 files to .thuban
412
413 * Thuban/Model/session.py (Session.AddMap, forwarded_channels):
414 Move the map channels to be forwarded by the session into the
415 class constant with forwarded_channels. Also add
416 LAYER_PROJECTION_CHANGED and LAYER_VISIBILITY_CHANGED to
417 forwarded_channels
418
419 * Thuban/Model/base.py (Modifiable.changed): Fix doc-string (a
420 typo and some rewording).
421
422 2002-05-02 Bernhard Herzog <[email protected]>
423
424 * Thuban/UI/view.py: Keep the temporary bitmap used during drawing
425 around to speed up most redraws:
426 (MapCanvas.__init__): New instance variable bitmap which holds the
427 bitmap
428 (MapCanvas.do_redraw): Redraw self.bitmap if necessary. Use
429 self.bitmap to draw.
430 (MapCanvas.full_redraw): New method to force a full redraw
431 including the bitmap
432 (MapCanvas.SetMap): Subscribe full_redraw instead of redraw to
433 make sure the bitmap is redrawn.
434 (MapCanvas.projection_changed, MapCanvas.set_view_transform,
435 MapCanvas.shape_selected): Call full_redraw instead of readraw to
436 make sure the bitmap is redrawn.
437 (MapCanvas.OnSize): New method to handle size events so that the
438 bitmap can be redrawn.
439
440 2002-04-29 Bernhard Herzog <[email protected]>
441
442 * Thuban/UI/mainwindow.py (MainWindow.__init__): Subscribe to the
443 canvas' VIEW_POSITION event
444 (MainWindow.view_position_changed): Handler for VIEW_POSITION.
445 Update the text in the status-bar accordingly.
446
447 * Thuban/UI/view.py (MapCanvas): Derive from Publisher as well
448 (MapCanvas.__del__): Implement because Publisher.__del__ has to be
449 called.
450 (MapCanvas.__init__): Bind EVT_LEAVE_WINDOW too. Initialize
451 current_position
452 (MapCanvas.set_current_position): New method to set
453 current_position. Issue a VIEW_POSITION event
454 (MapCanvas.CurrentPosition): New public method to return the value
455 of current_position. Should be called when the VIEW_POSITION event
456 is processed.
457 (MapCanvas.OnLeftDown, MapCanvas.OnLeftUp, MapCanvas.OnMotion):
458 Update the position.
459 (MapCanvas.OnLeaveWindow): Set the position to None.
460
461 * Thuban/UI/messages.py (VIEW_POSITION): New message for the
462 position in the statusbar
463
464 2002-04-26 Frank Koormann <[email protected]>
465
466 * Thuban/UI/mainwindow.py: AddLayer, Dialog title s/session/data
467
468 2002-04-24 Frank Koormann <[email protected]>
469
470 * Resources/Bitmaps/identify.xpm: shadow added
471
472 * Resources/Bitmaps/fullextent.xpm: new
473
474 2002-04-22 Jan-Oliver Wagner <[email protected]>
475
476 * Thuban/UI/tree.py (update_tree): added test for None on map bounding box
477
478 2002-04-21 Jan-Oliver Wagner <[email protected]>
479
480 * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog): new
481
482 * Thuban/UI/tree.py (update_tree): added added map extent
483
484 * Thuban/UI/mainwindow.py (_method_command): extended by parameter
485 icon; added map_full_extend as tool
486
487 2002-04-19 Jan-Oliver Wagner <[email protected]>
488
489 * Thuban/UI/mainwindow.py (SaveSession): launch save as dialog for
490 saving _new_ sessions
491
492 * Thuban/Model/session.py (create_empty_session): new session
493 don't have a filename (set to None)
494
495 * Thuban/UI/tree.py (update_tree): added filename and modified flag
496
497 * Thuban/Model/load.py (ProcessSession): convert projection
498 parameters from unicode to regular string
499
500 * Data/iceland_sample.session: Added UTM Zone 26 projection.
501
502 2002-04-11 Bernhard Herzog <[email protected]>
503
504 * extensions/shapelib/shapefil.h, extensions/shapelib/shpopen.c,
505 extensions/shapelib/dbfopen.c: Update to the versions of shapelib
506 1.2.9
507
508 * setup.py (Lib.wxproj extension): Don't link shpopen.c and put
509 the pyshapelib directoy into the list of include dirs, so that
510 pyshapelib_api.h can be found.
511
512 * extensions/thuban/wxproj.cpp (pyshapelib_api): New variable that
513 holds the pyshapelib C-API
514 (draw_polygon_shape, point_in_polygon_shape, shape_centroid): Use
515 pyshapelib_api to access the shapelib functions.
516 (initwxproj): Import the c_api from the shapelib module and
517 initialize pyshapelib_api.
518
519 2002-04-04 Bernhard Herzog <[email protected]>
520
521 * setup.py (thuban_bdist_rpm.initialize_options): Use
522 initialize_options to create the scripts for the rpm.
523
524 * extensions/pyprojection/setup.py (PROJ4_PREFIX): Just use /
525
526 2002-04-03 Bernhard Herzog <[email protected]>
527
528 * setup.py: Increment version to 0.1.1
529
530 * Thuban/UI/mainwindow.py (MainWindow.__init__): Move the "Add
531 Layer" and "Remove Layer" commands from the layer menu to the map
532 menu
533
534 2002-02-15 Bernhard Herzog <[email protected]>
535
536 * Thuban/Model/layer.py (Layer.Shape): list append only takes one
537 argument (python <= 1.5.2 erroneously accepted multiuple
538 arguments)
539
540 2002-02-04 Bernhard Herzog <[email protected]>
541
542 * Thuban/UI/identifyview.py (IdentifyGridCtrl): New class to use a
543 RecordGrid in the identifyview.
544 (IdentifyView.__init__): Use IdentifyGridCtrl instead of
545 IdentifyListCtrl. The grid allows editing of the values.
546
547 * Thuban/UI/controls.py (RecordTable, RecordGridCtrl): New classes
548 implementing a grid for a single row of a thuban table.
549
550 * Thuban/UI/view.py (MapCanvas.SelectShapeAt): Search through all
551 layers by default. Easier to use than the previous default of only
552 searching through the select layer which meant that if no layer
553 was selected, you couldn't select a shape.
554
555 * Thuban/UI/tableview.py (TableGrid.__init__): Fix typo
556
557 * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Honour the
558 stroke_width attribute
559
560 * Thuban/Model/save.py (save_session): Write the new stroke_width
561 attribute
562
563 * Thuban/Model/load.py (ProcessSession.startElement): Read the
564 stroke_width attribute
565
566 * Thuban/Model/layer.py (Layer.__init__): New parameter and
567 instance variable stroke_width
568 (Layer.SetStrokeWidth): Set the stroke_width.
569
570 2002-02-01 Bernhard Herzog <[email protected]>
571
572 * extensions/thuban/wxproj.cpp (project_points): Fix two
573 off-by-one errors in the last loop that joins the various parts
574 together.
575
576 2002-01-14 Bernhard Herzog <[email protected]>
577
578 * setup.py (data_dist.make_distribution): Fix some typos
579
580 2001-09-18 Bernhard Herzog <[email protected]>
581
582 * README: Slight tweaking in preparation for the 0.1 release
583
584 * setup.cfg: Add section for sdist to create both tgz and zip
585 archives
586
587 * setup.py: increase version number to 0.1
588 (data_dist): New command class for data distribution
589
590
591 2001-09-14 Bernhard Herzog <[email protected]>
592
593 * Thuban/UI/identifyview.py (IdentifyListCtrl.selected_shape):
594 Handle the case of no layer (i.e. layer is None) properly.
595
596 * Thuban/UI/proj4dialog.py (UTMDialog.__init__, Proj4Dialog.__init__):
597 Set the initial selection of the combo boxes to reflect the
598 projection we're starting with in a way that works on windows,
599 too.
600
601 * Thuban/Lib/connector.py (Connector.print_connections): Print the
602 puiblisher's ids in hex to make it easier to compare them to the
603 standard repr of python methods
604
605 * Thuban/Model/map.py (Map.Destroy): Unsubscribe the label_layer
606 messages
607
608 2001-09-13 Bernhard Herzog <[email protected]>
609
610 * Thuban/UI/tree.py (SessionTreeCtrl.OnSelChanged): Make sure to
611 deselect the layer if no layer is selected
612
613 * Thuban/UI/view.py (MapCanvas.OnPaint): Only delay drawing to
614 idle time when there actually is something to draw. If there's
615 nothing to draw simply clear the window
616 (MapCanvas.do_redraw): Call dc.EndDrawing and add some comments.
617 (MapCanvas.SetMap): force a redraw in all cases because
618 FitMapToWindow doesn't always do it.
619 (MapCanvas.ZoomFactor): Add an optional parameter, center, to
620 specify the point to move into the center of the window
621 (ZoomOutTool.MouseUp, ZoomInTool.MouseUp): If the mouse wasn't
622 dragged, zoon in/out by a factor of 2
623 (MapCanvas.find_shape_at): Iterate backwards (i.e. with decreasing
624 index, i.e. reversed drawing order) so that objects appearing to
625 be in from of others are selected first. This is probably mostly
626 relevant for point shapes where the symbols used may overlap
627
628 * Thuban/Model/session.py (create_empty_session): Unset the
629 modified bit before returning it
630
631 * Thuban/UI/mainwindow.py (MainWindow.NewSession): Use
632 create_empty_session session to create the new, empty session.
633
634 * Thuban/UI/mainwindow.py (MainWindow.__init__): Set the size of
635 the tool bitmaps.
636 (MainWindow.OnClose, MainWindow.save_modified_session): Separate
637 the code that asks whether the session should be saved into the
638 new method save_modified_session.
639 (MainWindow.OpenSession, MainWindow.NewSession): Use the new
640 method to save modified session here too.
641
642 2001-09-11 Bernhard Herzog <[email protected]>
643
644 * setup.py (InnoIconItem): fix typo
645
646 (thuban_bdist_inno.run):
647 (bdist_inno.run): Move the decision not to create symlinks on
648 non-nt platforms to thuban_bdist_inno and do it unconditinally
649 since we never want to create the symlinks here
650
651 2001-09-10 Bernhard Herzog <[email protected]>
652
653 * Thuban/UI/mainwindow.py (MainWindow.IdentifyTool): Popup the
654 identify view immediately
655
656 * Thuban/UI/controls.py: New file with two classes RecordListCtrl
657 and SelectableRecordListCtrl that implement the code shared by the
658 identify view and the label dialog
659
660 * Thuban/UI/identifyview.py (IdentifyListCtrl): Derive from the
661 new class RecordListCtrl
662
663 * Thuban/UI/labeldialog.py (LabelDialog.OnOK): Check whether the
664 return value of GetValue is None instead of using it as a boolean
665 directly so that Zero numbers are handled properly.
666 (LabelListCtrl): Derive from the new class
667 SelectableRecordListCtrl
668
669 * Thuban/UI/proj4dialog.py (Proj4Dialog.__init__):
670 (Proj4Dialog.dialogLayout): Make the window resizable and set the
671 size of the text control explicitly to make the sizers work on
672 both Windows and X.
673
674 2001-09-07 Bernhard Herzog <[email protected]>
675
676 * Thuban/UI/view.py (MapCanvas.find_shape_at):Add a new parameter
677 that can limit the search to the currently selected layer.
678 (MapCanvas.SelectShapeAt): Make sure that the currently selected
679 layer stays selected even when no shape is found
680 (MapCanvas.FitRectToWindow): If the rect has zero with or zero
681 height do nothing (avoids zero division errors)
682
683 2001-09-06 Bernhard Herzog <[email protected]>
684
685 * Thuban/UI/tree.py (SessionTreeCtrl, SessionTreeView.__init__):
686 Correct the spelling of SessionTreeCtrl. dabbrev is too damn
687 convenient :-)
688 (SessionTreeCtrl.__init__, SessionTreeCtrl.update_tree): Introduce
689 a new instvar layer_to_item to map layers to tree items
690 (SessionTreeCtrl.layer_selected): Select the appropriate tree item
691 to match the current selection in the interactor
692
693 * Thuban/UI/interactor.py (Interactor.SelectedLayer):
694 (Interactor.HasSelectedLayer): New methods to query the current
695 selection
696
697 * Thuban/UI/mainwindow.py (MainWindow.current_layer):
698 (MainWindow.has_selected_layer): Simply call the appropriate
699 interactor method
700
701 * Thuban/UI/mainwindow.py (MainWindow.__init__):
702 (MainWindow.LayerShowTable):
703 (MainWindow.identify_view_on_demand): Store the interactor in an
704 instvar and use that reference instead of going through main.app
705
706 * Thuban/UI/mainwindow.py (MainWindow.ShowSessionTree):
707 * Thuban/UI/application.py (ThubanApplication.OnInit):
708 * Thuban/UI/main.py (main): Create the session tree view in main
709 with the new mainwindow method ShowSessionTree and not directly
710 the application's OnInit method
711
712 * Thuban/UI/tree.py (myTreeCtrlPanel):
713 (SessioinTreeCtrl): Rename to SessioinTreeCtrl and turn it into a
714 TreeCtrl isntead of a panel. This affects most method since we now
715 refer to self instead of self.tree
716 (SessionTreeView): New class implementing a non-modal dialog
717 showing the session tree.
718
719 * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Pass the
720 layer to the tableview dialog.
721
722 * Thuban/UI/tableview.py: Add some doc-strings
723 (TableGrid):
724 (TableGrid.OnRangeSelect):
725 (TableGrid.OnSelectCell):
726 (TableFrame.__init__):
727 (TableFrame.row_selected):
728 Selecting rows in the grid view now updates the selected shapes
729 through the TableFrame. To achieve this we derive TableGrid from
730 Publisher and introduce the message type ROW_SELECTED which the
731 TableFrame subscribes to and which is issued by OnRangeSelect and
732 OnSelectCell
733
734 (DataTable.SelectRow): Removed because it's no longer needed in
735 the row/shape selection scheme
736
737 * Thuban/UI/dialogs.py: New file implementing common classes for
738 dialogs
739
740 * Thuban/UI/tableview.py (TableGrid.__init__): Don't subscribe to
741 the SELECTED_SHAPE message anymore. This is now handled by the
742 parent.
743 (TableGrid.select_shape): Only update the selection if the shape
744 is not None.
745 (TableFrame): Inherit from the new NonModalDialog class.
746 (TableFrame.__init__, TableFrame.select_shape): Handle the
747 SELECT_SHAPE message.
748 (TableFrame.OnClose): Extend the inherited method to unsubscribe
749 SELECT_SHAPE
750
751 * Thuban/UI/mainwindow.py (MainWindow.init_dialogs):
752 (MainWindow.add_dialog):
753 (MainWindow.dialog_open):
754 (MainWindow.remove_dialog):
755 (MainWindow.get_open_dialog): New methods to maintain a dictionary
756 of opened non-modal dialogs.
757
758 (MainWindow.__init__): Initialize the new non-modal dictionary
759 management code
760 (MainWindow.LayerShowTable): maintain separate dialogs for each
761 table using the non-modal dialog management code to only open a
762 view once for each table.
763
764 (MainWindow.IdentifyTool):
765 (MainWindow.__init__):
766 (MainWindow.identify_view_on_demand): Don't open the identify view
767 in IdentifyTool anymore. This will be done automatically by the
768 new method identify_view_on_demand which handles the
769 SELECTED_SHAPE message so that the identify view will be opened on
770 demand
771
772 * Thuban/UI/identifyview.py (IdentifyListCtrl.__init__): Remove
773 the interactor argument. The SELECTED_SHAPE message is now handled
774 by the parent.
775 (IdentifyView.__init__): Add the interactor argument so that we
776 can handle the SELECTED_SHAPE message here
777 (IdentifyView.selected_shape): New method to handle the
778 SELECTED_SHAPE messages
779
780 * Thuban/UI/identifyview.py (IdentifyView): Derive from the new
781 NonModalDialog class
782 (IdentifyView.OnClose): Extend the inherited version to
783 unsubscribe SELECT_SHAPE
784
785 * Thuban/Model/session.py (Session.UnsetModified): Remove debug prints
786
787 2001-09-05 Bernhard Herzog <[email protected]>
788
789 * Thuban/UI/view.py (MapCanvas.__init__): New argument, interactor.
790
791 * Thuban/UI/mainwindow.py (MainWindow.__init__): New argument
792 interactor to pass through to the MapCanvas
793
794 * Thuban/UI/application.py (ThubanApplication.OnInit): Use the new
795 argument to the MainWindow constructor to get rid of the ugly hack
796 that made main.app available early just so that the mapcanvas
797 could access the interactor object.
798
799 2001-09-04 Bernhard Herzog <[email protected]>
800
801 * Thuban/UI/mainwindow.py (MainWindow.RunMessageBox): New method
802 that runs a modal message box
803 (MainWindow.OnClose): Use the new method
804 (MainWindow.RemoveLayer): Just do nothing in case no layer is
805 selected. The command should be grayed out anyway, so there's no
806 need to pop up a message box.
807 (MainWindow.AddLayer): Pop up a message box with an error message
808 if the shape file can't be opened
809
810 * Thuban/Model/layer.py (Layer.__init__): Open the shapefile
811 immediately. This will cause an exception in case the file can't
812 be opened and we can display an appropriate message.
813
814 * MANIFEST.in: Add extensions/pyprojection/LICENSE
815
816 * setup.py (thuban_bdist_rpm): New class implementing a Thuban
817 specific bdist_rpm command.
818
819 * Thuban/UI/main.py: Catch ImportError exceptions when importing
820 the locale module because it may not be available on some
821 installations.
822
823 * extensions/pyprojection/LICENSE: Copy of the license text in
824 Projection.i. Having it in a separate file makes it easier to
825 refer to license text in e.g. RPMs
826
827 2001-09-03 Bernhard Herzog <[email protected]>
828
829 * setup.py: use wx-config instead of wxgtk-config because it's
830 more generic
831
832 * setup.py (ThubanInstall.get_outputs): Add the symlink in
833 <prefix>/bin to the outputs
834 (ThubanInstall.link_file): New method to link files. We need this
835 because the standard copy_files refuses to link non-existing
836 files.
837 (ThubanInstall.run): Remove the leading install root from the
838 script filename if an install root was specified and use the new
839 link_file method
840
841 * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Fit the map to
842 the window when the first layer is added to the map.
843
844 * setup.py (ThubanInstall.run): Honor the build root (self.root)
845 when linking thuban.py to <prefix>/bin
846
847 2001-08-31 Bernhard Herzog <[email protected]>
848
849 * setup.py: In the setup call, the install parameters shouldn't
850 have trailing slashes because distutils on non-posix platforms
851 doesn't like that. The same applies to other directories like
852 "Resources/Bitmaps"
853
854 In the configuration section for nt, move the wxWindows directory
855 optins into the part clearly marked as editable.
856
857 (InstallLocal.initialize_options):
858 (InstallLocal.user_options): remove the currently unused debug
859 flag
860 (thuban_build_py.find_all_modules): Add this method so that it
861 works for our case of having packages and modules in one
862 distribution as well.
863 (ThubanInstall.initialize_options):
864 (ThubanInstall.finalize_options):
865 (ThubanInstall.user_options):
866 (ThubanInstall.boolean_options): Add new options, do-symlink and
867 extra files. Since these are the first ThubanInstall specific
868 options, override user_options and boolean_options
869 (ThubanInstall.run): Honor the new do-symlink and extra-files
870 options.
871 (ThubanInstall.get_outputs): Add to override the base-class's
872 version and add the extra-files to the outputs
873 (bdist_inno): New class for windows distributions with Inno Setup
874 (InnoIconItem): Helper class for bdist_inno
875 (thuban_bdist_inno): Thuban specific version of bdist_inno. Added
876 this together with the appropriate parameters, to the setup call.
877
878 * setup.cfg (bdist_inno): added new section for the inno setup
879 installer
880
881 * Thuban/UI/tree.py (myTreeCtrlPanel.__init__): New inst var
882 changing_selection to avoid recursive selection events when
883 modifying the selection in response to a selection event.
884 (myTreeCtrlPanel.normalize_selection): Set the new inst var when
885 changing the tree's selection.
886 (myTreeCtrlPanel.OnSelChanged): Only normalize the selection when
887 we're not being called indirectly from normalize_selection.
888
889 * Thuban/UI/mainwindow.py (MainWindow.update_command_ui): Call
890 event.Check only if the command is actuall checkable.
891 (MainWindow.__init__): Call the toolbar's Realize method to make
892 sure that the items are actually shown
893
894 2001-08-28 Bernhard Herzog <[email protected]>
895
896 * setup.py: Fix some doc strings
897
898 * ChangeLog: started
899

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26