Fenrir's emoji ported to cthulhu.
This commit is contained in:
1 parent
3e2429b8a5
commit
01f50c17e8
24 files changed
+1505
-9
No files matched your search
@@ -0,0 +1,55 @@
|
||||
// Copyright (c) 2026 Storm Dragon
|
||||
// Authors: Storm Dragon, Angus Kola
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
package app
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"git.stormux.org/storm/cthulhu/internal/interaction"
|
||||
)
|
||||
|
||||
type emojiTextSource interface {
|
||||
TypeText(context.Context, string) error
|
||||
}
|
||||
|
||||
func (ui *internalUI) emoji_insertion_allowed() bool {
|
||||
if owner, ok := ui.keys.(interface{ BrowseNavigationEnabled() bool }); ok {
|
||||
return !owner.BrowseNavigationEnabled()
|
||||
}
|
||||
return true
|
||||
}
|
||||
func (ui *internalUI) select_emoji(ctx context.Context, selection interaction.Value, copyChecked bool) {
|
||||
if ctx.Err() != nil || ui.gate.Locked() || ui.gate.Suspended() {
|
||||
return
|
||||
}
|
||||
actionCtx, cancel := context.WithTimeout(ctx, 2*time.Second)
|
||||
defer cancel()
|
||||
var message string
|
||||
if copyChecked {
|
||||
message = "Copy failed"
|
||||
if ui.emojiCopier != nil && ui.emojiCopier.Copy(actionCtx, selection.Selected) == nil {
|
||||
message = "Copied " + selection.Text + " to clipboard"
|
||||
}
|
||||
} else if !ui.emoji_insertion_allowed() {
|
||||
message = "Emoji insertion unavailable in browse mode"
|
||||
} else {
|
||||
message = "Emoji insertion unavailable"
|
||||
if ui.emojiSource != nil && ui.emojiSource.TypeText(actionCtx, selection.Selected) == nil {
|
||||
message = "Inserted " + selection.Text
|
||||
}
|
||||
}
|
||||
ui.emoji_message(message)
|
||||
}
|
||||
|
||||
func (ui *internalUI) emoji_message(message string) {
|
||||
if ui.gate.Locked() || ui.gate.Suspended() {
|
||||
return
|
||||
}
|
||||
ui.speech.Enqueue(speechRequest{Text: message, Role: "system", Cause: "emoji"})
|
||||
if ui.braille != nil {
|
||||
ui.braille.EnqueueMessage(message)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user