This project is "closed". If I begin again, it will be from scratch

This project is closed. If I begin again, it will be from scratch and using lessons learned while writing go.uik. Of course, if I begin again it will still be called go.uik.

#go.uik

A concurrent UI kit written in pure go.

This project is in its infancy. Feel free to experiment, but don't expect too much yet.

There is a google group dedicated to this project.


###A concurrent UI kit

Every component visible on the screen is backed by a Block. Every collection of components is backed by a Foundation. All Blocks are built upon a Foundation, but a Foundation itself is made up of a Block, which must itself be laid upon a Foundation. The only exception to this rule is the WindowFoundation.

All communication between Foundations, Blocks and the widgets and layouts composed of them is done via non-blocking channel communication.

While this is a break from the typical polymorphism approach, the result is that a component that stalls while processing input cannot get in the way of other components.

Comments
  • compiling on windows

    compiling on windows

    I tried to build the uikradio on windows 7 64 bit using 64bit go (tip):

    D:\dev\go-3rdparty\src\github.com\skelterjohn\go.uik\examples\uikradio>go build
    # github.com/skelterjohn/go.wde/win
    ..\..\..\go.wde\win\events_windows.go:55: cannot use msg (type uint32) as type uint in function argument
    ..\..\..\go.wde\win\events_windows.go:116: cannot use 24 (type uint32) as type uint in assignment
    ..\..\..\go.wde\win\events_windows.go:170: cannot use msg (type uint32) as type uint in function argument
    ..\..\..\go.wde\win\events_windows.go:173: cannot use msg (type uint32) as type uint in function argument
    ..\..\..\go.wde\win\events_windows.go:184: cannot use msg (type uint32) as type uint in function argument
    ..\..\..\go.wde\win\utils_windows.go:92: cannot use 80 (type uint32) as type uint in assignment
    ..\..\..\go.wde\win\win_windows.go:77: cannot use w32.CW_USEDEFAULT + int32(width) (type int32) as type int in field value
    ..\..\..\go.wde\win\win_windows.go:78: cannot use w32.CW_USEDEFAULT + int32(height) (type int32) as type int in field value
    ..\..\..\go.wde\win\win_windows.go:80: undefined: w32.AdjustWindowRectEx
    ..\..\..\go.wde\win\win_windows.go:177: cannot use 40 (type uint32) as type uint in assignment
    ..\..\..\go.wde\win\win_windows.go:177: too many errors
    
  • Fix for recent freetype-go issues

    Fix for recent freetype-go issues

    Changing in response to freetype-go changing their scaling of stuff. They switched up the scaling factors, so now you need to get FUnitsPerEm() and send that to font.Bounds() and use that where you would before have used UnitsPerEm(). Seems a bit silly. Still, fixed.

  • Hello World tutorial

    Hello World tutorial

    Hi

    I wrote a little hello world tutorial to help people getting started with go.uik. Are you interessted in more tutorials (e.g. labels and buttons)?

  • widgettut.md: panic: no wde backend imported

    widgettut.md: panic: no wde backend imported

    I copy/pasted your widget tutorial code, built it, and tried to run it.

    peter@sofia:~/src/tmp/gowid$ go get -v .
    github.com/skelterjohn/geom (download)
    github.com/skelterjohn/go.uik (download)
    code.google.com/p/draw2d (download)
    code.google.com/p/freetype-go (download)
    github.com/skelterjohn/go.wde (download)
    github.com/skelterjohn/geom
    image/draw
    code.google.com/p/freetype-go/freetype/truetype
    code.google.com/p/freetype-go/freetype/raster
    github.com/skelterjohn/go.wde
    code.google.com/p/freetype-go/freetype
    code.google.com/p/draw2d/draw2d
    github.com/skelterjohn/go.uik
    github.com/skelterjohn/go.uik/layouts
    github.com/skelterjohn/go.uik/widgets
    tmp/gowid
    peter@sofia:~/src/tmp/gowid$ gowid
    panic: no wde backend imported
    
    goroutine 1 [running]:
    github.com/skelterjohn/go%2ewde._func_001()
        /Users/peter/src/github.com/skelterjohn/go.wde/wde.go:81 +0x47
    github.com/skelterjohn/go%2ewde.Run()
        /Users/peter/src/github.com/skelterjohn/go.wde/wde.go:77 +0x1d
    main.main()
        /Users/peter/src/tmp/gowid/x.go:15 +0x26
     . . .
    

    Am I missing something?

  • Let go.wde/init handle the platform-specific imports

    Let go.wde/init handle the platform-specific imports

    Looking at go.wde/init it seems the examples in go.uik/examples possibly set a bad example.

    If there's a reason it's done this way in go.uik, I'm all ears by the way. I don't mind being wrong ;-)

  • Fix backspace on entry field problem on OSX

    Fix backspace on entry field problem on OSX

    2 problems with backspace on OSX on an entry field:

    • Pressing backspace on an entry inserted a character; KeyTypedEvent.Glyph contains a character on backspace.
    • Once the previous problem was fixed: Focusing on an entry by clicking sets the selecting field to true, which caused problems with the range calculation on backspace and delete.

    (This is my first time contributing to an open-source project, so please be gentle :smile:)

  • xgb backend problem

    xgb backend problem

    I'm currently migrating an application I'm working on from go-ui to go.uik

    I discovered an issue while building on Linux, and the fixes are simple (incorrect and missing casts)

    I got the following errors when trying to build:

    ../../github.com/skelterjohn/go.wde/xgb/icon.go:57: cannot use width (type int) as type uint in field value
    ../../github.com/skelterjohn/go.wde/xgb/icon.go:58: cannot use height (type int) as type uint in field value
    ../../github.com/skelterjohn/go.wde/xgb/icon.go:59: cannot use data (type []int) as type []uint in field value
    

    so I changed the function SetIcon like so:

    func (w *Window) SetIcon(icon image.Image) {
        width := icon.Bounds().Max.X - icon.Bounds().Min.X
        height := icon.Bounds().Max.Y - icon.Bounds().Min.Y
        data := make([]uint, width*height)
        for x := 0; x < width; x++ {
            for y := 0; y < height; y++ {
                i := x + y*width
                c := icon.At(x, y)
                r, g, b, a := c.RGBA()
                data[i] = uint(a + r<<8 + g<<16 + b<<24)
            }
        }
        wmicon := ewmh.WmIcon{
            Width:  uint(width),
            Height: uint(height),
            Data:   data,
        }
        ewmh.WmIconSet(w.xu, w.win.Id, []ewmh.WmIcon{wmicon})
    }
    

    and it now builds and runs properly.

  • go get fails

    go get fails

    go get github.com/skelterjohn/go.uik go/src/pkg/github.com/skelterjohn/go.uik/fonts.go:34: not enough arguments in call to font.Bounds go/src/pkg/github.com/skelterjohn/go.uik/fonts.go:35: font.UnitsPerEm undefined (type *truetype.Font has no field or method UnitsPerEm)

  • fix for recent change in freetype package

    fix for recent change in freetype package

    This fix is needed to get it to compile, but I haven't yet successfully used the package, so I'm not sure if I used the "scale" parameter right.

  • Cut, Copy, and Paste

    Cut, Copy, and Paste

    John,

    I've got cut, copy, and paste fully working for the entry widget. Don't forget to pull in my changes on go.wde. This won't work without them.

    Also, I fixed a minor issue where any selected text in the entry widget would drop it's selection when only a modifier key is pressed. :)

