Exemple #1
0
        private void PopulateCustomActionsDropDown()
        {
            customActionsToolStripMenuItem.DropDownItems.Clear();
            if (File.Exists(ScriptEngine.CustomActionsJsonPath))
            {
                custActions = CustomActionsJson.LoadFromJson(ScriptEngine.CustomActionsJsonPath);
                foreach (var action in custActions.Actions)
                {
                    var item = customActionsToolStripMenuItem.DropDownItems.Add(action.Name);
                    item.ToolTipText = action.Tooltip;
                    item.AutoToolTip = true;
                    item.Tag         = action;
                    item.Click      += (s, e) =>
                    {
                        var clickAction = CurrentCustomAction = (CustomActionJson)(s as ToolStripItem).Tag;
                        txtAdvanced.Text = clickAction.Execute;
                    };
                }
            }

            if (custActions == null || custActions.Actions.Length == 0)
            {
                var item = customActionsToolStripMenuItem.DropDownItems.Add("(No custom actions)");
                item.Enabled = false;
            }
        }
Exemple #2
0
        private void SaveCustomAction()
        {
            // TODO: Move this somewhere else
            using (var form = new SaveCustomActionForm())
            {
                form.txtName.Text    = CurrentCustomAction?.Name;
                form.txtTooltip.Text = CurrentCustomAction?.Tooltip;
                form.Context         = CurrentCustomAction?.ValidContexts ?? UI.Selection.Context;

                var res = form.ShowDialog();

                if (res == DialogResult.OK)
                {
                    var act = new CustomActionJson();
                    act.Name          = form.txtName.Text;
                    act.Tooltip       = form.txtTooltip.Text;
                    act.Execute       = txtAdvanced.Text;
                    act.Enabled       = "true";
                    act.ValidContexts = form.Context;

                    ScriptEngine.CompileCustomActions(new CustomActionsJson()
                    {
                        Actions = new[] { act }
                    });
                    if (ScriptEngine.CustomActionError)
                    {
                        MessageBox.Show("Compile failed, custom action contains errors and cannot be saved.", "Validation failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }

                    if (custActions == null)
                    {
                        custActions = new CustomActionsJson()
                        {
                            Actions = new CustomActionJson[0]
                        }
                    }
                    ;

                    // Remove any existing actions with the same name:
                    custActions.Actions = custActions.Actions.Where(a => !a.Name.Equals(act.Name, StringComparison.InvariantCultureIgnoreCase)).ToArray();
                    var toRemove = UI.Actions.OfType <CustomAction>().FirstOrDefault(a => a.BaseName.Equals(act.Name, StringComparison.InvariantCultureIgnoreCase));
                    if (toRemove != null)
                    {
                        UI.Actions.Remove(toRemove);
                    }

                    var list = custActions.Actions.ToList();
                    list.Add(act);

                    custActions.Actions = list.ToArray();
                    custActions.SaveToJson(ScriptEngine.CustomActionsJsonPath);
                    CurrentCustomAction = act;

                    ScriptEngine.AddCustomActions(UI.Actions);
                    PopulateCustomActionsDropDown();
                }
            }
        }
Exemple #3
0
        private void SaveCustomAction()
        {
            // TODO: Move this somewhere else
            var form = new SaveCustomActionForm();

            form.Context      = UI.Selection.Context;
            form.txtName.Text = CurrentCustomAction;

            var res = form.ShowDialog();

            if (res == DialogResult.OK)
            {
                var act = new CustomActionJson();
                act.Name          = form.txtName.Text;
                act.Tooltip       = form.txtTooltip.Text;
                act.Execute       = txtAdvanced.Text;
                act.Enabled       = "true";
                act.ValidContexts = form.Context;

                if (custActions == null)
                {
                    custActions = new CustomActionsJson()
                    {
                        Actions = new CustomActionJson[0]
                    }
                }
                ;

                // Remove any existing actions with the same name:
                custActions.Actions = custActions.Actions.Where(a => !a.Name.Equals(act.Name, StringComparison.InvariantCultureIgnoreCase)).ToArray();
                var toRemove = UI.Actions.OfType <CustomAction>().FirstOrDefault(a => a.BaseName.Equals(act.Name, StringComparison.InvariantCultureIgnoreCase));
                if (toRemove != null)
                {
                    UI.Actions.Remove(toRemove);
                }

                var list = custActions.Actions.ToList();

                list.Add(act);

                custActions.Actions = list.ToArray();
                custActions.SaveToJson(ScriptEngine.CustomActionsJsonPath);

                // Compile and add the newly created action:
                ScriptEngine.CompileCustomActions(new CustomActionsJson()
                {
                    Actions = new [] { act }
                });
                if (!ScriptEngine.CustomActionError)
                {
                    ScriptEngine.AddCustomActions(UI.Actions);
                }
                PopulateCustomActionsDropDown();
            }
        }
Exemple #4
0
        private void DeleteCurrentCustomAction()
        {
            if (CurrentCustomAction == null)
            {
                return;
            }

            var dialogResult = MessageBox.Show($"Are you sure you want to delete the custom action [{ CurrentCustomAction.Name }] ?", "Confirm delete action", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);

            if (dialogResult != DialogResult.Yes)
            {
                return;
            }

            if (custActions == null)
            {
                custActions = new CustomActionsJson()
                {
                    Actions = new CustomActionJson[0]
                }
            }
            ;

            custActions.Actions = custActions.Actions.Where(a => !a.Name.Equals(CurrentCustomAction.Name, StringComparison.InvariantCultureIgnoreCase)).ToArray();
            var toRemove = UI.Actions.OfType <CustomAction>().FirstOrDefault(a => a.BaseName.Equals(CurrentCustomAction.Name, StringComparison.InvariantCultureIgnoreCase));

            if (toRemove != null)
            {
                UI.Actions.Remove(toRemove);
            }

            custActions.SaveToJson(ScriptEngine.CustomActionsJsonPath);
            CurrentCustomAction = null;

            PopulateCustomActionsDropDown();
        }