40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
# Sample script showing how to terminate trains used in operations
|
|
# Prints a list of trains, and then if a train was built, terminates
|
|
# the train by moving it to the end of its route
|
|
#
|
|
# Author: Daniel Boudreau, copyright 2010, 2024
|
|
# Part of the JMRI distribution
|
|
|
|
import jmri
|
|
|
|
class terminateTrains(jmri.jmrit.automat.AbstractAutomaton) :
|
|
def init(self):
|
|
# get the train manager
|
|
self.tm = jmri.InstanceManager.getDefault(jmri.jmrit.operations.trains.TrainManager)
|
|
return
|
|
|
|
def handle(self):
|
|
# get a list of trains from the manager
|
|
trainList = self.tm.getTrainsByIdList()
|
|
print ('number of trains {}'.format(len(trainList)))
|
|
|
|
count = 1
|
|
|
|
# show a list of trains
|
|
for train in trainList :
|
|
print ('train {} {}, {}'.format(count, train.getName(), train.getDescription()))
|
|
count = count + 1
|
|
|
|
# now terminate trains that were built by moving them
|
|
for train in trainList :
|
|
if (train.isBuilt() == True):
|
|
print ('train {} was built'.format(train.getName()))
|
|
while (train.isBuilt() == True):
|
|
print ('move train {}'.format(train.getName()))
|
|
train.move()
|
|
print ('train {} terminated'.format(train.getName()))
|
|
|
|
return False # all done, don't repeat again
|
|
|
|
terminateTrains().start() # create one of these, and start it running
|