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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 271 - (hide annotations)
Thu Aug 22 13:46:54 2002 UTC (22 years, 6 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 37249 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26