Retrieving Column Data from a ListStore?
number
putimalitze at gmx.de
Thu Apr 25 11:29:04 UTC 2019
On Wednesday, 24 April 2019 at 18:56:50 UTC, Ron Tarrant wrote:
>
> For anyone else who comes along looking for the same answer,
> here's what I did:
>
I'm trying to do it with multi-selection. It works now but I
wonder if it's right to just create a dummy TreeModelIF to call
getSelectedRows()? Same question for creating a TreeIter to call
getIter()?
```
import std.stdio;
import gtk.Main;
import gtk.MainWindow;
import gtk.TreeView;
import gtk.CellRendererText;
import gtk.TreeViewColumn;
import gtk.ListStore;
import gtk.TreeStore;
import gtk.TreeIter;
import gtk.TreeSelection;
import gtk.TreePath;
void main(string[] args)
{
Main.init(args);
MainWindow window = new MainWindow("title");
window.setSizeRequest(400, 200);
TreeView treeView = new TreeView();
CellRendererText cellRendererText;
TreeViewColumn treeViewColumn;
CellRendererText cellRendererTextA = new CellRendererText();
CellRendererText cellRendererTextB = new CellRendererText();
treeViewColumn = new TreeViewColumn();
treeViewColumn.setTitle("A and B");
treeViewColumn.packStart(cellRendererTextA, true);
treeViewColumn.packStart(cellRendererTextB, true);
treeViewColumn.addAttribute(cellRendererTextA, "text", 0);
treeViewColumn.addAttribute(cellRendererTextB, "text", 1);
treeView.appendColumn(treeViewColumn);
cellRendererText = new CellRendererText();
treeViewColumn = new TreeViewColumn("C", cellRendererText,
"text", 2);
treeView.appendColumn(treeViewColumn);
//ListStore listStore = new ListStore([GType.STRING,
GType.STRING, GType.STRING]);
TreeStore treeStore = new TreeStore([GType.STRING, GType.STRING,
GType.STRING]);
treeView.setModel(treeStore);
TreeIter treeIter;
treeIter = treeStore.createIter();
treeStore.setValue(treeIter, 0, "a");
treeStore.setValue(treeIter, 1, "b");
treeStore.setValue(treeIter, 2, "c");
treeIter = treeStore.createIter();
treeStore.setValue(treeIter, 0, "a2");
treeStore.setValue(treeIter, 1, "b2");
treeStore.setValue(treeIter, 2, "c2");
TreeSelection treeSelection = treeView.getSelection();
treeSelection.setMode(SelectionMode.MULTIPLE);
treeSelection.addOnChanged(delegate void(TreeSelection
treeSelection) {
writeln("----");
if (treeSelection.getMode() == SelectionMode.MULTIPLE)
{
import gtk.TreeModelIF;
TreeModelIF tm;
//writeln(tm);
TreePath[] treePaths = treeSelection.getSelectedRows(tm);
writeln("nb selected: ", treeSelection.countSelectedRows());
if (treePaths.length)
{
foreach (i, treePath; treePaths)
{
writefln("path(%s) : %s", i, treePath);
TreeIter treeIter = new TreeIter();
treeStore.getIter(treeIter, treePath);
writefln("%s, %s, %s"
, treeStore.getValueString(treeIter, 0)
, treeStore.getValueString(treeIter, 1)
, treeStore.getValueString(treeIter, 2)
);
}
}
else
{
writeln("nothing");
}
}
else
{
TreeIter treeIter = treeSelection.getSelected();
if (treeIter)
{
writefln("%s, %s, %s"
, treeStore.getValueString(treeIter, 0)
, treeStore.getValueString(treeIter, 1)
, treeStore.getValueString(treeIter, 2)
);
}
else
{
writeln("nothing");
}
}
});
window.add(treeView);
window.showAll();
Main.run();
}
```
More information about the Digitalmars-d-learn
mailing list