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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 291 - (hide annotations)
Thu Aug 29 14:11:38 2002 UTC (22 years, 6 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 39019 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26