From dc4eb77b109d8d5718a7fcb27d183dc6fb7e6db6 Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Fri, 14 Nov 2008 05:01:55 +0000 Subject: [PATCH] remember the last-chosen assignment svn: r12440 --- collects/handin-client/client-gui.ss | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/collects/handin-client/client-gui.ss b/collects/handin-client/client-gui.ss index acb0f40b1d..4dcc32e693 100644 --- a/collects/handin-client/client-gui.ss +++ b/collects/handin-client/client-gui.ss @@ -44,6 +44,8 @@ (define (remember-user user) (preferences:set preference-key user)) +(define remembered-assignment (make-parameter #f)) + (define (connect) (handin-connect server port-no)) ;; parameter-like procedure that keeps the password cached for a few minutes @@ -134,7 +136,10 @@ [label "Assignment:"] [choices null] [parent this] - [callback void] + [callback (lambda (c e) + (remembered-assignment + (send assignment get-string + (send assignment get-selection))))] [stretchable-width #t])) (define button-panel @@ -304,13 +309,17 @@ (escape))]) (semaphore-wait go-sema) (let* ([h (connect)] - [l (retrieve-active-assignments h)]) + [l (retrieve-active-assignments h)] + [n (cond [(member (remembered-assignment) l) + => (lambda (r) (- (length l) (length r)))] + [else 0])]) (when (null? l) (handin-disconnect h) (error 'handin "there are no active assignments")) (set! connection h) (for ([assign (in-list l)]) (send assignment append assign)) (send assignment enable #t) + (send assignment set-selection n) (set! ok-can-enable? #t) (activate-ok) (send status set-label