Add multipart selector mockup to msgviewer
This commit is contained in:
parent
ab632d4e97
commit
337dd18c9c
1 changed files with 50 additions and 7 deletions
|
@ -109,7 +109,7 @@ index 0000000..1c55bfe
|
||||||
|
|
||||||
func NewMessageViewer() *MessageViewer {
|
func NewMessageViewer() *MessageViewer {
|
||||||
grid := ui.NewGrid().Rows([]ui.GridSpec{
|
grid := ui.NewGrid().Rows([]ui.GridSpec{
|
||||||
{ui.SIZE_EXACT, 3},
|
{ui.SIZE_EXACT, 4},
|
||||||
{ui.SIZE_WEIGHT, 1},
|
{ui.SIZE_WEIGHT, 1},
|
||||||
}).Columns([]ui.GridSpec{
|
}).Columns([]ui.GridSpec{
|
||||||
{ui.SIZE_WEIGHT, 1},
|
{ui.SIZE_WEIGHT, 1},
|
||||||
|
@ -119,6 +119,7 @@ func NewMessageViewer() *MessageViewer {
|
||||||
{ui.SIZE_EXACT, 1},
|
{ui.SIZE_EXACT, 1},
|
||||||
{ui.SIZE_EXACT, 1},
|
{ui.SIZE_EXACT, 1},
|
||||||
{ui.SIZE_EXACT, 1},
|
{ui.SIZE_EXACT, 1},
|
||||||
|
{ui.SIZE_EXACT, 1},
|
||||||
}).Columns([]ui.GridSpec{
|
}).Columns([]ui.GridSpec{
|
||||||
{ui.SIZE_WEIGHT, 1},
|
{ui.SIZE_WEIGHT, 1},
|
||||||
{ui.SIZE_WEIGHT, 1},
|
{ui.SIZE_WEIGHT, 1},
|
||||||
|
@ -139,7 +140,19 @@ func NewMessageViewer() *MessageViewer {
|
||||||
Value: "[PATCH todo.sr.ht v2 1/3 Alter Event fields " +
|
Value: "[PATCH todo.sr.ht v2 1/3 Alter Event fields " +
|
||||||
"and migrate data]",
|
"and migrate data]",
|
||||||
}).At(1, 0).Span(1, 2)
|
}).At(1, 0).Span(1, 2)
|
||||||
headers.AddChild(ui.NewFill(' ')).At(2, 0).Span(1, 2)
|
headers.AddChild(
|
||||||
|
&HeaderView{
|
||||||
|
Name: "PGP",
|
||||||
|
Value: "✓ Valid PGP signature from Ivan Habunek",
|
||||||
|
}).At(2, 0).Span(1, 2)
|
||||||
|
headers.AddChild(ui.NewFill(' ')).At(3, 0).Span(1, 2)
|
||||||
|
|
||||||
|
body := ui.NewGrid().Rows([]ui.GridSpec{
|
||||||
|
{ui.SIZE_WEIGHT, 1},
|
||||||
|
}).Columns([]ui.GridSpec{
|
||||||
|
{ui.SIZE_WEIGHT, 1},
|
||||||
|
{ui.SIZE_EXACT, 20},
|
||||||
|
})
|
||||||
|
|
||||||
cmd := exec.Command("sh", "-c", "./contrib/hldiff.py | less -R")
|
cmd := exec.Command("sh", "-c", "./contrib/hldiff.py | less -R")
|
||||||
pipe, _ := cmd.StdinPipe()
|
pipe, _ := cmd.StdinPipe()
|
||||||
|
@ -152,9 +165,13 @@ func NewMessageViewer() *MessageViewer {
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
term.Focus(true)
|
term.Focus(true)
|
||||||
|
body.AddChild(term).At(0, 0)
|
||||||
|
|
||||||
|
body.AddChild(ui.NewBordered(
|
||||||
|
&MultipartView{}, ui.BORDER_LEFT)).At(0, 1)
|
||||||
|
|
||||||
grid.AddChild(headers).At(0, 0)
|
grid.AddChild(headers).At(0, 0)
|
||||||
grid.AddChild(term).At(1, 0)
|
grid.AddChild(body).At(1, 0)
|
||||||
return &MessageViewer{grid, term}
|
return &MessageViewer{grid, term}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,10 +206,14 @@ type HeaderView struct {
|
||||||
|
|
||||||
func (hv *HeaderView) Draw(ctx *ui.Context) {
|
func (hv *HeaderView) Draw(ctx *ui.Context) {
|
||||||
size := runewidth.StringWidth(" " + hv.Name + " ")
|
size := runewidth.StringWidth(" " + hv.Name + " ")
|
||||||
ctx.Fill(0, 0, ctx.Width(), ctx.Height(), ' ', tcell.StyleDefault)
|
var style tcell.Style
|
||||||
style := tcell.StyleDefault.Reverse(true)
|
if hv.Name == "PGP" {
|
||||||
ctx.Printf(0, 0, style, " "+hv.Name+" ")
|
style = tcell.StyleDefault.Foreground(tcell.ColorGreen)
|
||||||
style = tcell.StyleDefault
|
} else {
|
||||||
|
style = tcell.StyleDefault
|
||||||
|
}
|
||||||
|
ctx.Fill(0, 0, ctx.Width(), ctx.Height(), ' ', style)
|
||||||
|
ctx.Printf(0, 0, tcell.StyleDefault.Reverse(true), " "+hv.Name+" ")
|
||||||
ctx.Printf(size, 0, style, " "+hv.Value)
|
ctx.Printf(size, 0, style, " "+hv.Value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -205,3 +226,25 @@ func (hv *HeaderView) Invalidate() {
|
||||||
func (hv *HeaderView) OnInvalidate(fn func(d ui.Drawable)) {
|
func (hv *HeaderView) OnInvalidate(fn func(d ui.Drawable)) {
|
||||||
hv.onInvalidate = fn
|
hv.onInvalidate = fn
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type MultipartView struct {
|
||||||
|
onInvalidate func(d ui.Drawable)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mpv *MultipartView) Draw(ctx *ui.Context) {
|
||||||
|
ctx.Fill(0, 0, ctx.Width(), ctx.Height(), ' ', tcell.StyleDefault)
|
||||||
|
ctx.Fill(0, 0, ctx.Width(), 1, ' ', tcell.StyleDefault.Reverse(true))
|
||||||
|
ctx.Printf(0, 0, tcell.StyleDefault.Reverse(true), "text/plain")
|
||||||
|
ctx.Printf(0, 1, tcell.StyleDefault, "text/html")
|
||||||
|
ctx.Printf(0, 2, tcell.StyleDefault, "application/pgp-si…")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mpv *MultipartView) Invalidate() {
|
||||||
|
if mpv.onInvalidate != nil {
|
||||||
|
mpv.onInvalidate(mpv)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mpv *MultipartView) OnInvalidate(fn func(d ui.Drawable)) {
|
||||||
|
mpv.onInvalidate = fn
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue