More go fmt.
This commit is contained in:
parent
09e3fcd9cb
commit
6e7f15c8e0
|
@ -4,7 +4,6 @@ package ui
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
// "syscall"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
|
@ -20,64 +19,64 @@ import (
|
|||
|
||||
// As we are left with incomplete data, an arbitrary size will be chosen
|
||||
const (
|
||||
defaultWidth = 100 // 2 * preferred width of buttons
|
||||
defaultWidth = 100 // 2 * preferred width of buttons
|
||||
)
|
||||
|
||||
type dlgunits struct {
|
||||
width int
|
||||
height int
|
||||
longest bool // TODO actually use this
|
||||
getsize uintptr
|
||||
area bool // use area sizes instead
|
||||
width int
|
||||
height int
|
||||
longest bool // TODO actually use this
|
||||
getsize uintptr
|
||||
area bool // use area sizes instead
|
||||
}
|
||||
|
||||
var stdDlgSizes = [nctypes]dlgunits{
|
||||
c_button: dlgunits{
|
||||
width: 50,
|
||||
height: 14,
|
||||
getsize: _BCM_GETIDEALSIZE,
|
||||
c_button: dlgunits{
|
||||
width: 50,
|
||||
height: 14,
|
||||
getsize: _BCM_GETIDEALSIZE,
|
||||
},
|
||||
c_checkbox: dlgunits{
|
||||
c_checkbox: dlgunits{
|
||||
// widtdh is not defined here so assume longest
|
||||
longest: true,
|
||||
height: 10,
|
||||
longest: true,
|
||||
height: 10,
|
||||
},
|
||||
c_combobox: dlgunits{
|
||||
c_combobox: dlgunits{
|
||||
// technically the height of a combobox has to include the drop-down list (this is a historical accident: originally comboboxes weren't drop-down)
|
||||
// but since we're forcing Common Controls version 6, we can take advantage of one of its mechanisms to automatically fix this mistake (bad practice but whatever)
|
||||
// see also: http://blogs.msdn.com/b/oldnewthing/archive/2006/03/10/548537.aspx
|
||||
// note that the Microsoft guidelines pages don't take the list size into account
|
||||
longest: true,
|
||||
height: 12, // from http://msdn.microsoft.com/en-us/library/windows/desktop/bb226818%28v=vs.85%29.aspx; the page linked above says 14
|
||||
longest: true,
|
||||
height: 12, // from http://msdn.microsoft.com/en-us/library/windows/desktop/bb226818%28v=vs.85%29.aspx; the page linked above says 14
|
||||
},
|
||||
c_lineedit: dlgunits{
|
||||
longest: true,
|
||||
height: 14,
|
||||
c_lineedit: dlgunits{
|
||||
longest: true,
|
||||
height: 14,
|
||||
},
|
||||
c_label: dlgunits{
|
||||
longest: true,
|
||||
height: 8,
|
||||
c_label: dlgunits{
|
||||
longest: true,
|
||||
height: 8,
|
||||
},
|
||||
c_listbox: dlgunits{
|
||||
longest: true,
|
||||
c_listbox: dlgunits{
|
||||
longest: true,
|
||||
// height is not clearly defined here ("an integral number of items (3 items minimum)") so just use a three-line edit control
|
||||
height: 14 + 10 + 10,
|
||||
height: 14 + 10 + 10,
|
||||
},
|
||||
c_progressbar: dlgunits{
|
||||
width: 237, // the first reference says 107 also works; TODO decide which to use
|
||||
height: 8,
|
||||
c_progressbar: dlgunits{
|
||||
width: 237, // the first reference says 107 also works; TODO decide which to use
|
||||
height: 8,
|
||||
},
|
||||
c_area: dlgunits{
|
||||
area: true,
|
||||
c_area: dlgunits{
|
||||
area: true,
|
||||
},
|
||||
}
|
||||
|
||||
var (
|
||||
_selectObject = gdi32.NewProc("SelectObject")
|
||||
_getDC = user32.NewProc("GetDC")
|
||||
_selectObject = gdi32.NewProc("SelectObject")
|
||||
_getDC = user32.NewProc("GetDC")
|
||||
_getTextExtentPoint32 = gdi32.NewProc("GetTextExtentPoint32W")
|
||||
_getTextMetrics = gdi32.NewProc("GetTextMetricsW")
|
||||
_releaseDC = user32.NewProc("ReleaseDC")
|
||||
_getTextMetrics = gdi32.NewProc("GetTextMetricsW")
|
||||
_releaseDC = user32.NewProc("ReleaseDC")
|
||||
)
|
||||
|
||||
// This function runs on uitask; call the functions directly.
|
||||
|
@ -95,7 +94,7 @@ func (s *sysData) preferredSize() (width int, height int) {
|
|||
msg,
|
||||
uintptr(0),
|
||||
uintptr(unsafe.Pointer(&size)))
|
||||
if r1 != uintptr(_FALSE) { // success
|
||||
if r1 != uintptr(_FALSE) { // success
|
||||
return int(size.cx), int(size.cy)
|
||||
}
|
||||
// otherwise the message approach failed, so fall back to the regular approach
|
||||
|
@ -107,28 +106,28 @@ func (s *sysData) preferredSize() (width int, height int) {
|
|||
var baseX, baseY int
|
||||
|
||||
r1, _, err := _getDC.Call(uintptr(s.hwnd))
|
||||
if r1 == 0 { // failure
|
||||
if r1 == 0 { // failure
|
||||
panic(fmt.Errorf("error getting DC for preferred size calculations: %v", err))
|
||||
}
|
||||
dc = _HANDLE(r1)
|
||||
r1, _, err = _selectObject.Call(
|
||||
uintptr(dc),
|
||||
uintptr(controlFont))
|
||||
if r1 == 0 { // failure
|
||||
if r1 == 0 { // failure
|
||||
panic(fmt.Errorf("error loading control font into device context for preferred size calculation: %v", err))
|
||||
}
|
||||
r1, _, err = _getTextMetrics.Call(
|
||||
uintptr(dc),
|
||||
uintptr(unsafe.Pointer(&tm)))
|
||||
if r1 == 0 { // failure
|
||||
if r1 == 0 { // failure
|
||||
panic(fmt.Errorf("error getting text metrics for preferred size calculations: %v", err))
|
||||
}
|
||||
baseX = int(tm.tmAveCharWidth) // TODO not optimal; third reference has better way
|
||||
baseX = int(tm.tmAveCharWidth) // TODO not optimal; third reference has better way
|
||||
baseY = int(tm.tmHeight)
|
||||
r1, _, err = _releaseDC.Call(
|
||||
uintptr(s.hwnd),
|
||||
uintptr(dc))
|
||||
if r1 == 0 { // failure
|
||||
if r1 == 0 { // failure
|
||||
panic(fmt.Errorf("error releasing DC for preferred size calculations: %v", err))
|
||||
}
|
||||
|
||||
|
@ -138,8 +137,8 @@ func (s *sysData) preferredSize() (width int, height int) {
|
|||
width = defaultWidth
|
||||
}
|
||||
height = stdDlgSizes[s.ctype].height
|
||||
width = muldiv(width, baseX, 4) // equivalent to right of rect
|
||||
height = muldiv(height, baseY, 8) // equivalent to bottom of rect
|
||||
width = muldiv(width, baseX, 4) // equivalent to right of rect
|
||||
height = muldiv(height, baseY, 8) // equivalent to bottom of rect
|
||||
return width, height
|
||||
}
|
||||
|
||||
|
@ -158,29 +157,29 @@ func muldiv(ma int, mb int, div int) int {
|
|||
}
|
||||
|
||||
type _SIZE struct {
|
||||
cx int32 // originally LONG
|
||||
cy int32
|
||||
cx int32 // originally LONG
|
||||
cy int32
|
||||
}
|
||||
|
||||
type _TEXTMETRICS struct {
|
||||
tmHeight int32
|
||||
tmAscent int32
|
||||
tmDescent int32
|
||||
tmInternalLeading int32
|
||||
tmExternalLeading int32
|
||||
tmAveCharWidth int32
|
||||
tmMaxCharWidth int32
|
||||
tmWeight int32
|
||||
tmOverhang int32
|
||||
tmDigitizedAspectX int32
|
||||
tmDigitizedAspectY int32
|
||||
tmFirstChar uint16
|
||||
tmLastChar uint16
|
||||
tmDefaultChar uint16
|
||||
tmBreakChar uint16
|
||||
tmItalic byte
|
||||
tmUnderlined byte
|
||||
tmStruckOut byte
|
||||
tmPitchAndFamily byte
|
||||
tmCharSet byte
|
||||
tmHeight int32
|
||||
tmAscent int32
|
||||
tmDescent int32
|
||||
tmInternalLeading int32
|
||||
tmExternalLeading int32
|
||||
tmAveCharWidth int32
|
||||
tmMaxCharWidth int32
|
||||
tmWeight int32
|
||||
tmOverhang int32
|
||||
tmDigitizedAspectX int32
|
||||
tmDigitizedAspectY int32
|
||||
tmFirstChar uint16
|
||||
tmLastChar uint16
|
||||
tmDefaultChar uint16
|
||||
tmBreakChar uint16
|
||||
tmItalic byte
|
||||
tmUnderlined byte
|
||||
tmStruckOut byte
|
||||
tmPitchAndFamily byte
|
||||
tmCharSet byte
|
||||
}
|
||||
|
|
|
@ -11,16 +11,16 @@ import (
|
|||
// Alternatively, a progressbar can show an animation indicating that progress is being made but how much is indeterminate.
|
||||
// Newly-created ProgressBars default to showing 0% progress.
|
||||
type ProgressBar struct {
|
||||
lock sync.Mutex
|
||||
created bool
|
||||
sysData *sysData
|
||||
initProg int
|
||||
lock sync.Mutex
|
||||
created bool
|
||||
sysData *sysData
|
||||
initProg int
|
||||
}
|
||||
|
||||
// NewProgressBar creates a new ProgressBar.
|
||||
func NewProgressBar() *ProgressBar {
|
||||
return &ProgressBar{
|
||||
sysData: mksysdata(c_progressbar),
|
||||
sysData: mksysdata(c_progressbar),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -58,11 +58,11 @@ func (p *ProgressBar) make(window *sysData) error {
|
|||
|
||||
func (p *ProgressBar) setRect(x int, y int, width int, height int, rr *[]resizerequest) {
|
||||
*rr = append(*rr, resizerequest{
|
||||
sysData: p.sysData,
|
||||
x: x,
|
||||
y: y,
|
||||
width: width,
|
||||
height: height,
|
||||
sysData: p.sysData,
|
||||
x: x,
|
||||
y: y,
|
||||
width: width,
|
||||
height: height,
|
||||
})
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue