goey /

Filename Size Date modified Message
animate
base
dialog
example
icons
internal
loop
mock
31 B
Minimal testing for the creation of the remaining widgets.
1.5 KB
Added LICENSE plus README.
4.5 KB
Updated documentation to provide information about the Cocoa port.
4.5 KB
Updated widgets in main package to use the new behaviour of Mount in base to use new "nil" or nilish element.
4.2 KB
Updated widgets in main package to use the new behaviour of Mount in base to use new "nil" or nilish element.
168 B
Added a package to support animation. Only some basic functionality is currently available.
1.4 KB
Added a package to support animation. Only some basic functionality is currently available.
1.5 KB
Fixed UpdateProps for buttons on WIN32 so that the default property can be changed.
1.9 KB
There is some part of the interaction with gtk_widget_grab_default that is not clear. Afterwards, this state tends back towards false. Will maintain gtk_widget_can_default, but will stop trying to grab the default. Tests are passing, but not clear that can default provides all of the behaviour that is promised.
3.0 KB
Implemented quickcheck for updating the button widget. With the framework in place, adding additional control should only be a few lines.
3.9 KB
Revised handling of WM_COMMAND messages.
1.4 KB
Doc comments.
2.4 KB
Implemented Prop method for the date input widget on linux.
2.1 KB
Need to skip the quickcheck portions of tests on some platforms, or for CI, since they take the bulk of the testing time. For one machine on WIN32, skipping these tests drops the testing time from ~50s to ~9.4. Most of the remaining time is probably still delays introduced by time.Sleep so that the results are visible on screen.
4.0 KB
Revised handling of WM_COMMAND messages.
1.4 KB
Moved a number of types into a separate package. It is not clear if this is a win for useability or not.
2.5 KB
Implemented Prop method for the date input widget on linux.
1.4 KB
Renaming of test functions for mounting of widgets to have uniform naming scheme.
4.5 KB
Move the syscall package into internal/syscall. These packages are just shims to fill in missing APIs from other packages that are being used for platform access.
2.2 KB
Updated widgets in main package to use the new behaviour of Mount in base to use new "nil" or nilish element.
3.5 KB
Updated widgets in main package to use the new behaviour of Mount in base to use new "nil" or nilish element.
3.3 KB
Updated widgets in main package to use the new behaviour of Mount in base to use new "nil" or nilish element.
7.4 KB
Debugging handling of up-down control on windows. Proper handling of WM_NOTIFY events in the other container controls appears to have been the problem.
1.7 KB
Updated documentation to provide information about the Cocoa port.
1.9 KB
gofmt -l -s -w .
410 B
Renaming of test functions for mounting of widgets to have uniform naming scheme.
121 B
gofmt -l -s -w .
2.3 KB
Updated widgets in main package to use the new behaviour of Mount in base to use new "nil" or nilish element.
4.6 KB
Renaming of test functions for mounting of widgets to have uniform naming scheme.
194 B
Testing for the Expand widget.
9.2 KB
Fix to updateFlex, which is used by both HBox and VBox. New code will resued the existing slice in more cases. Reuse of slice was not actually being used, so both widgets update to pass old slice of cached client info.
5.4 KB
Renaming of test functions for mounting of widgets to have uniform naming scheme.
197 B
Added a mock element, which can be used for testing layout. Presently, it is used to test calculations for MinIntrinsicWidth and MinIntrinsicWidth for HBox and VBox widgets. Renamed types to standardize (e.x. mountedHBox->hboxElement).
1.3 KB
Doc comments.
554 B
Moved a number of types into a separate package. It is not clear if this is a win for useability or not.
373 B
Renaming of test functions for mounting of widgets to have uniform naming scheme.
2.3 KB
Updated the controls example to use the new tabs control. This highlighted a use case that was missed, so insets added to the tab widget. Bugs were also found in the code for switching between tabs.
2.7 KB
Added test cases based on missing test coverage.
3.1 KB
Added the Screenshot method to the implementation of *Window on linux.
6.4 KB
Fixed a bug where grayscale images did not appear correctly. The creation of bitmaps from Go images needs to be reviewed further, as the current code will likely fail on screens without full 24 bit depth, not that there are many of those around any more. Should probably be calling CreateDIBSection to create the images.
5.1 KB
Fixed a bug where grayscale images did not appear correctly. The creation of bitmaps from Go images needs to be reviewed further, as the current code will likely fail on screens without full 24 bit depth, not that there are many of those around any more. Should probably be calling CreateDIBSection to create the images.
2.7 KB
Updated the IntInput control to include min and max fields to control the range of allowed inputs. Additionally, on windows, an updown control is now available if the range fits within an int32 (platform limitation).
4.2 KB
gofmt
1.7 KB
Implemented methods on elements so that typing could be tested on Linux. Fixed bug found in IntInput widget where the value was not being reported correctly in the callback.
9.2 KB
Fixed a bug in the IntInput widget. Relying on the window proc for the text input was causing problems because it did not play will with the subclassing used by the UDM_SETBUDDY message sent to the up down control.
876 B
Added a slider widget, with an implementation for WIN32. Implementation for GTK will need to follow. Small fixes to formatting of doc comments.
1.1 KB
Fixed a bug in the align of text in the paragraph widget. When there is a single line in a label, the justification property is not used. Added calls to set HAlign to cover this case.
1.8 KB
Need to skip the quickcheck portions of tests on some platforms, or for CI, since they take the bulk of the testing time. For one machine on WIN32, skipping these tests drops the testing time from ~50s to ~9.4. Most of the remaining time is probably still delays introduced by time.Sleep so that the results are visible on screen.
2.1 KB
Move the syscall package into internal/syscall. These packages are just shims to fill in missing APIs from other packages that are being used for platform access.
2.1 KB
Added 'Expand' widget, which can be used with the HBox and VBox widgets to distribute available space to widgets.
1.9 KB
gofmt -l -s -w .
777 B
Added inch to the units supported.
6.4 KB
Added a method to Window on windows to take a screenshot of the window and return an image.Image. Also added code so that if GOEY_SCREENSHOT is set, then window creation will save a screenshot, and then close this window. This will be used for CI.
9.4 KB
This fix finds another timing bug on Linux that was uncovered by the improved performance of loop.Do. The top-level window appears to need time to appear before it will properly process focus events.
6.0 KB
Fixed a heseinbug linked to the last kill focus message when destroying a window. Source of indeterminate behaviour was not located, but we can ensure that focus is removed before calling DestroyWindow.
21.6 KB
Debugging handling of up-down control on windows. Proper handling of WM_NOTIFY events in the other container controls appears to have been the problem.
3.1 KB
Updated widgets in main package to use the new behaviour of Mount in base to use new "nil" or nilish element.
2.6 KB
Updated widgets in main package to use the new behaviour of Mount in base to use new "nil" or nilish element.
195 B
gofmt -l -s -w .
2.7 KB
Moved a number of types into a separate package. It is not clear if this is a win for useability or not.
2.8 KB
Move the syscall package into internal/syscall. These packages are just shims to fill in missing APIs from other packages that are being used for platform access.
1.8 KB
Need to skip the quickcheck portions of tests on some platforms, or for CI, since they take the bulk of the testing time. For one machine on WIN32, skipping these tests drops the testing time from ~50s to ~9.4. Most of the remaining time is probably still delays introduced by time.Sleep so that the results are visible on screen.
3.1 KB
Move the syscall package into internal/syscall. These packages are just shims to fill in missing APIs from other packages that are being used for platform access.
1.8 KB
Updated both Progress and Slider so that they both have UpdateRange and UpdateValue methods.
1.3 KB
Moved a number of types into a separate package. It is not clear if this is a win for useability or not.
1.2 KB
Renaming of test functions for mounting of widgets to have uniform naming scheme.
2.1 KB
Factored call to CreateWindowEx, with the special error handling, into a common function.
1.2 KB
Added the Screenshot method to the implementation of *Window on linux.
2.1 KB
Added a method UpdateValue to SelectInput. The new method checks that Value is in an acceptable range based on the length of items in the widget. If necessary, Value will be clamped so that it is valid.
3.3 KB
Fixed bug with focus and blur events for the SelectInput on linux. This control is a container, and focus and blur events need to be attached to the child.
1.6 KB
Renaming of test functions for mounting of widgets to have uniform naming scheme.
5.4 KB
Revised handling of WM_COMMAND messages.
2.3 KB
Updated the IntInput control to include min and max fields to control the range of allowed inputs. Additionally, on windows, an updown control is now available if the range fits within an int32 (platform limitation).
3.9 KB
Move the syscall package into internal/syscall. These packages are just shims to fill in missing APIs from other packages that are being used for platform access.
2.6 KB
Renaming of test functions for mounting of widgets to have uniform naming scheme.
6.1 KB
Fixed a bug where grayscale images did not appear correctly. The creation of bitmaps from Go images needs to be reviewed further, as the current code will likely fail on screens without full 24 bit depth, not that there are many of those around any more. Should probably be calling CreateDIBSection to create the images.
3.4 KB
Merge.
5.7 KB
Merge.
1.0 KB
Renaming of test functions for mounting of widgets to have uniform naming scheme.
10.5 KB
Debugging handling of up-down control on windows. Proper handling of WM_NOTIFY events in the other container controls appears to have been the problem.
2.0 KB
Adjusted testing code to suppress error from Placeholder on linux. Unfortunately, placeholders are not supported by GtkTextView.
5.6 KB
When updating the event callbacks for TextArea, the incorrect callback was being set.
1.4 KB
Testing for OnChange on OnEnterKey events for textarea and textinput.
3.0 KB
Fixed a bug in the IntInput widget. Relying on the window proc for the text input was causing problems because it did not play will with the subclassing used by the UDM_SETBUDDY message sent to the up down control.
1.8 KB
Added a slider widget, with an implementation for WIN32. Implementation for GTK will need to follow. Small fixes to formatting of doc comments.
3.5 KB
Moved a number of types into a separate package. It is not clear if this is a win for useability or not.
3.6 KB
Need to skip the quickcheck portions of tests on some platforms, or for CI, since they take the bulk of the testing time. For one machine on WIN32, skipping these tests drops the testing time from ~50s to ~9.4. Most of the remaining time is probably still delays introduced by time.Sleep so that the results are visible on screen.
5.8 KB
Fixed a bug in the IntInput widget. Relying on the window proc for the text input was causing problems because it did not play will with the subclassing used by the UDM_SETBUDDY message sent to the up down control.
10.2 KB
Fix to updateFlex, which is used by both HBox and VBox. New code will resued the existing slice in more cases. Reuse of slice was not actually being used, so both widgets update to pass old slice of cached client info.
6.6 KB
Renaming of test functions for mounting of widgets to have uniform naming scheme.
197 B
Added a mock element, which can be used for testing layout. Presently, it is used to test calculations for MinIntrinsicWidth and MinIntrinsicWidth for HBox and VBox widgets. Renamed types to standardize (e.x. mountedHBox->hboxElement).
6.4 KB
Fixed a bug in the IntInput widget. Relying on the window proc for the text input was causing problems because it did not play will with the subclassing used by the UDM_SETBUDDY message sent to the up down control.
15.2 KB
Timing bug when typing.
5.9 KB
Fixed a bug in the IntInput widget. Relying on the window proc for the text input was causing problems because it did not play will with the subclassing used by the UDM_SETBUDDY message sent to the up down control.

