ui/wpf/UIcore/Application.cs

changeset 81
5eb765a7a793
parent 78
135920fe441b
child 89
9a7e4a335b2b
--- a/ui/wpf/UIcore/Application.cs	Sat Jan 24 19:17:35 2015 +0100
+++ b/ui/wpf/UIcore/Application.cs	Sun Jan 25 15:01:04 2015 +0100
@@ -4,6 +4,7 @@
 using System.Text;
 using System.Threading;
 using System.Threading.Tasks;
+using System.Windows;
 
 namespace UI
 {  
@@ -17,9 +18,11 @@
         private Queue<Action> queue = new Queue<Action>();
         private object sync = new object();
         private object result = new object();
+        private Boolean main = false;
 
-        private Boolean Running = false;
         public String Name;
+        public List<Window> Windows = new List<Window>();
+        public ApplicationMenu AppMenu = new ApplicationMenu();
         
         private Application() : base()
         {
@@ -51,6 +54,7 @@
         private void RunApplication()
         {
             application = new System.Windows.Application();
+            main = true;
             application.Run();
         }
 
@@ -67,6 +71,11 @@
                     {
                         Monitor.Pulse(result);
                     }
+                    if (main)
+                    {
+                        // end loop after shutdown
+                        break;
+                    }
                 }
             }
         }
@@ -116,6 +125,20 @@
                 }
             }
         }
+
+        public void AddWindow(Window window)
+        {
+            Windows.Add(window);
+        }
+
+        public void RemoveWindow(Window window)
+        {
+            Windows.Remove(window);
+            if (Windows.Count == 0)
+            {
+                application.Shutdown();
+            }
+        }
     }
 
     public class ResultExec<T>

mercurial