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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 275 - (hide annotations)
Thu Aug 22 16:26:05 2002 UTC (22 years, 6 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 37630 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26