I think this keeps the blockly interface disabled if there is any program executing anywhere ... is it possible to enable it if the active program is not running?  That would allow a user to run one program, then move on to the next rover and program it while the first one is running.  I know that would mean that we need to check if the interface should be enabled when we switch between rovers ... but maybe that won't be too bad?