public MainModel(IButtonModel firstButton, IButtonModel secondButton, IButtonModel thirdButton, ICalendarModel calendar) { FirstButton = firstButton; SecondButton = secondButton; ThirdButton = thirdButton; Calendar = calendar; }
public ButtonViewModel(IButtonModel button) { _animator = button.Door.Animator; }
public void Reload() { if (this.Plugins != null) { foreach (var item in this.Plugins) { item.Key.Unload(); } } _container.ComposeParts(this); var plugins = new Dictionary <IPlugin, IPluginMetadata>(); var menus = new List <IButtonModel>(); IButtonModel toolsMenu = null; var toolPluginMenus = new List <IButtonModel>(); var toolbar = new List <Tuple <string, IEnumerable <IButtonModel> > >(); var statusItems = new List <Tuple <string, IEnumerable <IStatusItem> > >(); var layerProviders = new List <PluginItemProvider <ILayer> >(); var projectionProviders = new List <PluginItemProvider <IProjection> >(); var datums = new List <Datum>(); var anchorableTools = new List <Tuple <IDockElement, DataTemplate> >(); var pluginsSettings = new Dictionary <IPlugin, object>(); foreach (var item in this.LoadedPlugins) { var plugin = item.Value; var metadata = new PluginMetadata(item.Metadata, plugin.GetType().Assembly); plugins.Add(plugin, metadata); var pMenu = plugin.Menu; if (pMenu != null && pMenu.Items.Any()) { switch (pMenu.ItemsLocation) { case PluginMenu.PluginMenuLocation.TopLevel: menus.AddRange(pMenu.Items); if (toolsMenu == null) { toolsMenu = pMenu.Items.FirstOrDefault(m => m.Name == "Tools" || m.Name == "_Tools"); } break; case PluginMenu.PluginMenuLocation.ToolsMenu: toolPluginMenus.AddRange(pMenu.Items); break; case PluginMenu.PluginMenuLocation.ToolsSubmenu: toolPluginMenus.Add(new ButtonModel() { Name = metadata.Name, Children = new System.Collections.ObjectModel.ObservableCollection <IButtonModel>(pMenu.Items) }); break; } } var pToolbar = plugin.ToolBar; if (pToolbar != null && pToolbar.Any()) { toolbar.Add(new Tuple <string, IEnumerable <IButtonModel> >(metadata.Name, plugin.ToolBar)); } var pStatusBar = plugin.StatusBar; if (pStatusBar != null && pStatusBar.Any()) { statusItems.Add(new Tuple <string, IEnumerable <IStatusItem> >(metadata.Name, plugin.StatusBar)); } var pProjectionProviders = plugin.ProjectionProviders; if (pProjectionProviders != null && pProjectionProviders.Any()) { projectionProviders.AddRange(pProjectionProviders); } var pDatums = plugin.Datums; if (pDatums != null && pDatums.Any()) { datums.AddRange(pDatums); } var pSettings = plugin.Settings; if (pSettings != null) { pluginsSettings.Add(plugin, pSettings); } var gPlugin = plugin as IGraphicalPlugin; if (gPlugin != null) { var pLayerProviders = gPlugin.LayerProviders; if (pLayerProviders != null && pLayerProviders.Any()) { layerProviders.AddRange(pLayerProviders); } var pAnchorableTools = gPlugin.AnchorableTools; if (pAnchorableTools != null && pAnchorableTools.Any()) { foreach (var tool in pAnchorableTools) { anchorableTools.Add(tool); } } } } if (toolsMenu == null) { toolsMenu = new ButtonModel() { Name = "_Tools" }; } else { toolsMenu.Children.Add(new ButtonModel() { IsSeparator = true }); } foreach (var item in toolPluginMenus) { toolsMenu.Children.Add(item); } this.Plugins = plugins; this.Menus = menus; this.Toolbar = toolbar; this.StatusItems = statusItems; this.LayerProviders = layerProviders; this.ProjectionProviders = projectionProviders; this.Datums = datums; this.AnchorableTools = anchorableTools; this.PluginsSettings = pluginsSettings; this.Reloaded?.Invoke(this, new EventArgs()); }
public ButtonViewModel(IButtonModel menuButtonModel) { _buttonCommand = menuButtonModel; Debug.Assert(menuButtonModel != null, "IButtonModel cannot be null"); }