Esempio n. 1
0
        private void HighLightPrevious()
        {
            if (FindListIsEmpty)
            {
                return;
            }

            TreeCell currItem   = findList.Keys.ElementAt(0);
            TreeCell targetItem = findList.Keys.ElementAt(findList.Keys.Count - 1);
            TreeCell temp;

            for (int i = 1; i < findList.Keys.Count; i++)
            {
                temp = findList.Keys.ElementAt(i);
                if (findList[temp])
                {
                    targetItem = findList.Keys.ElementAt(i - 1);
                    currItem   = temp;
                    break;
                }
            }

            findList[currItem]   = false;
            findList[targetItem] = true;
            EnsureNodeVisible(targetItem);
            RefreshTreeList();
            UpdateShowResult();
        }
Esempio n. 2
0
        void treeList_CustomDrawNodeCell(object sender, CustomDrawNodeCellEventArgs e)
        {
            if (FindListIsEmpty)
            {
                return;
            }

            int filterTextIndex = e.CellText.IndexOf(filterCellText, StringComparison.CurrentCultureIgnoreCase);

            if (filterTextIndex == -1)
            {
                return;
            }
            TreeCell temp = new TreeCell(e.Node.Id, e.Column);

            if (NeedHighLight(temp))
            {
                using (SolidBrush brush = new SolidBrush(BackGroundColor)) {
                    e.Cache.FillRectangle(brush, e.Bounds);
                }
            }


            TextEditViewInfo tevi = e.EditViewInfo as TextEditViewInfo;

            if (tevi == null)
            {
                return;
            }
            e.Appearance.BackColor = Color.Empty;
            e.Cache.Paint.DrawMultiColorString(e.Cache, tevi.MaskBoxRect, e.CellText, filterCellText, e.Appearance, e.Appearance.ForeColor, HighLightColor, false, filterTextIndex);
            e.Handled = true;
        }
Esempio n. 3
0
        private void OnRowExpanded(object o, RowExpandedArgs args)
        {
            TreeIter child;

            if (memberStore.IterNthChild(out child, args.Iter, 0))
            {
                TreeCell cell = (TreeCell)memberStore.GetValue(child, 0);

                if (cell.Message == dummyText)
                {
                    // Find parent node
                    TreeIter piter;
                    memberStore.IterParent(out piter, child);
                    NodeInfo parent = ((TreeCell)memberStore.GetValue(piter, 0)).Node;

                    // remove dummy value
                    memberStore.Remove(ref child);

                    // Insert children
                    if (parent != null)
                    {
                        AddChildren(parent, args.Iter);

                        // For reasons I can't fathom, if nodes are added the `args.Iter'
                        // row isn't expanded until the 2nd click.  So first-click
                        // populates the children, 2nd-click shows them.
                        //
                        // This is annoying.
                        //
                        // Explicitly expand the row.
                        treeView.ExpandRow(args.Path, false);
                    }
                }
            }
        }
Esempio n. 4
0
        private void OnRenderCellIcon(Gtk.TreeViewColumn tree_column,
                                      Gtk.CellRenderer cell, Gtk.TreeModel tree_model, Gtk.TreeIter iter)
        {
#if SHOW_ICONS
            TreeCell tc = (TreeCell)memberStore.GetValue(iter, 0);
            ((CellRendererPixbuf)cell).Pixbuf = tc.Icon;
#endif
        }
Esempio n. 5
0
        private void OnRenderCellText(Gtk.TreeViewColumn tree_column,
                                      Gtk.CellRenderer cell, Gtk.TreeModel tree_model, Gtk.TreeIter iter)
        {
            TreeCell tc = (TreeCell)memberStore.GetValue(iter, 0);

            ((CellRendererText)cell).Text =
                tc.Message != null
                                        ? tc.Message
                                        : Formatter.GetDescription(tc.Node);
        }
Esempio n. 6
0
 private bool NeedHighLight(TreeCell cell)
 {
     foreach (TreeCell item in findList.Keys)
     {
         if (item.NodeID == cell.NodeID && item.Column == cell.Column)
         {
             return(findList[item]);
         }
     }
     return(false);
 }
