Skip to content

Commit

Permalink
(Broken) Emote menu for 7tv emotes
Browse files Browse the repository at this point in the history
  • Loading branch information
douglascdev committed May 21, 2024
1 parent b94390a commit bbde12a
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 6 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ Changes:
- Autofocus on new tab input
- Add tab when pressing enter instead of click
- Fix tab removal not saving
- (Broken) Emote menu for 7tv emotes
23 changes: 19 additions & 4 deletions components/emote_gif.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,12 @@ func (g *EmoteGif) SetMinSize(min fyne.Size) {

func (g *EmoteGif) draw(dst draw.Image, index int) {
defer g.dst.Refresh()
if g.src == nil || g.src.Image == nil || len(g.src.Image) == 0 {
return
}
if g.dst == nil || g.dst.Image == nil {
return
}
if index == 0 {
// first frame
draw.Draw(dst, g.dst.Image.Bounds(), g.src.Image[index], image.Point{}, draw.Src)
Expand Down Expand Up @@ -203,17 +209,26 @@ func (g *EmoteGif) Start() {
if g.isRunning() {
return
}
g.runLock.Lock()
if g.lazyLoad {
if g.lazyLoad && g.src == nil {
res, err := tempFileResource(g.emote)
if err != nil {
panic(err)
log.Println("Error loading lazy gif", err)
g.LoadResource(emptyImageResource)
} else {
err = g.LoadResource(res)
if err != nil {
log.Println("Error loading lazy gif", err)
g.LoadResource(emptyImageResource)
}
}
g.LoadResource(res)
}
g.runLock.Lock()
g.running = true
g.runLock.Unlock()

if g.dst.Image == nil || g.src.Image == nil {
return
}
buffer := image.NewNRGBA(g.dst.Image.Bounds())
g.draw(buffer, 0)

Expand Down
27 changes: 25 additions & 2 deletions fyne_ui.go
Original file line number Diff line number Diff line change
Expand Up @@ -347,8 +347,12 @@ func NewChatTab(
defer wg.Done()

for _, emote := range emoteSlice {
if !emote.Animated { // TODO: remove
continue
}
imgCanvas, err := components.NewEmoteGif(emote, func(text string) error {
msgEntry.SetText(text + msgEntry.Text + " ")
msgEntry.SetText(msgEntry.Text + text + " ")
newWindow.Close()
return nil
}, true)
if err != nil {
Expand All @@ -363,9 +367,28 @@ func NewChatTab(
}
wg.Wait()
grid := container.NewGridWrap(defaultEmoteSize, images...)
stvScroll := container.NewScroll(grid)
stvScroll.OnScrolled = func(scrollOffset fyne.Position) {
for _, comp := range images {
go func(comp fyne.CanvasObject) {
w := comp.(*components.EmoteGif)
scrollSize := stvScroll.Size()
widgetPos := w.Position()
widgetSize := w.Size()
isVisible := widgetPos.Y+widgetSize.Height > scrollOffset.Y &&
widgetPos.Y < scrollOffset.Y+scrollSize.Height
if isVisible {
w.Start()
} else {
w.Stop()
}
}(comp)
}
}

accordion := widget.NewAccordion(
widget.NewAccordionItem("Twitch Emotes", widget.NewLabel("Not implemented")),
widget.NewAccordionItem("7TV Emotes"+strings.Repeat(" ", 80), container.NewScroll(grid)),
widget.NewAccordionItem("7TV Emotes"+strings.Repeat(" ", 80), stvScroll),
widget.NewAccordionItem("FFZ Emotes", widget.NewLabel("Not implemented")),
widget.NewAccordionItem("BTTV Emotes", widget.NewLabel("Not implemented")),
widget.NewAccordionItem("Emoji", widget.NewLabel("Not implemented")),
Expand Down

0 comments on commit bbde12a

Please sign in to comment.