Damn Vegetables
Damn Vegetables

Reputation: 12494

Gtk#, CellRendererCombo, always show drop-down, disable typing?

The code is below, and it currently looks like this: enter image description here

  1. It seems that the CellRendererCombo looks like a CellRendererText, and I have to double-click it to show the drop-down list. Is it possible to show drop-down button always, like this?

enter image description here

  1. Currently, one can type into the combo box. Is it possible to restrict to choosing only from the existing values (male, female), not allowing typing new text? enter image description here

Source code

        st = new Gtk.TreeStore(typeof(string), typeof(int), typeof(string));
        st.AppendValues("Homer", 38, "male");
        st.AppendValues("Marge", 34, "female");

        MyTree.Model = st;

        var r1 = new Gtk.CellRendererText();
        var r2 = new Gtk.CellRendererText();
        var r3 = new Gtk.CellRendererCombo();
        var genders = new Gtk.ListStore(typeof(string));
        genders.AppendValues("male");
        genders.AppendValues("female");
        r3.Model = genders;
        r3.TextColumn = 0;
        r3.Editable = true;

        MyTree.Columns[0].PackStart(r1, false);
        MyTree.Columns[1].PackStart(r2, false);
        MyTree.Columns[2].PackStart(r3, false);

        MyTree.Columns[0].AddAttribute(r1, "text", 0);
        MyTree.Columns[1].AddAttribute(r2, "text", 1);
        MyTree.Columns[2].AddAttribute(r3, "text", 2);

Upvotes: 2

Views: 251

Answers (1)

theGtknerd
theGtknerd

Reputation: 3763

You want to set the has-entry property to False.

This will result in something like (I'm not good at C#):

var r3 = new Gtk.CellRendererCombo();
r3.SetHasEntry(false); // or if that fails, use
r3.SetProperty('has-entry', false);

Upvotes: 1

Related Questions