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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26