private void Window_Initialized(object sender, EventArgs e)
        {
            CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-US");
            CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("en-US");
            if (!Directory.Exists("data") || !File.Exists("sqlite3.dll"))
            {
                MessageBox.Show(Debugger.IsAttached ? @"""data"" folder and/or sqlite3.dll not found. Make sure to copy the data folder and sqlite3.dll to the output directory." : "Some files are missing, please reinstall.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                Environment.Exit(-1);
            }

            if (!Debugger.IsAttached)
                AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
            _uiManager = new UiManager();

            List<Assembly> assemblies = LoadExtensions();
            _extensionManager = new ExtensionManager(_uiManager, Dispatcher, ConfigDir, new FinalesFunkelnExtension());
            _extensionManager.AddAssemblies(assemblies);
            _extensionManager.InitExtensions();

            foreach (var x in _extensionManager.Extensions)
            {
                var item = new ExtensionMenuItem(x.Value);
                item.Views.AddRange(_uiManager.GetViewsByExtension(x.Value));
                ViewsMenuItem.Items.Add(item);
            }

            DockingManager.Layout.RootPanel = new LayoutPanel(_mainPane = new LayoutDocumentPane());

            foreach (var view in _uiManager.GetViews())
            {
                LayoutContent c = new DocumentViewControl(view);
                _mainPane.Children.Add(c);
            }

            #if AIRDEBUG && DEBUG
            _processInjector = new ProcessInjector("adl");//AirDebugLauncher
            #else
            _processInjector = new ProcessInjector("lolclient");
            #endif

            _processInjector.Injected += pi_Injected;
            _processInjector.ProcessFound += ProcessInjector_ProcessFound;
            _processInjector.ProcessExited += _processInjector_ProcessExited;
            _processInjector.Start();
        }
 private void ViewMenuItem_Click(object sender, RoutedEventArgs e)
 {
     var mi = e.OriginalSource as MenuItem;
     var data = mi?.DataContext as View;
     //TODO probably inefficient needs to be rewritten eventually
     if (data != null)
     {
         List<LayoutDocumentPane> panes = GetPanes();
         bool alreadyActive=false;
         LayoutDocumentPane biggest = null;
         if (panes.Count > 0)
         {
             biggest = panes[0];
             double biggestSize = biggest.DockWidth.Value*biggest.DockHeight.Value;
             foreach (var x in panes)
             {
                 foreach (var y in x.Children)
                 {
                     if (y is DocumentViewControl)
                     {
                         if ((y as DocumentViewControl).View.InternalName == data.InternalName)
                         {
                             DockingManager.ActiveContent = y;
                             alreadyActive = true;
                         }
                     }
                     else
                         throw new NotSupportedException();
                 }
                 var size = x.DockWidth.Value*x.DockHeight.Value;
                 if (size > biggestSize)
                 {
                     biggestSize = size;
                     biggest = x;
                 }
             }
         }
         else
         {
             biggest=new LayoutDocumentPane();
             DockingManager.Layout.RootPanel.Children.Add(biggest);
         }
         if (!alreadyActive)
         {
             var ctrl = new DocumentViewControl(data);
             biggest.Children.Add(ctrl);
             DockingManager.ActiveContent = ctrl;
         }
     }
 }