public MainWindow(EditorViewModel viewModel) { InitializeComponent(); ViewModel = viewModel; viewModel.RequestDelayedWork += (sender, e) => deferredActions.Add(e); DataContext = viewModel; viewModel.MoveFocusToFind += (sender, e) => FocusTextBox(FindBox); viewModel.MoveFocusToHexConverter += (sender, e) => FocusTextBox(HexBox); viewModel.GotoViewModel.MoveFocusToGoto += FocusGotoBox; viewModel.PropertyChanged += ViewModelPropertyChanged; GotoPanel.IsVisibleChanged += AnimateFocusToCorner; FindPanel.IsVisibleChanged += AnimateFocusToCorner; HexConverter.IsVisibleChanged += AnimateFocusToCorner; HexBox.GotFocus += (sender, e) => HexBox.SelectAll(); DecBox.GotFocus += (sender, e) => DecBox.SelectAll(); MessagePanel.IsVisibleChanged += AnimateFocusToCorner; ErrorPanel.IsVisibleChanged += AnimateFocusToCorner; viewModel.PropertyChanged += (sender, e) => { if (e.PropertyName == nameof(viewModel.InformationMessage) && MessagePanel.IsVisible && !string.IsNullOrEmpty(viewModel.InformationMessage) ) { AnimateFocusToCorner(MessagePanel, default); } }; Application.Current.DispatcherUnhandledException += HandleException; Loaded += SetupDebugListener; FillQuickEditMenu(); }
public MainWindow(EditorViewModel viewModel) { InitializeComponent(); ViewModel = viewModel; viewModel.RequestDelayedWork += (sender, e) => deferredActions.Add(e); DataContext = viewModel; viewModel.MoveFocusToFind += (sender, e) => FocusTextBox(FindBox); viewModel.MoveFocusToHexConverter += (sender, e) => FocusTextBox(HexBox); viewModel.GotoViewModel.MoveFocusToGoto += FocusGotoBox; viewModel.PropertyChanged += ViewModelPropertyChanged; GotoPanel.IsVisibleChanged += AnimateFocusToCorner; FindPanel.IsVisibleChanged += AnimateFocusToCorner; HexConverter.IsVisibleChanged += AnimateFocusToCorner; HexBox.GotFocus += (sender, e) => HexBox.SelectAll(); DecBox.GotFocus += (sender, e) => DecBox.SelectAll(); MessagePanel.IsVisibleChanged += AnimateFocusToCorner; ErrorPanel.IsVisibleChanged += AnimateFocusToCorner; viewModel.PropertyChanged += (sender, e) => { if (e.PropertyName == nameof(viewModel.InformationMessage) && MessagePanel.IsVisible && !string.IsNullOrEmpty(viewModel.InformationMessage) ) { AnimateFocusToCorner(MessagePanel, default); } }; Application.Current.DispatcherUnhandledException += (sender, e) => { File.AppendAllText("crash.log", e.Exception.Message + Environment.NewLine + e.Exception.StackTrace); FileSystem.ShowCustomMessageBox("An unhandled error occured. Please report it on Discord or open an issue on GitHub." + Environment.NewLine + "HexManiac might be in a bad state. You should close as soon as possible." + Environment.NewLine + "The error has been logged to crash.log", showYesNoCancel: false); e.Handled = true; }; FillQuickEditMenu(); }