Example #1
0
//        public override void setData(VirtualGridRow row, string columnName, string data)
//        {
//            base.setData(row, columnName, data);
//
////            Gtk.TreeIter iter;
////            if (getIter(row, out iter))
////			{
////	            int cnt = getColumnIndex(row, columnName);
////	            if (cnt > -1)
////	            {
////	                Tree.Model.SetValue(iter, cnt, data);
////	            }
////			} else
////			{
////				//ts.AppendValues(row.Datas);
////				(Tree.Model as Gtk.TreeStore).AppendValues(row.Datas);
////			}
//        }

        /// <summary>
        ///  called after row.setData to inform a derived grid about changes
        /// </summary>
        /// <param name='row'>
        ///  Row.
        /// </param>
        /// <param name='columnName'>
        ///  Column name.
        /// </param>
        /// <param name='data'>
        ///  Data.
        /// </param>
        public override void afterSetData(VirtualGridRow row, string columnName, object data)
        {
            base.afterSetData(row, columnName, data);

            if (data == null)
            {
                throw new Exception("data is null");
            }

            Gtk.TreeIter iter;
            if (getIter(row, out iter))
            {
                int cnt = getColumnIndex(row, columnName);
                if (cnt > -1)
                {
                    Tree.Model.SetValue(iter, cnt, data);
                }
            }
            else
            {
                //ts.AppendValues(row.Datas);
                if (Tree.Model == null)
                {
                    Tree.Model = getTreeStore();
                }

                (Tree.Model as Gtk.TreeStore).AppendValues(row.Datas);
            }
        }
Example #2
0
        public bool getIter(VirtualGridRow row, out Gtk.TreeIter iter)
        {
            if (TreeIterators != null)
            {
                if (TreeIterators.ContainsKey(row))
                {
                    iter = TreeIterators[row];
                    return(true);
                }
            }

            TreeIterators = new Dictionary <VirtualGridRow, Gtk.TreeIter>(1000);

            if (Tree.Model == null)
            {
                return(false);
            }

            Tree.Model.Foreach(new Gtk.TreeModelForeachFunc(foreachItem));
            if (TreeIterators != null)
            {
                if (TreeIterators.ContainsKey(row))
                {
                    iter = TreeIterators[row];
                    return(true);
                }
            }
            iter = Gtk.TreeIter.Zero;
            return(false);
        }
Example #3
0
        protected virtual void CellClicked(Gtk.TreeIter iter, int column, object data, int x, int y, Gdk.Rectangle cellrect)
        {
            VirtualGridRow row = getGridRow(iter);

            if (OnCellClicked != null)
            {
                OnCellClicked(row, column, data, x, y, cellrect);
            }
        }
Example #4
0
        public bool foreachItem(Gtk.TreeModel mode, Gtk.TreePath path, Gtk.TreeIter iter)
        {
            VirtualGridRow cr = getGridRow(iter);

            if (cr != null)
            {
                if (!TreeIterators.ContainsKey(cr))
                {
                    TreeIterators.Add(cr, iter);
                }
            }
            return(false);
        }
Example #5
0
 /// <summary>
 /// removes the row from the grid and the treemodel
 /// </summary>
 /// <param name="row"></param>
 /// <returns></returns>
 public override bool removeRow(VirtualGridRow row)
 {
     Gtk.TreeStore ts = Tree.Model as Gtk.TreeStore;
     if (ts != null)
     {
         Gtk.TreeIter iter;
         if (getIter(row, out iter))
         {
             ts.Remove(ref iter);
             return(base.removeRow(row));
         }
     }
     return(false);
 }
