@@ -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_ ' + i )
103104 . setAlign ( Blockly . inputs . Align . RIGHT ) ;
104105 }
105106 } ,
@@ -156,6 +157,27 @@ export const pythonFromBlock = function (
156157 return [ code , Order . ATOMIC ] ;
157158}
158159
160+ function createFieldDropdownForPortType ( portType : string , defaultVal : number ) : Blockly . Field {
161+ switch ( portType ) {
162+ case 'can' :
163+ return createFieldNumberDropdown ( 0 , 4 , 1 , defaultVal ) ;
164+ case 'smartio' :
165+ return createFieldNumberDropdown ( 0 , 5 , 1 , defaultVal ) ;
166+ case 'MotionCore port' :
167+ return createFieldNumberDropdown ( 1 , 6 , 1 , defaultVal ) ;
168+ case 'i2c' :
169+ return createFieldNumberDropdown ( 0 , 1 , 1 , defaultVal ) ;
170+ case 'usb in' :
171+ return createFieldNumberDropdown ( 0 , 3 , 1 , defaultVal ) ;
172+ case 'motor' :
173+ return createFieldNumberDropdown ( 1 , 6 , 1 , defaultVal ) ;
174+ case 'servo' :
175+ return createFieldNumberDropdown ( 1 , 6 , 1 , defaultVal ) ;
176+ default :
177+ return createFieldNumberDropdown ( 0 , 99 , 1 , defaultVal ) ;
178+ }
179+ }
180+
159181export function createPort ( portType : string ) {
160182 // Based off of the port type, create the right number and type of ports
161183 const ports : MrcPortType [ ] = [ ] ;
0 commit comments