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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 278 - (hide annotations)
Mon Aug 26 12:50:23 2002 UTC (22 years, 6 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 38129 byte(s)
* Thuban/UI/tableview.py (TableGrid, LayerTableGrid): Split the
layer table specific code from TableGrid into LayerTableGrid
(TableFrame, LayerTableFrame): Split the layer table specific code
from TableFrame into LayerTableFrame

* Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Use the
LayerTableFrame

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26