func tree_view_get_selected_path(tree_view *gtk.TreeView, tree_model *gtk.TreeModel, col int, shift bool) string { var path *gtk.TreePath var column *gtk.TreeViewColumn tree_view.GetCursor(&path, &column) if nil == path.GTreePath { return "" } var iter gtk.TreeIter tree_model.GetIterFromString(&iter, path.String()) var ans string ans = "" for { var val glib.GValue var next gtk.TreeIter tree_model.GetValue(&iter, col, &val) if shift { ans = val.GetString()[1:] + ans } else { ans = val.GetString() + ans } if false == tree_model.IterParent(&next, &iter) { break } iter.Assign(&next) } return ans }
func main() { gtk.Init(&os.Args) window := gtk.NewWindow(gtk.WINDOW_TOPLEVEL) window.SetTitle("GTK Folder View") window.Connect("destroy", gtk.MainQuit) swin := gtk.NewScrolledWindow(nil, nil) store := gtk.NewTreeStore(gdkpixbuf.GetGdkPixbufType(), glib.G_TYPE_STRING) treeview := gtk.NewTreeView() swin.Add(treeview) treeview.SetModel(store.ToTreeModel()) treeview.AppendColumn(gtk.NewTreeViewColumnWithAttributes("pixbuf", gtk.NewCellRendererPixbuf(), "pixbuf", 0)) treeview.AppendColumn(gtk.NewTreeViewColumnWithAttributes("text", gtk.NewCellRendererText(), "text", 1)) for n := 1; n <= 10; n++ { var iter1, iter2, iter3 gtk.TreeIter store.Append(&iter1, nil) store.Set(&iter1, gtk.NewImage().RenderIcon(gtk.STOCK_DIRECTORY, gtk.ICON_SIZE_SMALL_TOOLBAR, "").Pixbuf, "Folder"+strconv.Itoa(n)) store.Append(&iter2, &iter1) store.Set(&iter2, gtk.NewImage().RenderIcon(gtk.STOCK_DIRECTORY, gtk.ICON_SIZE_SMALL_TOOLBAR, "").Pixbuf, "SubFolder"+strconv.Itoa(n)) store.Append(&iter3, &iter2) store.Set(&iter3, gtk.NewImage().RenderIcon(gtk.STOCK_FILE, gtk.ICON_SIZE_SMALL_TOOLBAR, "").Pixbuf, "File"+strconv.Itoa(n)) } treeview.Connect("row_activated", func() { var path *gtk.TreePath var column *gtk.TreeViewColumn treeview.GetCursor(&path, &column) mes := "TreePath is: " + path.String() dialog := gtk.NewMessageDialog( treeview.GetTopLevelAsWindow(), gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, mes) dialog.SetTitle("TreePath") dialog.Response(func() { dialog.Destroy() }) dialog.Run() }) window.Add(swin) window.SetSizeRequest(400, 200) window.ShowAll() gtk.Main() }
func (bl *biomeList) treeviewIdx() (int, *gtk.TreeIter, *gtk.TreePath) { var path *gtk.TreePath var column *gtk.TreeViewColumn bl.treeview.GetCursor(&path, &column) idxs := path.GetIndices() if len(idxs) != 1 { return -1, nil, nil } var iter gtk.TreeIter bl.lStore.GetIter(&iter, path) return idxs[0], &iter, path }