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

Overview

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
    
    opened by kdar 4
  • 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.

    opened by Olreich 2
  • 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)?

    opened by exul 2
  • 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.

    [email protected]:~/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
    [email protected]:~/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?

    opened by peterbourgon 2
  • 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 ;-)

    opened by Luit 1
  • 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:)

    opened by samnardoni 0
  • 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.

    opened by Commod0re 0
  • 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)

    opened by tarndt 2
  • 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.

    opened by droundy 0
  • 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. :)

    opened by KarateCode 0
Owner
John Asmuth
John Asmuth
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

null 1.5k Sep 23, 2022
: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

Petr 34 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

Seiji Takahashi 230 Sep 6, 2022
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.

R4yan 200 Sep 24, 2022
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

Seiji Takahashi 210 Dec 9, 2021
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

yatsen1 526 Sep 13, 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

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

datree.io 5.9k Sep 28, 2022
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

Chad Scribner 0 Feb 15, 2022
🤔 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)大多数时候都是为了满足监控场景的需求,这里先介绍两个概念:

dongdong 498 Sep 22, 2022
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 解释器?希望这个仓库能给你答案

Dai Jie 11.5k Sep 20, 2022
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

DQNEO 224 Sep 22, 2022
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.

Shyamsunder Rathi 36 Aug 30, 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

Mohammad Issawi 33 Feb 10, 2022
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

Ayush Neekhar 0 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

Sun-Li Beatteay 3 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"

Alex Hamlin 2 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

Galaxyzeta 0 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

Daniela Petruzalek 3 Dec 7, 2021
7 days golang programs from scratch

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

quickler 0 Dec 18, 2021