package elements 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 // 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) }