diff -r 40be5c189e2e -r 5eb765a7a793 ui/wpf/UIcore/Application.cs --- 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 queue = new Queue(); private object sync = new object(); private object result = new object(); + private Boolean main = false; - private Boolean Running = false; public String Name; + public List Windows = new List(); + 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