Fenrir's emoji ported to cthulhu.

This commit is contained in:
Storm Dragon committed 2026-10-29 19:20:29 -04:00
1 parent 3e2429b8a5
commit 01f50c17e8
24 files changed
+1505 -9

No files matched your search

+18
View File
@@ -91,6 +91,7 @@ type elementState struct {
prefix string
}
type Session struct {
grid *gridSession
title string
elements []elementState
focus int
@@ -175,6 +176,9 @@ func new_session(form Form, maxItems, maxElements int) (*Session, error) {
}
func (session *Session) Presentation() Presentation {
if session.grid != nil {
return session.grid.presentation()
}
if session.closed {
return Presentation{}
}
@@ -208,6 +212,11 @@ func (session *Session) Presentation() Presentation {
}
func (session *Session) Opening() Presentation {
if session.grid != nil {
output := session.grid.presentation()
output.Speech = session.title + ". " + output.Speech
return output
}
output := session.Presentation()
if !session.closed && len(session.elements) > 1 && session.elements[session.focus].element.Kind == List {
output.Speech = session.elements[session.focus].element.Label + ". " + output.Speech
@@ -217,6 +226,9 @@ func (session *Session) Opening() Presentation {
}
func (session *Session) Values() map[string]Value {
if session.grid != nil {
return session.grid.values()
}
values := make(map[string]Value, len(session.elements))
for _, state := range session.elements {
value := Value{Text: state.element.Text, Checked: state.element.Checked}
@@ -229,6 +241,9 @@ func (session *Session) Values() map[string]Value {
}
func (session *Session) Handle(event Event) Effect {
if session.grid != nil {
return session.grid.handle(event)
}
if session.closed {
return Effect{}
}
@@ -459,6 +474,9 @@ func (session *Session) edit(event Event) Effect {
// Insert handles typing and paste atomically; invalid/oversized input leaves
// the field and selection untouched.
func (session *Session) Insert(text string) Effect {
if session.grid != nil {
return Effect{}
}
if session.closed {
return Effect{}
}