source: trunk/CrypTool/App.xaml.cs @ 2514

Last change on this file since 2514 was 2514, checked in by Sven Rech, 10 years ago

fixed public solution

File size: 2.2 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Configuration;
4using System.Data;
5using System.Linq;
6using System.Windows;
7using System.Threading;
8using Cryptool.Core;
9
10namespace CrypTool
11{
12    /// <summary>
13    /// Interaction logic for App.xaml
14    /// </summary>
15    public partial class App : Application
16    {
17        private void OnStartup(object sender, StartupEventArgs e)
18        {
19            new Thread(LoadPlugins).Start();
20        }
21
22        private void LoadPlugins()
23        {
24            PluginManager pluginMgr = new PluginManager(null);
25            pluginMgr.OnPluginLoaded += new CrypCorePluginLoadedHandler(OnPluginLoaded);
26            Dictionary<string, Type> plugins = pluginMgr.LoadTypes(AssemblySigningRequirement.LoadAllAssemblies);
27            OpenMainWindow(plugins, pluginMgr);
28        }
29
30        private void OnPluginLoaded(object sender, PluginLoadedEventArgs args)
31        {
32            if (!Application.Current.Dispatcher.CheckAccess())
33            {
34                Application.Current.Dispatcher.BeginInvoke(new Action<Object, PluginLoadedEventArgs>(OnPluginLoaded), sender, args);
35            }
36            else
37            {
38                SplashScreen screen = (SplashScreen)this.MainWindow;
39                screen.Text = args.AssemblyName;
40                screen.Value = args.CurrentPluginNumber == 0 ? 0 : (int)((double)args.CurrentPluginNumber / (double)args.NumberPluginsFound * 100);
41            }
42        }
43
44        private void OpenMainWindow(Dictionary<string, Type> plugins, PluginManager mgr)
45        {
46
47            if (!Application.Current.Dispatcher.CheckAccess())
48            {
49                Application.Current.Dispatcher.BeginInvoke(new Action<Dictionary<string, Type>, PluginManager>(OpenMainWindow), plugins, mgr);
50            }
51            else
52            {
53                SplashScreen screen = (SplashScreen)this.MainWindow;
54                MainWindow wnd = new CrypTool.MainWindow();
55                wnd.LoadedTypes = plugins;
56                wnd.PluginManager = mgr;
57                Application.Current.MainWindow = wnd;
58               
59                screen.Close();
60                Application.Current.MainWindow.Show();
61            }
62        }
63    }
64}
Note: See TracBrowser for help on using the repository browser.