/[thuban]/branches/WIP-pyshapelib-bramz/ChangeLog
ViewVC logotype

Contents of /branches/WIP-pyshapelib-bramz/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log


Revision 263 - (show annotations)
Thu Aug 15 17:45:19 2002 UTC (22 years, 7 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 35715 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26