Beispiel #1
0
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            // Get plugin folder from command line parameter, or use debug folder when running in debug.
#if DEBUG
            const string pluginDirectory = "Plugins";
            if (!Directory.Exists(pluginDirectory))
            {
                Directory.CreateDirectory(pluginDirectory);
            }
            PluginManagerDirectory = pluginDirectory;
#else
            PluginManagerDirectory = e.Args.ElementAtOrDefault(0);
#endif
            if (string.IsNullOrEmpty(PluginManagerDirectory) || !Directory.Exists(PluginManagerDirectory))
            {
                MessageBox.Show("Plug-in installation directory has to be passed as a command line parameter.");
                Current.Shutdown();

                // In rare case shutdown does not work causing application crash?
                Environment.Exit(0);
            }

            PostProcessPath = e.Args.ElementAtOrDefault(1);

            InterruptionsPluginLibrary = Path.Combine(PluginManagerDirectory, "InterruptionHandlers");
            PersistencePluginLibrary   = Path.Combine(PluginManagerDirectory, "ApplicationPersistence");
            VdmPluginLibrary           = Path.Combine(PluginManagerDirectory, "VdmSettings");

            _manifestManager = new PluginManifestManager();

            var pluginManagerController = new PluginManagerController();
            pluginManagerController.RefreshingEvent += (sender, args) =>
            {
                _manifestManager.PluginManifest.ChceckPluginState(pluginManagerController.ProviderDictionary);
                Current.Dispatcher.Invoke(() => _appOverviewViewModel.Populate(_manifestManager.PluginManifest));
            };

            _manifestManager.PluginManifest.ChceckPluginState(pluginManagerController.ProviderDictionary);

            _appOverviewViewModel = new AppOverviewViewModel(_manifestManager.PluginManifest);
            _appOverviewViewModel.ConfiguringPluginEvent +=
                (model, args) => pluginManagerController.Configure(model.Guid, model.PluginType, model.PluginPath);
            _appOverview = new AppOverview {
                DataContext = _appOverviewViewModel
            };
            _appOverview.Show();

            // Dispose MEF container on exit and any unhandled exception.
            Exit += (sender, args) => pluginManagerController.Dispose();
            AppDomain.CurrentDomain.UnhandledException += (s, a) => pluginManagerController.Dispose();
        }
Beispiel #2
0
        public object Any(AppOverview request)
        {
            if (request.Reload)
            {
                Cache.FlushAll();
            }

            var response = new AppOverviewResponse
            {
                Created         = DateTime.UtcNow,
                AllTiers        = GetAllTiers(),
                TopTechnologies = GetTopTechByCategory(minCount: 1)
                                  .OrderByDescending(x => x.StacksCount)
                                  .Take(100)
                                  .ToList(),
            };

            response.AllTiers.Insert(0, new Option {
                Title = "[ Top 100 Technologies ]"
            });

            return(response);
        }
        public object Any(AppOverview request)
        {
            var key = ContentCache.AppOverviewKey(clear: request.Reload);

            return(base.Request.ToOptimizedResultUsingCache(ContentCache.Client, key, () =>
            {
                var response = new AppOverviewResponse
                {
                    Created = DateTime.UtcNow,
                    AllTiers = GetAllTiers(),
                    TopTechnologies = GetTopTechByCategory(minCount: 1)
                                      .OrderByDescending(x => x.StacksCount)
                                      .Take(100)
                                      .ToList(),
                };

                response.AllTiers.Insert(0, new Option {
                    Title = "[ Top 100 Technologies ]"
                });

                return response;
            }));
        }