//!wrt $BSPEC:{"icn":"apps/bassoon","cpr":"Copyright (C) Windows 96 Team 2023.","dsc":"BassoonTracker","frn":"BassoonTracker","ver":1,"ssy":"gui"}

const{OpenFileDialog:OpenFileDialog,Theme:Theme}=w96.ui,{WindowParams:WindowParams}=w96;class BassoonTrackerApplication extends WApplication{constructor(){super()}async main(e){super.main(e),this.file=e[1],this._createWindow()}async _createWindow(){var e=new WindowParams;e.title="BassoonTracker",e.initialWidth=780,e.initialHeight=730;var i=this.createWindow(e,!0);let t;i.registerWindow(),i.registerAppBar(),this.file&&await FS.exists(this.file)&&(t=URL.createObjectURL(new Blob([await FS.readbin(this.file)]))),i.setHtml(`<iframe src="/system/apps/bassoon${t?"?file="+t:""}"></iframe>`);i.wndObject.querySelector(".window-html-content").classList.add("bassoon-app"),i.ondarkenelements=()=>{n.style.pointerEvents="none"},i.onlightenelements=()=>{n.style.pointerEvents=""},i.setWindowIcon(await Theme.getIconUrl("apps/bassoon","16x16"));const n=i.wndObject.querySelector("iframe");n.contentWindow.W96={requestFile:e=>{new OpenFileDialog("/",["mod","xm"],(async i=>{i&&e(URL.createObjectURL(new Blob([await FS.readbin(i)])))})).show()},setPlaying:e=>{e?i.setTitle(e+" - BassoonTracker"):i.setTitle("BassoonTracker")}},this.mainwnd=i,i.show()}}

return await WApplication.execAsync(new BassoonTrackerApplication(), this.boxedEnv.args, this);