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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 297 - (hide annotations)
Fri Aug 30 16:10:57 2002 UTC (22 years, 6 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 39476 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26