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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 403 - (show annotations)
Fri Feb 14 11:20:19 2003 UTC (22 years ago) by tkoester
Original Path: trunk/thuban/ChangeLog
File size: 50358 byte(s)
fixed spacing

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26