private void LoadLayoutFromSettings(MRUAdditionalData data, bool resetLayoutIfFailed = true) { if (data == null) { return; } var layout = isInEditorLayout ? data.DockingLayoutEditors : data.DockingLayout; BindableSelectedItemsControl.DisableBindings = true; try { // This exception is normal and will trigger a reset of the layout, since no layout can be loaded from the settings file. if (GameStudioInternalSettings.CurrentLayoutVersion != data.DockingLayoutVersion) { throw new InvalidOperationException("Layout is out of date, need reset."); } // This exception is normal and will trigger a reset of the layout, since no layout can be loaded from the settings file. if (string.IsNullOrWhiteSpace(layout)) { throw new InvalidOperationException("No layout available in the settings file."); } ApplyDockingLayout(layout); } catch (Exception) { if (!resetLayoutIfFailed) { return; } // Erase saved layout if we're unable to load it. if (GameStudioInternalSettings.CurrentLayoutVersion != data.DockingLayoutVersion) { mruDataCollection.ResetAllLayouts(session.SessionFilePath); } else if (isInEditorLayout) { mruDataCollection.ResetEditorsLayout(session.SessionFilePath); } else { mruDataCollection.ResetLayout(session.SessionFilePath); } // And attempt to load the reset layout. LoadLayoutFromSettings(mruDataCollection.GetData(session.SessionFilePath), false); } finally { BindableSelectedItemsControl.DisableBindings = false; } }
private void UpdateDataPrivate(MRUAdditionalData data) { if (!IsDataValid(data)) { return; } // Remove it if it was already in the list mruList.RemoveWhere(x => string.Equals(x.FilePath, data.FilePath, StringComparison.OrdinalIgnoreCase)); // Add again mruList.Add(data); }
public void UpdateData(MRUAdditionalData data) { if (data == null) { throw new ArgumentNullException(nameof(data)); } // Ensure we are properly synchronized with the file. LoadFromSettings(); UpdateDataPrivate(data); // Save immediately SaveToSettings(); }
private MRUAdditionalData GetOrCreateDataPrivate(UFile filePath, bool createIfNotExist = true) { var data = mruList.FirstOrDefault(m => string.Equals(m?.FilePath, filePath, StringComparison.OrdinalIgnoreCase)); if (data == null && createIfNotExist) { data = new MRUAdditionalData(filePath) { DockingLayout = GameStudioInternalSettings.DefaultLayout, DockingLayoutEditors = GameStudioInternalSettings.DefaultEditorLayout, DockingLayoutVersion = GameStudioInternalSettings.CurrentLayoutVersion, }; mruList.Insert(0, data); } return(data); }
private static bool IsDataValid(MRUAdditionalData data) { return(data?.FilePath != null); }