code test
This commit is contained in:
parent
0e727c5a5b
commit
42ee1bd41c
97
main.go
97
main.go
@ -4,12 +4,21 @@ import (
|
||||
"fmt"
|
||||
"log"
|
||||
"strings"
|
||||
//"whspbrd/systray"
|
||||
"whspbrd/term_image"
|
||||
|
||||
"image"
|
||||
_ "image/jpeg"
|
||||
_ "image/png"
|
||||
"os"
|
||||
|
||||
"github.com/jroimartin/gocui"
|
||||
|
||||
"github.com/dolmen-go/kittyimg"
|
||||
)
|
||||
|
||||
var messages []string
|
||||
var users = []string{"Alice", "Bob", "Charlie"}
|
||||
var users = []string{"Alice\n", "Bob\n", "Charlie\n"}
|
||||
|
||||
func layout(g *gocui.Gui) error {
|
||||
maxX, maxY := g.Size()
|
||||
@ -31,6 +40,7 @@ func layout(g *gocui.Gui) error {
|
||||
}
|
||||
v.Title = "Chat"
|
||||
v.Wrap = true
|
||||
v.Autoscroll = true
|
||||
updateChatView(v)
|
||||
}
|
||||
|
||||
@ -50,8 +60,30 @@ func layout(g *gocui.Gui) error {
|
||||
}
|
||||
func updateChatView(v *gocui.View) {
|
||||
v.Clear()
|
||||
for _, msg := range messages {
|
||||
fmt.Fprintln(v, msg)
|
||||
for i, msg := range messages {
|
||||
fmt.Fprintf(v, "%s\n\n", msg)
|
||||
fmt.Printf("\033[%d;%dH", i*3+2, 23)
|
||||
imagePath := "kogami-rounded.png"
|
||||
|
||||
file, err := os.Open(imagePath)
|
||||
if err != nil {
|
||||
log.Println("Error opening image:", err)
|
||||
continue
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
img, _, err := image.Decode(file)
|
||||
if err != nil {
|
||||
log.Println("Error decoding image:", err)
|
||||
continue
|
||||
}
|
||||
|
||||
// Print image directly to terminal (stdout)
|
||||
//term_image.RenderImage("output.png", 20, 20)
|
||||
err = kittyimg.Fprintln(os.Stdout, img)
|
||||
if err != nil {
|
||||
log.Println("Error rendering image:", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -62,7 +94,7 @@ func sendMessage(g *gocui.Gui, v *gocui.View) error {
|
||||
v.SetOrigin(0, 0)
|
||||
|
||||
if input != "" {
|
||||
messages = append(messages, "You: "+input)
|
||||
messages = append(messages, "\t\t\t\tYou:\n\t\t\t\t"+input)
|
||||
if chatView, err := g.View("chat"); err == nil {
|
||||
updateChatView(chatView)
|
||||
}
|
||||
@ -72,6 +104,41 @@ func sendMessage(g *gocui.Gui, v *gocui.View) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func cursorDown(g *gocui.Gui, v *gocui.View) error {
|
||||
if v != nil {
|
||||
cx, cy := v.Cursor()
|
||||
if err := v.SetCursor(cx, cy+1); err != nil {
|
||||
ox, oy := v.Origin()
|
||||
if err := v.SetOrigin(ox, oy+1); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func cursorUp(g *gocui.Gui, v *gocui.View) error {
|
||||
if v != nil {
|
||||
ox, oy := v.Origin()
|
||||
cx, cy := v.Cursor()
|
||||
if err := v.SetCursor(cx, cy-1); err != nil && oy > 0 {
|
||||
if err := v.SetOrigin(ox, oy-1); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func nextView(g *gocui.Gui, v *gocui.View) error {
|
||||
if v == nil || v.Name() == "chat" {
|
||||
_, err := g.SetCurrentView("input")
|
||||
return err
|
||||
}
|
||||
_, err := g.SetCurrentView("chat")
|
||||
return err
|
||||
}
|
||||
|
||||
func keybindings(g *gocui.Gui) error {
|
||||
// Ctrl+C to quit
|
||||
if err := g.SetKeybinding("", gocui.KeyCtrlC, gocui.ModNone, quit); err != nil {
|
||||
@ -80,7 +147,14 @@ func keybindings(g *gocui.Gui) error {
|
||||
|
||||
// Enter to send message
|
||||
// Enter adds a new line (multiline input)
|
||||
if err := g.SetKeybinding("input", gocui.KeyArrowDown, gocui.ModNone, insertNewline); err != nil {
|
||||
//if err := g.SetKeybinding("input", gocui.KeyArrowDown, gocui.ModNone, insertNewline); err != nil {
|
||||
// return err
|
||||
//}
|
||||
|
||||
if err := g.SetKeybinding("chat", gocui.KeyCtrlSpace, gocui.ModNone, nextView); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := g.SetKeybinding("input", gocui.KeyCtrlSpace, gocui.ModNone, nextView); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -89,6 +163,16 @@ func keybindings(g *gocui.Gui) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// Arrow up scrolls up in chat view
|
||||
if err := g.SetKeybinding("chat", gocui.KeyArrowUp, gocui.ModNone, cursorUp); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Arrow down scrolls down in chat view
|
||||
if err := g.SetKeybinding("chat", gocui.KeyArrowDown, gocui.ModNone, cursorDown); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -102,6 +186,7 @@ func quit(g *gocui.Gui, v *gocui.View) error {
|
||||
}
|
||||
|
||||
func main() {
|
||||
// systray.Systray()
|
||||
g, err := gocui.NewGui(gocui.OutputNormal)
|
||||
if err != nil {
|
||||
log.Panicln(err)
|
||||
@ -117,4 +202,6 @@ func main() {
|
||||
if err := g.MainLoop(); err != nil && err != gocui.ErrQuit {
|
||||
log.Panicln(err)
|
||||
}
|
||||
|
||||
term_image.RenderImage("output.png", 20, 20)
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user