Compare commits

...

4 Commits

Author SHA1 Message Date
4ad229cb37 0.0.37 2017-12-06 22:35:03 -08:00
170ee33848 bump pxt-core to 2.3.37, 2017-12-06 22:34:52 -08:00
162e437527 using icons on drop downs 2017-12-06 22:34:11 -08:00
ab13cb9047 adding a few more icons 2017-12-06 21:40:00 -08:00
22 changed files with 186 additions and 53 deletions

View File

@ -13,7 +13,10 @@
sodipodi:docname="Large Motor.svg"
width="153.634"
height="153.634"
inkscape:version="0.92.1 r15371">
inkscape:version="0.92.1 r15371"
inkscape:export-filename="C:\gh\pxt-ev3\libs\core\jres\icons\motorLarge-icon.png"
inkscape:export-xdpi="74.983398"
inkscape:export-ydpi="74.983398">
<metadata
id="metadata7028">
<rdf:RDF>
@ -35,8 +38,8 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1137"
inkscape:window-width="1600"
inkscape:window-height="837"
id="namedview7026"
showgrid="false"
inkscape:zoom="1.5361183"

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -14,7 +14,10 @@
sodipodi:docname="Touch sensor.svg"
width="36.101002"
height="36.101002"
inkscape:version="0.92.1 r15371">
inkscape:version="0.92.1 r15371"
inkscape:export-filename="C:\gh\pxt-ev3\libs\core\jres\icons\touchSensor-icon.png"
inkscape:export-xdpi="319.10471"
inkscape:export-ydpi="319.10471">
<metadata
id="metadata4576">
<rdf:RDF>
@ -36,8 +39,8 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1137"
inkscape:window-width="1600"
inkscape:window-height="837"
id="namedview4574"
showgrid="false"
inkscape:zoom="7.0722208"

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -16,7 +16,7 @@
id="svg8853"
inkscape:version="0.92.1 r15371"
sodipodi:docname="brickbuttons.svg"
inkscape:export-filename="C:\Users\jhalleux\bitmap.png"
inkscape:export-filename="C:\gh\pxt-ev3\libs\core\jres\icons\brickButtons-icon.png"
inkscape:export-xdpi="11.874598"
inkscape:export-ydpi="11.874598">
<defs
@ -60,8 +60,8 @@
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1137"
inkscape:window-width="1600"
inkscape:window-height="837"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1" />

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@ -1,6 +1,58 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="1447.52 6142.536 49.96 58.928">
<defs>
<style>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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"
viewBox="1447.52 6142.536 58.928002 58.928"
version="1.1"
id="svg6348"
sodipodi:docname="icn_port.svg"
width="58.928001"
height="58.928001"
inkscape:export-filename="C:\gh\pxt-ev3\libs\core\jres\icons\portB.png"
inkscape:export-xdpi="156.39424"
inkscape:export-ydpi="156.39424"
inkscape:version="0.92.1 r15371">
<metadata
id="metadata6352">
<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>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1600"
inkscape:window-height="837"
id="namedview6350"
showgrid="false"
inkscape:zoom="4.0048872"
inkscape:cx="24.98"
inkscape:cy="29.464001"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg6348" />
<defs
id="defs6343">
<style
id="style6341">
.cls-1 {
fill: #eaeaea;
}
@ -10,8 +62,28 @@
}
</style>
</defs>
<g id="icn_port" transform="translate(1447.52 6142.536)">
<path id="Path_8" data-name="Path 8" class="cls-1" d="M0-143.939H49.96v58.928H0Z" transform="translate(0 143.939)"/>
<path id="Path_9" data-name="Path 9" class="cls-2" d="M0-63.321V-91.143H17.114v-6.912H21.83v-9.159H34.753V-98.4h5.064v35.08H31.784v7.43h-2.62V-63.4H27.179v7.507H24.973V-63.4h-2.16v7.507h-2.1V-63.4H18.861v7.507h-2.1V-63.4H14.942v7.507H12.478V-63.4H10.8v7.507H8.282V-63.35Z" transform="translate(5.253 109.807)"/>
</g>
<path
style="fill:#eaeaea;stroke-width:1.08854139"
inkscape:connector-curvature="0"
d="m 1447.5095,6142.536 h 59.1987 v 58.928 h -59.1987 z"
class="cls-1"
data-name="Path 8"
id="Path_8" />
<path
style="fill:#a8a9a8"
inkscape:connector-curvature="0"
d="M 1457.257,6189.022 V 6161.2 h 17.114 v -6.912 h 4.716 v -9.159 h 12.923 v 8.814 h 5.064 v 35.08 h -8.033 v 7.43 h -2.62 v -7.51 h -1.985 v 7.507 h -2.206 v -7.507 h -2.16 v 7.507 h -2.1 v -7.507 h -1.852 v 7.507 h -2.1 v -7.507 h -1.819 v 7.507 h -2.464 v -7.507 h -1.678 v 7.507 h -2.518 v -7.457 z"
class="cls-2"
data-name="Path 9"
id="Path_9" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:consolas;-inkscape-font-specification:consolas;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
x="1475.2291"
y="6185.2339"
id="text10060"><tspan
sodipodi:role="line"
id="tspan10058"
x="1475.2291"
y="6185.2339">B</tspan></text>
</svg>

