public Gtk.TreeViewColumn AppendStringColumn(string name, EditedHandler EditedHandler , bool editable = false) { var newColumn = new Gtk.TreeViewColumn (); newColumn.Title = name; var cellRenderer = new Gtk.CellRendererText (); cellRenderer.Editable = editable; cellRenderer.Data.Add("colName",name); cellRenderer.Data.Add("colPosition",Columns.Count); if (EditedHandler != null) cellRenderer.Edited += EditedHandler; newColumn.PackStart (cellRenderer, true); Columns.Add(newColumn); newColumn.Data["cellRenderer"] = cellRenderer; newColumn.Data["cellType"] = "text"; newColumn.Data["cellTypeOf"] = typeof(string); return newColumn; }
/// <summary> /// Experimental function /// </summary> /// <returns> /// The combo column. /// </returns> /// <param name='name'> /// Name. /// </param> /// <param name='editable'> /// Editable. /// </param> public Gtk.TreeViewColumn AppendComboColumn(string name, EditedHandler EditedHandler, bool editable, string[] comboValues) { var listStore = new Gtk.ListStore (typeof(string)); foreach (var value in comboValues) listStore.AppendValues(value); var cellRenderer = new Gtk.CellRendererCombo(); cellRenderer.Editable = editable; cellRenderer.TextColumn = 0; cellRenderer.HasEntry = false; cellRenderer.Model = listStore; cellRenderer.Data["colPosition"] = Columns.Count; if (EditedHandler != null) cellRenderer.Edited += EditedHandler; var newColumn = new Gtk.TreeViewColumn (); newColumn.Title = name; newColumn.PackStart (cellRenderer, true); Columns.Add(newColumn); newColumn.Data["cellRenderer"] = cellRenderer; newColumn.Data["cellType"] = "text"; newColumn.Data["cellTypeOf"] = typeof(string); return newColumn; }
void SetCellRendererCallbacks(CellRendererText renderer, EditedHandler handler) { // The user is going to "edit" or "cancel", timer can't continue. renderer.EditingStarted += CellRenderer_EditingStarted; // Canceled: timer can continue. renderer.EditingCanceled += (o, args) => { if (toggled && taskBeingEdited != null) { taskBeingEdited.Inactivate (); InactivateTimer.ToggleTimer (taskBeingEdited); taskBeingEdited = null; toggled = false; } }; // Edited: after calling the delegate the timer can continue. renderer.Edited += (o, args) => { if (handler != null) handler (o, args); if (toggled && taskBeingEdited != null) { taskBeingEdited.Inactivate (); InactivateTimer.ToggleTimer (taskBeingEdited); taskBeingEdited = null; toggled = false; } }; }
//columnId used to identify which column was clicked later, hacky solution TreeViewColumn GetEntriesTreeViewColumn(string title, string columnID, int sortColumnId, TreeCellDataFunc treeCellDataFunc, EditedHandler editHandler = null) { TreeViewColumn column = new TreeViewColumn (); column.Expand = true; column.SortIndicator = true; column.SortColumnId = sortColumnId; column.Sizing = TreeViewColumnSizing.Fixed; column.Resizable = true; column.Title = GettextCatalog.GetString (title); column.Data.Add ("columnID", columnID); CellRendererText textCell = new CellRendererText (); //cell.Ellipsize = Pango.EllipsizeMode.End; textCell.WrapMode = Pango.WrapMode.Word; textCell.Editable = true; if (editHandler == null) textCell.EditingStarted += DeferEditing; else textCell.Edited += editHandler; var p = Gtk.IconTheme.Default.LoadIcon ("gtk-zoom-in", 16, (IconLookupFlags) 0); CellRendererButton zoomCell = new CellRendererButton (p); zoomCell.Clicked += OnZoomCellClick; zoomCell.Data.Add ("columnID", columnID); column.AddNotification ("width", OnColumnWidthChanged); column.PackStart (zoomCell, false); column.PackStart (textCell, true); column.SetCellDataFunc (textCell, treeCellDataFunc); return column; }
private void OnEntryKeyPressed(KeyPressEventArgs args, CellRenderer renderer, EditedHandler handler) { if (args.Event.Key == Gdk.Key.Tab || args.Event.Key == Gdk.Key.ISO_Left_Tab || args.Event.Key == Gdk.Key.KP_Tab) { TreeViewColumn column; /* Start editing the next cell */ CellRenderer next = NextCell(renderer, (args.Event.State & Gdk.ModifierType.ShiftMask) != 0, out column); if (next != null) { handler(d_editingEntry.Text, d_editingPath); renderer.StopEditing(false); if (next is CellRendererToggle || next is CellRendererCombo) { d_treeview.SetCursorOnCell(new TreePath(d_editingPath), column, next, false); } else { d_treeview.SetCursorOnCell(new TreePath(d_editingPath), column, next, true); } args.RetVal = true; } else { d_treeview.GrabFocus(); args.RetVal = false; } } else { args.RetVal = false; } }
public ComboRendererMapping <TNode, TItem> EditedEvent(EditedHandler handler) { cellRenderer.Edited += handler; return(this); }