/[thuban]/branches/greater-ms3/thuban/ChangeLog
ViewVC logotype

Contents of /branches/greater-ms3/thuban/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log


Revision 256 - (show annotations)
Wed Aug 14 15:08:14 2002 UTC (22 years, 6 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 35312 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26