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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 254 - (hide annotations)
Wed Aug 14 13:39:08 2002 UTC (22 years, 6 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 35145 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26