@@ -216,7 +216,7 @@ impl NotationApp {
216216 }
217217 }
218218 }
219- pub fn load_tab < F : Fn ( String ) -> Option < ProtoTab > > (
219+ pub fn load_tab < F : Fn ( String ) -> Option < TabAsset > > (
220220 commands : & mut Commands ,
221221 time : & Time ,
222222 windows : & mut Windows ,
@@ -231,7 +231,7 @@ impl NotationApp {
231231 if state. window_width > 0.0
232232 && state. window_height > 0.0
233233 && state. tab . is_none ( )
234- && state. parse_error . is_none ( )
234+ && state. tab_error . is_none ( )
235235 {
236236 let mut count = 0 ;
237237 for _ in entities_query. iter ( ) {
@@ -274,20 +274,29 @@ impl NotationApp {
274274 return ;
275275 }
276276 println ! ( "\n load_tab(): Loading: {}" , state. tab_path) ;
277- if let Some ( tab) = load_tab ( state. tab_path . clone ( ) ) {
278- match Tab :: try_parse_arc ( tab, settings. add_ready_section , state. bars_range ) {
279- Ok ( tab) => {
280- state. tab = Some ( tab. clone ( ) ) ;
281- if let Some ( window) = windows. get_primary_mut ( ) {
282- let title = format ! ( "{} - {}" , NotationApp :: TITLE , state. tab_path) ;
283- window. set_title ( title) ;
284- }
285- theme. _bypass_systems = false ;
286- evts. send ( AddTabEvent ( tab) ) ;
287- }
288- Err ( err) => {
289- println ! ( "nload_tab(): Parse Tab Failed: {:?}" , err) ;
290- state. parse_error = Some ( err) ;
277+ if state. tab_error . is_none ( ) {
278+ if let Some ( tab_asset) = load_tab ( state. tab_path . clone ( ) ) {
279+ match tab_asset. tab {
280+ Ok ( tab) => {
281+ match Tab :: try_parse_arc ( tab, settings. add_ready_section , state. bars_range ) {
282+ Ok ( tab) => {
283+ state. tab = Some ( tab. clone ( ) ) ;
284+ if let Some ( window) = windows. get_primary_mut ( ) {
285+ let title = format ! ( "{} - {}" , NotationApp :: TITLE , state. tab_path) ;
286+ window. set_title ( title) ;
287+ }
288+ theme. _bypass_systems = false ;
289+ evts. send ( AddTabEvent ( tab) ) ;
290+ }
291+ Err ( err) => {
292+ println ! ( "nload_tab(): Parse Tab Failed: {:?}" , err) ;
293+ state. tab_error = Some ( TabError :: ParseFailed ( err) ) ;
294+ }
295+ }
296+ } ,
297+ Err ( err) => {
298+ state. tab_error = Some ( err) ;
299+ } ,
291300 }
292301 }
293302 }
@@ -297,10 +306,10 @@ impl NotationApp {
297306 asset_server : & AssetServer ,
298307 assets : & Assets < TabAsset > ,
299308 tab_path : String ,
300- ) -> Option < ProtoTab > {
309+ ) -> Option < TabAsset > {
301310 let tab_asset: Handle < TabAsset > = asset_server. load ( tab_path. as_str ( ) ) ;
302311 if let Some ( asset) = assets. get ( & tab_asset) {
303- Some ( asset. tab . clone ( ) )
312+ Some ( asset. clone ( ) )
304313 } else {
305314 None
306315 }
0 commit comments