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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 247 - (hide annotations)
Mon Jul 29 13:38:13 2002 UTC (22 years, 7 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 33721 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26