protected override void InitializeView(IClientController clientController, ICrossViewManager crossViewManager) { InstalledPlugins = new ObservableCollection <PluginPresenter>(); foreach (var pluginInfo in clientController.Client.Plugins) { var foundPlugin = PluginManager.Current.LoadedPlugins.FirstOrDefault(x => x.PluginInfo.Guid == pluginInfo.Guid); var plugin = new PluginPresenter { Name = pluginInfo.Name, Guid = pluginInfo.Guid, Version = pluginInfo.Version, IsLoaded = pluginInfo.IsLoaded }; if (foundPlugin != null) { plugin.Plugin = foundPlugin; if (foundPlugin.PluginInfo.Version > PluginVersion.Parse(plugin.Version)) { plugin.IsUpgradeAvailable = true; } if (string.IsNullOrEmpty(plugin.Name)) { plugin.Name = foundPlugin.PluginInfo.Name; } } InstalledPlugins.Add(plugin); } ((ConnectionManager)clientController.ConnectionManager).PluginLoaded += ClientPluginsViewModel_PluginLoaded; }
private void ClientPluginsViewModel_PluginLoaded(object sender, Administration.Core.Args.PluginLoadedEventArgs e) { var plugin = PluginManager.Current.LoadedPlugins.First(x => x.PluginInfo.Guid == e.Guid); var pluginPresenter = new PluginPresenter { Guid = e.Guid, IsUpgradeAvailable = false, Version = e.Version, Name = plugin.PluginInfo.Name, Plugin = plugin, IsLoaded = e.IsLoaded }; Application.Current.Dispatcher.BeginInvoke(new Action(() => InstalledPlugins.Add(pluginPresenter))); }
/// <summary> /// System.Windows.Application.Startup イベントを発生させます。 /// </summary> /// <param name="e">イベント データを格納している System.Windows.StartupEventArgsです。</param> protected override async void OnStartup(StartupEventArgs e) { string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); ProfileOptimization.SetProfileRoot(path); ProfileOptimization.StartProfile("Naya.profile"); if (!Environment.Is64BitOperatingSystem || !Environment.Is64BitProcess) { MessageBox.Show("Not Support 32BitOS."); Environment.Exit(-1); } AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(this.CurrentDomain_UnhandledException); // Setup PluginPresenter. { PluginPresenter pluginPresenter = new PluginPresenter(); string pluginPath = Path.Combine(path, "Plugins"); pluginPresenter.Setup(pluginPath); this.presenter.AddPluginPresenter(pluginPresenter); } // Setup LogPresenter { OutputLogFactory factory = new OutputLogFactory(); LogPresenter logPresenter = new LogPresenter(factory); this.presenter.AddLogPresenter(logPresenter); } // Setup OperationPresenter { OperationPresenter operationPresenter = new OperationPresenter(); this.presenter.AddOperationPresenter(operationPresenter); } // Setup MenuPresenter { MenuPresenter menuPresenter = new MenuPresenter(); this.presenter.AddMenuPresenter(menuPresenter); } // Setup PanelPresenter { PanelPresenter panelPresenter = new PanelPresenter(); this.presenter.AddPanelPresenter(panelPresenter); } // Setup RepositoryPresenter { RepositoryPresenter repositoryPresenter = new RepositoryPresenter(); this.presenter.AddRepositoryPresenter(repositoryPresenter); } // Setup ScriptPresenter { PythonScriptBridge scriptBridge = new PythonScriptBridge("Naya"); ScriptPresenter scriptPresenter = new ScriptPresenter(scriptBridge); this.presenter.AddScriptPresenter(scriptPresenter); } MainWindow window = new MainWindow(); MainViewModel viewModel = new MainViewModel(); GlobalPresenter.SetOwner(window); window.DataContext = viewModel; window.Show(); window.IsEnabled = false; await NayaPresenter.Initialize(); if (LayoutHelper.HasAvalonDockConfigFile()) { window.LoadLayout(); } else { GlobalPresenter.MakeDefaultTools(); } window.IsEnabled = true; }