This commit is contained in:
GMatrixGames
2020-10-16 09:27:32 -04:00
parent 182c05bc8e
commit 98c8894724

View File

@@ -53,9 +53,10 @@ namespace FModel
DebugHelper.Logger.AsyncWrite = false;
await Properties.Settings.SaveToFile().ConfigureAwait(false);
}
private async void OnLoaded(object sender, RoutedEventArgs e)
{
FModelVersion_TxtBlck.Text += Assembly.GetExecutingAssembly().GetName().Version.ToString();
FModelVersion_TxtBlck.Text += Assembly.GetExecutingAssembly().GetName().Version?.ToString();
FModel_StsBar.DataContext = StatusBarVm.statusBarViewModel;
FModel_AvalonEdit.DataContext = AvalonEditVm.avalonEditViewModel;
FModel_ImgBox.DataContext = ImageBoxVm.imageBoxViewModel;
@@ -73,18 +74,18 @@ namespace FModel
Folders.CheckWatermarks();
await Task.WhenAll(Init()).ContinueWith(t =>
{
Keys.NoKeyGoodBye();
MenuItems.FeedCustomGoTos();
AeConfiguration();
{
Keys.NoKeyGoodBye();
MenuItems.FeedCustomGoTos();
AeConfiguration();
if (t.Exception != null) Tasks.TaskCompleted(t.Exception);
else StatusBarVm.statusBarViewModel.Set($"{Properties.Resources.Hello} {Environment.UserName}!", Properties.Resources.State);
if (t.Exception != null) Tasks.TaskCompleted(t.Exception);
else StatusBarVm.statusBarViewModel.Set($"{Properties.Resources.Hello} {Environment.UserName}!", Properties.Resources.State);
App.StartTimer.Stop();
DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[Startup Time]", $"{App.StartTimer.ElapsedMilliseconds}ms");
},
TaskScheduler.FromCurrentSynchronizationContext());
App.StartTimer.Stop();
DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[Startup Time]", $"{App.StartTimer.ElapsedMilliseconds}ms");
},
TaskScheduler.FromCurrentSynchronizationContext());
}
private async Task Init()
@@ -104,49 +105,51 @@ namespace FModel
ShowSearchIn = false,
OwnerWindow = this
};
this.CommandBindings.Add(Frm.FindBinding);
CommandBindings.Add(Frm.FindBinding);
}
#region MENU ITEMS
private void OnAutoShortcutPressed(object sender, RoutedEventArgs e)
{
if (e is ExecutedRoutedEventArgs r && r.Command is RoutedUICommand command)
{
string name = string.Empty;
string state = string.Empty;
string[] states = new string[2] { Properties.Resources.Enabled, Properties.Resources.Disabled };
string[] states = {Properties.Resources.Enabled, Properties.Resources.Disabled};
switch (command.Name)
{
case "AutoExport":
{
bool b = Properties.Settings.Default.AutoExport;
Properties.Settings.Default.AutoExport = !b;
name = Properties.Resources.Export;
state = states[Convert.ToInt32(b)];
break;
}
{
bool b = Properties.Settings.Default.AutoExport;
Properties.Settings.Default.AutoExport = !b;
name = Properties.Resources.Export;
state = states[Convert.ToInt32(b)];
break;
}
case "AutoSave":
{
bool b = Properties.Settings.Default.AutoSave;
Properties.Settings.Default.AutoSave = !b;
name = Properties.Resources.Save;
state = states[Convert.ToInt32(b)];
break;
}
{
bool b = Properties.Settings.Default.AutoSave;
Properties.Settings.Default.AutoSave = !b;
name = Properties.Resources.Save;
state = states[Convert.ToInt32(b)];
break;
}
case "AutoSaveImage":
{
bool b = Properties.Settings.Default.AutoSaveImage;
Properties.Settings.Default.AutoSaveImage = !b;
name = Properties.Resources.SaveImage;
state = states[Convert.ToInt32(b)];
break;
}
{
bool b = Properties.Settings.Default.AutoSaveImage;
Properties.Settings.Default.AutoSaveImage = !b;
name = Properties.Resources.SaveImage;
state = states[Convert.ToInt32(b)];
break;
}
}
Properties.Settings.Default.Save();
Globals.gNotifier.ShowCustomMessage(Properties.Resources.Auto, string.Format("{0} 🠞 {1}", name, state));
Globals.gNotifier.ShowCustomMessage(Properties.Resources.Auto, $"{name} 🠞 {state}");
}
}
private void FModel_MI_Files_AES_Click(object sender, RoutedEventArgs e)
{
DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[Window]", "Opening AES Manager");
@@ -154,8 +157,12 @@ namespace FModel
{
new AESManager().Show();
}
else { FWindows.GetOpenedWindow<Window>(Properties.Resources.AES).Focus(); }
else
{
FWindows.GetOpenedWindow<Window>(Properties.Resources.AES).Focus();
}
}
private void FModel_MI_Assets_Search_Click(object sender, RoutedEventArgs e)
{
DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[Window]", "Opening Searcher");
@@ -171,6 +178,7 @@ namespace FModel
else openedWindow.Focus();
}
}
private void FModel_MI_Assets_AudioPlayer_Click(object sender, RoutedEventArgs e)
{
DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[Window]", "Opening Audio Player");
@@ -178,11 +186,16 @@ namespace FModel
{
new AudioPlayer(); //no need to show, Show() is already in the constructor
}
else { FWindows.GetOpenedWindow<Window>(Properties.Resources.AudioPlayer).Focus(); }
else
{
FWindows.GetOpenedWindow<Window>(Properties.Resources.AudioPlayer).Focus();
}
}
private async void FModel_MI_Assets_Export_Click(object sender, RoutedEventArgs e)
{
if (FModel_AssetsList.HasItems && FModel_AssetsList.SelectedIndex >= 0 && FModel_AssetsList.SelectedItem is ListBoxViewModel selectedItem)
if (FModel_AssetsList.HasItems && FModel_AssetsList.SelectedIndex >= 0 &&
FModel_AssetsList.SelectedItem is ListBoxViewModel selectedItem)
{
bool autoExport = FModel_AssetsList.SelectedItems.Count > 1;
if (!autoExport) Assets.Export(selectedItem.PakEntry, false); // manual export if one
@@ -199,10 +212,15 @@ namespace FModel
}
else Globals.gNotifier.ShowCustomMessage(Properties.Resources.Error, Properties.Resources.NoDataToExport);
}
private void FModel_MI_Assets_Save_Click(object sender, RoutedEventArgs e) => AvalonEditVm.avalonEditViewModel.Save(false);
private void FModel_MI_Assets_CopyImage_Click(object sender, RoutedEventArgs e) => ImageBoxVm.imageBoxViewModel.Copy();
private void FModel_MI_Assets_SaveImage_Click(object sender, RoutedEventArgs e) => ImageBoxVm.imageBoxViewModel.Save(false);
private void FModel_MI_Assets_OpenOutputFolder_Click(object sender, RoutedEventArgs e) => Process.Start(new ProcessStartInfo { FileName = Properties.Settings.Default.OutputPath, UseShellExecute = true });
private void FModel_MI_Assets_OpenOutputFolder_Click(object sender, RoutedEventArgs e) => Process.Start(new ProcessStartInfo {FileName = Properties.Settings.Default.OutputPath, UseShellExecute = true});
private void FModel_MI_Assets_ImageMerger_Click(object sender, RoutedEventArgs e)
{
DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[Window]", "Opening Images Merger Settings");
@@ -210,8 +228,12 @@ namespace FModel
{
new ImagesMerger().Show();
}
else { FWindows.GetOpenedWindow<Window>(Properties.Resources.ImagesMerger).Focus(); }
else
{
FWindows.GetOpenedWindow<Window>(Properties.Resources.ImagesMerger).Focus();
}
}
private void FModel_MI_Settings_General_Click(object sender, RoutedEventArgs e)
{
DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[Window]", "Opening General Settings");
@@ -219,8 +241,12 @@ namespace FModel
{
new General().Show();
}
else { FWindows.GetOpenedWindow<Window>(Properties.Resources.GeneralSettings).Focus(); }
else
{
FWindows.GetOpenedWindow<Window>(Properties.Resources.GeneralSettings).Focus();
}
}
private void FModel_MI_Settings_IconCreator_Click(object sender, RoutedEventArgs e)
{
DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[Window]", "Opening Icon Creator Settings");
@@ -228,8 +254,12 @@ namespace FModel
{
new IconCreator().Show();
}
else { FWindows.GetOpenedWindow<Window>(Properties.Resources.IconCreator).Focus(); }
else
{
FWindows.GetOpenedWindow<Window>(Properties.Resources.IconCreator).Focus();
}
}
private void FModel_MI_Settings_ThemeCreator_Click(object sender, RoutedEventArgs e)
{
DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[Window]", "Opening Challenge Bundles Creator Settings");
@@ -237,8 +267,12 @@ namespace FModel
{
new ChallengeBundlesCreator().Show();
}
else { FWindows.GetOpenedWindow<Window>(Properties.Resources.ChallengesThemeCreator).Focus(); }
else
{
FWindows.GetOpenedWindow<Window>(Properties.Resources.ChallengesThemeCreator).Focus();
}
}
private void FModel_MI_Settings_RestoreLayout_Click(object sender, RoutedEventArgs e)
{
Properties.Settings.Default.GridParentTop = "11*";
@@ -250,26 +284,42 @@ namespace FModel
Properties.Settings.Default.GridChildBottomCenter = "11*";
Properties.Settings.Default.GridChildBottomRight = "6*";
}
private void FModel_MI_Settings_ChangeGame_Click(object sender, RoutedEventArgs e)
{
var launcher = new FLauncher();
if ((bool)launcher.ShowDialog())
if ((bool) launcher.ShowDialog())
{
string currentvalue = Properties.Settings.Default.PakPath;
Properties.Settings.Default.PakPath = launcher.Path;
DarkMessageBoxHelper.Show(Properties.Resources.PathChangedRestart, Properties.Resources.PathChanged, MessageBoxButton.OK, MessageBoxImage.Information);
DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[Restarting]", "Path(s) changed");
if (Properties.Settings.Default.PakPath != currentvalue)
{
DarkMessageBoxHelper.Show(Properties.Resources.PathChangedRestart, Properties.Resources.PathChanged, MessageBoxButton.OK, MessageBoxImage.Information);
DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[Restarting]", "Path(s) changed");
Properties.Settings.Default.Save();
Process.Start(Process.GetCurrentProcess().MainModule.FileName);
Application.Current.Shutdown();
Properties.Settings.Default.Save();
Process.Start(Process.GetCurrentProcess().MainModule.FileName);
Application.Current.Shutdown();
}
// well totally not needed but saving again just incase ..
else
{
launcher.Close();
}
}
}
private void FModel_MI_Help_Trello_Click(object sender, RoutedEventArgs e) => Process.Start(new ProcessStartInfo { FileName = "https://trello.com/b/DfmzkVQB/fmodel", UseShellExecute = true });
private void FModel_MI_Help_Donate_Click(object sender, RoutedEventArgs e) => Process.Start(new ProcessStartInfo { FileName = "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=EP9SSWG8MW4UC&source=url", UseShellExecute = true });
private void FModel_MI_Help_Changelog_Click(object sender, RoutedEventArgs e) => Process.Start(new ProcessStartInfo { FileName = "https://github.com/iAmAsval/FModel/releases/latest", UseShellExecute = true });
private void FModel_MI_Help_BugsReport_Click(object sender, RoutedEventArgs e) => Process.Start(new ProcessStartInfo { FileName = "https://github.com/iAmAsval/FModel/issues/new", UseShellExecute = true });
private void FModel_MI_Help_Discord_Click(object sender, RoutedEventArgs e) => Process.Start(new ProcessStartInfo { FileName = "https://discord.gg/fdkNYYQ", UseShellExecute = true });
private void FModel_MI_Help_Trello_Click(object sender, RoutedEventArgs e) => Process.Start(new ProcessStartInfo {FileName = "https://trello.com/b/DfmzkVQB/fmodel", UseShellExecute = true});
private void FModel_MI_Help_Donate_Click(object sender, RoutedEventArgs e) => Process.Start(new ProcessStartInfo {FileName = "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=EP9SSWG8MW4UC&source=url", UseShellExecute = true});
private void FModel_MI_Help_Changelog_Click(object sender, RoutedEventArgs e) => Process.Start(new ProcessStartInfo {FileName = "https://github.com/iAmAsval/FModel/releases/latest", UseShellExecute = true});
private void FModel_MI_Help_BugsReport_Click(object sender, RoutedEventArgs e) => Process.Start(new ProcessStartInfo {FileName = "https://github.com/iAmAsval/FModel/issues/new", UseShellExecute = true});
private void FModel_MI_Help_Discord_Click(object sender, RoutedEventArgs e) => Process.Start(new ProcessStartInfo {FileName = "https://discord.gg/fdkNYYQ", UseShellExecute = true});
private void FModel_MI_Help_About_Click(object sender, RoutedEventArgs e)
{
DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[Window]", "Opening About");
@@ -277,11 +327,16 @@ namespace FModel
{
new FAbout().Show();
}
else { FWindows.GetOpenedWindow<Window>(Properties.Resources.AboutF).Focus(); }
else
{
FWindows.GetOpenedWindow<Window>(Properties.Resources.AboutF).Focus();
}
}
#endregion
#region TREEVIEW
private void OnSelectedPathChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
AssetFilter_TxtBox.Text = string.Empty;
@@ -296,7 +351,7 @@ namespace FModel
if (Globals.bSearch && !string.IsNullOrEmpty(Globals.sSearch))
{
var selected = ListBoxVm.gameFiles.Where(x => x.Content.Equals(Globals.sSearch)).FirstOrDefault();
var selected = ListBoxVm.gameFiles.FirstOrDefault(x => x.Content.Equals(Globals.sSearch));
FModel_AssetsList.SelectedIndex = ListBoxVm.gameFiles.IndexOf(selected);
FModel_AssetsList.ScrollIntoView(selected);
Globals.bSearch = false;
@@ -307,9 +362,11 @@ namespace FModel
FModel_AssetsList.ItemsSource = null;
}
}
#endregion
#region LISTBOX
private void OnSelectedItemChanged(object sender, SelectionChangedEventArgs e)
{
if (sender is ListBox listBox && listBox.SelectedItem is ListBoxViewModel selectedItem)
@@ -324,17 +381,20 @@ namespace FModel
ExtractStopVm.extractViewModel.IsEnabled = false;
}
}
private async void OnMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (sender is ListBox listBox && listBox.SelectedIndex >= 0)
await Assets.GetUserSelection(listBox.SelectedItems);
}
private void OnDeleteFilterClick(object sender, RoutedEventArgs e)
{
AssetFilter_TxtBox.Text = string.Empty;
if (FModel_AssetsList.HasItems && FModel_AssetsList.SelectedIndex >= 0 && FModel_AssetsList.SelectedItem is ListBoxViewModel selectedItem)
if (FModel_AssetsList.HasItems && FModel_AssetsList.SelectedIndex >= 0 && FModel_AssetsList.SelectedItem is ListBoxViewModel selectedItem)
FModel_AssetsList.ScrollIntoView(selectedItem);
}
private async void OnFilterTextChanged(object sender, TextChangedEventArgs e)
{
if (sender is TextBox textBox)
@@ -367,11 +427,11 @@ namespace FModel
filtered.Add(item);
}
}).ContinueWith(t =>
{
if (t.Exception != null) Tasks.TaskCompleted(t.Exception);
else FModel_AssetsList.ItemsSource = filtered;
},
TaskScheduler.FromCurrentSynchronizationContext());
{
if (t.Exception != null) Tasks.TaskCompleted(t.Exception);
else FModel_AssetsList.ItemsSource = filtered;
},
TaskScheduler.FromCurrentSynchronizationContext());
}
else
{
@@ -380,10 +440,13 @@ namespace FModel
}
}
}
#endregion
#region BUTTONS
private void OnImageOpenClick(object sender, RoutedEventArgs e) => ImageBoxVm.imageBoxViewModel.OpenImage();
private void OnStopClick(object sender, RoutedEventArgs e)
{
if (Tasks.TokenSource != null)
@@ -392,29 +455,35 @@ namespace FModel
DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[Thread]", "Canceled by user");
}
}
private async void OnExtractClick(object sender, RoutedEventArgs e)
{
if (FModel_AssetsList.SelectedIndex >= 0)
await Assets.GetUserSelection(FModel_AssetsList.SelectedItems);
}
#endregion
#region RIGHT CLICK MENUS
private async void FModel_MI_Directory_Extract_Click(object sender, RoutedEventArgs e)
{
if (FModel_AssetsPathTree.HasItems && FModel_AssetsPathTree.SelectedItem is TreeviewViewModel treeItem)
await SortedTreeviewVm.ExtractFolder(treeItem).ConfigureAwait(false);
}
private async void FModel_MI_Directory_Export_Click(object sender, RoutedEventArgs e)
{
if (FModel_AssetsPathTree.HasItems && FModel_AssetsPathTree.SelectedItem is TreeviewViewModel treeItem)
await SortedTreeviewVm.ExportFolder(treeItem).ConfigureAwait(false);
}
private void FModel_MI_Directory_Save_Click(object sender, RoutedEventArgs e)
{
if (FModel_AssetsPathTree.HasItems && FModel_AssetsPathTree.SelectedItem is TreeviewViewModel treeItem)
MenuItems.AddCustomGoTo(treeItem.Header, treeItem.GetFullPath().Substring(1) + "/");
}
private async void CM_Asset_Save_Click(object sender, RoutedEventArgs e)
{
if (FModel_AssetsList.HasItems && FModel_AssetsList.SelectedIndex >= 0 && FModel_AssetsList.SelectedItem is ListBoxViewModel selectedItem)
@@ -436,6 +505,7 @@ namespace FModel
}
else Globals.gNotifier.ShowCustomMessage(Properties.Resources.Error, Properties.Resources.NoDataToSave);
}
private void CM_Copy_DPath_Click(object sender, RoutedEventArgs e)
{
if (FModel_AssetsPathTree.HasItems && FModel_AssetsPathTree.SelectedItem is TreeviewViewModel treeItem)
@@ -443,26 +513,31 @@ namespace FModel
else if (FModel_AssetsList.HasItems && FModel_AssetsList.SelectedIndex >= 0)
Assets.Copy(FModel_AssetsList.SelectedItems, ECopy.PathNoFile);
}
private void CM_Copy_FPath_Click(object sender, RoutedEventArgs e)
{
if (FModel_AssetsList.HasItems && FModel_AssetsList.SelectedIndex >= 0)
Assets.Copy(FModel_AssetsList.SelectedItems, ECopy.Path);
}
private void CM_Copy_FName_Click(object sender, RoutedEventArgs e)
{
if (FModel_AssetsList.HasItems && FModel_AssetsList.SelectedIndex >= 0)
Assets.Copy(FModel_AssetsList.SelectedItems, ECopy.File);
}
private void CM_Copy_FPath_NoExt_Click(object sender, RoutedEventArgs e)
{
if (FModel_AssetsList.HasItems && FModel_AssetsList.SelectedIndex >= 0)
Assets.Copy(FModel_AssetsList.SelectedItems, ECopy.PathNoExt);
}
private void CM_Copy_FName_NoExt_Click(object sender, RoutedEventArgs e)
{
if (FModel_AssetsList.HasItems && FModel_AssetsList.SelectedIndex >= 0)
Assets.Copy(FModel_AssetsList.SelectedItems, ECopy.FileNoExt);
}
#endregion
}
}
}