コード例 #1
0
ファイル: MainWindow.xaml.cs プロジェクト: xiongfang/UL
        void AddTypeNode(ULTypeInfo type)
        {
            var            ns_list        = type.Namespace.Split('.');
            ItemCollection lastCollection = treeView.Items;

            TreeNode parentNode = null;

            foreach (var n in ns_list)
            {
                parentNode = FindChild <TreeNode>(lastCollection, (v) => v.HeaderText == n);

                if (parentNode == null)
                {
                    parentNode            = new TreeNode();
                    parentNode.HeaderText = n;
                    lastCollection.Add(parentNode);
                }
                lastCollection = parentNode.Items;
            }


            var classNode = new TypeNodeItem(type);
            var bm        = new BitmapImage(new Uri("Images/type.png", UriKind.RelativeOrAbsolute));

            classNode.Icon = bm;
            parentNode.Items.Add(classNode);

            foreach (var m in type.Members)
            {
                AddMember(classNode, m);
            }
        }
コード例 #2
0
ファイル: Form1.cs プロジェクト: xiongfang/UL
        private void treeViewTypes_AfterSelect(object sender, TreeViewEventArgs e)
        {
            propertyGrid1.SelectedObject = e.Node.Tag;

            if (e.Node.Tag is ULTypeInfo)
            {
                _selectedType = e.Node.Tag as ULTypeInfo;
            }
            else if (e.Node.Tag is ULMemberInfo)
            {
                _selectedType = Data.GetType((e.Node.Tag as ULMemberInfo).DeclareTypeID);
            }

            if (tabControl1.SelectedIndex == 0)
            {
                if (e.Node.Tag is ULMemberInfo)
                {
                    graphEditor1.memberInfo = e.Node.Tag as ULMemberInfo;
                }
            }
            else if (tabControl1.SelectedIndex == 1)
            {
                UpdateCSCode();
            }
        }
コード例 #3
0
ファイル: Form1.cs プロジェクト: xiongfang/UL
 private void contextMenuStrip_TreeView_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
 {
     if (e.ClickedItem == tsmi_AddType)
     {
         var form = new Form_AddType();
         if (form.ShowDialog() == DialogResult.OK)
         {
             var type = new ULTypeInfo();
             type.Name      = form.InputName;
             type.Namespace = form.InputNamespace;
             if (Data.types.ContainsKey(type.ID))
             {
                 return;
             }
             Data.types[type.ID] = type;
             ResetView();
         }
     }
     else if (e.ClickedItem == tsmi_AddMember && _selectedType != null)
     {
         var form = new Form_AddMember();
         if (form.ShowDialog() == DialogResult.OK)
         {
             var member = new ULMemberInfo();
             member.Name          = form.InputName;
             member.TypeID        = form.InputTypeID;
             member.DeclareTypeID = _selectedType.ID;
             _selectedType.Members.Add(member);
             ResetView();
         }
     }
     else if (e.ClickedItem == tsmi_Delete)
     {
         if (treeViewTypes.SelectedNode != null)
         {
             var selectedType = treeViewTypes.SelectedNode.Tag as ULTypeInfo;
             if (selectedType != null)
             {
                 Data.types.Remove(selectedType.ID);
                 treeViewTypes.Nodes.Remove(treeViewTypes.SelectedNode);
             }
             else
             {
                 var selectMethod = treeViewTypes.SelectedNode.Tag as ULMemberInfo;
                 if (selectMethod != null)
                 {
                     Data.GetType(selectMethod.DeclareTypeID).Members.Remove(selectMethod);
                     treeViewTypes.Nodes.Remove(treeViewTypes.SelectedNode);
                 }
             }
         }
     }
     else if (e.ClickedItem == tsmi_Refresh)
     {
         ResetView();
     }
 }
コード例 #4
0
ファイル: MainWindow.xaml.cs プロジェクト: xiongfang/UL
        void UpdateTypeNode(ULTypeInfo type)
        {
            var node = FindChild <TypeNodeItem>(treeView.Items, (v) => { return(v.type.ID == type.ID); }, true);

            if (node != null)
            {
                node.type = type;
                node.Items.Clear();
                foreach (var m in type.Members)
                {
                    AddMember(node, m);
                }
                node.Refresh();
            }
        }
コード例 #5
0
ファイル: MainWindow.xaml.cs プロジェクト: xiongfang/UL
        void UpdateCode(ULTypeInfo typeInfo)
        {
            //switch (tabControl.SelectedIndex)
            //{
            //    case 0:
            //        {
            //            cs_richTextBox.Document.Blocks.Clear();
            //            Paragraph paragraph = new Paragraph();
            //            paragraph.Inlines.Add(new Run() { Text = ULToCS.To(typeInfo) });
            //            cs_richTextBox.Document.Blocks.Add(paragraph);
            //            foreach (var k in ULToCS.keywords)
            //                FindWordFromPosition(cs_richTextBox.Document.ContentStart, k);
            //        }

            //        break;
            //    case 1:
            //        {
            //            lua_richTextBox.Document.Blocks.Clear();
            //            Paragraph paragraph = new Paragraph();
            //            paragraph.Inlines.Add(new Run() { Text = ULToLua.To(typeInfo) });
            //            lua_richTextBox.Document.Blocks.Add(paragraph);
            //            foreach (var k in ULToLua.keywords)
            //                FindWordFromPosition(lua_richTextBox.Document.ContentStart, k);
            //        }
            //        break;
            //    case 2:
            //        {
            //            cpp_richTextBox.Document.Blocks.Clear();
            //            Paragraph paragraph = new Paragraph();
            //            paragraph.Inlines.Add(new Run() { Text = ULToCpp.To(typeInfo) });
            //            cpp_richTextBox.Document.Blocks.Add(paragraph);
            //            //foreach (var k in ULToCpp.keywords)
            //            //    FindWordFromPosition(cpp_richTextBox.Document.ContentStart, k);
            //        }
            //        break;
            //    case 3:
            //        break;
            //}
        }
コード例 #6
0
ファイル: Form1.cs プロジェクト: xiongfang/UL
 private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
 {
     if (e.ClickedItem == tsb_Compile)
     {
         var r = CSToUL.Convert(rtb_CSharpCode.Text);
         foreach (var g in r.GetChildrenTypes(r))
         {
             Data.types[g.ID] = g;
         }
         ResetView();
         if (_selectedType != null)
         {
             _selectedType = Data.GetType(_selectedType.ID);
             UpdateCSCode();
             var nodes = treeViewTypes.Nodes.Find(_selectedType.ID, true);
             if (nodes.Length > 0)
             {
                 treeViewTypes.SelectedNode = nodes[0];
                 treeViewTypes.SelectedNode.Expand();
             }
         }
     }
 }
コード例 #7
0
ファイル: CompileNode_Class.cs プロジェクト: xiongfang/UL
        //public List<ULMemberInfo> memberInfos = new List<ULMemberInfo>();

        public void Compile(ClassDeclarationSyntax classDeclaration)
        {
            type = new ULTypeInfo();
            ExportClass(classDeclaration);
        }
コード例 #8
0
ファイル: MainWindow.xaml.cs プロジェクト: xiongfang/UL
 public TypeNodeItem(ULTypeInfo t)
 {
     type = t; textBlock.Text = type.Name;
 }
コード例 #9
0
ファイル: MainWindow.xaml.cs プロジェクト: xiongfang/UL
 TypeNodeItem FindTypeNode(ULTypeInfo type)
 {
     return(FindChild <TypeNodeItem>(treeView.Items, (v) => { return v.type.ID == type.ID; }, true));
 }