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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 265 - (show annotations)
Fri Aug 16 17:07:36 2002 UTC (22 years, 7 months ago) by jan
Original Path: trunk/thuban/ChangeLog
File size: 35865 byte(s)
tree window

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26