Example #6
0
//		void HandleButtonPressed (object sender, ButtonEventArgs e)
//		{
//			if (e.MultiplePress == 2)
//			{
//				TreeView tv = sender as TreeView;
//
//				TreePosition tp = tv.SelectedRow;
//				TreeNavigator tn = DataStore.GetNavigatorAt (tp);
//				//SetValue(tn,new object[] { true },"System.Boolean");
//
//				//SetValue(tn,
//
//				SetValue(tn,new object[] {Fields[2].Field,true},"System.Boolean");
//
//
//				//Tree.Columns[0].Views[0]
//			}
//
//		}


        public override void afterSetData(VirtualGridRow row, string columnName, object data)
        {
            base.afterSetData(row, columnName, data);

            if (data == null)
            {
                throw new Exception("data is null");
            }

            TreeNavigator tn = GetNavigator(row);

            if (tn != null)
            {
                SetValue(tn, columnName, data);
            }
        }
Example #7
0
        public override void selectRow(VirtualGridRow row)
        {
            Tree.Selection.Mode = Gtk.SelectionMode.Single;

            Tree.Selection.UnselectAll();

            Gtk.TreeIter iter;
            if (getIter(row, out iter))
            {
                Tree.Selection.SelectIter(iter);
                Gtk.TreePath[] sel = Tree.Selection.GetSelectedRows();
                if (sel.Length > 0)
                {
                    Gdk.Rectangle rect = Tree.GetCellArea(sel[0], Tree.Columns[0]);
                    Tree.ScrollToPoint(rect.X, rect.Y);
                }
            }
        }
Example #8
0
        public override List <VirtualGridRow> getSelectedRows()
        {
            List <VirtualGridRow> ret = new List <VirtualGridRow>(50);

            Gtk.TreeIter   iter;
            Gtk.TreePath[] lst = Tree.Selection.GetSelectedRows();

            foreach (Gtk.TreePath pt in lst)
            {
                Tree.Model.GetIter(out iter, pt);
                VirtualGridRow rw = getGridRow(iter);
                if (rw != null)
                {
                    ret.Add(rw);
                }
            }

            return(ret);
        }
Example #9
0
        /// <summary>
        /// called when a cell was edited ... sets the data for the virtualgridcell and the model in the gtk tree store
        /// </summary>
        /// <param name="o"></param>
        /// <param name="args"></param>
        void cell_Edited(object o, Gtk.EditedArgs args)
        {
            TreeListCellRendererText cell = o as TreeListCellRendererText;

            if (cell != null)
            {
                Gtk.TreeIter iter;
                Tree.Model.GetIter(out iter, new Gtk.TreePath(args.Path));

                VirtualGridRow row = getGridRow(iter);
                if (row != null)
                {
                    row.setData(cell.ColumnName, args.NewText, true);
                    Tree.Model.SetValue(iter, cell.ColumnIndex, args.NewText);

                    if (AfterEdit != null)
                    {
                        AfterEdit(this, new RowChangedEventArgs(row, cell.ColumnName));
                    }
                }
            }
        }
Example #10
0
        private TreeNavigator GetNavigator(VirtualGridRow row, TreeNavigator parent = null)
        {
            TreeNavigator first = null;

            if (parent != null)
            {
                first = parent;
            }
            else
            {
                first = DataStore.GetFirstNode();
            }

            if (first.CurrentPosition != null)
            {
                do
                {
                    VirtualGridRow o = (VirtualGridRow)GetValue(first, "row");

                    if (o == row)
                    {
                        return(first);
                    }

                    if (first.MoveToChild())
                    {
                        TreeNavigator tn = GetNavigator(row, first);
                        if (tn != null)
                        {
                            return(tn);
                        }
                        first.MoveToParent();
                    }
                } while(first.MoveNext());
            }

            return(null);
        }
Example #11
0
        private int getColumnIndex(VirtualGridRow row, string columnName)
        {
            int i = 0;

            foreach (VirtualGridHeaderColumn hc in row.Grid.HeaderColumns)
            {
                if (hc.ColumnName.Equals(columnName, StringComparison.OrdinalIgnoreCase))
                {
                    return(i);
                }
                i++;
            }

//            foreach (VirtualGridCell c in row.Cells)
//            {
//                if (c.HeaderColumn.ColumnName.Equals(columnName,StringComparison.OrdinalIgnoreCase))
//                {
//                    return i;
//                }
//                i++;
//            }
            return(-1);
        }
