LET'S GET THIS FINAL REWRITE EVER STARTED

This commit is contained in:
Pietro Gagliardi 2015-12-11 20:37:59 -05:00
parent e34c561ed5
commit f8e3f12ab0
146 changed files with 16 additions and 85 deletions

View File

@ -1,57 +1,23 @@
# ui: platform-native GUI library for Go
## NOTE
This is a library that aims to provide simple GUI software development in Go.
ui is currently being rewritten for stability. The guts of the package will now be in C. For progress updates, see [the new repo for the C backend](https://github.com/andlabs/libui/).
It is based on my [libui](https://github.com/andlabs/libui), a simple cross-platform library that does the same thing, but written in C. **You must include this library in your binary distributions.**
## Feature requests wanted! (Really; IDK what to add next!)
It runs on/requires:
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](http://mingw-w64.sourceforge.net/) 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.
- Windows: cgo, Windows Vista and newer
- 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.
TODO figure out the minimum required version of Go
(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.
# Installation
# Documentation
The in-code documentation needs improvement. I have written a [tutorial](https://github.com/andlabs/ui/wiki/Getting-Started) in the Wiki.
# Updates
**21 February 2015**<br>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**<br>ImageList is now gone; you simply store `*image.RGBA`s 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**<br>TextFields can now be marked as read-only (non-editable). Textboxes will gain this ability soon.
**4 November 2014**<br>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**<br>Mac OS X resizing issues should be (mostly?) fixed now. Textbox still doesn't work right...
**24 October 2014**<br>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**<br>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**<br>The new GtkGrid-style Grid is now implemented! See its documentation for more details. Also, debugging spew has been removed.
**31 August 2014**<br>Grid is now renamed SimpleGrid in preparation for implementing a more [GtkGrid](https://developer.gnome.org/gtk3/unstable/GtkGrid.html)-like Grid. Mind the change.
# Screenshots
The example widget gallery on GTK+ in the Adwaita theme (3.13/master):
![widget gallery example](https://raw.githubusercontent.com/andlabs/ui/master/examples/widgetgallery/widgetgallery.png)

View File

@ -1,22 +1,6 @@
# Useful things in newer versions
## Windows
### Windows Vista
http://channel9.msdn.com/blogs/pdc2008/pc43 (end of video talks about passwords and LockSetForegroundWindow()?)
- **buffered paintaing**
- cross-fade animation functions
- list view tiles
- list view group expansions: **collapsible**, subtitles, footers, help links
- video has more group issues (I had some with winiconview..)
- cue banners in combo boxes and list views ("empty markup")
- links for the latter
- alpha-blended menu bitmaps
- 256x256 icons and smoother icon scaling algorithms involving scaling down from a larger size instead of scaling up to a larger size
- `SHDefExtractIcon()` does this for you AND still works on XP
- **TaskDialog**
- **cue banners actually work properly regardless of East Asian language support**
### Windows 7
http://channel9.msdn.com/blogs/pdc2008/pc43
@ -30,6 +14,8 @@ TODO look up PDC 2008 talk "new shell user interface"
### Windows 8.1
### Windows 10
## GTK+
TODO what ships with Ubuntu Quantal (12.10)?
@ -93,36 +79,11 @@ not yet in Ubuntu Utopic (14.10)
- GtkTextView: extend-selection
- GtkTextView: font fallbacks
### GTK+ 3.18
### GTK+ 3.20
## Cocoa
### Mac OS X 10.7
- Foundation ([full details](https://developer.apple.com/library/mac/releasenotes/Foundation/RN-FoundationOlderNotes/#//apple_ref/doc/uid/TP40008080-TRANSLATED_CHAPTER_965-TRANSLATED_DEST_0))
- can use [ClassName class] == nil to test for feature existence at class level
- NSUserDefaults is now thread-safe and respects user IDs
- NSProcessInfo is now thread-safe
- NSProcessInfo has automatic termination; might want to watch for this
- NSLinguisticTrigger
- NSCalendar changes (important for date/time pickers)
- AppKit ([full details](https://developer.apple.com/library/mac/releasenotes/AppKit/RN-AppKitOlderNotes/#X10_7Notes)
- Cocoa decides when to draw focus rings
- lots of resolution independence stuff
- window edge resize/live resize
- restorable state
- toolbar versioning
- better scroll wheel management
- multi-image dragging (TODO didn't GTK+ add this too)
- built-in full screen (TODO what was fullscreen like before?)
- NSTextFinder for a standard search for text bar
- NSPasteboard: no longer need to invoke -[NSPasteboard types]
- NSPasteboards use UTIs for type information
- NOTE FROM LEOPARD: full-width cells, source lists
- view-based NSTableViews and NSOutlineViews
- URLs returned may not be file:// anymore! TODO note in futureplans.md
- **NSPopover**
- vertical text support improved
- **placeholder text in NSTextField now shown when focused**
- NSTextView now has an optional formatting bar
### Mac OS X 10.8
- Foundation ([full details](https://developer.apple.com/library/mac/releasenotes/Foundation/RN-FoundationOlderNotes/#//apple_ref/doc/uid/TP40008080-TRANSLATED_CHAPTER_965-TRANSLATED_DEST_999B))
@ -167,3 +128,7 @@ not yet in Ubuntu Utopic (14.10)
- NSAppearance
- **-[NSTableView moveRowAtIndex:toIndex:] bug regarding first responders fixed**
- view-specific RTL overrides
### Mac OS X 10.10
### Mac OS X 10.11

View File

View File

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

Some files were not shown because too many files have changed in this diff Show More