Debugger: Event Viewer - Make zoom in/out work like the other windows
+ Save window size & location
This commit is contained in:
parent
d1a8141174
commit
161c68a875
9 changed files with 213 additions and 91 deletions
|
@ -19,7 +19,7 @@ namespace Mesen.GUI.Config
|
|||
public DebuggerShortcutsConfig Shortcuts = new DebuggerShortcutsConfig();
|
||||
public TraceLoggerInfo TraceLogger = new TraceLoggerInfo();
|
||||
public HexEditorInfo HexEditor = new HexEditorInfo();
|
||||
public EventViewerInfo EventViewer = new EventViewerInfo();
|
||||
public EventViewerConfig EventViewer = new EventViewerConfig();
|
||||
public DebuggerInfo Debugger = new DebuggerInfo();
|
||||
public TilemapViewerConfig TilemapViewer = new TilemapViewerConfig();
|
||||
public TileViewerConfig TileViewer = new TileViewerConfig();
|
||||
|
|
|
@ -8,8 +8,14 @@ using System.Threading.Tasks;
|
|||
|
||||
namespace Mesen.GUI.Config
|
||||
{
|
||||
public class EventViewerInfo
|
||||
public class EventViewerConfig
|
||||
{
|
||||
public Size WindowSize = new Size(0, 0);
|
||||
public Point WindowLocation;
|
||||
|
||||
public int ImageScale = 1;
|
||||
public bool RefreshOnBreakPause = true;
|
||||
|
||||
public bool ShowPpuRegisterWrites = true;
|
||||
public bool ShowPpuRegisterReads = true;
|
||||
public bool ShowCpuRegisterWrites = true;
|
|
@ -30,9 +30,7 @@ namespace Mesen.GUI.Debugger
|
|||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.picViewer = new Mesen.GUI.Controls.ctrlMesenPictureBox();
|
||||
this.tmrOverlay = new System.Windows.Forms.Timer(this.components);
|
||||
this.pnlPicture = new System.Windows.Forms.Panel();
|
||||
this.grpOptions = new System.Windows.Forms.GroupBox();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.chkShowPreviousFrameEvents = new System.Windows.Forms.CheckBox();
|
||||
|
@ -63,8 +61,7 @@ namespace Mesen.GUI.Debugger
|
|||
this.picPpuReads = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
this.chkShowMarkedBreakpoints = new System.Windows.Forms.CheckBox();
|
||||
this.picMarkedBreakpoints = new Mesen.GUI.Debugger.ctrlColorPicker();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picViewer)).BeginInit();
|
||||
this.pnlPicture.SuspendLayout();
|
||||
this.picViewer = new Mesen.GUI.Debugger.PpuViewer.ctrlImagePanel();
|
||||
this.grpOptions.SuspendLayout();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picNmi)).BeginInit();
|
||||
|
@ -80,37 +77,11 @@ namespace Mesen.GUI.Debugger
|
|||
((System.ComponentModel.ISupportInitialize)(this.picMarkedBreakpoints)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// picViewer
|
||||
//
|
||||
this.picViewer.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.picViewer.Cursor = System.Windows.Forms.Cursors.Default;
|
||||
this.picViewer.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
|
||||
this.picViewer.Location = new System.Drawing.Point(0, 0);
|
||||
this.picViewer.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.picViewer.Name = "picViewer";
|
||||
this.picViewer.Size = new System.Drawing.Size(682, 526);
|
||||
this.picViewer.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.picViewer.TabIndex = 0;
|
||||
this.picViewer.TabStop = false;
|
||||
this.picViewer.DoubleClick += new System.EventHandler(this.picPicture_DoubleClick);
|
||||
this.picViewer.MouseLeave += new System.EventHandler(this.picPicture_MouseLeave);
|
||||
this.picViewer.MouseMove += new System.Windows.Forms.MouseEventHandler(this.picPicture_MouseMove);
|
||||
//
|
||||
// tmrOverlay
|
||||
//
|
||||
this.tmrOverlay.Interval = 50;
|
||||
this.tmrOverlay.Tick += new System.EventHandler(this.tmrOverlay_Tick);
|
||||
//
|
||||
// pnlPicture
|
||||
//
|
||||
this.pnlPicture.AutoScroll = true;
|
||||
this.pnlPicture.Controls.Add(this.picViewer);
|
||||
this.pnlPicture.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.pnlPicture.Location = new System.Drawing.Point(0, 0);
|
||||
this.pnlPicture.Name = "pnlPicture";
|
||||
this.pnlPicture.Size = new System.Drawing.Size(686, 529);
|
||||
this.pnlPicture.TabIndex = 1;
|
||||
//
|
||||
// grpOptions
|
||||
//
|
||||
this.grpOptions.Controls.Add(this.tableLayoutPanel1);
|
||||
|
@ -458,16 +429,29 @@ namespace Mesen.GUI.Debugger
|
|||
this.picMarkedBreakpoints.TabIndex = 27;
|
||||
this.picMarkedBreakpoints.TabStop = false;
|
||||
//
|
||||
// picViewer
|
||||
//
|
||||
this.picViewer.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.picViewer.Image = null;
|
||||
this.picViewer.ImageScale = 1;
|
||||
this.picViewer.ImageSize = new System.Drawing.Size(0, 0);
|
||||
this.picViewer.Location = new System.Drawing.Point(0, 0);
|
||||
this.picViewer.Name = "picViewer";
|
||||
this.picViewer.Selection = new System.Drawing.Rectangle(0, 0, 0, 0);
|
||||
this.picViewer.SelectionWrapPosition = 0;
|
||||
this.picViewer.Size = new System.Drawing.Size(686, 529);
|
||||
this.picViewer.TabIndex = 3;
|
||||
this.picViewer.MouseLeave += new System.EventHandler(this.picPicture_MouseLeave);
|
||||
this.picViewer.MouseMove += new System.Windows.Forms.MouseEventHandler(this.picPicture_MouseMove);
|
||||
//
|
||||
// ctrlEventViewerPpuView
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.pnlPicture);
|
||||
this.Controls.Add(this.picViewer);
|
||||
this.Controls.Add(this.grpOptions);
|
||||
this.Name = "ctrlEventViewerPpuView";
|
||||
this.Size = new System.Drawing.Size(947, 529);
|
||||
((System.ComponentModel.ISupportInitialize)(this.picViewer)).EndInit();
|
||||
this.pnlPicture.ResumeLayout(false);
|
||||
this.grpOptions.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.tableLayoutPanel1.PerformLayout();
|
||||
|
@ -487,10 +471,7 @@ namespace Mesen.GUI.Debugger
|
|||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private ctrlMesenPictureBox picViewer;
|
||||
private System.Windows.Forms.Timer tmrOverlay;
|
||||
private System.Windows.Forms.Panel pnlPicture;
|
||||
private System.Windows.Forms.GroupBox grpOptions;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
private ctrlColorPicker picNmi;
|
||||
|
@ -521,5 +502,6 @@ namespace Mesen.GUI.Debugger
|
|||
private System.Windows.Forms.CheckBox chkShowMarkedBreakpoints;
|
||||
private ctrlColorPicker picMarkedBreakpoints;
|
||||
private System.Windows.Forms.CheckBox chkShowPreviousFrameEvents;
|
||||
private PpuViewer.ctrlImagePanel picViewer;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,8 +27,9 @@ namespace Mesen.GUI.Debugger
|
|||
private Bitmap _displayBitmap = null;
|
||||
private byte[] _pictureData = null;
|
||||
private Font _overlayFont;
|
||||
private bool _zoomed = false;
|
||||
|
||||
|
||||
public int ImageScale { get { return picViewer.ImageScale; } set { picViewer.ImageScale = value; } }
|
||||
|
||||
public ctrlEventViewerPpuView()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
@ -43,31 +44,31 @@ namespace Mesen.GUI.Debugger
|
|||
_overlayFont = new Font(BaseControl.MonospaceFontFamily, 10);
|
||||
|
||||
_entityBinder.Entity = ConfigManager.Config.Debug.EventViewer;
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.ApuRegisterReadColor), picApuReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.ApuRegisterWriteColor), picApuWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.CpuRegisterReadColor), picCpuReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.CpuRegisterWriteColor), picCpuWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.IrqColor), picIrq);
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.BreakpointColor), picMarkedBreakpoints);
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.NmiColor), picNmi);
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.PpuRegisterReadColor), picPpuReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.PpuRegisterWriteColor), picPpuWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.WorkRamRegisterReadColor), picWramReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.WorkRamRegisterWriteColor), picWramWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ApuRegisterReadColor), picApuReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ApuRegisterWriteColor), picApuWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.CpuRegisterReadColor), picCpuReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.CpuRegisterWriteColor), picCpuWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.IrqColor), picIrq);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.BreakpointColor), picMarkedBreakpoints);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.NmiColor), picNmi);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.PpuRegisterReadColor), picPpuReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.PpuRegisterWriteColor), picPpuWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.WorkRamRegisterReadColor), picWramReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.WorkRamRegisterWriteColor), picWramWrites);
|
||||
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowApuRegisterReads), chkShowApuRegisterReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowApuRegisterWrites), chkShowApuRegisterWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowCpuRegisterReads), chkShowCpuRegisterReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowCpuRegisterWrites), chkShowCpuRegisterWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowIrq), chkShowIrq);
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowMarkedBreakpoints), chkShowMarkedBreakpoints);
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowNmi), chkShowNmi);
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowPpuRegisterReads), chkShowPpuRegisterReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowPpuRegisterWrites), chkShowPpuRegisterWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowWorkRamRegisterReads), chkShowWorkRamRegisterReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowWorkRamRegisterWrites), chkShowWorkRamRegisterWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowApuRegisterReads), chkShowApuRegisterReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowApuRegisterWrites), chkShowApuRegisterWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowCpuRegisterReads), chkShowCpuRegisterReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowCpuRegisterWrites), chkShowCpuRegisterWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowIrq), chkShowIrq);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowMarkedBreakpoints), chkShowMarkedBreakpoints);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowNmi), chkShowNmi);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowPpuRegisterReads), chkShowPpuRegisterReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowPpuRegisterWrites), chkShowPpuRegisterWrites);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowWorkRamRegisterReads), chkShowWorkRamRegisterReads);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowWorkRamRegisterWrites), chkShowWorkRamRegisterWrites);
|
||||
|
||||
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowPreviousFrameEvents), chkShowPreviousFrameEvents);
|
||||
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowPreviousFrameEvents), chkShowPreviousFrameEvents);
|
||||
|
||||
_entityBinder.UpdateUI();
|
||||
|
||||
|
@ -136,14 +137,15 @@ namespace Mesen.GUI.Debugger
|
|||
g.DrawImage(_overlayBitmap, 0, 0);
|
||||
|
||||
if(_lastPos.X >= 0) {
|
||||
string location = _lastPos.X / 2 + ", " + (_lastPos.Y / 2);
|
||||
string location = _lastPos.X + ", " + _lastPos.Y;
|
||||
SizeF size = g.MeasureString(location, _overlayFont);
|
||||
int x = _lastPos.X + 15;
|
||||
int y = _lastPos.Y - (int)size.Height - 5;
|
||||
if(x + size.Width > _displayBitmap.Width - 5) {
|
||||
x -= (int)size.Width + 20;
|
||||
int x = _lastPos.X + 5;
|
||||
int y = _lastPos.Y - (int)size.Height / 2 - 5;
|
||||
|
||||
if(x*2 - picViewer.ScrollOffsets.X / picViewer.ImageScale + size.Width > (picViewer.Width / picViewer.ImageScale) - 5) {
|
||||
x -= (int)size.Width / 2 + 10;
|
||||
}
|
||||
if(y < size.Height + 5) {
|
||||
if(y*2 - picViewer.ScrollOffsets.Y / picViewer.ImageScale < size.Height + 5) {
|
||||
y = _lastPos.Y + 5;
|
||||
}
|
||||
|
||||
|
@ -151,6 +153,7 @@ namespace Mesen.GUI.Debugger
|
|||
}
|
||||
}
|
||||
|
||||
picViewer.ImageSize = new Size(_baseWidth, _baseHeight);
|
||||
picViewer.Image = _displayBitmap;
|
||||
_needUpdate = false;
|
||||
}
|
||||
|
@ -188,8 +191,8 @@ namespace Mesen.GUI.Debugger
|
|||
private Point GetCycleScanline(Point location)
|
||||
{
|
||||
return new Point(
|
||||
((location.X & ~0x01) / (_zoomed ? 2 : 1)) / 2,
|
||||
((location.Y & ~0x01) / (_zoomed ? 2 : 1)) / 2
|
||||
((location.X & ~0x01) / this.ImageScale) / 2,
|
||||
((location.Y & ~0x01) / this.ImageScale) / 2
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -237,11 +240,10 @@ namespace Mesen.GUI.Debugger
|
|||
break;
|
||||
}
|
||||
|
||||
double scale = _zoomed ? 2 : 1;
|
||||
UpdateOverlay(new Point((int)(evt.Cycle * 2 * scale), (int)(evt.Scanline * 2 * scale)));
|
||||
UpdateOverlay(new Point((int)(evt.Cycle * 2 * this.ImageScale), (int)(evt.Scanline * 2 * this.ImageScale)));
|
||||
|
||||
Form parentForm = this.FindForm();
|
||||
Point location = parentForm.PointToClient(picViewer.PointToScreen(e.Location));
|
||||
Point location = parentForm.PointToClient(this.PointToScreen(new Point(e.Location.X - picViewer.ScrollOffsets.X, e.Location.Y - picViewer.ScrollOffsets.Y)));
|
||||
BaseForm.GetPopupTooltip(parentForm).SetTooltip(location, values);
|
||||
}
|
||||
|
||||
|
@ -260,22 +262,20 @@ namespace Mesen.GUI.Debugger
|
|||
{
|
||||
UpdateDisplay(false);
|
||||
}
|
||||
|
||||
private void picPicture_DoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
_zoomed = !_zoomed;
|
||||
UpdateViewerSize();
|
||||
}
|
||||
|
||||
private void UpdateViewerSize()
|
||||
{
|
||||
picViewer.Width = (_zoomed ? _baseWidth * 2 : _baseWidth) + 2;
|
||||
picViewer.Height = (_zoomed ? _baseHeight * 2 : _baseHeight) + 2;
|
||||
}
|
||||
|
||||
|
||||
private void chkOption_Click(object sender, EventArgs e)
|
||||
{
|
||||
RefreshViewer();
|
||||
}
|
||||
|
||||
public void ZoomIn()
|
||||
{
|
||||
picViewer.ZoomIn();
|
||||
}
|
||||
|
||||
public void ZoomOut()
|
||||
{
|
||||
picViewer.ZoomOut();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
90
UI/Debugger/EventViewer/frmEventViewer.Designer.cs
generated
90
UI/Debugger/EventViewer/frmEventViewer.Designer.cs
generated
|
@ -28,30 +28,116 @@
|
|||
private void InitializeComponent()
|
||||
{
|
||||
this.ctrlPpuView = new Mesen.GUI.Debugger.ctrlEventViewerPpuView();
|
||||
this.mnuMain = new Mesen.GUI.Controls.ctrlMesenMenuStrip();
|
||||
this.mnuFile = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuClose = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuView = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuRefreshOnBreakPause = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mnuZoomIn = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuZoomOut = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuMain.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// ctrlPpuView
|
||||
//
|
||||
this.ctrlPpuView.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.ctrlPpuView.Location = new System.Drawing.Point(0, 0);
|
||||
this.ctrlPpuView.ImageScale = 1;
|
||||
this.ctrlPpuView.Location = new System.Drawing.Point(0, 24);
|
||||
this.ctrlPpuView.Name = "ctrlPpuView";
|
||||
this.ctrlPpuView.Size = new System.Drawing.Size(945, 531);
|
||||
this.ctrlPpuView.TabIndex = 0;
|
||||
//
|
||||
// mnuMain
|
||||
//
|
||||
this.mnuMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.mnuFile,
|
||||
this.mnuView});
|
||||
this.mnuMain.Location = new System.Drawing.Point(0, 0);
|
||||
this.mnuMain.Name = "mnuMain";
|
||||
this.mnuMain.Size = new System.Drawing.Size(945, 24);
|
||||
this.mnuMain.TabIndex = 10;
|
||||
this.mnuMain.Text = "ctrlMesenMenuStrip1";
|
||||
//
|
||||
// mnuFile
|
||||
//
|
||||
this.mnuFile.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.mnuClose});
|
||||
this.mnuFile.Name = "mnuFile";
|
||||
this.mnuFile.Size = new System.Drawing.Size(37, 20);
|
||||
this.mnuFile.Text = "File";
|
||||
//
|
||||
// mnuClose
|
||||
//
|
||||
this.mnuClose.Image = global::Mesen.GUI.Properties.Resources.Exit;
|
||||
this.mnuClose.Name = "mnuClose";
|
||||
this.mnuClose.Size = new System.Drawing.Size(103, 22);
|
||||
this.mnuClose.Text = "Close";
|
||||
//
|
||||
// mnuView
|
||||
//
|
||||
this.mnuView.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.mnuRefreshOnBreakPause,
|
||||
this.toolStripMenuItem1,
|
||||
this.mnuZoomIn,
|
||||
this.mnuZoomOut});
|
||||
this.mnuView.Name = "mnuView";
|
||||
this.mnuView.Size = new System.Drawing.Size(44, 20);
|
||||
this.mnuView.Text = "View";
|
||||
//
|
||||
// mnuRefreshOnBreakPause
|
||||
//
|
||||
this.mnuRefreshOnBreakPause.CheckOnClick = true;
|
||||
this.mnuRefreshOnBreakPause.Name = "mnuRefreshOnBreakPause";
|
||||
this.mnuRefreshOnBreakPause.Size = new System.Drawing.Size(198, 22);
|
||||
this.mnuRefreshOnBreakPause.Text = "Refresh on break/pause";
|
||||
this.mnuRefreshOnBreakPause.Click += new System.EventHandler(this.mnuRefreshOnBreakPause_Click);
|
||||
//
|
||||
// toolStripMenuItem1
|
||||
//
|
||||
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
|
||||
this.toolStripMenuItem1.Size = new System.Drawing.Size(195, 6);
|
||||
//
|
||||
// mnuZoomIn
|
||||
//
|
||||
this.mnuZoomIn.Name = "mnuZoomIn";
|
||||
this.mnuZoomIn.Size = new System.Drawing.Size(198, 22);
|
||||
this.mnuZoomIn.Text = "Zoom In";
|
||||
//
|
||||
// mnuZoomOut
|
||||
//
|
||||
this.mnuZoomOut.Name = "mnuZoomOut";
|
||||
this.mnuZoomOut.Size = new System.Drawing.Size(198, 22);
|
||||
this.mnuZoomOut.Text = "Zoom Out";
|
||||
//
|
||||
// frmEventViewer
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(945, 531);
|
||||
this.ClientSize = new System.Drawing.Size(945, 555);
|
||||
this.Controls.Add(this.ctrlPpuView);
|
||||
this.Controls.Add(this.mnuMain);
|
||||
this.Name = "frmEventViewer";
|
||||
this.Text = "Event Viewer";
|
||||
this.Controls.SetChildIndex(this.mnuMain, 0);
|
||||
this.Controls.SetChildIndex(this.ctrlPpuView, 0);
|
||||
this.mnuMain.ResumeLayout(false);
|
||||
this.mnuMain.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private ctrlEventViewerPpuView ctrlPpuView;
|
||||
private GUI.Controls.ctrlMesenMenuStrip mnuMain;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuFile;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuClose;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuView;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuRefreshOnBreakPause;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuZoomIn;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuZoomOut;
|
||||
}
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
using Mesen.GUI.Forms;
|
||||
using Mesen.GUI.Config;
|
||||
using Mesen.GUI.Forms;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
|
@ -26,6 +27,18 @@ namespace Mesen.GUI.Debugger
|
|||
base.OnLoad(e);
|
||||
|
||||
if(!this.DesignMode) {
|
||||
InitShortcuts();
|
||||
|
||||
EventViewerConfig config = ConfigManager.Config.Debug.EventViewer;
|
||||
if(!config.WindowSize.IsEmpty) {
|
||||
this.StartPosition = FormStartPosition.Manual;
|
||||
this.Size = config.WindowSize;
|
||||
this.Location = config.WindowLocation;
|
||||
}
|
||||
|
||||
mnuRefreshOnBreakPause.Checked = ConfigManager.Config.Debug.EventViewer.RefreshOnBreakPause;
|
||||
ctrlPpuView.ImageScale = config.ImageScale;
|
||||
|
||||
_notifListener = new NotificationListener();
|
||||
_notifListener.OnNotification += OnNotificationReceived;
|
||||
}
|
||||
|
@ -35,12 +48,35 @@ namespace Mesen.GUI.Debugger
|
|||
{
|
||||
base.OnFormClosed(e);
|
||||
_notifListener?.Dispose();
|
||||
|
||||
EventViewerConfig config = ConfigManager.Config.Debug.EventViewer;
|
||||
config.WindowSize = this.WindowState != FormWindowState.Normal ? this.RestoreBounds.Size : this.Size;
|
||||
config.WindowLocation = this.WindowState != FormWindowState.Normal ? this.RestoreBounds.Location : this.Location;
|
||||
config.ImageScale = ctrlPpuView.ImageScale;
|
||||
}
|
||||
|
||||
private void InitShortcuts()
|
||||
{
|
||||
mnuZoomIn.InitShortcut(this, nameof(DebuggerShortcutsConfig.ZoomIn));
|
||||
mnuZoomOut.InitShortcut(this, nameof(DebuggerShortcutsConfig.ZoomOut));
|
||||
|
||||
mnuZoomIn.Click += (s, e) => ctrlPpuView.ZoomIn();
|
||||
mnuZoomOut.Click += (s, e) => ctrlPpuView.ZoomOut();
|
||||
mnuClose.Click += (s, e) => this.Close();
|
||||
}
|
||||
|
||||
private void OnNotificationReceived(NotificationEventArgs e)
|
||||
{
|
||||
switch(e.NotificationType) {
|
||||
case ConsoleNotificationType.CodeBreak:
|
||||
if(ConfigManager.Config.Debug.EventViewer.RefreshOnBreakPause) {
|
||||
ctrlPpuView.RefreshData();
|
||||
this.BeginInvoke((Action)(() => {
|
||||
ctrlPpuView.RefreshViewer();
|
||||
}));
|
||||
}
|
||||
break;
|
||||
|
||||
case ConsoleNotificationType.EventViewerRefresh:
|
||||
if((DateTime.Now - _lastUpdate).Milliseconds > 10) {
|
||||
_lastUpdate = DateTime.Now;
|
||||
|
@ -53,5 +89,11 @@ namespace Mesen.GUI.Debugger
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void mnuRefreshOnBreakPause_Click(object sender, EventArgs e)
|
||||
{
|
||||
ConfigManager.Config.Debug.EventViewer.RefreshOnBreakPause = mnuRefreshOnBreakPause.Checked;
|
||||
ConfigManager.ApplyChanges();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -120,4 +120,7 @@
|
|||
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="mnuMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>107, 17</value>
|
||||
</metadata>
|
||||
</root>
|
|
@ -22,7 +22,10 @@ namespace Mesen.GUI.Debugger.PpuViewer
|
|||
public Size ImageSize { get { return _imageSize; } set { _imageSize = value; UpdateMapSize(); } }
|
||||
public Image Image { get { return ctrlImageViewer.Image; } set { ctrlImageViewer.Image = value; } }
|
||||
public int ImageScale { get { return _scale; } set { _scale = value; UpdateMapSize(); } }
|
||||
public Point ScrollOffsets { get { return new Point(ctrlPanel.HorizontalScroll.Value, ctrlPanel.VerticalScroll.Value); } }
|
||||
|
||||
public new event EventHandler MouseLeave { add { ctrlImageViewer.MouseLeave += value; } remove { ctrlImageViewer.MouseLeave -= value; } }
|
||||
public new event MouseEventHandler MouseMove { add { ctrlImageViewer.MouseMove += value; } remove { ctrlImageViewer.MouseMove -= value; } }
|
||||
public new event MouseEventHandler MouseClick { add { ctrlImageViewer.MouseClick += value; } remove { ctrlImageViewer.MouseClick -= value; } }
|
||||
|
||||
public ctrlImagePanel()
|
||||
|
|
|
@ -326,7 +326,7 @@
|
|||
<DependentUpon>ctrlTooltip.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Debugger\Workspace\DebugWorkspace.cs" />
|
||||
<Compile Include="Debugger\Config\EventViewerInfo.cs" />
|
||||
<Compile Include="Debugger\Config\EventViewerConfig.cs" />
|
||||
<Compile Include="Debugger\Config\HexEditorInfo.cs" />
|
||||
<Compile Include="Config\RecentItems.cs" />
|
||||
<Compile Include="Debugger\Config\TraceLoggerInfo.cs" />
|
||||
|
|
Loading…
Add table
Reference in a new issue