@@ -79,8 +79,7 @@ export class ExtendedPythonGenerator extends PythonGenerator {
7979 private hasAnyEventHandlers = false ;
8080
8181 private classMethods : { [ key : string ] : string } = Object . create ( null ) ;
82- // For eventHandlers, the keys are the function name.
83- private eventHandlers : { [ key : string ] : { sender : string , eventName : string } } = Object . create ( null ) ;
82+ private registerEventHandlerStatements : string [ ] = [ ] ;
8483 // Opmode details
8584 private details : OpModeDetails | null = null ;
8685
@@ -180,11 +179,8 @@ export class ExtendedPythonGenerator extends PythonGenerator {
180179 this . classMethods [ methodName ] = code ;
181180 }
182181
183- addEventHandler ( sender : string , eventName : string , funcName : string ) : void {
184- this . eventHandlers [ funcName ] = {
185- 'sender' : sender ,
186- 'eventName' : eventName
187- }
182+ addRegisterEventHandlerStatement ( registerEventHandlerStatement : string ) : void {
183+ this . registerEventHandlerStatements . push ( registerEventHandlerStatement ) ;
188184 }
189185
190186 getComponentPortParameters ( ) : string [ ] {
@@ -214,12 +210,10 @@ export class ExtendedPythonGenerator extends PythonGenerator {
214210 const classDef = 'class ' + className + '(' + simpleBaseClassName + '):\n' ;
215211 const classMethods = [ ] ;
216212
217- if ( this . eventHandlers && Object . keys ( this . eventHandlers ) . length > 0 ) {
213+ if ( this . registerEventHandlerStatements && this . registerEventHandlerStatements . length > 0 ) {
218214 let code = 'def register_event_handlers(self):\n' ;
219- for ( const funcName in this . eventHandlers ) {
220- const event = this . eventHandlers [ funcName ] ;
221- code += this . INDENT + 'self.' + event . sender + '.register_event_handler("' +
222- event . eventName + '", self.' + funcName + ')\n' ;
215+ for ( const registerEventHandlerStatement of this . registerEventHandlerStatements ) {
216+ code += this . INDENT + registerEventHandlerStatement ;
223217 }
224218 classMethods . push ( code ) ;
225219 }
@@ -233,8 +227,8 @@ export class ExtendedPythonGenerator extends PythonGenerator {
233227 }
234228 classMethods . push ( this . classMethods [ name ] )
235229 }
236- this . eventHandlers = Object . create ( null ) ;
237230 this . classMethods = Object . create ( null ) ;
231+ this . registerEventHandlerStatements = [ ] ;
238232 this . componentPorts = Object . create ( null ) ;
239233 code = classDef + this . prefixLines ( classMethods . join ( '\n\n' ) , this . INDENT ) ;
240234 if ( decorations ) {
0 commit comments