Go to file
Pietro Gagliardi e032807546 Copied all the handler-based stuff to a ZIP file as I'm rolling it all back. 2014-06-30 09:56:48 -04:00
experiments Copied all the handler-based stuff to a ZIP file as I'm rolling it all back. 2014-06-30 09:56:48 -04:00
olddocs Removed stable.md (it is no longer relevant) and moved redoproposal.md to olddocs/ since it's now being implemented. 2014-06-29 09:33:00 -04:00
test Made the "Title and Text" message box parented like it should have been. This will also allow me to evaluate what happens if message boxes that are parented are closed in non-reverse order. 2014-06-29 17:36:37 -04:00
tools Made adjustments to the output of windowsconstgen to please go fmt. 2014-06-10 09:46:00 -04:00
LICENSE Added license and README. 2014-02-17 18:38:50 -05:00
README.md Updated README. 2014-06-27 17:32:40 -04:00
area.go Began the migration to the new API. Removed locks from the public control APIs; they won't be needed anymore. 2014-06-28 01:05:06 -04:00
area_darwin.go More go fmt. That completes the main package go fmt. Won't bother with test or tools. 2014-06-10 16:05:41 -04:00
area_darwin.m Fixed Command key up on Mac OS X. This fix also fixes Help key down, so remove the workaround there. 2014-06-07 18:17:29 -04:00
area_unix.go More go fmt. 2014-06-10 15:43:01 -04:00
area_windows.go More go fmt. 2014-06-10 15:31:55 -04:00
button.go Fixed the build. New API works on Windows! Also removed TODO on dialogs in Windows since I can't reproduce the weird behavior anymore; I guess the new code fixes it. 2014-06-28 16:37:55 -04:00
callbacks_unix.go Migrated the GTK+ backend to the new API. 2014-06-28 21:40:44 -04:00
checkbox.go Began the migration to the new API. Removed locks from the public control APIs; they won't be needed anymore. 2014-06-28 01:05:06 -04:00
combobox.go Began the migration to the new API. Removed locks from the public control APIs; they won't be needed anymore. 2014-06-28 01:05:06 -04:00
combobox_darwin.m Removed Mac OS X 10.6 support. Quite a hassle that version was... 2014-06-11 14:58:39 -04:00
comctl_windows.go More go fmt. 2014-06-10 14:59:39 -04:00
common_windows.go added Center function to window 2014-06-11 11:41:31 +02:00
compatibility.md Added Mac OS X 10.8 and 10.9 to compatibility.md. 2014-06-12 01:21:05 -04:00
control.go Began the work for moving everything to the new control sizing system. 2014-06-25 22:07:37 -04:00
controls_windows.go More go fmt. 2014-06-10 14:59:39 -04:00
controlsize.go Changed the commit order in controlsize.go to be from right to left rather than from left to right; this will make the label positioning calculations on Mac OS X make sense. 2014-06-26 03:37:16 -04:00
controlsize_darwin.go Fixed label alignment on Mac OS X for real now. 2014-06-26 10:06:58 -04:00
controlsize_unix.go Applied the new control sizing system to the GTK+ backend. 2014-06-25 23:44:22 -04:00
controlsize_windows.go Migrated controlsize_windows.go and stdwndclass_windows.go to the new API. 2014-06-28 07:25:42 -04:00
d32 cgo inserts -m32 automatically, so we don't need to in ./d32. 2014-03-08 17:32:56 -05:00
delegate_darwin.go Migrated the Mac OS X delegate code to the new API. 2014-06-29 03:09:01 -04:00
delegateuitask_darwin.m More of the same conversion. 2014-06-29 10:45:46 -04:00
dialog.go Fixed the build. New API works on Windows! Also removed TODO on dialogs in Windows since I can't reproduce the weird behavior anymore; I guess the new code fixes it. 2014-06-28 16:37:55 -04:00
dialog_darwin.go More dialog_darwin.go/.m conversion. 2014-06-29 10:44:03 -04:00
dialog_darwin.m FIxed compilation errors in the Mac OS X build. It works, but I still need to fix dialogs before I can push anything. 2014-06-29 14:08:01 -04:00
dialog_unix.go Migrated the GTK+ backend to the new API. 2014-06-28 21:40:44 -04:00
dialog_windows.go Fixed the build. New API works on Windows! Also removed TODO on dialogs in Windows since I can't reproduce the weird behavior anymore; I guess the new code fixes it. 2014-06-28 16:37:55 -04:00
doc.go Cleaned up the scrollbars documentation in the Overview. 2014-06-09 22:37:43 -04:00
events_darwin.go More go fmt. 2014-06-10 14:35:26 -04:00
events_notdarwin.go More go fmt. 2014-06-10 14:33:48 -04:00
futureplans.md Fixed README and removed Checkbox.SetChecked() from the future plans. 2014-06-26 22:04:01 -04:00
grid.go Began the migration to the new API. Removed locks from the public control APIs; they won't be needed anymore. 2014-06-28 01:05:06 -04:00
gtk_unix.h Moved <stdlib.h> includes in the GTK+ backend to gtk_unix.h; organized that file a bit. 2014-04-01 16:01:49 -04:00
gtkcalls_unix.go Added Checkbox.SetChecked() and implemented it on GTK+. 2014-06-26 21:36:46 -04:00
gtkcasts_unix.go Removed the extra #cgo directives from the Unix files. cgo collects directives from ALL files, rather than using each file's directive individually, so having them combined like this is pointless. Instead, the #cgo directives are (or is, since there's only one) in uitask_unix.go. Will do the same for Mac next; this will help since we're going to add a CFLAGS value afterward. 2014-05-19 22:32:38 -04:00
init.go Fixed the build. New API works on Windows! Also removed TODO on dialogs in Windows since I can't reproduce the weird behavior anymore; I guess the new code fixes it. 2014-06-28 16:37:55 -04:00
init_windows.go More go fmt. 2014-06-10 13:10:59 -04:00
label.go Began the migration to the new API. Removed locks from the public control APIs; they won't be needed anymore. 2014-06-28 01:05:06 -04:00
layout.go Remove padding and margin from layout.go 2014-06-26 15:37:19 -03:00
lineedit.go Began the migration to the new API. Removed locks from the public control APIs; they won't be needed anymore. 2014-06-28 01:05:06 -04:00
listbox.go Began the migration to the new API. Removed locks from the public control APIs; they won't be needed anymore. 2014-06-28 01:05:06 -04:00
listbox_darwin.go More go fmt. 2014-06-10 11:38:52 -04:00
listbox_darwin.m Removed Mac OS X 10.6 support. Quite a hassle that version was... 2014-06-11 14:58:39 -04:00
listbox_unix.go More go fmt. 2014-06-10 11:33:53 -04:00
objc_darwin.go Same as previous commit, but for Mac OS X now. The #cgo directives are in uitask_darwin.go. 2014-05-19 22:52:59 -04:00
objc_darwin.h More dialog_darwin.go/.m conversion. 2014-06-29 10:44:03 -04:00
objc_darwin.m Removed Mac OS X 10.6 support. Quite a hassle that version was... 2014-06-11 14:58:39 -04:00
prefsize_darwin.m Fixed label alignment on Mac OS X for real now. 2014-06-26 10:06:58 -04:00
progressbar.go Began the migration to the new API. Removed locks from the public control APIs; they won't be needed anymore. 2014-06-28 01:05:06 -04:00
stack.go Began the migration to the new API. Removed locks from the public control APIs; they won't be needed anymore. 2014-06-28 01:05:06 -04:00
stdfont_windows.go More go fmt. 2014-06-10 11:12:32 -04:00
stdwndclass_windows.go Migrated controlsize_windows.go and stdwndclass_windows.go to the new API. 2014-06-28 07:25:42 -04:00
sysdata.go Implemented the new events in the portable code. 2014-06-28 01:57:07 -04:00
sysdata_darwin.go FIxed compilation errors in the Mac OS X build. It works, but I still need to fix dialogs before I can push anything. 2014-06-29 14:08:01 -04:00
sysdata_darwin.m Implemented Checkbox.SetChecked() on Mac OS X and updated the README. 2014-06-26 21:54:14 -04:00
sysdata_unix.go Migrated the GTK+ backend to the new API. 2014-06-28 21:40:44 -04:00
sysdata_windows.go Fixed the build. New API works on Windows! Also removed TODO on dialogs in Windows since I can't reproduce the weird behavior anymore; I guess the new code fixes it. 2014-06-28 16:37:55 -04:00
tableviewproposal.md Switched TableView proposal from <tt>...</tt> to <tt><ins>...</ins></tt> to make those parts distinct from code blocks. 2014-05-08 16:38:46 -04:00
test.sh Corrected the environment in windowsconstgen.go so that we can run it from test.sh. Phew! 2014-05-25 16:50:52 -04:00
todo.md More TODOs. 2014-06-29 23:21:16 -04:00
uitask_darwin.go FIxed compilation errors in the Mac OS X build. It works, but I still need to fix dialogs before I can push anything. 2014-06-29 14:08:01 -04:00
uitask_unix.go Migrated the GTK+ backend to the new API. 2014-06-28 21:40:44 -04:00
uitask_windows.go Fixed the build. New API works on Windows! Also removed TODO on dialogs in Windows since I can't reproduce the weird behavior anymore; I guess the new code fixes it. 2014-06-28 16:37:55 -04:00
window.go Fixed the build. New API works on Windows! Also removed TODO on dialogs in Windows since I can't reproduce the weird behavior anymore; I guess the new code fixes it. 2014-06-28 16:37:55 -04:00
zconstants_windows_386.go Fixed the build. New API works on Windows! Also removed TODO on dialogs in Windows since I can't reproduce the weird behavior anymore; I guess the new code fixes it. 2014-06-28 16:37:55 -04:00
zconstants_windows_amd64.go Fixed the build. New API works on Windows! Also removed TODO on dialogs in Windows since I can't reproduce the weird behavior anymore; I guess the new code fixes it. 2014-06-28 16:37:55 -04:00

