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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 280 - (hide annotations)
Mon Aug 26 15:06:24 2002 UTC (22 years, 6 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 38182 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26