package Ġsilent orb . my th ic . editing . components Ċ Ċ import Ġimg ui . ImGui Ċ import Ġsilent orb . my th ic . editing . general . Context Command Ċ import Ġsilent orb . my th ic . editing . general . Get Shortcut Ċ import Ġsilent orb . my th ic . editing . general . Ke yst roke Bindings Ċ import Ġsilent orb . my th ic . editing . general . Menu Channel Ċ import Ġsilent orb . my th ic . editing . main .* Ċ import Ġsilent orb . my th ic . h appen ings . Command Ċ Ċ fun Ġget Menu Items ( menus : ĠContext Menus , Ġpath : ĠPath List ): ĠContext Menus Ġ= ĊĠĠĠ Ġmenus ĊĠĠĠĠĠĠĠ Ġ. filter Keys Ġ{ Ġit . drop Last ( 1 ) Ġ== Ġpath Ġ} Ċ Ċ fun Ġdraw MenuItem ( channel : ĠMenu Channel , Ġitem : ĠMenuItem ): ĠList < Command > Ġ{ ĊĠ Ġval Ġcommand Type Ġ= Ġitem . command Type ĊĠ Ġval Ġcommand Ġ= Ġitem . command ĊĠ Ġval Ġshortcut Ġ= Ġ( if Ġ( command Type Ġ!= Ġnull ) Ġchannel . get Shortcut ( command Type ) Ġelse Ġnull ) Ġ?: Ġ"" ĊĠ Ġval Ġget MenuItem State Ġ= Ġitem . getState ĊĠ Ġval Ġexpanded Ġ= Ġif Ġ( get MenuItem State Ġ!= Ġnull ) ĊĠĠĠ ĠImGui . menuItem ( item . label , Ġshortcut , Ġget MenuItem State ( channel . editor )) ĊĠ Ġelse ĊĠĠĠ ĠImGui . menuItem ( item . label , Ġshortcut ) ĊĊĠ Ġreturn Ġif Ġ( expanded Ġ&& Ġ( command Ġ!= Ġnull Ġ|| Ġcommand Type Ġ!= Ġnull )) Ġ{ ĊĠĠĠ ĠlistOf ( command Ġ?: ĠCommand ( type Ġ= Ġcommand Type !! )) ĊĠ Ġ} Ġelse ĊĠĠĠ ĠlistOf () Ċ } Ċ Ċ fun Ġsort Menu ( items : ĠContext Menus ) Ġ= ĊĠĠĠ Ġitems . entries ĊĠĠĠĠĠĠĠ Ġ. sorted With ( compare By ({ Ġit . value . weight Ġ}, Ġ{ Ġit . value . label Ġ})) Ċ Ċ fun Ġdraw Menu Items ( channel : ĠMenu Channel , Ġitems : ĠContext Menus ): ĠList < Command > Ġ= ĊĠĠĠ Ġsort Menu ( items ) ĊĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġdraw MenuItem ( channel , Ġit . value ) Ġ} Ċ Ċ fun Ġdraw Menu ( channel : ĠMenu Channel , Ġpath : ĠPath List , Ġitem : ĠMenuItem ): ĠList < Command > Ġ= ĊĠĠĠ Ġif Ġ( ImGui . begin Menu ( item . label )) Ġ{ ĊĠĠĠĠĠ Ġval Ġitems Ġ= Ġget Menu Items ( channel . menus , Ġpath ) ĊĠĠĠĠĠ Ġval Ġresult Ġ= Ġdraw Menu Items ( channel , Ġitems ) ĊĠĠĠĠĠ ĠImGui . end Menu () ĊĠĠĠĠĠ Ġresult ĊĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠ ĠlistOf () Ċ Ċ fun Ġdraw Menu ( channel : ĠMenu Channel , Ġitems : ĠContext Menus ) Ġ= ĊĠĠĠ Ġsort Menu ( items ) ĊĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġdraw Menu ( channel , Ġit . key , Ġit . value ) Ġ} Ċ Ċ fun Ġdraw Main MenuBar ( channel : ĠMenu Channel , Ġpath : ĠPath List ): ĠMenu Response Ġ= ĊĠĠĠ Ġif Ġ( ImGui . begin Main MenuBar ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġitems Ġ= Ġget Menu Items ( channel . menus , Ġpath ) ĊĠĠĠĠĠ Ġval Ġresult Ġ= Ġdraw Menu ( channel , Ġitems ) ĊĠĠĠĠĠ ĠImGui . end Main MenuBar () ĊĠĠĠĠĠ Ġresult ĊĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠ ĠlistOf () Ċ Ċ fun Ġdraw MenuBar ( channel : ĠMenu Channel , Ġitems : ĠContext Menus ): ĠMenu Response Ġ= ĊĠĠĠ Ġif Ġ( ImGui . begin MenuBar ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġresult Ġ= Ġdraw Menu ( channel , Ġitems ) ĊĠĠĠĠĠ ĠImGui . end MenuBar () ĊĠĠĠĠĠ Ġresult ĊĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠ ĠlistOf () Ċ Ċ fun Ġget Shortcut For Context ( bindings : ĠKe yst roke Bindings , Ġcontext : ĠString ): ĠGet Shortcut Ġ= Ġ{ Ġcommand Ġ-> ĊĠ Ġbindings [ Context Command ( context , Ġcommand )] Ċ } Ċ Ċ fun Ġnew Menu Channel ( editor : ĠEditor , Ġcontext : ĠString ): ĠMenu Channel Ġ= ĊĠĠĠ ĠMenu Channel ( ĊĠĠĠĠĠĠĠ Ġget Shortcut Ġ= Ġget Shortcut For Context ( editor . bindings , Ġcontext ), ĊĠĠĠĠĠĠĠ Ġeditor Ġ= Ġeditor , ĊĠĠĠĠĠĠĠ Ġmenus Ġ= Ġeditor . enum er ations . menus , ĊĠĠĠ Ġ) Ċ Ċ fun Ġg izmo Menu Toggle State ( g izmo : ĠString ): ĠGet MenuItem State Ġ= Ġ{ Ġeditor Ġ-> ĊĠ Ġeditor . persistent State . visible G izmo Types . contains ( g izmo ) Ċ } Ċ