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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 387 - (show annotations)
Mon Feb 3 11:44:41 2003 UTC (22 years, 1 month ago) by jonathan
Original Path: trunk/thuban/ChangeLog
File size: 48129 byte(s)
updated ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26