code test
This commit is contained in:
parent
0e727c5a5b
commit
42ee1bd41c
97
main.go
97
main.go
@ -4,12 +4,21 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"strings"
|
"strings"
|
||||||
|
//"whspbrd/systray"
|
||||||
|
"whspbrd/term_image"
|
||||||
|
|
||||||
|
"image"
|
||||||
|
_ "image/jpeg"
|
||||||
|
_ "image/png"
|
||||||
|
"os"
|
||||||
|
|
||||||
"github.com/jroimartin/gocui"
|
"github.com/jroimartin/gocui"
|
||||||
|
|
||||||
|
"github.com/dolmen-go/kittyimg"
|
||||||
)
|
)
|
||||||
|
|
||||||
var messages []string
|
var messages []string
|
||||||
var users = []string{"Alice", "Bob", "Charlie"}
|
var users = []string{"Alice\n", "Bob\n", "Charlie\n"}
|
||||||
|
|
||||||
func layout(g *gocui.Gui) error {
|
func layout(g *gocui.Gui) error {
|
||||||
maxX, maxY := g.Size()
|
maxX, maxY := g.Size()
|
||||||
@ -31,6 +40,7 @@ func layout(g *gocui.Gui) error {
|
|||||||
}
|
}
|
||||||
v.Title = "Chat"
|
v.Title = "Chat"
|
||||||
v.Wrap = true
|
v.Wrap = true
|
||||||
|
v.Autoscroll = true
|
||||||
updateChatView(v)
|
updateChatView(v)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,8 +60,30 @@ func layout(g *gocui.Gui) error {
|
|||||||
}
|
}
|
||||||
func updateChatView(v *gocui.View) {
|
func updateChatView(v *gocui.View) {
|
||||||
v.Clear()
|
v.Clear()
|
||||||
for _, msg := range messages {
|
for i, msg := range messages {
|
||||||
fmt.Fprintln(v, msg)
|
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)
|
v.SetOrigin(0, 0)
|
||||||
|
|
||||||
if input != "" {
|
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 {
|
if chatView, err := g.View("chat"); err == nil {
|
||||||
updateChatView(chatView)
|
updateChatView(chatView)
|
||||||
}
|
}
|
||||||
@ -72,6 +104,41 @@ func sendMessage(g *gocui.Gui, v *gocui.View) error {
|
|||||||
return nil
|
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 {
|
func keybindings(g *gocui.Gui) error {
|
||||||
// Ctrl+C to quit
|
// Ctrl+C to quit
|
||||||
if err := g.SetKeybinding("", gocui.KeyCtrlC, gocui.ModNone, quit); err != nil {
|
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 to send message
|
||||||
// Enter adds a new line (multiline input)
|
// 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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,6 +163,16 @@ func keybindings(g *gocui.Gui) error {
|
|||||||
return err
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,6 +186,7 @@ func quit(g *gocui.Gui, v *gocui.View) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
// systray.Systray()
|
||||||
g, err := gocui.NewGui(gocui.OutputNormal)
|
g, err := gocui.NewGui(gocui.OutputNormal)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Panicln(err)
|
log.Panicln(err)
|
||||||
@ -117,4 +202,6 @@ func main() {
|
|||||||
if err := g.MainLoop(); err != nil && err != gocui.ErrQuit {
|
if err := g.MainLoop(); err != nil && err != gocui.ErrQuit {
|
||||||
log.Panicln(err)
|
log.Panicln(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
term_image.RenderImage("output.png", 20, 20)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user