diff --git a/BizHawk.Client.Common/movie/tasproj/TasMovie.cs b/BizHawk.Client.Common/movie/tasproj/TasMovie.cs index 31f14ff71a..47f89d27e3 100644 --- a/BizHawk.Client.Common/movie/tasproj/TasMovie.cs +++ b/BizHawk.Client.Common/movie/tasproj/TasMovie.cs @@ -17,6 +17,8 @@ namespace BizHawk.Client.Common private readonly TasStateManager StateManager; public TasMovieMarkerList Markers { get; set; } + public const string DefaultProjectName = "default"; + public TasMovie(string path) : base(path) { // TODO: how to call the default constructor AND the base(path) constructor? And is base(path) calling base() ? diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs index b4cd384562..12b922e95d 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs @@ -18,9 +18,12 @@ namespace BizHawk.Client.EmuHawk private void FileSubMenu_DropDownOpened(object sender, EventArgs e) { - ToBk2MenuItem.Enabled = - SaveTASMenuItem.Enabled = + ToBk2MenuItem.Enabled = !string.IsNullOrWhiteSpace(_currentTasMovie.Filename); + + SaveTASMenuItem.Enabled = + !string.IsNullOrWhiteSpace(_currentTasMovie.Filename) && + (_currentTasMovie.Filename != DefaultTasProjName()); } private void RecentSubMenu_DropDownOpened(object sender, EventArgs e) @@ -30,11 +33,6 @@ namespace BizHawk.Client.EmuHawk Global.Config.RecentTas.RecentMenu(DummyLoadProject)); } - private void DummyLoadProject(string path) - { - LoadProject(path); - } - private void NewTasMenuItem_Click(object sender, EventArgs e) { GlobalWin.OSD.AddMessage("new TAStudio session started"); @@ -45,7 +43,13 @@ namespace BizHawk.Client.EmuHawk { if (AskSaveChanges()) { - var file = ToolHelpers.GetTasProjFileFromUser(_currentTasMovie.Filename); + var filename = _currentTasMovie.Filename; + if (string.IsNullOrWhiteSpace(filename) || filename == DefaultTasProjName()) + { + filename = ""; + } + + var file = ToolHelpers.GetTasProjFileFromUser(filename); if (file != null) { _currentTasMovie.Filename = file.FullName; @@ -83,13 +87,20 @@ namespace BizHawk.Client.EmuHawk private void SaveAsTasMenuItem_Click(object sender, EventArgs e) { - var file = ToolHelpers.GetTasProjSaveFileFromUser(_currentTasMovie.Filename); + var filename = _currentTasMovie.Filename; + if (string.IsNullOrWhiteSpace(filename) || filename == DefaultTasProjName()) + { + filename = SuggestedTasProjName(); + } + + var file = ToolHelpers.GetTasProjSaveFileFromUser(filename); if (file != null) { _currentTasMovie.Filename = file.FullName; _currentTasMovie.Save(); Global.Config.RecentTas.Add(_currentTasMovie.Filename); MessageStatusLabel.Text = Path.GetFileName(_currentTasMovie.Filename) + " saved."; + SetTextProperty(); } } diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs index 0f76b2d916..b7c6753489 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs @@ -107,7 +107,21 @@ namespace BizHawk.Client.EmuHawk TasView.RowCount = 1; } + /// + /// Used when starting a new project + /// private static string DefaultTasProjName() + { + return Path.Combine( + PathManager.MakeAbsolutePath(Global.Config.PathEntries.MoviesPathFragment, null), + TasMovie.DefaultProjectName + "." + TasMovie.Extension); + } + + /// + /// Used for things like SaveFile dialogs to suggest a name to the user + /// + /// + private static string SuggestedTasProjName() { return Path.Combine( PathManager.MakeAbsolutePath(Global.Config.PathEntries.MoviesPathFragment, null), @@ -133,6 +147,11 @@ namespace BizHawk.Client.EmuHawk } } + private void DummyLoadProject(string path) + { + LoadProject(path); + } + private string ClientSettingsForSave() { return TasView.UserSettingsSerialized();