/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠJ ason ĠMon k Ċ Ġ* ĠĊ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* ĠĊ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* ĠĊ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . mon kop edia . lan tern a Ċ Ċ import Ġcom . google code . lan tern a . TextColor Ċ import Ġcom . google code . lan tern a . gui 2 . Default WindowManager Ċ import Ġcom . google code . lan tern a . gui 2 . Empty Space Ċ import Ġcom . google code . lan tern a . gui 2 . Multi Window Text GUI Ċ import Ġcom . google code . lan tern a . gui 2 . Window Ċ import Ġcom . google code . lan tern a . screen . Screen Ċ import Ġcom . google code . lan tern a . screen . Terminal Screen Ċ import Ġcom . google code . lan tern a . terminal . Default Terminal Factory Ċ import Ġcom . google code . lan tern a . terminal . Terminal Ċ import Ġcom . mon kop edia . asci if ont . Font Loader Ċ import Ġjava . io . File Ċ import Ġjava . util . Properties Ċ import Ġjava . util . concurrent . Executor Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher Ċ import Ġkotlinx . coroutines . as Coroutine Dispatcher Ċ Ċ object ĠL an tern a Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġterminal : ĠTerminal ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġlateinit Ġvar Ġscreen : ĠScreen ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġlateinit Ġvar Ġgui : ĠMulti Window Text GUI ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġlateinit Ġvar Ġgui Dispatcher : ĠCor outine Dispatcher ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġlateinit Ġvar Ġfont Loader : ĠFont Loader ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġval Ġactive Windows Ġ= Ġmutable Set Of < Window >() ĊĊĠĠĠ Ġfun Ġinit ( font Loader Root : ĠFile , Ġtheme : ĠTheme Data , Ġfonts : ĠProperties ) Ġ{ ĊĠĠĠĠĠĠĠ Ġterminal Ġ= ĠDefault Terminal Factory (). create Terminal () ĊĠĠĠĠĠĠĠ Ġscreen Ġ= ĠTerminal Screen ( terminal ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . start Screen () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġgui Ġ= ĠMulti Window Text GUI ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault WindowManager (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEmpty Space ( TextColor . ANSI . BLACK ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġgui Dispatcher Ġ= ĠExecutor Ġ{ Ġrunnable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Thread . currentThread () Ġ=== Ġgui . gui Thread . thread ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrunnable . run () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgui . gui Thread . invoke Later ( run nable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. as Coroutine Dispatcher () ĊĠĠĠĠĠĠĠ Ġgui . theme Ġ= ĠTheme Data Impl ( theme ) Ċ // ĠĠĠĠĠĠĠ Ġgui . theme Ġ= ĠProperty Theme ( File ( k index Home , Ġ" theme . properties "). properties ) ĊĠĠĠĠĠĠĠ Ġfont Loader Ġ= ĠFont Loader ( font Loader Root , Ġfonts ) ĊĠĠĠ Ġ} Ċ } Ċ