Beispiel #1
0
 private void UpdateDialog()
 {
     LuaListView.RowCount = LuaImp.ScriptList.Count;
     LuaListView.Refresh();
     UpdateNumberOfScripts();
     UpdateRegisteredFunctionsDialog();
 }
Beispiel #2
0
        private void MoveDownMenuItem_Click(object sender, EventArgs e)
        {
            var indices = LuaListView.SelectedRows.ToList();

            if (indices.Count == 0 || indices.Last() == LuaImp.ScriptList.Count - 1)
            {
                return;
            }

            for (var i = indices.Count - 1; i >= 0; i--)
            {
                var file = LuaImp.ScriptList[indices[i]];
                LuaImp.ScriptList.Remove(file);
                LuaImp.ScriptList.Insert(indices[i] + 1, file);
            }

            var newIndices = indices.Select(t => t + 1);

            LuaListView.DeselectAll();
            foreach (var i in newIndices)
            {
                LuaListView.SelectRow(i, true);
            }

            UpdateDialog();
        }
Beispiel #3
0
        private void DuplicateScriptMenuItem_Click(object sender, EventArgs e)
        {
            if (LuaListView.SelectedIndices().Any())
            {
                var script = SelectedFiles.First();

                var sfd = new SaveFileDialog
                {
                    InitialDirectory = Path.GetDirectoryName(script.Path),
                    DefaultExt       = ".lua",
                    FileName         = $"{Path.GetFileNameWithoutExtension(script.Path)} (1)",
                    OverwritePrompt  = true,
                    Filter           = "Lua Scripts (*.lua)|*.lua|All Files (*.*)|*.*"
                };

                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    string text = File.ReadAllText(script.Path);
                    File.WriteAllText(sfd.FileName, text);
                    LuaImp.ScriptList.Add(new LuaFile(Path.GetFileNameWithoutExtension(sfd.FileName), sfd.FileName));
                    UpdateDialog();
                    System.Diagnostics.Process.Start(sfd.FileName);
                }
            }
        }
Beispiel #4
0
        private void MoveUpMenuItem_Click(object sender, EventArgs e)
        {
            var indices = LuaListView.SelectedRows.ToList();

            if (indices.Count == 0 || indices[0] == 0)
            {
                return;
            }

            foreach (var index in indices)
            {
                var file = LuaImp.ScriptList[index];
                LuaImp.ScriptList.Remove(file);
                LuaImp.ScriptList.Insert(index - 1, file);
            }

            var newIndices = indices.Select(t => t - 1);

            LuaListView.DeselectAll();
            foreach (var i in newIndices)
            {
                LuaListView.SelectRow(i, true);
            }

            UpdateDialog();
        }
Beispiel #5
0
 public void UpdateDialog()
 {
     LuaListView.ItemCount = _luaList.Count;
     LuaListView.Refresh();
     UpdateNumberOfScripts();
     UpdateRegisteredFunctionsDialog();
 }
Beispiel #6
0
        private void MoveUpMenuItem_Click(object sender, EventArgs e)
        {
            var indices = LuaListView.SelectedIndices().ToList();

            if (indices.Count == 0 || indices[0] == 0)
            {
                return;
            }

            foreach (var index in indices)
            {
                var file = _luaList[index];
                _luaList.Remove(file);
                _luaList.Insert(index - 1, file);
            }

            var newindices = indices.Select(t => t - 1).ToList();

            LuaListView.SelectedIndices.Clear();
            foreach (var newi in newindices)
            {
                LuaListView.SelectItem(newi, true);
            }

            UpdateDialog();
        }
Beispiel #7
0
        private void MoveDownMenuItem_Click(object sender, EventArgs e)
        {
            var indices = LuaListView.SelectedIndices().ToList();

            if (indices.Count == 0 || indices.Last() == _luaList.Count - 1)
            {
                return;
            }

            for (var i = indices.Count - 1; i >= 0; i--)
            {
                var file = _luaList[indices[i]];
                _luaList.Remove(file);
                _luaList.Insert(indices[i] + 1, file);
            }

            var newindices = indices.Select(t => t + 1).ToList();

            LuaListView.SelectedIndices.Clear();
            foreach (var newi in newindices)
            {
                LuaListView.SelectItem(newi, true);
            }

            UpdateDialog();
        }
