func removeProject(g *gocui.Gui, v *gocui.View) error { var l string var err error g.ShowCursor = false _, cy := v.Cursor() if l, err = v.Line(cy); err != nil { l = "" } current_name = l maxX, maxY := g.Size() length := 20 if l != "" { if v, err := g.SetView("del_proj", maxX/2-length/2, maxY/2, maxX/2+length/2, maxY/2+2); err != nil { v.BgColor = gocui.ColorRed if err != gocui.ErrorUnkView { return err } fmt.Fprintln(v, "Press 'd' to delete") setView(g, "del_proj") } } return nil }
func getLine(g *gocui.Gui, v *gocui.View) error { var l string var err error g.ShowCursor = false _, cy := v.Cursor() if l, err = v.Line(cy); err != nil { l = "" } maxX, maxY := g.Size() length := 10 + len(current_name) if l != "" { current_name = l if v, err := g.SetView("msg", maxX/2-length/2, maxY/2-3, maxX/2+length/2, maxY/2+3); err != nil { v.BgColor = gocui.ColorGreen v.FgColor = gocui.ColorBlack if err != gocui.ErrorUnkView { return err } current_proj = projects[current_name] current_proj.start() fmt.Fprintln(v, "") fmt.Fprintln(v, "") fmt.Fprintln(v, strings.Repeat(" ", (length-15)/2), "Active Project") fmt.Fprintln(v, "") fmt.Fprintln(v, strings.Repeat(" ", 5), current_name) fmt.Fprintln(v, "") setView(g, "msg") } } return nil }
func addProject(g *gocui.Gui, v *gocui.View) error { g.ShowCursor = true maxX, maxY := g.Size() if v, err := g.SetView("save_proj", maxX/2-30, maxY/2, maxX/2+30, maxY/2+2); err != nil { if err != gocui.ErrorUnkView { return err } setView(g, "save_proj") v.Editable = true } return nil }
func delProj(g *gocui.Gui, v *gocui.View) error { if l := current_name; l != "" { delete(projects, l) } g.ShowCursor = false delView(g, "del_proj") delView(g, "list") g.Flush() setView(g, "list") return nil }
func saveProj(g *gocui.Gui, v *gocui.View) error { if l := strings.TrimSpace(v.Buffer()); l != "" { init_t, _ := time.ParseDuration("0s") init_d, _ := time.ParseDuration("0s") projects[l] = Project{time.Now(), &init_d, &init_t} } g.ShowCursor = false delView(g, "save_proj") delView(g, "list") g.Flush() setView(g, "list") updateProjInfo(g, v) return nil }