Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Title Page
Copyright and Credits
Hands-On GUI Application Development in Go
About Packt
Why subscribe?
Packt.com
Contributors
About the author
About the reviewer
Packt is searching for authors like you
Preface
Who this book is for
What this book covers
To get the most out of this book
Download the example code files
Conventions used
Get in touch
Reviews
Section 1: Graphical User Interface Development
The Benefits of Native Graphical Applications
Return of the graphical application
Personal computers
From desktop to internet
Smart phones, apps, and customer retention
Native performance
Integrated user experience
Reliability and offline functionality
Maintainability and testing
Summary
Graphical User Interface Challenges
Standard look and feel or app theme
GUIs and visual hierarchy
Multiple documents
Accessory windows
Visual hierarchy
Mobile standards
Concurrency and multi-threading
Switching threads
Avoiding complexity
Web services and cloud integration
Communications
Data parsing
Standard components
Developing for multiple platforms
Cross-platform APIs
Icons and design
Testing
Packaging and distribution
Summary
Go to the Rescue!
Introduction
Cross-platform for any application
Cross-compiling
Standard library
Concurrency in language design
Goroutines
Channels
The sync package
Web services included as standard
Choosing your look and feel
Summary
Section 2: Toolkits Using Existing Widgets
Walk - Building Graphical Windows Applications
Background and aims
Get started with walk
Setup
Code
Build
Run
Benefits of a declarative API
Compared with the native API
Using both APIs for flexibility
Building a user interface
Style
Layout
Toolbar and menu
Communicating with the GUI
View model
Detail view
List view
Background processing
Walk in a cross-platform application
Summary
andlabs UI - Cross-platform Native UIs
Background and history
Getting started with andlabs UI
Prerequisites
Microsoft windows
macOS
Linux
Setup
Rebuilding the UI library (workaround)
Code
Build
Run
Generic API for multiple platforms
Controls
Box
Containers
Widgets
Menu
Area and drawing
Building a user interface
Style
Layout
Main email window
Email compose dialog
Toolbar and menu
Communicating with the GUI
Background processing
Example
Challenges with multiple native GUIs
Consistent style
Brand styles
User experience
Testing
Cross-compilation
Building for Linux on macOS or windows
macOS
Windows
Building for windows on Linux or macOS
Building for macOS on Linux or Windows
A better solution
Summary
Go-GTK - Multiple Platforms with GTK
GTK+ background
Getting started with Go-GTK
Prerequisites
Installing GTK+
macOS
Windows
Linux
Install Go-GTK
Build
Run
Signals and namespaces
Signals
Passing data
Namespaces
Sample application
Layout
Compose layout
Signaling
Thread handling
Cross compilation
Theming
Summary
Go-Qt - Multiple Platforms with Qt
Qt background
Getting started with therecipe/qt
Prerequisites
Preparing CGo
Installing Qt
macOS
Windows
Linux
License / Qt account
Installing qt (the bindings)
Build
Run
Object model and event handling
Inheritance
Memory management
Signals and slots
Sample application
Layout
The compose layout
Signalling
Thread handling
Cross-compilation
Theming
Summary
Section 3: Modern Graphical Toolkits
Shiny - Experimental Go GUI API
Background and the vision for Shiny
Design and supported platforms
Architecture
Lower layer
Higher layer
Supported platforms
Drivers currently included
Getting started with Shiny
Setup
Example
Cross-compiling
Cross-compiling for macOS
Widgets and material design
Design
Icons
Themes
Widgets
Getting started continued
Code
Supporting code
Build and Run
Building a user interface
Design
Layout
Navigation
File list
Image view
Communicating with the GUI
Background processing
Summary
nk - Nuklear for Go
Background and design of Nuklear
Rendering and platform support
Rendering modules
Supported platforms
Getting started with nk
Prerequisites
Linux
macOS and Windows
Android
Setup
Example
Code
Build and run
Cross-compiling
Widgets, layout, and skinning
Widgets
Layout
NkLayoutRow
NkLayoutRowTemplate
NkLayoutSpace
Drawing
Command queue
Draw functions
Skinning
Building a user interface
Layout
Main email window
Email compose dialog
Toolbar and menu
Communicating with the GUI
Background processing
Summary
Fyne - Material Design-Based GUI
Background and vision for Fyne
Getting started with Fyne
Prerequisites
Linux
macOS
Setup
Example
Code
Build and run
Cross compiling
Rendering and vector graphics
Vector graphics
Drivers
Supported platforms
Canvas, widgets, and layouts
Canvas (drawing)
Layout
Widgets
Themes
Packaged themes
Building a user interface
Layout
Main email window
Compose dialog
Toolbar and menu
Communicating with the GUI
Loading emails
Sending email
Background processing
Building an image viewer
Layout
Navigation
File listing
Image view
Communicating with the GUI
Background processing
Summary
Section 4: Growing and Distributing Your Application
Navigation and Multiple Windows
Planning application layout
Standard layouts
Device form factors
Responsive or adaptive design
Custom layouts
Navigating your application
Progressive disclosure
Example 1 – Microsoft Edge
Example 2 – Skyscanner flight search
Menus and toolbars
Toolbar
Menu 
Multiple windows
Window types and keeping things clean
Standard dialogs
Modal windows
Window hints
Sizes
Other hints
Notifications and task status
Minor alerts
Background progress
Platform-specific considerations
Window grouping
Application instances
Extra features
Summary
Concurrency, Networking, and Cloud Services
Concurrency, threads, and GUI updates
Managing long-running processes
Signaling shutdown
Checking completion
Communicating through channels
Graphical updates from goroutines
Network resources and caching
Loading remote resources
Images
JSON
Caching resource data
Connecting to cloud services
Encoding
JSON
XML
Authentication – OAuth 2.0
First request
Storing tokens
Posting data
GUI integration
Incoming messages
Activity notifications
Spinner
Status panel
Consistent user experience when offline
Caching responses
Queuing actions
Starting offline
Summary
Best Practices in Go GUI Development
Separation of concerns
Suggested application structure
Test-driving UI development
Designed to be testable
Example application test
Continuous integration for GUIs
Approaches to GUI test automation
Avoiding external dependencies
Managing platform specifics
Summary
Distributing Your Application
Metadata and icons
Application icon
Describing your app
Bundling assets
go-bindata
packr
rsrc
fyne bundle
Building a release
Preparing
Compiler installation
Building
Packaging
Linux
Create metadata files
Packaging release
macOS
Creating metadata files
Packaging release
Windows
Creating metadata files
Packaging release
Cross-platform packaging tools
fyne package
Distributing to platform marketplaces
Mac App Store
Packaging
Uploading
Reviewing
Microsoft Store
Packaging
Uploading
Reviewing
Linux package manager
Debian (.deb)
Packaging
Distribution
Red Hat (.rpm)
Packaging
Distribution
Tarball (.tar.gz)
Arch Linux
Gentoo Linux
Others
Containers
Summary
Installation Details
Installing Go
Microsoft Windows
Git
Go
Environment
Apple macOS
Linux
Setting up Cgo
Microsoft Windows
Apple macOS
Linux
Cross Compiler Setup
Cross compiling for macOS with CGo
To macOS from Linux or Windows
Cross compiling for Windows with CGo
To Windows from macOS
To Windows from Linux
Cross compiling for Linux with CGo
To Linux from macOS
To Linux from Windows
Comparison of GUI Toolkits
Connecting GoMail to a Real Email Server
Download Gmail credentials
Creating a server provider
Downloading inbox messages
Sending messages
Listening for new messages
Updating an example to use Gmail
Other Books You May Enjoy
Leave a review - let other readers know what you think
← Prev
Back
Next →
← Prev
Back
Next →