Beispiel #8
0
        private void ToggleScriptMenuItem_Click(object sender, EventArgs e)
        {
            var files = !SelectedFiles.Any() && Global.Config.ToggleAllIfNoneSelected ? _luaList : SelectedFiles;

            foreach (var item in files)
            {
                item.Toggle();

                if (item.Enabled && item.Thread == null)
                {
                    try
                    {
                        LuaSandbox.Sandbox(() =>
                        {
                            item.Thread = LuaImp.SpawnCoroutine(item.Path);
                        }, () =>
                        {
                            item.State = LuaFile.RunState.Disabled;
                        });
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.ToString());
                    }
                }
                else if (!item.Enabled && item.Thread != null)
                {
                    LuaImp.CallExitEvent(item.Thread);

                    var items = SelectedItems.ToList();
                    foreach (var sitem in items)
                    {
                        var temp      = sitem;
                        var functions = LuaImp.RegisteredFunctions.Where(x => x.Lua == temp.Thread).ToList();
                        foreach (var function in functions)
                        {
                            LuaImp.RegisteredFunctions.Remove(function);
                        }

                        UpdateRegisteredFunctionsDialog();
                    }

                    LuaImp.CallExitEvent(item.Thread);
                    item.Stop();
                    if (Global.Config.RemoveRegisteredFunctionsOnToggle)
                    {
                        GlobalWin.Tools.LuaConsole.LuaImp.RegisteredFunctions.ClearAll();
                    }
                }
            }

            UpdateDialog();
            UpdateNumberOfScripts();
            LuaListView.Refresh();
        }
Beispiel #9
0
        private void InsertSeparatorMenuItem_Click(object sender, EventArgs e)
        {
            var indices = LuaListView.SelectedIndices().ToList();

            if (indices.Any() && indices.Last() < LuaImp.ScriptList.Count)
            {
                LuaImp.ScriptList.Insert(indices.Last(), LuaFile.SeparatorInstance);
            }
            else
            {
                LuaImp.ScriptList.Add(LuaFile.SeparatorInstance);
            }

            UpdateDialog();
        }
Beispiel #10
0
        private void ScriptSubMenu_DropDownOpened(object sender, EventArgs e)
        {
            ToggleScriptMenuItem.Enabled       =
                PauseScriptMenuItem.Enabled    =
                    EditScriptMenuItem.Enabled =
                        SelectedFiles.Any();

            RemoveScriptMenuItem.Enabled     =
                MoveUpMenuItem.Enabled       =
                    MoveDownMenuItem.Enabled =
                        LuaListView.SelectedIndices().Any();

            SelectAllMenuItem.Enabled           = _luaList.Any();
            StopAllScriptsMenuItem.Enabled      = _luaList.Any(script => script.Enabled);
            RegisteredFunctionsMenuItem.Enabled = GlobalWin.Tools.LuaConsole.LuaImp.RegisteredFunctions.Any();
        }
Beispiel #11
0
        private void ToggleScriptMenuItem_Click(object sender, EventArgs e)
        {
            var files = !SelectedFiles.Any() && Global.Config.ToggleAllIfNoneSelected ? LuaImp.ScriptList : SelectedFiles;

            foreach (var file in files)
            {
                file.Toggle();

                if (file.Enabled && file.Thread == null)
                {
                    EnableLuaFile(file);
                }

                else if (!file.Enabled && file.Thread != null)
                {
                    LuaImp.CallExitEvent(file);

                    var items = SelectedItems.ToList();
                    foreach (var sitem in items)
                    {
                        var temp      = sitem;
                        var functions = LuaImp.GetRegisteredFunctions().Where(lf => lf.Lua == temp.Thread).ToList();
                        foreach (var function in functions)
                        {
                            LuaImp.GetRegisteredFunctions().Remove(function);
                        }

                        UpdateRegisteredFunctionsDialog();
                    }

                    LuaImp.CallExitEvent(file);
                    file.Stop();
                    if (Global.Config.RemoveRegisteredFunctionsOnToggle)
                    {
                        LuaImp.GetRegisteredFunctions().ClearAll();
                    }
                }
            }

            UpdateDialog();
            UpdateNumberOfScripts();
            LuaListView.Refresh();
        }
Beispiel #12
0
 private void SelectAllMenuItem_Click(object sender, EventArgs e)
 {
     LuaListView.SelectAll();
 }
