I try to create some GUI for golang. My choose was gtk4 library with https://github.com/diamondburned/gotk4 packege.
I stucked on transfer Go Objects to gtk4 template.
bond.ui
<object class="GtkScrolledWindow">
<property name="height-request">400</property>
<child>
<object class="GtkColumnView">
<property name="model">
<object class="GtkSingleSelection" id="selection_model"/>
</property>
<property name="tab-behavior">cell</property>
<child>
<object class="GtkColumnViewColumn" id="figi_column">
<property name="expand">True</property>
<property name="factory">
<object class="GtkBuilderListItemFactory">
<property name="bytes"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="GtkColumnViewCell">
<property name="child">
<object class="GtkLabel">
<property name="xalign">0</property>
<binding name="label">
<lookup name="name" type="GObject">
<lookup name="item">GtkColumnViewCell</lookup>
</lookup>
</binding>
</object>
</property>
</template>
</interface>]]></property>
</object>
</property>
<property name="title">FIGI</property>
</object>
</child>
</object>
</child>
</object>
Go code
import (
_ "embed"
"fmt"
"github.com/diamondburned/gotk4/pkg/core/gioutil"
"github.com/diamondburned/gotk4/pkg/core/glib"
"github.com/diamondburned/gotk4/pkg/gtk/v4"
"log"
)
//go:embed bond.ui
var uiXML string
type BondItem struct {
figi string
name string
}
var BondsData = gioutil.NewListModel[BondItem]()
func main() {
app := gtk.NewApplication("anton_helper.antonkisselev", gio.ApplicationFlagsNone)
builder := gtk.NewBuilderFromString(uiXML)
window := builder.GetObject("bond_window").Cast().(*gtk.Window)
table := builder.GetObject("selection_model").Cast().(*gtk.SingleSelection)
BondsData.Append(BondItem{
figi: "erfegre",
name: "name1",
})
BondsData.Append(BondItem{
figi: "eefyyyyegre",
name: "name2",
})
table.SetModel(BondsData)
app.AddWindow(window)
window.SetVisible(true)
}
the result is column with 2 emptry rows
and error like this :
2024/12/23 23:04:09 ERROR Error building template for list item: .:0:0: Type `GObject` does not have a property name `name` priority=4 code_file=../../../gtk/gtkbuilderlistitemfactory.c code_line=110 code_func=gtk_builder_list_item_factory_setup glib_domain=Gtk
So why gtk4 dont see go object with all fields?
What i am doing wrong
2