diff --git a/assets/icons/pause.png b/assets/icons/pause.png new file mode 100644 index 000000000..d83bf17cb Binary files /dev/null and b/assets/icons/pause.png differ diff --git a/assets/icons/play.png b/assets/icons/play.png new file mode 100644 index 000000000..96b050f75 Binary files /dev/null and b/assets/icons/play.png differ diff --git a/assets/icons/step_in.bmp b/assets/icons/step_in.bmp new file mode 100644 index 000000000..f92d9052b Binary files /dev/null and b/assets/icons/step_in.bmp differ diff --git a/assets/icons/step_out.bmp b/assets/icons/step_out.bmp new file mode 100644 index 000000000..222b5ce07 Binary files /dev/null and b/assets/icons/step_out.bmp differ diff --git a/assets/icons/step_over.bmp b/assets/icons/step_over.bmp new file mode 100644 index 000000000..fd529f49d Binary files /dev/null and b/assets/icons/step_over.bmp differ diff --git a/assets/icons/stop.png b/assets/icons/stop.png new file mode 100644 index 000000000..5580fecce Binary files /dev/null and b/assets/icons/stop.png differ diff --git a/libxenia.vcxproj b/libxenia.vcxproj index b89c8237e..caabb2478 100644 --- a/libxenia.vcxproj +++ b/libxenia.vcxproj @@ -290,10 +290,13 @@ - + + + + @@ -419,7 +422,12 @@ + + + + + @@ -540,4 +548,4 @@ - + \ No newline at end of file diff --git a/libxenia.vcxproj.filters b/libxenia.vcxproj.filters index 2fa2d11a0..1a0c53b94 100644 --- a/libxenia.vcxproj.filters +++ b/libxenia.vcxproj.filters @@ -1,1385 +1,425 @@  - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - {ac2ed3f3-54e5-4039-a771-dce7f1afb317} - - - {95c5da4e-5624-45cb-acd7-f3ea42f7f35f} - - - {b996d1c8-9a7a-4bf0-8c55-786c15a9a615} - - - {c3b64a9c-babd-4ed7-a495-b720522b9572} - - - {ea01c27b-70c2-4527-b8c5-e3cc5cfc92e1} - - - {11c993f1-4ff9-4edb-b589-684bd863c173} - - - {db2ffaf9-4c33-40bd-a6f6-898d1ff1696e} - - - {5b320879-0064-4d8e-bb97-f2c4bb9e53f2} - - - {22342627-7b86-4d86-b46a-86ad0babe279} - - - {9a9b0a2d-3c03-4377-87ee-d4f3d27fbff3} - - - {39b164c9-8888-40b3-9cc1-cf58e5fdd2f1} - - - {d208b57a-e9d9-44cd-84be-365a3992806e} - - - {1cdd538c-c1a8-4667-9f7c-dc1dcbdd2934} - - - {531deabc-1284-48f6-87b6-8a4537960b7a} - - - {b3e55480-f727-470f-a1d6-f602e477f6d5} - - - {7430583f-5bb5-4901-8ca7-a325978d517f} - - - {c205c825-d8a3-4c6d-b2c1-730517c4d62d} - - - {786f142c-5cff-4562-8237-b114650fc3bf} - - - {2a8239c3-db27-4eda-82d9-2e837c8c5ba6} - - - {c2844d0d-a762-4887-bfd1-46ec3c51585b} - - - {7621c4d6-7cf6-495e-b4c9-950deba29a01} - - - {42d47a43-1af4-4e1a-9ed7-afa7f7d18e9f} - - - {268545c9-fbdf-46d2-96f6-35188cec09d6} - - - {c1ac0db1-2f4b-4376-b1dc-e6355c99b395} - - - {4e0349c4-b0bd-4595-9e83-cb3cbe11a172} - - - {65927db3-9314-4d02-a392-702b09fca341} - - - {bb86c40a-ad91-482e-a7c8-ef0a84280c8d} - - - {447ef539-2dab-4969-a5b0-57c8d6f4c6ec} - - - {cceab7bd-2f0a-4a27-a297-2f89170b8f6b} - - - {9194a1f4-9934-465e-adcb-3ac0e337dfe3} - - - {119b6173-c3a2-491b-b1eb-dc9248a7ae50} - - - {23815560-d0dc-451d-acad-832ac6c2d634} - - - {fab30014-dd55-4ae2-b2b0-b5f9955fb90d} - - - {23bf3e93-569a-4432-b265-6bbfccf0e7ca} - - - {1e52ba44-1bf6-425d-a2c8-a0744f34d348} - - - {1775ec47-fb64-43eb-be29-3fc356cbfdca} - - - {686bc832-94dd-44af-8f4f-f5e9a1f70341} - - - {36203590-1da4-4d59-a270-80dd7f8dc9c5} - - - {e339422e-722c-4a25-9865-bfb382c32a14} - - - {0c75741e-deec-4675-a7f3-dea54c449ff9} - - - {c007145f-e965-4fab-b9be-f957a63e1281} - - - {1963ff6f-5514-4c96-a66e-35a6e5cef776} - - - {c976eeb2-a3c2-4692-8397-2b503d928123} - - - {b9a45887-83a6-444f-94a9-6002a507da50} - - - {f8917264-c401-4b7f-8df7-08752ae0acad} - - - {818cdefa-9c17-402a-b427-68640bec3d4c} - - - {7eec808d-2cd4-4987-9eaf-abde1c86d579} - - - {d1405e1d-d9b0-4d8d-89ce-29d43698c415} - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - src\xenia - - - src\xenia - - - src\xenia - - - src\xenia\apu - - - src\xenia\apu - - - src\xenia\apu - - - src\xenia\apu\nop - - - src\xenia\apu\nop - - - src\xenia\apu\xaudio2 - - - src\xenia\apu\xaudio2 - - - src\xenia\apu\xaudio2 - - - src\xenia\base - - - src\xenia\cpu - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu\backend - - - src\xenia\cpu\backend - - - src\xenia\cpu\backend\x64 - - - src\xenia\cpu\backend\x64 - - - src\xenia\cpu\backend\x64 - - - src\xenia\cpu\backend\x64 - - - src\xenia\cpu\backend\x64 - - - src\xenia\cpu\backend\x64 - - - src\xenia\cpu\backend\x64 - - - src\xenia\cpu\compiler - - - src\xenia\cpu\compiler - - - src\xenia\cpu\compiler\passes - - - src\xenia\cpu\compiler\passes - - - src\xenia\cpu\compiler\passes - - - src\xenia\cpu\compiler\passes - - - src\xenia\cpu\compiler\passes - - - src\xenia\cpu\compiler\passes - - - src\xenia\cpu\compiler\passes - - - src\xenia\cpu\compiler\passes - - - src\xenia\cpu\compiler\passes - - - src\xenia\cpu\compiler\passes - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\hir - - - src\xenia\cpu\hir - - - src\xenia\cpu\hir - - - src\xenia\cpu\hir - - - src\xenia\cpu\hir - - - src\xenia\debug - - - src\xenia\cpu\compiler\passes - - - src\xenia\gpu - - - src\xenia\gpu - - - src\xenia\gpu - - - src\xenia\gpu - - - src\xenia\gpu - - - src\xenia\gpu - - - src\xenia\gpu - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\hid - - - src\xenia\hid - - - src\xenia\hid - - - src\xenia\hid\nop - - - src\xenia\hid\nop - - - src\xenia\hid\winkey - - - src\xenia\hid\winkey - - - src\xenia\hid\xinput - - - src\xenia\hid\xinput - - - src\xenia\ui\win32 - - - src\xenia\ui\win32 - - - src\xenia\ui\win32 - - - src\xenia\ui\win32 - - - src\xenia\ui - - - src\xenia\ui - - - src\xenia\ui - - - src\xenia\kernel\util - - - src\xenia\kernel\objects - - - src\xenia\kernel\objects - - - src\xenia\kernel\objects - - - src\xenia\kernel\objects - - - src\xenia\kernel\objects - - - src\xenia\kernel\objects - - - src\xenia\kernel\objects - - - src\xenia\kernel\objects - - - src\xenia\kernel\objects - - - src\xenia\kernel\objects - - - src\xenia\kernel\objects - - - src\xenia\kernel\apps - - - src\xenia\kernel\apps - - - src\xenia\kernel\apps - - - src\xenia\kernel\apps - - - src\xenia\kernel\fs - - - src\xenia\kernel\fs - - - src\xenia\kernel\fs - - - src\xenia\kernel\fs - - - src\xenia\kernel\fs - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - third_party\beaengine\beaengineSources - - - third_party\mspack - - - third_party\xxhash - - - src\xenia\kernel - - - src\xenia\apu - - - src\xenia\cpu\backend\x64 - - - src\xenia\apu - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - src\xenia - - - src\xenia - - - src\xenia - - - src\xenia - - - src\xenia\apu - - - src\xenia\apu - - - src\xenia\apu - - - src\xenia\apu - - - src\xenia\apu\nop - - - src\xenia\apu\nop - - - src\xenia\apu\nop - - - src\xenia\apu\xaudio2 - - - src\xenia\apu\xaudio2 - - - src\xenia\apu\xaudio2 - - - src\xenia\apu\xaudio2 - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\base - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu - - - src\xenia\cpu\backend - - - src\xenia\cpu\backend - - - src\xenia\cpu\backend - - - src\xenia\cpu\backend\x64 - - - src\xenia\cpu\backend\x64 - - - src\xenia\cpu\backend\x64 - - - src\xenia\cpu\backend\x64 - - - src\xenia\cpu\backend\x64 - - - src\xenia\cpu\backend\x64 - - - src\xenia\cpu\backend\x64 - - - src\xenia\cpu\backend\x64 - - - src\xenia\cpu\compiler - - - src\xenia\cpu\compiler - - - src\xenia\cpu\compiler - - - src\xenia\cpu\compiler\passes - - - src\xenia\cpu\compiler\passes - - - src\xenia\cpu\compiler\passes - - - src\xenia\cpu\compiler\passes - - - src\xenia\cpu\compiler\passes - - - src\xenia\cpu\compiler\passes - - - src\xenia\cpu\compiler\passes - - - src\xenia\cpu\compiler\passes - - - src\xenia\cpu\compiler\passes - - - src\xenia\cpu\compiler\passes - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\frontend - - - src\xenia\cpu\hir - - - src\xenia\cpu\hir - - - src\xenia\cpu\hir - - - src\xenia\cpu\hir - - - src\xenia\cpu\hir - - - src\xenia\cpu\hir - - - src\xenia\debug - - - src\xenia\debug - - - src\xenia\debug - - - src\xenia\debug - - - src\xenia\cpu\compiler\passes - - - src\xenia\gpu - - - src\xenia\gpu - - - src\xenia\gpu - - - src\xenia\gpu - - - src\xenia\gpu - - - src\xenia\gpu - - - src\xenia\gpu - - - src\xenia\gpu - - - src\xenia\gpu - - - src\xenia\gpu - - - src\xenia\gpu - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\gpu\gl4 - - - src\xenia\hid - - - src\xenia\hid - - - src\xenia\hid - - - src\xenia\hid - - - src\xenia\hid\nop - - - src\xenia\hid\nop - - - src\xenia\hid\nop - - - src\xenia\hid\winkey - - - src\xenia\hid\winkey - - - src\xenia\hid\winkey - - - src\xenia\hid\xinput - - - src\xenia\hid\xinput - - - src\xenia\hid\xinput - - - src\xenia\ui\win32 - - - src\xenia\ui\win32 - - - src\xenia\ui\win32 - - - src\xenia\ui\win32 - - - src\xenia\ui - - - src\xenia\ui - - - src\xenia\ui - - - src\xenia\ui - - - src\xenia\ui - - - src\xenia\ui - - - src\xenia\kernel\util - - - src\xenia\kernel\util - - - src\xenia\kernel\util - - - src\xenia\kernel\objects - - - src\xenia\kernel\objects - - - src\xenia\kernel\objects - - - src\xenia\kernel\objects - - - src\xenia\kernel\objects - - - src\xenia\kernel\objects - - - src\xenia\kernel\objects - - - src\xenia\kernel\objects - - - src\xenia\kernel\objects - - - src\xenia\kernel\objects - - - src\xenia\kernel\objects - - - src\xenia\kernel\apps - - - src\xenia\kernel\apps - - - src\xenia\kernel\apps - - - src\xenia\kernel\apps - - - src\xenia\kernel\fs - - - src\xenia\kernel\fs - - - src\xenia\kernel\fs - - - src\xenia\kernel\fs - - - src\xenia\kernel\fs - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel\fs\devices - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\kernel - - - third_party\beaengine\include\beaengine - - - third_party\beaengine\include\beaengine - - - third_party\beaengine\include\beaengine - - - third_party\beaengine\include\beaengine - - - third_party\flatbuffers\include\flatbuffers - - - third_party\llvm\include\llvm\ADT - - - third_party\llvm\include\llvm\Support - - - third_party\llvm\include\llvm\Support - - - third_party\llvm\include\llvm\Support - - - third_party\microprofile - - - third_party\microprofile - - - third_party\mspack - - - third_party\mspack - - - third_party\pe - - - third_party\xxhash - - - third_party\xbyak\xbyak - - - third_party\xbyak\xbyak - - - third_party\xbyak\xbyak - - - third_party\xbyak\xbyak - - - src\xenia\kernel - - - src\xenia\apu - - src\xenia\debug\proto - - - src\xenia\debug\proto - + + + + + + + + + + + + + + + - - - src\xenia\cpu\backend\x64 - - - src\xenia\cpu\hir - - - src\xenia\gpu - - - src\xenia\kernel\util - - - src\xenia\kernel\util - - - src\xenia\kernel\util - - - src\xenia\kernel\util - - - src\xenia\kernel - - - src\xenia\kernel - - - src\xenia\debug\proto - - - + \ No newline at end of file diff --git a/src/Xenia.Debug.UI/MainWindow.Designer.cs b/src/Xenia.Debug.UI/MainWindow.Designer.cs index ef0ef581b..9f972cb84 100644 --- a/src/Xenia.Debug.UI/MainWindow.Designer.cs +++ b/src/Xenia.Debug.UI/MainWindow.Designer.cs @@ -30,9 +30,21 @@ this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); this.statusStrip = new System.Windows.Forms.StatusStrip(); this.statusMessageLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.controlToolStrip = new System.Windows.Forms.ToolStrip(); + this.threadToolStripLabel = new System.Windows.Forms.ToolStripLabel(); + this.threadToolStripComboBox = new System.Windows.Forms.ToolStripComboBox(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.continueToolStripButton = new System.Windows.Forms.ToolStripButton(); + this.breakToolStripButton = new System.Windows.Forms.ToolStripButton(); + this.stopToolStripButton = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.stepInToolStripButton = new System.Windows.Forms.ToolStripButton(); + this.stepOverToolStripButton = new System.Windows.Forms.ToolStripButton(); + this.stepOutToolStripButton = new System.Windows.Forms.ToolStripButton(); this.mainMenuStrip.SuspendLayout(); this.mainToolStrip.SuspendLayout(); this.statusStrip.SuspendLayout(); + this.controlToolStrip.SuspendLayout(); this.SuspendLayout(); // // mainMenuStrip @@ -82,14 +94,114 @@ // statusMessageLabel // this.statusMessageLabel.Name = "statusMessageLabel"; - this.statusMessageLabel.Size = new System.Drawing.Size(118, 17); - this.statusMessageLabel.Text = ""; + this.statusMessageLabel.Size = new System.Drawing.Size(0, 17); + // + // controlToolStrip + // + this.controlToolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.threadToolStripLabel, + this.threadToolStripComboBox, + this.toolStripSeparator1, + this.continueToolStripButton, + this.breakToolStripButton, + this.stopToolStripButton, + this.toolStripSeparator2, + this.stepInToolStripButton, + this.stepOverToolStripButton, + this.stepOutToolStripButton}); + this.controlToolStrip.Location = new System.Drawing.Point(0, 49); + this.controlToolStrip.Name = "controlToolStrip"; + this.controlToolStrip.Size = new System.Drawing.Size(1571, 25); + this.controlToolStrip.TabIndex = 6; + this.controlToolStrip.Text = "toolStrip1"; + // + // threadToolStripLabel + // + this.threadToolStripLabel.Name = "threadToolStripLabel"; + this.threadToolStripLabel.Size = new System.Drawing.Size(47, 22); + this.threadToolStripLabel.Text = "Thread:"; + // + // threadToolStripComboBox + // + this.threadToolStripComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.threadToolStripComboBox.Name = "threadToolStripComboBox"; + this.threadToolStripComboBox.Size = new System.Drawing.Size(250, 25); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25); + // + // continueToolStripButton + // + this.continueToolStripButton.Image = global::Xenia.Debug.UI.Properties.Resources.play; + this.continueToolStripButton.ImageTransparentColor = System.Drawing.Color.Transparent; + this.continueToolStripButton.Name = "continueToolStripButton"; + this.continueToolStripButton.Size = new System.Drawing.Size(76, 22); + this.continueToolStripButton.Text = "Continue"; + this.continueToolStripButton.Click += new System.EventHandler(this.continueToolStripButton_Click); + // + // breakToolStripButton + // + this.breakToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.breakToolStripButton.Image = global::Xenia.Debug.UI.Properties.Resources.pause; + this.breakToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.breakToolStripButton.Name = "breakToolStripButton"; + this.breakToolStripButton.Size = new System.Drawing.Size(23, 22); + this.breakToolStripButton.Text = "Break"; + this.breakToolStripButton.Click += new System.EventHandler(this.breakToolStripButton_Click); + // + // stopToolStripButton + // + this.stopToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.stopToolStripButton.Image = global::Xenia.Debug.UI.Properties.Resources.stop; + this.stopToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.stopToolStripButton.Name = "stopToolStripButton"; + this.stopToolStripButton.Size = new System.Drawing.Size(23, 22); + this.stopToolStripButton.Text = "Stop"; + this.stopToolStripButton.Click += new System.EventHandler(this.stopToolStripButton_Click); + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25); + // + // stepInToolStripButton + // + this.stepInToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.stepInToolStripButton.Image = global::Xenia.Debug.UI.Properties.Resources.step_in; + this.stepInToolStripButton.ImageTransparentColor = System.Drawing.Color.Transparent; + this.stepInToolStripButton.Name = "stepInToolStripButton"; + this.stepInToolStripButton.Size = new System.Drawing.Size(23, 22); + this.stepInToolStripButton.Text = "Step In"; + this.stepInToolStripButton.Click += new System.EventHandler(this.stepInToolStripButton_Click); + // + // stepOverToolStripButton + // + this.stepOverToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.stepOverToolStripButton.Image = global::Xenia.Debug.UI.Properties.Resources.step_over; + this.stepOverToolStripButton.ImageTransparentColor = System.Drawing.Color.Transparent; + this.stepOverToolStripButton.Name = "stepOverToolStripButton"; + this.stepOverToolStripButton.Size = new System.Drawing.Size(23, 22); + this.stepOverToolStripButton.Text = "Step Over"; + this.stepOverToolStripButton.Click += new System.EventHandler(this.stepOverToolStripButton_Click); + // + // stepOutToolStripButton + // + this.stepOutToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.stepOutToolStripButton.Image = global::Xenia.Debug.UI.Properties.Resources.step_out; + this.stepOutToolStripButton.ImageTransparentColor = System.Drawing.Color.Transparent; + this.stepOutToolStripButton.Name = "stepOutToolStripButton"; + this.stepOutToolStripButton.Size = new System.Drawing.Size(23, 22); + this.stepOutToolStripButton.Text = "Step Out"; + this.stepOutToolStripButton.Click += new System.EventHandler(this.stepOutToolStripButton_Click); // // MainWindow // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(1571, 1103); + this.Controls.Add(this.controlToolStrip); this.Controls.Add(this.statusStrip); this.Controls.Add(this.mainToolStrip); this.Controls.Add(this.mainMenuStrip); @@ -103,6 +215,8 @@ this.mainToolStrip.PerformLayout(); this.statusStrip.ResumeLayout(false); this.statusStrip.PerformLayout(); + this.controlToolStrip.ResumeLayout(false); + this.controlToolStrip.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); @@ -117,5 +231,16 @@ private System.Windows.Forms.StatusStrip statusStrip; private System.Windows.Forms.ToolStripStatusLabel statusMessageLabel; private WeifenLuo.WinFormsUI.Docking.DockPanel dockPanel; + private System.Windows.Forms.ToolStrip controlToolStrip; + private System.Windows.Forms.ToolStripLabel threadToolStripLabel; + private System.Windows.Forms.ToolStripComboBox threadToolStripComboBox; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripButton continueToolStripButton; + private System.Windows.Forms.ToolStripButton breakToolStripButton; + private System.Windows.Forms.ToolStripButton stopToolStripButton; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.ToolStripButton stepInToolStripButton; + private System.Windows.Forms.ToolStripButton stepOverToolStripButton; + private System.Windows.Forms.ToolStripButton stepOutToolStripButton; } } \ No newline at end of file diff --git a/src/Xenia.Debug.UI/MainWindow.cs b/src/Xenia.Debug.UI/MainWindow.cs index 4434e1c1a..17b7ebcb4 100644 --- a/src/Xenia.Debug.UI/MainWindow.cs +++ b/src/Xenia.Debug.UI/MainWindow.cs @@ -70,13 +70,19 @@ namespace Xenia.Debug.UI { SetupDefaultLayout(); + // For hotkeys. + KeyPreview = true; + Debugger.StateChanged += Debugger_StateChanged; Debugger_StateChanged(this, Debugger.CurrentState); + Debugger.CurrentContext.Changed += CurrentContext_Changed; + CurrentContext_Changed(); Debugger.Attach(); } private void Debugger_StateChanged(object sender, Debugger.State e) { + bool enabled = false; switch (e) { case Debugger.State.Idle: statusMessageLabel.Text = "Idle"; @@ -86,11 +92,36 @@ namespace Xenia.Debug.UI { break; case Debugger.State.Attached: statusMessageLabel.Text = "Attached"; + enabled = true; break; case Debugger.State.Detached: statusMessageLabel.Text = "Detached"; break; } + + controlToolStrip.Enabled = enabled; + } + + private void CurrentContext_Changed() { + bool enabled = false; + switch (Debugger.CurrentContext.RunState) { + case RunState.Updating: + enabled = false; + break; + case RunState.Running: + enabled = false; + break; + case RunState.Paused: + enabled = true; + break; + } + breakToolStripButton.Enabled = !enabled; + continueToolStripButton.Enabled = enabled; + stepInToolStripButton.Enabled = enabled; + stepOverToolStripButton.Enabled = enabled; + stepOutToolStripButton.Enabled = enabled; + + // TODO(benvanik): set thread info/etc. } private void SetupDefaultLayout() { @@ -125,5 +156,53 @@ namespace Xenia.Debug.UI { dockPanel.ResumeLayout(true, true); } + + protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { + //if (keyData == (Keys.Control | Keys.F)) { + // MessageBox.Show("What the Ctrl+F?"); + // return true; + //} + if (keyData == Keys.F11) { + stepInToolStripButton_Click(this, EventArgs.Empty); + return true; + } else if (keyData == Keys.F10) { + stepOverToolStripButton_Click(this, EventArgs.Empty); + return true; + } else if (keyData == (Keys.Shift | Keys.F11)) { + stepOutToolStripButton_Click(this, EventArgs.Empty); + return true; + } else if (keyData == (Keys.Pause)) { + breakToolStripButton_Click(this, EventArgs.Empty); + return true; + } else if (keyData == (Keys.Shift | Keys.F5)) { + stopToolStripButton_Click(this, EventArgs.Empty); + return true; + } + return base.ProcessCmdKey(ref msg, keyData); + } + + private void continueToolStripButton_Click(object sender, EventArgs e) { + Debugger.Continue(); + } + + private void breakToolStripButton_Click(object sender, EventArgs e) { + Debugger.Break(); + } + + private void stopToolStripButton_Click(object sender, EventArgs e) { + Debugger.Stop(); + } + + private void stepInToolStripButton_Click(object sender, EventArgs e) { + Debugger.StepIn(); + } + + private void stepOverToolStripButton_Click(object sender, EventArgs e) { + Debugger.StepOver(); + } + + private void stepOutToolStripButton_Click(object sender, EventArgs e) { + Debugger.StepOut(); + } } } diff --git a/src/Xenia.Debug.UI/MainWindow.resx b/src/Xenia.Debug.UI/MainWindow.resx index 9cc3a5399..dac6da4e9 100644 --- a/src/Xenia.Debug.UI/MainWindow.resx +++ b/src/Xenia.Debug.UI/MainWindow.resx @@ -145,4 +145,7 @@ 237, 17 + + 346, 17 + \ No newline at end of file diff --git a/src/Xenia.Debug.UI/Properties/Resources.Designer.cs b/src/Xenia.Debug.UI/Properties/Resources.Designer.cs index 5b9a6bc66..59a899a8e 100644 --- a/src/Xenia.Debug.UI/Properties/Resources.Designer.cs +++ b/src/Xenia.Debug.UI/Properties/Resources.Designer.cs @@ -9,54 +9,115 @@ //------------------------------------------------------------------------------ namespace Xenia.Debug.UI.Properties { - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - + using System; + + /// - /// Returns the cached ResourceManager instance used by this class. + /// A strongly-typed resource class, for looking up localized strings, etc. /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if ((resourceMan == null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Xenia.Debug.UI.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Xenia.Debug.UI.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap pause { + get { + object obj = ResourceManager.GetObject("pause", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap play { + get { + object obj = ResourceManager.GetObject("play", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap step_in { + get { + object obj = ResourceManager.GetObject("step_in", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap step_out { + get { + object obj = ResourceManager.GetObject("step_out", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap step_over { + get { + object obj = ResourceManager.GetObject("step_over", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap stop { + get { + object obj = ResourceManager.GetObject("stop", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } } - return resourceMan; - } } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - } } diff --git a/src/Xenia.Debug.UI/Properties/Resources.resx b/src/Xenia.Debug.UI/Properties/Resources.resx index af7dbebba..99538df06 100644 --- a/src/Xenia.Debug.UI/Properties/Resources.resx +++ b/src/Xenia.Debug.UI/Properties/Resources.resx @@ -46,7 +46,7 @@ mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with - : System.Serialization.Formatters.Binary.BinaryFormatter + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 @@ -60,6 +60,7 @@ : and then encoded with base64 encoding. --> + @@ -68,9 +69,10 @@ - + + @@ -85,9 +87,10 @@ - + + @@ -109,9 +112,28 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\pause.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\play.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\step_in.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\step_out.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\step_over.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\stop.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/src/Xenia.Debug.UI/Resources/pause.png b/src/Xenia.Debug.UI/Resources/pause.png new file mode 100644 index 000000000..d83bf17cb Binary files /dev/null and b/src/Xenia.Debug.UI/Resources/pause.png differ diff --git a/src/Xenia.Debug.UI/Resources/play.png b/src/Xenia.Debug.UI/Resources/play.png new file mode 100644 index 000000000..96b050f75 Binary files /dev/null and b/src/Xenia.Debug.UI/Resources/play.png differ diff --git a/src/Xenia.Debug.UI/Resources/step_in.bmp b/src/Xenia.Debug.UI/Resources/step_in.bmp new file mode 100644 index 000000000..f92d9052b Binary files /dev/null and b/src/Xenia.Debug.UI/Resources/step_in.bmp differ diff --git a/src/Xenia.Debug.UI/Resources/step_out.bmp b/src/Xenia.Debug.UI/Resources/step_out.bmp new file mode 100644 index 000000000..222b5ce07 Binary files /dev/null and b/src/Xenia.Debug.UI/Resources/step_out.bmp differ diff --git a/src/Xenia.Debug.UI/Resources/step_over.bmp b/src/Xenia.Debug.UI/Resources/step_over.bmp new file mode 100644 index 000000000..fd529f49d Binary files /dev/null and b/src/Xenia.Debug.UI/Resources/step_over.bmp differ diff --git a/src/Xenia.Debug.UI/Resources/stop.png b/src/Xenia.Debug.UI/Resources/stop.png new file mode 100644 index 000000000..5580fecce Binary files /dev/null and b/src/Xenia.Debug.UI/Resources/stop.png differ diff --git a/src/Xenia.Debug.UI/Views/BreakpointsPanel.Designer.cs b/src/Xenia.Debug.UI/Views/BreakpointsPanel.Designer.cs index 5da37e72b..c5c587f74 100644 --- a/src/Xenia.Debug.UI/Views/BreakpointsPanel.Designer.cs +++ b/src/Xenia.Debug.UI/Views/BreakpointsPanel.Designer.cs @@ -23,11 +23,45 @@ /// the contents of this method with the code editor. /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); + this.breakpointsListView = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.SuspendLayout(); + // + // breakpointsListView + // + this.breakpointsListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.breakpointsListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.columnHeader2, + this.columnHeader3}); + this.breakpointsListView.Location = new System.Drawing.Point(12, 12); + this.breakpointsListView.Name = "breakpointsListView"; + this.breakpointsListView.Size = new System.Drawing.Size(738, 208); + this.breakpointsListView.TabIndex = 0; + this.breakpointsListView.UseCompatibleStateImageBehavior = false; + this.breakpointsListView.View = System.Windows.Forms.View.Details; + // + // BreakpointsPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(762, 232); + this.Controls.Add(this.breakpointsListView); + this.Name = "BreakpointsPanel"; this.Text = "Breakpoints"; + this.ResumeLayout(false); + } #endregion + + private System.Windows.Forms.ListView breakpointsListView; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.ColumnHeader columnHeader3; } } \ No newline at end of file diff --git a/src/Xenia.Debug.UI/Views/BreakpointsPanel.cs b/src/Xenia.Debug.UI/Views/BreakpointsPanel.cs index 966ce89df..ae7e02875 100644 --- a/src/Xenia.Debug.UI/Views/BreakpointsPanel.cs +++ b/src/Xenia.Debug.UI/Views/BreakpointsPanel.cs @@ -17,6 +17,18 @@ namespace Xenia.Debug.UI.Views { public BreakpointsPanel(Debugger debugger) { InitializeComponent(); this.debugger = debugger; + + debugger.BreakpointList.Changed += UpdateBreakpointsList; + UpdateBreakpointsList(); + } + + private void UpdateBreakpointsList() { + breakpointsListView.BeginUpdate(); + breakpointsListView.Items.Clear(); + foreach (Breakpoint breakpoint in debugger.BreakpointList) { + breakpointsListView.Items.Add("Breakpoint A"); + } + breakpointsListView.EndUpdate(); } } } diff --git a/src/Xenia.Debug.UI/Views/BreakpointsPanel.resx b/src/Xenia.Debug.UI/Views/BreakpointsPanel.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/src/Xenia.Debug.UI/Views/BreakpointsPanel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/src/Xenia.Debug.UI/Views/CallstackPanel.Designer.cs b/src/Xenia.Debug.UI/Views/CallstackPanel.Designer.cs index c69d8a7ff..161429f77 100644 --- a/src/Xenia.Debug.UI/Views/CallstackPanel.Designer.cs +++ b/src/Xenia.Debug.UI/Views/CallstackPanel.Designer.cs @@ -23,11 +23,45 @@ /// the contents of this method with the code editor. /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); + this.framesListView = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.SuspendLayout(); + // + // framesListView + // + this.framesListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.framesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.columnHeader2, + this.columnHeader3}); + this.framesListView.Location = new System.Drawing.Point(12, 12); + this.framesListView.Name = "framesListView"; + this.framesListView.Size = new System.Drawing.Size(735, 217); + this.framesListView.TabIndex = 0; + this.framesListView.UseCompatibleStateImageBehavior = false; + this.framesListView.View = System.Windows.Forms.View.Details; + // + // CallstackPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(759, 241); + this.Controls.Add(this.framesListView); + this.Name = "CallstackPanel"; this.Text = "Callstack"; + this.ResumeLayout(false); + } #endregion + + private System.Windows.Forms.ListView framesListView; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.ColumnHeader columnHeader3; } } \ No newline at end of file diff --git a/src/Xenia.Debug.UI/Views/CallstackPanel.resx b/src/Xenia.Debug.UI/Views/CallstackPanel.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/src/Xenia.Debug.UI/Views/CallstackPanel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/src/Xenia.Debug.UI/Views/CodeDocument.Designer.cs b/src/Xenia.Debug.UI/Views/CodeDocument.Designer.cs index a41e99195..2a9570716 100644 --- a/src/Xenia.Debug.UI/Views/CodeDocument.Designer.cs +++ b/src/Xenia.Debug.UI/Views/CodeDocument.Designer.cs @@ -23,11 +23,35 @@ /// the contents of this method with the code editor. /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); + this.sourceTextBox = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // sourceTextBox + // + this.sourceTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.sourceTextBox.Location = new System.Drawing.Point(12, 75); + this.sourceTextBox.Multiline = true; + this.sourceTextBox.Name = "sourceTextBox"; + this.sourceTextBox.Size = new System.Drawing.Size(740, 586); + this.sourceTextBox.TabIndex = 0; + // + // CodeDocument + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(764, 673); + this.Controls.Add(this.sourceTextBox); + this.Name = "CodeDocument"; this.Text = "Code"; + this.ResumeLayout(false); + this.PerformLayout(); + } #endregion + + private System.Windows.Forms.TextBox sourceTextBox; } } \ No newline at end of file diff --git a/src/Xenia.Debug.UI/Views/CodeDocument.resx b/src/Xenia.Debug.UI/Views/CodeDocument.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/src/Xenia.Debug.UI/Views/CodeDocument.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/src/Xenia.Debug.UI/Views/FunctionsPanel.Designer.cs b/src/Xenia.Debug.UI/Views/FunctionsPanel.Designer.cs index 92627a880..6ebbc7b88 100644 --- a/src/Xenia.Debug.UI/Views/FunctionsPanel.Designer.cs +++ b/src/Xenia.Debug.UI/Views/FunctionsPanel.Designer.cs @@ -23,11 +23,62 @@ /// the contents of this method with the code editor. /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); + this.modulesComboBox = new System.Windows.Forms.ComboBox(); + this.filterTextBox = new System.Windows.Forms.TextBox(); + this.functionsListBox = new System.Windows.Forms.ListBox(); + this.SuspendLayout(); + // + // moduleComboBox + // + this.modulesComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.modulesComboBox.FormattingEnabled = true; + this.modulesComboBox.Location = new System.Drawing.Point(12, 12); + this.modulesComboBox.Name = "moduleComboBox"; + this.modulesComboBox.Size = new System.Drawing.Size(234, 21); + this.modulesComboBox.TabIndex = 0; + // + // filterTextBox + // + this.filterTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.filterTextBox.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; + this.filterTextBox.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource; + this.filterTextBox.Location = new System.Drawing.Point(12, 569); + this.filterTextBox.Name = "filterTextBox"; + this.filterTextBox.Size = new System.Drawing.Size(234, 20); + this.filterTextBox.TabIndex = 1; + // + // functionsListBox + // + this.functionsListBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.functionsListBox.FormattingEnabled = true; + this.functionsListBox.Location = new System.Drawing.Point(12, 39); + this.functionsListBox.Name = "functionsListBox"; + this.functionsListBox.Size = new System.Drawing.Size(234, 524); + this.functionsListBox.TabIndex = 2; + // + // FunctionsPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(258, 600); + this.Controls.Add(this.functionsListBox); + this.Controls.Add(this.filterTextBox); + this.Controls.Add(this.modulesComboBox); + this.Name = "FunctionsPanel"; this.Text = "Functions"; + this.ResumeLayout(false); + this.PerformLayout(); + } #endregion + + private System.Windows.Forms.ComboBox modulesComboBox; + private System.Windows.Forms.TextBox filterTextBox; + private System.Windows.Forms.ListBox functionsListBox; } } \ No newline at end of file diff --git a/src/Xenia.Debug.UI/Views/FunctionsPanel.cs b/src/Xenia.Debug.UI/Views/FunctionsPanel.cs index 588b04c67..c2dc25ceb 100644 --- a/src/Xenia.Debug.UI/Views/FunctionsPanel.cs +++ b/src/Xenia.Debug.UI/Views/FunctionsPanel.cs @@ -17,6 +17,18 @@ namespace Xenia.Debug.UI.Views { public FunctionsPanel(Debugger debugger) { InitializeComponent(); this.debugger = debugger; + + debugger.ModuleList.Changed += UpdateModulesList; + UpdateModulesList(); + } + + private void UpdateModulesList() { + modulesComboBox.BeginUpdate(); + modulesComboBox.Items.Clear(); + foreach (Module module in debugger.ModuleList) { + modulesComboBox.Items.Add("Module A"); + } + modulesComboBox.EndUpdate(); } } } diff --git a/src/Xenia.Debug.UI/Views/FunctionsPanel.resx b/src/Xenia.Debug.UI/Views/FunctionsPanel.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/src/Xenia.Debug.UI/Views/FunctionsPanel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/src/Xenia.Debug.UI/Views/ModulesPanel.Designer.cs b/src/Xenia.Debug.UI/Views/ModulesPanel.Designer.cs index 1591f6e09..ba7e8e824 100644 --- a/src/Xenia.Debug.UI/Views/ModulesPanel.Designer.cs +++ b/src/Xenia.Debug.UI/Views/ModulesPanel.Designer.cs @@ -23,11 +23,45 @@ /// the contents of this method with the code editor. /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); + this.modulesListView = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.SuspendLayout(); + // + // modulesListView + // + this.modulesListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.modulesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.columnHeader2, + this.columnHeader3}); + this.modulesListView.Location = new System.Drawing.Point(12, 12); + this.modulesListView.Name = "modulesListView"; + this.modulesListView.Size = new System.Drawing.Size(748, 206); + this.modulesListView.TabIndex = 0; + this.modulesListView.UseCompatibleStateImageBehavior = false; + this.modulesListView.View = System.Windows.Forms.View.Details; + // + // ModulesPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(772, 230); + this.Controls.Add(this.modulesListView); + this.Name = "ModulesPanel"; this.Text = "Modules"; + this.ResumeLayout(false); + } #endregion + + private System.Windows.Forms.ListView modulesListView; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.ColumnHeader columnHeader3; } } \ No newline at end of file diff --git a/src/Xenia.Debug.UI/Views/ModulesPanel.cs b/src/Xenia.Debug.UI/Views/ModulesPanel.cs index 0ff5cf41d..ff9fe72f0 100644 --- a/src/Xenia.Debug.UI/Views/ModulesPanel.cs +++ b/src/Xenia.Debug.UI/Views/ModulesPanel.cs @@ -17,6 +17,18 @@ namespace Xenia.Debug.UI.Views { public ModulesPanel(Debugger debugger) { InitializeComponent(); this.debugger = debugger; + + debugger.ModuleList.Changed += UpdateModulesList; + UpdateModulesList(); + } + + private void UpdateModulesList() { + modulesListView.BeginUpdate(); + modulesListView.Items.Clear(); + foreach (Module module in debugger.ModuleList) { + modulesListView.Items.Add("Module A"); + } + modulesListView.EndUpdate(); } } } diff --git a/src/Xenia.Debug.UI/Views/ModulesPanel.resx b/src/Xenia.Debug.UI/Views/ModulesPanel.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/src/Xenia.Debug.UI/Views/ModulesPanel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/src/Xenia.Debug.UI/Views/ThreadsPanel.Designer.cs b/src/Xenia.Debug.UI/Views/ThreadsPanel.Designer.cs index 0666df37e..bf3e45ade 100644 --- a/src/Xenia.Debug.UI/Views/ThreadsPanel.Designer.cs +++ b/src/Xenia.Debug.UI/Views/ThreadsPanel.Designer.cs @@ -23,11 +23,45 @@ /// the contents of this method with the code editor. /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); + this.threadsListView = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.SuspendLayout(); + // + // threadsListView + // + this.threadsListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.threadsListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.columnHeader2, + this.columnHeader3}); + this.threadsListView.Location = new System.Drawing.Point(12, 12); + this.threadsListView.Name = "threadsListView"; + this.threadsListView.Size = new System.Drawing.Size(731, 287); + this.threadsListView.TabIndex = 1; + this.threadsListView.UseCompatibleStateImageBehavior = false; + this.threadsListView.View = System.Windows.Forms.View.Details; + // + // ThreadsPanel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(755, 311); + this.Controls.Add(this.threadsListView); + this.Name = "ThreadsPanel"; this.Text = "Threads"; + this.ResumeLayout(false); + } #endregion + + private System.Windows.Forms.ListView threadsListView; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.ColumnHeader columnHeader3; } } \ No newline at end of file diff --git a/src/Xenia.Debug.UI/Views/ThreadsPanel.cs b/src/Xenia.Debug.UI/Views/ThreadsPanel.cs index 93d3c5874..0357b2aa8 100644 --- a/src/Xenia.Debug.UI/Views/ThreadsPanel.cs +++ b/src/Xenia.Debug.UI/Views/ThreadsPanel.cs @@ -17,6 +17,18 @@ namespace Xenia.Debug.UI.Views { public ThreadsPanel(Debugger debugger) { InitializeComponent(); this.debugger = debugger; + + debugger.ThreadList.Changed += UpdateThreadList; + UpdateThreadList(); + } + + private void UpdateThreadList() { + threadsListView.BeginUpdate(); + threadsListView.Items.Clear(); + foreach (Thread thread in debugger.ThreadList) { + threadsListView.Items.Add("Thread A"); + } + threadsListView.EndUpdate(); } } } diff --git a/src/Xenia.Debug.UI/Views/ThreadsPanel.resx b/src/Xenia.Debug.UI/Views/ThreadsPanel.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/src/Xenia.Debug.UI/Views/ThreadsPanel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/src/Xenia.Debug.UI/Xenia.Debug.UI.csproj b/src/Xenia.Debug.UI/Xenia.Debug.UI.csproj index 694409919..6682d6a19 100644 --- a/src/Xenia.Debug.UI/Xenia.Debug.UI.csproj +++ b/src/Xenia.Debug.UI/Xenia.Debug.UI.csproj @@ -160,7 +160,26 @@ True Resources.resx + True + + BreakpointsPanel.cs + + + CallstackPanel.cs + + + CodeDocument.cs + + + FunctionsPanel.cs + + + ModulesPanel.cs + + + ThreadsPanel.cs + SettingsSingleFileGenerator Settings.Designer.cs @@ -184,6 +203,14 @@ Xenia.Debug + + + + + + + +