Beispiel #13
0
        private void ToggleScriptMenuItem_Click(object sender, EventArgs e)
        {
            var files = !SelectedFiles.Any() && Global.Config.ToggleAllIfNoneSelected ? _luaList : SelectedFiles;

            foreach (var item in files)
            {
                item.Toggle();

                if (item.Enabled && item.Thread == null)
                {
                    try
                    {
                        LuaSandbox.Sandbox(null, () =>
                        {
                            string pathToLoad = Path.IsPathRooted(item.Path) ? item.Path : PathManager.MakeProgramRelativePath(item.Path);                             //JUNIPIER SQUATCHBOX COMPLEX
                            item.Thread       = LuaImp.SpawnCoroutine(pathToLoad);
                            LuaSandbox.CreateSandbox(item.Thread, Path.GetDirectoryName(pathToLoad));
                        }, () =>
                        {
                            item.State = LuaFile.RunState.Disabled;
                        });
                    }
                    catch (IOException)
                    {
                        ConsoleLog("Unable to access file " + item.Path);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.ToString());
                    }
                }
                else if (!item.Enabled && item.Thread != null)
                {
                    LuaImp.CallExitEvent(item.Thread);

                    var items = SelectedItems.ToList();
                    foreach (var sitem in items)
                    {
                        var temp      = sitem;
                        var functions = LuaImp.RegisteredFunctions.Where(x => x.Lua == temp.Thread).ToList();
                        foreach (var function in functions)
                        {
                            LuaImp.RegisteredFunctions.Remove(function);
                        }

                        UpdateRegisteredFunctionsDialog();
                    }

                    LuaImp.CallExitEvent(item.Thread);
                    item.Stop();
                    if (Global.Config.RemoveRegisteredFunctionsOnToggle)
                    {
                        GlobalWin.Tools.LuaConsole.LuaImp.RegisteredFunctions.ClearAll();
                    }
                }
            }

            UpdateDialog();
            UpdateNumberOfScripts();
            LuaListView.Refresh();
        }
Beispiel #14
0
        private void ToggleScriptMenuItem_Click(object sender, EventArgs e)
        {
            var files = !SelectedFiles.Any() && Global.Config.ToggleAllIfNoneSelected ? LuaImp.ScriptList : SelectedFiles;

            foreach (var item in files)
            {
                item.Toggle();

                if (item.Enabled && item.Thread == null)
                {
                    try
                    {
                        LuaSandbox.Sandbox(null, () =>
                        {
                            string pathToLoad = Path.IsPathRooted(item.Path)
                                                        ? item.Path
                                                        : PathManager.MakeProgramRelativePath(item.Path);

                            item.Thread = LuaImp.SpawnCoroutine(pathToLoad);
                            LuaSandbox.CreateSandbox(item.Thread, Path.GetDirectoryName(pathToLoad));
                        }, () =>
                        {
                            item.State = LuaFile.RunState.Disabled;
                        });

                        // Shenanigans
                        // We want any gui.text messages from a script to immediately update even when paused
                        GlobalWin.OSD.ClearGUIText();
                        GlobalWin.Tools.UpdateToolsAfter();
                        LuaImp.EndLuaDrawing();
                        LuaImp.StartLuaDrawing();
                    }
                    catch (IOException)
                    {
                        ConsoleLog("Unable to access file " + item.Path);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.ToString());
                    }
                }
                else if (!item.Enabled && item.Thread != null)
                {
                    LuaImp.CallExitEvent(item.Thread);

                    var items = SelectedItems.ToList();
                    foreach (var sitem in items)
                    {
                        var temp      = sitem;
                        var functions = LuaImp.RegisteredFunctions.Where(lf => lf.Lua == temp.Thread).ToList();
                        foreach (var function in functions)
                        {
                            LuaImp.RegisteredFunctions.Remove(function);
                        }

                        UpdateRegisteredFunctionsDialog();
                    }

                    LuaImp.CallExitEvent(item.Thread);
                    item.Stop();
                    if (Global.Config.RemoveRegisteredFunctionsOnToggle)
                    {
                        LuaImp.RegisteredFunctions.ClearAll();
                    }
                }
            }

            UpdateDialog();
            UpdateNumberOfScripts();
            LuaListView.Refresh();
        }