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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 238 - (show annotations)
Wed Jul 24 10:19:46 2002 UTC (22 years, 7 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 32356 byte(s)
(MainWindow.__init__): Turn the initial
window size into a parameter.

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26