예제 #1
0
        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();
        }
예제 #2
0
        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();
        }