mirror of
https://github.com/VladimirMarkelov/clui.git
synced 2025-04-26 13:49:01 +08:00
closes #2 - button size includes shadow size
This commit is contained in:
parent
d663414d76
commit
a9f289b121
25
button.go
25
button.go
@ -35,8 +35,11 @@ func NewButton(parent Window, id WinId, x, y, width, height int, title string, p
|
|||||||
b := new(Button)
|
b := new(Button)
|
||||||
b.SetEnabled(true)
|
b.SetEnabled(true)
|
||||||
b.SetPos(x, y)
|
b.SetPos(x, y)
|
||||||
if height < 1 {
|
if height < 4 {
|
||||||
height = 3
|
height = 4
|
||||||
|
}
|
||||||
|
if width < 6 {
|
||||||
|
width = 6
|
||||||
}
|
}
|
||||||
b.SetSize(width, height)
|
b.SetSize(width, height)
|
||||||
b.anchor = props.Anchors
|
b.anchor = props.Anchors
|
||||||
@ -47,7 +50,7 @@ func NewButton(parent Window, id WinId, x, y, width, height int, title string, p
|
|||||||
b.visible = true
|
b.visible = true
|
||||||
b.tabStop = true
|
b.tabStop = true
|
||||||
b.id = id
|
b.id = id
|
||||||
b.minW, b.minH = 5, 3
|
b.minW, b.minH = 6, 4
|
||||||
|
|
||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
@ -73,10 +76,10 @@ func (b *Button) GetConstraints() (int, int) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (b *Button) SetConstraints(minW, minH int) {
|
func (b *Button) SetConstraints(minW, minH int) {
|
||||||
if minW >= 5 {
|
if minW >= 6 {
|
||||||
b.minW = minW
|
b.minW = minW
|
||||||
}
|
}
|
||||||
if minH >= 3 {
|
if minH >= 4 {
|
||||||
b.minH = minH
|
b.minH = minH
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -123,14 +126,14 @@ func (b *Button) Redraw(canvas Canvas) {
|
|||||||
shadow = tm.GetSysColor(ColorControlShadow)
|
shadow = tm.GetSysColor(ColorControlShadow)
|
||||||
}
|
}
|
||||||
|
|
||||||
dy := int(h / 2)
|
dy := int((h - 1) / 2)
|
||||||
if !b.pressed {
|
if !b.pressed {
|
||||||
canvas.ClearRect(x+1, y+1, w, h, shadow)
|
canvas.ClearRect(x+1, y+1, w-1, h-1, shadow)
|
||||||
canvas.ClearRect(x, y, w, h, bg)
|
canvas.ClearRect(x, y, w-1, h-1, bg)
|
||||||
canvas.DrawAlignedText(x, y+dy, w, b.title, fg, bg, AlignCenter)
|
canvas.DrawAlignedText(x, y+dy, w-1, b.title, fg, bg, AlignCenter)
|
||||||
} else {
|
} else {
|
||||||
canvas.ClearRect(x+1, y+1, w, h, bg)
|
canvas.ClearRect(x+1, y+1, w-1, h-1, bg)
|
||||||
canvas.DrawAlignedText(x+1, y+1+dy, w, b.title, fg, bg, AlignCenter)
|
canvas.DrawAlignedText(x+1, y+1+dy, w-1, b.title, fg, bg, AlignCenter)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,9 +37,11 @@ func createDynamicView(c *ui.Composer) {
|
|||||||
packMain := wnd.AddPack(ui.PackHorizontal)
|
packMain := wnd.AddPack(ui.PackHorizontal)
|
||||||
packLeft := packMain.AddPack(ui.PackVertical, 1)
|
packLeft := packMain.AddPack(ui.PackVertical, 1)
|
||||||
packLeft.SetBorderStyle(ui.BorderSingle)
|
packLeft.SetBorderStyle(ui.BorderSingle)
|
||||||
|
packLeft.SetText("Task Progress")
|
||||||
|
|
||||||
packRight := packMain.AddPack(ui.PackVertical, ui.DoNotScale)
|
packRight := packMain.AddPack(ui.PackVertical, ui.DoNotScale)
|
||||||
packRight.SetBorderStyle(ui.BorderDouble)
|
packRight.SetBorderStyle(ui.BorderDouble)
|
||||||
|
packRight.SetText("Event List")
|
||||||
ts := packRight.PackTextScroll(30, 10, 1, ui.Props{})
|
ts := packRight.PackTextScroll(30, 10, 1, ui.Props{})
|
||||||
|
|
||||||
// Here are a lot of additional Packers because it is not possible to mix
|
// Here are a lot of additional Packers because it is not possible to mix
|
||||||
@ -62,14 +64,14 @@ func createDynamicView(c *ui.Composer) {
|
|||||||
ts.AddItem(fmt.Sprintf("New ProgressBar value: %v", v))
|
ts.AddItem(fmt.Sprintf("New ProgressBar value: %v", v))
|
||||||
updateProgress(v, pb)
|
updateProgress(v, pb)
|
||||||
})
|
})
|
||||||
packBtn.PackFrame(2, 1, "", 1, emptyProp)
|
packBtn.PackFrame(1, 1, "", 1, emptyProp)
|
||||||
btnStep := packBtn.PackButton(6, 3, "Step", ui.DoNotScale, emptyProp)
|
btnStep := packBtn.PackButton(7, 3, "Step", ui.DoNotScale, emptyProp)
|
||||||
btnStep.OnClick(func(ev ui.Event) {
|
btnStep.OnClick(func(ev ui.Event) {
|
||||||
go pb.Step()
|
go pb.Step()
|
||||||
ts.AddItem("ProgressBar step")
|
ts.AddItem("ProgressBar step")
|
||||||
})
|
})
|
||||||
packBtn.PackFrame(2, 1, "", 1, emptyProp)
|
packBtn.PackFrame(1, 1, "", 1, emptyProp)
|
||||||
btnQuit := packBtn.PackButton(6, 3, "Quit", ui.DoNotScale, emptyProp)
|
btnQuit := packBtn.PackButton(7, 3, "Quit", ui.DoNotScale, emptyProp)
|
||||||
btnQuit.OnClick(func(ev ui.Event) {
|
btnQuit.OnClick(func(ev ui.Event) {
|
||||||
go c.Stop()
|
go c.Stop()
|
||||||
})
|
})
|
||||||
@ -106,12 +108,12 @@ func createManualView(c *ui.Composer) {
|
|||||||
updateProgress(v, pb)
|
updateProgress(v, pb)
|
||||||
})
|
})
|
||||||
|
|
||||||
btnStep := ui.CreateButton(wnd, 1+11+2, 6, 6, 3, "Step", ui.Props{Anchors: ui.AnchorBottom})
|
btnStep := ui.CreateButton(wnd, 1+11+1, 6, 7, 3, "Step", ui.Props{Anchors: ui.AnchorBottom})
|
||||||
btnStep.OnClick(func(ev ui.Event) {
|
btnStep.OnClick(func(ev ui.Event) {
|
||||||
go pb.Step()
|
go pb.Step()
|
||||||
ts.AddItem("ProgressBar step")
|
ts.AddItem("ProgressBar step")
|
||||||
})
|
})
|
||||||
btnQuit := ui.CreateButton(wnd, 1+11+2+6+2, 6, 6, 3, "Quit", ui.Props{Anchors: ui.AnchorBottom | ui.AnchorRight})
|
btnQuit := ui.CreateButton(wnd, 1+11+1+7+1, 6, 7, 3, "Quit", ui.Props{Anchors: ui.AnchorBottom | ui.AnchorRight})
|
||||||
btnQuit.OnClick(func(ev ui.Event) {
|
btnQuit.OnClick(func(ev ui.Event) {
|
||||||
go c.Stop()
|
go c.Stop()
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user