Pages

Tuesday, April 17, 2018

Fedora 28 : GoLang first example .

This tutorial is about GoLang IDE . About this IDE you can read more here - my intro article about this IDE.
I try to used with the platform-native GUI library for Go named andlabs/ui.
First, after you install the IDE you can check the settings on menu Settings: Using this tool with Fedora 28 is easy.
About the first install of andlabs/ui then this come with this error:
[mythcat@desk ~]$ go get github.com/andlabs/ui
# pkg-config --cflags gtk+-3.0
Package gtk+-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-3.0.pc'
to the PKG_CONFIG_PATH environment variable
Package 'gtk+-3.0', required by 'virtual:world', not found
pkg-config: exit status 1
That tell us is need to install some packages from Fedora repo:
# dnf install gtk3-devel
I used this source code to test the andlabs/ui:
package main

import (
   "github.com/andlabs/ui"
)

func main() {
   err := ui.Main(func() {
      input := ui.NewEntry()
      button := ui.NewButton("Greet")
      greeting := ui.NewLabel("")
      box := ui.NewVerticalBox()
      box.Append(ui.NewLabel("Enter your name:"), false)
      box.Append(input, false)
      box.Append(button, false)
      box.Append(greeting, false)
      window := ui.NewWindow("Hello", 200, 100, false)
      window.SetMargined(true)
      window.SetChild(box)
      button.OnClicked(func(*ui.Button) {
         greeting.SetText("Hello, " + input.Text() + "!")
      })
      window.OnClosing(func(*ui.Window) bool {
         ui.Quit()
         return true
      })
      window.Show()
   })
   if err != nil {
      panic(err)
   }
}
First time was run well and after I restart the IDE I got this error:
# gui_test
/usr/lib/golang/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
gcc: error: /home/mythcat/go/src/github.com/andlabs/ui/libui_linux_amd64.a: No such file or directory

The problem come from GoLang IDE settings and andlabs/ui.
I remove and install again the andlabs/ui and now working well.
The result of this source code come with this output: