diff --git a/SuperSize/CoreLogic/PythonScript.cs b/SuperSize/CoreLogic/PythonScript.cs index c2cf184..95733e5 100644 --- a/SuperSize/CoreLogic/PythonScript.cs +++ b/SuperSize/CoreLogic/PythonScript.cs @@ -2,8 +2,10 @@ using SuperSize.Scripting.Python; using SuperSize.UI.Dialogs; using System; +using System.Collections.Generic; using System.Drawing; using System.Runtime.InteropServices; +using System.Text; using System.Threading.Tasks; using System.Windows.Forms; @@ -14,6 +16,11 @@ internal sealed class PythonScript : Logic { public override string DisplayName => "Scripting: Python"; + public override Dictionary InitialSettings => new() + { + ["Script"] = Encoding.UTF8.GetString(Properties.Resources.PythonSample), + }; + public override Task CalculateWindowSize(Settings settings) => Task.Run(() => { if (!settings.TryGetValue("Script", out var script)) diff --git a/SuperSize/UI/Dialogs/PythonScriptEditor.Designer.cs b/SuperSize/UI/Dialogs/PythonScriptEditor.Designer.cs index 94105f8..6d62dfe 100644 --- a/SuperSize/UI/Dialogs/PythonScriptEditor.Designer.cs +++ b/SuperSize/UI/Dialogs/PythonScriptEditor.Designer.cs @@ -203,6 +203,7 @@ private void InitializeComponent() StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; Text = "Python Script Editor - SuperSize"; FormClosing += OnFormClosing; + Load += OnFormLoad; _toolStrip.ResumeLayout(false); _toolStrip.PerformLayout(); _splitContainer.Panel1.ResumeLayout(false); diff --git a/SuperSize/UI/Dialogs/PythonScriptEditor.cs b/SuperSize/UI/Dialogs/PythonScriptEditor.cs index f64a594..1a50616 100644 --- a/SuperSize/UI/Dialogs/PythonScriptEditor.cs +++ b/SuperSize/UI/Dialogs/PythonScriptEditor.cs @@ -1,5 +1,6 @@ using Microsoft.Web.WebView2.Core; using SuperSize.Model; +using SuperSize.Properties; using SuperSize.Scripting.Python; using SuperSize.UI.Forms; using System; @@ -7,26 +8,22 @@ using System.IO; using System.Text; using System.Windows.Forms; +using SettingsDelegate = SuperSize.Model.Settings; namespace SuperSize.UI.Dialogs; public partial class PythonScriptEditor : Form { - private string BaseTitle; + private readonly string BaseTitle; - private Settings Settings { get; } + private SettingsDelegate Settings { get; } - public PythonScriptEditor(Settings settings) + public PythonScriptEditor(SettingsDelegate settings) { Settings = settings; InitializeComponent(); BaseTitle = Text; - - if (settings.TryGetValue("Script", out var script)) - { - _scriptEditor.Text = script; - } } @@ -157,6 +154,8 @@ private bool PromptToSaveIfDirty(string? title = null) private bool IsEditorDirty() { + if (!Settings.ContainsKey("Script")) return true; + return _scriptEditor.Text != Settings["Script"]; } @@ -183,7 +182,11 @@ private void OnFormClosing(object sender, FormClosingEventArgs e) private void OnNewScriptClicked(object sender, EventArgs e) { if (!ExportCurrentScript()) return; + LoadNewScript(); + } + private void LoadNewScript() + { _scriptEditor.Text = Encoding.UTF8.GetString(Properties.Resources.PythonSample); SaveScript(); } @@ -197,4 +200,16 @@ private void UpdateTitle() { Text = BaseTitle + (IsEditorDirty() ? " (unsaved)" : ""); } + + private void OnFormLoad(object sender, EventArgs e) + { + if (Settings.TryGetValue("Script", out var script)) + { + _scriptEditor.Text = script; + } + else + { + LoadNewScript(); + } + } }