63 lines
1.5 KiB
Go
63 lines
1.5 KiB
Go
package config
|
|
|
|
// Config can return global configuration parameters.
|
|
type Config interface {
|
|
// HandleWidth returns how large grab handles should typically be. This
|
|
// is important for accessibility reasons.
|
|
HandleWidth () int
|
|
|
|
// ScrollVelocity returns how many pixels should be scrolled every time
|
|
// a scroll button is pressed.
|
|
ScrollVelocity () int
|
|
|
|
// ThemePath returns the directory path to the theme.
|
|
ThemePath () string
|
|
}
|
|
|
|
// Default specifies default configuration values.
|
|
type Default struct { }
|
|
|
|
|
|
// HandleWidth returns the default handle width value.
|
|
func (Default) HandleWidth () int {
|
|
return 15
|
|
}
|
|
|
|
// ScrollVelocity returns the default scroll velocity value.
|
|
func (Default) ScrollVelocity () int {
|
|
return 16
|
|
}
|
|
|
|
// ThemePath returns the default theme path.
|
|
func (Default) ThemePath () (string) {
|
|
return ""
|
|
}
|
|
|
|
// Wrapped wraps a configuration and uses Default if it is nil.
|
|
type Wrapped struct {
|
|
Config
|
|
}
|
|
|
|
// HandleWidth returns how large grab handles should typically be. This
|
|
// is important for accessibility reasons.
|
|
func (wrapped Wrapped) HandleWidth () int {
|
|
return wrapped.ensure().HandleWidth()
|
|
}
|
|
|
|
// ScrollVelocity returns how many pixels should be scrolled every time
|
|
// a scroll button is pressed.
|
|
func (wrapped Wrapped) ScrollVelocity () int {
|
|
return wrapped.ensure().ScrollVelocity()
|
|
}
|
|
|
|
// ThemePath returns the directory path to the theme.
|
|
func (wrapped Wrapped) ThemePath () string {
|
|
return wrapped.ensure().ThemePath()
|
|
}
|
|
|
|
func (wrapped Wrapped) ensure () (real Config) {
|
|
real = wrapped.Config
|
|
if real == nil { real = Default { } }
|
|
return
|
|
}
|