billc3012
(BillCzermak)
1
I have been unable to use GTK3 Grid to insert an extra row.
I have coded a minimal case which shows my problem. Maybe I am missing something.
Any feedback appreciated.
package main
import ("github.com/gotk3/gotk3/gtk")
import "fmt"
func main(){
gtk.Init(nil)
major:=gtk.GetMajorVersion(); minor:=gtk.GetMinorVersion()
fmt.Println(fmt.Sprintf("GTK version %d.%d",major,minor))
win,_ := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
win.SetDefaultSize(500,400)
win.SetTitle("Grid Test")
win.Connect("destroy", func() { gtk.MainQuit() })
grid,_ := gtk.GridNew()
grid.SetOrientation(gtk.ORIENTATION_VERTICAL)
lbl,_:=gtk.LabelNew("Label 0")
grid.Attach(lbl,1,1,1,1)
lbl1,_:=gtk.LabelNew("Label 1")
grid.Attach(lbl1,1,2,1,1)
btn,_:=gtk.ButtonNewWithLabel("Click")
btn.Connect("clicked", func() {hdrClicked(grid,lbl)})
grid.Attach(btn,1,3,1,1)
win.Add(grid)
win.ShowAll()
gtk.Main()
}
func hdrClicked(grid *gtk.Grid, lblRef *gtk.Label){
fmt.Println("Click")
lbl,_:=gtk.LabelNew("Added Label")
grid.InsertRow(2)
grid.Attach(lbl,1,2,1,1)
grid.QueueDraw()
}
billc3012
(BillCzermak)
2
I amended the original post to reflect this reply.
I amended this reply appropriately as it was no longer needed
billc3012
(BillCzermak)
3
Yes I was missing something.
lbl.Show() must be called as lbl is created after the initial call to ShowAll()
grid.QueueDraw() has no effect and should be deleted
If I could amend amend the code in the original post I would
billc3012
(BillCzermak)
4
Here is working code
package main
import ("github.com/gotk3/gotk3/gtk")
import "fmt"
func main(){
gtk.Init(nil)
major:=gtk.GetMajorVersion(); minor:=gtk.GetMinorVersion()
fmt.Println(fmt.Sprintf("GTK version %d.%d",major,minor))
win,_ := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
win.SetDefaultSize(500,400)
win.SetTitle("Grid Test")
win.Connect("destroy", func() { gtk.MainQuit() })
grid,_ := gtk.GridNew()
grid.SetOrientation(gtk.ORIENTATION_VERTICAL)
lbl,_:=gtk.LabelNew("Label 0")
grid.Attach(lbl,1,1,1,1)
lbl1,_:=gtk.LabelNew("Label 1")
grid.Attach(lbl1,1,2,1,1)
btn,_:=gtk.ButtonNewWithLabel("Click")
btn.Connect("clicked", func() {hdrClicked(grid,lbl)})
grid.Attach(btn,1,3,1,1)
win.Add(grid)
win.ShowAll()
gtk.Main()
}
func hdrClicked(grid *gtk.Grid, lblRef *gtk.Label){
fmt.Println("Click")
lbl,_:=gtk.LabelNew("Added Label")
//grid.InsertNextTo(lblRef,gtk.POS_BOTTOM)
grid.InsertRow(2)
grid.Attach(lbl,1,2,1,1)
lbl.Show()
//grid.QueueDraw()
}
```