Index: dashboard-tests.scm ================================================================== --- dashboard-tests.scm +++ dashboard-tests.scm @@ -240,14 +240,16 @@ (iup:hbox ; #:expand "YES" (run-info-panel keydat testdat runname) (test-info-panel testdat store-label widgets)) (host-info-panel testdat store-label) ;; The controls - (iup:frame #:title "Actions" ; #:expand "HORIZONTAL" - (iup:hbox ; #:expand "HORIZONTAL" ;; the actions box - (iup:button "View Log" #:action viewlog #:expand "YES") - (iup:button "Start Xterm" #:action xterm #:expand "YES"))) + (iup:frame #:title "Actions" + (iup:hbox + (iup:vbox + (iup:button "View Log" #:action viewlog #:expand "HORIZONTAL")) + (iup:vbox + (iup:button "Start Xterm" #:action xterm #:expand "YES")))) (set-fields-panel test-id testdat)))) (iup:show self) ;; Now start keeping the gui updated from the db (let loop ((i 0)) (thread-sleep! 0.1) Index: dashboard.scm ================================================================== --- dashboard.scm +++ dashboard.scm @@ -132,24 +132,30 @@ (set! *allruns* result) maxtests)) (define (update-labels uidat) (let* ((rown 0) - (lftcol (vector-ref uidat 0)) - (maxn (- (vector-length lftcol) 1))) - (let loop ((i 0)) - (iup:attribute-set! (vector-ref lftcol i) "TITLE" "") - (if (< i maxn) - (loop (+ i 1)))) + (lftcol (vector-ref uidat 0)) + (numcols (vector-length lftcol)) + (maxn (- numcols 1)) + (allvals (make-vector numcols ""))) (for-each (lambda (name) (if (<= rown maxn) (let ((labl (vector-ref lftcol rown))) - (iup:attribute-set! labl "TITLE" name))) + (vector-set! allvals rown name))) (set! rown (+ 1 rown))) (if (> (length *alltestnamelst*) *start-test-offset*) (drop *alltestnamelst* *start-test-offset*) - '())))) ;; *alltestnamelst*)))) + '())) + (let loop ((i 0)) + (let* ((lbl (vector-ref lftcol i)) + (oldval (iup:attribute lbl "TITLE")) + (newval (vector-ref allvals i))) + (if (not (equal? oldval newval)) + (iup:attribute-set! lbl "TITLE" newval)) + (if (< i maxn) + (loop (+ i 1))))))) (define (get-color-for-state-status state status) (case (string->symbol state) ((COMPLETED) (if (equal? status "PASS")