diff --git a/FModel/Creator/Bundles/HeaderStyle.cs b/FModel/Creator/Bundles/HeaderStyle.cs index 4797ae63..185e40c5 100644 --- a/FModel/Creator/Bundles/HeaderStyle.cs +++ b/FModel/Creator/Bundles/HeaderStyle.cs @@ -30,13 +30,13 @@ namespace FModel.Creator.Bundles c.DrawBitmap(icon.DisplayStyle.CustomBackground, new SKRect(0, 0, icon.HeaderHeight, icon.HeaderHeight), new SKPaint { IsAntialias = true, FilterQuality = SKFilterQuality.High, BlendMode = SKBlendMode.Screen, - ImageFilter = SKImageFilter.CreateDropShadow(2.5F, 0, 20, 0, icon.DisplayStyle.SecondaryColor.WithAlpha(25), SKDropShadowImageFilterShadowMode.DrawShadowAndForeground) + ImageFilter = SKImageFilter.CreateDropShadow(2.5F, 0, 20, 0, icon.DisplayStyle.SecondaryColor.WithAlpha(25)) }); c.DrawBitmap(icon.DisplayStyle.DisplayImage, new SKRect(0, 0, icon.HeaderHeight, icon.HeaderHeight), new SKPaint { IsAntialias = true, FilterQuality = SKFilterQuality.High, - ImageFilter = SKImageFilter.CreateDropShadow(-2.5F, 0, 20, 0, icon.DisplayStyle.SecondaryColor.WithAlpha(50), SKDropShadowImageFilterShadowMode.DrawShadowAndForeground) + ImageFilter = SKImageFilter.CreateDropShadow(-2.5F, 0, 20, 0, icon.DisplayStyle.SecondaryColor.WithAlpha(50)) }); } @@ -50,7 +50,7 @@ namespace FModel.Creator.Bundles pathTop.Close(); c.DrawPath(pathTop, new SKPaint { IsAntialias = true, FilterQuality = SKFilterQuality.High, Color = icon.DisplayStyle.SecondaryColor, - ImageFilter = SKImageFilter.CreateDropShadow(-5, -5, 0, 0, icon.DisplayStyle.AccentColor.WithAlpha(75), SKDropShadowImageFilterShadowMode.DrawShadowAndForeground) + ImageFilter = SKImageFilter.CreateDropShadow(-5, -5, 0, 0, icon.DisplayStyle.AccentColor.WithAlpha(75)) }); c.DrawRect(new SKRect(0, icon.HeaderHeight, icon.Width, icon.HeaderHeight + icon.AdditionalSize), new SKPaint diff --git a/FModel/Creator/Bundles/QuestStyle.cs b/FModel/Creator/Bundles/QuestStyle.cs index 855124bf..2015b600 100644 --- a/FModel/Creator/Bundles/QuestStyle.cs +++ b/FModel/Creator/Bundles/QuestStyle.cs @@ -47,7 +47,7 @@ namespace FModel.Creator.Bundles paint.TextSize = l >= 5 ? 30 : 35; paint.TextAlign = SKTextAlign.Right; paint.Color = SKColor.Parse(q.Reward.RewardFillColor); - paint.ImageFilter = SKImageFilter.CreateDropShadow(0, 0, 5, 5, SKColor.Parse(q.Reward.RewardBorderColor).WithAlpha(200), SKDropShadowImageFilterShadowMode.DrawShadowAndForeground); + paint.ImageFilter = SKImageFilter.CreateDropShadow(0, 0, 5, 5, SKColor.Parse(q.Reward.RewardBorderColor).WithAlpha(200)); c.DrawText(q.Reward.RewardQuantity.ToString(), new SKPoint(icon.Width - 85, y + 47.5F), paint); c.DrawBitmap(q.Reward.RewardIcon, new SKPoint(icon.Width - 30 - q.Reward.RewardIcon.Width, y + 12.5F), new SKPaint { IsAntialias = true, FilterQuality = SKFilterQuality.High }); @@ -98,7 +98,7 @@ namespace FModel.Creator.Bundles paint.TextAlign = SKTextAlign.Right; paint.Color = SKColor.Parse(r.Reward.RewardFillColor); paint.Typeface = Text.TypeFaces.BundleDefaultTypeface; - paint.ImageFilter = SKImageFilter.CreateDropShadow(0, 0, 5, 5, SKColor.Parse(r.Reward.RewardBorderColor).WithAlpha(200), SKDropShadowImageFilterShadowMode.DrawShadowAndForeground); + paint.ImageFilter = SKImageFilter.CreateDropShadow(0, 0, 5, 5, SKColor.Parse(r.Reward.RewardBorderColor).WithAlpha(200)); c.DrawText(r.Reward.RewardQuantity.ToString(), new SKPoint(icon.Width - 85, y + 47.5F), paint); c.DrawBitmap(r.Reward.RewardIcon, new SKPoint(icon.Width - 30 - r.Reward.RewardIcon.Width, y + 12.5F), new SKPaint { IsAntialias = true, FilterQuality = SKFilterQuality.High }); diff --git a/FModel/Creator/Texts/Typefaces.cs b/FModel/Creator/Texts/Typefaces.cs index 19edb847..447250fe 100644 --- a/FModel/Creator/Texts/Typefaces.cs +++ b/FModel/Creator/Texts/Typefaces.cs @@ -60,16 +60,12 @@ namespace FModel.Creator.Texts public Typefaces() { DefaultTypeface = SKTypeface.FromStream(Application.GetResourceStream(_BURBANK_BIG_CONDENSED_BOLD).Stream); - BundleDefaultTypeface = DefaultTypeface; - DisplayNameTypeface = DefaultTypeface; - DescriptionTypeface = DefaultTypeface; - BundleDisplayNameTypeface = DefaultTypeface; - if (Globals.Game.ActualGame == EGame.Fortnite) { ArraySegment[] t = Utils.GetPropertyArraySegmentByte(_FORTNITE_BASE_PATH + _BURBANK_BIG_CONDENSED_BLACK); if (t != null && t.Length == 3) BundleDefaultTypeface = SKTypeface.FromStream(t[2].AsStream()); + else BundleDefaultTypeface = DefaultTypeface; string namePath = _FORTNITE_BASE_PATH + ( Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Korean ? _ASIA_ERINM : @@ -85,6 +81,7 @@ namespace FModel.Creator.Texts if (t != null && t.Length == 3) DisplayNameTypeface = SKTypeface.FromStream(t[2].AsStream()); } + else DisplayNameTypeface = DefaultTypeface; string descriptionPath = _FORTNITE_BASE_PATH + ( Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Korean ? _NOTO_SANS_KR_REGULAR : @@ -96,6 +93,7 @@ namespace FModel.Creator.Texts t = Utils.GetPropertyArraySegmentByte(descriptionPath); if (t != null && t.Length == 3) DescriptionTypeface = SKTypeface.FromStream(t[2].AsStream()); + else DescriptionTypeface = DefaultTypeface; string bundleNamePath = _FORTNITE_BASE_PATH + ( Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Korean ? _ASIA_ERINM : @@ -111,6 +109,7 @@ namespace FModel.Creator.Texts if (t != null && t.Length == 3) BundleDisplayNameTypeface = SKTypeface.FromStream(t[2].AsStream()); } + else BundleDisplayNameTypeface = BundleDefaultTypeface; } else if (Globals.Game.ActualGame == EGame.Valorant) { @@ -125,6 +124,7 @@ namespace FModel.Creator.Texts ArraySegment[] t = Utils.GetPropertyArraySegmentByte(namePath); if (t != null && t.Length == 3) DisplayNameTypeface = SKTypeface.FromStream(t[2].AsStream()); + else DisplayNameTypeface = DefaultTypeface; string descriptionPath = _VALORANT_BASE_PATH + ( Properties.Settings.Default.AssetsLanguage == (long)ELanguage.Korean ? _NOTOSANS_CJK_LIGHT : @@ -136,10 +136,12 @@ namespace FModel.Creator.Texts t = Utils.GetPropertyArraySegmentByte(descriptionPath); if (t != null && t.Length == 3) DescriptionTypeface = SKTypeface.FromStream(t[2].AsStream()); + else DescriptionTypeface = DefaultTypeface; t = Utils.GetPropertyArraySegmentByte(_VALORANT_BASE_PATH + _DINNEXT_W1G_BOLD); if (t != null && t.Length == 3) BundleDefaultTypeface = SKTypeface.FromStream(t[2].AsStream()); + else BundleDefaultTypeface = DefaultTypeface; } } diff --git a/FModel/FModel.csproj b/FModel/FModel.csproj index 55c78b85..3f7d17e8 100644 --- a/FModel/FModel.csproj +++ b/FModel/FModel.csproj @@ -100,6 +100,7 @@ + @@ -131,15 +132,15 @@ - + - + - + @@ -209,6 +210,7 @@ + diff --git a/FModel/Grabber/Aes/AesGrabber.cs b/FModel/Grabber/Aes/AesGrabber.cs index d8fcf236..8fce765e 100644 --- a/FModel/Grabber/Aes/AesGrabber.cs +++ b/FModel/Grabber/Aes/AesGrabber.cs @@ -20,9 +20,13 @@ namespace FModel.Grabber.Aes if (!string.IsNullOrEmpty(Properties.Settings.Default.StaticAesKeys)) staticKeys = JsonConvert.DeserializeObject>(Properties.Settings.Default.StaticAesKeys); - Dictionary oldDynamicKeys = new Dictionary(); - if (!string.IsNullOrEmpty(Properties.Settings.Default.DynamicAesKeys)) - oldDynamicKeys = JsonConvert.DeserializeObject>(Properties.Settings.Default.DynamicAesKeys); + Dictionary> oldDynamicKeys = new Dictionary>(); + try + { + if (!string.IsNullOrEmpty(Properties.Settings.Default.DynamicAesKeys)) + oldDynamicKeys = JsonConvert.DeserializeObject>>(Properties.Settings.Default.DynamicAesKeys); + } + catch (JsonSerializationException) { /* Needed for the transition bewteen global dynamic keys and "per game" dynamic keys */ } BenResponse benResponse = await AesData.GetData().ConfigureAwait(false); if (benResponse != null) @@ -35,23 +39,26 @@ namespace FModel.Grabber.Aes Properties.Settings.Default.StaticAesKeys = JsonConvert.SerializeObject(staticKeys, Formatting.None); } - string dynamicKeys = JsonConvert.SerializeObject(benResponse.DynamicKeys, Formatting.None); - DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[AES]", $"BenBot Dynamic keys are {dynamicKeys}"); - Properties.Settings.Default.DynamicAesKeys = dynamicKeys; + DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[AES]", $"BenBot Dynamic keys are {benResponse.DynamicKeys}"); + oldDynamicKeys[Globals.Game.ActualGame.ToString()] = benResponse.DynamicKeys; + Properties.Settings.Default.DynamicAesKeys = JsonConvert.SerializeObject(oldDynamicKeys, Formatting.None); Properties.Settings.Default.Save(); - Dictionary difference = benResponse.DynamicKeys - .Where(x => !oldDynamicKeys.ContainsKey(x.Key) || !oldDynamicKeys[x.Key].Equals(x.Value)) - .ToDictionary(x => x.Key, x => x.Value); - foreach (KeyValuePair KvP in difference) + if (oldDynamicKeys.TryGetValue(Globals.Game.ActualGame.ToString(), out var gameDict)) { - Globals.gNotifier.ShowCustomMessage( - Properties.Resources.PakFiles, - string.Format( - Properties.Resources.PakCanBeOpened, - KvP.Key.Substring(KvP.Key.IndexOf("Paks/") + "Paks/".Length)), - "/FModel;component/Resources/lock-open-variant.ico"); - DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[AES]", $"{KvP.Key} with key {KvP.Value} can be opened"); + Dictionary difference = benResponse.DynamicKeys + .Where(x => !gameDict.ContainsKey(x.Key) || !gameDict[x.Key].Equals(x.Value)) + .ToDictionary(x => x.Key, x => x.Value); + foreach (KeyValuePair KvP in difference) + { + Globals.gNotifier.ShowCustomMessage( + Properties.Resources.PakFiles, + string.Format( + Properties.Resources.PakCanBeOpened, + KvP.Key.Substring(KvP.Key.IndexOf("Paks/") + "Paks/".Length)), + "/FModel;component/Resources/lock-open-variant.ico"); + DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[AES]", $"{KvP.Key} with key {KvP.Value} can be opened"); + } } return true; diff --git a/FModel/MainWindow.xaml b/FModel/MainWindow.xaml index 982f89f4..4b8ed169 100644 --- a/FModel/MainWindow.xaml +++ b/FModel/MainWindow.xaml @@ -169,6 +169,11 @@ + + + + + diff --git a/FModel/MainWindow.xaml.cs b/FModel/MainWindow.xaml.cs index 29d653c6..e9098a3b 100644 --- a/FModel/MainWindow.xaml.cs +++ b/FModel/MainWindow.xaml.cs @@ -254,6 +254,7 @@ namespace FModel private void FModel_MI_Help_Donate_Click(object sender, RoutedEventArgs e) => Process.Start(new ProcessStartInfo { FileName = "https://www.paypal.me/FModel", 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_Trello_Click(object sender, RoutedEventArgs e) => Process.Start(new ProcessStartInfo { FileName = "https://trello.com/b/DfmzkVQB/fmodel", 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) { diff --git a/FModel/Properties/Resources.Designer.cs b/FModel/Properties/Resources.Designer.cs index 0b01ed84..0cba8837 100644 --- a/FModel/Properties/Resources.Designer.cs +++ b/FModel/Properties/Resources.Designer.cs @@ -2559,6 +2559,25 @@ namespace FModel.Properties { } } + /// + /// Recherche une chaîne localisée semblable à Trello. + /// + public static string Trello { + get { + return ResourceManager.GetString("Trello", resourceCulture); + } + } + + /// + /// Recherche une ressource localisée de type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap trello1 { + get { + object obj = ResourceManager.GetObject("trello1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Recherche une chaîne localisée semblable à Turkish. /// diff --git a/FModel/Properties/Resources.resx b/FModel/Properties/Resources.resx index ae12dd28..63d7835c 100644 --- a/FModel/Properties/Resources.resx +++ b/FModel/Properties/Resources.resx @@ -1067,4 +1067,10 @@ It's now the most used free software to leak on Fortnite. ..\Resources\Xml.xshd;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Trello + + + ..\Resources\trello.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/FModel/Resources/trello.png b/FModel/Resources/trello.png new file mode 100644 index 00000000..1e6e7fa3 Binary files /dev/null and b/FModel/Resources/trello.png differ diff --git a/FModel/Utils/Keys.cs b/FModel/Utils/Keys.cs index 9abc13a0..611b9714 100644 --- a/FModel/Utils/Keys.cs +++ b/FModel/Utils/Keys.cs @@ -28,9 +28,13 @@ namespace FModel.Utils if (!string.IsNullOrEmpty(Properties.Settings.Default.StaticAesKeys)) staticKeys = JsonConvert.DeserializeObject>(Properties.Settings.Default.StaticAesKeys); - Dictionary dynamicKeys = new Dictionary(); - if (!string.IsNullOrEmpty(Properties.Settings.Default.DynamicAesKeys)) - dynamicKeys = JsonConvert.DeserializeObject>(Properties.Settings.Default.DynamicAesKeys); + Dictionary> dynamicKeys = new Dictionary>(); + try + { + if (!string.IsNullOrEmpty(Properties.Settings.Default.DynamicAesKeys)) + dynamicKeys = JsonConvert.DeserializeObject>>(Properties.Settings.Default.DynamicAesKeys); + } + catch (JsonSerializationException) { /* Needed for the transition bewteen global dynamic keys and "per game" dynamic keys */ } bool isMainKey = staticKeys.TryGetValue(Globals.Game.ActualGame.ToString(), out var _); bool mainError = false; // used to avoid notifications about all static paks not working with the key @@ -64,7 +68,7 @@ namespace FModel.Utils } string trigger = $"{Properties.Settings.Default.PakPath.Substring(Properties.Settings.Default.PakPath.LastIndexOf(Folders.GetGameName())).Replace("\\", "/")}/{menuItem.PakFile.FileName}"; - if (dynamicKeys.TryGetValue(trigger, out var key)) + if (dynamicKeys.TryGetValue(Globals.Game.ActualGame.ToString(), out var gameDict) && gameDict.TryGetValue(trigger, out var key)) { string dKey = key.StartsWith("0x") ? key.Substring(2).ToUpperInvariant() : key.ToUpperInvariant(); try diff --git a/FModel/Windows/AESManager/AESManager.xaml.cs b/FModel/Windows/AESManager/AESManager.xaml.cs index d889b0a1..3a437fab 100644 --- a/FModel/Windows/AESManager/AESManager.xaml.cs +++ b/FModel/Windows/AESManager/AESManager.xaml.cs @@ -35,9 +35,13 @@ namespace FModel.Windows.AESManager if (!string.IsNullOrEmpty(Properties.Settings.Default.StaticAesKeys)) staticKeys = JsonConvert.DeserializeObject>(Properties.Settings.Default.StaticAesKeys); - Dictionary dynamicAesKeys = new Dictionary(); - if (!string.IsNullOrEmpty(Properties.Settings.Default.DynamicAesKeys)) - dynamicAesKeys = JsonConvert.DeserializeObject>(Properties.Settings.Default.DynamicAesKeys); + Dictionary> dynamicAesKeys = new Dictionary>(); + try + { + if (!string.IsNullOrEmpty(Properties.Settings.Default.DynamicAesKeys)) + dynamicAesKeys = JsonConvert.DeserializeObject>>(Properties.Settings.Default.DynamicAesKeys); + } + catch (JsonSerializationException) { /* Needed for the transition bewteen global dynamic keys and "per game" dynamic keys */ } if (staticKeys.TryGetValue(Globals.Game.ActualGame.ToString(), out var sKey)) { @@ -57,7 +61,11 @@ namespace FModel.Windows.AESManager { gridRow++; string trigger = $"{Properties.Settings.Default.PakPath.Substring(Properties.Settings.Default.PakPath.LastIndexOf(Folders.GetGameName())).Replace("\\", "/")}/{pak.FileName}"; - string key = dynamicAesKeys.ContainsKey(trigger) ? dynamicAesKeys[trigger] : ""; + string key; + if (dynamicAesKeys.TryGetValue(Globals.Game.ActualGame.ToString(), out var gameDict) && gameDict.TryGetValue(trigger, out var dKey)) + key = dKey; + else + key = ""; DebugHelper.WriteLine("{0} {1} {2} {3} {4}", "[FModel]", "[Window]", "[AES Manager]", "[GET]", $"{pak.FileName} with key: {key}"); DynamicKeys_Grid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto }); @@ -97,20 +105,28 @@ namespace FModel.Windows.AESManager staticKeys[Globals.Game.ActualGame.ToString()] = StaticKey_TxtBox.Text; DebugHelper.WriteLine("{0} {1} {2} {3} {4}", "[FModel]", "[Window]", "[AES Manager]", "[SET]", $"Main PAKs with key: {StaticKey_TxtBox.Text}"); - Dictionary dynamicKeys = new Dictionary(); + Dictionary> dynamicAesKeys = new Dictionary>(); + try + { + if (!string.IsNullOrEmpty(Properties.Settings.Default.DynamicAesKeys)) + dynamicAesKeys = JsonConvert.DeserializeObject>>(Properties.Settings.Default.DynamicAesKeys); + } + catch (JsonSerializationException) { /* Needed for the transition bewteen global dynamic keys and "per game" dynamic keys */ } + + dynamicAesKeys[Globals.Game.ActualGame.ToString()] = new Dictionary(); foreach (PakFileReader pak in MenuItems.pakFiles.GetDynamicPakFileReaders()) { string trigger = $"{Properties.Settings.Default.PakPath.Substring(Properties.Settings.Default.PakPath.LastIndexOf(Folders.GetGameName())).Replace("\\", "/")}/{pak.FileName}"; TextBox textBox = DependencyObjects.FindChild(this, $"pakchunk{Regex.Match(pak.FileName[0..^4], @"\d+").Value}"); if (!string.IsNullOrEmpty(textBox.Text)) { - dynamicKeys[trigger] = textBox.Text; + dynamicAesKeys[Globals.Game.ActualGame.ToString()][trigger] = textBox.Text; DebugHelper.WriteLine("{0} {1} {2} {3} {4}", "[FModel]", "[Window]", "[AES Manager]", "[SET]", $"{pak.FileName} with key: {textBox.Text}"); } } Properties.Settings.Default.StaticAesKeys = JsonConvert.SerializeObject(staticKeys, Formatting.None); - Properties.Settings.Default.DynamicAesKeys = JsonConvert.SerializeObject(dynamicKeys, Formatting.None); + Properties.Settings.Default.DynamicAesKeys = JsonConvert.SerializeObject(dynamicAesKeys, Formatting.None); Properties.Settings.Default.Save(); DebugHelper.WriteLine("{0} {1} {2}", "[FModel]", "[Window]", "Closing AES Manager"); @@ -130,9 +146,13 @@ namespace FModel.Windows.AESManager if (!string.IsNullOrEmpty(Properties.Settings.Default.StaticAesKeys)) staticKeys = JsonConvert.DeserializeObject>(Properties.Settings.Default.StaticAesKeys); - Dictionary dynamicAesKeys = new Dictionary(); - if (!string.IsNullOrEmpty(Properties.Settings.Default.DynamicAesKeys)) - dynamicAesKeys = JsonConvert.DeserializeObject>(Properties.Settings.Default.DynamicAesKeys); + Dictionary> dynamicAesKeys = new Dictionary>(); + try + { + if (!string.IsNullOrEmpty(Properties.Settings.Default.DynamicAesKeys)) + dynamicAesKeys = JsonConvert.DeserializeObject>>(Properties.Settings.Default.DynamicAesKeys); + } + catch (JsonSerializationException) { /* Needed for the transition bewteen global dynamic keys and "per game" dynamic keys */ } if (staticKeys.TryGetValue(Globals.Game.ActualGame.ToString(), out var sKey)) { @@ -143,7 +163,11 @@ namespace FModel.Windows.AESManager foreach (PakFileReader pak in MenuItems.pakFiles.GetDynamicPakFileReaders()) { string trigger = $"{Properties.Settings.Default.PakPath.Substring(Properties.Settings.Default.PakPath.LastIndexOf(Folders.GetGameName())).Replace("\\", "/")}/{pak.FileName}"; - string key = dynamicAesKeys.ContainsKey(trigger) ? dynamicAesKeys[trigger] : ""; + string key; + if (dynamicAesKeys.TryGetValue(Globals.Game.ActualGame.ToString(), out var gameDict) && gameDict.TryGetValue(trigger, out var dKey)) + key = dKey; + else + key = ""; DebugHelper.WriteLine("{0} {1} {2} {3} {4}", "[FModel]", "[Window]", "[AES Manager]", "[UPDATE]", $"{pak.FileName} with key: {key}"); TextBox textBox = DependencyObjects.FindChild(this, $"pakchunk{Regex.Match(pak.FileName[0..^4], @"\d+").Value}"); diff --git a/FModel/Windows/SoundPlayer/AudioPlayer.xaml b/FModel/Windows/SoundPlayer/AudioPlayer.xaml index 3a4e69ae..fcbe4a3f 100644 --- a/FModel/Windows/SoundPlayer/AudioPlayer.xaml +++ b/FModel/Windows/SoundPlayer/AudioPlayer.xaml @@ -9,7 +9,7 @@ Style="{StaticResource {x:Type Window}}" Title="{x:Static properties:Resources.AudioPlayer}" Height="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenHeight}, Converter={utils:Screens}, ConverterParameter='0.50' }" - Width="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenWidth}, Converter={utils:Screens}, ConverterParameter='0.50' }" + Width="{Binding Source={x:Static SystemParameters.MaximizedPrimaryScreenWidth}, Converter={utils:Screens}, ConverterParameter='0.65' }" WindowStartupLocation="CenterScreen" Icon="/FModel;component/FModel.ico" Closed="OnClosed">