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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 247 - (show annotations)
Mon Jul 29 13:38:13 2002 UTC (22 years, 7 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 33721 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26