diff --git a/source/Cosmos.Build.Windows/Builder/Builder.cs b/source/Cosmos.Build.Windows/Builder/Builder.cs index 92080cff7..87e2bb405 100644 --- a/source/Cosmos.Build.Windows/Builder/Builder.cs +++ b/source/Cosmos.Build.Windows/Builder/Builder.cs @@ -29,8 +29,8 @@ namespace Cosmos.Compiler.Builder public event Action BuildProgress; public event Action LogMessage; - private DebugWindow xDebugWindow = null; //HACK pass in event - public DebugWindow DebugWindow { get { return xDebugWindow; } } + private DebugWindowController xDebugWindow = null; //HACK pass in event + public DebugWindowController DebugWindow { get { return xDebugWindow; } } private readonly BuildProgress currentProgress = new BuildProgress(); @@ -305,7 +305,7 @@ namespace Cosmos.Compiler.Builder } - private void ProcessDebug(BuildOptions options, ref DebugWindow xDebugWindow, ref Process xQEMU) + private void ProcessDebug(BuildOptions options, ref DebugWindowController xDebugWindow, ref Process xQEMU) { if (options.DebugMode == DebugMode.Source) @@ -377,9 +377,10 @@ namespace Cosmos.Compiler.Builder } - //HACK MUST BE UI - //xDebugWindow = new DebugWindow(); - //xDebugWindow.SetSourceInfoMap(xSourceMappings, xDebugConnector); + //TODO handle passing to UI better + xDebugWindow = new DebugWindowController(); + xDebugWindow.mSourceMappings = xSourceMappings; + xDebugWindow.mDebugConnector = xDebugConnector; } else { diff --git a/source/Cosmos.Build.Windows/Builder/IBuilder.cs b/source/Cosmos.Build.Windows/Builder/IBuilder.cs index 72cd946f0..fe3db5c0a 100644 --- a/source/Cosmos.Build.Windows/Builder/IBuilder.cs +++ b/source/Cosmos.Build.Windows/Builder/IBuilder.cs @@ -19,7 +19,7 @@ namespace Cosmos.Compiler.Builder string BuildPath {get;} - DebugWindow DebugWindow {get;} //HACK pass in event + DebugWindowController DebugWindow { get; } //HACK pass in event //string[] GetPlugs(); diff --git a/source/Cosmos.Build.Windows/Cosmos.Compiler.Builder.csproj b/source/Cosmos.Build.Windows/Cosmos.Compiler.Builder.csproj index 07ea4eddd..6320e6e0b 100644 --- a/source/Cosmos.Build.Windows/Cosmos.Compiler.Builder.csproj +++ b/source/Cosmos.Build.Windows/Cosmos.Compiler.Builder.csproj @@ -155,6 +155,7 @@ DebugWindow.xaml Code + Code diff --git a/source/Cosmos.Build.Windows/UI/DebugWindowController.cs b/source/Cosmos.Build.Windows/UI/DebugWindowController.cs new file mode 100644 index 000000000..29709e229 --- /dev/null +++ b/source/Cosmos.Build.Windows/UI/DebugWindowController.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Cosmos.Compiler.Builder +{ + public class DebugWindowController + { + private DebugWindow window; + + public SourceInfos mSourceMappings { get; set; } + public DebugConnector mDebugConnector {get; set; } + + public void Show() + { + window = new DebugWindow(); + window.SetSourceInfoMap(mSourceMappings ,mDebugConnector); + window.Show(); + + } + } +} diff --git a/source/Cosmos.Build.Windows/UI/MainWindowController.cs b/source/Cosmos.Build.Windows/UI/MainWindowController.cs index dd84254d0..b5e726ff4 100644 --- a/source/Cosmos.Build.Windows/UI/MainWindowController.cs +++ b/source/Cosmos.Build.Windows/UI/MainWindowController.cs @@ -92,24 +92,32 @@ namespace Cosmos.Compiler.Builder void mBuilder_BuildCompleted() { + mainWindow.Dispatcher.Invoke(new Action(PostBuildUI)); + + + mainWindow.ThreadedClose(); //HACK //TODO consider making the controller survive the window. + } + + + void PostBuildUI() + { + new ConsoleWindow().HideWindow(); //HACK need to fire Debugger window in event // Problems around with DebugWindow getting stuck, this seems to work //mMainWindow.Hide(); - if (mBuilder.DebugWindow!= null) + if (mBuilder.DebugWindow != null) { // Beginnings of experiment to host QEMU //if (xQEMU != null) { // IntPtr xDbgHandle = new WindowInteropHelper(Application.Current.MainWindow).Handle; // SetParent(xQEMU.MainWindowHandle, xDbgHandle); //} - mBuilder.DebugWindow.ShowDialog(); + mBuilder.DebugWindow.Show(); } //mMainWindow.Close(); - - mainWindow.ThreadedClose(); //HACK //TODO consider making the controller survive the window. }