From: ian Date: Sun, 1 Jun 2008 23:33:48 +0000 (+0000) Subject: register-event takes patterns for select, too X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=94d1d8975fd22d9a13febecb3c9f8d338b5e6a99;p=trains.git register-event takes patterns for select, too --- diff --git a/hostside/gui b/hostside/gui index 7435607..8045697 100755 --- a/hostside/gui +++ b/hostside/gui @@ -37,16 +37,20 @@ proc bgerror {emsg} { #---------- 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" } @@ -117,7 +121,8 @@ proc movpos-invoked {mid} { 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 @@ -210,10 +215,10 @@ proc train-event-eof {} { 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] @@ -229,9 +234,9 @@ register-event {^=connected} {} { } } -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 ----------