import "pinafore-gnome"


GNOME file access.

type File.GIO.

A file.

URI.File.GIO. : Text. -> File.GIO.

Construct a file from a URI.

Path.File.GIO. : Text. -> File.GIO.

Construct a file from a local path.

makeRef.File.GIO. : File.GIO. -> Action. (WholeModel. MIME.)

Make a reference from a file.


User interface, using GTK.


type Widget.GTK.

A user interface widget is something that goes inside a window.

type Layout.Widget.GTK.

A widget in the context of a layout.

subtype Widget.GTK. <: Layout.Widget.GTK.

exec.Widget.GTK. : Action. Widget.GTK. -> Widget.GTK.

A widget that runs an Action first.

withContext.Widget.GTK. : (Context.GTK. -> Widget.GTK.) -> Widget.GTK.

A widget that requires a Context.

notifySelection.Widget.GTK. : (Action. TextModel. -> Action. Unit.) -> Widget.GTK. -> Widget.GTK.

Notify whenever the selection changes.

owned.Widget.GTK. : Widget.GTK. -> Widget.GTK.

Run actions caused by this widget in the window’s lifecycle.

blank.Widget.GTK. : Widget.GTK.

Blank widget

image.Widget.GTK. : WholeModel. +Image. -> Widget.GTK.

A widget for an image

unitCheckBox.Widget.GTK. : WholeModel. +Text. -> WholeModel. Unit. -> Widget.GTK.


checkBox.Widget.GTK. : WholeModel. +Text. -> WholeModel. Boolean. -> Widget.GTK.

Checkbox. Use shift-click to set to unknown.

textEntry.Widget.GTK. : WholeModel. Text. -> Widget.GTK.

Text entry, unknown reference will be interpreted as empty text, but the widget will not delete the reference.

textArea.Widget.GTK. : TextModel. -> Widget.GTK.

Text area, unknown reference will be interpreted as empty text, but the widget will not delete the reference.

label.Widget.GTK. : WholeModel. +Text. -> Widget.GTK.


horizontal.Widget.GTK. : List. Layout.Widget.GTK. -> Widget.GTK.

Widgets laid out horizontally.

vertical.Widget.GTK. : List. Layout.Widget.GTK. -> Widget.GTK.

Widgets laid out vertically.

layoutGrow.Widget.GTK. : Layout.Widget.GTK. -> Layout.Widget.GTK.

Allow the widget to expand into remaining space within the layout.

notebook.Widget.GTK. : WholeModel. -Integer. -> List. (Widget.GTK. *: Widget.GTK.) -> Widget.GTK.

A notebook of pages. First of each pair is for the page tab (typically a label), second is the content.

button.Widget.GTK. : WholeModel. +Text. -> WholeModel. +(Action. Any) -> Widget.GTK.

A button with this text that does this action. Button will be disabled if the action reference is unknown.

pick.Widget.GTK. : WholeModel. +(List. ((Entity. & a) *: Text.)) -> WholeModel. {a,+Entity.} -> Widget.GTK.

A drop-down menu.

list.Widget.GTK. : (WholeModel. +a -> Widget.GTK.) -> ListModel. +a -> Widget.GTK.

A dynamic list of widgets.

listTable.Widget.GTK. : List. (WholeModel. +Text. *: (a -> WholeModel. +Text.)) -> ListModel. {+Entity.,+a} -> (a -> Action. Any) -> Maybe. (WholeModel. {a,+Entity.}) -> Widget.GTK.

A list table. First arg is columns (name, property), second is list-reference of items, third is the action for item activation, fourth is an optional reference for the selected row.

calendar.Widget.GTK. : WholeModel. Date. -> Widget.GTK.

A calendar.

scrolled.Widget.GTK. : Widget.GTK. -> Widget.GTK.

A scrollable container.

dynamic.Widget.GTK. : WholeModel. +Widget.GTK. -> Widget.GTK.

A widget that can be updated to different UIs.

name.Widget.GTK. : Text. -> Widget.GTK. -> Widget.GTK.

A widget with name set. You can use something like #text to refer to it in the CSS style-sheet.

styleClass.Widget.GTK. : Text. -> Widget.GTK. -> Widget.GTK.

A widget with CSS class set. You can use something like .text to refer to all widgets in this class in the CSS style-sheet.

styleSheet.Widget.GTK. : WholeModel. +Text. -> Widget.GTK. -> Widget.GTK.

A widget with a CSS style-sheet (applied to the whole tree of widgets). See the GTK+ CSS overview and properties for how this works.


type Handler.GTK.

Response to button-clicked events

<>.Handler.GTK. : Handler.GTK. -> Handler.GTK. -> Handler.GTK.

concat1.Handler.GTK. : List1.List. Handler.GTK. -> Handler.GTK.

empty.Handler.GTK. : Handler.GTK.

concat.Handler.GTK. : List. Handler.GTK. -> Handler.GTK.

onClick.Handler.GTK. : Action. Unit. -> Handler.GTK.

Action to perform on click

fallThrough.Handler.GTK. : Handler.GTK. -> Handler.GTK.

Run the handler, but fall through to run handlers underneath.

draw.Widget.GTK. : WholeModel. +(Integer. *: Integer. -> Drawing.Cairo. Handler.GTK.) -> Widget.GTK.

Drawable widget


type Context.GTK.

Context for GTK

run.GTK. : (Context.GTK. -> Action. a) -> Action. a

Call the provided function with a GTK context, after which run the GTK event loop until all windows are closed.

type Window.GTK.

A user interface window.

open.Window.GTK. : Context.GTK. -> Integer. *: Integer. -> WholeModel. +Text. -> Widget.GTK. -> Action. Window.GTK.

Open a new window with this size, title and widget.

close.Window.GTK. : Window.GTK. -> Action. Unit.

Close a window.

show.Window.GTK. : Window.GTK. -> Action. Unit.

Show a window.

hide.Window.GTK. : Window.GTK. -> Action. Unit.

Hide a window.

exit.GTK. : Context.GTK. -> Action. Unit.

Exit the user interface.


clipboard.GTK. : Context.GTK. -> WholeModel. Literal.

The UI clipboard, for copying and pasting.


chooseExistingFile.GTK. : Context.GTK. -> (Maybe. (Text. *: Text.) -> Boolean.) -> Action. File.GIO.

Run a dialog to choose an existing file.

chooseNewFile.GTK. : Context.GTK. -> (Maybe. (Text. *: Text.) -> Boolean.) -> Action. File.GIO.

Run a dialog to choose a new file.


Functions for GTK debugging.

ignoreUpdateUIExceptions.GTK.Debug. : WholeModel. {-p,+q} -> WholeModel. {-p,+q}

Drop exceptions from updates

windowInfo.GTK.Debug. : Window.GTK. -> Action. Text.

Get window contents information

lock.GTK.Debug. : Context.GTK. -> Action. a -> Action. a

Lock GTK