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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 266 - (show annotations)
Wed Aug 21 09:15:26 2002 UTC (22 years, 6 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 36024 byte(s)
(ThubanInstall.run): Don't repr install_lib_orig
because thubaninit_contents will do it for us.

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26