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); }
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); }
public static MacroEditorFormCommandbarManager GetCommandbarManager(this MacroEditorForm macroEditorForm) => new MacroEditorFormCommandbarManager(macroEditorForm.GetToolbarsManager());