Пример #1
0
        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;
        }
Пример #2
0
        /// <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;
        }
Пример #3
0
        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;
        }
Пример #5
0
        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;
            }
        }
Пример #6
0
 public ComboRendererMapping <TNode, TItem> EditedEvent(EditedHandler handler)
 {
     cellRenderer.Edited += handler;
     return(this);
 }