// 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); } }
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); }
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); } }
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); }
/// <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); }
// 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); } }
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); } } }
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); }
/// <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)); } } } }
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); }
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); }
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)); } } } }
//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"); } }
/// <summary> /// /// </summary> /// <param name="row"></param> public RowChangedEventArgs(VirtualGridRow row, String columnName) : base() { ChangedRow = row; ColumnName = columnName; }