@@ -25,6 +25,7 @@ import { Order } from 'blockly/python';
2525import { MRC_STYLE_PORTS } from '../themes/styles'
2626import { createFieldNonEditableText } from '../fields/FieldNonEditableText' ;
2727import { ExtendedPythonGenerator } from '../editor/extended_python_generator' ;
28+ import { createFieldNumberDropdown } from '../fields/field_number_dropdown' ;
2829
2930export const BLOCK_NAME = 'mrc_port' ;
3031export const OUTPUT_NAME = 'mrc_port' ;
@@ -99,7 +100,7 @@ const PORT = {
99100 const port = this . ports_ [ i ] ;
100101 this . appendDummyInput ( 'PORT_' + i )
101102 . appendField ( createFieldNonEditableText ( port . portType ) , 'TYPE_' + i )
102- . appendField ( new Blockly . FieldTextInput ( port . portNumber . toString ( ) ) , 'PORT_NUM_' + i )
103+ . appendField ( createFieldDropdownForPortType ( port . portType , port . portNumber ) , 'PORT_NUM_' + i )
103104 . setAlign ( Blockly . inputs . Align . RIGHT ) ;
104105 }
105106 } ,
@@ -156,10 +157,31 @@ export const pythonFromBlock = function (
156157 return [ code , Order . ATOMIC ] ;
157158}
158159
159- export function createPort ( portType : string ) {
160+ function createFieldDropdownForPortType ( portType : string , defaultVal : number ) : Blockly . Field {
161+ switch ( portType ) {
162+ case 'can' :
163+ return createFieldNumberDropdown ( 0 , 4 , defaultVal ) ;
164+ case 'smartio' :
165+ return createFieldNumberDropdown ( 0 , 5 , defaultVal ) ;
166+ case 'MotionCore port' :
167+ return createFieldNumberDropdown ( 1 , 6 , defaultVal ) ;
168+ case 'i2c' :
169+ return createFieldNumberDropdown ( 0 , 1 , defaultVal ) ;
170+ case 'usb in' :
171+ return createFieldNumberDropdown ( 0 , 3 , defaultVal ) ;
172+ case 'motor' :
173+ return createFieldNumberDropdown ( 1 , 6 , defaultVal ) ;
174+ case 'servo' :
175+ return createFieldNumberDropdown ( 1 , 6 , defaultVal ) ;
176+ default :
177+ return createFieldNumberDropdown ( 0 , 99 , defaultVal ) ;
178+ }
179+ }
180+
181+ export function createPort ( portType : string ) {
160182 // Based off of the port type, create the right number and type of ports
161- const ports : MrcPortType [ ] = [ ] ;
162- switch ( portType ) {
183+ const ports : MrcPortType [ ] = [ ] ;
184+ switch ( portType ) {
163185 case 'CAN_PORT' :
164186 ports . push ( { portType : 'can' , portNumber : 1 } ) ;
165187 break ;
0 commit comments