コード例 #1
0
ファイル: PaneDivision.cs プロジェクト: yueker/poderosa
        private DivisionList CreateDivisionList(SplitFormat info, PaneCreationDelegate creation, DockStyle host_dock)
        {
            DivisionList list = new DivisionList(this, info.Direction, host_dock);

            list.FirstNode = CreateDivisionNodeList(list, info, creation);
            return(list);
        }
コード例 #2
0
ファイル: PaneDivision.cs プロジェクト: yueker/poderosa
        private DivisionNode CreateDivisionNodeList(DivisionList list, SplitFormat info, PaneCreationDelegate creation)
        {
            SplitFormat.Node tag       = info.FirstTag;
            DivisionNode     firstnode = null;
            DivisionNode     prev      = null;
            double           remain    = 1.0;

            while (tag != null)
            {
                DivisionNode node = null;

                if (tag.Content != null)
                {
                    DockStyle dock = tag.Next == null ? (info.Direction == Direction.TB ? DockStyle.Bottom : DockStyle.Right) : DockStyle.Fill;
                    node = new DivisionNode(list, CreateDivisionList(tag.Content, creation, dock), tag.GetActualRatio(remain));
                }
                else
                {
                    node = new DivisionNode(list, creation(tag.Label), tag.GetActualRatio(remain));
                }
                remain -= tag.Ratio;

                if (firstnode == null)
                {
                    firstnode = node;
                }
                else
                {
                    prev.Next = node;
                }

                Debug.Assert(node.ParentList == list);
                prev = node;
                tag  = tag.Next;
            }

            return(firstnode);
        }
コード例 #3
0
ファイル: PaneDivision.cs プロジェクト: yueker/poderosa
        public void ApplySplitInfo(Control parent, Control prev_content, string format, PaneCreationDelegate creation)
        {
            bool        was_empty = this.IsEmpty;
            SplitFormat info      = SplitFormat.Parse(format);

            _rootList = CreateDivisionList(info, creation, DockStyle.Fill);
            _count    = _rootList.GetDivisionCount();
            Rebuild();

            if (prev_content == null)
            {
                parent.Controls.Add(_rootList.HostingControl);
            }
            else
            {
                Debug.Assert(prev_content.Parent == parent);
                UIUtil.ReplaceControl(parent, prev_content, _rootList.HostingControl);
            }

            DoLayout();
        }
コード例 #4
0
ファイル: PaneDivision.cs プロジェクト: VirusFree/Poderosa
        private DivisionNode CreateDivisionNodeList(DivisionList list, SplitFormat info, PaneCreationDelegate creation)
        {
            SplitFormat.Node tag = info.FirstTag;
            DivisionNode firstnode = null;
            DivisionNode prev = null;
            double remain = 1.0;
            while (tag != null) {
                DivisionNode node = null;

                if (tag.Content != null) {
                    DockStyle dock = tag.Next == null ? (info.Direction == Direction.TB ? DockStyle.Bottom : DockStyle.Right) : DockStyle.Fill;
                    node = new DivisionNode(list, CreateDivisionList(tag.Content, creation, dock), tag.GetActualRatio(remain));
                }
                else {
                    node = new DivisionNode(list, creation(tag.Label), tag.GetActualRatio(remain));
                }
                remain -= tag.Ratio;

                if (firstnode == null)
                    firstnode = node;
                else
                    prev.Next = node;

                Debug.Assert(node.ParentList == list);
                prev = node;
                tag = tag.Next;
            }

            return firstnode;
        }
コード例 #5
0
ファイル: PaneDivision.cs プロジェクト: VirusFree/Poderosa
 private DivisionList CreateDivisionList(SplitFormat info, PaneCreationDelegate creation, DockStyle host_dock)
 {
     DivisionList list = new DivisionList(this, info.Direction, host_dock);
     list.FirstNode = CreateDivisionNodeList(list, info, creation);
     return list;
 }
コード例 #6
0
ファイル: PaneDivision.cs プロジェクト: VirusFree/Poderosa
        public void ApplySplitInfo(Control parent, Control prev_content, string format, PaneCreationDelegate creation)
        {
            bool was_empty = this.IsEmpty;
            SplitFormat info = SplitFormat.Parse(format);
            _rootList = CreateDivisionList(info, creation, DockStyle.Fill);
            _count = _rootList.GetDivisionCount();
            Rebuild();

            if (prev_content == null)
                parent.Controls.Add(_rootList.HostingControl);
            else {
                Debug.Assert(prev_content.Parent == parent);
                UIUtil.ReplaceControl(parent, prev_content, _rootList.HostingControl);
            }

            DoLayout();
        }