mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-28 03:01:57 +02:00
More work on choose_files
This commit is contained in:
@@ -12,34 +12,61 @@ import (
|
|||||||
var _ = fmt.Print
|
var _ = fmt.Print
|
||||||
var debugprintln = tty.DebugPrintln
|
var debugprintln = tty.DebugPrintln
|
||||||
|
|
||||||
|
type State struct {
|
||||||
|
Base_dir string
|
||||||
|
}
|
||||||
|
|
||||||
|
type ScreenSize struct {
|
||||||
|
width, height, cell_width, cell_height, width_px, height_px int
|
||||||
|
}
|
||||||
|
|
||||||
type Handler struct {
|
type Handler struct {
|
||||||
lp *loop.Loop
|
state State
|
||||||
Current_base_dir string
|
screen_size ScreenSize
|
||||||
|
lp *loop.Loop
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *Handler) draw_screen() (err error) {
|
||||||
|
h.lp.StartAtomicUpdate()
|
||||||
|
defer h.lp.EndAtomicUpdate()
|
||||||
|
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *Handler) OnInitialize() (ans string, err error) {
|
func (h *Handler) OnInitialize() (ans string, err error) {
|
||||||
|
h.lp.AllowLineWrapping(false)
|
||||||
|
h.lp.SetCursorShape(loop.BAR_CURSOR, true)
|
||||||
|
h.draw_screen()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func main(_ *cli.Command, opts *Options, args []string) (rc int, err error) {
|
func main(_ *cli.Command, opts *Options, args []string) (rc int, err error) {
|
||||||
cwd := ""
|
|
||||||
switch len(args) {
|
|
||||||
case 0:
|
|
||||||
os.Getwd()
|
|
||||||
if cwd, err = os.Getwd(); err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
case 1:
|
|
||||||
cwd = args[0]
|
|
||||||
default:
|
|
||||||
return 1, fmt.Errorf("Can only specify one directory to search in")
|
|
||||||
}
|
|
||||||
lp, err := loop.New()
|
lp, err := loop.New()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 1, err
|
return 1, err
|
||||||
}
|
}
|
||||||
handler := Handler{Current_base_dir: cwd, lp: lp}
|
handler := Handler{lp: lp}
|
||||||
|
switch len(args) {
|
||||||
|
case 0:
|
||||||
|
os.Getwd()
|
||||||
|
if handler.state.Base_dir, err = os.Getwd(); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 1:
|
||||||
|
handler.state.Base_dir = args[0]
|
||||||
|
default:
|
||||||
|
return 1, fmt.Errorf("Can only specify one directory to search in")
|
||||||
|
}
|
||||||
lp.OnInitialize = handler.OnInitialize
|
lp.OnInitialize = handler.OnInitialize
|
||||||
|
lp.OnResize = func(old, new_size loop.ScreenSize) (err error) {
|
||||||
|
handler.screen_size.width = int(new_size.WidthCells)
|
||||||
|
handler.screen_size.height = int(new_size.HeightCells)
|
||||||
|
handler.screen_size.cell_width = int(new_size.CellWidth)
|
||||||
|
handler.screen_size.cell_height = int(new_size.CellHeight)
|
||||||
|
handler.screen_size.width_px = int(new_size.WidthPx)
|
||||||
|
handler.screen_size.height_px = int(new_size.HeightPx)
|
||||||
|
return handler.draw_screen()
|
||||||
|
}
|
||||||
err = lp.Run()
|
err = lp.Run()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 1, err
|
return 1, err
|
||||||
|
|||||||
Reference in New Issue
Block a user