Example #12
0
        void HandleToggled(object o, Gtk.ToggledArgs args)
        {
            int column = columns.IndexOf(o);

            Gtk.TreeIter iter;

            if (Tree.Model.GetIterFromString(out iter, args.Path))
            {
                bool val = (bool)Tree.Model.GetValue(iter, column);
                Tree.Model.SetValue(iter, column, !val);

                VirtualGridRow row = getGridRow(iter);
                if (row != null)
                {
                    String colname = row.getColumnName(column);
                    row.setData(colname, !val, true);
                    if (Toggled != null)
                    {
                        Toggled(this, new RowChangedEventArgs(row, colname));
                    }
                }
            }
        }
Example #13
0
//DL rempixbuf
//		protected bool renderImage(VirtualTreeRow row, VirtualTreeRow childrow)
//		{
////			if ((row.Cells[0].CustomOption != null) && (row.Cells[0].CustomOption.Equals("nopic")))
////			{
////				return false;
////			}
//			if (childrow.BaseRow != null)
//			{
//				VirtualGridCell cell = childrow.BaseRow.getCell(row.HeaderColumn);
//				if (cell != null)
//				{
//					if (cell.CustomOption.Equals("nopic",StringComparison.OrdinalIgnoreCase))
//					{
//						return false;
//					}
//				}
//			}
//
//			if (row.HeaderColumn.CustomOption.Equals("pixbuf", StringComparison.OrdinalIgnoreCase))
//            {
//				return true;
//			}
//			return false;
//		}

        protected void addData(Gtk.TreeStore store, Gtk.TreeIter iter, VirtualTreeRow row, bool withiter)
        {
            //Console.WriteLine("->"  + row.NodeValue);
            //store.AppendValues(row.Data);
            foreach (KeyValuePair <String, VirtualTreeRow> kp in row.Children)
            {
                //GroupedChildRows grp = kp.Value;
                VirtualTreeRow childrow = kp.Value;

                Gtk.TreeIter it;
                bool         wi = withiter;
                if (!withiter)
                {
                    //DL rempixbuf
//                    if (renderImage(row, childrow))
//                    {
//                        it = store.AppendValues(childrow.DataWithImage);
//
//                        wi = true;
//                    }
                    //else
                    {
                        it = store.AppendValues(childrow.Data);
                        wi = true;
                    }
                }
                else
                {
//                    if (renderImage(row, childrow))
//                    {
//                        it = store.AppendValues(iter, childrow.DataWithImage);
//                    }
//                    else
//                    {
//
//                    }
                    it = store.AppendValues(iter, childrow.Data);
                }

                addData(store, it, childrow, wi);
            }             //foreach

            //add the data into a row
            if (row.HeaderColumn.ChildColumn == null)
            {
                //startStopWatch("AppendValues");
                if ((row.Rows != null) && (row.Rows.Count > 1))                 //TODO Count > 1 check .. or option ??
                {
                    //foreach (VirtualGridRow vr in row.Rows)
                    int idx = 0;
                    if (SkipFirstChildrow)
                    {
                        idx = 1;
                    }

                    for (int i = idx; i < row.Rows.Count; i++)
                    {
                        VirtualGridRow vr = row.Rows[i];
//DL rempixbuf
//	                    bool tmp = LoadPixBuf;
//	                    if (!PixBufInRow)
//	                    {
//	                        LoadPixBuf = false;
//	                    }
                        store.AppendValues(iter, vr.Datas);
                        //DL rempixbuf
                        //LoadPixBuf = tmp;
                    }
                }
                //stopStopWatch("AppendValues");
            }
        }
Example #14
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="row"></param>
 public RowChangedEventArgs(VirtualGridRow row, String columnName)
     : base()
 {
     ChangedRow = row;
     ColumnName = columnName;
 }