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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 126 - (show annotations)
Thu May 2 18:55:46 2002 UTC (22 years, 10 months ago) by bh
Original Path: trunk/thuban/ChangeLog
File size: 18041 byte(s)
update ChangeLog

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

Properties

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26