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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 287 - (hide annotations)
Thu Aug 29 11:22:07 2002 UTC (22 years, 6 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 38829 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26