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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 126 - (hide 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 bh 126 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 bh 124 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 frank 120 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 frank 118
49     * Resources/Bitmaps/identify.xpm: shadow added
50    
51     * Resources/Bitmaps/fullextent.xpm: new
52    
53 jan 116 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 jan 114 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 jan 107 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 bh 100 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 bh 89 2002-04-04 Bernhard Herzog <[email protected]>
99    
100 bh 91 * setup.py (thuban_bdist_rpm.initialize_options): Use
101     initialize_options to create the scripts for the rpm.
102    
103 bh 89 * extensions/pyprojection/setup.py (PROJ4_PREFIX): Just use /
104    
105 bh 85 2002-04-03 Bernhard Herzog <[email protected]>
106    
107 bh 87 * setup.py: Increment version to 0.1.1
108    
109 bh 85 * 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 bh 83 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 bh 81 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 bh 72 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 bh 71 2002-01-14 Bernhard Herzog <[email protected]>
156    
157     * setup.py (data_dist.make_distribution): Fix some typos
158    
159 bh 70 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 bh 64 2001-09-14 Bernhard Herzog <[email protected]>
171    
172 bh 70 * 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 bh 64 * 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 bh 59 2001-09-13 Bernhard Herzog <[email protected]>
188    
189 bh 64 * Thuban/UI/tree.py (SessionTreeCtrl.OnSelChanged): Make sure to
190     deselect the layer if no layer is selected
191    
192 bh 59 * 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 bh 64 (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 bh 59
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 bh 55 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 bh 48 2001-09-10 Bernhard Herzog <[email protected]>
231    
232 bh 53 * 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 bh 48 * 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 bh 44 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 bh 46 (MapCanvas.FitRectToWindow): If the rect has zero with or zero
260     height do nothing (avoids zero division errors)
261 bh 44
262 bh 32 2001-09-06 Bernhard Herzog <[email protected]>
263    
264 bh 42 * 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 bh 40 * 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 bh 35 * 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 bh 32 * 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 bh 26 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 bh 19 2001-09-04 Bernhard Herzog <[email protected]>
379    
380 bh 22 * 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 bh 19 * 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 bh 18 2001-09-03 Bernhard Herzog <[email protected]>
407    
408 bh 19 * 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 bh 18 * 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 bh 16 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 bh 7 2001-08-28 Bernhard Herzog <[email protected]>
474    
475 bh 9 * setup.py: Fix some doc strings
476    
477 bh 7 * 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