mirror of https://github.com/anoshenko/rui.git
Added support of AccentColor to Checkbox, ListView, and TableView
This commit is contained in:
parent
6afb518645
commit
1110375cb6
18
checkbox.go
18
checkbox.go
|
@ -112,6 +112,14 @@ func (button *checkboxData) set(tag string, value any) bool {
|
||||||
case CellVerticalAlign, CellHorizontalAlign, CellWidth, CellHeight:
|
case CellVerticalAlign, CellHorizontalAlign, CellWidth, CellHeight:
|
||||||
return false
|
return false
|
||||||
|
|
||||||
|
case AccentColor:
|
||||||
|
if !button.setColorProperty(AccentColor, value) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if button.created {
|
||||||
|
updateInnerHTML(button.htmlID(), button.session)
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return button.viewsContainerData.set(tag, value)
|
return button.viewsContainerData.set(tag, value)
|
||||||
}
|
}
|
||||||
|
@ -278,10 +286,16 @@ func (button *checkboxData) htmlCheckbox(buffer *strings.Builder, checked bool)
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer.WriteString(`">`)
|
buffer.WriteString(`">`)
|
||||||
|
|
||||||
|
accentColor := Color(0)
|
||||||
|
if color := GetAccentColor(button, ""); color != 0 {
|
||||||
|
accentColor = color
|
||||||
|
}
|
||||||
|
|
||||||
if checked {
|
if checked {
|
||||||
buffer.WriteString(button.Session().checkboxOnImage())
|
buffer.WriteString(button.Session().checkboxOnImage(accentColor))
|
||||||
} else {
|
} else {
|
||||||
buffer.WriteString(button.Session().checkboxOffImage())
|
buffer.WriteString(button.Session().checkboxOffImage(accentColor))
|
||||||
}
|
}
|
||||||
buffer.WriteString(`</div>`)
|
buffer.WriteString(`</div>`)
|
||||||
|
|
||||||
|
|
16
listView.go
16
listView.go
|
@ -322,6 +322,11 @@ func (listView *listViewData) set(tag string, value any) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case AccentColor:
|
||||||
|
if !listView.setColorProperty(AccentColor, value) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return listView.viewData.set(tag, value)
|
return listView.viewData.set(tag, value)
|
||||||
}
|
}
|
||||||
|
@ -672,12 +677,17 @@ func (listView *listViewData) getDivs(checkbox, hCheckboxAlign, vCheckboxAlign i
|
||||||
|
|
||||||
offDivBuilder.WriteString(onDivBuilder.String())
|
offDivBuilder.WriteString(onDivBuilder.String())
|
||||||
|
|
||||||
|
accentColor := Color(0)
|
||||||
|
if color := GetAccentColor(listView, ""); color != 0 {
|
||||||
|
accentColor = color
|
||||||
|
}
|
||||||
|
|
||||||
if checkbox == SingleCheckbox {
|
if checkbox == SingleCheckbox {
|
||||||
offDivBuilder.WriteString(session.radiobuttonOffImage())
|
offDivBuilder.WriteString(session.radiobuttonOffImage())
|
||||||
onDivBuilder.WriteString(session.radiobuttonOnImage())
|
onDivBuilder.WriteString(session.radiobuttonOnImage(accentColor))
|
||||||
} else {
|
} else {
|
||||||
offDivBuilder.WriteString(session.checkboxOffImage())
|
offDivBuilder.WriteString(session.checkboxOffImage(accentColor))
|
||||||
onDivBuilder.WriteString(session.checkboxOnImage())
|
onDivBuilder.WriteString(session.checkboxOnImage(accentColor))
|
||||||
}
|
}
|
||||||
|
|
||||||
onDivBuilder.WriteString("</div>")
|
onDivBuilder.WriteString("</div>")
|
||||||
|
|
|
@ -125,10 +125,10 @@ type Session interface {
|
||||||
registerAnimation(props []AnimatedProperty) string
|
registerAnimation(props []AnimatedProperty) string
|
||||||
|
|
||||||
resolveConstants(value string) (string, bool)
|
resolveConstants(value string) (string, bool)
|
||||||
checkboxOffImage() string
|
checkboxOffImage(accentColor Color) string
|
||||||
checkboxOnImage() string
|
checkboxOnImage(accentColor Color) string
|
||||||
radiobuttonOffImage() string
|
radiobuttonOffImage() string
|
||||||
radiobuttonOnImage() string
|
radiobuttonOnImage(accentColor Color) string
|
||||||
|
|
||||||
viewByHTMLID(id string) View
|
viewByHTMLID(id string) View
|
||||||
nextViewID() string
|
nextViewID() string
|
||||||
|
|
|
@ -203,7 +203,7 @@ func (session *sessionData) SetCustomTheme(name string) bool {
|
||||||
|
|
||||||
const checkImage = `<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m4 8 3 4 5-8" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5"/></svg>`
|
const checkImage = `<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m4 8 3 4 5-8" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5"/></svg>`
|
||||||
|
|
||||||
func (session *sessionData) checkboxImage(checked bool) string {
|
func (session *sessionData) checkboxImage(checked bool, accentColor Color) string {
|
||||||
|
|
||||||
var borderColor, backgroundColor Color
|
var borderColor, backgroundColor Color
|
||||||
var ok bool
|
var ok bool
|
||||||
|
@ -217,7 +217,9 @@ func (session *sessionData) checkboxImage(checked bool) string {
|
||||||
}
|
}
|
||||||
|
|
||||||
if checked {
|
if checked {
|
||||||
if backgroundColor, ok = session.Color("ruiHighlightColor"); !ok {
|
if accentColor != 0 {
|
||||||
|
backgroundColor = accentColor
|
||||||
|
} else if backgroundColor, ok = session.Color("ruiHighlightColor"); !ok {
|
||||||
backgroundColor = 0xFF1A74E8
|
backgroundColor = 0xFF1A74E8
|
||||||
}
|
}
|
||||||
} else if backgroundColor, ok = session.Color("ruiBackgroundColor"); !ok {
|
} else if backgroundColor, ok = session.Color("ruiBackgroundColor"); !ok {
|
||||||
|
@ -244,16 +246,22 @@ func (session *sessionData) checkboxImage(checked bool) string {
|
||||||
return buffer.String()
|
return buffer.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (session *sessionData) checkboxOffImage() string {
|
func (session *sessionData) checkboxOffImage(accentColor Color) string {
|
||||||
|
if accentColor != 0 {
|
||||||
|
return session.checkboxImage(false, accentColor)
|
||||||
|
}
|
||||||
if session.checkboxOff == "" {
|
if session.checkboxOff == "" {
|
||||||
session.checkboxOff = session.checkboxImage(false)
|
session.checkboxOff = session.checkboxImage(false, accentColor)
|
||||||
}
|
}
|
||||||
return session.checkboxOff
|
return session.checkboxOff
|
||||||
}
|
}
|
||||||
|
|
||||||
func (session *sessionData) checkboxOnImage() string {
|
func (session *sessionData) checkboxOnImage(accentColor Color) string {
|
||||||
|
if accentColor != 0 {
|
||||||
|
return session.checkboxImage(true, accentColor)
|
||||||
|
}
|
||||||
if session.checkboxOn == "" {
|
if session.checkboxOn == "" {
|
||||||
session.checkboxOn = session.checkboxImage(true)
|
session.checkboxOn = session.checkboxImage(true, accentColor)
|
||||||
}
|
}
|
||||||
return session.checkboxOn
|
return session.checkboxOn
|
||||||
}
|
}
|
||||||
|
@ -285,12 +293,14 @@ func (session *sessionData) radiobuttonOffImage() string {
|
||||||
return session.radiobuttonOff
|
return session.radiobuttonOff
|
||||||
}
|
}
|
||||||
|
|
||||||
func (session *sessionData) radiobuttonOnImage() string {
|
func (session *sessionData) radiobuttonOnImage(accentColor Color) string {
|
||||||
if session.radiobuttonOn == "" {
|
if session.radiobuttonOn == "" {
|
||||||
var borderColor, backgroundColor Color
|
var borderColor, backgroundColor Color
|
||||||
var ok bool
|
var ok bool
|
||||||
|
|
||||||
if borderColor, ok = session.Color("ruiHighlightColor"); !ok {
|
if accentColor != 0 {
|
||||||
|
borderColor = accentColor
|
||||||
|
} else if borderColor, ok = session.Color("ruiHighlightColor"); !ok {
|
||||||
borderColor = 0xFF1A74E8
|
borderColor = 0xFF1A74E8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
10
tableView.go
10
tableView.go
|
@ -588,7 +588,7 @@ func (table *tableViewData) propertyChanged(tag string) {
|
||||||
CellBorder, HeadHeight, HeadStyle, FootHeight, FootStyle,
|
CellBorder, HeadHeight, HeadStyle, FootHeight, FootStyle,
|
||||||
CellPaddingTop, CellPaddingRight, CellPaddingBottom, CellPaddingLeft,
|
CellPaddingTop, CellPaddingRight, CellPaddingBottom, CellPaddingLeft,
|
||||||
TableCellClickedEvent, TableCellSelectedEvent, TableRowClickedEvent,
|
TableCellClickedEvent, TableCellSelectedEvent, TableRowClickedEvent,
|
||||||
TableRowSelectedEvent, AllowSelection:
|
TableRowSelectedEvent, AllowSelection, AccentColor:
|
||||||
table.ReloadTableData()
|
table.ReloadTableData()
|
||||||
|
|
||||||
case Current:
|
case Current:
|
||||||
|
@ -1350,10 +1350,14 @@ func (table *tableViewData) writeCellHtml(adapter TableAdapter, row, column int,
|
||||||
buffer.WriteString(fmt.Sprintf("%g", value))
|
buffer.WriteString(fmt.Sprintf("%g", value))
|
||||||
|
|
||||||
case bool:
|
case bool:
|
||||||
|
accentColor := Color(0)
|
||||||
|
if color := GetAccentColor(table, ""); color != 0 {
|
||||||
|
accentColor = color
|
||||||
|
}
|
||||||
if value {
|
if value {
|
||||||
buffer.WriteString(table.Session().checkboxOnImage())
|
buffer.WriteString(table.Session().checkboxOnImage(accentColor))
|
||||||
} else {
|
} else {
|
||||||
buffer.WriteString(table.Session().checkboxOffImage())
|
buffer.WriteString(table.Session().checkboxOffImage(accentColor))
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in New Issue