This project provides Go bindings for nuklear.h — a small ANSI C GUI library.
This project provides Go bindings for nuklear.h — a small ANSI C GUI library.

Nuklear Package nk provides Go bindings for nuklear.h — a small ANSI C gui library. See github.com/vurtun/nuklear. All the binding code has automatica

Jan 1, 2023
:construction: Closed. A website and user system (Gin/Backbone).

A website and user system starter. Implemented with gin and Backbone. Gowall is port of Drywall Go Node.js Repository here Drywall Site Gowall Drywall

Jul 6, 2020
bodyclose is a static analysis tool which checks whether res.Body is correctly closed.

bodyclose is a static analysis tool which checks whether res.Body is correctly closed. Install You can get bodyclose by go get command. $ go

Jan 6, 2023
netscanner - TCP/UDP scanner to find open or closed ports

netscanner netscanner - TCP/UDP scanner to find open or closed ports installation you have to run this command to install the program $ go get github.

Dec 19, 2022
Qt binding for Go (Golang) aims get Go's compile speed again.

qt.go Qt5 binding for Go (Golang) without CGO that aims to achieve Go's native compile speeds. Instead of using common bindings and heavy C++ wrapper

Dec 19, 2022
Prevent Kubernetes misconfigurations from ever making it (again 😤) to production! The CLI integration provides policy enforcement solution to run automatic checks for rule violations. Docs: https://hub.datree.io
Prevent Kubernetes misconfigurations from ever making it  (again 😤) to production! The CLI integration provides policy enforcement solution to run automatic checks for rule violations.  Docs: https://hub.datree.io

