Go to file
Pietro Gagliardi e4d6d11925 Started writing the same but for Mac OS X. This time it's not tested yet; will test now. 2015-04-06 19:04:13 -04:00
examples Updated the widget gallery example to use the new Table without ImageList. 2015-02-20 00:23:49 -05:00
gtkdtp G_ADD_PRIVATE() is too new; wrote in the correct form for GLib 2.32. Thanks to hergertme in irc.gimp.net/#gtk+. 2015-01-10 23:35:22 -05:00
gtkpopover More GTK+ Popover work. I should probably make this a proper widget. 2014-10-10 22:49:03 -04:00
mergeback ...in with the new. 2014-08-30 23:02:02 -04:00
new Started writing the same but for Mac OS X. This time it's not tested yet; will test now. 2015-04-06 19:04:13 -04:00
popover Split out all Windows header file inclusion into a single wininclude_windows.h so all subdirectory files can be on the same page. 2015-01-06 22:02:04 -05:00
proposals ...in with the new. 2014-08-30 23:02:02 -04:00
wintable More TODOs. 2015-02-25 10:45:13 -05:00
LICENSE Added license and README. 2014-02-17 18:38:50 -05:00
README.md Updated README for last two commits. 2015-02-21 17:41:44 -05:00
area.go go fmt. Precursor to bug report filing. 2014-10-02 10:05:53 -04:00
area_darwin.go Merged new container/sizing stuff. 2014-10-18 17:03:07 -04:00
area_darwin.m ...in with the new. 2014-08-30 23:02:02 -04:00
area_unix.go Merged new container/sizing stuff. 2014-10-18 17:03:07 -04:00
area_windows.c Merged new container/sizing stuff. 2014-10-18 17:03:07 -04:00
area_windows.go More TODOs. 2015-02-17 21:40:08 -05:00
assortednotes.md Out with the old... 2014-08-30 23:01:08 -04:00
basicctrls.go More TODOs. 2015-02-16 15:42:43 -05:00
basicctrls_darwin.m Implemented TextField.ReadOnly() on Mac OS X. Began standardizing window class name access on Windows. 2014-11-05 13:35:39 -05:00
basicctrls_windows.c Started adding TextField.ReadOnly() and implemented it (mostly) on Windows. 2014-11-05 12:59:44 -05:00
button_darwin.go Merged new container/sizing stuff. 2014-10-18 17:03:07 -04:00
button_unix.go Merged new container/sizing stuff. 2014-10-18 17:03:07 -04:00
button_windows.go Merged new container/sizing stuff. 2014-10-18 17:03:07 -04:00
checkbox_darwin.go Merged new container/sizing stuff. 2014-10-18 17:03:07 -04:00
checkbox_unix.go Merged new container/sizing stuff. 2014-10-18 17:03:07 -04:00
checkbox_windows.go Merged new container/sizing stuff. 2014-10-18 17:03:07 -04:00
comctl32_windows.c Began the Windows Table integration. 2015-02-17 20:39:13 -05:00
common_darwin.go ...in with the new. 2014-08-30 23:02:02 -04:00
common_darwin.m Started the OS X implementation of Textbox. 2014-10-24 16:11:53 -04:00
common_unix.go ...in with the new. 2014-08-30 23:02:02 -04:00
common_windows.c Fixed up appearance of read-only TextFields on Windows. 2014-11-05 16:36:44 -05:00
common_windows.go go fmt. Precursor to bug report filing. 2014-10-02 10:05:53 -04:00
compatibility.md Updated compatibility.md now that GTK+ 3.16 is officially out. 2015-03-29 16:33:59 -04:00
container.go Merged new container/sizing stuff. 2014-10-18 17:03:07 -04:00
container_darwin.go Added the initial implementaiton of Spinbox on Mac OS X. It doesn't quite work yet. 2014-10-29 12:12:00 -04:00
container_darwin.m Restructured container on Mac OS X likewise. Still have to test. 2014-10-27 23:57:54 -04:00
container_unix.c Migrated the GTK+ backend to the new new container system in which containers are no longer full controls but are still used to hold more than one control and handle the resizing entirely on their own. 2014-10-27 15:21:47 -04:00
container_unix.go Migrated the GTK+ backend to the new new container system in which containers are no longer full controls but are still used to hold more than one control and handle the resizing entirely on their own. 2014-10-27 15:21:47 -04:00
container_windows.c Removed the gouicontainer window class from the Windows backend; it is no longer needed. 2014-10-27 10:19:39 -04:00
container_windows.go Removed the gouicontainer window class from the Windows backend; it is no longer needed. 2014-10-27 10:19:39 -04:00
control.go Reimplemented Control.containerShow()/Control.containerHide(). Will be needed to fully move Tab on Windows away from container. 2014-10-26 15:15:13 -04:00
control_darwin.go Merged new container/sizing stuff. 2014-10-18 17:03:07 -04:00
control_darwin.m Used the alignment rect instead of the frame for laying out and sizing controls on Mac OS X. Also updated the future plans document. 2014-10-24 19:13:18 -04:00
control_unix.go Merged new container/sizing stuff. 2014-10-18 17:03:07 -04:00
control_windows.c ...in with the new. 2014-08-30 23:02:02 -04:00
control_windows.go Reimplemented Control.containerShow()/Control.containerHide(). Will be needed to fully move Tab on Windows away from container. 2014-10-26 15:15:13 -04:00
dialog.go ...in with the new. 2014-08-30 23:02:02 -04:00
dialog_darwin.go ...in with the new. 2014-08-30 23:02:02 -04:00
dialog_darwin.m ...in with the new. 2014-08-30 23:02:02 -04:00
dialog_unix.go go fmt. Precursor to bug report filing. 2014-10-02 10:05:53 -04:00
dialog_windows.c Resolved TODO about OpenFile() on GTK+ returning NULL. 2014-08-31 19:07:55 -04:00
dialog_windows.go ...in with the new. 2014-08-30 23:02:02 -04:00
doc.go ...in with the new. 2014-08-30 23:02:02 -04:00
events_darwin.go ...in with the new. 2014-08-30 23:02:02 -04:00
events_notdarwin.go ...in with the new. 2014-08-30 23:02:02 -04:00
future More TODOs. 2015-03-27 15:16:11 -04:00
grid.go Removed container from SimpleGrid and Grid. This is necessary to do now, alas; the Windows gouicontainers left over weren't being hidden, causing undesirable Tab behavior. 2014-10-26 21:33:52 -04:00
group_darwin.go Fixed Mac OS X issues. 2014-10-28 00:13:18 -04:00
group_unix.go More TODOs. 2014-10-27 15:23:52 -04:00
group_windows.go Fixed Group on Windows not sending events to children. I /think/ we're done with container madness on the Windows backend... 2014-10-27 10:41:10 -04:00
gtk_unix.h ...in with the new. 2014-08-30 23:02:02 -04:00
image_darwin.m Migrated the Mac OS X Table implementation. Untested due to VM issues. 2015-02-18 23:04:14 -05:00
image_unix.go Removed residual ImageList references. 2015-02-20 00:17:15 -05:00
image_windows.c Fixed the other build errors. Awesome, Go's linker won't recognize the COM IIDs in uuid.dll; guess we're bumping the minimum required version of Go, maybe?... 2015-02-17 22:17:58 -05:00
init_windows.c ...in with the new. 2014-08-30 23:02:02 -04:00
label_darwin.go Merged new container/sizing stuff. 2014-10-18 17:03:07 -04:00
label_unix.go Merged new container/sizing stuff. 2014-10-18 17:03:07 -04:00
label_windows.go Added Textbox and implemented it on Windows. 2014-10-23 16:54:21 -04:00
objc_darwin.h Migrated the Mac OS X Table implementation. Untested due to VM issues. 2015-02-18 23:04:14 -05:00
prevlib.tar Out with the old... 2014-08-30 23:01:08 -04:00
progressbar_darwin.go Implemented ProgressBar on Mac OS X. 2014-11-04 11:41:38 -05:00
progressbar_unix.go Actually added GTK+ ProgressBar this time. 2014-11-04 08:49:10 -05:00
progressbar_windows.go Started the Windows ProgressBar implemetnation. There's still an important detail left over... 2014-11-04 09:18:57 -05:00
scrapped ...in with the new. 2014-08-30 23:02:02 -04:00
simplegrid.go Removed container from SimpleGrid and Grid. This is necessary to do now, alas; the Windows gouicontainers left over weren't being hidden, causing undesirable Tab behavior. 2014-10-26 21:33:52 -04:00
spinbox_darwin.go Added Spinbox.OnChanged() and implemented it on GTK+ and Mac OS X. Implementing it on Windows is going to be a pain... 2014-10-31 19:57:48 -04:00
spinbox_darwin.m Added Spinbox.OnChanged() and implemented it on GTK+ and Mac OS X. Implementing it on Windows is going to be a pain... 2014-10-31 19:57:48 -04:00
spinbox_unix.go Added Spinbox.OnChanged() and implemented it on GTK+ and Mac OS X. Implementing it on Windows is going to be a pain... 2014-10-31 19:57:48 -04:00
spinbox_windows.go Fixed up Spinbox appearance on Windows. 2014-11-04 11:55:07 -05:00
stack.go De-container-ized Stack. 2014-10-26 20:08:53 -04:00
tab_darwin.go Fixed Mac OS X issues. 2014-10-28 00:13:18 -04:00
tab_darwin.m ...in with the new. 2014-08-30 23:02:02 -04:00
tab_unix.go Migrated the GTK+ backend to the new new container system in which containers are no longer full controls but are still used to hold more than one control and handle the resizing entirely on their own. 2014-10-27 15:21:47 -04:00
tab_windows.c Okay, REALLY fixed the redraw issues now. A few wacky drawing issues remain, but... not THIS. 2014-10-30 08:48:36 -04:00
tab_windows.go More TODOs. 2015-02-18 04:04:45 -05:00
table.go Added provisions for giving Table columns custom titles. Will now implement. 2015-02-21 14:58:07 -05:00
table_darwin.go Implemented Table column names on all platforms. Updates #40. 2015-02-21 15:53:31 -05:00
table_darwin.m Migrated the Mac OS X Table implementation. Untested due to VM issues. 2015-02-18 23:04:14 -05:00
table_unix.c Fixed Tables on GTK+ not updating properly. Should have done this ages ago, argh 2014-10-19 17:10:16 -04:00
table_unix.go Implemented Table column names on all platforms. Updates #40. 2015-02-21 15:53:31 -05:00
table_windows.c Added tableSetSelection to the new Windows Table and hooked it up to the package ui Table. 2015-02-19 23:25:51 -05:00
table_windows.go Implemented Table column names on all platforms. Updates #40. 2015-02-21 15:53:31 -05:00
textbox_darwin.go Added Mac OS X Textbox Go-side implementation. Doesn't quite work yet. 2014-10-24 16:38:23 -04:00
textbox_unix.go Implemented Textbox on GTK+. 2014-10-23 18:13:00 -04:00
textbox_windows.go Added Textbox and implemented it on Windows. 2014-10-23 16:54:21 -04:00
textfield_darwin.go Implemented TextField.ReadOnly() on Mac OS X. Began standardizing window class name access on Windows. 2014-11-05 13:35:39 -05:00
textfield_unix.go Implemented TextField.ReadOnly() on GTK+. 2014-11-05 13:08:06 -05:00
textfield_windows.go More TODOs. 2015-03-03 19:07:51 -05:00
uitask.go go fmt. Precursor to bug report filing. 2014-10-02 10:05:53 -04:00
uitask_darwin.go ...in with the new. 2014-08-30 23:02:02 -04:00
uitask_darwin.m ...in with the new. 2014-08-30 23:02:02 -04:00
uitask_unix.go go fmt. Precursor to bug report filing. 2014-10-02 10:05:53 -04:00
uitask_windows.c More Windows window class logic simplification. This will be needed for read-only TextFields, next. 2014-11-05 14:12:57 -05:00
uitask_windows.go Fixed many build errors. Not done yet. 2015-02-17 22:00:16 -05:00
warningpopover_darwin.m More TODOs. 2014-09-23 14:53:03 -04:00
winapi_windows.h Removed residual ImageList references. 2015-02-20 00:17:15 -05:00
window.go Merged new container/sizing stuff. 2014-10-18 17:03:07 -04:00
window_darwin.go Fixed Mac OS X issues. 2014-10-28 00:13:18 -04:00
window_darwin.m Restructured container on Mac OS X likewise. Still have to test. 2014-10-27 23:57:54 -04:00
window_unix.go Migrated the GTK+ backend to the new new container system in which containers are no longer full controls but are still used to hold more than one control and handle the resizing entirely on their own. 2014-10-27 15:21:47 -04:00
window_windows.c Okay, REALLY fixed the redraw issues now. A few wacky drawing issues remain, but... not THIS. 2014-10-30 08:48:36 -04:00
window_windows.go Began migrating the Windows code away from using container entirely. This is going to be a mess for Tab... hopefully only a short-term one. 2014-10-26 14:43:45 -04:00
wininclude_windows.h Fixed Windows build. More TODOs. Still not working... 2015-02-18 00:43:41 -05:00
yz_icons_test.go More ImageList removal. 2015-02-17 17:19:31 -05:00
yz_repaint_test.go Merged new container/sizing stuff. 2014-10-18 17:03:07 -04:00
zz_test.go Added provisions for giving Table columns custom titles. Will now implement. 2015-02-21 14:58:07 -05:00

