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
+
+
+
+
+
+
+
+