Documentation
¶
Index ¶
- Variables
- func CaretMovementSymToCaretMovement(caller string, sym *z3.Sym) zedit.CaretMovement
- func CharIntervalToList(interval zedit.CharInterval) *z3.Cell
- func CharPosToList(pos zedit.CharPos) *z3.Cell
- func CloseGUI()
- func ColorToList(c color.Color) *z3.Cell
- func CursorToSym(c desktop.Cursor) *z3.Sym
- func DefGUI(interp *z3.Interp, config Config)
- func DefGUIAdditions(interp *z3.Interp) error
- func DefGUIHelp(interp *z3.Interp) error
- func FindTextGridParagraphEnd(grid *widget.TextGrid, row int, lf rune) int
- func FindTextGridParagraphStart(grid *widget.TextGrid, row int, lf rune) int
- func GetTextGridParagraph(grid *widget.TextGrid, first, last int) []widget.TextGridCell
- func GetZeditConfig(caller string, z *zedit.Editor, sel any) any
- func KeyNameToSymbol(name fyne.KeyName) *z3.Sym
- func ListToCharInterval(caller string, li *z3.Cell) zedit.CharInterval
- func ListToCharPos(caller string, li *z3.Cell) zedit.CharPos
- func ListToColor(li *z3.Cell) color.Color
- func ListToTextGridCell(arg any) widget.TextGridCell
- func ListToTextGridStyle(arg any) widget.TextGridStyle
- func ListToZeditStyle(arg any) zedit.EditorStyle
- func MustConvertSymToTextWrap(caller string, sym *z3.Sym) fyne.TextWrap
- func MustGetPosition(caller string, argIdx int, a any) (fyne.Position, bool)
- func MustGetShortcut(caller string, li *z3.Cell) (fyne.KeyName, fyne.KeyModifier)
- func MustGetTextAlign(caller string, idx int, a any) (fyne.TextAlign, bool)
- func MustGetTextStyle(caller string, idx int, a any) fyne.TextStyle
- func RunGUI(id string, onStarted func())
- func SetZeditConfig(caller string, z *zedit.Editor, sel, prop any)
- func ShutDownGUI()
- func TagEventToTagEventSymbol(evt zedit.TagEvent) *z3.Sym
- func TextGridRangeListToRange(caller string, li *z3.Cell) (int, int, int, int)
- func TextGridStyleToList(s widget.TextGridStyle) *z3.Cell
- func WordWrapTextGridRows(rows []widget.TextGridRow, wrapCol int, softWrap bool, hardLF, softLF rune, ...) ([]widget.TextGridRow, int, int)
- type Config
- type HyperlinkCheckFunc
Constants ¶
This section is empty.
Variables ¶
var BackgroundColor = z3.NewSym("background")
var ButtonColor = z3.NewSym("button")
var CaretDown = z3.NewSym("down")
zedit caret movement selectors
var CaretEnd = z3.NewSym("end")
var CaretHalfPageDown = z3.NewSym("half-page-down")
var CaretHalfPageUp = z3.NewSym("half-page-up")
var CaretHome = z3.NewSym("home")
var CaretLeft = z3.NewSym("left")
var CaretLineEnd = z3.NewSym("line-end")
var CaretLineStart = z3.NewSym("line-start")
var CaretPageDown = z3.NewSym("page-down")
var CaretPageUp = z3.NewSym("page-up")
var CaretRight = z3.NewSym("right")
var CaretUp = z3.NewSym("up")
var CheckedSym = z3.NewSym("checked")
var CrosshairCursorSym = z3.NewSym("crosshair")
var DefaultConfig = Config{ HyperlinksAllowed: true, CheckHyperlinks: HyperlinkCheckFunc(func(url *url.URL) *url.URL { return url }), WindowsAllowed: true, Prefix: "", ClipboardGetAllowed: true, ClipboardSetAllowed: true, }
var DefaultCursorSym = z3.NewSym("default")
var DisabledButtonColor = z3.NewSym("disabled-button")
var DisabledColor = z3.NewSym("disabled")
var DisabledSym = z3.NewSym("disabled")
var DisabledTextColor = z3.NewSym("disabled-text")
var ErrorColor = z3.NewSym("error")
var FocusColor = z3.NewSym("focus")
var ForegroundColor = z3.NewSym("foreground")
theme selectors
var FyneSym = z3.NewSym("fyne2")
var GUISym = z3.NewSym("gui")
var HResizeCursorSym = z3.NewSym("hresize")
var HoverColor = z3.NewSym("hover")
var InputBackgroundColor = z3.NewSym("input-background")
var InputBorderColor = z3.NewSym("input-border")
var IsQuitSym = z3.NewSym("is-quit")
var IsSeparatorSym = z3.NewSym("is-separator")
var Key0 = z3.NewSym("key0")
var Key1 = z3.NewSym("key1")
var Key2 = z3.NewSym("key2")
var Key3 = z3.NewSym("key3")
var Key4 = z3.NewSym("key4")
var Key5 = z3.NewSym("key5")
var Key6 = z3.NewSym("key6")
var Key7 = z3.NewSym("key7")
var Key8 = z3.NewSym("key8")
var Key9 = z3.NewSym("key9")
var KeyA = z3.NewSym("a")
var KeyAlt = z3.NewSym("alt")
var KeyAsterisk = z3.NewSym("asterisk")
var KeyB = z3.NewSym("b")
var KeyBackTick = z3.NewSym("back-tick")
var KeyBackslash = z3.NewSym("backslash")
var KeyBackspace = z3.NewSym("backspace")
var KeyC = z3.NewSym("c")
var KeyComma = z3.NewSym("comma")
var KeyControl = z3.NewSym("control")
var KeyD = z3.NewSym("d")
var KeyDelete = z3.NewSym("delete")
var KeyDown = z3.NewSym("down")
var KeyE = z3.NewSym("e")
var KeyEnd = z3.NewSym("end")
var KeyEnter = z3.NewSym("enter")
var KeyEqual = z3.NewSym("equal")
var KeyEscape = z3.NewSym("escape")
key name symbols, for a more Lispy interface to logical key names
var KeyF = z3.NewSym("f")
var KeyF1 = z3.NewSym("f1")
var KeyF10 = z3.NewSym("f10")
var KeyF11 = z3.NewSym("f11")
var KeyF12 = z3.NewSym("f12")
var KeyF2 = z3.NewSym("f2")
var KeyF3 = z3.NewSym("f3")
var KeyF4 = z3.NewSym("f4")
var KeyF5 = z3.NewSym("f5")
var KeyF6 = z3.NewSym("f6")
var KeyF7 = z3.NewSym("f7")
var KeyF8 = z3.NewSym("f8")
var KeyF9 = z3.NewSym("f9")
var KeyG = z3.NewSym("g")
var KeyH = z3.NewSym("h")
var KeyHome = z3.NewSym("home")
var KeyI = z3.NewSym("i")
var KeyInsert = z3.NewSym("insert")
var KeyJ = z3.NewSym("j")
var KeyK = z3.NewSym("k")
var KeyL = z3.NewSym("l")
var KeyLeft = z3.NewSym("left")
var KeyLeftBracket = z3.NewSym("left-bracket")
var KeyM = z3.NewSym("m")
var KeyMinus = z3.NewSym("minus")
var KeyN = z3.NewSym("n")
var KeyO = z3.NewSym("o")
var KeyP = z3.NewSym("p")
var KeyPageDown = z3.NewSym("page-down")
var KeyPageUp = z3.NewSym("page-up")
var KeyPeriod = z3.NewSym("dot")
var KeyPlus = z3.NewSym("plus")
var KeyQ = z3.NewSym("q")
var KeyR = z3.NewSym("r")
var KeyReturn = z3.NewSym("return")
var KeyRight = z3.NewSym("right")
var KeyRightBracket = z3.NewSym("right-bracket")
var KeyS = z3.NewSym("s")
var KeySemicolon = z3.NewSym("semicolon")
var KeyShift = z3.NewSym("shift")
var KeySlash = z3.NewSym("slash")
var KeySpace = z3.NewSym("space")
var KeySuper = z3.NewSym("super")
var KeyT = z3.NewSym("t")
var KeyTab = z3.NewSym("tab")
var KeyTick = z3.NewSym("tick")
var KeyU = z3.NewSym("u")
var KeyUnknown = z3.NewSym("unknown")
var KeyUp = z3.NewSym("up")
var KeyV = z3.NewSym("v")
var KeyW = z3.NewSym("w")
var KeyX = z3.NewSym("x")
var KeyY = z3.NewSym("y")
var KeyZ = z3.NewSym("z")
var LoremParagraph = z3.NewSym("paragraph")
var LoremSentence = z3.NewSym("sentence")
var LoremWord = z3.NewSym("word")
lorem ipsum selectors for create-lorem-ipsum helper
var MenuBackgroundColor = z3.NewSym("menu-background")
var OverlayBackgroundColor = z3.NewSym("overlay-background")
var PlaceHolderColor = z3.NewSym("place-holder")
var PointerCursorSym = z3.NewSym("pointer")
var PressedColor = z3.NewSym("pressed")
var PrimaryColor = z3.NewSym("primary")
var RestrictedConfig = Config{ HyperlinksAllowed: false, CheckHyperlinks: HyperlinkCheckFunc(func(url *url.URL) *url.URL { panic("hyperlinks are not allowed by security policy!") }), WindowsAllowed: false, Prefix: "", ClipboardGetAllowed: false, ClipboardSetAllowed: false, }
var ScrollBarColor = z3.NewSym("scroll-bar")
var SelectionColor = z3.NewSym("selection")
var SeparatorColor = z3.NewSym("separator")
var ShadowColor = z3.NewSym("shadow")
var SuccessColor = z3.NewSym("success")
var TagEvtCaretEnter = z3.NewSym("caret-enter")
zedit tag events
var TagEvtCaretLeave = z3.NewSym("caret-leave")
var TagEvtUnknown = z3.NewSym("unknown")
var TextCursorSym = z3.NewSym("text")
var TextGridBackgroundColor = z3.NewSym("text-grid-background")
var TextGridForegroundColor = z3.NewSym("text-grid-foreground")
var VResizeCursorSym = z3.NewSym("vresize")
var VersionSym = z3.NewSym("*z3s5-version*")
var WarningColor = z3.NewSym("warning")
var WrapBreakSym = z3.NewSym("break")
var WrapOffSym = z3.NewSym("none")
var WrapWordSym = z3.NewSym("word")
var ZeditDrawCaret = z3.NewSym("draw-caret?")
var ZeditHighlightParenRange = z3.NewSym("highlight-paren-range?")
var ZeditHighlightParens = z3.NewSym("highlight-parens?")
var ZeditLineWrap = z3.NewSym("line-wrap?")
var ZeditShowWhitespace = z3.NewSym("show-whitespace?")
var ZeditShowlineNumbers = z3.NewSym("show-line-numbers?")
zedit properties
var ZeditSoftWrap = z3.NewSym("soft-wrap?")
Functions ¶
func CaretMovementSymToCaretMovement ¶
func CaretMovementSymToCaretMovement(caller string, sym *z3.Sym) zedit.CaretMovement
CaretMovementSymToCaretMovement converts a Z3S5 Lisp symbol for the caret movement to a zedit CaretMovement int, panicking if the movement symbol is not supported.
func CharIntervalToList ¶
func CharIntervalToList(interval zedit.CharInterval) *z3.Cell
CharIntervalToList converts a zedit char interval to a Z3S5 list of lists.
func CharPosToList ¶
CharPosToList converts a zedit char position to a Z3S5 list of integers.
func CloseGUI ¶
func CloseGUI()
CloseGUI closes all existing windows and attempts to free existing resources but does not quit the the internal main application, so new windows can be opened again.
func ColorToList ¶
ColorToList converts a Go color.Color to a Z3S5 Lisp list of numbers.
func CursorToSym ¶
CursorToSym converts a Fyne desktop.Cursor to a symbol.
func DefGUI ¶
DefGUI defines the user interface functions. If you want to avoid polluting the namespace, use a config with a custom Prefix. Use DefaultConfig for a maximally permissive default configuration. Various security-sensitive settings such as allowing or disallowing creation of new windows can be adjusted in the Config. If you set these, be sure to also restrict the language using Z3S5 Lisp standard security tools, such as unbinding certain functions and then protecting them and disallowing unprotecting them again.
func DefGUIAdditions ¶
DefGUIAdditions defines additional functions from an embedded Lisp source.
func DefGUIHelp ¶
DefGUIHelp defines the help definitions for the GUI functions.
func FindTextGridParagraphEnd ¶
FindTextGridParagraphEnd finds the end row of the paragraph in which row is located. If row is the last row, then it is returned. Otherwise, it checks for the next row that ends in lf (which may be the row with which this function was called).
func FindTextGridParagraphStart ¶
FindTextGridParagraphStart finds the start row of the paragraph in which row is located. If the row is 0, 0 is returned, otherwise this checks for the next line ending with lf and returns the row after it.
func GetTextGridParagraph ¶
func GetTextGridParagraph(grid *widget.TextGrid, first, last int) []widget.TextGridCell
GetTextGridParagraph returns the styled text of the paragraph as a list of cells, ignoring any row styles (the caller of this function needs to take care of proper handling of row styles themselves).
func KeyNameToSymbol ¶
KeyNameToSymbol converts a Fyne key name string to a symbol, as they are used in MustGetShortcut.
func ListToCharInterval ¶
func ListToCharInterval(caller string, li *z3.Cell) zedit.CharInterval
ListToCharInterval converts a Z3S5 Lisp to a zedit char interval, panicking if the list is malformed. The parsing is permissive, if only one char position is given as list, the point interval (pos1...pos1) is returned. (Zedit char intervals are right-end inclusive, so this make sense.)
func ListToCharPos ¶
ListToCharPos converts a Z3S5 Lisp to a zedit char position, panicking if the list is malformed. The parsing is permissive, a list (n) returns a line number position, (n m) returns a non-line number position, and (n m b) returns a position where b is interpreted as bool.
func ListToColor ¶
ListToColor converts a Z3S5 Lisp color list to a color.
func ListToTextGridCell ¶
func ListToTextGridCell(arg any) widget.TextGridCell
ListToTextGridCell converts a list in the format (rune style-list) to a text grid TextGridCell.
func ListToTextGridStyle ¶
func ListToTextGridStyle(arg any) widget.TextGridStyle
ListToTextGridStyle converts a list in the format returned by TextGridStyleToList back to a Fyne text grid style.
func ListToZeditStyle ¶
func ListToZeditStyle(arg any) zedit.EditorStyle
ListToZeditStyle converts a list of colors to a zedit.EditorStyle used by zedit.Editor.
func MustConvertSymToTextWrap ¶
MustConvertSymToTextWrap converts a symbol to a fyne.TextWrap or panics with an error message.
func MustGetPosition ¶
MustGetPosition expects a position in argument a at argument index argIdx and returns it, panics if a is not a position list. The argument may be nil, in case of which bool is false.
func MustGetShortcut ¶
MustGetShortcut converts a Z3S5 Lisp list shortcut representations into the key name and modifier of a fyne.KeyShortcut.
func MustGetTextAlign ¶
MustGetTextAlign returns a text align and true, or nil and false if the alignment specified was Nil.
func MustGetTextStyle ¶
MustGetTextStyle turns a list of style symbols into a Fyne text style.
func RunGUI ¶
func RunGUI(id string, onStarted func())
RunGUI initializes the user interface and starts running it. The function blocks until the application is quit, e.g. via ShutDownUI. Since it blocks, the Lisp interpreter must be started in parallel. The onStarted function is called when the application has been started. This can be used for synchronization, for example. The provided ID should be unique if the executable is duplicated.
func ShutDownGUI ¶
func ShutDownGUI()
ShutdownGUI shuts down the user interface. Any attempt to use it afterwards may result in a panic. This should be called before closing the application, e.g. in a defer statement.
func TextGridRangeListToRange ¶
TextGridRangeListToRange converts a Z3S5 List containing a range of the form (start-row- start-column end-row end-column) of integers to the integers. end-row and end-column are optional.
func TextGridStyleToList ¶
func TextGridStyleToList(s widget.TextGridStyle) *z3.Cell
TextGridStyleToList converts a text grid style to a Z3S5 Lisp list.
func WordWrapTextGridRows ¶
func WordWrapTextGridRows(rows []widget.TextGridRow, wrapCol int, softWrap bool, hardLF, softLF rune, cursorRow, cursorCol int) ([]widget.TextGridRow, int, int)
WordWrapTextGridRows word wraps a number of text grid rows, making sure soft line breaks are adjusted and removed accordingly. The number of rows returned may be larger then the number of rows provided as an argument. The position of the original cursor row and column is returned.
Types ¶
type Config ¶
type Config struct { HyperlinksAllowed bool // if true, hyperlinks can be created CheckHyperlinks HyperlinkCheckFunc // if set, transform hyperlink URLs during creation WindowsAllowed bool // is true, windows can be created Prefix string // a prefix for all identifiers defined (excluding ".") ClipboardGetAllowed bool // allow getting the clipboard content (could be used to monitor for passwords) ClipboardSetAllowed bool // allow setting the clipboard content }
Config stores the configuration for the GUI, which is global and cannot be changed once set. This is passed to DefUI. Use DefaultConfig for a maximally permissive default configuration.