mirror of https://github.com/veonik/squirssi
parent
4d2b6498eb
commit
6938bd6fae
@ -0,0 +1,31 @@
|
||||
package squirssi
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type Command func(*Server, []string)
|
||||
|
||||
var builtIns = map[string]Command{
|
||||
"w": selectWindow,
|
||||
"wc": closeWindow,
|
||||
}
|
||||
|
||||
func selectWindow(srv *Server, args []string) {
|
||||
if len(args) < 2 {
|
||||
return
|
||||
}
|
||||
ch, err := strconv.Atoi(args[1])
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if ch < len(srv.statusBar.TabNames) {
|
||||
srv.statusBar.ActiveTabIndex = ch
|
||||
srv.Update()
|
||||
srv.Render()
|
||||
}
|
||||
}
|
||||
|
||||
func closeWindow(srv *Server, args []string) {
|
||||
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
package squirssi
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"code.dopame.me/veonik/squircy3/event"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func (srv *Server) onUIDirty(_ *event.Event) {
|
||||
srv.Update()
|
||||
srv.Render()
|
||||
}
|
||||
|
||||
func (srv *Server) onIRCJoin(ev *event.Event) {
|
||||
var win Window
|
||||
target := ev.Data["Target"].(string)
|
||||
for _, w := range srv.windows {
|
||||
if w.Title() == target {
|
||||
win = w
|
||||
break
|
||||
}
|
||||
}
|
||||
if win == nil {
|
||||
ch := &Channel{
|
||||
bufferedWindow: newBufferedWindow(target, srv.events),
|
||||
users: []string{"veonik"},
|
||||
}
|
||||
srv.windows = append(srv.windows, ch)
|
||||
}
|
||||
}
|
||||
|
||||
func (srv *Server) onIRCPrivmsg(ev *event.Event) {
|
||||
var win Window
|
||||
target := ev.Data["Target"].(string)
|
||||
for _, w := range srv.windows {
|
||||
if w.Title() == target {
|
||||
win = w
|
||||
break
|
||||
}
|
||||
}
|
||||
if win == nil {
|
||||
logrus.Warnln("received message with no Window:", target, ev.Data["Message"], ev.Data["Nick"])
|
||||
} else {
|
||||
if v, ok := win.(*Channel); ok {
|
||||
if v.current == len(v.lines)-1 {
|
||||
v.current++
|
||||
}
|
||||
if _, err := v.Write([]byte(fmt.Sprintf("<%s> %s", ev.Data["Nick"], ev.Data["Message"]))); err != nil {
|
||||
logrus.Warnln("error writing to Channel:", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in new issue