示例#1
0
        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);
        }
示例#2
0
        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;
        }