README.md

Note to ALL users: please read and comment; the design of the package is fatally flawed but I want to know what people think of the fix.

Note to Mac users: there is a bug in Go 1.3 stable that causes cgo to crash trying to build this package. Please follow the linked bug report for detials.

Woah, lots of attention! Thanks!

Updates

  • 26 June 2014

    • Controls in Windows can now be spaced apart more naturally. Call w.SetSpaced(true) to opt in. Whether this will remain opt-in or whether the name will change is still unknown at this point.
    • There's a new function Layout() which provides high-level layout creation. The function was written by boppreh and details can be found here. Whether this function will stay in the main package or be moved to a subpackage is still unknown.
    • There is now Checkbox.SetChecked() to set the check state of a Checkbox programmatically.
  • 25 June 2014
    Labels by default now align themselves relative to the control they are next to. There is a new function NewStandaloneLabel() which returns a label whose text is aligned to the top-left corner of the alloted space regardless.

  • 11 June 2014
    I have decided to remove Mac OS X 10.6 support because it's only causing problems for building (and everyone else says I should anyway, including Mac developers!). This does break my original goal, but I'm going to have to break things sooner or later. Please let me know if any of you actually use this package on 10.6. (I personally don't like it when programs require 10.7 (or iOS 7, for that matter), but what are you gonna do?)

README

This is a placeholder README; the previous file (olddocs/oldREADME.md) was rather long and confusing. I'll be rewriting it properly soon.

Until then, here's the important things you need to know:

  • this package is very much incomplete; see stable.md for a list of what is guaranteed to not change at the API level — for everything newer, you have been warned!
  • this package requires Go 1.3, which is presently available as a RC build (source builds from go tip will work too)
    • I don't think the Windows side uses any Go 1.3 features, but just to be safe I'm going to say express caution
    • Unix builds need 1.3 to fix some type-checker bugs in cgo
    • Mac OS X builds need 1.3 because Go 1.3 adds Objective-C support to cgo
  • the Windows build does not need cgo unless you want to regenerate the zconstants_windows_*.go files; the other targets do
  • my plan is to target all versions of OSs that Go itself supports. I will, however, make concessions where appropriate. This means:
    • Windows: Windows XP or newer
    • Unix: this is trickier; I decided to settle on GTK+ 3.4 or newer as Ubuntu 12.04 LTS ships with it
    • Mac OS X: Mac OS X 10.7 or newer (Go supports 10.6 but this is a pain to compile Cocoa programs for due to flaws in the later header files)
  • for the Windows build, you won't need to provide a comctl32.dll version 6 manifest, as the package produces its own
    • comctl32.dll version 6 is required for proper functioning!

andlabs/wakeup is a repository that provides a sample application.

If you are feeling adventurous, running ./test.sh (which accepts go build options) from within the package directory will build a test program which I use to make sure everything works. (I'm not sure how to do automated tests for a package like this, so go test will say no tests found for now; sorry.) If you are cross-compiling to Windows, you will need to have a very specific Go setup which allows multiple cross-compilation setups in a single installation; this requires a CL which won't be in Go 1.3 but may appear in Go 1.4 if accepted and both windows/386 and windows/amd64 set up for cgo. (This is because ./test.sh on Windows targets invariably regenerates the zconstants_windows_*.go files; there is no option to turn it off lest I become complacent and use it myself.)

Finally, please send documentation suggestions! I'm taking the documentation of this package very seriously because I don't want to make anything ambiguous. (Trust me, ambiguity in API documentation was a pain when writing this...)

Thanks!

(Note: I temporarily disabled Travis.ci; if I can figure out how to do good cross-compiles with it, then I can put it back.)

Screenshots

You asked for them; here they are.

Image Description
The test program on Windows 7
The test program on Mac OS X 10.8
The test program on Ubuntu 14.04 with KDE and the oxygen-gtk theme