コード例 #1
0
ファイル: frmChunkProperties.cs プロジェクト: q4a/Wolven-kit
 private void addVariableToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (treeView.SelectedObject is IEditableVariable editableVariable)
     {
         viewModel.AddListElement(editableVariable);
     }
 }
コード例 #2
0
ファイル: frmChunkList.cs プロジェクト: q4a/Wolven-kit
        private void AddChunkPointers(ToolStripMenuItem menu, CR2WExportWrapper chunk)
        {
            var chunkData = chunk.data;

            menu.DropDownItems.Clear();

            foreach (var variable in chunkData.GetEditableVariables())
            {
                if (variable is IHandleAccessor ihdl && ihdl.IsSerialized && !ihdl.ChunkHandle)
                {
                    continue;
                }

                // single ptrs
                if (variable is IChunkPtrAccessor ptrAccessor)
                {
                    ToolStripItem item = new ToolStripMenuItem()
                    {
                        Text = ptrAccessor.REDName,
                        Name = ptrAccessor.REDName,
                        Tag  = variable
                    };
                    item.Click += new EventHandler(ptr_Click);
                    menu.DropDownItems.Add(item);
                }

                // array ptrs
                if (variable is IArrayAccessor arrayAccessor &&
                    (arrayAccessor.Elementtype.Contains("handle:") || arrayAccessor.Elementtype.Contains("ptr:")))
                {
                    ToolStripItem item = new ToolStripMenuItem()
                    {
                        Text = arrayAccessor.REDName,
                        Name = arrayAccessor.REDName,
                        Tag  = variable
                    };
                    item.Click += new EventHandler(arrayPtr_Click);
                    menu.DropDownItems.Add(item);
                }
            }


            void ptr_Click(object sender, EventArgs e)
            {
                if (sender is ToolStripItem item && item.Tag is IEditableVariable variable && variable is IChunkPtrAccessor ptrAccessor)
                {
                    viewModel.AddNewChunkFor(ptrAccessor);
                }
            }

            void arrayPtr_Click(object sender, EventArgs e)
            {
                if (sender is ToolStripItem item && item.Tag is IEditableVariable variable)
                {
                    viewModel.AddListElement(variable);
                }
            }
        }