This repository has been archived on 2023-08-08. You can view files and clone it, but cannot push or open issues or pull requests.
tomo-old/window.go

62 lines
2.0 KiB
Go
Raw Normal View History

2023-03-30 21:19:04 -06:00
package tomo
import "image"
import "git.tebibyte.media/sashakoshka/tomo/data"
// Window represents a top-level container generated by the currently running
// backend. It can contain a single element. It is hidden by default, and must
// be explicitly shown with the Show() method.
type Window interface {
// Adopt sets the root element of the window. There can only be one of
// these at one time.
Adopt (Element)
// Child returns the root element of the window.
Child () Element
// SetTitle sets the title that appears on the window's title bar. This
// method might have no effect with some backends.
SetTitle (string)
// SetIcon taks in a list different sizes of the same icon and selects
// the best one to display on the window title bar, dock, or whatever is
// applicable for the given backend. This method might have no effect
// for some backends.
SetIcon (sizes []image.Image)
// NewModal creates a new modal dialog window.
NewModal (width, height int) (window Window, err error)
// Copy puts data into the clipboard.
Copy (data.Data)
// Paste requests the data currently in the clipboard. When the data is
2023-03-27 18:44:39 -06:00
// available, the callback is called with the clipboard data. If there
// was no data matching the requested mime type found, nil is passed to
// the callback instead.
Paste (callback func (data.Data, error), accept ...data.Mime)
// Show shows the window. The window starts off hidden, so this must be
// called after initial setup to make sure it is visible.
Show ()
// Hide hides the window.
Hide ()
// Close closes the window.
Close ()
// OnClose specifies a function to be called when the window is closed.
OnClose (func ())
}
// MainWindow is a window capable of owning multiple sub-windows.
type MainWindow interface {
Window
// NewPanel creates a panel window that is semantically tied to this
// window. This is intended to be used for utility windows, tool bars,
// torn-off menus, etc.
NewPanel (width, height int) (window Window, err error)
}