using Avalonia; using Avalonia.Controls; using Avalonia.Markup.Xaml; using System; using Mesen.Debugger.Controls; using Mesen.Debugger.ViewModels; using Mesen.Interop; using System.ComponentModel; using Avalonia.Input; using Avalonia.Interactivity; using Mesen.Debugger.Utilities; using Mesen.Config; namespace Mesen.Debugger.Windows { public class TilemapViewerWindow : MesenWindow, INotificationHandler { private TilemapViewerViewModel _model; private PictureViewer _picViewer; [Obsolete("For designer only")] public TilemapViewerWindow() : this(CpuType.Snes) { } public TilemapViewerWindow(CpuType cpuType) { InitializeComponent(); #if DEBUG this.AttachDevTools(); #endif _picViewer = this.GetControl("picViewer").InnerViewer; _model = new TilemapViewerViewModel(cpuType, _picViewer, this); DataContext = _model; _model.Config.LoadWindowSettings(this); if(Design.IsDesignMode) { return; } MouseViewerModelEvents.InitEvents(_model, this, _picViewer); _picViewer.Source = _model.ViewerBitmap; } private void InitializeComponent() { AvaloniaXamlLoader.Load(this); } protected override void OnOpened(EventArgs e) { base.OnOpened(e); if(Design.IsDesignMode) { return; } _model.RefreshData(); } protected override void OnClosing(WindowClosingEventArgs e) { base.OnClosing(e); _model.Config.SaveWindowSettings(this); ConfigManager.Config.Debug.TilemapViewer = _model.Config; } private void OnSettingsClick(object sender, RoutedEventArgs e) { _model.Config.ShowSettingsPanel = !_model.Config.ShowSettingsPanel; } public void ProcessNotification(NotificationEventArgs e) { ToolRefreshHelper.ProcessNotification(this, e, _model.RefreshTiming, _model, _model.RefreshData); } } }