提交 3d3c0940 编写于 作者: aaronchen2k2k's avatar aaronchen2k2k

code refactoring

上级 9930c042
......@@ -167,11 +167,8 @@ func importProjectUi(g *gocui.Gui, v *gocui.View) error {
left = right + ui.Space
right = left + ui.TextWidthHalf
singleFileInput := ui.NewLabelWidget(g, "singleFileInput", left, 7, "[*]")
singleFileInput := ui.NewRadioWidget(g, "singleFileInput", left, 7, true)
viewMap["import"] = append(viewMap["import"], singleFileInput.Name())
if err := g.SetKeybinding("singleFileInput", gocui.KeySpace, gocui.ModNone, changeSingleFile); err != nil {
return err
}
buttonX := (maxX-leftWidth)/2 + leftWidth - ui.ButtonWidth
submitInput := ui.NewButtonWidgetAutoWidth(g, "submitInput", buttonX, 10, "Submit", importProjectRequest)
......@@ -232,16 +229,3 @@ func importProjectRequest(g *gocui.Gui, v *gocui.View) error {
return nil
}
func changeSingleFile(g *gocui.Gui, v *gocui.View) error {
val := strings.TrimSpace(v.Buffer())
v.Clear()
if val == "[*]" {
fmt.Fprint(v, "[ ]")
} else {
fmt.Fprint(v, "[*]")
}
return nil
}
......@@ -3,6 +3,7 @@ package ui
import (
"fmt"
"github.com/jroimartin/gocui"
"strings"
)
const (
......@@ -13,53 +14,52 @@ type RadioWidget struct {
name string
x, y int
w int
body string
val string
checked bool
handler func(g *gocui.Gui, v *gocui.View) error
}
func NewRadioWidget(name string, x, y int, checked bool) *RadioWidget {
var body string
func NewRadioWidget(g *gocui.Gui, name string, x, y int, checked bool) *gocui.View {
var val string
if checked {
body = "[*]"
val = "[*]"
} else {
body = "[ ]"
val = "[ ]"
}
return &RadioWidget{name: name, x: x, y: y, w: len(body) + 1, body: body, checked: checked, handler: handler()}
widget := RadioWidget{name: name, x: x, y: y, w: len(val) + 1, val: val, checked: checked, handler: handler}
v, _ := widget.Layout(g)
return v
}
func (w *RadioWidget) Layout(g *gocui.Gui) error {
func (w *RadioWidget) Layout(g *gocui.Gui) (*gocui.View, error) {
v, err := g.SetView(w.name, w.x, w.y, w.x+w.w, w.y+2)
if err != nil {
if err != gocui.ErrUnknownView {
return err
return nil, err
}
if err := g.SetKeybinding(w.name, gocui.KeySpace, gocui.ModNone, w.handler); err != nil {
return err
return nil, err
}
v.Clear()
v.Frame = false
fmt.Fprint(v, w.body)
}
return nil
}
func handler() func(g *gocui.Gui, v *gocui.View) error {
return func(g *gocui.Gui, v *gocui.View) error {
return statusSet(v)
fmt.Fprint(v, w.val)
}
return v, nil
}
func statusSet(v *gocui.View) error {
body := v.Buffer()
if body == "[*]" {
body = "[ ]"
func handler(g *gocui.Gui, v *gocui.View) error {
val := strings.TrimSpace(v.Buffer())
if val == "[*]" {
val = "[ ]"
} else {
body = "[*]"
val = "[*]"
}
v.Clear()
fmt.Fprint(v, val)
return nil
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册