public void RefreshPackets() { ListView.BeginUpdate(); MaplePacket previous = ListView.SelectedIndices.Count > 0 ? FilteredPackets[ListView.SelectedIndices[0]] : null; Opcodes.Clear(); ListView.Clear(); MainForm.DataForm.ClearHexBox(); MainForm.StructureForm.Tree.Nodes.Clear(); MainForm.PropertyForm.Properties.SelectedObject = null; if (!mViewOutboundMenu.Checked && !mViewInboundMenu.Checked) { return; } int previousIndex = -1; foreach (MaplePacket packet in mPackets) { if (packet.Outbound && !mViewOutboundMenu.Checked) { continue; } if (!packet.Outbound && !mViewInboundMenu.Checked) { continue; } if (!Opcodes.Exists(op => op.Outbound == packet.Outbound && op.Header == packet.Opcode)) { Opcodes.Add(new Opcode(packet.Outbound, packet.Opcode)); } Definition definition = Config.Instance.GetDefinition(packet); if (definition != null && !mViewIgnoredMenu.Checked && definition.Ignore) { continue; } int index = ListView.AddPacket(packet); if (packet == previous) { previousIndex = index; } } MainForm.SearchForm.RefreshOpcodes(true); ListView.EndUpdate(); // This should be called after EndUpdate so VirtualListSize is set properly if (previous != null && previousIndex >= 0) { ListView.Items[previousIndex].Selected = true; ListView.Items[previousIndex].EnsureVisible(); } }
private void removeLoggedPacketsToolStripMenuItem_Click(object sender, EventArgs e) { const string message = "Are you sure you want to delete all logged packets?"; DialogResult result = MessageBox.Show(message, "Warning!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (result == DialogResult.No) { return; } ClearedPackets = true; mPackets.Clear(); ListView.Clear(); Opcodes.Clear(); RefreshPackets(); }
public void Resolve(HashSet <string> values) { var finalMaps = new List <string>(); var finalOpcodes = new List <string>(); var sorted = new List <KeyValuePair <LayerEnum, SettingsValues> >(_layers); sorted.Sort((left, right) => left.Key.CompareTo(right.Key)); foreach (var layer in sorted) { var json = JsonConvert.SerializeObject(layer.Value); JsonConvert.PopulateObject(json, this, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore } ); ApplyRules(values, finalMaps, finalOpcodes); if (layer.Value.Maps != null) { finalMaps.AddRange(layer.Value.Maps); } if (layer.Value.Opcodes != null) { finalOpcodes.AddRange(layer.Value.Opcodes); } } // todo: remove duplicates Maps = Maps ?? new List <string>(); Maps.Clear(); Maps.AddRange(finalMaps); Opcodes = Opcodes ?? new List <string>(); Opcodes.Clear(); Opcodes.AddRange(finalOpcodes); Rules = null; // validate some settings if (string.IsNullOrWhiteSpace(ProjectFolder)) { throw new Exception("Property 'projectFolder' is missing or empty."); } if (!Directory.Exists(ProjectFolder)) { throw new Exception("Property 'projectFolder' refers to a folder that could not be found."); } // get temp folder TempFolder = Path.Combine(ProjectFolder, ".zxdbg"); Directory.CreateDirectory(TempFolder); var logjson = JsonConvert.SerializeObject(this, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore } ); Logging.Write(Logging.Severity.Debug, "Resolved settings: " + logjson); Deserialized(); }