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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 230 - (show annotations)
Fri Jul 19 13:21:14 2002 UTC (22 years, 7 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 31023 byte(s)
* Thuban/UI/main.py, Thuban/UI/__init__.py: Move the work-around
for the wxPython locale bug to __init__.py so that it's
automatically executed by anybody using UI code from Thuban.

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26