README.md

ui: platform-native GUI library for Go

Feature requests wanted! (Really; IDK what to add next!)

This is a library that aims to provide simple GUI software development in Go. It runs on/requires:

  • Windows: cgo, MinGW-w64 (see note below), Windows XP and newer
    • Note: Notice I specifically said MinGW-w64 here. This is important: regular MinGW is missing various recent header files which package ui uses, and thus won't build with it. Make sure your MinGW is that version instead. If you're running on Windows and are not sure what to download, get the mingw-builds distribution.
  • Mac OS X: cgo, Mac OS X 10.7 and newer
  • other Unixes: cgo, GTK+ 3.4 and newer

Go 1.4 RC1 or newer (including Go tip/master/direct from the source repository) is required. This is due to a variety of compiler and linker bugs on Windows and Mac OS X spanning the Go 1.3 release family.

(this README needs some work)

Be sure to have at least each outermost Window escaping to the heap until a good resolution to Go issue 8310 comes out.

prevlib.tar contains the previous version of the library as it stood when I restarted; don't bother using it.

Documentation

The in-code documentation needs improvement. I have written a tutorial in the Wiki.

Updates

21 February 2015
Implemented Table column headers as a uicolumn: struct tag.

This will probably be the last change for a while; I want to redo the backend again.

