I'm trying to develop an application in GtkD.

I need a widget to display a list of strings: there could be anything from 0 to 100K strings, but typically a few hundred or thousand.

Using the DemoCustomList as a model I have created this code:

// Note: DebNames is an AAset!string (AAset is a wrapper around a D AA, so in this case a set of strings)

// namestore.d
import gtk.ListStore: ListStore;

class NameStore : ListStore {

    this(DebNames names) {
        import gobject.c.types: GType;
        import gtk.TreeIter: TreeIter;

        super([GType.STRING]);

        TreeIter iter;
        foreach (name; names) {
            append(iter);
            setValue(iter, 0, name);
        }
    }
}

// appwindow.d
final class AppWindow: ApplicationWindow {
    TreeView debsTreeView;
    NameStore nameStore;
    // ...
    private void populateNames(DebNames names) {
        import gtk.CellRendererText: CellRendererText;
        import gtk.TreeViewColumn: TreeViewColumn;

        nameStore = new NameStore(names);
        auto column = new TreeViewColumn;
        auto renderer = new CellRendererText;
        column.packStart(renderer, true);
        column.addAttribute(renderer, "text", 0);
        column.setTitle("Names");
        debsTreeView.appendColumn(column);
    }
}

When populateNames() is called the treeview expands horizontally but shows nothing, so I'm stuck.

Can anyone help?

Note that I don't have to use a tree widget if there's a better one for this use case. I did see ListBox but that seemed to be a list of widgets which would be a bit heavy for 100K strings?

Reply via email to