mirror of
https://github.com/miguelmota/cointop
synced 2024-11-10 13:10:26 +00:00
84 lines
1.7 KiB
Go
84 lines
1.7 KiB
Go
package cointop
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/miguelmota/gocui"
|
|
)
|
|
|
|
// IView is a cointop view
|
|
type IView interface {
|
|
Backing() *gocui.View
|
|
SetBacking(gocuiView *gocui.View)
|
|
Name() string
|
|
}
|
|
|
|
// View is a cointop view
|
|
type View struct {
|
|
backing *gocui.View
|
|
name string
|
|
}
|
|
|
|
// NewView creates a new view
|
|
func NewView(name string) *View {
|
|
return &View{
|
|
name: name,
|
|
}
|
|
}
|
|
|
|
// Backing returns the backing gocui view
|
|
func (view *View) Backing() *gocui.View {
|
|
return view.backing
|
|
}
|
|
|
|
// SetBacking sets the backing gocui view
|
|
func (view *View) SetBacking(gocuiView *gocui.View) {
|
|
view.backing = gocuiView
|
|
}
|
|
|
|
// Height returns the view height
|
|
func (view *View) Height() int {
|
|
_, h := view.backing.Size()
|
|
return h
|
|
}
|
|
|
|
// Width returns the view width
|
|
func (view *View) Width() int {
|
|
w, _ := view.backing.Size()
|
|
return w
|
|
}
|
|
|
|
// Name returns the view's name
|
|
func (view *View) Name() string {
|
|
return view.name
|
|
}
|
|
|
|
// SetActiveView sets the active view
|
|
func (ct *Cointop) SetActiveView(v string) error {
|
|
ct.g.SetViewOnTop(v)
|
|
ct.g.SetCurrentView(v)
|
|
if v == ct.Views.SearchField.Name() {
|
|
ct.Views.SearchField.Backing().Clear()
|
|
ct.Views.SearchField.Backing().SetCursor(1, 0)
|
|
fmt.Fprintf(ct.Views.SearchField.Backing(), "%s", "/")
|
|
} else if v == ct.Views.Table.Name() {
|
|
ct.g.SetViewOnTop(ct.Views.Statusbar.Name())
|
|
}
|
|
if v == ct.Views.PortfolioUpdateMenu.Name() {
|
|
ct.g.SetViewOnTop(ct.Views.Input.Name())
|
|
ct.g.SetCurrentView(ct.Views.Input.Name())
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// ActiveViewName returns the name of the active view
|
|
func (ct *Cointop) ActiveViewName() string {
|
|
return ct.g.CurrentView().Name()
|
|
}
|
|
|
|
// SetViewOnBottom sets the view to the bottom layer
|
|
func (ct *Cointop) SetViewOnBottom(v string) error {
|
|
_, err := ct.g.SetViewOnBottom(v)
|
|
return err
|
|
}
|