19 February 2015
ImageList is now gone; you simply store *image.RGBAs in your Table data structure and they'll work.

Alongside this change is the introduction of a new backend for Table on Windows that should be more flexible than the standard list view control. This control is implemented in the wintable/ folder; it is implemented in C and will one day be spun off into its own project for general-purpose use. I have tried to make it work as much like the standard list view control as possible, and it mostly works fine. That being said, there are still issues and incompletenesses. Please feel free to report any issues you may have found (though watch the TODOs in the source; I may know about the issue already).

5 November 2014
TextFields can now be marked as read-only (non-editable). Textboxes will gain this ability soon.

4 November 2014
Added two new controls, Spinbox (which allows numeric entry with up and down buttons) and ProgressBar (which measures progress). Both aren't fully fleshed out, but are good enough for general use now.

28 October 2014
Mac OS X resizing issues should be (mostly?) fixed now. Textbox still doesn't work right...

24 October 2014
Textbox, a multi-line version of TextField, has been added. (Note that it may not work properly on Mac OS X; this is being investigated.) In addition, excess space around controls on Mac OS X should be settled now.

18 October 2014
The container system was rewritten entirely. You can now set a margin on Windows and Groups and spacing between controls ("padding") on Stacks, Grids, and SimpleGrids. Margins on Tabs will come soon. The work needed to change this will make future additions (like Popover and Spinbox) easier/more sensible. (The Mac OS X code is still glitchy; mind the dust.)

As part of the change, standalone Labels have been removed. All Labels now behave like standalone labels. A new layout container, Form, will be introduced in the near future to allow proper layout of widgets with labels.

3 September 2014
The new GtkGrid-style Grid is now implemented! See its documentation for more details. Also, debugging spew has been removed.

31 August 2014
Grid is now renamed SimpleGrid in preparation for implementing a more GtkGrid-like Grid. Mind the change.

Screenshots

The example widget gallery on GTK+ in the Adwaita theme (3.13/master):

widget gallery example