func drawKnownMaildirs(amua *Amua, g *gocui.Gui, v *gocui.View) error { v.Clear() v.Frame = false w, h := v.Size() displayed := len(amua.knownMaildirs) if len(amua.knownMaildirs) > h { displayed = h } fillers := h - displayed space := 1 for i := 0; i < displayed; i++ { current := amua.knownMaildirs[i].maildir == amua.curMaildirView.md nrMsgs := fmt.Sprintf("(%d)", len(amua.knownMaildirs[i].maildir.messages)) availableWidth := w - space - len(nrMsgs) - 3 strfmt := fmt.Sprintf(" %%-%ds %s ", availableWidth, nrMsgs) str := fmt.Sprintf(strfmt, util.TruncateString(amua.knownMaildirs[i].path, availableWidth)) if current { colorstring.Fprintf(v, "[bold]%s", str) } else { fmt.Fprint(v, str) } fmt.Fprintf(v, strings.Repeat(" ", space-1)) fmt.Fprintln(v, "|") } for i := 0; i < fillers; i++ { fmt.Fprintf(v, strings.Repeat(" ", w-1)) fmt.Fprintln(v, "|") } return nil }
func (m *Message) Draw(amua *Amua, g *gocui.Gui) error { v, err := g.View(MESSAGE_VIEW) if err != nil { return err } v.Clear() v.Wrap = true v.SetOrigin(0, 0) colorstring.Fprintf(v, "[green]Subject: %s\n", m.Subject) colorstring.Fprintf(v, "[red]From: %s\n", m.From) colorstring.Fprintf(v, "[red]To: %s\n", m.To) colorstring.Fprintf(v, "[green]Date: %s\n", m.Date.Format("Mon, 2 Jan 2006 15:04:05 -0700")) fmt.Fprintf(v, "\n") _, err = io.Copy(v, m) if err != nil { return err } return nil }
// Choose shows shows LICENSE description from http://choosealicense.com/ // And ask user to choose LICENSE. It returns key to fetch LICENSE file. // If something is wrong, return error. func (cli *CLI) Choose() (string, error) { colorstring.Fprintf(cli.errStream, chooseText) num, err := cli.AskNumber(4, 1) if err != nil { return "", err } // If user selects 3, should ask user GPL V2 or V3 if num == 3 { var buf bytes.Buffer buf.WriteString("\n") buf.WriteString("Which version do you want?\n") buf.WriteString(" 1) V2\n") buf.WriteString(" 2) V3\n") fmt.Fprintf(cli.errStream, buf.String()) num, err = cli.AskNumber(2, 1) if err != nil { return "", err } num += 4 } var key string switch num { case 1: key = "mit" case 2: key = "apache-2.0" case 4: key = "" case 5: key = "gpl-2.0" case 6: key = "gpl-3.0" default: // Should not reach here panic("Invalid number") } return key, nil }
// wrap wraps a message with the designated color codes func printout(out io.Writer, message string, colorcode string, args ...interface{}) (n int, err error) { return colorstring.Fprintf(out, marker+"["+colorcode+"]"+message+"\n", args...) }