Before

Width:  |  Height:  |  Size: 729 B

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -13,8 +13,8 @@
"LightCondition.Dark|block": "dark",
"LightIntensityMode.Ambient|block": "ambient light",
"LightIntensityMode.Reflected|block": "reflected light",
"sensors.ColorSensor.color|block": "`icons.colorSensor` %color| color",
"sensors.ColorSensor.light|block": "`icons.colorSensor` %color|%mode",
"sensors.ColorSensor.color|block": "`icons.colorSensor` %sensor| color",
"sensors.ColorSensor.light|block": "`icons.colorSensor` %sensor|%mode",
"sensors.ColorSensor.onColorDetected|block": "on `icons.colorSensor` %sensor|detected color %color",
"sensors.ColorSensor.onLightChanged|block": "on `icons.colorSensor` %sensor|%mode|%condition",
"sensors.color1|block": "1",

View File

@ -100,6 +100,8 @@ namespace sensors {
//% block="on `icons.colorSensor` %sensor|detected color %color"
//% blockId=colorOnColorDetected
//% parts="colorsensor"
//% sensor.fieldEditor="imagedropdown"
//% sensor.fieldOptions.columns=4
//% blockNamespace=sensors
//% weight=100 blockGap=8
//% group="Color Sensor"
@ -113,12 +115,14 @@ namespace sensors {
/**
* Get the current color from the color sensor.
* @param color the color sensor to query the request
* @param sensor the color sensor to query the request
*/
//% help=sensors/color-sensor/color
//% block="`icons.colorSensor` %color| color"
//% block="`icons.colorSensor` %sensor| color"
//% blockId=colorGetColor
//% parts="colorsensor"
//% sensor.fieldEditor="imagedropdown"
//% sensor.fieldOptions.columns=4
//% blockNamespace=sensors
//% weight=99
//% group="Color Sensor"
@ -136,6 +140,8 @@ namespace sensors {
//% block="on `icons.colorSensor` %sensor|%mode|%condition"
//% blockId=colorOnLightChanged
//% parts="colorsensor"
//% sensor.fieldEditor="imagedropdown"
//% sensor.fieldOptions.columns=4
//% blockNamespace=sensors
//% weight=89 blockGap=8
//% group="Color Sensor"
@ -146,12 +152,14 @@ namespace sensors {
/**
* Measures the ambient or reflected light value from 0 (darkest) to 100 (brightest).
* @param color the color sensor port
* @param sensor the color sensor port
*/
//% help=sensors/color-sensor/light
//% block="`icons.colorSensor` %color|%mode"
//% block="`icons.colorSensor` %sensor|%mode"
//% blockId=colorLight
//% parts="colorsensor"
//% sensor.fieldEditor="imagedropdown"
//% sensor.fieldOptions.columns=4
//% blockNamespace=sensors
//% weight=88
//% group="Color Sensor"
@ -171,15 +179,15 @@ namespace sensors {
}
}
//% whenUsed block="1" weight=95 fixedInstance
//% whenUsed block="1" weight=95 fixedInstance jres=icons.port1
export const color1: ColorSensor = new ColorSensor(1)
//% whenUsed block="3" weight=90 fixedInstance
//% whenUsed block="3" weight=90 fixedInstance jres=icons.port3
export const color3: ColorSensor = new ColorSensor(3)
//% whenUsed block="2" weight=90 fixedInstance
//% whenUsed block="2" weight=90 fixedInstance jres=icons.port2
export const color2: ColorSensor = new ColorSensor(2)
//% whenUsed block="4" weight=90 fixedInstance
//% whenUsed block="4" weight=90 fixedInstance jres=icons.port4
export const color4: ColorSensor = new ColorSensor(4)
}

View File

@ -29,5 +29,26 @@
},
"brickDisplay": {
"icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABbCAYAAACFziAsAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAPASURBVHic7d3Bb9tUAMfx37OdkfZQ2k5p2jKUSZ24MG3SJoaUtkPAKYccEdmBEwck/gckV+JfGOWGhLZpHSDtNCH1sokibTtwSsQ6UdZoUZWom9Z2xQwn6uMyJqBeanA7/5L9Prfmxc8v/qqJo6aOWVhYKFvYLwFMQtK0BotPHMWgMWmMmXegGDQs7BEn7UXIPykIGQUhoyBkFISMgpBREDLef7lzs9lE434DYTs8qPX0Fc/zkM/nUSgU4m8T507WWty4fgPVavV/L+5lVjhaQKlUguftfbhjBalWq11jjL8+gcmjR+DG2GG/evxoE7/U7qLT7uwaq6/WcevmLUzPTO85T6wjWKvWnjt2/K0TePv9aRhj4kzV146fOYmrX30TGaVWq6E4XdzzOMV6UQ+CIPJ2YwxOz55RjKeGD4/g2JtvRI6FYYh2u73nHInOsrKDWWReOZRkir4zNPpqou0TnvbqN2O/6X0IGQUhoyBkFISMgpBREDIKQkZByCgIGQUhoyBkFISMgpBREDIKQkZByCgIGQUhoyBkFISMgpBREDIKQkZByCgIGQUhoyBkFISMgpBREDIKQkZByCgIGQUhoyBkFISMgpBREDKJgtidnf1aR9+wOzbR9rGCuJ4befuT359ge+txogX0mwfN9cjbjTFw3ejj+Hexgoznx587tnTtOsI/dLkmALh3ZwWry79GjuVyuVhBYl18plgsol6vIwx3H/jGvfu4Mn8Buck8vMzLezWgrUebeNh6EDnmOA5mz87GmsdcXrgc60lvY2MDSz8sodFooNPZfbUb2c11XYyNjWFmdgb5fD7WNrGDsFq+s4zFxUUAwNSxKZRKpZRXlIxOe8koCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZLw4l79mFgQBRkZGAACOcWJdzpuZt74e/ReuXjEwMIDR0VEAwPDwMHr98Xhbm1tpryERYwxyuRwAYHBwEL3+ePQaQsYB8Fvai5Bnth0AX6S9CnnmvAEA3/dPGWOm/j2azWaHJl6b+Pig9h5sB7dbrdaPCad5x1pbBgBjzAqA+eQre/GstSu+7//U9QtALn53seB23NUDWwTs5+c+PPdZkjnm5uY+stZ+/fTHb33f/2AflpYavaiTURAyCkJGQcik+dnPprHmUtJJMpnM92EY/vWNjdGf5ewhaZ1lNWHxXqVS+fkA5u5paTxlKUYXLzpISzG66xpk6NDQOoD9+uePNVicVYzuugYpl8uBNfZTC/sw4X7WYPFupVK5m3Cevvcnrxny0mmZOMwAAAAASUVORK5CYII="
},
"port1": {
"icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAYDQAAGA0BpVFbVgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAARFSURBVHic7dzPT9p3HMfxF79hCEhFv7FjJRITzBqT9aTpTl3S6alLTBdTdun+iO5f8eB68DCyxpMkZjazyRpPXjxpzRqjCaVGv2PIvogF+S7fHUy/la6CyFde7df34wafL1/eX5/6hXwxOFRVNSBonOwBrjoJQCYByNzsAayUe5XD/v6+pfuMfx7H4OCgpfs8zVYBqtUqyuWypfusHdcs3d/75BREJgHIJACZBCCTAGQSgEwCkEkAMglAJgHIJACZBCCz1cW4y6BpGl7vvj5z3efzIdYXu/D+P6kAmqZhY2PjzPW6Xrf8OQuFAgqFwpnr16LXrk4A/V8db6pv2GNYSl4DyCQAmQQgkwBkEoBMApB9Um9DrVT8u4jSP6WG+yKRCPr6+ro6x5ULUCwWkc1msfz7MnRdb1ibnJzEwx8fdnWeKxPg8PAQ2WwWS78t4fj4mD2OqaMA9Xod29vbVs3S0kX+SapWq+Hp0lMsLCygUqlcwlSd6SiArutNL1Qx6bqO5388x/z8PEqlUusHkNjuFGQYBlZXV5H5JQNVVdnjtGSbAIZhYG1tDU9+fYJcLsce59xsEWBrawuPf36MnZ2dptt5PB7c/fYuyloZKysrXZquOVsE0HW96Q/f4XBgbGwMD9IPoCgK5ubmujhdc7YIMDIygmQy+cF3ZKOjo0j/kMbQ0BBhstZsEQAAJiYmMDMzY96Ox+O4//19jI+PE6dqzTYBbn99G5lMBm63G1NTU7jzzR04nR//pS7bBPB4PHj00yMkEgl4PB72OOdmmwAAMDw8zB6hbR//36jNSQAyCUAmAcgkAJkEIJMAZBKATAKQSQAyCUAmAcgkAJkEIJMAZBKATAKQSQAyCUAmAcgkAJkEIJMAZLb5v6Dd3V0sLi6ea9uXf7784P3r6+uYnZ1t+thwOIzp6em25zuLbQIcFA/wbPlZR/vI5/PI5/NNt1EUxdIAcgoikwBkEoDMNq8Bsf4Y7n1379KfJ9QTsnR/tgmgKArS6TR7jLbJKYhMApBJADIJQNbRi7DT6UQ0Gm25jcvlarhP0zRUq1XzdjgcNt9dqH+pqNffff9nf6wfXq/3f2vBYBC9kV4AQOWo0vB9ENcHr8PhcAAAyodlaJpmrimKArfr5LAPSgc4Ojoy17xeL4LB4DmP/kRPqKet7d/XUQCfz4dbX91q+3EvNl9gb2/PvD0wMIAbX9wAAGhlrSFAIpFAOBwGAJRKJXOtN9KLVCoF4OQ60OkAqVTKDJB7lWsIkBxKIhAIAAA2NzcbAkSjUdz88mbbx9MJOQWRSQAyCUAmAcgkAJkEIJMAZBKATAKQSQAyygcyfr8fodC7T5beXusBgOBnjddiTl9HCvYE4XSd/M74A/6Gx5/en2EY5qUIn9fXsPb2fuDkO4YC/oB52+f1XfiYLsqhqqrR9WcVJjkFkUkAMglAJgHIJACZBCCTAGT/AVajE7I72JDGAAAAAElFTkSuQmCC"
},
"port2": {
"icon": "data:image/png;base64,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"
},
"port3": {
"icon": "data:image/png;base64,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"
},
"port4": {
"icon": "data:image/png;base64,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"
},
"portA": {
"icon": "data:image/png;base64,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"
},
"portB": {
"icon": "data:image/png;base64,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"
},
"portC": {
"icon": "data:image/png;base64,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"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -154,7 +154,7 @@ namespace brick {
//% blockId=scren_image_picker block="%image" shim=TD_ID
//% image.fieldEditor="imagedropdown"
//% image.fieldOptions.columns=6
//% block.fieldOptions.hasSearchBar=true
//% image.fieldOptions.hasSearchBar=true
//% group="Screen" weight=0 blockHidden=1
export function _imagePicker(image: Image): Image {
return image;

View File

@ -27,6 +27,8 @@ namespace sensors {
//% block="`icons.gyroSensor` %sensor|angle"
//% blockId=gyroGetAngle
//% parts="gyroscope"
//% sensor.fieldEditor="imagedropdown"
//% sensor.fieldOptions.columns=4
//% blockNamespace=sensors
//% weight=65 blockGap=8
//% group="Gyro Sensor"
@ -43,6 +45,8 @@ namespace sensors {
//% block="`icons.gyroSensor` %sensor|rotation rate"
//% blockId=gyroGetRate
//% parts="gyroscope"
//% sensor.fieldEditor="imagedropdown"
//% sensor.fieldOptions.columns=4
//% blockNamespace=sensors
//% weight=65 blockGap=8
//% group="Gyro Sensor"
@ -51,16 +55,16 @@ namespace sensors {
return this.getNumber(NumberFormat.Int16LE, 0)
}
}
//% fixedInstance whenUsed block="1"
//% fixedInstance whenUsed block="1" jres=icons.port1
export const gyro1: GyroSensor = new GyroSensor(1)
//% fixedInstance whenUsed block="2" weight=95
//% fixedInstance whenUsed block="2" weight=95 jres=icons.port2
export const gyro2: GyroSensor = new GyroSensor(2)
//% fixedInstance whenUsed block="3"
//% fixedInstance whenUsed block="3" jres=icons.port3
export const gyro3: GyroSensor = new GyroSensor(3)
//% fixedInstance whenUsed block="4"
//% fixedInstance whenUsed block="4" jres=icons.port4
export const gyro4: GyroSensor = new GyroSensor(4)
}

View File

@ -2,8 +2,8 @@
"InfraredSensorEvent.ObjectDetected|block": "object detected",
"InfraredSensorEvent.ObjectNear|block": "object near",
"sensors.InfraredSensor.onEvent|block": "on `icons.infraredSensor` %sensor|%event",
"sensors.InfraredSensor.proximity|block": "`icons.infraredSensor` %infrared|proximity",
"sensors.InfraredSensor.remoteCommand|block": "`icons.infraredSensor` %infrared|remote command",
"sensors.InfraredSensor.proximity|block": "`icons.infraredSensor` %sensor|proximity",
"sensors.InfraredSensor.remoteCommand|block": "`icons.infraredSensor` %sensor|remote command",
"sensors.InfraredSensor.waitUntil|block": "wait until `icons.infraredSensor` %sensor| %event",
"sensors.RemoteInfraredBeaconButton.isPressed|block": "`icons.infraredSensor` %button|is pressed",
"sensors.RemoteInfraredBeaconButton.onEvent|block": "on `icons.infraredSensor` %button|%event",

View File

@ -192,6 +192,8 @@ namespace sensors {
//% block="on `icons.infraredSensor` %sensor|%event"
//% blockId=infraredOn
//% parts="infraredsensor"
//% sensor.fieldEditor="imagedropdown"
//% sensor.fieldOptions.columns=4
//% blockNamespace=sensors
//% weight=100 blockGap=8
//% group="Infrared Sensor"
@ -206,6 +208,8 @@ namespace sensors {
//% block="wait until `icons.infraredSensor` %sensor| %event"
//% blockId=infraredwait
//% parts="infraredsensor"
//% sensor.fieldEditor="imagedropdown"
//% sensor.fieldOptions.columns=4
//% blockNamespace=sensors
//% weight=99 blockGap=8
//% group="Infrared Sensor"
@ -215,12 +219,14 @@ namespace sensors {
/**
* Get the promixity measured by the infrared sensor, from ``0`` (close) to ``100`` (far)
* @param ir the infrared sensor
* @param sensor the infrared sensor
*/
//% help=input/infrared/proximity
//% block="`icons.infraredSensor` %infrared|proximity"
//% block="`icons.infraredSensor` %sensor|proximity"
//% blockId=infraredGetProximity
//% parts="infrared"
//% sensor.fieldEditor="imagedropdown"
//% sensor.fieldOptions.columns=4
//% blockNamespace=sensors
//% weight=65 blockGap=8
//% group="Infrared Sensor"
@ -231,12 +237,14 @@ namespace sensors {
/**
* Get the remote commandreceived the infrared sensor.
* @param ir the infrared sensor
* @param sensor the infrared sensor
*/
//% help=input/infrared/remote-command
//% block="`icons.infraredSensor` %infrared|remote command"
//% block="`icons.infraredSensor` %sensor|remote command"
//% blockId=infraredGetRemoteCommand
//% parts="infrared"
//% sensor.fieldEditor="imagedropdown"
//% sensor.fieldOptions.columns=4
//% blockNamespace=sensors
//% weight=65 blockGap=8
//% group="Infrared Sensor"
@ -252,16 +260,16 @@ namespace sensors {
}
}
//% fixedInstance whenUsed block="1"
//% fixedInstance whenUsed block="1" jres=icons.port1
export const infraredSensor1: InfraredSensor = new InfraredSensor(1)
//% fixedInstance whenUsed block="2"
//% fixedInstance whenUsed block="2" jres=icons.port2
export const infraredSensor2: InfraredSensor = new InfraredSensor(2)
//% fixedInstance whenUsed block="3"
//% fixedInstance whenUsed block="3" jres=icons.port3
export const infraredSensor3: InfraredSensor = new InfraredSensor(3)
//% fixedInstance whenUsed block="4"
//% fixedInstance whenUsed block="4" jres=icons.port4
export const infraredSensor4: InfraredSensor = new InfraredSensor(4)

View File

@ -44,6 +44,8 @@ namespace sensors {
//% help=input/touch-sensor/on-event
//% blockId=touchEvent block="on `icons.touchSensor` %sensor|%event"
//% parts="touch"
//% sensor.fieldEditor="imagedropdown"
//% sensor.fieldOptions.columns=4
//% blockNamespace=sensors
//% weight=99 blockGap=8
//% group="Touch Sensor"
@ -59,6 +61,8 @@ namespace sensors {
//% help=input/touch-sensor/wait-until
//% blockId=touchWaitUntil block="wait until `icons.touchSensor` %sensor|%event"
//% parts="touch"
//% sensor.fieldEditor="imagedropdown"
//% sensor.fieldOptions.columns=4
//% blockNamespace=sensors
//% weight=98 blockGap=8
//% group="Touch Sensor"
@ -74,6 +78,8 @@ namespace sensors {
//% block="`icons.touchSensor` %sensor|is pressed"
//% blockId=touchIsPressed
//% parts="touch"
//% sensor.fieldEditor="imagedropdown"
//% sensor.fieldOptions.columns=4
//% blockNamespace=sensors
//% weight=81 blockGap=8
//% group="Touch Sensor"
@ -89,6 +95,8 @@ namespace sensors {
//% block="`icons.touchSensor` %sensor|was pressed"
//% blockId=touchWasPressed
//% parts="touch"
//% sensor.fieldEditor="imagedropdown"
//% sensor.fieldOptions.columns=4
//% blockNamespace=sensors
//% weight=81 blockGap=8
//% group="Touch Sensor"
@ -97,12 +105,12 @@ namespace sensors {
}
}
//% whenUsed block="1" weight=95 fixedInstance
//% whenUsed block="1" weight=95 fixedInstance jres=icons.port1
export const touchSensor1: TouchSensor = new TouchSensor(1)
//% whenUsed block="2" weight=95 fixedInstance
//% whenUsed block="2" weight=95 fixedInstance jres=icons.port2
export const touchSensor2: TouchSensor = new TouchSensor(2)
//% whenUsed block="3" weight=95 fixedInstance
//% whenUsed block="3" weight=95 fixedInstance jres=icons.port3
export const touchSensor3: TouchSensor = new TouchSensor(3)
//% whenUsed block="4" weight=95 fixedInstance
//% whenUsed block="4" weight=95 fixedInstance jres=icons.port4
export const touchSensor4: TouchSensor = new TouchSensor(4)
}

View File

@ -45,6 +45,8 @@ namespace sensors {
//% blockId=ultrasonicOn
//% block="on `icons.ultrasonicSensor` %sensor|%event"
//% parts="ultrasonicsensor"
//% sensor.fieldEditor="imagedropdown"
//% sensor.fieldOptions.columns=4
//% blockNamespace=sensors
//% weight=100 blockGap=8
//% group="Ultrasonic Sensor"
@ -59,6 +61,8 @@ namespace sensors {
//% block="wait until `icons.ultrasonicSensor` %sensor| %event"
//% blockId=ultrasonicWait
//% parts="ultrasonicsensor"
//% sensor.fieldEditor="imagedropdown"
//% sensor.fieldOptions.columns=4
//% blockNamespace=sensors
//% weight=99 blockGap=8
//% group="Ultrasonic Sensor"
@ -74,6 +78,8 @@ namespace sensors {
//% block="`icons.ultrasonicSensor` %sensor|distance"
//% blockId=sonarGetDistance
//% parts="ultrasonicsensor"
//% sensor.fieldEditor="imagedropdown"
//% sensor.fieldOptions.columns=4
//% blockNamespace=sensors
//% weight=65 blockGap=8
//% group="Ultrasonic Sensor"
@ -84,15 +90,15 @@ namespace sensors {
}
}
//% fixedInstance whenUsed block="1"
//% fixedInstance whenUsed block="1" jres=icons.port1
export const ultrasonic1: UltraSonicSensor = new UltraSonicSensor(1)
//% fixedInstance whenUsed block="4"
//% fixedInstance whenUsed block="4" jres=icons.port4
export const ultrasonic4: UltraSonicSensor = new UltraSonicSensor(4)
//% fixedInstance whenUsed block="2"
//% fixedInstance whenUsed block="2" jres=icons.port2
export const ultrasonic2: UltraSonicSensor = new UltraSonicSensor(2)
//% fixedInstance whenUsed block="3"
//% fixedInstance whenUsed block="3" jres=icons.port3
export const ultrasonic3: UltraSonicSensor = new UltraSonicSensor(3)
}

View File

@ -1,6 +1,6 @@
{
"name": "pxt-ev3",
"version": "0.0.36",
"version": "0.0.37",
"description": "LEGO Mindstorms EV3 for Microsoft MakeCode",
"private": true,
"keywords": [
@ -40,7 +40,7 @@
},
"dependencies": {
"pxt-common-packages": "0.14.5",
"pxt-core": "2.3.31"
"pxt-core": "2.3.37"
},
"scripts": {
"test": "node node_modules/pxt-core/built/pxt.js travis"