@@ -1233,6 +1233,32 @@ on top's background stays in the wrong mode.
12331233 (define init-value (lookup-in-color-scheme name))
12341234 (editor:set-standard-style-list-delta style-name init-value)))
12351235
1236+ (define color-scheme-examples-parents '() )
1237+ (define (update-dark-light-preferences-panel-ordering dark-should-be-first?)
1238+ (for ([color-scheme-examples-parent (in-list color-scheme-examples-parents)])
1239+ (define dark-is-first?
1240+ (let loop ([area (car (send color-scheme-examples-parent get-children))])
1241+ (cond
1242+ [(is-a? area message%)
1243+ (equal? (send area get-label) (string-constant dark-color-scheme))]
1244+ [(is-a? area area-container<%>)
1245+ (for/or ([area (in-list (send area get-children))])
1246+ (loop area))]
1247+ [else #f ])))
1248+ (unless (equal? dark-should-be-first? dark-is-first?)
1249+ (send color-scheme-examples-parent
1250+ change-children
1251+ reverse))))
1252+
1253+ (preferences:add-callback
1254+ 'framework:white-on-black-mode?
1255+ (λ (p v)
1256+ (update-dark-light-preferences-panel-ordering
1257+ (match v
1258+ ['platform (white-on-black-panel-scheme?)]
1259+ [#t #t ]
1260+ [#f #f ]))))
1261+
12361262(define (add-color-scheme-preferences-panel #:extras [extras void])
12371263 (preferences:add-panel
12381264 (list (string-constant preferences-colors)
@@ -1298,72 +1324,89 @@ on top's background stays in the wrong mode.
12981324 [#t 2 ]
12991325 [#f 1 ]))))])
13001326
1301- (define (setup-color-scheme-choice dark-mode? label pref-sym)
1302- (define this-mode-color-schemes
1303- (for/list ([color-scheme (in-list known-color-schemes)]
1304- #:when (equal? dark-mode? (color-scheme-white-on-black-base? color-scheme)))
1305- color-scheme))
1306- (define this-mode-choice
1307- (new choice%
1308- [parent top-hp2]
1309- [label label]
1310- [choices (for/list ([color-scheme (in-list this-mode-color-schemes)])
1311- (color-scheme-button-label color-scheme))]
1312- [callback
1313- (λ (_1 _2)
1314- (preferences:set pref-sym
1315- (color-scheme-name
1316- (list-ref this-mode-color-schemes
1317- (send this-mode-choice get-selection)))))]))
1318- (define (update-choice val)
1319- (send this-mode-choice set-selection
1320- (for/or ([i (in-naturals)]
1321- [color-scheme (in-list this-mode-color-schemes)])
1322- (and (equal? (color-scheme-name color-scheme) val)
1323- i))))
1324- (preferences:add-callback pref-sym (λ (sym val) (update-choice val)))
1325- (update-choice (preferences:get pref-sym)))
1326- (setup-color-scheme-choice #f (string-constant light-color-scheme) 'framework:color-scheme-light )
1327- (setup-color-scheme-choice #t (string-constant dark-color-scheme) 'framework:color-scheme-dark )
1328-
13291327 (define color-scheme-examples-vp
13301328 (new-vertical-panel%
13311329 [spacing 10 ]
13321330 [border 10 ]
13331331 [parent vp]))
1334- (for ([color-scheme (in-list known-color-schemes)])
1335- (define hp (new-vertical-panel%
1336- [parent color-scheme-examples-vp]
1337- [alignment '(center top)]
1338- [stretchable-height #t ]
1339- [style '(border)]))
1340- (define t (new racket:text%))
1341- (define str (color-scheme-example color-scheme))
1342- (send t insert str)
1343- (define msg
1344- (new message%
1345- [stretchable-width #f ]
1346- [label (color-scheme-button-label color-scheme)]
1347- [parent hp]))
1348- (define ec (new editor-canvas%
1349- [parent hp]
1350- [style '(no-border auto-hscroll no-vscroll)]
1351- [editor t]))
1352- (define (update-colors defaults?)
1332+ (set! color-scheme-examples-parents
1333+ (cons
1334+ color-scheme-examples-vp
1335+ color-scheme-examples-parents))
1336+ (define (mk-color-scheme-radio-buttons white-on-black? radio-panel pref-sym)
1337+ (for ([color-scheme (in-list known-color-schemes)]
1338+ #:when (equal? white-on-black? (color-scheme-white-on-black-base? color-scheme)))
1339+ (define vp (new-vertical-panel%
1340+ [parent radio-panel]
1341+ [alignment '(left top)]
1342+ [stretchable-height #f ]))
1343+ (define label (new radio-box%
1344+ [parent vp]
1345+ [label #f ]
1346+ [selection
1347+ (if (equal? (preferences:get pref-sym)
1348+ (color-scheme-name color-scheme))
1349+ 0
1350+ #f )]
1351+ [callback
1352+ (λ (_1 _2)
1353+ (preferences:set
1354+ pref-sym
1355+ (color-scheme-name color-scheme)))]
1356+ [choices (list (color-scheme-button-label color-scheme))]))
1357+ (preferences:add-callback
1358+ pref-sym
1359+ (λ (p v)
1360+ (send label set-selection
1361+ (if (equal? v (color-scheme-name color-scheme))
1362+ 0
1363+ #f ))))
1364+ (define t (new racket:text%))
1365+ (define str (color-scheme-example color-scheme))
1366+ (send t insert str)
1367+ (define inner-hp (new-horizontal-panel%
1368+ [parent vp]
1369+ [stretchable-height #f ]))
1370+ (define spacer (new panel%
1371+ [parent inner-hp]
1372+ [stretchable-width #f ]))
1373+ (send spacer min-width 40 )
1374+ (define ec (new editor-canvas%
1375+ [parent inner-hp]
1376+ [style '(no-border auto-hscroll no-vscroll)]
1377+ [editor t]))
1378+ (send ec set-line-count (+ 1 (for/sum ([c (in-string str)])
1379+ (if (equal? c #\newline )
1380+ 1
1381+ 0 ))))
13531382 (define bkg-name 'framework:basic-canvas-background )
13541383 (send ec set-canvas-background
13551384 (lookup-in-color-scheme/given-mapping
13561385 bkg-name
1357- (if defaults?
1358- (hash)
1359- (preferences:get (color-scheme-entry-name->pref-name bkg-name)))
1386+ (preferences:get (color-scheme-entry-name->pref-name bkg-name))
13601387 color-scheme))
1361- (send t set-style-list (color-scheme->style-list color-scheme defaults?)))
1362- (send ec set-line-count (+ 1 (for/sum ([c (in-string str)])
1363- (if (equal? c #\newline )
1364- 1
1365- 0 ))))
1366- (update-colors #f ))
1388+ (send t set-style-list (color-scheme->style-list color-scheme #f ))))
1389+
1390+ (define dark-panel (new vertical-panel%
1391+ [parent color-scheme-examples-vp]
1392+ [stretchable-height #f ]
1393+ [style '(border)]))
1394+ (define light-panel (new vertical-panel%
1395+ [parent color-scheme-examples-vp]
1396+ [stretchable-height #f ]
1397+ [style '(border)]))
1398+ (new message%
1399+ [parent dark-panel]
1400+ [label (string-constant dark-color-scheme)])
1401+ (new message%
1402+ [parent light-panel]
1403+ [label (string-constant light-color-scheme)])
1404+ (mk-color-scheme-radio-buttons #t dark-panel 'framework:color-scheme-dark )
1405+ (mk-color-scheme-radio-buttons #f light-panel 'framework:color-scheme-light )
1406+
1407+ (update-dark-light-preferences-panel-ordering
1408+ (white-on-black-color-scheme?))
1409+
13671410 (define revert-button%
13681411 (new button%
13691412 [label (string-constant revert-colors-to-color-scheme-defaults)]
0 commit comments