What is Datree? Datree helps to prevent Kubernetes misconfigurations from ever making it to production. The CLI integration can be used locally or in

Jan 1, 2023
Bodyclose: a static analysis tool which checks whether res.Body is correctly closed

bodyclose bodyclose is a static analysis tool which checks whether res.Body is correctly closed. Install You can get bodyclose by go get command. $ go

Dec 9, 2021
Oc-clusteroperator - OpenShift CLI plugin to change the state of ClusterOperators from managed to unmanaged and back again

oc-clusteroperator OpenShift CLI plugin to change the state of ClusterOperators

Feb 15, 2022
🤔 A minimize Time Series Database, written from scratch as a learning project.
🤔 A minimize Time Series Database, written from scratch as a learning project.

mandodb ?? A minimize Time Series Database, written from scratch as a learning project. 时序数据库(TSDB: Time Series Database)大多数时候都是为了满足监控场景的需求,这里先介绍两个概念:

Jan 3, 2023
7 days golang programs from scratch (web framework Gee, distributed cache GeeCache, object relational mapping ORM framework GeeORM, rpc framework GeeRPC etc) 7天用Go动手写/从零实现系列

7 days golang programs from scratch README 中文版本 7天用Go从零实现系列 7天能写什么呢?类似 gin 的 web 框架?类似 groupcache 的分布式缓存?或者一个简单的 Python 解释器?希望这个仓库能给你答案

Jan 5, 2023
Go compiler made from scratch, which can compile itself. It's going to be the smallest and simplest go compiler in the world.

Babygo, a go compiler made from scratch Babygo is a small and simple go compiler. (Smallest and simplest in the world, I believe.) It is made from scr

Jan 8, 2023
Implementation of git internals from scratch in Go language
Implementation of git internals from scratch in Go language

This project is part of a learning exercise to implement a subset of "git" commands. It can be used to create and maintain git objects, such as blobs, trees, commits, references and tags.

Nov 27, 2022
A Pong clone made from scratch with Go and C using OpenGL 3.3

Go-Pong A Pong video game clone made with Go lang and OpenGL 3.3 using C. Gameplay Offline Key bindings are 'w' and 's' for the left player and 'up ar

Feb 10, 2022
A social media API to handle users and their posts, written from scratch in Golang
A social media API to handle users and their posts, written from scratch in Golang

Initial Set-Up To start the project on your own machine you'll need Golang instlled, along with mongoDB. Once you've insured these requirements are me

Oct 9, 2021
Recreating Golang channels from scratch

Go Channel From Scrach This repo was an experiment to recreate Go channels from scratch using only the Go standard library. This package is not at all

Jan 2, 2022
Simple, rootless, "FROM scratch" OCI image builder

zeroimage zeroimage some-program is like building the following Docker image: FROM scratch COPY some-program /some-program ENTRYPOINT ["/some-program"

Jun 26, 2022
A simple distributed kv system from scratch

SimpleKV A simple distributed key-value storage system based on bitcask from scratch. Target Here are some basic requirements: LRU Cache. An index sys

Apr 21, 2022
Govircon 2021 beginner's workshop: Pac Man from Scratch

Pac Man from Scratch Welcome to the Govircon 2021 beginner's workshop! In this course you will learn the basics of the Go programming language while b

Dec 7, 2021
7 days golang programs from scratch

7 days golang programs from scratch README 中文版本 7天用Go从零实现系列 7天能写什么呢?类似 gin 的 web

Dec 18, 2021