From 9437873427f70af21652dc32725239c0a0c82428 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Thu, 16 Nov 2017 12:58:37 -0800 Subject: [PATCH] more images --- libs/core/_locales/core-strings.json | 86 +++++++++++----------- libs/core/color.ts | 20 ++--- libs/core/gyro.ts | 16 ++-- libs/core/icons.jres | 6 ++ libs/core/ir.ts | 16 ++-- libs/core/jres/icons/colorSensor-icon.png | Bin 0 -> 5317 bytes libs/core/jres/icons/gyroSensor-icon.png | Bin 0 -> 4950 bytes libs/core/output.ts | 16 ++-- libs/core/touch.ts | 42 +++++------ libs/core/ultrasonic.ts | 20 ++--- 10 files changed, 114 insertions(+), 108 deletions(-) create mode 100644 libs/core/jres/icons/colorSensor-icon.png create mode 100644 libs/core/jres/icons/gyroSensor-icon.png diff --git a/libs/core/_locales/core-strings.json b/libs/core/_locales/core-strings.json index c4435c68..70acfb9e 100644 --- a/libs/core/_locales/core-strings.json +++ b/libs/core/_locales/core-strings.json @@ -55,61 +55,61 @@ "motors.Motor.speed|block": "%motor|speed", "motors.Motor.stop|block": "stop %motor", "motors.Motor.tachoCount|block": "%motor|tacho count", - "motors.largeMotorA|block": "`icons.motorLarge` A", - "motors.largeMotorB|block": "`icons.motorLarge` B", - "motors.largeMotorC|block": "`icons.motorLarge` C", - "motors.largeMotorD|block": "`icons.motorLarge` D", - "motors.mediumMotorA|block": "`icons.motorMedium` A", - "motors.mediumMotorB|block": "`icons.motorMedium` B", - "motors.mediumMotorC|block": "`icons.motorMedium` C", - "motors.mediumMotorD|block": "`icons.motorMedium` D", + "motors.largeMotorA|block": "large A", + "motors.largeMotorB|block": "large B", + "motors.largeMotorC|block": "large C", + "motors.largeMotorD|block": "large D", + "motors.mediumMotorA|block": "medium A", + "motors.mediumMotorB|block": "medium B", + "motors.mediumMotorC|block": "medium C", + "motors.mediumMotorD|block": "medium D", "motors.stopAllMotors|block": "stop all motors", "motors|block": "motors", "output|block": "output", "screen|block": "screen", - "sensors.ColorSensor.ambientLight|block": "%color| ambient light", - "sensors.ColorSensor.color|block": "%color| color", - "sensors.ColorSensor.onColorDetected|block": "on %sensor|detected %color", - "sensors.ColorSensor.reflectedLight|block": "%color| reflected light", - "sensors.GyroSensor.angle|block": "%sensor|angle", - "sensors.GyroSensor.rate|block": "%sensor|rotation rate", - "sensors.InfraredSensor.on|block": "on %sensor|%event", - "sensors.InfraredSensor.proximity|block": "%infrared|proximity", - "sensors.InfraredSensor.remoteCommand|block": "%infrared|remote command", - "sensors.InfraredSensor.wait|block": "wait %sensor|for %event", + "sensors.ColorSensor.ambientLight|block": "`icons.colorSensor` %color| ambient light", + "sensors.ColorSensor.color|block": "`icons.colorSensor` %color| color", + "sensors.ColorSensor.onColorDetected|block": "on `icons.colorSensor` %sensor|detected %color", + "sensors.ColorSensor.reflectedLight|block": "`icons.colorSensor` %color| reflected light", + "sensors.GyroSensor.angle|block": "`icons.gyroSensor` %sensor|angle", + "sensors.GyroSensor.rate|block": "`icons.gyroSensor` %sensor|rotation rate", + "sensors.InfraredSensor.on|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.wait|block": "wait `icons.infraredSensor` %sensor|for %event", "sensors.RemoteInfraredBeaconButton.isPressed|block": "%button|is pressed", "sensors.RemoteInfraredBeaconButton.onEvent|block": "on %button|%event", "sensors.RemoteInfraredBeaconButton.wasPressed|block": "%button|was pressed", - "sensors.TouchSensor.isTouched|block": "%sensor|is touched", - "sensors.TouchSensor.onEvent|block": "on %sensor|%event", - "sensors.UltraSonicSensor.distance|block": "%sensor|distance", - "sensors.UltraSonicSensor.on|block": "on %sensor|%event", - "sensors.UltraSonicSensor.wait|block": "wait %sensor|for %event", - "sensors.color1|block": "color sensor 1", - "sensors.color2|block": "color sensor 2", - "sensors.color3|block": "color sensor 3", - "sensors.color4|block": "color sensor 4", - "sensors.gyro1|block": "gyro sensor 1", - "sensors.gyro2|block": "gyro sensor 2", - "sensors.gyro3|block": "gyro sensor 3", - "sensors.gyro4|block": "gyro sensor 4", - "sensors.infraredSensor1|block": "`icons.infraredSensor` 1", - "sensors.infraredSensor2|block": "`icons.infraredSensor` 2", - "sensors.infraredSensor3|block": "`icons.infraredSensor` 3", - "sensors.infraredSensor4|block": "`icons.infraredSensor` 4", + "sensors.TouchSensor.isTouched|block": "`icons.touchSensor` %sensor|is touched", + "sensors.TouchSensor.onEvent|block": "on `icons.touchSensor` %sensor|%event", + "sensors.UltraSonicSensor.distance|block": "`icons.ultrasonicSensor` %sensor|distance", + "sensors.UltraSonicSensor.on|block": "on `icons.ultrasonicSensor` %sensor|%event", + "sensors.UltraSonicSensor.wait|block": "wait `icons.ultrasonicSensor` %sensor|for %event", + "sensors.color1|block": "1", + "sensors.color2|block": "2", + "sensors.color3|block": "3", + "sensors.color4|block": "4", + "sensors.gyro1|block": "1", + "sensors.gyro2|block": "2", + "sensors.gyro3|block": "3", + "sensors.gyro4|block": "4", + "sensors.infraredSensor1|block": "1", + "sensors.infraredSensor2|block": "2", + "sensors.infraredSensor3|block": "3", + "sensors.infraredSensor4|block": "4", "sensors.remoteButtonBottomLeft|block": "remote button bottom-left", "sensors.remoteButtonBottomRight|block": "remote button bottom-right", "sensors.remoteButtonCenter|block": "remote button center", "sensors.remoteButtonTopLeft|block": "remote button top-left", "sensors.remoteButtonTopRight|block": "remote button top-right", - "sensors.touchSensor1|block": "`icons.touchSensor` 1", - "sensors.touchSensor2|block": "`icons.touchSensor` 2", - "sensors.touchSensor3|block": "`icons.touchSensor` 3", - "sensors.touchSensor4|block": "`icons.touchSensor` 4", - "sensors.ultrasonic1|block": "`icons.ultrasonicSensor` 1", - "sensors.ultrasonic2|block": "`icons.ultrasonicSensor` 2", - "sensors.ultrasonic3|block": "`icons.ultrasonicSensor` 3", - "sensors.ultrasonic4|block": "`icons.ultrasonicSensor` 4", + "sensors.touchSensor1|block": "1", + "sensors.touchSensor2|block": "2", + "sensors.touchSensor3|block": "3", + "sensors.touchSensor4|block": "4", + "sensors.ultrasonic1|block": "1", + "sensors.ultrasonic2|block": "2", + "sensors.ultrasonic3|block": "3", + "sensors.ultrasonic4|block": "4", "sensors|block": "sensors", "serial|block": "serial", "{id:category}Brick": "Brick", diff --git a/libs/core/color.ts b/libs/core/color.ts index b334d4a6..77308481 100644 --- a/libs/core/color.ts +++ b/libs/core/color.ts @@ -59,7 +59,7 @@ namespace sensors { * @param handler the code to run when detected */ //% help=input/color/on-color-detected - //% block="on %sensor|detected %color" + //% block="on `icons.colorSensor` %sensor|detected %color" //% blockId=colorOnColorDetected //% parts="colorsensor" //% blockNamespace=sensors @@ -77,7 +77,7 @@ namespace sensors { * @param color the color sensor to query the request */ //% help=input/color/ambient-light - //% block="%color| ambient light" + //% block="`icons.colorSensor` %color| ambient light" //% blockId=colorGetAmbient //% parts="colorsensor" //% blockNamespace=sensors @@ -93,7 +93,7 @@ namespace sensors { * @param color the color sensor to query the request */ //% help=input/color/refelected-light - //% block="%color| reflected light" + //% block="`icons.colorSensor` %color| reflected light" //% blockId=colorGetReflected //% parts="colorsensor" //% blockNamespace=sensors @@ -109,7 +109,7 @@ namespace sensors { * @param color the color sensor to query the request */ //% help=input/color/color - //% block="%color| color" + //% block="`icons.colorSensor` %color| color" //% blockId=colorGetColor //% parts="colorsensor" //% blockNamespace=sensors @@ -121,15 +121,15 @@ namespace sensors { } } - //% whenUsed block="color sensor 3" weight=95 fixedInstance + //% whenUsed block="1" weight=95 fixedInstance + export const color1: ColorSensor = new ColorSensor(1) + + //% whenUsed block="3" weight=90 fixedInstance export const color3: ColorSensor = new ColorSensor(3) - //% whenUsed block="color sensor 1" weight=95 fixedInstance - export const color1: ColorSensor = new ColorSensor(1) - - //% whenUsed block="color sensor 2" weight=95 fixedInstance + //% whenUsed block="2" weight=90 fixedInstance export const color2: ColorSensor = new ColorSensor(2) - //% whenUsed block="color sensor 4" weight=95 fixedInstance + //% whenUsed block="4" weight=90 fixedInstance export const color4: ColorSensor = new ColorSensor(4) } diff --git a/libs/core/gyro.ts b/libs/core/gyro.ts index 74de5b20..2a394cc6 100644 --- a/libs/core/gyro.ts +++ b/libs/core/gyro.ts @@ -24,7 +24,7 @@ namespace sensors { * @param sensor the gyroscope to query the request */ //% help=input/gyro/angle - //% block="%sensor|angle" + //% block="`icons.gyroSensor` %sensor|angle" //% blockId=gyroGetAngle //% parts="gyroscope" //% blockNamespace=sensors @@ -40,7 +40,7 @@ namespace sensors { * @param sensor the gyroscope to query the request */ //% help=input/gyro/rate - //% block="%sensor|rotation rate" + //% block="`icons.gyroSensor` %sensor|rotation rate" //% blockId=gyroGetRate //% parts="gyroscope" //% blockNamespace=sensors @@ -51,16 +51,16 @@ namespace sensors { return this.getNumber(NumberFormat.Int16LE, 0) } } - - //% fixedInstance whenUsed block="gyro sensor 2" - export const gyro2: GyroSensor = new GyroSensor(2) - //% fixedInstance whenUsed block="gyro sensor 1" + //% fixedInstance whenUsed block="1" export const gyro1: GyroSensor = new GyroSensor(1) - //% fixedInstance whenUsed block="gyro sensor 3" + //% fixedInstance whenUsed block="2" weight=95 + export const gyro2: GyroSensor = new GyroSensor(2) + + //% fixedInstance whenUsed block="3" export const gyro3: GyroSensor = new GyroSensor(3) - //% fixedInstance whenUsed block="gyro sensor 4" + //% fixedInstance whenUsed block="4" export const gyro4: GyroSensor = new GyroSensor(4) } diff --git a/libs/core/icons.jres b/libs/core/icons.jres index 38cf5836..2198314e 100644 --- a/libs/core/icons.jres +++ b/libs/core/icons.jres @@ -17,5 +17,11 @@ }, "touchSensor": { "icon": "data:image/png;base64,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" + }, + "gyroSensor": { + "icon": "data:image/png;base64,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" + }, + "colorSensor": { + "icon": "data:image/png;base64,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" } } \ No newline at end of file diff --git a/libs/core/ir.ts b/libs/core/ir.ts index db20425a..ec247342 100644 --- a/libs/core/ir.ts +++ b/libs/core/ir.ts @@ -193,7 +193,7 @@ namespace sensors { * @param handler the code to run when detected */ //% help=input/infrared/on - //% block="on %sensor|%event" + //% block="on `icons.infraredSensor` %sensor|%event" //% blockId=infraredOn //% parts="infraredsensor" //% blockNamespace=sensors @@ -209,7 +209,7 @@ namespace sensors { * Waits for the event to occur */ //% help=input/ultrasonic/wait - //% block="wait %sensor|for %event" + //% block="wait `icons.infraredSensor` %sensor|for %event" //% blockId=infraredwait //% parts="infraredsensor" //% blockNamespace=sensors @@ -224,7 +224,7 @@ namespace sensors { * @param ir the infrared sensor */ //% help=input/infrared/proximity - //% block="%infrared|proximity" + //% block="`icons.infraredSensor` %infrared|proximity" //% blockId=infraredGetProximity //% parts="infrared" //% blockNamespace=sensors @@ -240,7 +240,7 @@ namespace sensors { * @param ir the infrared sensor */ //% help=input/infrared/remote-command - //% block="%infrared|remote command" + //% block="`icons.infraredSensor` %infrared|remote command" //% blockId=infraredGetRemoteCommand //% parts="infrared" //% blockNamespace=sensors @@ -258,16 +258,16 @@ namespace sensors { } } - //% fixedInstance whenUsed block="`icons.infraredSensor` 1" + //% fixedInstance whenUsed block="1" export const infraredSensor1: InfraredSensor = new InfraredSensor(1) - //% fixedInstance whenUsed block="`icons.infraredSensor` 2" + //% fixedInstance whenUsed block="2" export const infraredSensor2: InfraredSensor = new InfraredSensor(2) - //% fixedInstance whenUsed block="`icons.infraredSensor` 3" + //% fixedInstance whenUsed block="3" export const infraredSensor3: InfraredSensor = new InfraredSensor(3) - //% fixedInstance whenUsed block="`icons.infraredSensor` 4" + //% fixedInstance whenUsed block="4" export const infraredSensor4: InfraredSensor = new InfraredSensor(4) diff --git a/libs/core/jres/icons/colorSensor-icon.png b/libs/core/jres/icons/colorSensor-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..82c7cf0323926c929633d64e23ab1c22b4901a5e GIT binary patch literal 5317 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 Uz6_CVxc~qF07*qoM6N<$g8ffHCIA2c literal 0 HcmV?d00001 diff --git a/libs/core/output.ts b/libs/core/output.ts index dc912b75..4a87e043 100644 --- a/libs/core/output.ts +++ b/libs/core/output.ts @@ -216,28 +216,28 @@ namespace motors { } } - //% whenUsed fixedInstance block="`icons.motorLarge` A" + //% whenUsed fixedInstance block="large A" export const largeMotorA = new Motor(Output.A, true); - //% whenUsed fixedInstance block="`icons.motorLarge` B" + //% whenUsed fixedInstance block="large B" export const largeMotorB = new Motor(Output.B, true); - //% whenUsed fixedInstance block="`icons.motorLarge` C" + //% whenUsed fixedInstance block="large C" export const largeMotorC = new Motor(Output.C, true); - //% whenUsed fixedInstance block="`icons.motorLarge` D" + //% whenUsed fixedInstance block="large D" export const largeMotorD = new Motor(Output.D, true); - //% whenUsed fixedInstance block="`icons.motorMedium` A" + //% whenUsed fixedInstance block="medium A" export const mediumMotorA = new Motor(Output.A, false); - //% whenUsed fixedInstance block="`icons.motorMedium` B" + //% whenUsed fixedInstance block="medium B" export const mediumMotorB = new Motor(Output.B, false); - //% whenUsed fixedInstance block="`icons.motorMedium` C" + //% whenUsed fixedInstance block="medium C" export const mediumMotorC = new Motor(Output.C, false); - //% whenUsed fixedInstance block="`icons.motorMedium` D" + //% whenUsed fixedInstance block="medium D" export const mediumMotorD = new Motor(Output.D, false); function reset(out: Output) { diff --git a/libs/core/touch.ts b/libs/core/touch.ts index cc9760c4..119bc80d 100644 --- a/libs/core/touch.ts +++ b/libs/core/touch.ts @@ -35,12 +35,28 @@ namespace sensors { return DAL.DEVICE_TYPE_TOUCH } + /** + * Do something when a touch sensor is touched... + * @param sensor the touch sensor that needs to be clicked or used + * @param event the kind of button gesture that needs to be detected + * @param body code to run when the event is raised + */ + //% help=input/touch/on-event + //% blockId=touchEvent block="on `icons.touchSensor` %sensor|%event" + //% parts="touch" + //% blockNamespace=sensors + //% weight=99 blockGap=8 + //% group="Touch Sensor" + onEvent(ev: TouchSensorEvent, body: () => void) { + this.button.onEvent(ev, body) + } + /** * Check if touch sensor is touched. * @param sensor the port to query the request */ //% help=input/touch/is-touched - //% block="%sensor|is touched" + //% block="`icons.touchSensor` %sensor|is touched" //% blockId=touchIsTouched //% parts="touch" //% blockNamespace=sensors @@ -49,30 +65,14 @@ namespace sensors { isTouched() { return this.button.isPressed(); } - - /** - * Do something when a touch sensor is touched... - * @param sensor the touch sensor that needs to be clicked or used - * @param event the kind of button gesture that needs to be detected - * @param body code to run when the event is raised - */ - //% help=input/touch/on-event - //% blockId=touchEvent block="on %sensor|%event" - //% parts="touch" - //% blockNamespace=sensors - //% weight=99 blockGap=8 - //% group="Touch Sensor" - onEvent(ev: TouchSensorEvent, body: () => void) { - this.button.onEvent(ev, body) - } } - //% whenUsed block="`icons.touchSensor` 1" weight=95 fixedInstance + //% whenUsed block="1" weight=95 fixedInstance export const touchSensor1: TouchSensor = new TouchSensor(1) - //% whenUsed block="`icons.touchSensor` 2" weight=95 fixedInstance + //% whenUsed block="2" weight=95 fixedInstance export const touchSensor2: TouchSensor = new TouchSensor(2) - //% whenUsed block="`icons.touchSensor` 3" weight=95 fixedInstance + //% whenUsed block="3" weight=95 fixedInstance export const touchSensor3: TouchSensor = new TouchSensor(3) - //% whenUsed block="`icons.touchSensor` 4" weight=95 fixedInstance + //% whenUsed block="4" weight=95 fixedInstance export const touchSensor4: TouchSensor = new TouchSensor(4) } diff --git a/libs/core/ultrasonic.ts b/libs/core/ultrasonic.ts index d131e70d..069bb664 100644 --- a/libs/core/ultrasonic.ts +++ b/libs/core/ultrasonic.ts @@ -41,9 +41,9 @@ namespace sensors { * @param handler the code to run when detected */ //% help=input/ultrasonic/on - //% block="on %sensor|%event" //% blockId=ultrasonicOn - //% parts="infraredsensor" + //% block="on `icons.ultrasonicSensor` %sensor|%event" + //% parts="ultrasonicsensor" //% blockNamespace=sensors //% weight=100 blockGap=8 //% group="Ultrasonic Sensor" @@ -58,9 +58,9 @@ namespace sensors { * Waits for the event to occur */ //% help=input/ultrasonic/wait - //% block="wait %sensor|for %event" + //% block="wait `icons.ultrasonicSensor` %sensor|for %event" //% blockId=ultrasonicWait - //% parts="infraredsensor" + //% parts="ultrasonicsensor" //% blockNamespace=sensors //% weight=99 blockGap=8 //% group="Ultrasonic Sensor" @@ -73,9 +73,9 @@ namespace sensors { * @param sensor the ultrasonic sensor port */ //% help=input/ultrasonic/distance - //% block="%sensor|distance" + //% block="`icons.ultrasonicSensor` %sensor|distance" //% blockId=sonarGetDistance - //% parts="ultrasonic" + //% parts="ultrasonicsensor" //% blockNamespace=sensors //% weight=65 blockGap=8 //% group="Ultrasonic Sensor" @@ -86,15 +86,15 @@ namespace sensors { } } - //% fixedInstance whenUsed block="`icons.ultrasonicSensor` 1" + //% fixedInstance whenUsed block="1" export const ultrasonic1: UltraSonicSensor = new UltraSonicSensor(1) - //% fixedInstance whenUsed block="`icons.ultrasonicSensor` 4" + //% fixedInstance whenUsed block="4" export const ultrasonic4: UltraSonicSensor = new UltraSonicSensor(4) - //% fixedInstance whenUsed block="`icons.ultrasonicSensor` 2" + //% fixedInstance whenUsed block="2" export const ultrasonic2: UltraSonicSensor = new UltraSonicSensor(2) - //% fixedInstance whenUsed block="`icons.ultrasonicSensor` 3" + //% fixedInstance whenUsed block="3" export const ultrasonic3: UltraSonicSensor = new UltraSonicSensor(3) }