public MainWindowViewModel() { // create logger _logger = new Logger.Logger(); // load modules _logger.Info(this, "Load modules"); _compositionHelper = new CompositionHelper <IModuleContract>(); _compositionHelper.AssembleModuleComponents(); // core menu var coreMenu = new List <IMenuCommand> { new File(), new Help() }; // generate full menu (core + modules) MainMenuViewModel = new MainMenuViewModel(coreMenu, Modules); // generate a renderer RendererViewModel = new RendererViewModel(); }
public static Menu.Core.Menu CreateMenu(IEnumerable <IMenuCommand> coreCommands, IEnumerable <Lazy <IModuleContract> > modules) { var menuCompositionHelper = new CompositionHelper <IModuleCommand, IMenuGroupItemAttribute>(); menuCompositionHelper.AssembleModuleComponents(modules); var menu = new Menu.Core.Menu(); foreach (var coreCommand in coreCommands) { menu.Parse(coreCommand.GetType().GetAttributeValue((MenuGroupItemAttribute attribute) => attribute.Items), coreCommand); } foreach (var moduleCommand in menuCompositionHelper.Modules) { menu.Parse(moduleCommand.Metadata.Items, moduleCommand.Value); } menu.AddSeparators(); menu.ActivateParents(); return(menu); }