48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
# Used in operations.
|
|
# Sample script to remove car kernels created by operation scripts.
|
|
# Use this script after terminating a train that services kernels created by operation scripts.
|
|
#
|
|
# Author: Daniel Boudreau, copyright 2015, 2024
|
|
#
|
|
|
|
|
|
import jmri
|
|
|
|
class RemoveCarKernels(jmri.jmrit.automat.AbstractAutomaton):
|
|
def init(self):
|
|
|
|
# used when creating kernel names
|
|
self.regex = "_$_"
|
|
|
|
print ('Script to remove operation created kernels starts now!')
|
|
|
|
return
|
|
|
|
def handle(self):
|
|
|
|
# get the car manager
|
|
carManager = jmri.InstanceManager.getDefault(jmri.jmrit.operations.rollingstock.cars.CarManager)
|
|
# get the kernel manager
|
|
kernelManager = jmri.InstanceManager.getDefault(jmri.jmrit.operations.rollingstock.cars.KernelManager)
|
|
|
|
# get a list of cars
|
|
carList = carManager.getByIdList()
|
|
|
|
for car in carList:
|
|
if car.getKernel() == None:
|
|
continue
|
|
# only delete kernels created by scripts
|
|
if not self.regex in car.getKernel().getName():
|
|
continue
|
|
# only delete kernels that don't have a train assignment or final destination
|
|
if not car.getTrain() == None or not car.getFinalDestination() == None:
|
|
continue
|
|
print ('Car ({}) type ({}) is part of kernel ({})'.format(car.toString(), car.getTypeName(), car.getKernel().getName()))
|
|
# delete the kernel
|
|
kernelManager.deleteKernel(car.getKernel().getName())
|
|
|
|
print ('Done')
|
|
return False # all done, don't repeat again
|
|
|
|
RemoveCarKernels().start() # create one of these, and start it running
|