private void contextMenuStrip_Opening(object sender, System.ComponentModel.CancelEventArgs e) { if ((treeViewTypes.SelectedNode != null) && (treeViewTypes.SelectedNode.Tag is ParserType)) { removeToolStripMenuItem.Enabled = true; } else { removeToolStripMenuItem.Enabled = false; } addParserFromSequenceToolStripMenuItem.DropDownItems.Clear(); foreach (ParserType type in _document.Types) { SequenceParserType parser = type as SequenceParserType; if (parser != null && !parser.Private) { ToolStripItem item = addParserFromSequenceToolStripMenuItem.DropDownItems.Add(type.Name); item.Tag = type; item.Click += new EventHandler(addParserFromSequenceToolStripMenuItem_Click); } } if (addParserFromSequenceToolStripMenuItem.DropDownItems.Count > 0) { addParserFromSequenceToolStripMenuItem.Enabled = true; } else { addParserFromSequenceToolStripMenuItem.Enabled = false; } }
private void addSequenceToolStripMenuItem_Click(object sender, EventArgs e) { SequenceParserType type = new SequenceParserType(GenerateName("Sequence")); type.DefaultEndian = Endian.BigEndian; _document.AddParserType(type); treeViewTypes.SelectedNode = AddTreeNode(_sequenceNode, type, true); }
private void removeToolStripMenuItem_Click(object sender, EventArgs e) { TreeNode selectedNode = treeViewTypes.SelectedNode; if (selectedNode != null) { ParserType type = selectedNode.Tag as ParserType; if (type != null) { if (MessageBox.Show(this, String.Format(CANAPE.Properties.Resources.ParserDocumentControl_RemoveType, type.Name), String.Format(CANAPE.Properties.Resources.ParserDocumentControl_RemoveTypeCaption, type.Name), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { RemoveTreeNode(type); ParserType[] types = _document.Types.ToArray(); foreach (ParserType t in types) { if (t is SequenceParserType) { SequenceParserType seq = t as SequenceParserType; List <MemberEntry> removeList = new List <MemberEntry>(); foreach (MemberEntry entry in seq.Members) { if (entry.BaseType.Uuid == type.Uuid) { removeList.Add(entry); } } foreach (MemberEntry ent in removeList) { seq.RemoveMember(ent); } } else if (t is StreamParserType) { StreamParserType parser = t as StreamParserType; if (parser.BaseType.Uuid == type.Uuid) { RemoveTreeNode(parser); } } } } } } }
void addSequence_Click(object sender, EventArgs e) { if (_type != null) { SequenceParserType type = ((ToolStripItem)sender).Tag as SequenceParserType; if (type != null) { MemberEntry entry = new SequenceMemberEntry(GetMemberName(), type); _type.AddMember(entry); AddMember(entry, true); } } }