Parent Directory
|
Revision Log
Sticky Revision: |
made a copy
New Classification "Pattern": Classify text attributes by regexp.
(SessionSaver.write_layer): Don't write any attributes anymore for the layer element. (SessionSaver.write_classification): Even if there is no classification field, still write the classification because the clnull (default) symbol will not be defined anymore as part of the layer element.
(SessionSaver.write_layer): Added code to save the opacity and mask type of a layer.
Replace ShapefileStore by FileShapeStore. (SessionSaver.write_data_containers): Only use methods of the base class FileShapeStore.
Make layer's use_mask flag default to true. Support a bit array describing the mask to use. Improve error handling in ProjectRasterFile (also addresses RT #2947).
Add a new dialog box for raster layers. The dialog box allows the user to toggle a mask that is generated by ProjectRasterFile and is used to only draw the real parts of the projected image.
put Id and Source to the usual place
(SessionSaver.write_classification): Write attribute 'size' for cldata when the shape layer is of point type. This also now make the test_load.py tests happy.
Final step for explicit id/geometry columns: Loading and saving * Resources/XML/thuban-1.1.dtd: New. Derived from thuban-1.0.dtd with the following changes: (dbshapesource): Two new attributes id_column and geometry_column * Thuban/Model/save.py (SessionSaver.write): Use the new dtd (SessionSaver.write_session): Use the new namespace (SessionSaver.write_data_containers): Write the new dbshapesource parameters * Thuban/Model/load.py (SessionLoader.__init__): New namespace for the new file format version (SessionLoader.start_dbshapesource): Handle the new db parameters * test/test_save.py: Update to the new dtd and namespace (SaveSessionTest.test_save_postgis): Update the NonConnectionStore mock object to provide a working IDColumn method. * test/test_load_1_0.py: New. Copy of the test_load.py before today's changes but with the round-trip tests removed. * test/test_load_0_9.py: Update doc-string. * test/test_load.py: Update all .thuban files to the new dtd and namespace. (TestPostGISLayer.file_contents): Add the new dbshapesource paramters
* setup.py (setup call): 1.0.0, yeah! * Thuban/version.py (longversion): 1.0.0, yeah! * Thuban/Model/load.py (SessionLoader.__init__): Accept the 1.0.0 namespace too * Thuban/Model/save.py (SessionSaver.write_session): Save with 1.0.0 namespace * test/test_load.py (LoadSessionTest.dtd) (TestSingleLayer.file_contents) (TestNonAsciiColumnName.file_contents) (TestLayerVisibility.file_contents) (TestClassification.file_contents, TestLabels.file_contents) (TestLayerProjection.file_contents) (TestRasterLayer.file_contents, TestJoinedTable.file_contents) (TestLabelLayer.file_contents, TestPostGISLayer.file_contents) (TestPostGISLayerPassword.file_contents) (TestLoadError.file_contents, TestLoadError.test): Update for 1.0.0 namespace * test/test_save.py (SaveSessionTest.dtd) (SaveSessionTest.testEmptySession) (SaveSessionTest.testSingleLayer) (SaveSessionTest.testLayerProjection) (SaveSessionTest.testRasterLayer) (SaveSessionTest.testClassifiedLayer) (SaveSessionTest.test_dbf_table) (SaveSessionTest.test_joined_table) (SaveSessionTest.test_save_postgis): Update for 1.0.0 namespace
* Thuban/Model/save.py (SessionSaver.write_session): Save files with the thuban-1.0rc1 * Thuban/Model/load.py (SessionLoader.__init__): Recognize the thuban-1.0rc1 namespace too * test/test_save.py (SaveSessionTest.dtd) (SaveSessionTest.testEmptySession) (SaveSessionTest.testSingleLayer) (SaveSessionTest.testLayerProjection) (SaveSessionTest.testRasterLayer) (SaveSessionTest.testClassifiedLayer) (SaveSessionTest.test_dbf_table) (SaveSessionTest.test_joined_table) (SaveSessionTest.test_save_postgis): Update to thuban-1.0rc1 namespace * test/test_load.py (LoadSessionTest.dtd): Update to thuban-1.0rc1 namespace (TestSingleLayer.file_contents) (TestNonAsciiColumnName.file_contents) (TestLayerVisibility.file_contents) (TestClassification.file_contents, TestLabels.file_contents) (TestLayerProjection.file_contents) (TestRasterLayer.file_contents, TestJoinedTable.file_contents) (TestPostGISLayer.file_contents) (TestPostGISLayerPassword.file_contents) (TestLoadError.file_contents, TestLoadError.test): Update to thuban-1.0rc1 namespace
Unify the filenames stored in .thuban files so that the .thuban files are more platform independend * Thuban/Model/save.py (unify_filename): New. Unify filenames so that they can be used on both windows and unix (SessionSaver.prepare_filename): New. Handle all filename transformations for filenames stored in the thuban file (SessionSaver.write_data_containers, SessionSaver.write_layer): Use prepare_filename * test/test_save.py (SaveSessionTest.testSingleLayer) (SaveSessionTest.testLayerProjection) (SaveSessionTest.testRasterLayer) (SaveSessionTest.testClassifiedLayer) (SaveSessionTest.test_dbf_table) (SaveSessionTest.test_joined_table): Filenames are always stored with slashes on all currently supported platforms so adapt all tests to this * test/test_load.py (LoadSessionTest.filenames): With the new filename scheme the filenames in the tests should be understandable on all currently supported platforms so we turn this into an empty list because we don't have to normalize them anymore
(SessionSaver.write) (SessionSaver.write_session): Use the 1.0 dtd and 1.0-dev namespace (SessionSaver.write_projection): Write the projection's epsg attribute
As preparation for the 0.9 release, switch thuban files to a non-dev namespace * Thuban/Model/save.py (SessionSaver.write_session): Write files with the http://thuban.intevation.org/dtds/thuban-0.9.dtd namespace * Thuban/Model/load.py (SessionLoader.__init__): Accept the http://thuban.intevation.org/dtds/thuban-0.9.dtd namespace too * test/test_save.py (SaveSessionTest.dtd) (SaveSessionTest.testEmptySession) (SaveSessionTest.testSingleLayer) (SaveSessionTest.testLayerProjection) (SaveSessionTest.testRasterLayer) (SaveSessionTest.testClassifiedLayer) (SaveSessionTest.test_dbf_table) (SaveSessionTest.test_joined_table) (SaveSessionTest.test_save_postgis): Update for new namespace * test/test_load.py (LoadSessionTest.dtd, TestSingleLayer) (TestLayerVisibility.file_contents, TestLabels.file_contents) (TestLayerProjection.file_contents) (TestRasterLayer.file_contents, TestJoinedTable.file_contents) (TestPostGISLayer.file_contents) (TestPostGISLayerPassword.file_contents) (TestLoadError.file_contents, TestLoadError.test): Update for new namespace
Implement saving a session with a postgis connection * Resources/XML/thuban-0.9.dtd (dbconnection, dbshapesource) New elements for database connections and shapestores using db connections (session): Add the dbconnections to the content model * Thuban/Model/save.py (SessionSaver.write_db_connections): New. Write the db connections (SessionSaver.write_session): Call write_db_connections to write the connection before the data sources (SessionSaver.write_data_containers): Handle postgis shapestores * test/test_save.py (SaveSessionTest.thubanids) (SaveSessionTest.thubanidrefs): Update for new DTD (SaveSessionTest.test_save_postgis): New. Test saving a session with postgis connections * Thuban/Model/postgisdb.py (PostGISTable.DBConnection) (PostGISTable.TableName): New accessor methods for the connection and table name * test/test_postgis_db.py (TestPostGISTable.test_dbconn) (TestPostGISTable.test_dbname): New methods to test the new PostGISConnection methods
* Thuban/Model/layer.py (Layer.__init__): Rename classificationField to classificatin_column and init it here so that it can be used in SetClassificationColumn (Layer.GetClassificationColumn, Layer.GetClassificationField): Rename to GetClassificationColumn. (Layer.SetClassificationColumn, Layer.SetClassificationField): Rename to SetClassificationColumn and issue a LAYER_CHANGED message if the column changes. (Layer._classification_changed, Layer.ClassChanged): Rename to _classification_changed. Update the callers. (Layer.SetShapeStore): Further field->column renames. * Thuban/Model/load.py (SessionLoader.start_classification) (SessionLoader.start_clpoint): Updates because of field->column method name changes in the Layer class * Thuban/Model/save.py (SessionSaver.write_classification): Updates because of field->column method name changes in the Layer class * Thuban/UI/classifier.py (Classifier.__init__) (Classifier._OnTry, Classifier._OnRevert): Updates because of field->column method name changes in the Layer class * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer): Updates because of field->column method name changes in the Layer class * Thuban/UI/viewport.py (ViewPort.find_shape_at): Updates because of field->column method name changes in the Layer class * test/test_save.py (SaveSessionTest.testClassifiedLayer) (SaveSessionTest.testClassifiedLayer): Update because of field->column method name changes in the Layer class * test/test_layer.py (SetShapeStoreTests.setUp) (SetShapeStoreTests.test_sanity): Update because of field->column method name changes in the Layer class (TestLayerModification.setUp): Subscribe to LAYER_CHANGED as well (TestLayerModification.test_sanity) (TestLayerModification.test_initial_settings): remove unsued code and rename to test_sanity. (TestLayerModification.test_set_classification): New test for SetClassification and SetClassificationField.
(SessionSaver.write_classification): Get the field name and type from the layer.
* Thuban/Model/save.py (SessionSaver.write_classification): Encode string values (in addition to the labels) as UTF 8 * Thuban/Model/load.py (SessionLoader.start_clpoint): Decode the values if the field type is string * test/test_save.py (SaveSessionTest.testClassifiedLayer): Test saving a session with non-ascii string classification values. * test/test_load.py (TestClassification.file_contents) (TestClassification.test): Check for non-ascii values in string classifications
* Resources/XML/thuban-0.9.dtd: New. This will become the DTD for 0.9. * Thuban/Model/transientdb.py (TransientJoinedTable.JoinType): New. Return the join type * Thuban/Model/save.py (SessionSaver.write_session): Use new 0.9 DTD (SessionSaver.write_data_containers): Save the join type for joined tables * Thuban/Model/load.py (SessionLoader.__init__): Add the new 0.9 namespace (SessionLoader.start_jointable): Handle the jointype attribute * test/test_load_0_8.py: New. Effectively a copy of test_load.py as of Thuban 0.8. These are now tests to determine whether Thuban can still read files generated by Thuban 0.8 * test/test_load.py (LoadSessionTest.dtd) (TestSingleLayer.file_contents) (TestLayerVisibility.file_contents, TestLabels.file_contents) (TestLayerProjection.file_contents) (TestRasterLayer.file_contents, TestJoinedTable.file_contents) (TestJoinedTable.file_contents) (TestLoadError.file_contents): Update for new DTD (TestJoinedTable.file_contents, TestJoinedTable.setUp): Add test for new join type attribute * test/test_save.py (SaveSessionTest.dtd) (SaveSessionTest.testEmptySession) (SaveSessionTest.testSingleLayer) (SaveSessionTest.testLayerProjection) (SaveSessionTest.testRasterLayer) (SaveSessionTest.testClassifiedLayer) (SaveSessionTest.test_dbf_table) (SaveSessionTest.test_joined_table): Update for new DTD (SaveSessionTest.test_joined_table): Add test for new join type attribute
Removed import of Color which wasn't being used.
* Resources/XML/thuban-0.8.dtd: New DTD for the new file format version. * Thuban/Model/save.py (sort_data_stores): New. Make topological sort of the data sources so they can be written with sources that data sources that depend on other data sources come after the sources they depend on. (SessionSaver.__init__): Add idmap instance variable to map from objects to the ids used in the file. (SessionSaver.get_id, SessionSaver.define_id) (SessionSaver.has_id): New. Methods to manage the idmap (SessionSaver.write): Use thuban-0.8.dtd (SessionSaver.write_session): Add a namespace on the session and write out the data sources before the maps. (SessionSaver.write_data_containers): New. Write the data containers. (SessionSaver.write_layer): Layer elements now refer to a shapestore and don't contain filenames anymore. * Thuban/Model/load.py (LoadError): Exception class to raise when errors in the files are discovered (SessionLoader.__init__): Define dispatchers for elements with a thuban-0.8 namespace too. (SessionLoader.check_attrs): New helper method to check and convert attributes (AttrDesc): New. Helper class for SessionLoader.check_attrs (SessionLoader.start_fileshapesource) (SessionLoader.start_derivedshapesource) (SessionLoader.start_filetable, SessionLoader.start_jointable): Handlers for the new elements in the new fileformat (SessionLoader.start_layer): Handle the shapestore attribute in addition to filename. (SessionLoader.start_table, SessionLoader.end_table): Removed. They were never used in the old formats and aren't needed for the new. * Thuban/Model/session.py (Session.DataContainers): New method to return all "data containers", i.e. shapestores and tables * test/xmlsupport.py (SaxEventLister.__init__) (SaxEventLister.startElementNS, sax_eventlist): Add support to normalize IDs. * test/test_xmlsupport.py (TestEventList.test_even_list_id_normalization): New test case for id normalization * test/test_load.py (LoadSessionTest.check_format): Use ID normalization (LoadSessionTest.thubanids, LoadSessionTest.thubanidrefs): New class atrributes used for ID normalization (TestSingleLayer, TestLayerVisibility, TestLabels.test) (TestLayerProjection.test, TestRasterLayer.test): Adapt to new file format (TestJoinedTable): New test for loading sessions with joined tables. (TestLoadError): New. Test whether missing required attributes cause a LoadError. * test/test_save.py (SaveSessionTest.thubanids) (SaveSessionTest.thubanidrefs): New class attributes for ID normalization in .thuban files. (SaveSessionTest.compare_xml): Use id-normalization. (SaveSessionTest.testEmptySession) (SaveSessionTest.testLayerProjection) (SaveSessionTest.testRasterLayer) (SaveSessionTest.testClassifiedLayer): Adapt to new file format. (SaveSessionTest.testLayerProjection): The filename used was the same as for testSingleLayer. Use a different one. (SaveSessionTest.test_dbf_table) (SaveSessionTest.test_joined_table): New test cases for saving the new data sources structures. (TestStoreSort, MockDataStore): Classes to test the sorting of the data stores for writing.
(SessionSaver.write_classification): Remove unnecessary use of lambdas and nested functions.
Update to the layer interface: Direct access to the table, shapetable, shapefile and filename attributes is now actively deprecated by issuing deprecation warnings for all places where this happens. * Thuban/Model/layer.py (Layer.__getattr__): New. Implement access to the instance variables table, shapetable, shapefile and filename via __getattr__ so that we can issue a deprecation warning. (Layer.SetShapeStore): Don't set the deprecated instance variables any more (Layer.SetShapeStore): Don't use deprecated layer instance variables (Layer.Destroy): No need to explicitly remove the instance variables any more (Layer.GetFieldType, Layer.Shape): Don't use deprecated layer instance variables * Thuban/UI/classgen.py (ClassGenDialog.__init__) (GenUniformPanel._OnRetrieve, GenUniquePanel._OnRetrieve) (GenQuantilesPanel.GetList, GenQuantilesPanel.OnRetrieve): Don't use deprecated layer instance variables * Thuban/UI/classifier.py (Classifier.__init__): Don't use deprecated layer instance variables * Thuban/UI/identifyview.py (IdentifyListCtrl.selected_shape) (IdentifyGridCtrl.selected_shape): Don't set the deprecated layer instance variables * Thuban/UI/tableview.py (LayerTableGrid.select_shapes): Don't use deprecated layer instance variables * Thuban/UI/mainwindow.py (MainWindow.LayerShowTable): Don't use deprecated layer instance variables * Thuban/Model/save.py (SessionSaver.write_layer): Don't use deprecated layer instance variables * Thuban/UI/renderer.py (MapRenderer.draw_shape_layer) (MapRenderer.polygon_render_param): Don't use deprecated layer instance variables * test/runtests.py (main): Turn Thuban's deprecation warnings into errors so that they're cought by the tests * test/test_load.py (TestSingleLayer.test): Don't use deprecated layer instance variables
(escape, XMLWriter): Moved into seperate file xmlwriter.py.
(XMLWriter.encode): Don't assume that we get a string in Latin1. If we get such as string convert it to unicode first, otherwise leave if alone before encoding. (SessionSaver.write_layer): Add support for writing both Layers and RasterLayers.
Remove some unused imports including the __future__ import for nested_scopes as Thuban relies on Python 2.2 now. (XMLWriter.encode): Remove the special case for a None argument. In the saver encode is always called with a string argument.
Old comment deleted.
(XMLWriter.encode()): Explicite call to unicode and latin1. Fixes #1851 finally.
Explicit imports. (XMLWriter.encode): New. Encode the given string from a format used by Thuban into UTF-8. Fixes RTbug #1851.
(SessionSaver.write_layer): Save visible parameter.
(SessionSaver.write_projection): Make sure to save the name of the projection.
(SessionSaver.write_layer): Save projection information.
(XMLWriter): Renamed from XMLSaver to promote symmetry.
(XMLSaver): New. Contains all the general XML writing methods that were part of SessionSaver. (SessionSaver): Renamed from Saver.
(Saver.write_classification): Need to save the group label.
Fix assert calls.
(Saver): Store field type information.
(escape): Fix typo in doc-string
Fixes a test case failure. (Saver.write_classification): Use new Classification and Group functions.
(Saver.write_classificaton): Uses the new iterator to save the classification information.
(Saver): Use new Color and Classification methods
* Thuban/Model/save.py (Saver.open_element, Saver.close_element): Added element_open variable to track opening and closing of tags so that tags that don't span more than one line are closed with /> instead of </tag_name>. Use the GetDefault*() methods of the Classification class.
added support to save classification information
(Saver): New class to handle serializing a session into an XML file. The main reason to introduce a class is that applications built on Thuban can derive from it so that they can save additional information in a session file. (save_session): Delegate almost all the work to the Saver class. Rename the filename argument to file because it may be a file like object now.
* Thuban/Model/save.py (relative_filename): Wrapper around Thuban.Lib.fileutil.relative_filename that accepts an empty dir argument. save_session now automatically uses this version, solving a problem when saving to a relative filename.
* Thuban/Model/save.py (save_session): Write the new stroke_width attribute
import all the source files
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.
[email protected] | ViewVC Help |
Powered by ViewVC 1.1.26 |