/[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 456 by bh, Tue Mar 4 11:32:31 2003 UTC revision 601 by jonathan, Fri Apr 4 12:11:59 2003 UTC
# Line 1  Line 1 
1    2003-04-04  Jonathan Coles   <[email protected]>
2    
3        * Thuban/Model/classification.py: Fix assert calls.
4        (ClassGroupProperties.SetLineColor, ClassGroupProperties.SetFill):
5        Copy the color parameter rather than hold onto a reference.
6    
7        * Thuban/Model/color.py (Color.__copy__, Color.__deepcopy): Copy
8        the color object.
9        (NoColor.__copy__, NoColor.__deepcopy): Return 'self' so that we
10        are sure there exists only one refernce to Color.None in the system.
11        This allows us to use 'is' rather than the comparision functions.
12    
13        * Thuban/Model/save.py: Fix assert calls.
14    
15        * Thuban/UI/classifier.py: Fix assert calls.
16        (ClassGrid._OnCellDClick): Call up to the classifier to open the
17        dialog to edit the groups properties.
18        (ClassGrid._OnCellResize): Make sure that the scollbars are drawn
19        correctly if a cell is resized.
20        (ClassTable.SetClassification): New. Changes the classification
21        that is in the table.
22        (ClassTable.__SetRow): Allow groups to be prepended.
23        (Classifier): New code for opening the EditProperties and
24        GenerateRanges dialogs.
25        (SelectPropertiesDialog.__GetColor): Only set the color in the
26        color dialog if the current color is not None.
27    
28        * Thuban/UI/dock.py: Fix assert calls.
29    
30        * Thuban/UI/legend.py: Fix assert calls.
31    
32        * Thuban/UI/renderer.py: Fix assert calls.
33    
34        * Thuban/UI/classgen.py (ClassGenDialog): Dialog for generating
35        classifications.
36        (GenRangePanel): Panel specific to range generation.
37        (GenSingletonPanel): Panel specific to singleton generation.
38        (ClassGenerator): Class responsible for actually generating
39        the classification from the data gathered in the dialog box.
40        (PropertyRamp): Generates properties whose values range from
41        a starting property to an ending property.
42    
43    2003-04-03  Bernhard Herzog  <[email protected]>
44    
45            * test/support.py (print_garbage_information): New function that
46            prints information about still connected messages and memory
47            leaks.
48            (run_suite): Removed.
49            (run_tests): New function for use as a replacement of
50            unittest.main in the test_* files. This one calls
51            print_garbage_information at the end.
52    
53            * test/runtests.py (main): Use support.print_garbage_information
54    
55            * test/test_layer.py: Use support.run_tests instead of
56            unittest.main so we get memory leak information
57            (TestLayer.test_arc_layer, TestLayer.test_polygon_layer)
58            (TestLayer.test_point_layer, TestLayer.test_empty_layer)
59            (TestLayerLegend.test_visibility): Call the layer's Destroy method
60            to fix a memory leak.
61    
62            * test/test_classification.py: Use support.run_tests instead of
63            unittest.main so we get memory leak information
64            (TestClassification.test_classification): Call the layer's Destroy
65            method to fix a memory leak.
66    
67    2003-04-02  Bernhard Herzog  <[email protected]>
68    
69            * extensions/thuban/wxproj.cpp (check_version, check_version_gtk):
70            Handle the reference counts of the return value and errors in
71            PyArg_ParseTuple correctly.
72    
73            * Thuban/UI/application.py (ThubanApplication.OpenSession): Make
74            sure the filename is absolute to avoid problems when saving the
75            session again
76    
77            * Thuban/Model/table.py: Remove unnecessary import. Fix a typo.
78    
79    2003-04-01  Jonathan Coles   <[email protected]>
80    
81            *  Thuban/UI/renderer.py (MapRenderer.draw_point_shape): Check
82            that there actually are points in the returned list of points
83            before trying to index into the list. The list may be empty if
84            the shape is a Null Shape.
85    
86    2003-04-01  Bernhard Herzog  <[email protected]>
87    
88            * test/test_map.py: Don't use from <module> import *
89    
90    2003-04-01  Jonathan Coles   <[email protected]>
91    
92            * Thuban/Model/session.py: Use LAYER_CHANGED instead of
93            LAYER_LEGEND_CHANGED
94    
95            * Thuban/UI/dock.py (DockableWindow._OnButtonClose): Call
96            self.Destroy() to close the window after yesterday's changes.
97    
98            * test/test_map.py, test/test_session.py: Fix messages that
99            are sent from maps and layers.
100    
101    2003-03-31  Jonathan Coles   <[email protected]>
102    
103            * Thuban/UI/classifier.py: Commented out some debugging statements.
104            (ClassDataPreviewer.Draw): Draw rectangles for polygon layers per
105            RTbug #1769.
106    
107            * Thuban/UI/dock.py (DockableWindow.UnDock): Restore size and
108            position (although position doesn't work yet under GTK).
109            (DockableWindow.Destroy): New. Called when the window must be
110            closed. Namely needed when the DockFrame closes and must close
111            its children.
112            (DockFrame): Listen for EVT_CLOSE and destroy all children.
113    
114            * Thuban/UI/legend.py (LegendPanel.Destroy): New. Cleans up
115            when then window is told to close.
116            (LegendTree._OnMsgLayerChanged): Fixes a seg fault bug. See
117            comment in source for more info.
118    
119            * Thuban/UI/main.py: Show the legend by default when Thuban starts.
120    
121            * Thuban/UI/mainwindow.py: Renamed OnClose to _OnClose for
122            symmetry with other such methods.
123            (MainWindow.ShowLegend): Show the legend docked by default.
124    
125    2003-03-28  Jonathan Coles   <[email protected]>
126    
127            * Thuban/UI/classifier.py: Support for highlighting a specific
128            group within the grid when the classification dialog is opened.
129            Also contains a lot of debugging printouts which will later
130            be removed.
131    
132            * Thuban/UI/dock.py: Complete rework on the dock code so that
133            that it is fairly removed from the rest of the Thuban application.
134            It is easy to add new docks which the rest of the program having
135            to be aware of them.
136    
137            * Thuban/UI/legend.py: Modifications to support selecting a
138            specific group in the classification dialog. Changed how layers
139            are drawn when the layer is visible/invisible.
140    
141            * Thuban/UI/mainwindow.py: Removed legend specific code and
142            replaced it with calls to the new dock code.
143    
144            * Thuban/UI/renderer.py (MapRenderer.__init__): Added assert
145            to check if scale > 0. Trying to track down a divide by zero.
146    
147    2003-03-26  Jonathan Coles   <[email protected]>
148    
149            * Thuban/UI/legend.py: Removed unnecessary LegendDialog class.
150            (LegendPanel): Removed _OnDock()/_OnUnDock() methods which are
151            now part of DockableWindow.
152            (LegendPanel.DoOnSelChanged): Select the current layer in the
153            map.
154            (LegendTree._OnSelChanged): Call LegendPanel.DoOnSelChanged()
155            with the selected layer and/or group.
156    
157    2003-03-26  Jonathan Coles   <[email protected]>
158    
159            This putback contains the code for dockable windows. There is
160            no support in wxWindows as of this date for windows that can
161            attach themselves to other windows.
162    
163            The current model contains a DockableWindow which has a parent
164            window for when it is detached and a dock window that it puts
165            its contents in when it is docked. The contents of a DockableWindow
166            must be a DockPanel. DockPanel itself derives from wxPanel.
167    
168            * Thuban/Model/layer.py (Layer.ClassChanged): Send a LAYER_CHANGED
169            message, not a LAYER_LEGEND_CHANGED message.
170    
171            * Thuban/Model/map.py (Map): Forward LAYER_CHANGED messages.
172    
173            * Thuban/UI/classifier.py (Classifier.__init__): Use wxADJUST_MINSIZE
174            as one of the style properties for the fieldTypeText item to
175            be sure that its size is correct when the text changes.
176    
177            * Thuban/UI/dock.py: New. Classes for the DockPanel and
178            DockableWindow.
179    
180            * Thuban/UI/legend.py: Added some more buttons and made the
181            LegendPanel a DockPanel.
182    
183            * Thuban/UI/mainwindow.py: Added sash windows to the main window
184            and supporting functions for manipulating the sashes.
185            (MainWindow.ShowLegend): Create a DockableWindow with the
186            LegendPanel as the contents.
187    
188            * Thuban/UI/messages.py: Added DOCKABLE_* messages
189    
190            * Thuban/UI/view.py (MapCanves.SetMap): Listen for LAYER_CHANGED,
191            not LAYER_LEGEND_CHANGED, messages.
192    
193    2003-03-25  Jonathan Coles   <[email protected]>
194    
195            * setup.py: Added custom script bdist_rpm_build_script so that
196            when the rpm is built the path to wx-config is correct.
197    
198            * setup.cfg: Added line saying to use the custom build script
199    
200    2003-03-20  Jonathan Coles   <[email protected]>
201    
202            Initial implementation of the Legend.
203    
204            * Thuban/UI/legend.py: New. Creates a window that shows the map's
205            Legend information and allows the user to add/modify classifications
206            and how the layers are drawn on the map.
207    
208            * setup.py: New command 'build_docs' which currently uses
209            happydoc to generate html documentation for Thuban.
210    
211            * Thuban/Model/classification.py (ClassGroup.GetDisplayText): New.
212            Returns a string which is appropriately describes the group.
213    
214            * Thuban/Model/layer.py (Layer.SetClassification): Generate a
215            LAYER_CHANGED event instead of a LAYER_LEGEND_CHANGED event.
216    
217            * Thuban/Model/map.py (Map): Rename messages and use new, more
218            specific, messages.
219    
220            * Thuban/Model/messages.py: New message to indicate that a layer's
221            data has changed (LAYER_CHANGED). New map messages to indicate
222            when layers have been added/removed/changed or if the stacking order
223            of the layers has changed.
224    
225            * Thuban/Model/session.py: Rename and use new messages.
226    
227            * Thuban/UI/classifier.py: Remember if any changes have actually
228            been applied so that if the dialog is cancelled without an application
229            of changes we don't have to set a new classification.
230            (ClassDataPreviewer): Pulled out the window specific code and put it
231            ClassDataPreviewWindow. ClassDataPreviewer can then be used to draw
232            symbols on any DC.
233            
234            * Thuban/UI/mainwindow.py: New code to open the legend.
235    
236            * Thuban/UI/view.py: Use new message names.
237    
238    2003-03-19  Jonathan Coles   <[email protected]>
239    
240            * Thuban/UI/main.py (verify_versions): New. Checks the versions
241            of Python, wxPython, and some other libraries.
242    
243            * extensions/thuban/wxproj.cpp (check_version): Checks the given
244            version against what wxproj was compiled with.
245            (check_version_gtk): If wxproj was compiled with gtk then check
246            the given version against the version of the gtk library
247            currently being used.
248    
249    2003-03-14  Bernhard Herzog  <[email protected]>
250    
251            * test/test_command.py: Run the tests when the module is run as a
252            script
253    
254    2003-03-14  Bernhard Herzog  <[email protected]>
255    
256            Implement selection of multiple selected shapes in the same layer:
257    
258            - Introduce a new class to hold the selection. This basically
259              replaces the interactor which was nothing more than the
260              selection anyway. A major difference is of course that the new
261              selection class supports multiple selected shapes in one layer
262            
263            - Move the object that represents the selection from the
264              application to the canvas. The canvas is a better place than the
265              application because the selection represents which shapes and
266              layer of the map displayed by the canvas are selected and
267              affects how the map is drawn.
268    
269            - Make the selection and its messages publicly available through
270              the mainwindow.
271    
272            - The non-modal dialogs do not get a reference to the interactor
273              anymore as they can simply refer to their parent, the
274              mainwindow, for the what the interactor had to offer.
275    
276            * Thuban/UI/selection.py: New module with a class to represent the
277            selection.
278    
279            * Thuban/UI/messages.py (SELECTED_TABLE, SELECTED_MAP): Remove
280            these unused messages
281    
282            * Thuban/UI/application.py (ThubanApplication.OnInit)
283            (ThubanApplication.OnExit, ThubanApplication.SetSession): The
284            interactor is gone now.
285            (ThubanApplication.CreateMainWindow): There is no interactor
286            anymore so we pass None as the interactor argument for now for
287            compatibility.
288    
289            * Thuban/UI/view.py (MapCanvas.delegated_messages)
290            (MapCanvas.Subscribe, MapCanvas.Unsubscribe): In Subscribe and
291            Unsubscribe, delegate messages according to the delegated_messages
292            class variable.
293            (MapCanvas.__getattr__, MapCanvas.delegated_methods): Get some
294            attributes from instance variables as described with the
295            delegated_methods class variable.
296            (MapCanvas.__init__): New instance variable selection holding the
297            current selection
298            (MapCanvas.do_redraw): Deal with multiple selected shapes. Simply
299            pass them on to the renderer
300            (MapCanvas.SetMap): Clear the selection when a different map is
301            selected.
302            (MapCanvas.shape_selected): Simple force a complete redraw. The
303            selection class now takes care of only issueing SHAPES_SELECTED
304            messages when the set of selected shapes actually does change.
305            (MapCanvas.SelectShapeAt): The selection is now managed in
306            self.selection
307    
308            * Thuban/UI/mainwindow.py (MainWindow.delegated_messages)
309            (MainWindow.Subscribe, MainWindow.Unsubscribe): In Subscribe and
310            Unsubscribe, delegate messages according to the delegated_messages
311            class variable.
312            (MainWindow.delegated_methods, MainWindow.__getattr__): Get some
313            attributes from instance variables as described with the
314            delegated_methods class variable.
315            (MainWindow.__init__): The interactor as ivar is gone. The
316            parameter is still there for compatibility. The selection messages
317            now come from the canvas.
318            (MainWindow.current_layer, MainWindow.has_selected_layer):
319            Delegate to the the canvas.
320            (MainWindow.LayerShowTable, MainWindow.Classify)
321            (MainWindow.identify_view_on_demand): The dialogs don't need the
322            interactor parameter anymore.
323    
324            * Thuban/UI/tableview.py (TableFrame.__init__)
325            (LayerTableFrame.__init__, LayerTableFrame.OnClose)
326            (LayerTableFrame.row_selected): The interactor is gone. It's job
327            from the dialog's point of view is now done by the mainwindow,
328            i.e. the parent. Subscribe to SHAPES_SELECTED instead
329            of SELECTED_SHAPE
330            
331            * Thuban/UI/dialogs.py (NonModalDialog.__init__): The interactor
332            is gone. It's job from the dialog's point of view is now done by
333            the mainwindow, i.e. the parent.
334            
335            * Thuban/UI/classifier.py (Classifier.__init__): The interactor is
336            gone. It's job from the dialog's point of view is now done by the
337            mainwindow, i.e. the parent.
338    
339            * Thuban/UI/tree.py (SessionTreeView.__init__): The interactor is
340            gone. It's job from the dialog's point of view is now done by the
341            mainwindow, i.e. the parent.
342            (SessionTreeCtrl.__init__): New parameter mainwindow which is
343            stored as self.mainwindow. The mainwindow is need so that the tree
344            can still subscribe to the selection messages.
345            (SessionTreeCtrl.__init__, SessionTreeCtrl.unsubscribe_all)
346            (SessionTreeCtrl.update_tree, SessionTreeCtrl.OnSelChanged): The
347            selection is now accessible through the mainwindow. Subscribe to
348            SHAPES_SELECTED instead of SELECTED_SHAPE
349    
350            * Thuban/UI/identifyview.py (IdentifyView.__init__): Use the
351            SHAPES_SELECTED message now.
352            (IdentifyView.selected_shape): Now subscribed to SHAPES_SELECTED,
353            so deal with multiple shapes
354            (IdentifyView.__init__, IdentifyView.OnClose): The interactor is
355            gone. It's job from the dialog's point of view is now done by the
356            mainwindow, i.e. the parent.
357    
358            * Thuban/UI/controls.py (RecordListCtrl.fill_list): The second
359            parameter is now a list of shape ids.
360            (RecordTable.SetTable): The second parameter is now a list of
361            indices.
362    
363            * Thuban/UI/renderer.py (ScreenRenderer.RenderMap): Rename the
364            selected_shape parameter and ivar to selected_shapes. It's now a
365            list of shape ids.
366            (MapRenderer.draw_label_layer): Deal with multiple selected
367            shapes. Rearrange the code a bit so that the setup and shape type
368            distinctions are only executed once.
369    
370            * test/test_selection.py: Test cases for the selection class
371    
372    2003-03-11  Jonathan Coles   <[email protected]>
373    
374            * Thuban/Model/load.py: Temporary fix so that the xml reader
375            doesn't cause Thuban to crash.
376    
377            * Thuban/Model/layer.py: Handle the cyclic references between
378            a layer and its classification better, and be sure to disconnect
379            the classification from the layer when the layer is destroyed
380            so that we don't maintain a cyclic reference that may not be
381            garbage collected.
382    
383            * Thuban/Model/classification.py: See comment for layer.py.
384    
385    2003-03-12  Jan-Oliver Wagner <[email protected]>
386    
387            * HOWTO-Release: New. Information on the steps for releasing
388            a new version of Thuban.
389    
390    2003-03-11  Jonathan Coles   <[email protected]>
391    
392            * Thuban/UI/classifier.py: Add normal border to SelectPropertiesDialog.
393            Use True instead of true.
394            (Classifier): Should have a single panel in which all the controls lie.
395    
396            * Thuban/UI/proj4dialog.py: Add normal border.
397    
398            * Thuban/UI/tree.py: Fixed problem with bad item images under Windows.
399    
400            * Thuban/UI/mainwindow.py: Use True instead of true.
401    
402            * setup.py: Update some definitions to use wxWindows2.4 files
403    
404            * Data/iceland_sample_class.thuban: Fixed file so that the
405            field_type information is present.
406    
407    2003-03-10  Jonathan Coles   <[email protected]>
408    
409            * Thuban/UI/classifier.py (Classifier.__init__): Make the
410            field type label grow so that when the text changes the
411            size is updated correctly. This may be a wxWindows bug.
412    
413    2003-03-10  Jonathan Coles   <[email protected]>
414    
415            * Thuban/UI/application.py: Changed SESSION_CHANGED to
416            SESSION_REPLACED.
417    
418            * Thuban/UI/classifier.py: Wrap text with _().
419            (ClassGrid.CreateTable): Set dimensions and size hints here,
420            instead of in Reset, so we only set the size once.
421    
422            * Thuban/UI/dialogs.py: Don't need Shutdown(); just use Close()!
423    
424            * Thuban/UI/mainwindow.py (MainWindow.prepare_new_session):
425            Call Close() instead of Shutdown().
426    
427            * Thuban/UI/messages.py: Changed SESSION_CHANGED to SESSION_REPLACED.
428    
429            * Thuban/UI/tree.py: Changed SESSION_CHANGED to SESSION_REPLACED.
430            Go back to using OnClose() instead of Shutdown().
431    
432    2003-03-10  Jonathan Coles   <[email protected]>
433    
434            * Thuban/UI/classifier.py (Classifier): SelectField() needed
435            to know the old field index as well as the new one.
436    
437    2003-03-10  Jonathan Coles   <[email protected]>
438    
439            * Thuban/UI/classifier.py (Classifier): Use __SelectField()
440            to correctly set the table information and call this from
441            __init__ and from _OnFieldSelect so that all the information
442            is up to date when the dialog opens and when a field is changed.
443    
444    2003-03-10  Jonathan Coles   <[email protected]>
445    
446            * Thuban/Model/classification.py (Classification): Don't use
447            layer's message function directly, use the ClassChanged() method
448            when then classification changes. SetField/SetFieldType/SetLayer
449            must keep the information about field name and field type in
450            sync when an owning layer is set or removed.
451    
452            * Thuban/Model/layer.py: Added ClassChanged() so that the
453            classification can tell the layer when its data has changed.
454            (Layer.SetClassification): Accepts None as an arguement to
455            remove the current classification and correctly handles
456            adding a new classification.
457    
458            * Thuban/Model/load.py: Comment out print statement
459    
460            * test/test_classification.py, test/test_save.py: New and
461            improved tests.
462    
463    2003-03-07  Jonathan Coles   <[email protected]>
464    
465            * Thuban/Model/classification.py: Implemented __copy__ and
466            __deepcopy__ for ClassGroup* and ClassGroupProperites so
467            they can easily be copied by the classifier dialog.
468            (ClassGroupProperites.__init__): The default line color should
469            have been Color.Black.
470    
471            * Thuban/UI/classifier.py: Setting and Getting table values now
472            uses a consistent set of functions.
473            (Classifier): Now non-modal. Has field type label which changes
474            as the field changes. Keep track of buttons in a list so that
475            we can enable/disable the buttons when the None field is selected.
476            (SelectPropertiesDialog): Add buttons to make the colors transparent.
477    
478            * Thuban/UI/dialogs.py (NonModalDialog.Shutdown): New method which
479            does what OnClose did, but can be called by the application to
480            close a window. Needed when a session changes, and we have to
481            close the classifier windows.
482    
483            * Thuban/UI/mainwindow.py (MainWindow.prepare_new_session):
484            Shuts down open dialogs. Used when a new session is created
485            or a session is opened.
486            (MainWindow.SaveSession): Should only call application.SaveSession()
487            if we don't call SaveSessionAs first.
488            (MainWindow.Classify): Allow different classifier dialogs for
489            different layers.
490    
491            * Thuban/UI/tree.py (SessionTreeView): Remove OnClose and let
492            the parent class handle it. Add Shutdown() to unsubscibe from
493            event notification and call the parent Shutdown(). This was
494            necessary so the application can close the tree window.
495    
496    2003-03-06  Jonathan Coles   <[email protected]>
497    
498            * Thuban/Model/classification.py: Minor documentation changes,
499            Addition of __eq__ and __ne__ methods.
500            (Classification.SetLayer): prevent recursion between this method
501            and Layer.SetClassification().
502    
503            * Thuban/Model/color.py: Addition of __eq__ and __ne__ methods.
504    
505            * Thuban/Model/layer.py (SetClassification): prevent recursion
506            between this method and Classification.SetLayer().
507    
508            * test/test_classification.py, test/test_load.py,
509            test/test_session.py: Fixed and added tests for the classification
510            classes.
511    
512    2003-03-06  Bernhard Herzog  <[email protected]>
513    
514            * Thuban/UI/classifier.py (ClassGrid.__init__)
515            (ClassGrid.CreateTable): Move the SetSelectionMode call to
516            CreateTable because otherwise it triggers an assertion in
517            wxPython/wxGTK 2.4.
518    
519    2003-03-05  Jonathan Coles   <[email protected]>
520    
521            * Thuban/common.py: Move FIELDTYPE constants back to table.py.
522    
523            * Thuban/Model/load.py: import FIELDTYPE constants from table.
524    
525            * Thuban/UI/classifier.py: import FIELDTYPE constants from table.
526    
527            * Thuban/Model/table.py: Put FIELDTYPE constants back.
528    
529    2003-03-05  Jonathan Coles   <[email protected]>
530    
531            * Thuban/UI/classifier.py: Added class documentation.
532            Fixed RTbug #1713, #1714. Added Move[Up|Down] buttons.
533            Store just the groups in the table and generate the other
534            column information when it is requested. Add "None" field
535            to pull-down to select no classification.
536    
537            * Thuban/common.py: Moved FIELDTYPE constants from table.py
538            (Str2Num): Only catch ValueError exceptions.
539    
540            * Thuban/Model/classification.py: Class documentation. Renaming
541            of methods with Stroke to Line. Groups are stored in a single
542            list with the default as the first element. Groups are searched
543            in the order they appear in the list.
544    
545            * Thuban/Model/color.py: Documentation.
546    
547            * Thuban/Model/layer.py (Layer): Add GetFieldType to retreive
548            the kind of data represented by a field.
549    
550            * Thuban/Model/load.py (ProcessSession): Use proper string
551            conversion function; fixes RTbug #1713.
552    
553            * Thuban/Model/save.py (Saver): Store field type information.
554    
555            * Thuban/Model/table.py: Put FIELDTYPE constants in common.py.
556            (Table): Add field_info_by_name() to retrieve field information
557            by specifying the field name, not the number.
558    
559            * Thuban/UI/mainwindow.py: Function name changes.
560    
561            * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Only
562            get the layer classification once. Don't try to classify
563            values when the field is None: just use the default properties.
564    
565            * Thuban/UI/view.py: Function name changes.
566    
567            * Doc/thuban.dtd: Add field_type attribute to a classification.
568    
569    2003-03-04  Bernhard Herzog  <[email protected]>
570    
571            * Doc/thuban.dtd: Use correct syntax for optional attributes. Make
572            the fill and stroke layer attributes optional with suitable
573            default values. Add the stroke_width layer attribute. Use correct
574            syntax for empty elements. Make the attribute list for labels
575            refer to the label element.
576    
577  2003-03-04  Bernhard Herzog  <[email protected]>  2003-03-04  Bernhard Herzog  <[email protected]>
578    
579          * setup.py (thuban_build_py.build): Add a comment about distutils in          * setup.py (thuban_build_py.build): Add a comment about distutils in

Legend:
Removed from v.456  
changed lines
  Added in v.601

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26