diff --git a/post.go b/doGetPatchsets.go similarity index 57% rename from post.go rename to doGetPatchsets.go index e0a7c4a..18db441 100644 --- a/post.go +++ b/doGetPatchsets.go @@ -1,3 +1,5 @@ +// Copyright 2024 WIT.COM Inc Licensed GPL 3.0 + package main import ( @@ -7,9 +9,37 @@ import ( "os" "os/user" + "go.wit.com/lib/protobuf/forgepb" "go.wit.com/log" ) +var forgeURL string = "https://go.wit.com/" + +func GetPatchesets() (*forgepb.Patchsets, error) { + url := forgeURL + "/GetPatchsets" + log.Info("GetPatchsets() url", url) + body, err := httpPost(url, nil) + if err != nil { + log.Info("httpPost() failed:", err) + return nil, err + } + log.Info("GetPatchets() len(body)", len(body)) + var psets *forgepb.Patchsets + psets = new(forgepb.Patchsets) + err = psets.Unmarshal(body) + if err != nil { + log.Info("Unmarshal failed", err) + return nil, err + } + /* + filename := filepath.Join("/tmp", pbfile) + f, _ := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) + f.Write(body) + f.Close() + */ + return psets, nil +} + func httpPost(url string, data []byte) ([]byte, error) { var err error var req *http.Request diff --git a/windowPatches.go b/windowPatches.go index cab0323..907a796 100644 --- a/windowPatches.go +++ b/windowPatches.go @@ -10,14 +10,12 @@ import ( ) type patchesWindow struct { - once sync.Once - win *gadgets.BasicWindow - stack *gui.Node - - // the top box of the repolist window - shelf *gui.Node - - summary *patchSummary + once sync.Once // only init() the window once + win *gadgets.BasicWindow // the patches window + stack *gui.Node // the top box set as vertical + shelf *gui.Node // the first box in the stack, set as horizontal + grid *gui.Node // the list of available patches + summary *patchSummary // summary of current patches } func (r *patchesWindow) Hidden() bool { @@ -62,6 +60,8 @@ func (r *patchesWindow) initWindow() { r.win.Hide() } + r.grid = r.stack.NewGrid("", 0, 0) + r.shelf = r.initGroup() r.summary = submitPatchesBox(r.stack) } @@ -90,5 +90,24 @@ func (r *patchesWindow) initGroup() *gui.Node { me.patchWin.initGroup() }) + hbox.NewButton("Get Patchsets", func() { + // if psets, err := me.forge.GetPatchesets(); err != nil { + psets, err := GetPatchesets() + if err != nil { + log.Info(err) + return + } + all := psets.All() + for all.Scan() { + pset := all.Next() + log.Info(pset) + } + /* + if err := listPatches(); err != nil { + log.Info(err) + } + */ + }) + return vbox }