示例#1
0
        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;
        }
示例#2
0
        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)));
        }
示例#3
0
        /// <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;
        }