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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 282 - (hide annotations)
Mon Aug 26 18:16:54 2002 UTC (22 years, 6 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 38376 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26