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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 16 by bh, Fri Aug 31 15:36:39 2001 UTC revision 131 by bh, Fri May 3 14:50:27 2002 UTC
# Line 1  Line 1 
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]>  2001-08-31  Bernhard Herzog  <[email protected]>
440    
441          * setup.py: In the setup call, the install parameters shouldn't          * setup.py: In the setup call, the install parameters shouldn't

Legend:
Removed from v.16  
changed lines
  Added in v.131

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26