Goey

Package goey provides a declarative, cross-platform GUI for the Go language. The range of controls, their supported properties and events, should roughly match what is available in HTML. However, properties and events may be limited to support portability. Additionally, styling of the controls will be limited, with the look of controls matching the native platform.

Documentation Go Report Card Windows Build Status

Install

The package can be installed from the command line using the go tool. However, depending on your OS, please check for special instructions below.

go get bitbucket.org/rj/goey

Windows

No special instructions are required to build this package on windows. CGO is not used.

Linux

Although this package does not use CGO, some of its dependencies do. The build machine also requires that GTK+ 3 is installed. This should be installed before issuing go get or you will have error messages during the building of some of the dependencies.

On Ubuntu:

sudo apt-get install libgtk-3-dev

MacOS

There is a in-progress port for Cocoa. It is currently being developped using GNUstep on Linux, but has been developped based on documentation from Apple. All controls, except for the date control (which is not available in GNUstep), are implemented. However, additional testing, especially on Darwin, is still required.

Getting Started

  • Package documentation and examples are on godoc.
  • The minimal GUI example application is onebutton, and additional example applications are in the example folder.
  • A mock widget is provided in the mock package (documentation).

Windows

To get properly themed controls, a manifest is required. Please look at the source code for the example applications for an example. The manifest needs to be compiled with github.com/akavel/rsrc to create a .syso that will be recognize by the go build program. Additionally, you could use build flags (-ldflags="-H windowsgui") to change the type of application built.

Screenshots

Windows Linux (GTK)
Screenshot Screenshot
Screenshot Screenshot
Screenshot Screenshot
Screenshot Screenshot
Screenshot Screenshot
Screenshot Screenshot
Screenshot Screenshot
Screenshot Screenshot

Contribute

Feedback and PRs welcome.

In particular, if anyone has the expertise to provide a port for MacOS, that would provide support for all major desktop operating systems.

License

BSD © Robert Johnstone