Esempio n. 7
0
        private static TreeCell AddCell(ExtList <TreeCell> row, GEDCOMIndividualRecord iRec, CellKind cellKind)
        {
            TreeCell result = new TreeCell();

            result.ColIndex = row.Add(result);
            result.Kind     = cellKind;
            result.Rec      = iRec;
            result.Row      = row;
            if (iRec != null)
            {
                result.Name = iRec.GetPrimaryFullName();
            }
            return(result);
        }
Esempio n. 8
0
        public void GenTree(StreamWriter writer, GEDCOMIndividualRecord iRec)
        {
            try {
                var tableRows = new ExtList <ExtList <TreeCell> >(true);
                try {
                    Step(tableRows, 0, 0, null, iRec, 1);

                    writer.WriteLine("<table border=\"0\" cellspacing=\"0\">");

                    int num = tableRows.Count;
                    for (int r = 0; r < num; r++)
                    {
                        var row = tableRows[r];
                        writer.WriteLine("<tr>");

                        int num2 = row.Count;
                        for (int c = 0; c < num2; c++)
                        {
                            TreeCell cell = row[c];
                            string   nm   = "&nbsp;";
                            string   st   = "";
                            if (cell.Kind != CellKind.ckSpace)
                            {
                                if (cell.Kind == CellKind.ckPerson && cell.Name != "")
                                {
                                    nm = "<a href=\"#" + cell.Rec.XRef + "\">" + cell.Name + "</a>";
                                }
                                st = " bgcolor=\"silver\"";
                            }
                            writer.WriteLine("<td" + st + ">" + nm + "</td>");
                        }
                        writer.WriteLine("</tr>");
                    }
                    writer.WriteLine("</tr></table>");
                } finally {
                    tableRows.Dispose();
                }
            } catch (Exception ex) {
                writer.WriteLine(ex.Message);
            }
        }
Esempio n. 9
0
        private static void DrawLine(ExtList <ExtList <TreeCell> > table, TreeCell cellAncestor, TreeCell cellDescendant)
        {
            int r  = table.IndexOf(cellDescendant.Row);
            int r2 = table.IndexOf(cellAncestor.Row);
            int y;

            if (r > r2)
            {
                y  = r2;
                r2 = r;
                r  = y;
            }

            int x = cellDescendant.ColIndex - 1;

            for (y = r; y <= r2; y++)
            {
                var row = table[y];
                row[x].Kind = CellKind.ckLine;
            }
        }
Esempio n. 10
0
        private void HighLightNext()
        {
            if (FindListIsEmpty)
            {
                return;
            }

            bool     needBreak  = false;
            TreeCell currItem   = null;
            TreeCell targetItem = null;

            foreach (TreeCell item in findList.Keys)
            {
                if (needBreak)
                {
                    targetItem = item;
                    break;
                }
                if (findList[item])
                {
                    currItem  = item;
                    needBreak = true;
                }
            }

            if (targetItem == null)
            {
                targetItem = findList.Keys.ElementAt(0);
            }

            findList[currItem]   = false;
            findList[targetItem] = true;
            EnsureNodeVisible(targetItem);
            RefreshTreeList();
            UpdateShowResult();
        }
        public override void OnInspectorGUI()
        {
            EditorGUI.BeginChangeCheck();
            _debuger.hero = (GameObject)EditorGUILayout.ObjectField("Host", _debuger.hero, typeof(GameObject), true);
            if (EditorGUI.EndChangeCheck())
            {
                UpdateHost();
            }
            EditorGUI.BeginChangeCheck();
            _listDrawer.Draw(serializedObject);
            FireFxCanvas canvas = TreeCenter.currCanvas as FireFxCanvas;

            if (canvas != null)
            {
                TreeCell main = TreeCenter.selection.main;
                if (main != null)
                {
                    EditStyles.DrawHorizontalSeperator();
                    GUILayout.Label("Current Cell : " + main.cellType, EditStyles.boldLabel);
                    PInspectorCore[] ps = main.GetProperties();
                    PInspectorCore.BeginLabelWidth(ps);
                    EditorGUI.BeginChangeCheck();
                    GUILayout.BeginHorizontal();
                    GUILayout.Label("Name", GUILayout.Width(PInspectorCore.labelWidth));
                    main.editName = EditorGUILayout.DelayedTextField(main.editName);
                    GUILayout.EndHorizontal();
                    if (EditorGUI.EndChangeCheck())
                    {
                        PPaintCenter.RepaintClients();
                    }
                    PInspectorCore.useLabelString = TreeCenter.useChn;
                    for (int i = 0; i < ps.Length; i++)
                    {
                        if (!main.OnInspectorDraw(ps[i], _debuger) && !ps[i].hideInInspector)
                        {
                            ps[i].Draw();
                        }
                        main.AfterInspectorDraw(ps[i]);
                    }
                    PInspectorCore.useLabelString = false;
                    PInspectorCore.EndLabelWidth();
                }
                if (Application.isPlaying)
                {
                    if (main != null)
                    {
                        EditStyles.DrawHorizontalSeperator();
                    }
                    GUILayout.Space(10);
                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    if (GUILayout.Button("Play", GUILayout.Width(100)))
                    {
                        _debuger.Play(canvas);
                    }
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();
                }
            }
            if (EditorGUI.EndChangeCheck())
            {
                EditorUtility.SetDirty(_debuger);
            }
        }
