protected override void OnClosing(CancelEventArgs e) { if (!SavePrompt()) { e.Cancel = true; return; } if (_scriptId >= 0) { DebugApi.RemoveScript(_scriptId); } ScriptWindowConfig cfg = ConfigManager.Config.Debug.ScriptWindow; cfg.WindowSize = this.WindowState != FormWindowState.Normal ? this.RestoreBounds.Size : this.Size; cfg.WindowLocation = this.WindowState != FormWindowState.Normal ? this.RestoreBounds.Location : this.Location; cfg.SaveScriptBeforeRun = mnuSaveBeforeRun.Checked; if (mnuAutoLoadLastScript.Checked) { cfg.ScriptStartupBehavior = ScriptStartupBehavior.LoadLastScript; } else if (mnuTutorialScript.Checked) { cfg.ScriptStartupBehavior = ScriptStartupBehavior.ShowTutorial; } else { cfg.ScriptStartupBehavior = ScriptStartupBehavior.ShowBlankWindow; } cfg.CodeWindowHeight = ctrlSplit.Panel2.Height <= 2 ? Int32.MaxValue : ctrlSplit.SplitterDistance; cfg.Zoom = txtScriptContent.Zoom; cfg.FontFamily = txtScriptContent.OriginalFont.FontFamily.Name; cfg.FontStyle = txtScriptContent.OriginalFont.Style; cfg.FontSize = txtScriptContent.OriginalFont.Size; cfg.AutoLoadLastScript = mnuAutoLoadLastScript.Checked; ConfigManager.ApplyChanges(); base.OnClosing(e); }
public frmScript() { InitializeComponent(); txtScriptContent.ForeColor = Color.Black; List <string> builtInScripts = new List <string> { "DrawMode.lua", "Example.lua", "Grid.lua", "NtscSafeArea.lua" }; foreach (string script in builtInScripts) { ToolStripItem item = mnuBuiltInScripts.DropDownItems.Add(script); item.Click += (s, e) => { LoadBuiltInScript(item.Text); }; } tsToolbar.AddItemsToToolbar( mnuOpen, mnuSave, null, mnuRun, mnuStop, null, mnuBuiltInScripts ); ScriptWindowConfig cfg = ConfigManager.Config.Debug.ScriptWindow; _popupMenu = new AutocompleteMenu(txtScriptContent, this); _popupMenu.ImageList = new ImageList(); _popupMenu.ImageList.Images.Add(Resources.Enum); _popupMenu.ImageList.Images.Add(Resources.Function); _popupMenu.SelectedColor = Color.LightBlue; _popupMenu.SearchPattern = @"[\w\.]"; List <AutocompleteItem> items = new List <AutocompleteItem>(); _availableFunctions.Sort((a, b) => { int type = a[0].CompareTo(b[0]); if (type == 0) { return(a[1].CompareTo(b[1])); } else { return(-type); } }); foreach (List <string> item in _availableFunctions) { MethodAutocompleteItem autocompleteItem = new MethodAutocompleteItem(item[1]); autocompleteItem.ImageIndex = item[0] == "func" ? 1 : 0; autocompleteItem.ToolTipTitle = item[2]; if (!string.IsNullOrWhiteSpace(item[3])) { autocompleteItem.ToolTipText = "Parameters" + Environment.NewLine + item[3] + Environment.NewLine + Environment.NewLine; } if (!string.IsNullOrWhiteSpace(item[4])) { autocompleteItem.ToolTipText += "Return Value" + Environment.NewLine + item[4] + Environment.NewLine + Environment.NewLine; } if (!string.IsNullOrWhiteSpace(item[5])) { autocompleteItem.ToolTipText += "Description" + Environment.NewLine + item[5] + Environment.NewLine + Environment.NewLine; } items.Add(autocompleteItem); } _popupMenu.Items.SetAutocompleteItems(items); UpdateRecentScripts(); mnuTutorialScript.Checked = cfg.ScriptStartupBehavior == ScriptStartupBehavior.ShowTutorial; mnuBlankWindow.Checked = cfg.ScriptStartupBehavior == ScriptStartupBehavior.ShowBlankWindow; mnuAutoLoadLastScript.Checked = cfg.ScriptStartupBehavior == ScriptStartupBehavior.LoadLastScript; if (cfg.AutoLoadLastScript && cfg.RecentScripts.Count > 0) { string scriptToLoad = cfg.RecentScripts.Where((s) => File.Exists(s)).FirstOrDefault(); if (scriptToLoad != null) { LoadScriptFile(scriptToLoad, false); } } else if (mnuTutorialScript.Checked) { LoadBuiltInScript("Example.lua"); } if (!cfg.WindowSize.IsEmpty) { this.StartPosition = FormStartPosition.Manual; this.Size = cfg.WindowSize; this.Location = cfg.WindowLocation; } mnuSaveBeforeRun.Checked = cfg.SaveScriptBeforeRun; if (cfg.CodeWindowHeight >= ctrlSplit.Panel1MinSize) { if (cfg.CodeWindowHeight == Int32.MaxValue) { ctrlSplit.CollapsePanel(); } else { ctrlSplit.SplitterDistance = cfg.CodeWindowHeight; } } txtScriptContent.Font = new Font(cfg.FontFamily, cfg.FontSize, cfg.FontStyle); txtScriptContent.Zoom = cfg.Zoom; }