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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 131 - (show annotations)
Fri May 3 14:50:27 2002 UTC (22 years, 10 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 18492 byte(s)
update ChangeLog

1 2002-05-03 Bernhard Herzog <[email protected]>
2
3 * Thuban/UI/mainwindow.py (MainWindow.SaveSessionAs,
4 MainWindow.OpenSession): Change the file extension of the session
5 files to .thuban
6
7 * Thuban/Model/session.py (Session.AddMap, forwarded_channels):
8 Move the map channels to be forwarded by the session into the
9 class constant with forwarded_channels.
10
11 * Thuban/Model/base.py (Modifiable.changed): Fix doc-string (a
12 typo and some rewording).
13
14 2002-05-02 Bernhard Herzog <[email protected]>
15
16 * Thuban/UI/view.py: Keep the temporary bitmap used during drawing
17 around to speed up most redraws:
18 (MapCanvas.__init__): New instance variable bitmap which holds the
19 bitmap
20 (MapCanvas.do_redraw): Redraw self.bitmap if necessary. Use
21 self.bitmap to draw.
22 (MapCanvas.full_redraw): New method to force a full redraw
23 including the bitmap
24 (MapCanvas.SetMap): Subscribe full_redraw instead of redraw to
25 make sure the bitmap is redrawn.
26 (MapCanvas.projection_changed, MapCanvas.set_view_transform,
27 MapCanvas.shape_selected): Call full_redraw instead of readraw to
28 make sure the bitmap is redrawn.
29 (MapCanvas.OnSize): New method to handle size events so that the
30 bitmap can be redrawn.
31
32 2002-04-29 Bernhard Herzog <[email protected]>
33
34 * Thuban/UI/mainwindow.py (MainWindow.__init__): Subscribe to the
35 canvas' VIEW_POSITION event
36 (MainWindow.view_position_changed): Handler for VIEW_POSITION.
37 Update the text in the status-bar accordingly.
38
39 * Thuban/UI/view.py (MapCanvas): Derive from Publisher as well
40 (MapCanvas.__del__): Implement because Publisher.__del__ has to be
41 called.
42 (MapCanvas.__init__): Bind EVT_LEAVE_WINDOW too. Initialize
43 current_position
44 (MapCanvas.set_current_position): New method to set
45 current_position. Issue a VIEW_POSITION event
46 (MapCanvas.CurrentPosition): New public method to return the value
47 of current_position. Should be called when the VIEW_POSITION event
48 is processed.
49 (MapCanvas.OnLeftDown, MapCanvas.OnLeftUp, MapCanvas.OnMotion):
50 Update the position.
51 (MapCanvas.OnLeaveWindow): Set the position to None.
52
53 * Thuban/UI/messages.py (VIEW_POSITION): New message for the
54 position in the statusbar
55
56 2002-04-26 Frank Koormann <[email protected]>
57
58 * Thuban/UI/mainwindow.py: AddLayer, Dialog title s/session/data
59
60 2002-04-24 Frank Koormann <[email protected]>
61
62 * Resources/Bitmaps/identify.xpm: shadow added
63
64 * Resources/Bitmaps/fullextent.xpm: new
65
66 2002-04-22 Jan-Oliver Wagner <[email protected]>
67
68 * Thuban/UI/tree.py (update_tree): added test for None on map bounding box
69
70 2002-04-21 Jan-Oliver Wagner <[email protected]>
71
72 * Thuban/UI/proj4dialog.py (UTMProposeZoneDialog): new
73
74 * Thuban/UI/tree.py (update_tree): added added map extent
75
76 * Thuban/UI/mainwindow.py (_method_command): extended by parameter
77 icon; added map_full_extend as tool
78
79 2002-04-19 Jan-Oliver Wagner <[email protected]>
80
81 * Thuban/UI/mainwindow.py (SaveSession): launch save as dialog for
82 saving _new_ sessions
83
84 * Thuban/Model/session.py (create_empty_session): new session
85 don't have a filename (set to None)
86
87 * Thuban/UI/tree.py (update_tree): added filename and modified flag
88
89 * Thuban/Model/load.py (ProcessSession): convert projection
90 parameters from unicode to regular string
91
92 * Data/iceland_sample.session: Added UTM Zone 26 projection.
93
94 2002-04-11 Bernhard Herzog <[email protected]>
95
96 * extensions/shapelib/shapefil.h, extensions/shapelib/shpopen.c,
97 extensions/shapelib/dbfopen.c: Update to the versions of shapelib
98 1.2.9
99
100 * setup.py (Lib.wxproj extension): Don't link shpopen.c and put
101 the pyshapelib directoy into the list of include dirs, so that
102 pyshapelib_api.h can be found.
103
104 * extensions/thuban/wxproj.cpp (pyshapelib_api): New variable that
105 holds the pyshapelib C-API
106 (draw_polygon_shape, point_in_polygon_shape, shape_centroid): Use
107 pyshapelib_api to access the shapelib functions.
108 (initwxproj): Import the c_api from the shapelib module and
109 initialize pyshapelib_api.
110
111 2002-04-04 Bernhard Herzog <[email protected]>
112
113 * setup.py (thuban_bdist_rpm.initialize_options): Use
114 initialize_options to create the scripts for the rpm.
115
116 * extensions/pyprojection/setup.py (PROJ4_PREFIX): Just use /
117
118 2002-04-03 Bernhard Herzog <[email protected]>
119
120 * setup.py: Increment version to 0.1.1
121
122 * Thuban/UI/mainwindow.py (MainWindow.__init__): Move the "Add
123 Layer" and "Remove Layer" commands from the layer menu to the map
124 menu
125
126 2002-02-15 Bernhard Herzog <[email protected]>
127
128 * Thuban/Model/layer.py (Layer.Shape): list append only takes one
129 argument (python <= 1.5.2 erroneously accepted multiuple
130 arguments)
131
132 2002-02-04 Bernhard Herzog <[email protected]>
133
134 * Thuban/UI/identifyview.py (IdentifyGridCtrl): New class to use a
135 RecordGrid in the identifyview.
136 (IdentifyView.__init__): Use IdentifyGridCtrl instead of
137 IdentifyListCtrl. The grid allows editing of the values.
138
139 * Thuban/UI/controls.py (RecordTable, RecordGridCtrl): New classes
140 implementing a grid for a single row of a thuban table.
141
142 * Thuban/UI/view.py (MapCanvas.SelectShapeAt): Search through all
143 layers by default. Easier to use than the previous default of only
144 searching through the select layer which meant that if no layer
145 was selected, you couldn't select a shape.
146
147 * Thuban/UI/tableview.py (TableGrid.__init__): Fix typo
148
149 * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Honour the
150 stroke_width attribute
151
152 * Thuban/Model/save.py (save_session): Write the new stroke_width
153 attribute
154
155 * Thuban/Model/load.py (ProcessSession.startElement): Read the
156 stroke_width attribute
157
158 * Thuban/Model/layer.py (Layer.__init__): New parameter and
159 instance variable stroke_width
160 (Layer.SetStrokeWidth): Set the stroke_width.
161
162 2002-02-01 Bernhard Herzog <[email protected]>
163
164 * extensions/thuban/wxproj.cpp (project_points): Fix two
165 off-by-one errors in the last loop that joins the various parts
166 together.
167
168 2002-01-14 Bernhard Herzog <[email protected]>
169
170 * setup.py (data_dist.make_distribution): Fix some typos
171
172 2001-09-18 Bernhard Herzog <[email protected]>
173
174 * README: Slight tweaking in preparation for the 0.1 release
175
176 * setup.cfg: Add section for sdist to create both tgz and zip
177 archives
178
179 * setup.py: increase version number to 0.1
180 (data_dist): New command class for data distribution
181
182
183 2001-09-14 Bernhard Herzog <[email protected]>
184
185 * Thuban/UI/identifyview.py (IdentifyListCtrl.selected_shape):
186 Handle the case of no layer (i.e. layer is None) properly.
187
188 * Thuban/UI/proj4dialog.py (UTMDialog.__init__, Proj4Dialog.__init__):
189 Set the initial selection of the combo boxes to reflect the
190 projection we're starting with in a way that works on windows,
191 too.
192
193 * Thuban/Lib/connector.py (Connector.print_connections): Print the
194 puiblisher's ids in hex to make it easier to compare them to the
195 standard repr of python methods
196
197 * Thuban/Model/map.py (Map.Destroy): Unsubscribe the label_layer
198 messages
199
200 2001-09-13 Bernhard Herzog <[email protected]>
201
202 * Thuban/UI/tree.py (SessionTreeCtrl.OnSelChanged): Make sure to
203 deselect the layer if no layer is selected
204
205 * Thuban/UI/view.py (MapCanvas.OnPaint): Only delay drawing to
206 idle time when there actually is something to draw. If there's
207 nothing to draw simply clear the window
208 (MapCanvas.do_redraw): Call dc.EndDrawing and add some comments.
209 (MapCanvas.SetMap): force a redraw in all cases because
210 FitMapToWindow doesn't always do it.
211 (MapCanvas.ZoomFactor): Add an optional parameter, center, to
212 specify the point to move into the center of the window
213 (ZoomOutTool.MouseUp, ZoomInTool.MouseUp): If the mouse wasn't
214 dragged, zoon in/out by a factor of 2
215 (MapCanvas.find_shape_at): Iterate backwards (i.e. with decreasing
216 index, i.e. reversed drawing order) so that objects appearing to
217 be in from of others are selected first. This is probably mostly
218 relevant for point shapes where the symbols used may overlap
219
220 * Thuban/Model/session.py (create_empty_session): Unset the
221 modified bit before returning it
222
223 * Thuban/UI/mainwindow.py (MainWindow.NewSession): Use
224 create_empty_session session to create the new, empty session.
225
226 * Thuban/UI/mainwindow.py (MainWindow.__init__): Set the size of
227 the tool bitmaps.
228 (MainWindow.OnClose, MainWindow.save_modified_session): Separate
229 the code that asks whether the session should be saved into the
230 new method save_modified_session.
231 (MainWindow.OpenSession, MainWindow.NewSession): Use the new
232 method to save modified session here too.
233
234 2001-09-11 Bernhard Herzog <[email protected]>
235
236 * setup.py (InnoIconItem): fix typo
237
238 (thuban_bdist_inno.run):
239 (bdist_inno.run): Move the decision not to create symlinks on
240 non-nt platforms to thuban_bdist_inno and do it unconditinally
241 since we never want to create the symlinks here
242
243 2001-09-10 Bernhard Herzog <[email protected]>
244
245 * Thuban/UI/mainwindow.py (MainWindow.IdentifyTool): Popup the
246 identify view immediately
247
248 * Thuban/UI/controls.py: New file with two classes RecordListCtrl
249 and SelectableRecordListCtrl that implement the code shared by the
250 identify view and the label dialog
251
252 * Thuban/UI/identifyview.py (IdentifyListCtrl): Derive from the
253 new class RecordListCtrl
254
255 * Thuban/UI/labeldialog.py (LabelDialog.OnOK): Check whether the
256 return value of GetValue is None instead of using it as a boolean
257 directly so that Zero numbers are handled properly.
258 (LabelListCtrl): Derive from the new class
259 SelectableRecordListCtrl
260
261 * Thuban/UI/proj4dialog.py (Proj4Dialog.__init__):
262 (Proj4Dialog.dialogLayout): Make the window resizable and set the
263 size of the text control explicitly to make the sizers work on
264 both Windows and X.
265
266 2001-09-07 Bernhard Herzog <[email protected]>
267
268 * Thuban/UI/view.py (MapCanvas.find_shape_at):Add a new parameter
269 that can limit the search to the currently selected layer.
270 (MapCanvas.SelectShapeAt): Make sure that the currently selected
271 layer stays selected even when no shape is found
272 (MapCanvas.FitRectToWindow): If the rect has zero with or zero
273 height do nothing (avoids zero division errors)
274
275 2001-09-06 Bernhard Herzog <[email protected]>
276
277 * Thuban/UI/tree.py (SessionTreeCtrl, SessionTreeView.__init__):
278 Correct the spelling of SessionTreeCtrl. dabbrev is too damn
279 convenient :-)
280 (SessionTreeCtrl.__init__, SessionTreeCtrl.update_tree): Introduce
281 a new instvar layer_to_item to map layers to tree items
282 (SessionTreeCtrl.layer_selected): Select the appropriate tree item
283 to match the current selection in the interactor
284
285 * Thuban/UI/interactor.py (Interactor.SelectedLayer):
286 (Interactor.HasSelectedLayer): New methods to query the current
287 selection
288
289 * Thuban/UI/mainwindow.py (MainWindow.current_layer):
290 (MainWindow.has_selected_layer): Simply call the appropriate
291 interactor method
292
293 * Thuban/UI/mainwindow.py (MainWindow.__init__):
294 (MainWindow.LayerShowTable):
295 (MainWindow.identify_view_on_demand): Store the interactor in an
296 instvar and use that reference instead of going through main.app
297
298 * Thuban/UI/mainwindow.py (MainWindow.ShowSessionTree):
299 * Thuban/UI/application.py (ThubanApplication.OnInit):
300 * Thuban/UI/main.py (main): Create the session tree view in main
301 with the new mainwindow method ShowSessionTree and not directly
302 the application's OnInit method
303
304 * Thuban/UI/tree.py (myTreeCtrlPanel):
305 (SessioinTreeCtrl): Rename to SessioinTreeCtrl and turn it into a
306 TreeCtrl isntead of a panel. This affects most method since we now
307 refer to self instead of self.tree
308 (SessionTreeView): New class implementing a non-modal dialog
309 showing the session tree.
310
311 * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Pass the
312 layer to the tableview dialog.
313
314 * Thuban/UI/tableview.py: Add some doc-strings
315 (TableGrid):
316 (TableGrid.OnRangeSelect):
317 (TableGrid.OnSelectCell):
318 (TableFrame.__init__):
319 (TableFrame.row_selected):
320 Selecting rows in the grid view now updates the selected shapes
321 through the TableFrame. To achieve this we derive TableGrid from
322 Publisher and introduce the message type ROW_SELECTED which the
323 TableFrame subscribes to and which is issued by OnRangeSelect and
324 OnSelectCell
325
326 (DataTable.SelectRow): Removed because it's no longer needed in
327 the row/shape selection scheme
328
329 * Thuban/UI/dialogs.py: New file implementing common classes for
330 dialogs
331
332 * Thuban/UI/tableview.py (TableGrid.__init__): Don't subscribe to
333 the SELECTED_SHAPE message anymore. This is now handled by the
334 parent.
335 (TableGrid.select_shape): Only update the selection if the shape
336 is not None.
337 (TableFrame): Inherit from the new NonModalDialog class.
338 (TableFrame.__init__, TableFrame.select_shape): Handle the
339 SELECT_SHAPE message.
340 (TableFrame.OnClose): Extend the inherited method to unsubscribe
341 SELECT_SHAPE
342
343 * Thuban/UI/mainwindow.py (MainWindow.init_dialogs):
344 (MainWindow.add_dialog):
345 (MainWindow.dialog_open):
346 (MainWindow.remove_dialog):
347 (MainWindow.get_open_dialog): New methods to maintain a dictionary
348 of opened non-modal dialogs.
349
350 (MainWindow.__init__): Initialize the new non-modal dictionary
351 management code
352 (MainWindow.LayerShowTable): maintain separate dialogs for each
353 table using the non-modal dialog management code to only open a
354 view once for each table.
355
356 (MainWindow.IdentifyTool):
357 (MainWindow.__init__):
358 (MainWindow.identify_view_on_demand): Don't open the identify view
359 in IdentifyTool anymore. This will be done automatically by the
360 new method identify_view_on_demand which handles the
361 SELECTED_SHAPE message so that the identify view will be opened on
362 demand
363
364 * Thuban/UI/identifyview.py (IdentifyListCtrl.__init__): Remove
365 the interactor argument. The SELECTED_SHAPE message is now handled
366 by the parent.
367 (IdentifyView.__init__): Add the interactor argument so that we
368 can handle the SELECTED_SHAPE message here
369 (IdentifyView.selected_shape): New method to handle the
370 SELECTED_SHAPE messages
371
372 * Thuban/UI/identifyview.py (IdentifyView): Derive from the new
373 NonModalDialog class
374 (IdentifyView.OnClose): Extend the inherited version to
375 unsubscribe SELECT_SHAPE
376
377 * Thuban/Model/session.py (Session.UnsetModified): Remove debug prints
378
379 2001-09-05 Bernhard Herzog <[email protected]>
380
381 * Thuban/UI/view.py (MapCanvas.__init__): New argument, interactor.
382
383 * Thuban/UI/mainwindow.py (MainWindow.__init__): New argument
384 interactor to pass through to the MapCanvas
385
386 * Thuban/UI/application.py (ThubanApplication.OnInit): Use the new
387 argument to the MainWindow constructor to get rid of the ugly hack
388 that made main.app available early just so that the mapcanvas
389 could access the interactor object.
390
391 2001-09-04 Bernhard Herzog <[email protected]>
392
393 * Thuban/UI/mainwindow.py (MainWindow.RunMessageBox): New method
394 that runs a modal message box
395 (MainWindow.OnClose): Use the new method
396 (MainWindow.RemoveLayer): Just do nothing in case no layer is
397 selected. The command should be grayed out anyway, so there's no
398 need to pop up a message box.
399 (MainWindow.AddLayer): Pop up a message box with an error message
400 if the shape file can't be opened
401
402 * Thuban/Model/layer.py (Layer.__init__): Open the shapefile
403 immediately. This will cause an exception in case the file can't
404 be opened and we can display an appropriate message.
405
406 * MANIFEST.in: Add extensions/pyprojection/LICENSE
407
408 * setup.py (thuban_bdist_rpm): New class implementing a Thuban
409 specific bdist_rpm command.
410
411 * Thuban/UI/main.py: Catch ImportError exceptions when importing
412 the locale module because it may not be available on some
413 installations.
414
415 * extensions/pyprojection/LICENSE: Copy of the license text in
416 Projection.i. Having it in a separate file makes it easier to
417 refer to license text in e.g. RPMs
418
419 2001-09-03 Bernhard Herzog <[email protected]>
420
421 * setup.py: use wx-config instead of wxgtk-config because it's
422 more generic
423
424 * setup.py (ThubanInstall.get_outputs): Add the symlink in
425 <prefix>/bin to the outputs
426 (ThubanInstall.link_file): New method to link files. We need this
427 because the standard copy_files refuses to link non-existing
428 files.
429 (ThubanInstall.run): Remove the leading install root from the
430 script filename if an install root was specified and use the new
431 link_file method
432
433 * Thuban/UI/mainwindow.py (MainWindow.AddLayer): Fit the map to
434 the window when the first layer is added to the map.
435
436 * setup.py (ThubanInstall.run): Honor the build root (self.root)
437 when linking thuban.py to <prefix>/bin
438
439 2001-08-31 Bernhard Herzog <[email protected]>
440
441 * setup.py: In the setup call, the install parameters shouldn't
442 have trailing slashes because distutils on non-posix platforms
443 doesn't like that. The same applies to other directories like
444 "Resources/Bitmaps"
445
446 In the configuration section for nt, move the wxWindows directory
447 optins into the part clearly marked as editable.
448
449 (InstallLocal.initialize_options):
450 (InstallLocal.user_options): remove the currently unused debug
451 flag
452 (thuban_build_py.find_all_modules): Add this method so that it
453 works for our case of having packages and modules in one
454 distribution as well.
455 (ThubanInstall.initialize_options):
456 (ThubanInstall.finalize_options):
457 (ThubanInstall.user_options):
458 (ThubanInstall.boolean_options): Add new options, do-symlink and
459 extra files. Since these are the first ThubanInstall specific
460 options, override user_options and boolean_options
461 (ThubanInstall.run): Honor the new do-symlink and extra-files
462 options.
463 (ThubanInstall.get_outputs): Add to override the base-class's
464 version and add the extra-files to the outputs
465 (bdist_inno): New class for windows distributions with Inno Setup
466 (InnoIconItem): Helper class for bdist_inno
467 (thuban_bdist_inno): Thuban specific version of bdist_inno. Added
468 this together with the appropriate parameters, to the setup call.
469
470 * setup.cfg (bdist_inno): added new section for the inno setup
471 installer
472
473 * Thuban/UI/tree.py (myTreeCtrlPanel.__init__): New inst var
474 changing_selection to avoid recursive selection events when
475 modifying the selection in response to a selection event.
476 (myTreeCtrlPanel.normalize_selection): Set the new inst var when
477 changing the tree's selection.
478 (myTreeCtrlPanel.OnSelChanged): Only normalize the selection when
479 we're not being called indirectly from normalize_selection.
480
481 * Thuban/UI/mainwindow.py (MainWindow.update_command_ui): Call
482 event.Check only if the command is actuall checkable.
483 (MainWindow.__init__): Call the toolbar's Realize method to make
484 sure that the items are actually shown
485
486 2001-08-28 Bernhard Herzog <[email protected]>
487
488 * setup.py: Fix some doc strings
489
490 * ChangeLog: started
491

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26