Esempio n. 12
0
        private void Step(ExtList <ExtList <TreeCell> > table, int rowIndex, int colIndex,
                          TreeCell prev, GEDCOMIndividualRecord cur, int gen)
        {
            if (cur == null)
            {
                return;
            }

            if (rowIndex < 0)
            {
                rowIndex = 0;
            }
            if (rowIndex > table.Count)
            {
                rowIndex = table.Count;
            }

            var row = AddRow(table, rowIndex, 0);

            int num = (colIndex - 1) << 1;

            for (int i = 0; i <= num; i++)
            {
                AddCell(row, null, CellKind.ckSpace);
            }

            if (prev != null)
            {
                AddCell(row, null, CellKind.ckLine);
            }

            TreeCell curCell = AddCell(row, cur, CellKind.ckPerson);

            if (cur.ChildToFamilyLinks.Count > 0 && gen < 5)
            {
                GEDCOMFamilyRecord     family  = cur.ChildToFamilyLinks[0].Family;
                GEDCOMIndividualRecord iFather = family.Husband.Value as GEDCOMIndividualRecord;
                GEDCOMIndividualRecord iMother = family.Wife.Value as GEDCOMIndividualRecord;
                if (iFather != null || iMother != null)
                {
                    AddCell(row, null, CellKind.ckLine);
                    AddCell(row, null, CellKind.ckSpace);

                    rowIndex = table.IndexOf(row);
                    if (iFather != null)
                    {
                        AddRow(table, rowIndex, colIndex + 1);
                    }
                    Step(table, rowIndex, colIndex + 1, curCell, iFather, gen + 1);

                    rowIndex = table.IndexOf(row);
                    if (iMother != null)
                    {
                        AddRow(table, rowIndex + 1, colIndex + 1);
                    }
                    Step(table, rowIndex + 2, colIndex + 1, curCell, iMother, gen + 1);
                }
            }

            WideTable(table, curCell.ColIndex + 1);
            if (prev != null)
            {
                DrawLine(table, prev, curCell);
            }
        }
Esempio n. 13
0
 public override bool CanInsertTo(TreeCell obj)
 {
     return(base.CanInsertTo(obj) && obj is FireFxEmitCell_Line);
 }
 public override bool CanInsertTo(TreeCell obj)
 {
     return(obj != null && obj.IsLeaf == false && IsAncestorOf(obj) == false);
 }
 public override bool CanInsertTo(TreeCell obj)
 {
     return(base.CanInsertTo(obj) && obj.IsSelfOrDescendOf <FireFxCellBase>());
 }
Esempio n. 16
0
 private void EnsureNodeVisible(TreeCell cell)
 {
     treeList.MakeNodeVisible(treeList.FindNodeByID(cell.NodeID));
     treeList.FocusedColumn = cell.Column;
 }