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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 285 - (hide annotations)
Tue Aug 27 14:08:43 2002 UTC (22 years, 6 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 38578 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26