* Reopen?
* Handle errors when closing bugs (especially nickname-based errors)
+== Reverse Button ==
+* Doesn't look like a button
+* Clicking reverse doesn't update the toolbox (toolbox only recalculates itself on selection)
+* clockwise / anticlockwise are backwards
+* Click from area to line makes arrow displaced. click line again it sorts itself out.
Requested enhancements
----------------------
--- /dev/null
+<?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="22"
+ height="22"
+ id="svg3049"
+ version="1.1"
+ inkscape:version="0.48.0 r9654"
+ sodipodi:docname="anti-clockwise.svg">
+ <defs
+ id="defs3051">
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend"
+ style="overflow:visible">
+ <path
+ id="path3882"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3876"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend-6"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path3882-8"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="11.197802"
+ inkscape:cx="-1.6430339"
+ inkscape:cy="7.2784273"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1278"
+ inkscape:window-height="722"
+ inkscape:window-x="1280"
+ inkscape:window-y="266"
+ inkscape:window-maximized="0"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0">
+ <inkscape:grid
+ type="xygrid"
+ id="grid5423"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata3054">
+ <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
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ transform="translate(-8.8768402,0.0235894)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.66178238;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="M 21.803543,4.728235 C 10.854885,-2.7067154 13.089304,6.6372087 14.87684,14.976411"
+ id="path4296"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.66178238;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 18.433679,17.123293 c 10.534527,8.453894 8.792109,-1.078651 7.443161,-9.5666172"
+ id="path4296-2"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+</svg>
--- /dev/null
+<?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="22"
+ height="22"
+ id="svg2985"
+ version="1.1"
+ inkscape:version="0.48.0 r9654"
+ sodipodi:docname="arrow.svg">
+ <defs
+ id="defs2987">
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow2Mend"
+ style="overflow:visible;">
+ <path
+ id="path3882"
+ style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(0.6) rotate(180) translate(0,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3876"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="15.836083"
+ inkscape:cx="10.787382"
+ inkscape:cy="15.390398"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1278"
+ inkscape:window-height="722"
+ inkscape:window-x="1431"
+ inkscape:window-y="204"
+ inkscape:window-maximized="0"
+ showguides="false"
+ inkscape:snap-global="true">
+ <inkscape:grid
+ type="xygrid"
+ id="grid5235"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata2990">
+ <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
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ transform="translate(0,-10)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="M 11,32.158102 11,13"
+ id="path2993"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+</svg>
--- /dev/null
+<?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="22"
+ height="22"
+ id="svg3014"
+ version="1.1"
+ inkscape:version="0.48.0 r9654"
+ sodipodi:docname="clockwise.svg">
+ <defs
+ id="defs3016">
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path3882"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker5212"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path5214"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend-7"
+ style="overflow:visible">
+ <path
+ id="path3882-4"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker5439"
+ style="overflow:visible">
+ <path
+ id="path5441"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="11.197802"
+ inkscape:cx="16"
+ inkscape:cy="16"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1278"
+ inkscape:window-height="722"
+ inkscape:window-x="1944"
+ inkscape:window-y="275"
+ inkscape:window-maximized="0">
+ <inkscape:grid
+ type="xygrid"
+ id="grid5425"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata3019">
+ <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
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ transform="translate(0,-10)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.66178238;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="m 9,15 c 10.948658,-7.4349503 8.71424,1.908974 6.926703,10.248176"
+ id="path4296"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.66178238;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+ d="M 12.369864,27.395058 C 1.8353374,35.848952 3.5777554,26.316407 4.9267034,17.828441"
+ id="path4296-2"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+</svg>
height="76" width="129" layout="absolute"
styleName="theToolBox">
+ <!-- the animation effect that controls the rotation of the reverse arrow.
+ We could get more fancy by using previous angle in angleFrom, and a longer duration, to give a nice animated effect -->
+ <mx:Rotate id="rotate" angleFrom="{angle-1}" angleTo="{angle}" target="{arrowBox}" originX="{arrowBox.width/2}" originY="{arrowBox.height/2}" duration="4"/>
+
+
<mx:Image data="@Embed('../../../embedded/close_small.png')"
includeInLayout="false" id="toolboxClose" click="toggle();"
y="-6" x="115" />
alpha="{getAlpha('delete')}"
toolTip="{deleteToolTipText()}"
width="28" height="28" textAlign="left" y="4" x="6" paddingLeft="6" paddingRight="0" />
- <mx:Button icon="@Embed('../../../embedded/direction.svg')"
- click='doReverseDirection();'
- enabled="{canDo('reverseDirection')}"
- alpha="{getAlpha('reverseDirection')}"
- toolTip="Reverse direction (V)"
- width="28" height="28" textAlign="left" y="4" x="36" paddingLeft="8" paddingRight="0" />
+
+ <mx:HBox width="28" height="28" y="4" x="36" borderStyle="solid" cornerRadius="4" click="reverseClicked();" horizontalAlign="center" verticalAlign="middle">
+ <mx:ViewStack id="rotateButtonStack">
+ <!-- I can totally recommend adding borderStyle="solid" to arrowBox when debugging -->
+ <mx:HBox id="arrowBox" horizontalAlign="center" verticalAlign="middle" width="24" height="24">
+ <mx:Image id="arrow" source="@Embed('../../../embedded/arrow.svg')"
+ alpha="{getAlpha('reverseDirection')}"
+ toolTip="Reverse direction (V)"
+ width="22" height="22"/>
+ </mx:HBox>
+ <mx:HBox id="clockwiseBox" horizontalAlign="center" verticalAlign="middle">
+ <mx:Image id="clockwise" source="@Embed('../../../embedded/clockwise.svg')"
+ alpha="{getAlpha('reverseDirection')}"
+ toolTip="Reverse direction (V)"
+ width="22" height="22" x="2" y="2"/>
+ </mx:HBox>
+ <mx:HBox id="antiClockwiseBox" horizontalAlign="center" verticalAlign="middle">
+ <mx:Image id="anticlockwise" source="@Embed('../../../embedded/anti-clockwise.svg')"
+ click='doReverseDirection();'
+ enabled="{canDo('reverseDirection')}"
+ alpha="{getAlpha('reverseDirection')}"
+ toolTip="Reverse direction (V)"
+ width="22" height="22" x="2" y="2"/>
+ </mx:HBox>
+ </mx:ViewStack>
+ </mx:HBox>
<mx:Button icon="@Embed('../../../embedded/cut.svg')"
click='doSplit();'
enabled="{canDo('split')}"
private var controller:EditController;
+ [Bindable]
+ public var angle:int=0;
+
public function init(controller:EditController):void {
this.controller=controller;
/* check if the toolbox was explictly turned off in a previous session */
public function updateSelectionUI():void {
dispatchEvent(new Event("updateSkin"));
dispatchEvent(new Event("updateAlpha"));
+ updateDirectionArrow();
}
private function handleDown(e:Event):void {
return "Delete Item"; // When nothing is selected
}
+ private function updateDirectionArrow():void {
+ if (controller.state is SelectedWay) {
+ var w:Way = Way(controller.state.firstSelected);
+ if (w) { // not entirely sure why this protection is necessary, but it appears so
+ if (w.isArea()) {
+ trace("clockwise?: "+w.clockwise);
+ w.clockwise? rotateButtonStack.selectedChild = clockwiseBox : rotateButtonStack.selectedChild = antiClockwiseBox;
+ } else {
+ rotateButtonStack.selectedChild = arrowBox;
+ // reset and reposition back to the starting point relative to its parent
+ rotate.end();
+ angle = 0;
+ rotate.play();
+ arrowBox.x = 0;
+ arrowBox.y = 0;
+
+ // move
+ trace("angle: " + w.angle);
+ rotate.end();
+ angle = w.angle;
+ rotate.play();
+ }
+ }
+ }
+ }
+
+ private function reverseClicked():void {
+ if(canDo('reverseDirection')) {
+ doReverseDirection();
+ }
+ }
+
// --------------------------------------------------------------------------------
// Individual toolbox actions