WIP add menu render to sizer context
This commit is contained in:
@@ -52,6 +52,11 @@ func(m *Menu) WithOutputSize(outputSize uint16) *Menu {
|
||||
return m
|
||||
}
|
||||
|
||||
// GetOutputSize returns the defined heuristic menu size.
|
||||
func(m *Menu) GetOutputSize() uint32 {
|
||||
return uint32(m.outputSize)
|
||||
}
|
||||
|
||||
// WithBrowseConfig defines the criteria for page browsing.
|
||||
func(m *Menu) WithBrowseConfig(cfg BrowseConfig) *Menu {
|
||||
m.browse = cfg
|
||||
|
||||
@@ -95,7 +95,7 @@ func(pg *Page) Map(key string) error {
|
||||
return err
|
||||
}
|
||||
}
|
||||
log.Printf("page map is now: %v", pg.cacheMap)
|
||||
log.Printf("mapped %s", key)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -192,6 +192,15 @@ func(pg *Page) prepare(sym string, values map[string]string, idx uint16) (map[st
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if pg.menu != nil {
|
||||
r, err := pg.menu.Render(idx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
log.Printf("appending %s for menu", r)
|
||||
s += r
|
||||
}
|
||||
|
||||
remaining, ok := pg.sizer.Check(s)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("capacity exceeded")
|
||||
@@ -255,12 +264,6 @@ func(pg *Page) render(sym string, values map[string]string, idx uint16) (string,
|
||||
}
|
||||
log.Printf("rendered %v bytes for template", len(s))
|
||||
r += s
|
||||
if pg.sizer != nil {
|
||||
_, ok = pg.sizer.Check(r)
|
||||
if !ok {
|
||||
return "", fmt.Errorf("limit exceeded: %v", pg.sizer)
|
||||
}
|
||||
}
|
||||
s, err = pg.menu.Render(idx)
|
||||
if err != nil {
|
||||
return "", err
|
||||
@@ -275,6 +278,20 @@ func(pg *Page) render(sym string, values map[string]string, idx uint16) (string,
|
||||
return "", fmt.Errorf("limit exceeded: %v", pg.sizer)
|
||||
}
|
||||
}
|
||||
// s, err = pg.menu.Render(idx)
|
||||
// if err != nil {
|
||||
// return "", err
|
||||
// }
|
||||
// log.Printf("rendered %v bytes for menu", len(s))
|
||||
// if len(s) > 0 {
|
||||
// r += "\n" + s
|
||||
// }
|
||||
// if pg.sizer != nil {
|
||||
// _, ok = pg.sizer.Check(r)
|
||||
// if !ok {
|
||||
// return "", fmt.Errorf("limit exceeded: %v", pg.sizer)
|
||||
// }
|
||||
// }
|
||||
return r, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -88,17 +88,34 @@ func TestSizeLimit(t *testing.T) {
|
||||
pg := NewPage(ca, rs).WithMenu(mn).WithSizer(szr)
|
||||
ca.Push()
|
||||
st.Down("test")
|
||||
ca.Add("foo", "inky", 4)
|
||||
ca.Add("bar", "pinky", 10)
|
||||
ca.Add("baz", "blinky", 0)
|
||||
pg.Map("foo")
|
||||
pg.Map("bar")
|
||||
pg.Map("baz")
|
||||
err := ca.Add("foo", "inky", 4)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = ca.Add("bar", "pinky", 10)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = ca.Add("baz", "blinky", 0)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = pg.Map("foo")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = pg.Map("bar")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = pg.Map("baz")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
mn.Put("1", "foo the foo")
|
||||
mn.Put("2", "go to bar")
|
||||
|
||||
var err error
|
||||
_, err = pg.Render("small", 0)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
|
||||
Reference in New Issue
Block a user