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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 237 - (show annotations)
Tue Jul 23 16:53:35 2002 UTC (22 years, 7 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 32208 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26