sped up opening of language dialog by doing work when show details is clicked
svn: r1187
This commit is contained in:
parent
4148dc0764
commit
2e84a99401
|
@ -348,16 +348,23 @@
|
||||||
;; get/set-selected-language-settings (union #f (-> settings))
|
;; get/set-selected-language-settings (union #f (-> settings))
|
||||||
(define get/set-selected-language-settings #f)
|
(define get/set-selected-language-settings #f)
|
||||||
|
|
||||||
;; language-mixin : (implements language<%>) (implements area-container<%>) get/set ->
|
(define details-computed? #f)
|
||||||
|
|
||||||
|
;; language-mixin : (implements language<%>)
|
||||||
|
;; (-> (implements area-container<%>))
|
||||||
|
;; get/set
|
||||||
|
;; ->
|
||||||
;; ((implements hierlist<%>) -> (implements hierlist<%>))
|
;; ((implements hierlist<%>) -> (implements hierlist<%>))
|
||||||
;; a mixin that responds to language selections and updates the details-panel
|
;; a mixin that responds to language selections and updates the details-panel
|
||||||
(define (language-mixin language language-details-panel get/set-settings)
|
(define (language-mixin language get-language-details-panel get/set-settings)
|
||||||
(λ (%)
|
(λ (%)
|
||||||
(class* % (hieritem-language<%>)
|
(class* % (hieritem-language<%>)
|
||||||
(init-rest args)
|
(init-rest args)
|
||||||
(public selected)
|
(public selected)
|
||||||
(define (selected)
|
(define (selected)
|
||||||
(send details-panel active-child language-details-panel)
|
(let ([ldp (get-language-details-panel)])
|
||||||
|
(when ldp
|
||||||
|
(send details-panel active-child ldp)))
|
||||||
(send one-line-summary-message set-label (send language get-one-line-summary))
|
(send one-line-summary-message set-label (send language get-one-line-summary))
|
||||||
(send revert-to-defaults-button enable #t)
|
(send revert-to-defaults-button enable #t)
|
||||||
(update-manual-ordering-text language)
|
(update-manual-ordering-text language)
|
||||||
|
@ -432,6 +439,9 @@
|
||||||
n-sp
|
n-sp
|
||||||
(+ n-ep 1)))))
|
(+ n-ep 1)))))
|
||||||
|
|
||||||
|
;; construct-details : (union (-> void) #f)
|
||||||
|
(define construct-details void)
|
||||||
|
|
||||||
;; add-language-to-dialog : (instanceof language<%>) -> void
|
;; add-language-to-dialog : (instanceof language<%>) -> void
|
||||||
;; adds the language to the dialog
|
;; adds the language to the dialog
|
||||||
;; opens all of the turn-down tags
|
;; opens all of the turn-down tags
|
||||||
|
@ -469,44 +479,68 @@
|
||||||
[second-number #f]) ;; only non-#f during the second iteration in which case it is the first iterations number
|
[second-number #f]) ;; only non-#f during the second iteration in which case it is the first iterations number
|
||||||
(cond
|
(cond
|
||||||
[(null? (cdr positions))
|
[(null? (cdr positions))
|
||||||
(let-values ([(language-details-panel get/set-settings)
|
(let* ([language-details-panel #f]
|
||||||
(make-details-panel language)])
|
[real-get/set-settings
|
||||||
(let* ([position (car positions)]
|
(case-lambda
|
||||||
[number (car numbers)]
|
[()
|
||||||
[mixin (compose
|
(cond
|
||||||
number-mixin
|
[(equal? (send language-to-show get-language-position)
|
||||||
(language-mixin language language-details-panel get/set-settings))]
|
(send language get-language-position))
|
||||||
[item
|
settings-to-show]
|
||||||
(send hier-list new-item
|
[else
|
||||||
(if second-number
|
(send language default-settings)])]
|
||||||
(compose second-number-mixin mixin)
|
[(x) (void)])]
|
||||||
mixin))]
|
[get-language-details-panel
|
||||||
[text (send item get-editor)]
|
(lambda () language-details-panel)]
|
||||||
[delta (send language get-style-delta)])
|
[get/set-settings (lambda x (apply real-get/set-settings x))]
|
||||||
(send item set-number number)
|
[position (car positions)]
|
||||||
(when second-number
|
[number (car numbers)]
|
||||||
(send item set-second-number second-number))
|
[mixin (compose
|
||||||
(send text insert position)
|
number-mixin
|
||||||
(when delta
|
(language-mixin language get-language-details-panel get/set-settings))]
|
||||||
(cond
|
[item
|
||||||
[(list? delta)
|
(send hier-list new-item
|
||||||
(for-each (λ (x)
|
(if second-number
|
||||||
(send text change-style
|
(compose second-number-mixin mixin)
|
||||||
(car x)
|
mixin))]
|
||||||
(cadr x)
|
[text (send item get-editor)]
|
||||||
(caddr x)))
|
[delta (send language get-style-delta)])
|
||||||
delta)]
|
|
||||||
[(is-a? delta style-delta%)
|
(set! construct-details
|
||||||
(send text change-style
|
(let ([old construct-details])
|
||||||
(send language get-style-delta)
|
(lambda ()
|
||||||
0
|
(old)
|
||||||
(send text last-position))])))
|
(let-values ([(language-details-panel-real get/set-settings)
|
||||||
(cond
|
(make-details-panel language)])
|
||||||
[(equal? (send language-to-show get-language-position)
|
(set! language-details-panel language-details-panel-real)
|
||||||
(send language get-language-position))
|
(set! real-get/set-settings get/set-settings))
|
||||||
(get/set-settings settings-to-show)]
|
|
||||||
[else
|
(cond
|
||||||
(get/set-settings (send language default-settings))]))]
|
[(equal? (send language-to-show get-language-position)
|
||||||
|
(send language get-language-position))
|
||||||
|
(get/set-settings settings-to-show)
|
||||||
|
(send details-panel active-child language-details-panel)]
|
||||||
|
[else
|
||||||
|
(get/set-settings (send language default-settings))]))))
|
||||||
|
|
||||||
|
(send item set-number number)
|
||||||
|
(when second-number
|
||||||
|
(send item set-second-number second-number))
|
||||||
|
(send text insert position)
|
||||||
|
(when delta
|
||||||
|
(cond
|
||||||
|
[(list? delta)
|
||||||
|
(for-each (λ (x)
|
||||||
|
(send text change-style
|
||||||
|
(car x)
|
||||||
|
(cadr x)
|
||||||
|
(caddr x)))
|
||||||
|
delta)]
|
||||||
|
[(is-a? delta style-delta%)
|
||||||
|
(send text change-style
|
||||||
|
(send language get-style-delta)
|
||||||
|
0
|
||||||
|
(send text last-position))])))]
|
||||||
[else (let* ([position (car positions)]
|
[else (let* ([position (car positions)]
|
||||||
[number (car numbers)]
|
[number (car numbers)]
|
||||||
[sub-ht/sub-hier-list
|
[sub-ht/sub-hier-list
|
||||||
|
@ -651,13 +685,21 @@
|
||||||
;; details-callback : -> void
|
;; details-callback : -> void
|
||||||
;; flips the details-shown? flag and resets the GUI
|
;; flips the details-shown? flag and resets the GUI
|
||||||
(define (details-callback)
|
(define (details-callback)
|
||||||
(set! details-shown? (not details-shown?))
|
(let ([do-construction? (and construct-details #t)])
|
||||||
(when re-center
|
(when do-construction?
|
||||||
(send re-center begin-container-sequence))
|
(send details-button enable #f)
|
||||||
(update-show/hide-details)
|
(construct-details)
|
||||||
(when re-center
|
(set! construct-details #f))
|
||||||
(send re-center center 'both)
|
|
||||||
(send re-center end-container-sequence)))
|
(set! details-shown? (not details-shown?))
|
||||||
|
(when re-center
|
||||||
|
(send re-center begin-container-sequence))
|
||||||
|
(update-show/hide-details)
|
||||||
|
(when re-center
|
||||||
|
(send re-center center 'both)
|
||||||
|
(send re-center end-container-sequence))
|
||||||
|
(when do-construction?
|
||||||
|
(send details-button enable #t))))
|
||||||
|
|
||||||
;; show/hide-details : -> void
|
;; show/hide-details : -> void
|
||||||
;; udpates the GUI based on the details-shown? flag
|
;; udpates the GUI based on the details-shown? flag
|
||||||
|
|
Loading…
Reference in New Issue
Block a user