public void Load(CustomToolbarInfo toolbarInfo, string workDir) { m_Triggers = LoadTriggers(toolbarInfo); m_WorkDir = workDir; m_App.Documents.DocumentLoaded += OnDocumentLoaded; if (m_Triggers.Keys.Contains(Triggers_e.DocumentOpen)) { m_App.Documents.DocumentOpened += OnDocumentOpened; } if (m_Triggers.Keys.Contains(Triggers_e.DocumentNew)) { m_App.Documents.NewDocumentCreated += OnNewDocumentCreated; } if (m_Triggers.Keys.Contains(Triggers_e.DocumentActivated)) { m_App.Documents.DocumentActivated += OnDocumentActivated; } InvokeTrigger(Triggers_e.ApplicationStart, null); }
private void SaveSettingChanges(ToolbarSettings toolbarSets, CustomToolbarInfo toolbarConf, bool isEditable, out bool isToolbarChanged) { isToolbarChanged = false; var oldToolbarSetts = m_SettsProvider.GetSettings(); if (!DeepCompare(toolbarSets, oldToolbarSetts)) { m_SettsProvider.SaveSettings(toolbarSets); } bool isReadOnly; var oldToolbarConf = m_ToolbarConfProvider .GetToolbar(out isReadOnly, oldToolbarSetts.SpecificationFile); isToolbarChanged = !DeepCompare(toolbarConf, oldToolbarConf); if (isToolbarChanged) { if (isEditable) { UpdateGroupIds(toolbarConf.Groups, oldToolbarConf.Groups); m_ToolbarConfProvider.SaveToolbar(toolbarConf, toolbarSets.SpecificationFile); } else { m_Logger.Log("Skipped saving of read-only toolbar settings"); } } }
public CommandsManager(IXExtension addIn, IXApplication app, IMacroRunner macroRunner, IMessageService msg, ISettingsProvider settsProvider, IToolbarConfigurationProvider toolbarConfProvider, IXLogger logger) { m_AddIn = addIn; m_App = app; m_MacroRunner = macroRunner; m_Msg = msg; m_SettsProvider = settsProvider; m_ToolbarConfProvider = toolbarConfProvider; m_Logger = logger; m_CachedToggleStates = new Dictionary <CommandMacroInfo, bool>(); m_StateResolvers = new ConcurrentDictionary <CommandMacroInfo, IToggleButtonStateResolver>(); try { ToolbarInfo = LoadUserToolbar(); } catch (Exception ex) { m_Msg.ShowError(ex, "Failed to load toolbar specification"); } }
private void LoadCommands() { bool isReadOnly; try { m_ToolbarInfo = m_ConfsProvider.GetToolbar(out isReadOnly, ToolbarSpecificationPath); } catch { isReadOnly = true; m_MsgService.ShowMessage("Failed to load the toolbar from the specification file. Make sure that you have access to the specification file", MessageType_e.Error); } IsEditable = !isReadOnly; if (Groups != null) { Groups.CommandsChanged -= OnGroupsCollectionChanged; Groups.NewCommandCreated -= OnNewCommandCreated; } Groups = new CommandsCollection <CommandGroupVM>( (m_ToolbarInfo.Groups ?? new CommandGroupInfo[0]) .Select(g => new CommandGroupVM(g))); HandleCommandGroupCommandCreation(Groups.Commands); Groups.NewCommandCreated += OnNewCommandCreated; Groups.CommandsChanged += OnGroupsCollectionChanged; }
private void LoadCommands(CustomToolbarInfo toolbarInfo, string workDir) { m_CmdsMgr = Resolve <ICommandsManager>(); m_TriggersMgr = Resolve <ITriggersManager>(); m_CmdsMgr.CreateCommandGroups(toolbarInfo, workDir); m_TriggersMgr.Load(toolbarInfo, workDir); }
public void Load(CustomToolbarInfo toolbarInfo, string toolbarPath) { ToolbarInfo = toolbarInfo; m_ToolbarSpecificationPath = toolbarPath; IsEditable = !m_ConfsProvider.IsReadOnly(toolbarPath); LoadToolbar(ToolbarInfo); }
public void UpdateToolbarConfiguration(ToolbarSettings toolbarSets, CustomToolbarInfo toolbarConf, bool isEditable) { bool isToolbarChanged; SaveSettingChanges(toolbarSets, toolbarConf, isEditable, out isToolbarChanged); if (isToolbarChanged) { m_Msg.ShowInformation("Toolbar specification has changed. Please restart SOLIDWORKS"); } }
private void LoadToolbar(CustomToolbarInfo toolbarInfo) { if (Groups != null) { Groups.CommandsChanged -= OnGroupsCollectionChanged; Groups.NewCommandCreated -= OnNewCommandCreated; } Groups = new CommandsCollection <CommandGroupVM>( (toolbarInfo.Groups ?? new CommandGroupInfo[0]) .Select(g => m_CmdGrpFact.Invoke(g))); HandleCommandGroupCommandCreation(Groups.Commands); Groups.NewCommandCreated += OnNewCommandCreated; Groups.CommandsChanged += OnGroupsCollectionChanged; }
public void CreateCommandGroups(CustomToolbarInfo toolbarInfo, string workDir) { const string COMMAND_GROUP_TITLE_TEMPLATE = "Toolbar+ Command Group"; const string COMMAND_TITLE_TEMPLATE = "Toolbar+ Command"; m_WorkDir = workDir; var usedCommandGroupNames = new List <string>(); var usedCommandNames = new List <string>(); if (toolbarInfo?.Groups != null) { foreach (var grp in toolbarInfo.Groups .Where(g => g.Commands?.Any(c => c.Triggers.HasFlag(Triggers_e.Button)) == true)) { var cmdGrp = new CommandGroupInfoSpec(grp, m_IconsProviders, m_PathResolver, m_WorkDir); ResolveEmptyName(cmdGrp.Info, COMMAND_GROUP_TITLE_TEMPLATE, usedCommandGroupNames, out string grpTitle, out string grpTooltip); cmdGrp.Title = grpTitle; cmdGrp.Tooltip = grpTooltip; foreach (var cmd in cmdGrp.Commands) { ResolveEmptyName(((CommandItemInfoSpec)cmd).Info, COMMAND_TITLE_TEMPLATE, usedCommandNames, out string cmdTitle, out string cmdTooltip); cmd.Title = cmdTitle; cmd.Tooltip = cmdTooltip; } m_Logger.Log($"Adding command group: {cmdGrp.Title} [{cmdGrp.Id}]. Commands: {string.Join(", ", cmdGrp.Commands.Select(c => $"{c.Title} [{c.UserId}]").ToArray())}", XCad.Base.Enums.LoggerMessageSeverity_e.Debug); var cmdGrpCad = m_AddIn.CommandManager.AddCommandGroup(cmdGrp); cmdGrpCad.CommandClick += OnCommandClick; cmdGrpCad.CommandStateResolve += OnCommandStateResolve; } LoadToggleStateResolvers( toolbarInfo.Groups.SelectMany( g => g.Commands ?? Enumerable.Empty <CommandMacroInfo>()) .Where(m => m.Triggers.HasFlag(Triggers_e.ToggleButton) && m.ToggleButtonStateCodeType != ToggleButtonStateCode_e.None)); } }
public CommandsManager(IXExtension addIn, IXApplication app, IMacroRunner macroRunner, IMessageService msg, ISettingsProvider settsProvider, IToolbarConfigurationProvider toolbarConfProvider, IXLogger logger) { m_AddIn = addIn; m_App = app; m_MacroRunner = macroRunner; m_Msg = msg; m_SettsProvider = settsProvider; m_ToolbarConfProvider = toolbarConfProvider; m_Logger = logger; try { ToolbarInfo = LoadUserToolbar(); } catch (Exception ex) { m_Msg.ShowError(ex, "Failed to load toolbar specification"); } }
private Dictionary <Triggers_e, CommandMacroInfo[]> LoadTriggers(CustomToolbarInfo toolbarInfo) { var triggersCmds = new Dictionary <Triggers_e, CommandMacroInfo[]>(); var allCmds = toolbarInfo?.Groups?.SelectMany(g => g.Commands ?? Enumerable.Empty <CommandMacroInfo>()); if (allCmds?.Any() == true) { var triggers = typeof(Triggers_e).GetEnumFlags().Where(e => !e.Equals(Triggers_e.Button)); foreach (Triggers_e trigger in triggers) { var cmds = allCmds.Where(c => c.Triggers.HasFlag(trigger)); if (cmds.Any()) { triggersCmds.Add(trigger, cmds.ToArray()); } } } return(triggersCmds); }
public void DisplayCommandManagerView() { var toolbar = new CustomToolbarInfo(); toolbar.Groups = new CommandGroupInfo[] { new CommandGroupInfo() { Title = "Toolbar1", Commands = new CommandMacroInfo[] { new CommandMacroInfo() { MacroPath = "D:\\1.swb", Title = "Command1", Description = "Sample command in toolbar which will invoke some macro", EntryPoint = new MacroStartFunction() { ModuleName = "Module1", SubName = "Sub1" } }, new CommandMacroInfo() { Title = "Command2" }, new CommandMacroInfo() { Title = "Command3" } } }, new CommandGroupInfo() { Title = "Toolbar2", Commands = new CommandMacroInfo[] { new CommandMacroInfo() { Title = "Command4" }, new CommandMacroInfo() { Title = "Command5" }, new CommandMacroInfo() { Title = "Command6" }, new CommandMacroInfo() { Title = "Command7" }, new CommandMacroInfo() { Title = "Command8" }, new CommandMacroInfo() { Title = "Command9" }, new CommandMacroInfo() { Title = "Command10" }, new CommandMacroInfo() { Title = "Command11" }, new CommandMacroInfo() { Title = "Command12" }, new CommandMacroInfo() { Title = "Command13" } } } }; var confProviderMock = new Mock <IToolbarConfigurationProvider>(); var settsProviderMock = new Mock <ISettingsProvider>(); confProviderMock.Setup(m => m.GetToolbar(out It.Ref <bool> .IsAny, It.IsAny <string>())). Returns(toolbar); settsProviderMock.Setup(p => p.GetSettings()) .Returns(new ToolbarSettings()); var vm = new CommandManagerVM(confProviderMock.Object, settsProviderMock.Object, new Mock <IMessageService>().Object); var form = new CommandManagerForm(); form.DataContext = vm; form.ShowDialog(); }
public void DisplayCommandManagerView() { var toolbar = new CustomToolbarInfo(); toolbar.Groups = new CommandGroupInfo[] { new CommandGroupInfo() { Title = "Toolbar1", Commands = new CommandMacroInfo[] { new CommandMacroInfo() { Title = "Command1", Description = "Sample command in toolbar which will invoke some macro" }, new CommandMacroInfo() { Title = "Command2" }, new CommandMacroInfo() { Title = "Command3" } } }, new CommandGroupInfo() { Title = "Toolbar2", Commands = new CommandMacroInfo[] { new CommandMacroInfo() { Title = "Command4" }, new CommandMacroInfo() { Title = "Command5" }, new CommandMacroInfo() { Title = "Command6" }, new CommandMacroInfo() { Title = "Command7" }, new CommandMacroInfo() { Title = "Command8" }, new CommandMacroInfo() { Title = "Command9" }, new CommandMacroInfo() { Title = "Command10" }, new CommandMacroInfo() { Title = "Command11" }, new CommandMacroInfo() { Title = "Command12" }, new CommandMacroInfo() { Title = "Command13" } } } }; var confProviderMock = new Mock <IToolbarConfigurationProvider>(); var settsProviderMock = new Mock <ISettingsProvider>(); confProviderMock.Setup(m => m.GetToolbar(out It.Ref <bool> .IsAny, It.IsAny <string>())). Returns(toolbar); settsProviderMock.Setup(p => p.GetSettings()) .Returns(new ToolbarSettings()); var vm = new CommandManagerVM(confProviderMock.Object, settsProviderMock.Object, new Mock <IMessageService>().Object); new CommandManagerForm(vm, IntPtr.Zero).ShowDialog(); }
public void SaveToolbar(CustomToolbarInfo toolbar, string toolbarSpecFilePath) { m_UserSettsSrv.StoreSettings(toolbar, toolbarSpecFilePath); }
public void DisplayCommandManagerView() { var toolbar = new CustomToolbarInfo(); toolbar.Groups = new CommandGroupInfo[] { new CommandGroupInfo() { Title = "Toolbar1", Commands = new CommandMacroInfo[] { new CommandMacroInfo() { MacroPath = "D:\\1.swb", Title = "Command1", Description = "Sample command in toolbar which will invoke some macro", EntryPoint = new MacroStartFunction("Module1", "Sub1") }, new CommandMacroInfo() { Title = "Command2" }, new CommandMacroInfo() { Title = "Command3" } } }, new CommandGroupInfo() { Title = "Toolbar2", Commands = new CommandMacroInfo[] { new CommandMacroInfo() { Title = "Command4" }, new CommandMacroInfo() { Title = "Command5" }, new CommandMacroInfo() { Title = "Command6" }, new CommandMacroInfo() { Title = "Command7" }, new CommandMacroInfo() { Title = "Command8" }, new CommandMacroInfo() { Title = "Command9" }, new CommandMacroInfo() { Title = "Command10" }, new CommandMacroInfo() { Title = "Command11" }, new CommandMacroInfo() { Title = "Command12" }, new CommandMacroInfo() { Title = "Command13" } } } }; var confProviderMock = new Mock <IToolbarConfigurationProvider>(); var settsProviderMock = new Mock <ISettingsProvider>(); confProviderMock.Setup(m => m.GetToolbar(It.IsAny <string>())). Returns(toolbar); settsProviderMock.Setup(p => p.ReadSettings <ToolbarSettings>()) .Returns(new ToolbarSettings()); var vm = new CommandManagerVM(confProviderMock.Object, new Mock <IMessageService>().Object, new Mock <IXLogger>().Object, new Mock <ICadDescriptor>().Object, c => new CommandGroupVM(c, new Mock <IIconsProvider[]>().Object, new Mock <IFilePathResolver>().Object, x => new CommandMacroVM(x, new Mock <IIconsProvider[]>().Object, new Mock <IFilePathResolver>().Object, new Mock <IMacroEntryPointsExtractor>().Object))); var form = new CommandManagerForm(); form.DataContext = vm; form.ShowDialog(); }