]> git.openstreetmap.org Git - potlatch2.git/commitdiff
Merge remote-tracking branch 'gravitystorm/i18n' into staging
authorRichard Fairhurst <richard@systemeD.net>
Sat, 2 Apr 2011 16:48:47 +0000 (17:48 +0100)
committerRichard Fairhurst <richard@systemeD.net>
Sat, 2 Apr 2011 16:48:47 +0000 (17:48 +0100)
60 files changed:
.gitignore [new file with mode: 0644]
net/systemeD/halcyon/Map.as
net/systemeD/halcyon/TileSet.as
net/systemeD/halcyon/connection/Connection.as
net/systemeD/halcyon/connection/Relation.as
net/systemeD/halcyon/connection/XMLBaseConnection.as
net/systemeD/halcyon/connection/XMLConnection.as
net/systemeD/halcyon/connection/actions/AddMemberToRelationAction.as
net/systemeD/potlatch2/EditController.as
net/systemeD/potlatch2/TagGrid.mxml
net/systemeD/potlatch2/TagViewer.mxml
net/systemeD/potlatch2/Toolbox.mxml
net/systemeD/potlatch2/VectorSourceDialog.mxml
net/systemeD/potlatch2/controller/DrawWay.as
net/systemeD/potlatch2/utils/TrackLoader.as
potlatch2.mxml
resources/features/pois/amenity_vendingmachine.png [deleted file]
resources/features/pois/barrier_generic.24.png [deleted file]
resources/features/pois/boat-launch-24.png [deleted file]
resources/features/pois/power_substation.n.24.png [new file with mode: 0644]
resources/features/pois/power_tower_high2.n.24.png [new file with mode: 0644]
resources/features/pois/power_tower_low.n.24.png [new file with mode: 0644]
resources/features/pois/power_transformer.n.24.png [new file with mode: 0644]
resources/features/pois/shopping_kiosk.n.24.png [new file with mode: 0644]
resources/features/pois/shopping_marketplace.n.24.png [new file with mode: 0644]
resources/features/pois/shopping_toy.n.24.png [deleted file]
resources/features/pois/shopping_toys.n.24.png [new file with mode: 0644]
resources/features/pois/shopping_vending_machine.n.24.png [new file with mode: 0644]
resources/features/pois/sport_shooting.n.24.png
resources/features/pois/sport_stadium.n.24.png [new file with mode: 0644]
resources/features/pois/transport_mini_roundabout.n.24.png [deleted file]
resources/features/pois/transport_miniroundabout_anticlockwise.n.24.png [new file with mode: 0644]
resources/features/pois/transport_slipway.n.24.png
resources/features/pois/transport_speedbump.n.24.png [new file with mode: 0644]
resources/features/pois/water_generic.24.png [deleted file]
resources/icons/bollard.png [deleted file]
resources/icons/power_blank.png [deleted file]
resources/icons/power_pole_24.png [deleted file]
resources/icons/power_tower_24.png [deleted file]
resources/icons/tourist_blank.png [deleted file]
resources/icons/transport_airport_48.png [deleted file]
resources/icons/transport_blank.png [deleted file]
resources/icons/transport_helipad_48.png [deleted file]
resources/imagery.xml
resources/map_features.xml
resources/map_features/amenities.xml
resources/map_features/buildings.xml
resources/map_features/landuse.xml
resources/map_features/power.xml
resources/map_features/roads.xml
resources/map_features/shopping.xml
resources/stylesheets/opencyclemap.css
resources_src/amenity_vendingmachine.svg [deleted file]
resources_src/sport_shooting.svg [deleted file]
resources_src/transport_mini_roundabout.svg [deleted file]
resources_src/transport_slipway.svg [deleted file]
resources_src/transport_traffic_calming.svg [deleted file]
resources_src/water_generic.svg [deleted file]
tests/src/AllHalcyonTests.as
tests/src/net/systemeD/halcyon/connection/actions/AddMemberToRelationActionTest.as [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..f3b6c16
--- /dev/null
@@ -0,0 +1,14 @@
+build.properties
+l10n/locale/bundles
+version.as
+halcyon.tmproj
+
+resources/locales
+resources/*.swf
+resources/*.cache
+resources/docs
+
+/tests/bin/
+/tests/report/
+
+/generated
index eb3b15428c4a123ab8e2bc660ed38797d9a0b236..ffc920a02d63f6c2d8d235a03711ec4cdd840e66 100644 (file)
@@ -37,10 +37,6 @@ package net.systemeD.halcyon {
                public var scale:uint=14;                                                
                /** current scaling factor for lon/latp */
                public var scalefactor:Number=MASTERSCALE;
-               public var bigedge_l:Number= 999999;                    // area of largest whichways
-               public var bigedge_r:Number=-999999;                    //  |
-               public var bigedge_b:Number= 999999;                    //  |
-               public var bigedge_t:Number=-999999;                    //  |
 
                public var edge_l:Number;                                               // current bounding box
                public var edge_r:Number;                                               //  |
@@ -282,14 +278,6 @@ package net.systemeD.halcyon {
         */
                public function download():void {
                        this.dispatchEvent(new MapEvent(MapEvent.DOWNLOAD, {minlon:edge_l, maxlon:edge_r, maxlat:edge_t, minlat:edge_b} ));
-                       
-                       if (edge_l>=bigedge_l && edge_r<=bigedge_r &&
-                               edge_b>=bigedge_b && edge_t<=bigedge_t) { return; }     // we have already loaded this area, so ignore
-                       bigedge_l=edge_l; bigedge_r=edge_r;
-                       bigedge_b=edge_b; bigedge_t=edge_t;
-                       if (connection.waycount>1000) {
-                               connection.purgeOutside(edge_l,edge_r,edge_t,edge_b);
-                       }
                        connection.loadBbox(edge_l,edge_r,edge_t,edge_b);
 
             // Do the same for vector layers
@@ -386,6 +374,20 @@ package net.systemeD.halcyon {
                        vectorlayers[layer.name]=layer;
                        vectorbg.addChild(layer.paint);
                }
+               
+               public function removeVectorLayer(layer:VectorLayer):void {
+                       if (!layer) return;
+                       layer.blank();
+                       vectorbg.removeChild(layer.paint);
+                       delete vectorlayers[layer.name];
+               }
+               
+               public function findVectorLayer(name:String):VectorLayer {
+                       for each (var layer:VectorLayer in vectorlayers) {
+                               if (layer.name==name) { return layer; }
+                       }
+                       return null;
+               }
 
                // ------------------------------------------------------------------------------------------
                // Redraw all items, zoom in and out
index 36e4a12ea144a7e3cd04decf643fd16cc795db40..b5469555c52e82475ea7f9b79286ba70bf25c952 100644 (file)
@@ -20,12 +20,14 @@ package net.systemeD.halcyon {
                private var requests:Array=[];
                private var tiles:Object={};            // key is "z,x,y"; value "true" if queued, or reference to loader object if requested
                private var waiting:int=0;                      // number of tiles currently being downloaded
+               private var loadcount:int=0;            // number of tiles fully downloaded
                private var baseurl:String;                     // e.g. http://npe.openstreetmap.org/$z/$x/$y.png
                private var scheme:String;                      // 900913 or microsoft
                public var blocks:Array;                        // array of regexes which are verboten
 
                private var map:Map;
-               private const MAXTILEREQUESTS:int= 4;
+               private const MAXTILEREQUESTS:uint= 4;
+               private const MAXTILESLOADED:uint=30;
 
                private var sharpenFilter:BitmapFilter = new ConvolutionFilter(3, 3, 
                        [0, -1, 0,
@@ -182,12 +184,27 @@ package net.systemeD.halcyon {
                        t.addEventListener(TimerEvent.TIMER,function():void { upFade(DisplayObject(event.target.loader)); });
                        t.start();
                        waiting--;
+                       loadcount++;
+                       if (loadcount>MAXTILESLOADED) purgeTiles();
                        return;
                }
                
                protected function upFade(s:DisplayObject):void {
                        s.alpha+=0.1;
                }
+               
+               protected function purgeTiles():void {
+                       for (var tile:String in tiles) {
+                               if (tiles[tile] is Sprite) {
+                                       var coords:Array=tile.split(','); var tz:uint=coords[0]; var tx:uint=coords[1]; var ty:uint=coords[1];
+                                       if (tz!=map.scale || tx<tile_l || tx>tile_r || ty<tile_t || ty<tile_b) {
+                                               if (tiles[tile].parent) tiles[tile].parent.removeChild(tiles[tile]);
+                                               delete tiles[tile];
+                                               loadcount--;
+                                       }
+                               }
+                       }
+               }
 
                
                // Assemble tile URL
@@ -207,6 +224,11 @@ package net.systemeD.halcyon {
                                        }
                                        t=baseurl.replace('$quadkey',u); break;
 
+                               case 'tms':
+                                       ty=Math.pow(2,tz)-1-ty;
+                                       t=baseurl.replace('$z',map.scale).replace('$x',tx).replace('$y',ty);
+                                       break;
+
                                default:
                                        if (baseurl.indexOf('$x')>-1) {
                                                t=baseurl.replace('$z',map.scale).replace('$x',tx).replace('$y',ty);
index 1a6ddaf179be56e9d71bc6ff2e8edb02f27531cc..0821a5b94f9a06ea65ee1f72e976a8a12fbdd2c0 100644 (file)
@@ -101,6 +101,10 @@ package net.systemeD.halcyon.connection {
         private var traces:Array = [];
         private var nodePositions:Object = {};
         protected var traces_loaded:Boolean = false;
+               private var loadedBboxes:Array = [];
+
+               /** maximum number of ways to keep in memory before purging */
+               protected const MAXWAYS:uint=3000;
 
         protected function get nextNegative():Number {
             return negativeID--;
@@ -269,21 +273,18 @@ package net.systemeD.halcyon.connection {
         public function createNode(tags:Object, lat:Number, lon:Number, performCreate:Function):Node {
             var node:Node = new Node(nextNegative, 0, tags, true, lat, lon);
             performCreate(new CreateEntityAction(node, setNode));
-                       //markDirty();
             return node;
         }
 
         public function createWay(tags:Object, nodes:Array, performCreate:Function):Way {
             var way:Way = new Way(nextNegative, 0, tags, true, nodes.concat());
             performCreate(new CreateEntityAction(way, setWay));
-                       //markDirty();
             return way;
         }
 
         public function createRelation(tags:Object, members:Array, performCreate:Function):Relation {
             var relation:Relation = new Relation(nextNegative, 0, tags, true, members.concat());
             performCreate(new CreateEntityAction(relation, setRelation));
-                       //markDirty();
             return relation;
         }
 
@@ -365,6 +366,31 @@ package net.systemeD.halcyon.connection {
                        return modified;
                }
 
+               // Keep track of the bboxes we've loaded
+
+               /** Has the data within this bbox already been loaded? */
+               protected function isBboxLoaded(left:Number,right:Number,top:Number,bottom:Number):Boolean {
+                       var l:Number,r:Number,t:Number,b:Number;
+                       for each (var box:Array in loadedBboxes) {
+                               l=box[0]; r=box[1]; t=box[2]; b=box[3];
+                               if (left>=l && left<=r && right>=l && right<=r && top>=b && top<=t && bottom>=b && bottom<=t) {
+                                       return true;
+                               }
+                       }
+                       return false;
+               }
+               /** Mark that bbox is loaded */
+               protected function markBboxLoaded(left:Number,right:Number,top:Number,bottom:Number):void {
+                       if (isBboxLoaded(left,right,top,bottom)) return;
+                       loadedBboxes.push([left,right,top,bottom]);
+               }
+               /** Purge all data if number of ways exceeds limit */
+               public function purgeIfFull(left:Number,right:Number,top:Number,bottom:Number):void {
+                       if (waycount<=MAXWAYS) return;
+                       purgeOutside(left,right,top,bottom);
+                       loadedBboxes=([left,right,top,bottom]);
+               }
+
                // Changeset tracking
 
         protected function setActiveChangeset(changeset:Changeset):void {
index e6bdbd155389d00a3e82dc4886091c629835643f..795dd7810cd8486c01ff0f648c30859cf9dff141 100644 (file)
@@ -60,13 +60,11 @@ package net.systemeD.halcyon.connection {
             return members[index];
         }
 
-        public function setMember(index:uint, member:RelationMember):void {
-            var oldMember:RelationMember = getMember(index);
-            
-                       members.splice(index, 1, member);
-            oldMember.entity.removeParent(this);
-                       member.entity.addParent(this);
-                       markDirty();
+        public function setMember(index:uint, member:RelationMember, performAction:Function):void {
+            var composite:CompositeUndoableAction = new CompositeUndoableAction("Set Member at index "+index);
+            composite.push(new RemoveMemberByIndexAction(this, members, index));
+            composite.push(new AddMemberToRelationAction(this, index, member, members));
+            performAction(composite);
         }
 
                public function findMembersByRole(role:String, entityType:Class=null):Array {
index b99e70fb98e1a52bbe17663c9ba44a9124e94e9a..7d083b5e6019a6876b3bff905552040b40474194 100644 (file)
@@ -139,6 +139,7 @@ package net.systemeD.halcyon.connection {
                 }
             }
             
+            markBboxLoaded(minlon,maxlon,maxlat,minlat);
             registerPOINodes();
             dispatchEvent(new Event(LOAD_COMPLETED));
         }
index 3f818b4832542c98ca443323efc8b0a2f8f499d3..0bf342d1e08852e5aa9dc6a5b09a0de315c780fd 100644 (file)
@@ -16,8 +16,6 @@ package net.systemeD.halcyon.connection {
     */
        public class XMLConnection extends XMLBaseConnection {
 
-        //public var readConnection:NetConnection;
-
                public function XMLConnection() {
 
                        if (Connection.policyURL!='')
@@ -30,6 +28,15 @@ package net.systemeD.halcyon.connection {
                
                override public function loadBbox(left:Number,right:Number,
                                                                top:Number,bottom:Number):void {
+            purgeIfFull(left,right,top,bottom);
+            if (isBboxLoaded(left,right,top,bottom)) return;
+
+            // enlarge bbox by 20% on each edge
+            var xmargin:Number=(right-left)/5;
+            var ymargin:Number=(top-bottom)/5;
+            left-=xmargin; right+=xmargin;
+            bottom-=ymargin; top+=ymargin;
+
             var mapVars:URLVariables = new URLVariables();
             mapVars.bbox= left+","+bottom+","+right+","+top;
 
@@ -56,6 +63,7 @@ package net.systemeD.halcyon.connection {
 
         private function errorOnMapLoad(event:Event):void {
                        dispatchEvent(new MapEvent(MapEvent.ERROR, { message: "Couldn't load the map" } ));
+                       dispatchEvent(new Event(LOAD_COMPLETED));
         }
         private function mapLoadStatus(event:HTTPStatusEvent):void {
             trace("loading map status = "+event.status);
@@ -212,7 +220,7 @@ package net.systemeD.halcyon.connection {
             // build the actual request
                        var serv:HTTPService=new HTTPService();
                        serv.method="POST";
-                       serv.url=url;
+                       serv.url=signedOAuthURL(url, "POST");
                        serv.contentType = "text/xml";
                        serv.headers={'X-Error-Format':'xml'};
                        serv.request=" ";
index b41cfde8409e15f199c489c5c681371aa4f31399..a5d9a689b694a28368cc039df5583e4cc3c40949 100644 (file)
@@ -4,7 +4,7 @@ package net.systemeD.halcyon.connection.actions {
     
     public class AddMemberToRelationAction extends UndoableEntityAction {
         private var rel:Relation;
-        private var index:uint;
+        private var index:int;
         private var member:RelationMember;
         private var memberList:Array;
         
@@ -17,6 +17,8 @@ package net.systemeD.halcyon.connection.actions {
         }
         
         public override function doAction():uint {
+            if ( index == -1 )
+                index = memberList.length;
             memberList.splice(index, 0, member);
             member.entity.addParent(rel);
             markDirty();
@@ -27,7 +29,9 @@ package net.systemeD.halcyon.connection.actions {
         
         public override function undoAction():uint {
             memberList.splice(index, 1);
-            member.entity.removeParent(rel);
+            if (rel.findEntityMemberIndex(member.entity)==-1) {
+                member.entity.removeParent(rel);
+            }
             markClean();
             rel.dispatchEvent(new RelationMemberEvent(Connection.RELATION_MEMBER_REMOVED, member.entity, rel, index));
             
index 93c7cb4d0e077f0e876bfb4e5239f47bb1d2e3b1..88361dd4b16a2f21e89a7634d1941ad9408befba 100644 (file)
@@ -12,6 +12,7 @@ package net.systemeD.potlatch2 {
        import flash.geom.*;
        import flash.ui.Keyboard;
        import flash.text.TextField;
+    import mx.controls.TextArea;
 
     /** Controller for the main map editing window itself. The logic that responds to mouse and keyboard events is all 
     * buried in various ControllerState classes. */
@@ -93,12 +94,15 @@ package net.systemeD.potlatch2 {
                }
         
         private function keyDownHandler(event:KeyboardEvent):void {
+                       if ((event.target is TextField) || (event.target is TextArea)) return;
                        keys[event.keyCode]=true;
                }
 
         private function keyUpHandler(event:KeyboardEvent):void {
-                       if (event.target is TextField) return;                          // not meant for us
-                       if (keys[event.keyCode]) { delete keys[event.keyCode]; }
+            if (!keys[event.keyCode]) return;
+            delete keys[event.keyCode];
+            if ((event.target is TextField) || (event.target is TextArea)) return;                             // not meant for us
+
                        if (FunctionKeyManager.instance().handleKeypress(event.keyCode)) { return; }
             
             if (event.keyCode == 77) { toggleSize(); } // 'M'
index c585c5b9865f258d40e619001b94a1ba9c6d0bca..6abbd69e7a9cbc143b4321801133774ca20a27e0 100644 (file)
 
                /** Assign a new selected Entity, and update editing controls appropriately. */
                public function init(entity:Entity):void {
+                       if (selectedEntity==entity) return;
+                       if (selectedEntity) selectedEntity.removeEventListener(Connection.TAG_CHANGED, tagChanged);
+
+                       selectedEntity=entity;
+                       if (!selectedEntity) return;
+                       selectedEntity.addEventListener(Connection.TAG_CHANGED, tagChanged, false, 0, true);
+
                        if ( tagDataProvider == null ) {
                                tagDataProvider = new ArrayCollection();
                                dataProvider = tagDataProvider;
+                       } else {
+                               tagDataProvider.removeAll();
                        }
 
-                       selectedEntity=entity;
-                       updateTagDataProvider();
-               }
-
-               private function updateTagDataProvider():void {
-                       if (editedItemPosition) return;
-                       tagDataProvider.removeAll();
-                       if (selectedEntity==null) { return; }
                        var tags:Array = selectedEntity.getTagArray();
                        tags.sortOn("key");
                        for each(var tag:Tag in tags) { tagDataProvider.addItem(tag); }
                }
 
+               /** Update dataProvider in response to a tag being edited or removed */
+               private function tagChanged(event:TagEvent):void {
+                       var set:Boolean=false;
+                       for (var i:uint=0; i<tagDataProvider.length; i++) {
+                               if (tagDataProvider[i].key==event.oldKey) {
+                                       if (event.newValue && event.key) {
+                                               if (!set) {
+                                                       // this entry in the dataProvider has changed
+                                                       tagDataProvider[i].key=event.key;
+                                                       tagDataProvider[i].value=event.newValue;
+                                                       set=true;
+                                               } else {
+                                                       // trap duplicate tags
+                                                       tagDataProvider.removeItemAt(i);
+                                               }
+                                       } else {
+                                               // this entry in the dataProvider has been deleted
+                                               tagDataProvider.removeItemAt(i);
+                                       }
+                               }
+                       }
+                       // tell Flex to redraw the grid because we've changed a tag
+                       invalidateList();
+               }
+
                /** Create editing controls for a new key/value pair, with default values. */
                public function addNewTag():void {
                        var newKey:String = "(new tag)";
                public function removeTag():void {
                        var k:String = selectedItem.key;
                        selectedEntity.setTag(k, null, MainUndoStack.getGlobalStack().addAction);
-                       updateTagDataProvider();
                }
 
                /** Return the type ("node", "way", "relation") of the selected entity. */
index bade4b8033d720f9e443635cf9a2dbea0d431c34..b107fe0da2988a5bc608f1cca9a4a3c257da73f7 100644 (file)
                                } else {
                                        iconText.htmlText = "<b>No tags set</b><br/><font size='10pt'>Please use the menu below to define what this "+entity.getType()+" is</font>";
                                }
+                               currentCategorySelector.setSelectedFeature(null);
                        }
 
                        // Set it as the popup, and make sure it's visible
              setupAdvanced(selectedEntity);
       }
 
-      /**
-      * When you enter a new tag and press enter, the focus moves to the add button
-      * Adding an event listener to the button and listening for + means that you
-      * can add two consecutive tags with the same keypress. This relies on focus
-      * moving to the "add" button, though, so it's not robust to rearranging the UI.
-      */
-      private function advancedAddButtonKeyboardEvent(event:KeyboardEvent):void {
-          switch (event.keyCode) {
-            case 187:   addNewTag(); break;                          // + - add tag
-            case 107:   addNewTag(); break;                          // numpad plus
-          }
-      }
-
       private var listeningToRelations:Array = [];
 
       private function setupAdvanced(entity:Entity):void {
                if (!advancedTagGrid) advancedContainer.createComponentsFromDescriptors();      // if Flex hasn't created it, force it
                advancedTagGrid.init(entity);
-        advancedAddButton.addEventListener(KeyboardEvent.KEY_DOWN, advancedAddButtonKeyboardEvent, false, 0, true);
-        advancedDeleteButton.addEventListener(KeyboardEvent.KEY_DOWN, advancedAddButtonKeyboardEvent, false, 0, true);
 
                if ( entity == null ) {
                        advancedID.htmlText = "";
                        for each (var entity:Entity in EntityCollection(selectedEntity).entities) {
                                var indexes:Array=relation.findEntityMemberIndexes(entity);
                                for each (var index:int in indexes) {
-                                       relation.setMember(index, new RelationMember(entity,newRole));
+                                       relation.setMember(index, new RelationMember(entity,newRole), MainUndoStack.getGlobalStack().addAction);
                                }
                        }
                } else {
-                       relation.setMember(props['index'], new RelationMember(selectedEntity,newRole));
+                       relation.setMember(props['index'], new RelationMember(selectedEntity,newRole), MainUndoStack.getGlobalStack().addAction);
                }
       }
 
        }
 
       private function tagChanged(event:TagEvent):void {
-             if(selectedEntity != null && selectedEntity is EntityCollection) {
-                       setupMultiAdvanced(selectedEntity);
-                   return;
-                 }
-
           refreshFeatureIcon();
-          // ** FIXME - changing tags on Advanced tab should update simple view
-          // (but putting initialiseEditors here breaks other stuff, because it causes
-          // the Basic pane to be selected)
-
-          // if the advancedTagGrid has already been set up, it needs to be refreshed.
-          // FIXME make this better, maybe advancedTagGrid should be event listening.
-          if(advancedContainer.initialized) {
-            checkAdvanced();
-          }
       }
 
       public function loadFeatures():void {
index 35b56a6db11fc7eb7ad2cc721ae72342906c17cb..a553ab6a26ee6b7be38e1db1e0e386dbac23adcf 100644 (file)
                override protected function createChildren():void {
                        super.createChildren();
                        super.titleBar.addEventListener(MouseEvent.MOUSE_DOWN,handleDown);
-                       super.titleBar.addEventListener(MouseEvent.MOUSE_UP,handleUp);
                }
 
                public function updateSelectionUI():void {
 
                private function handleDown(e:Event):void {
                        this.startDrag();
+                       stage.addEventListener(MouseEvent.MOUSE_UP,handleUp);
                }
 
                private function handleUp(e:Event):void {
                        this.stopDrag();
+                       stage.removeEventListener(MouseEvent.MOUSE_UP,handleUp);
                }
                
                public function toggle():void {
index 776753a6907b46f0fe045d4da94807595ee1abb1..ba0415797e7549a3443a7c5328208c4bd1f2df02 100644 (file)
        }
 
        private function removeVectorLayer():void {
-               var a:String=dataGrid.selectedItem.name;
-               map.vectorlayers[a].blank();
-               delete map.vectorlayers[a];
+               map.removeVectorLayer(map.vectorlayers[dataGrid.selectedItem.name]);
                dispatchEvent(new Event("layers_changed"));
        }
     
index 80a637d90b2a3e2e7d06bd88db568304e8105c62..71d98721f9bbdceee5f61373ce44e42a60e900b0 100644 (file)
@@ -23,7 +23,7 @@ package net.systemeD.potlatch2.controller {
                        super(way);
                        this.editEnd = editEnd;
                        this.leaveNodeSelected = leaveNodeSelected;
-                       if (way.length==1 && way.getNode(0).parentWays.length==1) {
+                       if (way.length==1) {
                                // drawing new way, so keep track of click in case creating a POI
                                lastClick=way.getNode(0);
                                lastClickTime=new Date();
@@ -61,6 +61,9 @@ package net.systemeD.potlatch2.controller {
                                                                controller.map.coord2lon(event.localX));
                             MainUndoStack.getGlobalStack().addAction(newPoiAction);
                             return new SelectedPOINode(newPoiAction.getNode());
+                        } else if (Way(firstSelected).length==1) {
+                            // It's not a poi, but they've double-clicked or clicked-twice the first node - do nothing
+                            return this;
                                                } else {
                                                        // double-click at end of way
                                                        return stopDrawing();
index 7dee3cf1da3c6d641c46c14bfc1024b4cf1e56c4..d4bc6ece5dd23c6850de70b77f0fe272fdf9deef 100644 (file)
@@ -17,7 +17,6 @@ package net.systemeD.potlatch2.utils {
                private var top:Number=0;
                private var bottom:Number=0;
                private var page:uint=0;
-               private var _layer:VectorLayer;
 
                private var map:Map;
                private var apiBaseURL:String;
@@ -75,14 +74,13 @@ package net.systemeD.potlatch2.utils {
                        layer.paint.updateEntityUIs(layer.getObjectsByBbox(left,right,top,bottom), false, false);
                }
 
-               
                private function get layer():VectorLayer {
-                       if (!_layer) {
-                               var n:String='GPS tracks';
-                               _layer=new VectorLayer(n,map,STYLESHEET);
-                               map.addVectorLayer(_layer);
+                       var vl:VectorLayer=map.findVectorLayer('GPS tracks');
+                       if (!vl) {
+                               vl=new VectorLayer('GPS tracks',map,STYLESHEET);
+                               map.addVectorLayer(vl);
                        }
-                       return _layer;
+                       return vl;
                }
                
                private function greatCircle(lat1:Number,lon1:Number,lat2:Number,lon2:Number):Number {
index 74e434d98372e819d08656624e597be32771c630..fbf700e56f28d06f559188ed520809e240d8f6ba 100644 (file)
         <mx:PopUpButton id="styleButton" label="Map Style" openAlways="true" styleName="appBarButton"
             creationComplete="styleButton.popUp = new StyleSelector();"/>
                <mx:PopUpMenuButton id="gpsButton" styleName="appBarButton"
-                   itemClick="if (event.index==0) { trackLoader.load(); } else { new MyGpxDialog().init(); }">
+                   itemClick="if (event.index==0) { trackLoader.load(); } 
+                         else if (event.index==1) { new MyGpxDialog().init(); } 
+                                             else { mx.controls.Menu(gpsButton.popUp).selectedIndex=0; 
+                                                    mx.controls.Menu(gpsButton.popUp).selectedIndex=0; /* Yes, we do need to call it twice */
+                                                    theMap.removeVectorLayer(theMap.findVectorLayer('GPS tracks')); }">
                        <mx:dataProvider>
                                <mx:Array>
                                        <mx:Object label="GPS data" id="gpsData" />
                                        <mx:Object label="My tracks" id="myTracks" />
+                                       <mx:Object label="Clear" id="clearGps" />
                                </mx:Array>
                        </mx:dataProvider>
                </mx:PopUpMenuButton>
 
                        // Get the tags
             var tags:Array = event.dragSource.dataForFormat('tags') as Array;
-            var mapLoc:Point = Globals.vars.root.globalToLocal(new Point(event.stageX, event.stageY));
+
+            // If you dnd quick enough, this exposes a flex bug and event.stageX/Y become negative.
+            // Take the mouse positions from a displayObject's stage for consistent results.
+            var mapLoc:Point = Globals.vars.root.globalToLocal(new Point(event.target.stage.mouseX, event.target.stage.mouseY));
             var lat:Number = Globals.vars.root.coord2lat(mapLoc.y);
             var lon:Number = Globals.vars.root.coord2lon(mapLoc.x);
             
diff --git a/resources/features/pois/amenity_vendingmachine.png b/resources/features/pois/amenity_vendingmachine.png
deleted file mode 100644 (file)
index 58f0333..0000000
Binary files a/resources/features/pois/amenity_vendingmachine.png and /dev/null differ
diff --git a/resources/features/pois/barrier_generic.24.png b/resources/features/pois/barrier_generic.24.png
deleted file mode 100644 (file)
index a57de17..0000000
Binary files a/resources/features/pois/barrier_generic.24.png and /dev/null differ
diff --git a/resources/features/pois/boat-launch-24.png b/resources/features/pois/boat-launch-24.png
deleted file mode 100644 (file)
index 62312b9..0000000
Binary files a/resources/features/pois/boat-launch-24.png and /dev/null differ
diff --git a/resources/features/pois/power_substation.n.24.png b/resources/features/pois/power_substation.n.24.png
new file mode 100644 (file)
index 0000000..3cf3bff
Binary files /dev/null and b/resources/features/pois/power_substation.n.24.png differ
diff --git a/resources/features/pois/power_tower_high2.n.24.png b/resources/features/pois/power_tower_high2.n.24.png
new file mode 100644 (file)
index 0000000..98822fa
Binary files /dev/null and b/resources/features/pois/power_tower_high2.n.24.png differ
diff --git a/resources/features/pois/power_tower_low.n.24.png b/resources/features/pois/power_tower_low.n.24.png
new file mode 100644 (file)
index 0000000..de3d6db
Binary files /dev/null and b/resources/features/pois/power_tower_low.n.24.png differ
diff --git a/resources/features/pois/power_transformer.n.24.png b/resources/features/pois/power_transformer.n.24.png
new file mode 100644 (file)
index 0000000..87a43eb
Binary files /dev/null and b/resources/features/pois/power_transformer.n.24.png differ
diff --git a/resources/features/pois/shopping_kiosk.n.24.png b/resources/features/pois/shopping_kiosk.n.24.png
new file mode 100644 (file)
index 0000000..de4ab5a
Binary files /dev/null and b/resources/features/pois/shopping_kiosk.n.24.png differ
diff --git a/resources/features/pois/shopping_marketplace.n.24.png b/resources/features/pois/shopping_marketplace.n.24.png
new file mode 100644 (file)
index 0000000..4fba55a
Binary files /dev/null and b/resources/features/pois/shopping_marketplace.n.24.png differ
diff --git a/resources/features/pois/shopping_toy.n.24.png b/resources/features/pois/shopping_toy.n.24.png
deleted file mode 100644 (file)
index 08d7db0..0000000
Binary files a/resources/features/pois/shopping_toy.n.24.png and /dev/null differ
diff --git a/resources/features/pois/shopping_toys.n.24.png b/resources/features/pois/shopping_toys.n.24.png
new file mode 100644 (file)
index 0000000..6350002
Binary files /dev/null and b/resources/features/pois/shopping_toys.n.24.png differ
diff --git a/resources/features/pois/shopping_vending_machine.n.24.png b/resources/features/pois/shopping_vending_machine.n.24.png
new file mode 100644 (file)
index 0000000..1a18e63
Binary files /dev/null and b/resources/features/pois/shopping_vending_machine.n.24.png differ
index 9e50b0029d222223e16e0acb867dde5e53a4842f..f26d78de43b5de300dce4344afe7051b2bcc0141 100644 (file)
Binary files a/resources/features/pois/sport_shooting.n.24.png and b/resources/features/pois/sport_shooting.n.24.png differ
diff --git a/resources/features/pois/sport_stadium.n.24.png b/resources/features/pois/sport_stadium.n.24.png
new file mode 100644 (file)
index 0000000..f1349e4
Binary files /dev/null and b/resources/features/pois/sport_stadium.n.24.png differ
diff --git a/resources/features/pois/transport_mini_roundabout.n.24.png b/resources/features/pois/transport_mini_roundabout.n.24.png
deleted file mode 100644 (file)
index f52dc06..0000000
Binary files a/resources/features/pois/transport_mini_roundabout.n.24.png and /dev/null differ
diff --git a/resources/features/pois/transport_miniroundabout_anticlockwise.n.24.png b/resources/features/pois/transport_miniroundabout_anticlockwise.n.24.png
new file mode 100644 (file)
index 0000000..41b1de3
Binary files /dev/null and b/resources/features/pois/transport_miniroundabout_anticlockwise.n.24.png differ
index f7d07a678f1961f22a268a8d1cc01998e682fd62..5a34dcbc7ce267ccc8be64d220fa72fc3832c11e 100644 (file)
Binary files a/resources/features/pois/transport_slipway.n.24.png and b/resources/features/pois/transport_slipway.n.24.png differ
diff --git a/resources/features/pois/transport_speedbump.n.24.png b/resources/features/pois/transport_speedbump.n.24.png
new file mode 100644 (file)
index 0000000..a4f5efd
Binary files /dev/null and b/resources/features/pois/transport_speedbump.n.24.png differ
diff --git a/resources/features/pois/water_generic.24.png b/resources/features/pois/water_generic.24.png
deleted file mode 100644 (file)
index c04dd77..0000000
Binary files a/resources/features/pois/water_generic.24.png and /dev/null differ
diff --git a/resources/icons/bollard.png b/resources/icons/bollard.png
deleted file mode 100644 (file)
index 7714a3f..0000000
Binary files a/resources/icons/bollard.png and /dev/null differ
diff --git a/resources/icons/power_blank.png b/resources/icons/power_blank.png
deleted file mode 100644 (file)
index 32ee9af..0000000
Binary files a/resources/icons/power_blank.png and /dev/null differ
diff --git a/resources/icons/power_pole_24.png b/resources/icons/power_pole_24.png
deleted file mode 100644 (file)
index 9259040..0000000
Binary files a/resources/icons/power_pole_24.png and /dev/null differ
diff --git a/resources/icons/power_tower_24.png b/resources/icons/power_tower_24.png
deleted file mode 100644 (file)
index 0aa2720..0000000
Binary files a/resources/icons/power_tower_24.png and /dev/null differ
diff --git a/resources/icons/tourist_blank.png b/resources/icons/tourist_blank.png
deleted file mode 100644 (file)
index 35d4888..0000000
Binary files a/resources/icons/tourist_blank.png and /dev/null differ
diff --git a/resources/icons/transport_airport_48.png b/resources/icons/transport_airport_48.png
deleted file mode 100644 (file)
index fc38eab..0000000
Binary files a/resources/icons/transport_airport_48.png and /dev/null differ
diff --git a/resources/icons/transport_blank.png b/resources/icons/transport_blank.png
deleted file mode 100644 (file)
index 6fa7955..0000000
Binary files a/resources/icons/transport_blank.png and /dev/null differ
diff --git a/resources/icons/transport_helipad_48.png b/resources/icons/transport_helipad_48.png
deleted file mode 100644 (file)
index 362bc9a..0000000
Binary files a/resources/icons/transport_helipad_48.png and /dev/null differ
index b246a52f4926fbd98c2983dacd1debf5641d1aea..0a0de6771159e6f75da8e553b981bf39244693dc 100644 (file)
@@ -46,7 +46,7 @@
        </set>
        <set minlat="49.8" minlon="-9" maxlat="61.1" maxlon="1.9">
                <name>OS 7th Series historic</name>
-               <url>http://ooc.openstreetmap.org/os7/$z/$x/$y.png</url>
+               <url>http://ooc.openstreetmap.org/os7/$z/$x/$y.jpg</url>
                <sourcetag>OS7</sourcetag>
        </set>
        <set minlat="49.8" minlon="-5.8" maxlat="55.8" maxlon="1.9">
index 1c54acf28d65af9e5dec5dd1ebfd1a895d060e91..93d7209fc9db1eae5b4dbca2b42af5e5293d74cb 100644 (file)
@@ -90,8 +90,13 @@ Quick documentation:
     <input type="freetext" category="Misc" presence="onTagMatch" name="Source" key="source" description="The primary source of information for this object (GPS, survey, Yahoo, ...)" priority="lowest"/>
   </inputSet>
 
+  <inputSet id="designation">
+    <input type="freetext" category="Misc" presence="onTagMatch" description="Official designation or classification" name="Designation" key="designation"/>
+  </inputSet>
+
   <inputSet id="common">
     <inputSet ref="source"/>
+    <inputSet ref="designation"/>
   </inputSet>
 
   <inputSet id="names">
@@ -445,11 +450,11 @@ Quick documentation:
     <input type="choice"
            name="Bicycles permitted" category="Cycle" description="Are bicyles allowed to use this road (regardless of physical suitability)?"
            key="bicycle">
-      <choice value="no" text="Prohibited" desciption="Cycling is not allowed. Pushing your bicycle is not allowed either."/>
       <choice value="yes" text="Allowed"/>
+      <choice value="no" text="Prohibited" desciption="Cycling is not allowed. Pushing your bicycle is not allowed either."/>
+      <choice value="private" text="Private"/>
       <choice value="dismount" text="Cyclists dismount" description="Signage states that cyclists should dismount and push their bike for the selected path or road."/>
       <choice value="designated" text="Designated"/>
-      <choice value="private" text="Private"/>
       <help>http://wiki.openstreetmap.org/wiki/Key:access</help>
     </input>
   </inputSet>
@@ -512,37 +517,37 @@ Quick documentation:
   <!-- all the description fields are identical at the moment for ease of maintenance, should be tailored in future. -->
   <inputSet id="boatPermissions">
     <input type="choice" name="Boat permission" category="Permission" key="boat" description="Are boats allowed to use this waterway?">
-      <choice value="designated" text="Designated" description="Permitted, according to signs or specific local laws."/>
       <choice value="yes" text="Allowed" description="General right of way."/>
+      <choice value="no" text="Prohibited" description="No access to the public."/>
       <choice value="permissive" text="Permissive" description="Access permitted through private land."/>
       <choice value="private" text="Private" description="No access to the public, except individual exceptions."/>
-      <choice value="no" text="Prohibited" description="No access to the public."/>
+      <choice value="designated" text="Designated" description="Permitted, according to signs or specific local laws."/>
     </input>
   </inputSet>
 
   <inputSet id="permissions">
     <input type="choice" name="General access" category="Permission" key="access" description="Is there a general right of access, regardless of mode of transport?">
-      <choice value="designated" text="Designated" description="Permitted, according to signs or specific local laws."/>
       <choice value="yes" text="Allowed" description="General right of way."/>
+      <choice value="no" text="Prohibited" description="No access to the public."/>
       <choice value="permissive" text="Permissive" description="Access permitted through private land."/>
       <choice value="private" text="Private" description="No access to the public, except individual exceptions."/>
-      <choice value="no" text="Prohibited" description="No access to the public."/>
+      <choice value="designated" text="Designated" description="Permitted, according to signs or specific local laws."/>
     </input>
 
     <input type="choice" name="Motor vehicles" category="Permission" key="motor_vehicle" description="Are cars and other private vehicles allowed?">
-      <choice value="designated" text="Designated" description="Permitted, according to signs or specific local laws."/>
       <choice value="yes" text="Allowed" description="General right of way."/>
+      <choice value="no" text="Prohibited" description="No access to the public."/>
       <choice value="permissive" text="Permissive" description="Access permitted through private land."/>
       <choice value="private" text="Private" description="No access to the public, except individual exceptions."/>
-      <choice value="no" text="Prohibited" description="No access to the public."/>
+      <choice value="designated" text="Designated" description="Permitted, according to signs or specific local laws."/>
     </input>
 
     <input type="choice" name="Horses" category="Permission" key="horse" description="Are cars and other private vehicles allowed?">
-      <choice value="designated" text="Designated" description="Permitted, according to signs or specific local laws."/>
       <choice value="yes" text="Allowed" description="General right of way."/>
+      <choice value="no" text="Prohibited" description="No access to the public."/>
       <choice value="permissive" text="Permissive" description="Access permitted through private land."/>
       <choice value="private" text="Private" description="No access to the public, except individual exceptions."/>
-      <choice value="no" text="Prohibited" description="No access to the public."/>
+      <choice value="designated" text="Designated" description="Permitted, according to signs or specific local laws."/>
     </input>
 
   </inputSet>
index 561c0f5d0ae8cf5f02a9b9a3216342a2194ffd2b..1ca1ddd12630dc166ec677906ea62794df4827b8 100644 (file)
   <feature name="Vending machine">\r
     <category>amenity</category>\r
     <category>foodanddrink</category>\r
-    <icon image="features/pois/amenity_vendingmachine.png">A vending machine.</icon>\r
+    <icon image="features/pois/shopping_vending_machine.n.24.png">A vending machine.</icon>\r
 \r
     <point/>\r
     <tag k="amenity" v="vending_machine"/>\r
index 69812a35428cd4a6c35a4681d31f285b626f3873..dc6dc3c255b7d7680c2eabb6e25729c3a8d57c81 100644 (file)
 \r
   <feature name="Stadium">\r
     <category>buildings</category>\r
-    <icon image="icons/tourist_blank.png">\r
+    <icon image="features/pois/sport_stadium.n.24.png">\r
       <b>${name} ${addr:housename}</b><br/>\r
       ${addr:housenumber} ${addr:street} ${addr:postcode}\r
     </icon>\r
index 7ed3548f0cf05cb0d84c625350870b73089dd3f0..e297d2e65ff37f0fb5a62e75bde7ea27cf32e48b 100644 (file)
@@ -61,7 +61,7 @@
     <category>shopping</category>\r
     <point />\r
     <area/>\r
-    <icon image="features/pois/shopping_greengrocer.n.24.png">\r
+    <icon image="features/pois/shopping_marketplace.n.24.png">\r
       <b>${name}</b>\r
     </icon>\r
     <tag k="amenity" v="marketplace"/>\r
index 7d7ce1c8b4eec2cf38945a58ddc3fa4c7a7bfbaa..2fafc86f8839e912162bc3bf1f0fce058c25e43f 100644 (file)
@@ -21,7 +21,7 @@
 \r
   <feature name="High-voltage pylon">\r
     <category>power</category>\r
-    <icon image="icons/power_tower_24.png"/>\r
+    <icon image="features/pois/power_tower_high2.n.24.png"/>\r
     <point/>\r
     <tag k="power" v="tower"/>\r
     <inputSet ref="common"/>\r
@@ -30,7 +30,7 @@
 \r
   <feature name="Power pole">\r
     <category>power</category>\r
-    <icon image="icons/power_pole_24.png"/>\r
+    <icon image="features/pois/power_tower_low.n.24.png"/>\r
     <point/>\r
     <tag k="power" v="pole"/>\r
     <inputSet ref="common"/>\r
@@ -63,7 +63,7 @@
 \r
   <feature name="Substation">\r
     <category>power</category>\r
-    <icon image="icons/power_blank.png"/>"\r
+    <icon image="features/pois/power_substation.n.24.png"/>"\r
     <area/>\r
     <point/>\r
     <tag k="power" v="station"/>\r
@@ -73,7 +73,7 @@
 \r
   <feature name="Transformer">\r
     <category>power</category>\r
-    <icon image="icons/power_blank.png"/>\r
+    <icon image="features/pois/power_transformer.n.24.png"/>\r
     <area/>\r
     <point/>\r
     <tag k="power" v="sub_station"/>\r
index a9da30379d0c5eb84a20b7ab533906aabdbc4e31..8fe62ba82a8027e67761d7cce86e918627f259bf 100644 (file)
 
   <feature name="Mini Roundabout">
     <category>transport</category>
-    <icon image="features/pois/transport_mini_roundabout.n.24.png"/>
+    <icon image="features/pois/transport_miniroundabout_anticlockwise.n.24.png"/>
     <help>http://wiki.openstreetmap.org/wiki/Tag:highway%3Dmini_roundabout</help>
     <point/>
     <tag k="highway" v="mini_roundabout"/>
 
   <feature name="Traffic calming">
     <category>transport</category>
-    <icon image="features/pois/transport_traffic_calming.n.24.png"/>
+    <icon image="features/pois/transport_speedbump.n.24.png"/>
 <!--    <help>http://wiki.openstreetmap.org/wiki/Key:traffic_calming</help>-->
     <point/>
     <tag k="traffic_calming" v="yes" vmatch="*"/>
index f3e6758f45870b7b18c1066dc37d9a4ca96fcd82..865138bef670d485c9a635773845f11fd188ecdb 100644 (file)
     <inputSet ref="simpleName"/>\r
     <inputSet ref="web"/>\r
     <inputSet ref="buildingAddress"/>\r
-    <icon image="features/pois/shopping_jewelry.n.24.png"/>\r
+    <icon image="features/pois/shopping_kiosk.n.24.png"/>\r
     <tag k="shop" v="kiosk"/>\r
     <inputSet ref="common"/>\r
   </feature>\r
 \r
   <feature name="Toy shop">\r
     <category>shopping</category>\r
-    <icon image="features/pois/shopping_toy.n.24.png" />\r
+    <icon image="features/pois/shopping_toys.n.24.png" />\r
     <point/>\r
     <area/>\r
     <inputSet ref="simpleName"/>\r
index 25d7fe1cadbaa20f76cde6199af447dd19d95cbc..194d9101d63323c2b1efbc8e9582ac7f62ca27c4 100644 (file)
@@ -103,7 +103,6 @@ node[amenity=school] { icon-image: icons/school.png; }
 node[amenity=taxi] { icon-image: icons/taxi.png; }
 node[amenity=telephone] { icon-image: icons/telephone.png; }
 way node[barrier=gate], way node[highway=gate] { icon-image: icons/gate.png; }
-way node[barrier=bollard] { icon-image: icons/bollard.png; }
 node[barrier=cattle_grid] { icon-image: icons/cattle_grid.png; }*/
        
 /* We can stack styles at different z-index (depth) */
diff --git a/resources_src/amenity_vendingmachine.svg b/resources_src/amenity_vendingmachine.svg
deleted file mode 100644 (file)
index 07bad2a..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
-   id="svg5535"
-   version="1.1"
-   inkscape:version="0.48+devel r9797"
-   sodipodi:docname="amenity_vendingmachine.svg">
-  <defs
-     id="defs5537" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.98994949"
-     inkscape:cx="260.79121"
-     inkscape:cy="382.9676"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:window-width="1680"
-     inkscape:window-height="990"
-     inkscape:window-x="-4"
-     inkscape:window-y="-4"
-     inkscape:window-maximized="1">
-    <inkscape:grid
-       type="xygrid"
-       id="grid5569" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata5540">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <rect
-       style="fill:#784421;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       id="rect3069"
-       width="360"
-       height="360"
-       x="195"
-       y="352.36218"
-       ry="39.359997"
-       inkscape:export-filename="I:\OSM\pot2b\potlatch2\resources\features\pois\amenity_vendingmachine.png"
-       inkscape:export-xdpi="5.9039998"
-       inkscape:export-ydpi="5.9039998" />
-    <path
-       style="fill:#ffffff;stroke:#ffffff;stroke-width:20;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:0.50802141000000001;stroke-miterlimit:4;stroke-dasharray:none"
-       d="m 280,412.36218 0,260 140,0 0,-260 z"
-       id="path5571"
-       inkscape:connector-curvature="0"
-       inkscape:export-filename="I:\OSM\pot2b\potlatch2\resources\features\pois\amenity_vendingmachine.png"
-       inkscape:export-xdpi="5.9039998"
-       inkscape:export-ydpi="5.9039998" />
-    <path
-       sodipodi:type="arc"
-       style="fill:#ffffff;fill-opacity:0.79144383;fill-rule:evenodd;stroke:#ffffff;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="path6091"
-       sodipodi:cx="640"
-       sodipodi:cy="412.36218"
-       sodipodi:rx="60"
-       sodipodi:ry="60"
-       d="m 611.04566,464.91355 a 60,60 0 1 1 0.2425,0.13288"
-       sodipodi:start="2.0743857"
-       sodipodi:end="8.3529623"
-       sodipodi:open="true"
-       transform="matrix(0.49536774,0,0,0.64460671,160.82179,217.67579)"
-       inkscape:export-filename="I:\OSM\pot2b\potlatch2\resources\features\pois\amenity_vendingmachine.png"
-       inkscape:export-xdpi="5.9039998"
-       inkscape:export-ydpi="5.9039998" />
-    <rect
-       style="fill:#ffffff;fill-opacity:0.79144383;fill-rule:evenodd;stroke:#ffffff;stroke-width:15;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect6095"
-       width="140"
-       height="100"
-       x="280"
-       y="412.36218"
-       ry="40"
-       rx="0"
-       inkscape:export-filename="I:\OSM\pot2b\potlatch2\resources\features\pois\amenity_vendingmachine.png"
-       inkscape:export-xdpi="5.9039998"
-       inkscape:export-ydpi="5.9039998" />
-    <path
-       style="fill:#ffffff;fill-opacity:0.79144383;fill-rule:evenodd;stroke:#ffffff;stroke-width:3.89500713;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="path6099"
-       d="m 483.13867,471.14976 c -2.49614,-0.0739 -4.99355,-0.079 -7.49033,-0.0683 -2.11347,0.0102 -4.22191,-0.0874 -6.31756,0.26433 -2.79416,1.16402 -8.50384,5.42194 2.88049,-2.36288 -1.11015,0.8867 -2.15929,1.95167 -2.89006,3.29849 -0.58462,1.27229 -0.69811,2.67202 -0.59413,4.09218 0.2467,1.58019 0.735,3.08193 1.27691,4.5458 0.64332,2.01761 1.57436,3.81699 2.82848,5.36047 2.04816,2.17781 4.45786,3.79033 6.86661,5.31788 2.34296,1.65139 4.81925,2.92372 7.45488,3.71121 1.18122,0.25052 0.60248,0.14856 1.73549,0.31163 0,0 -6.10265,5.15146 -6.10265,5.15146 l 0,0 c -1.14854,-0.23595 -0.56138,-0.0962 -1.7604,-0.42562 -2.61934,-0.94721 -5.09182,-2.31385 -7.46886,-3.93572 -2.46924,-1.59145 -4.95767,-3.24048 -7.05285,-5.49914 -1.32224,-1.62522 -2.32,-3.47376 -3.02286,-5.59045 -0.57392,-1.54584 -1.10331,-3.1255 -1.41088,-4.78181 -0.15088,-1.56516 -0.12524,-3.11577 0.40021,-4.5923 0.58391,-1.43748 0.80265,-1.51501 1.71253,-2.57359 0.99847,-1.16162 -0.0577,-0.1792 1.03868,-1.12392 2.07212,-1.44872 6.75277,-5.53127 10.11503,-6.26154 2.07983,-0.2373 4.17205,-0.024 6.25773,-0.0824 2.5491,0.011 5.09875,0.003 7.64726,-0.0683 0,0 -6.10372,5.3126 -6.10372,5.3126 z"
-       inkscape:connector-curvature="0"
-       inkscape:export-filename="I:\OSM\pot2b\potlatch2\resources\features\pois\amenity_vendingmachine.png"
-       inkscape:export-xdpi="5.9039998"
-       inkscape:export-ydpi="5.9039998" />
-  </g>
-</svg>
diff --git a/resources_src/sport_shooting.svg b/resources_src/sport_shooting.svg
deleted file mode 100644 (file)
index e51c16f..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   version="1.0"
-   width="580"
-   height="580"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.48.0 r9654"
-   sodipodi:docname="sport_archery.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <metadata
-     id="metadata2975">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <cc:license
-           rdf:resource="http://web.resource.org/cc/PublicDomain" />
-        <dc:language>en</dc:language>
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <sodipodi:namedview
-     inkscape:window-height="1021"
-     inkscape:window-width="1680"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0.0"
-     guidetolerance="10.0"
-     gridtolerance="10.0"
-     objecttolerance="10.0"
-     borderopacity="1.0"
-     bordercolor="#666666"
-     pagecolor="#ffffff"
-     id="base"
-     inkscape:zoom="1.3034483"
-     inkscape:cx="301.5186"
-     inkscape:cy="281.19503"
-     inkscape:window-x="1280"
-     inkscape:window-y="0"
-     inkscape:current-layer="svg2"
-     showgrid="false"
-     inkscape:window-maximized="1" />
-  <defs
-     id="defs4">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 290 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="580 : 290 : 1"
-       inkscape:persp3d-origin="290 : 193.33333 : 1"
-       id="perspective2441" />
-    <inkscape:perspective
-       id="perspective3452"
-       inkscape:persp3d-origin="30 : 20 : 1"
-       inkscape:vp_z="60 : 30 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 30 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <symbol
-       viewBox="244.5 110 489 219.9"
-       id="symbol-university">
-      <path
-         id="path4460"
-         d="M79,43l57,119c0,0,21-96,104-96s124,106,124,106l43-133l82-17L0,17L79,43z" />
-      <path
-         id="path4462"
-         d="M94,176l-21,39"
-         stroke-width="20"
-         stroke="#000000"
-         fill="none" />
-      <path
-         id="path4464"
-         d="M300,19c0,10.5-22.6,19-50.5,19S199,29.5,199,19s22.6-19,50.5-19S300,8.5,300,19z" />
-      <path
-         id="path4466"
-         d="M112,216l-16-38L64,88c0,0-9-8-4-35s16-24,16-24"
-         stroke-width="20"
-         stroke="#000000"
-         ill="none" />
-    </symbol>
-    <inkscape:perspective
-       id="perspective4471"
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <inkscape:perspective
-       id="perspective4668"
-       inkscape:persp3d-origin="6 : 4 : 1"
-       inkscape:vp_z="12 : 6 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 6 : 1"
-       sodipodi:type="inkscape:persp3d" />
-  </defs>
-  <g
-     id="g1327">
-    <path
-       d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 L 1.704,516.927 C 1.704,557.771 22.599,579.156 63.896,579.156 L 515.92,579.156 C 557.227,579.156 578.149,558.841 578.149,516.927 L 578.149,66.804 C 578.149,24.203 557.227,1.768 514.628,1.768 C 514.624,1.768 66.133,1.625 66.275,1.768 z "
-       style="fill:#111;stroke:#eee;stroke-width:3.40799999"
-       id="path1329" />
-  </g>
-  <g
-     id="layer3"
-     inkscape:label="Layout"
-     style="display:none;stroke:#757575;stroke-opacity:1"
-     transform="matrix(48.14969,0,0,48.14969,-536.27327,-33.306752)">
-    <rect
-       style="fill:none;stroke:#757575;stroke-width:0.10000000000000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
-       id="rect4134"
-       width="10"
-       height="10"
-       x="1"
-       y="1" />
-    <rect
-       style="fill:none;stroke:#757575;stroke-width:0.10000000000000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
-       id="rect4136"
-       width="8"
-       height="8"
-       x="2"
-       y="2" />
-  </g>
-  <path
-     style="font-size:144px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;font-family:NPSPICT3;-inkscape-font-specification:NPSPICT3"
-     d="m 208.85418,132.62505 c 12.02355,3.4e-4 22.28808,-4.24912 30.79365,-12.74843 8.50497,-8.49858 12.75759,-18.96878 12.75794,-31.410652 -3.5e-4,-12.036085 -4.25297,-22.303803 -12.75794,-30.803159 -8.50557,-8.498492 -18.7701,-12.747997 -30.79365,-12.748386 -12.02407,3.89e-4 -22.39301,4.249894 -31.1069,12.748386 -8.71433,8.499356 -13.07136,18.767074 -13.07115,30.803159 -2.1e-4,12.441872 4.35682,22.912072 13.07115,31.410652 8.71389,8.49931 19.08283,12.74877 31.1069,12.74843 z m 29.23689,27.37638 c -1.65833,9.12573 -7.4614,13.68844 -17.40925,13.68814 l -103.90484,0 c -12.44166,3e-4 -18.662402,-5.3914 -18.662232,-16.17521 -1.7e-4,-4.56872 1.45537,-8.30244 4.366542,-11.20112 -7.885252,2.89868 -11.827762,8.0816 -11.827632,15.5487 -1.3e-4,10.78376 6.42944,16.17551 19.288732,16.1752 l 108.85995,0 c 13.69419,3.1e-4 20.12377,-6.0116 19.28873,-18.03571 z m -121.31409,13.68814 103.90484,0 c 9.94785,3e-4 15.75092,-4.56241 17.40925,-13.68814 -0.41797,-10.78316 -6.84755,-16.17491 -19.28873,-16.17521 l -108.85995,0 c -0.4178,3e-4 -2.90486,0.82934 -7.4611,2.48702 -2.911172,2.89868 -4.366712,6.6324 -4.366542,11.20112 -1.7e-4,10.78381 6.220572,16.17551 18.662232,16.17521 z m 108.87891,166.09968 0,-1.86055 c -2.5e-4,1.3e-4 -2.5e-4,0.20266 0,0.60754 z m -1.25301,12.43518 0,-1.86056 c -2.6e-4,0.41781 -2.6e-4,0.62664 0,0.62651 z m 19.91528,-206.5377 c 0.40471,0.41802 0.81603,0.83565 1.23401,1.25301 1.65772,3.31636 2.90438,7.05008 3.74003,11.20113 0.41737,4.13904 -0.62046,8.90428 -3.11353,14.29569 -3e-4,0.83564 -0.41797,1.87351 -1.25301,3.11357 -5.79702,8.70806 -14.50482,13.06194 -26.12332,13.06163 l -59.72679,0 0,160.4991 0,0 -34.21093,170.46622 c -1.24057,6.63202 0.006,12.74834 3.74003,18.34897 3.73351,5.6005 8.91643,9.02097 15.5487,10.26141 6.63189,1.24027 12.74822,-0.003 18.34898,-3.73057 5.60037,-3.72746 9.22963,-8.91352 10.88791,-15.5582 l 34.83743,-176.67426 16.17521,0 0,0 34.83748,176.67426 c 1.24,6.64468 4.66048,11.83074 10.26136,15.5582 5.60024,3.72733 11.9254,4.97084 18.97552,3.73057 6.22671,-1.24044 11.30836,-4.66091 15.24491,-10.26141 3.93586,-5.60063 5.07496,-11.71695 3.41732,-18.34897 l -34.21097,-171.70022 0,-143.71635 22.45101,-29.0605 23.21983,-1.54239 18.47168,-24.02565 155.7997,-8.68174 -0.7082,-15.5865 -238.53891,5.12778 c 0,0 -17.22065,6.29771 -23.88214,9.92447 z m -18.66227,194.10252 0,-1.25301 c -2.5e-4,1.3e-4 -2.5e-4,-0.2024 0,-0.60754 z"
-     id="flowRoot2391"
-     inkscape:connector-curvature="0"
-     sodipodi:nodetypes="cscccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" />
-</svg>
diff --git a/resources_src/transport_mini_roundabout.svg b/resources_src/transport_mini_roundabout.svg
deleted file mode 100644 (file)
index 177097c..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   version="1.0"
-   width="580"
-   height="580"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.48.0 r9654"
-   sodipodi:docname="transport_mini_roundabout.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <metadata
-     id="metadata10">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <cc:license
-           rdf:resource="http://web.resource.org/cc/PublicDomain" />
-        <dc:language>en</dc:language>
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <sodipodi:namedview
-     inkscape:window-height="1021"
-     inkscape:window-width="1680"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0.0"
-     guidetolerance="10.0"
-     gridtolerance="10.0"
-     objecttolerance="10.0"
-     borderopacity="1.0"
-     bordercolor="#666666"
-     pagecolor="#ffffff"
-     id="base"
-     showgrid="false"
-     inkscape:zoom="0.25"
-     inkscape:cx="-351.1477"
-     inkscape:cy="-289.42787"
-     inkscape:window-x="1280"
-     inkscape:window-y="0"
-     inkscape:current-layer="svg2"
-     inkscape:window-maximized="1">
-    <inkscape:grid
-       type="xygrid"
-       id="grid3779" />
-  </sodipodi:namedview>
-  <defs
-     id="defs4">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 290 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="580 : 290 : 1"
-       inkscape:persp3d-origin="290 : 193.33333 : 1"
-       id="perspective12" />
-    <style
-       type="text/css"
-       id="style6">
-   
-    .fil0 {fill:#EF7900}
-   
-  </style>
-    <inkscape:perspective
-       id="perspective6807"
-       inkscape:persp3d-origin="29.116032 : 19.410688 : 1"
-       inkscape:vp_z="58.232063 : 29.116032 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 29.116032 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <inkscape:perspective
-       id="perspective6954"
-       inkscape:persp3d-origin="290 : 193.33333 : 1"
-       inkscape:vp_z="580 : 290 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 290 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <marker
-       viewBox="0 0 10 10"
-       refY="5"
-       refX="10"
-       orient="auto"
-       markerWidth="4"
-       markerUnits="strokeWidth"
-       markerHeight="3"
-       id="ArrowStart">
-      <path
-         id="path2295"
-         d="M 10 0 L 0 5 L 10 10 z" />
-    </marker>
-    <marker
-       viewBox="0 0 10 10"
-       refY="5"
-       refX="0"
-       orient="auto"
-       markerWidth="4"
-       markerUnits="strokeWidth"
-       markerHeight="3"
-       id="ArrowEnd">
-      <path
-         id="path2292"
-         d="M 0 0 L 10 5 L 0 10 z" />
-    </marker>
-    <inkscape:perspective
-       id="perspective7597"
-       inkscape:persp3d-origin="178.5405 : 158.483 : 1"
-       inkscape:vp_z="357.08099 : 237.7245 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 237.7245 : 1"
-       sodipodi:type="inkscape:persp3d" />
-  </defs>
-  <g
-     id="g1327">
-    <path
-       d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 L 1.704,516.927 C 1.704,557.771 22.598,579.156 63.896,579.156 L 515.92,579.156 C 557.227,579.156 578.149,558.84 578.149,516.927 L 578.149,66.804 C 578.149,24.203 557.227,1.768 514.627,1.768 C 514.624,1.768 66.133,1.625 66.275,1.768 z"
-       style="fill:#111111;stroke:#eeeeee;stroke-width:3.40799999"
-       id="path1329" />
-  </g>
-  <g
-     id="g2319"
-     transform="translate(879.29125,36.805119)">
-    <path
-       id="path2323"
-       style="fill:#ffffff;stroke:none"
-       d="" />
-  </g>
-  <g
-     id="g2325"
-     transform="translate(879.29125,36.805119)">
-    <path
-       id="path2329"
-       style="fill:#ffffff;stroke:none"
-       d="" />
-  </g>
-  <path
-     inkscape:connector-curvature="0"
-     d="m 110.97935,343.63334 72.14862,-73.37816 -0.33141,-42.8298 -53.10716,51.9294 C 127.92789,196.28923 199.45316,126.52371 266.63225,117.55081 L 260.68052,81.609344 C 142.72643,104.95683 95.225062,197.16788 92.955492,279.05068 l -53.611969,-52.12297 -0.243959,44.53925 71.879786,72.16638 z"
-     style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-     id="path2806" />
-  <path
-     inkscape:connector-curvature="0"
-     d="m 441.92231,409.21474 -99.72534,-25.38975 -36.83777,21.85128 71.6063,19.73759 c -70.88115,43.34575 -167.17131,16.6756 -208.74876,-36.84878 l -28.05646,23.23891 c 79.56239,90.15597 183.14921,84.76823 255.03812,45.50083 l -18.04006,72.56448 38.60444,-22.2149 26.15953,-98.43966 z"
-     style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-     id="path3753" />
-  <path
-     inkscape:connector-curvature="0"
-     d="m 332.91506,90.757192 28.11428,98.991738 37.39335,20.88636 -18.88391,-71.83618 c 73.07503,39.53519 98.35723,136.19905 72.94453,199.03009 l 34.18431,12.59541 c 38.02007,-114.0734 -18.64979,-200.9514 -88.7038,-243.40583 L 469.77631,86.185749 431.18147,63.954176 332.91506,90.757192 z"
-     style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
-     id="path3755" />
-</svg>
diff --git a/resources_src/transport_slipway.svg b/resources_src/transport_slipway.svg
deleted file mode 100644 (file)
index 88e120f..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   version="1.0"
-   width="580"
-   height="580"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.48.0 r9654"
-   sodipodi:docname="transport_slipway.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <metadata
-     id="metadata2975">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <cc:license
-           rdf:resource="http://web.resource.org/cc/PublicDomain" />
-        <dc:language>en</dc:language>
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <sodipodi:namedview
-     inkscape:window-height="722"
-     inkscape:window-width="1048"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0.0"
-     guidetolerance="10.0"
-     gridtolerance="10.0"
-     objecttolerance="10.0"
-     borderopacity="1.0"
-     bordercolor="#666666"
-     pagecolor="#ffffff"
-     id="base"
-     inkscape:zoom="0.16293104"
-     inkscape:cx="302.11525"
-     inkscape:cy="217.23037"
-     inkscape:window-x="1403"
-     inkscape:window-y="100"
-     inkscape:current-layer="svg2"
-     showgrid="false"
-     inkscape:snap-global="true"
-     showguides="false"
-     inkscape:window-maximized="0">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4670" />
-  </sodipodi:namedview>
-  <defs
-     id="defs4">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 290 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="580 : 290 : 1"
-       inkscape:persp3d-origin="290 : 193.33333 : 1"
-       id="perspective2441" />
-    <inkscape:perspective
-       id="perspective3452"
-       inkscape:persp3d-origin="30 : 20 : 1"
-       inkscape:vp_z="60 : 30 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 30 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <symbol
-       viewBox="244.5 110 489 219.9"
-       id="symbol-university">
-      <path
-         id="path4460"
-         d="M79,43l57,119c0,0,21-96,104-96s124,106,124,106l43-133l82-17L0,17L79,43z" />
-      <path
-         id="path4462"
-         d="M94,176l-21,39"
-         stroke-width="20"
-         stroke="#000000"
-         fill="none" />
-      <path
-         id="path4464"
-         d="M300,19c0,10.5-22.6,19-50.5,19S199,29.5,199,19s22.6-19,50.5-19S300,8.5,300,19z" />
-      <path
-         id="path4466"
-         d="M112,216l-16-38L64,88c0,0-9-8-4-35s16-24,16-24"
-         stroke-width="20"
-         stroke="#000000"
-         ill="none" />
-    </symbol>
-    <inkscape:perspective
-       id="perspective4471"
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <inkscape:perspective
-       id="perspective4668"
-       inkscape:persp3d-origin="6 : 4 : 1"
-       inkscape:vp_z="12 : 6 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 6 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <marker
-       viewBox="0 0 10 10"
-       refY="5"
-       refX="10"
-       orient="auto"
-       markerWidth="4"
-       markerUnits="strokeWidth"
-       markerHeight="3"
-       id="ArrowStart">
-      <path
-         id="path3634"
-         d="M 10 0 L 0 5 L 10 10 z" />
-    </marker>
-    <marker
-       viewBox="0 0 10 10"
-       refY="5"
-       refX="0"
-       orient="auto"
-       markerWidth="4"
-       markerUnits="strokeWidth"
-       markerHeight="3"
-       id="ArrowEnd">
-      <path
-         id="path3631"
-         d="M 0 0 L 10 5 L 0 10 z" />
-    </marker>
-    <inkscape:perspective
-       id="perspective2510"
-       inkscape:persp3d-origin="306.082 : 204.39034 : 1"
-       inkscape:vp_z="612.164 : 306.58551 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 306.58551 : 1"
-       sodipodi:type="inkscape:persp3d" />
-  </defs>
-  <path
-     inkscape:connector-curvature="0"
-     id="path1329"
-     style="fill:#111111;stroke:#eeeeee;stroke-width:3.40799999"
-     d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.895,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.315 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.521,-65.036 -0.004,0 -448.495,-0.143 -448.353,0 z" />
-  <g
-     id="layer3"
-     inkscape:label="Layout"
-     style="display:none;stroke:#757575;stroke-opacity:1"
-     transform="matrix(48.14969,0,0,48.14969,-536.27327,-33.306752)">
-    <rect
-       style="fill:none;stroke:#757575;stroke-width:0.10000000000000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
-       id="rect4134"
-       width="10"
-       height="10"
-       x="1"
-       y="1" />
-    <rect
-       style="fill:none;stroke:#757575;stroke-width:0.10000000000000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
-       id="rect4136"
-       width="8"
-       height="8"
-       x="2"
-       y="2" />
-  </g>
-  <path
-     style="fill:#ffffff;fill-opacity:1;stroke:none"
-     d="m 48.51278,320.63371 0,194.22696 494.14877,1.12462 0.93184,-50.59538 z"
-     id="path3206"
-     inkscape:connector-curvature="0"
-     sodipodi:nodetypes="ccccc" />
-  <path
-     style="fill:#ffffff;fill-opacity:1;stroke:none"
-     d="M 87.358171,252.65428 524.36882,388.61315 514.65748,408.03584 77.646824,272.07697 z"
-     id="path3976"
-     inkscape:connector-curvature="0"
-     sodipodi:nodetypes="ccccc" />
-  <path
-     inkscape:connector-curvature="0"
-     style="fill:none;stroke:#ffffff;stroke-width:17.45149612;stroke-miterlimit:4;stroke-opacity:1"
-     d="M 343.74281,369.19134 C 343.74281,386.20651 328.63565,400 310,400 c -18.63565,0 -33.74282,-13.79349 -33.74282,-30.80866 0,-17.01517 15.10717,-30.8087 33.74282,-30.8087 18.63565,0 33.74281,13.79353 33.74281,30.8087 z"
-     id="path3978" />
-  <path
-     style="fill:#ffffff;fill-opacity:1;stroke:none"
-     d="m 139.90709,152.92648 c 0,0 -14.56738,69.87308 81.41584,102.28303 l 269.39475,89.86952 50.24178,-62.58177 -276.7702,-93.43196 32.61304,-39.66455 -22.03586,-8.81436 -37.02021,38.78313 z"
-     id="path3980"
-     inkscape:connector-curvature="0"
-     sodipodi:nodetypes="ccccccccc" />
-</svg>
diff --git a/resources_src/transport_traffic_calming.svg b/resources_src/transport_traffic_calming.svg
deleted file mode 100644 (file)
index f8b79d1..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   version="1.0"
-   width="580"
-   height="580"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.48.0 r9654"
-   sodipodi:docname="transport_traffic_calming.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <metadata
-     id="metadata10">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <cc:license
-           rdf:resource="http://web.resource.org/cc/PublicDomain" />
-        <dc:language>en</dc:language>
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <sodipodi:namedview
-     inkscape:window-height="1021"
-     inkscape:window-width="1680"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0.0"
-     guidetolerance="10.0"
-     gridtolerance="10.0"
-     objecttolerance="10.0"
-     borderopacity="1.0"
-     bordercolor="#666666"
-     pagecolor="#ffffff"
-     id="base"
-     showgrid="true"
-     inkscape:zoom="0.70710678"
-     inkscape:cx="-162.1272"
-     inkscape:cy="-25.120471"
-     inkscape:window-x="1280"
-     inkscape:window-y="0"
-     inkscape:current-layer="svg2"
-     inkscape:window-maximized="1">
-    <inkscape:grid
-       type="xygrid"
-       id="grid3779" />
-  </sodipodi:namedview>
-  <defs
-     id="defs4">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 290 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="580 : 290 : 1"
-       inkscape:persp3d-origin="290 : 193.33333 : 1"
-       id="perspective12" />
-    <style
-       type="text/css"
-       id="style6">
-   
-    .fil0 {fill:#EF7900}
-   
-  </style>
-    <inkscape:perspective
-       id="perspective6807"
-       inkscape:persp3d-origin="29.116032 : 19.410688 : 1"
-       inkscape:vp_z="58.232063 : 29.116032 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 29.116032 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <inkscape:perspective
-       id="perspective6954"
-       inkscape:persp3d-origin="290 : 193.33333 : 1"
-       inkscape:vp_z="580 : 290 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 290 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <marker
-       viewBox="0 0 10 10"
-       refY="5"
-       refX="10"
-       orient="auto"
-       markerWidth="4"
-       markerUnits="strokeWidth"
-       markerHeight="3"
-       id="ArrowStart">
-      <path
-         id="path2295"
-         d="M 10 0 L 0 5 L 10 10 z" />
-    </marker>
-    <marker
-       viewBox="0 0 10 10"
-       refY="5"
-       refX="0"
-       orient="auto"
-       markerWidth="4"
-       markerUnits="strokeWidth"
-       markerHeight="3"
-       id="ArrowEnd">
-      <path
-         id="path2292"
-         d="M 0 0 L 10 5 L 0 10 z" />
-    </marker>
-    <inkscape:perspective
-       id="perspective7597"
-       inkscape:persp3d-origin="178.5405 : 158.483 : 1"
-       inkscape:vp_z="357.08099 : 237.7245 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 237.7245 : 1"
-       sodipodi:type="inkscape:persp3d" />
-  </defs>
-  <g
-     id="g1327">
-    <path
-       d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 L 1.704,516.927 C 1.704,557.771 22.598,579.156 63.896,579.156 L 515.92,579.156 C 557.227,579.156 578.149,558.84 578.149,516.927 L 578.149,66.804 C 578.149,24.203 557.227,1.768 514.627,1.768 C 514.624,1.768 66.133,1.625 66.275,1.768 z"
-       style="fill:#111111;stroke:#eeeeee;stroke-width:3.40799999"
-       id="path1329" />
-  </g>
-  <g
-     id="g2319"
-     transform="translate(879.29125,36.805119)">
-    <path
-       id="path2323"
-       style="fill:#ffffff;stroke:none"
-       d="" />
-  </g>
-  <g
-     id="g2325"
-     transform="translate(879.29125,36.805119)">
-    <path
-       id="path2329"
-       style="fill:#ffffff;stroke:none"
-       d="" />
-  </g>
-  <path
-     style="fill:#ffffff;fill-opacity:1;stroke:none"
-     d="m 60,490 480,0 0,-30 c 0,0 -80,0 -100,-20 -40,-80 -240,-80 -280,0 -20,20 -100,20 -100,20 z"
-     id="path2997"
-     inkscape:connector-curvature="0"
-     sodipodi:nodetypes="ccccccc" />
-</svg>
diff --git a/resources_src/water_generic.svg b/resources_src/water_generic.svg
deleted file mode 100644 (file)
index fcfbc24..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.47pre4 r22446"
-   sodipodi:docname="New document 1">
-  <defs
-     id="defs4">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       id="perspective10" />
-    <inkscape:perspective
-       id="perspective3602"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <inkscape:perspective
-       id="perspective3602-1"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.7"
-     inkscape:cx="259.38208"
-     inkscape:cy="445.21264"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1680"
-     inkscape:window-height="1026"
-     inkscape:window-x="1280"
-     inkscape:window-y="0"
-     inkscape:window-maximized="1" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <rect
-       style="fill:#6fc3ff;fill-opacity:1;stroke:none"
-       id="rect3590"
-       width="274.28571"
-       height="274.28571"
-       x="152.85715"
-       y="240.93361"
-       ry="32.857143" />
-    <path
-       style="fill:none;stroke:#ffffff;stroke-width:14.30000000000000071;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
-       d="m 191.42857,353.79075 c 0,0 27.14285,-52.85714 62.85714,-51.42857 42.85714,1.42857 50.00001,55.71429 85.71429,57.14286 34.28572,0 44.28571,-54.28571 44.28571,-54.28571"
-       id="path3592"
-       sodipodi:nodetypes="cccc" />
-    <path
-       style="fill:none;stroke:#ffffff;stroke-width:14.30000019;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 196.42857,400.94783 c 0,0 27.14285,-52.85714 62.85714,-51.42857 42.85714,1.42857 50.00001,55.71429 85.71429,57.14286 34.28572,0 44.28571,-54.28571 44.28571,-54.28571"
-       id="path3592-8"
-       sodipodi:nodetypes="cccc" />
-    <path
-       style="fill:none;stroke:#ffffff;stroke-width:14.30000019;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m 200.71429,446.66212 c 0,0 27.14285,-52.85714 62.85714,-51.42857 42.85714,1.42857 50.00001,55.71429 85.71429,57.14286 34.28572,0 44.28571,-54.28571 44.28571,-54.28571"
-       id="path3592-9"
-       sodipodi:nodetypes="cccc" />
-  </g>
-</svg>
index 7b26996bb245bdf5765048f7d65d1a7b1add3244..cc4673acea2af78385255ffa9585cbc3689e7369 100644 (file)
@@ -2,6 +2,7 @@ package {
 
     import net.systemeD.halcyon.connection.NodeTest;
     import net.systemeD.halcyon.connection.actions.JoinNodeActionTest;
+    import net.systemeD.halcyon.connection.actions.AddMemberToRelationActionTest;
     import net.systemeD.potlatch2.mapfeatures.FeatureTest;
 
     [Suite]
@@ -10,6 +11,7 @@ package {
 
         public var nodeTest:NodeTest;
         public var joinNodeActionTest:JoinNodeActionTest;
+        public var addMemberToRelationActionTest:AddMemberToRelationActionTest;
 
         //Potlatch2 tests. If anyone wants to separate these out, and / or rename the suite, feel free
         public var featureTest:FeatureTest;
diff --git a/tests/src/net/systemeD/halcyon/connection/actions/AddMemberToRelationActionTest.as b/tests/src/net/systemeD/halcyon/connection/actions/AddMemberToRelationActionTest.as
new file mode 100644 (file)
index 0000000..084b135
--- /dev/null
@@ -0,0 +1,83 @@
+package net.systemeD.halcyon.connection.actions {
+
+    import org.flexunit.Assert;
+    import net.systemeD.halcyon.connection.actions.AddMemberToRelationAction;
+    import net.systemeD.halcyon.connection.Relation;
+    import net.systemeD.halcyon.connection.Node;
+    import net.systemeD.halcyon.connection.RelationMember;
+    import net.systemeD.halcyon.connection.UndoableAction;
+    import net.systemeD.halcyon.connection.*;
+
+    public class AddMemberToRelationActionTest {
+
+        [Before]
+        public function setUp():void {
+            //Instantiate the connection first to prevent errors
+            Connection.getConnection();
+        }
+
+
+        [Test]
+        public function addMember():void {
+
+            var n:Node = new Node(1,1,{},true,5,10);
+
+            var rel:Relation = new Relation(1,1,{},true,[]);
+            var member:RelationMember = new RelationMember(n, "foo");
+
+            rel.appendMember(member, function(action:UndoableAction):void { action.doAction(); });
+            Assert.assertEquals(1, rel.length);
+
+        }
+
+        [Test]
+        public function spliceStuff():void {
+
+            // create an array
+            var arr:Array = ["a", "b", "c", "d"];
+            Assert.assertEquals(4, arr.length);
+
+            // doesn't actually splice onto the end, inserts at position 4
+            arr.splice(-1, 0, "e");
+            Assert.assertEquals(5, arr.length);
+            Assert.assertEquals("e", arr[3]);
+            Assert.assertEquals("d", arr[4]);
+        }
+
+        [Test]
+        public function appendMember():void {
+            var n:Node = new Node(1,1,{},true,5,10);
+            var n2:Node = new Node(2,1,{},true,5,10);
+            var n3:Node = new Node(3,1,{},true,5,10);
+
+            var member1:RelationMember = new RelationMember(n, "first");
+            var member2:RelationMember = new RelationMember(n2, "second");
+            var member3:RelationMember = new RelationMember(n3, "third");
+
+            var rel:Relation = new Relation(1,1,{},true, [member1, member2]);
+            Assert.assertEquals(2, rel.length);
+
+            rel.appendMember(member3, function(action:UndoableAction):void { action.doAction(); });
+            Assert.assertEquals(member3, rel.getMember(2));
+        }
+
+        [Test]
+        public function setMember():void {
+            var n:Node = new Node(1,1,{},true,5,10);
+            var n2:Node = new Node(2,1,{},true,5,10);
+            var n3:Node = new Node(3,1,{},true,5,10);
+
+            var member1:RelationMember = new RelationMember(n, "first");
+            var member2:RelationMember = new RelationMember(n2, "second");
+            var member3:RelationMember = new RelationMember(n3, "third");
+
+            var rel:Relation = new Relation(1,1,{},true, [member1, member2]);
+            Assert.assertEquals(2, rel.length);
+
+            rel.setMember(1, member3, function(action:UndoableAction):void { action.doAction(); });
+            Assert.assertEquals(member3, rel.getMember(1));
+
+            Assert.assertEquals(2, rel.length);
+        }
+    }
+}
\ No newline at end of file