#---------- train set event registraton ----------
set event_dispatch_body {}
+set event_selections {}
-proc register-event {re args body} {
- global event_dispatch_body
+proc register-event {selections args re body} {
+ global event_dispatch_body event_selections
+
+ eval lappend event_selections $selections
+
regsub -all {\W+} $re - proc
set proc "event/$proc/[join $args -]"
set suffix {}
set number 0
while {![catch { info args $proc$suffix }]} { set suffix [incr number] }
append proc $suffix
-
+
proc $proc [concat l $args] $body
set al ""
foreach a $args { append al " \$$a" }
sconn "$movfeatcommand $seg $feat $new_posn"
}
-register-event {^.movpos (\w+) feat (\w+) ([01]|\?) } {seg feat posn_new} {
+register-event ?movpos_*_feat {seg feat posn_new} \
+ {^.movpos (\w+) feat (\w+) ([01]|\?) } {
set mid $seg/$feat
if {![movpos-button-gvars $mid]} return
set posn $posn_new
error "lost connection to train set"
}
-register-event {^=connected} {} {
- global pages gui_pipe server port
+register-event {} {} {^=connected} {
+ global pages gui_pipe server port event_selections
- sconn "select-replay ?movpos_*_feat"
+ sconn "select-replay [concat $event_selections]"
foreach page $pages {
set w [pagew $page]
}
}
-register-event {^=failed} {} { error "multiplexer failed: $l" }
-register-event {^=denied} {} { error "multiplexer denied us: $l" }
-register-event {^\+nack} {} { error "multiplexer does not understand" }
+register-event {} {} {^=failed} { error "multiplexer failed: $l" }
+register-event {} {} {^=denied} { error "multiplexer denied us: $l" }
+register-event {} {} {^\+nack} { error "multiplexer does not understand" }
#---------- main program ----------