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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 282 - (show annotations)
Mon Aug 26 18:16:54 2002 UTC (22 years, 6 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 38376 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26