MacroEditorForm CurrentEditor(Form form, bool hide, out bool hidden, out bool isNew)
        {
            if (_editor != null)
            {
                hidden = !_editor.Visible;
                isNew  = false;
                return(_editor);
            }

            isNew               = true;
            _editor             = new MacroEditorForm();
            _editor.FormClosed += MacroEditorForm_FormClosed;

#if DEBUG
            _editor.MacroCode = CodeResources.MacroEditor_CodeTemplate_MacroInternal;
#else
            _editor.MacroCode = CodeResources.MacroEditor_CodeTemplate_MacroExternal;
#endif
            _editor.Show();

            hidden = hide;

            if (hide)
            {
                _editor.Hide();
            }

            return(_editor);
        }
 public static bool IsDirty(this MacroEditorForm macroEditorForm)
 {
     if (macroEditorForm.GetFieldValue("macroEditor") is MacroEditorControl macroEditorControl)
     {
         return(macroEditorControl.Dirty);
     }
     return(false);
 }
        public static void Run(this MacroEditorForm macroEditorForm)
        {
            var method = macroEditorForm.GetType()
                         .GetMethods(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic)
                         .FirstOrDefault(mth => mth.Name.Equals("PerformCommand", StringComparison.OrdinalIgnoreCase));

            if (method != null)
            {
                method.Invoke(macroEditorForm, new object[] { "Run", null, null, null });
            }
        }
        public static void SetFilePath(this MacroEditorForm macroEditorForm, string filePath)
        {
            var field = macroEditorForm.GetType()
                        .GetFields(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic)
                        .FirstOrDefault(f => f.Name.Equals("_fileName", StringComparison.OrdinalIgnoreCase));

            if (field != null)
            {
                field.SetValue(macroEditorForm, filePath);
            }
        }
 public static void SetAsDefault(this MacroEditorForm macroEditorForm)
 {
     try
     {
         typeof(Program)
         .GetField("_macroEditor", BindingFlags.Static | BindingFlags.NonPublic)?
         .SetValue(null, macroEditorForm);
     }
     catch (Exception)
     {
     }
 }
        public static bool IsDirty(this MacroEditorForm macroEditorForm)
        {
            var field = macroEditorForm.GetType()
                        .GetFields(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic)
                        .FirstOrDefault(f => f.Name.Equals("macroEditor", StringComparison.OrdinalIgnoreCase));

            var editor = field.GetValue(macroEditorForm) as MacroEditorControl;

            if (editor == null)
            {
                return(false);
            }

            return(editor.Dirty);
        }
Ejemplo n.º 7
0
        MacroEditorForm GetOrCreateMacroEditorForm(bool hide, out bool hidden, out bool isNew)
        {
            var editor = Application.OpenForms.OfType <MacroEditorForm>().FirstOrDefault();

            if (editor != null)
            {
                hidden = !editor.Visible;
                isNew  = false;
                return(editor);
            }

            isNew  = true;
            editor = new MacroEditorForm();

#if DEBUG
            editor.MacroCode = CodeResources.MacroEditor_CodeTemplate_MacroInternal;
#else
            _editor.MacroCode = CodeResources.MacroEditor_CodeTemplate_MacroExternal;
#endif
            editor.SetAsDefault();
            if (hide)
            {
                editor.Opacity = 0;
                editor.Show();
            }
            else
            {
                editor.Show();
            }

            hidden = hide;

            if (hide)
            {
                editor.Hide();
            }

            return(editor);
        }
        protected override void OnBeforePerformingCommand(BeforePerformingCommandEventArgs e)
        {
            e.Handled = true;

            var container = _containers.FirstOrDefault(c => c.Form.Equals(e.Form));

            switch (e.Key)
            {
            case (Key_Button_ShowMacroEditor):
            {
                CurrentEditor(e.Form, false, out bool hidden, out bool isNew).Activate();
            }
            break;

            case (Key_Button_Refresh):
            {
                UpdateTools(container);
            }
            break;

            case (Key_Button_Config):
            {
                using (var directoryDialog = new DirectoryDialog(Settings.TryGetStringValue(Key_MacrosDirectory))
                    {
                        Owner = e.Form
                    })
                {
                    if (directoryDialog.ShowDialog() == DialogResult.OK)
                    {
                        Settings[Key_MacrosDirectory] = directoryDialog.Directory;
                        Program.Settings.InitialDirectories.SetInitialDirectoryContext(Citavi.Settings.InitialDirectoryContext.Macros, Path2.GetFullPathFromPathWithVariables(directoryDialog.Directory));
                        UpdateTools(container);
                    }
                }
            }
            break;

            case (Key_Button_OpenInExplorer):
            {
                if (IsValidDirectory(out string message))
                {
                    var path = Path2.GetFullPathFromPathWithVariables(Settings[Key_MacrosDirectory]);
                    Process.Start("explorer.exe", path);
                }
                else
                {
                    MessageBox.Show(e.Form, message, e.Form.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            break;

            default:

                if (e.Key.StartsWith(Key_Button_Directory, StringComparison.OrdinalIgnoreCase))
                {
                    if (container.Macros.ContainsKey(e.Key))
                    {
                        var macro = container.Macros[e.Key];

                        if (File.Exists(macro.Path))
                        {
                            var hide = macro.Action == MacroAction.Run;

                            _editor = CurrentEditor(e.Form, hide, out bool hidden, out bool isNew);

                            if (!isNew && _editor.IsDirty())
                            {
                                if (MessageBox.Show(e.Form, MacroManagerResources.UserWarningSaveMessage, e.Form.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                                {
                                    _editor.Save();
                                }
                            }

                            _editor.MacroCode = File.ReadAllText(macro.Path);
                            _editor.SetFilePath(macro.Path);
                            _editor.Activate();

                            if (macro.Action == MacroAction.Run)
                            {
                                _editor.Run();
                            }

                            if (hidden)
                            {
                                _editor.Close();
                            }
                        }
                        else
                        {
                            MessageBox.Show(e.Form, MacroManagerResources.PathNotFoundMessage.FormatString(macro.Path), e.Form.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                            UpdateTools(container, true);
                        }
                    }
                    else
                    {
                        e.Handled = false;
                    }
                }
                else
                {
                    e.Handled = false;
                }
                break;
            }

            base.OnBeforePerformingCommand(e);
        }
 void MacroEditorForm_FormClosed(object sender, FormClosedEventArgs e)
 {
     _editor.FormClosed -= MacroEditorForm_FormClosed;
     _editor             = null;
 }
 public static void Run(this MacroEditorForm macroEditorForm)
 {
     macroEditorForm
     .GetNonPublicMethodInfo("PerformCommand")?
     .Invoke(macroEditorForm, new object[] { "Run", null, null, null });
 }
 public static void SetFilePath(this MacroEditorForm macroEditorForm, string filePath)
 {
     macroEditorForm
     .GetField("_fileName")?
     .SetValue(macroEditorForm, filePath);
 }
Ejemplo n.º 12
0
 public static MacroEditorFormCommandbarManager GetCommandbarManager(this MacroEditorForm macroEditorForm) => new MacroEditorFormCommandbarManager(macroEditorForm.GetToolbarsManager());