Exemplo n.º 1
0
		private void ViewInHexEditorContextMenuItem_Click(object sender, EventArgs e)
		{
			if (SelectedWatches.Any())
			{
				ViewInHexEditor(_searches.Domain, SelectedWatches.Select(x => x.Address), SelectedSize);
			}
		}
Exemplo n.º 2
0
 private void WatchListView_VirtualItemsSelectionRangeChanged(object sender, ListViewVirtualItemsSelectionRangeChangedEventArgs e)
 {
     PokeAddressToolBarItem.Enabled       =
         FreezeAddressToolBarItem.Enabled =
             SelectedIndices.Any() &&
             SelectedWatches.All(w => w.Domain.CanPoke());
 }
Exemplo n.º 3
0
        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();
            }
        }
Exemplo n.º 4
0
        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());
                }
            }
        }
Exemplo n.º 5
0
        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();
            }
        }
Exemplo n.º 7
0
        private void WatchListView_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (WatchListView.SelectAllInProgress)
            {
                return;
            }

            PokeAddressToolBarItem.Enabled       =
                FreezeAddressToolBarItem.Enabled =
                    SelectedIndices.Any() &&
                    SelectedWatches.All(w => w.Domain.CanPoke());
        }
Exemplo n.º 8
0
        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;
        }
Exemplo n.º 9
0
		private void AddToRamWatch()
		{
			var watches = SelectedWatches.ToList();
			if (watches.Any())
			{
				Tools.LoadRamWatch(true);
				watches.ForEach(Tools.RamWatch.AddWatch);
				if (Settings.AlwaysExcludeRamWatch)
				{
					RemoveRamWatchesFromList();
				}
			}
		}
Exemplo n.º 10
0
		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)));
			}
		}
Exemplo n.º 11
0
        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();
            }
        }
Exemplo n.º 12
0
        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());
        }
Exemplo n.º 13
0
        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);
                }
            }
        }
Exemplo n.º 14
0
        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";
        }
Exemplo n.º 15
0
        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);
        }
Exemplo n.º 16
0
        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();
                }
            }
        }
Exemplo n.º 17
0
        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());
        }
Exemplo n.º 18
0
        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();
            }
        }
Exemplo n.º 19
0
		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;
		}
Exemplo n.º 20
0
        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);
                }
            }
        }
Exemplo n.º 21
0
		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;
			}
		}
Exemplo n.º 22
0
        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;
        }
Exemplo n.º 23
0
        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();
            }
        }