Files
JIMRI/jython/WiThrottleList.py
T
2026-06-17 14:00:51 +02:00

38 lines
1.5 KiB
Python

# WiThrottleList.py -- Sample script to access the WiThrottle session table.
# Note: Depends on the jmri.jmrit.withrottle.UserInterface.getThrottleList() public method introduced with JMRI 5.9.7.
#
# The WiThrottle server must be running before the script is run. When the script runs, it finds the
# WiThrottle window and then attaches a TableModelListener to the table that holds the current
# WiThrottle sessions. When the session list changes, the "tableChanged" event occurs. The only
# event is UPDATE. There are no details about what changed.
#
# Author: Dave Sand copyright (c) 2024
import java
import javax.swing.event.TableModelListener
import jmri
throttleList = None
# Define listener
class TableListener(javax.swing.event.TableModelListener):
def tableChanged(self, event):
print 'Event type = {}'.format(event.getType())
rows = throttleList.getRowCount()
for row in range(0, rows):
val = throttleList.getValueAt(row, 1) # Column 1 is the DCC address
print ' addr = {}'.format(val)
wtListener = TableListener()
# Find the throttle list table
for frame in jmri.util.JmriJFrame.getFrameList():
if isinstance(frame, jmri.jmrit.withrottle.UserInterface):
throttleList = frame.getThrottleList()
# Finish setup
if throttleList is not None:
throttleList.addTableModelListener(wtListener)
print "WiThrottle server is running, the listener is attached to the WiThrottle session table"
else:
print "WiThrottle server is NOT running"