private void ViewInHexEditorContextMenuItem_Click(object sender, EventArgs e) { if (SelectedWatches.Any()) { ViewInHexEditor(_searches.Domain, SelectedWatches.Select(x => x.Address), SelectedSize); } }
private void WatchListView_VirtualItemsSelectionRangeChanged(object sender, ListViewVirtualItemsSelectionRangeChangedEventArgs e) { PokeAddressToolBarItem.Enabled = FreezeAddressToolBarItem.Enabled = SelectedIndices.Any() && SelectedWatches.All(w => w.Domain.CanPoke()); }
private void EditWatch(bool duplicate = false) { var indexes = SelectedIndices.ToList(); if (SelectedWatches.Any()) { var we = new WatchEditor { InitialLocation = this.ChildPointToScreen(WatchListView) }; we.SetWatch(_watches.Domain, SelectedWatches, duplicate ? WatchEditor.Mode.Duplicate : WatchEditor.Mode.Edit); var result = we.ShowHawkDialog(); if (result == DialogResult.OK) { Changes(); if (duplicate) { _watches.AddRange(we.Watches); WatchListView.ItemCount = _watches.ItemCount; } else { for (var i = 0; i < we.Watches.Count; i++) { _watches[indexes[i]] = we.Watches[i]; } } } UpdateValues(); } }
public void LoadWatchFile(FileInfo file, bool append) { if (file != null) { var result = true; if (_watches.Changes) { result = AskSaveChanges(); } if (result) { _watches.Load(file.FullName, append); WatchListView.ItemCount = _watches.Count; UpdateWatchCount(); Global.Config.RecentWatches.Add(_watches.CurrentFileName); UpdateStatusBar(); PokeAddressToolBarItem.Enabled = FreezeAddressToolBarItem.Enabled = SelectedIndices.Any() && SelectedWatches.All(w => w.Domain.CanPoke()); } } }
private void NewWatchList(bool suppressAsk) { var result = true; if (_watches.Changes) { result = AskSaveChanges(); } if (result || suppressAsk) { _watches.Clear(); WatchListView.RowCount = _watches.Count; GeneralUpdate(); UpdateWatchCount(); UpdateStatusBar(); _sortReverse = false; _sortedColumn = ""; PokeAddressToolBarItem.Enabled = FreezeAddressToolBarItem.Enabled = SelectedIndices.Any() && SelectedWatches.All(w => w.Domain.Writable); } }
private void EditWatch(bool duplicate = false) { var indexes = SelectedIndices.ToList(); if (SelectedWatches.Any()) { var we = new WatchEditor { InitialLocation = this.ChildPointToScreen(WatchListView), MemoryDomains = MemoryDomains }; we.SetWatch(SelectedWatches.First().Domain, SelectedWatches, duplicate ? WatchEditor.Mode.Duplicate : WatchEditor.Mode.Edit); if (this.ShowDialogWithTempMute(we) == DialogResult.OK) { if (duplicate) { _watches.AddRange(we.Watches); WatchListView.RowCount = _watches.Count; UpdateWatchCount(); } else { for (var i = 0; i < we.Watches.Count; i++) { _watches[indexes[i]] = we.Watches[i]; } } Changes(); } GeneralUpdate(); } else if (SelectedSeparators.Any() && !duplicate) { var inputPrompt = new InputPrompt { Text = "Edit Separator", StartLocation = this.ChildPointToScreen(WatchListView), Message = "Separator Text:", TextInputType = InputPrompt.InputType.Text }; if (this.ShowDialogWithTempMute(inputPrompt) == DialogResult.OK) { Changes(); for (int i = 0; i < SelectedSeparators.Count(); i++) { var sep = SelectedSeparators.ToList()[i]; sep.Notes = inputPrompt.PromptText; _watches[indexes[i]] = sep; } } GeneralUpdate(); } }
private void WatchListView_SelectedIndexChanged(object sender, EventArgs e) { if (WatchListView.SelectAllInProgress) { return; } PokeAddressToolBarItem.Enabled = FreezeAddressToolBarItem.Enabled = SelectedIndices.Any() && SelectedWatches.All(w => w.Domain.CanPoke()); }
private void ListViewContextMenu_Opening(object sender, CancelEventArgs e) { var indexes = WatchListView.SelectedIndices; EditContextMenuItem.Visible = RemoveContextMenuItem.Visible = DuplicateContextMenuItem.Visible = PokeContextMenuItem.Visible = FreezeContextMenuItem.Visible = Separator4.Visible = ReadBreakpointContextMenuItem.Visible = WriteBreakpointContextMenuItem.Visible = Separator6.Visible = InsertSeperatorContextMenuItem.Visible = MoveUpContextMenuItem.Visible = MoveDownContextMenuItem.Visible = MoveTopContextMenuItem.Visible = MoveBottomContextMenuItem.Visible = indexes.Count > 0; ReadBreakpointContextMenuItem.Visible = WriteBreakpointContextMenuItem.Visible = Separator6.Visible = SelectedWatches.Any() && Debuggable != null && Debuggable.MemoryCallbacksAvailable() && SelectedWatches.All(w => w.Domain.Name == (MemoryDomains != null ? MemoryDomains.SystemBus.Name : "")); PokeContextMenuItem.Enabled = FreezeContextMenuItem.Visible = SelectedIndices.Any() && SelectedWatches.All(w => w.Domain.CanPoke()); var allCheats = SelectedWatches.All(x => Global.CheatList.IsActive(x.Domain, x.Address)); if (allCheats) { FreezeContextMenuItem.Text = "&Unfreeze Address"; FreezeContextMenuItem.Image = Properties.Resources.Unfreeze; } else { FreezeContextMenuItem.Text = "&Freeze Address"; FreezeContextMenuItem.Image = Properties.Resources.Freeze; } UnfreezeAllContextMenuItem.Visible = Global.CheatList.ActiveCount > 0; ViewInHexEditorContextMenuItem.Visible = SelectedWatches.Count() == 1; newToolStripMenuItem.Visible = indexes.Count == 0; }
private void AddToRamWatch() { var watches = SelectedWatches.ToList(); if (watches.Any()) { Tools.LoadRamWatch(true); watches.ForEach(Tools.RamWatch.AddWatch); if (Settings.AlwaysExcludeRamWatch) { RemoveRamWatchesFromList(); } } }
private void FreezeAddressMenuItem_Click(object sender, EventArgs e) { var allCheats = SelectedWatches.All(x => MainForm.CheatList.IsActive(x.Domain, x.Address)); if (allCheats) { MainForm.CheatList.RemoveRange(SelectedWatches); } else { MainForm.CheatList.AddRange( SelectedWatches.Select(w => new Cheat(w, w.Value))); } }
private void FreezeAddressMenuItem_Click(object sender, EventArgs e) { var allCheats = SelectedWatches.All(x => Global.CheatList.IsActive(x.Domain, x.Address)); if (allCheats) { SelectedWatches.UnfreezeAll(); } else { SelectedWatches.FreezeAll(); } }
private void NewRamWatch_Load(object sender, EventArgs e) { TopMost = Settings.TopMost; _watches = new WatchList(_memoryDomains, _emu.SystemId); LoadConfigSettings(); RamWatchMenu.Items.Add(Settings.Columns.GenerateColumnsMenu(ColumnToggleCallback)); UpdateStatusBar(); PokeAddressToolBarItem.Enabled = FreezeAddressToolBarItem.Enabled = SelectedIndices.Any() && SelectedWatches.All(w => w.Domain.CanPoke()); }
private void WriteBreakpointContextMenuItem_Click(object sender, EventArgs e) { var selected = SelectedWatches.ToList(); if (selected.Any()) { var debugger = GlobalWin.Tools.Load <GenericDebugger>(); foreach (var watch in selected) { debugger.AddBreakpoint((uint)watch.Address, 0xFFFFFFFF, MemoryCallbackType.Write); } } }
private void WatchesSubMenu_DropDownOpened(object sender, EventArgs e) { EditWatchMenuItem.Enabled = DuplicateWatchMenuItem.Enabled = RemoveWatchMenuItem.Enabled = MoveUpMenuItem.Enabled = MoveDownMenuItem.Enabled = SelectedIndices.Any(); PokeAddressMenuItem.Enabled = FreezeAddressMenuItem.Enabled = SelectedIndices.Any() && SelectedWatches.All(w => w.Domain.CanPoke()); PauseMenuItem.Text = _paused ? "Unpause" : "Pause"; }
private void WatchesSubMenu_DropDownOpened(object sender, EventArgs e) { EditWatchMenuItem.Enabled = DuplicateWatchMenuItem.Enabled = RemoveWatchMenuItem.Enabled = MoveUpMenuItem.Enabled = MoveDownMenuItem.Enabled = MoveTopMenuItem.Enabled = MoveBottomMenuItem.Enabled = SelectedIndices.Any(); PokeAddressMenuItem.Enabled = FreezeAddressMenuItem.Enabled = SelectedIndices.Any() && SelectedWatches.All(w => w.Domain.Writable); }
private void PokeAddressMenuItem_Click(object sender, EventArgs e) { if (SelectedWatches.Any()) { var poke = new RamPoke { InitialLocation = this.ChildPointToScreen(WatchListView) }; poke.SetWatch(SelectedWatches); if (poke.ShowHawkDialog(this) == DialogResult.OK) { UpdateValues(); } } }
private void NewRamWatch_Load(object sender, EventArgs e) { // Hack for previous config settings if (Settings.Columns.Any(c => string.IsNullOrWhiteSpace(c.Text))) { Settings = new RamWatchSettings(); } TopMost = Settings.TopMost; _watches = new WatchList(MemoryDomains, Emu.SystemId); LoadConfigSettings(); RamWatchMenu.Items.Add(WatchListView.ToColumnsMenu(ColumnToggleCallback)); UpdateStatusBar(); PokeAddressToolBarItem.Enabled = FreezeAddressToolBarItem.Enabled = SelectedIndices.Any() && SelectedWatches.All(w => w.Domain.CanPoke()); }
private void EditWatch(bool duplicate = false) { var indexes = SelectedIndices.ToList(); if (SelectedWatches.Any()) { foreach (var sw in SelectedWatches) { if (sw.Domain != SelectedWatches.First().Domain) { throw new InvalidOperationException("Can't edit multiple watches on varying memorydomains"); } } var we = new WatchEditor { InitialLocation = this.ChildPointToScreen(WatchListView), MemoryDomains = _memoryDomains }; we.SetWatch(SelectedWatches.First().Domain, SelectedWatches, duplicate ? WatchEditor.Mode.Duplicate : WatchEditor.Mode.Edit); var result = we.ShowHawkDialog(this); if (result == DialogResult.OK) { Changes(); if (duplicate) { _watches.AddRange(we.Watches); WatchListView.ItemCount = _watches.Count; } else { for (var i = 0; i < we.Watches.Count; i++) { _watches[indexes[i]] = we.Watches[i]; } } } UpdateValues(); } }
private void SearchSubMenu_DropDownOpened(object sender, EventArgs e) { ClearChangeCountsMenuItem.Enabled = _settings.IsDetailed(); RemoveMenuItem.Enabled = AddToRamWatchMenuItem.Enabled = SelectedIndices.Any(); PokeAddressMenuItem.Enabled = FreezeAddressMenuItem.Enabled = SelectedIndices.Any() && SelectedWatches.All(w => w.Domain.Writable); UndoMenuItem.Enabled = ClearUndoMenuItem.Enabled = _searches.CanUndo; RedoMenuItem.Enabled = _searches.CanRedo; }
private void ViewInHexEditorContextMenuItem_Click(object sender, EventArgs e) { var selected = SelectedWatches.ToList(); if (selected.Any()) { GlobalWin.Tools.Load <HexEditor>(); if (selected.Select(x => x.Domain).Distinct().Count() > 1) { ViewInHexEditor(selected[0].Domain, new List <long> { selected.First().Address }, selected.First().Size); } else { ViewInHexEditor(selected.First().Domain, selected.Select(x => x.Address), selected.First().Size); } } }
private void ListViewContextMenu_Opening(object sender, CancelEventArgs e) { DoSearchContextMenuItem.Enabled = _searches.Count > 0; RemoveContextMenuItem.Visible = AddToRamWatchContextMenuItem.Visible = FreezeContextMenuItem.Visible = ContextMenuSeparator2.Visible = ViewInHexEditorContextMenuItem.Visible = SelectedIndices.Any(); PokeContextMenuItem.Enabled = FreezeContextMenuItem.Visible = SelectedIndices.Any() && SelectedWatches.All(w => w.Domain.Writable); UnfreezeAllContextMenuItem.Visible = MainForm.CheatList.ActiveCount > 0; ContextMenuSeparator3.Visible = SelectedIndices.Any() || (MainForm.CheatList.ActiveCount > 0); var allCheats = true; foreach (var index in SelectedIndices) { if (!MainForm.CheatList.IsActive(_settings.Domain, _searches[index].Address)) { allCheats = false; } } if (allCheats) { FreezeContextMenuItem.Text = "&Unfreeze Address"; FreezeContextMenuItem.Image = Resources.Unfreeze; } else { FreezeContextMenuItem.Text = "&Freeze Address"; FreezeContextMenuItem.Image = Resources.Freeze; } }
private void ListViewContextMenu_Opening(object sender, CancelEventArgs e) { var indexes = WatchListView.SelectedIndices; EditContextMenuItem.Visible = RemoveContextMenuItem.Visible = DuplicateContextMenuItem.Visible = PokeContextMenuItem.Visible = FreezeContextMenuItem.Visible = Separator6.Visible = InsertSeperatorContextMenuItem.Visible = MoveUpContextMenuItem.Visible = MoveDownContextMenuItem.Visible = Separator6.Visible = toolStripSeparator4.Visible = indexes.Count > 0; var allCheats = _watches.All(x => Global.CheatList.IsActive(x.Domain, x.Address ?? 0)); if (allCheats) { FreezeContextMenuItem.Text = "&Unfreeze Address"; FreezeContextMenuItem.Image = Properties.Resources.Unfreeze; } else { FreezeContextMenuItem.Text = "&Freeze Address"; FreezeContextMenuItem.Image = Properties.Resources.Freeze; } ShowChangeCountsContextMenuItem.Text = Global.Config.RamWatchShowChangeColumn ? "Hide change counts" : "Show change counts"; ShowPreviousValueContextMenuItem.Text = Global.Config.RamWatchShowPrevColumn ? "Hide previous value" : "Show previous value"; ShowDiffContextMenuItem.Text = Global.Config.RamWatchShowDiffColumn ? "Hide difference value" : "Show difference value"; ShowDomainContextMenuItem.Text = Global.Config.RamWatchShowDomainColumn ? "Hide domain" : "Show domain"; UnfreezeAllContextMenuItem.Visible = Global.CheatList.ActiveCount > 0; ViewInHexEditorContextMenuItem.Visible = SelectedWatches.Count() == 1; }
private void EditWatch(bool duplicate = false) { var indexes = SelectedIndices.ToList(); if (SelectedWatches.Any()) { foreach (var sw in SelectedWatches) { if (sw.Domain != SelectedWatches.First().Domain) { throw new InvalidOperationException("Can't edit multiple watches on varying memory domains"); } } var we = new WatchEditor { InitialLocation = this.ChildPointToScreen(WatchListView), MemoryDomains = MemoryDomains }; we.SetWatch(SelectedWatches.First().Domain, SelectedWatches, duplicate ? WatchEditor.Mode.Duplicate : WatchEditor.Mode.Edit); var result = we.ShowHawkDialog(this); if (result == DialogResult.OK) { Changes(); if (duplicate) { _watches.AddRange(we.Watches); WatchListView.ItemCount = _watches.Count; UpdateWatchCount(); } else { for (var i = 0; i < we.Watches.Count; i++) { _watches[indexes[i]] = we.Watches[i]; } } } UpdateValues(); } else if (SelectedSeparators.Any() && !duplicate) { var inputPrompt = new InputPrompt { Text = "Edit Separator", StartLocation = this.ChildPointToScreen(WatchListView), Message = "Separator Text:", TextInputType = InputPrompt.InputType.Text }; var result = inputPrompt.ShowHawkDialog(); if (result == DialogResult.OK) { Changes(); for (int i = 0; i < SelectedSeparators.Count(); i++) { var sep = SelectedSeparators.ToList()[i]; sep.Notes = inputPrompt.PromptText; _watches[indexes[i]] = sep; } } UpdateValues(); } }