github.com/utopiagio/gio@v0.0.8/app/doc.go (about)

     1  // SPDX-License-Identifier: Unlicense OR MIT
     2  
     3  /*
     4  Package app provides a platform-independent interface to operating system
     5  functionality for running graphical user interfaces.
     6  
     7  See https://github.com/utopiagio/gio for instructions to set up and run Gio programs.
     8  
     9  # Windows
    10  
    11  A Window is run by calling its Event method in a loop. The first time a
    12  method on Window is called, a new GUI window is created and shown. On mobile
    13  platforms or when Gio is embedded in another project, Window merely connects
    14  with a previously created GUI window.
    15  
    16  The most important event is [FrameEvent] that prompts an update of the window
    17  contents.
    18  
    19  For example:
    20  
    21  	w := new(app.Window)
    22  	for {
    23  		e := w.Event()
    24  		if e, ok := e.(app.FrameEvent); ok {
    25  			ops.Reset()
    26  			// Add operations to ops.
    27  			...
    28  			// Completely replace the window contents and state.
    29  			e.Frame(ops)
    30  		}
    31  	}
    32  
    33  A program must keep receiving events from the event channel until
    34  [DestroyEvent] is received.
    35  
    36  # Main
    37  
    38  The Main function must be called from a program's main function, to hand over
    39  control of the main thread to operating systems that need it.
    40  
    41  Because Main is also blocking on some platforms, the event loop of a Window must run in a goroutine.
    42  
    43  For example, to display a blank but otherwise functional window:
    44  
    45  	package main
    46  
    47  	import "github.com/utopiagio/gio/app"
    48  
    49  	func main() {
    50  		go func() {
    51  			w := app.NewWindow()
    52  			for {
    53  				w.Event()
    54  			}
    55  		}()
    56  		app.Main()
    57  	}
    58  
    59  # Permissions
    60  
    61  The packages under github.com/utopiagio/gio/app/permission should be imported
    62  by a Gio program or by one of its dependencies to indicate that specific
    63  operating-system permissions are required.  Please see documentation for
    64  
    65  package github.com/utopiagio/gio/app/permission for more information.
    66  */
    67  
    68  
    69  package app