-
Notifications
You must be signed in to change notification settings - Fork 158
Expand file tree
/
Copy pathstyle_progressbar.v
More file actions
84 lines (74 loc) · 2.31 KB
/
style_progressbar.v
File metadata and controls
84 lines (74 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
module ui
import gg
import x.json2
// ProgressBar
pub struct ProgressBarStyle {
pub mut:
color gg.Color
border_color gg.Color
bg_color gg.Color
bg_border_color gg.Color
}
@[params]
pub struct ProgressBarStyleParams {
pub mut:
style string = no_style
color gg.Color = no_color
border_color gg.Color = no_color
bg_color gg.Color = no_color
bg_border_color gg.Color = no_color
}
pub fn progressbar_style(p ProgressBarStyleParams) ProgressBarStyleParams {
return p
}
pub fn (pbs ProgressBarStyle) to_json_any() json2.Any {
mut obj := map[string]json2.Any{}
obj['color'] = hex_color(pbs.color)
obj['border_color'] = hex_color(pbs.border_color)
obj['bg_color'] = hex_color(pbs.bg_color)
obj['bg_border_color'] = hex_color(pbs.bg_border_color)
return obj
}
pub fn (mut pbs ProgressBarStyle) from_json(a json2.Any) {
m := a.as_map()
pbs.color = HexColor((m['color'] or { json2.Any('') }).str()).color()
pbs.border_color = HexColor((m['border_color'] or { json2.Any('') }).str()).color()
pbs.bg_color = HexColor((m['bg_color'] or { json2.Any('') }).str()).color()
pbs.bg_border_color = HexColor((m['bg_border_color'] or { json2.Any('') }).str()).color()
}
fn (mut pb ProgressBar) load_style() {
// println("pgbar load style $pb.theme_style")
mut style := if pb.theme_style == '' { pb.ui.window.theme_style } else { pb.theme_style }
if pb.style_params.style != no_style {
style = pb.style_params.style
}
pb.update_theme_style(style)
// forced overload default style
pb.update_style(pb.style_params)
}
pub fn (mut pb ProgressBar) update_theme_style(theme string) {
// println("update_style <$p.style>")
style := if theme == '' { 'default' } else { theme }
if style != no_style && style in pb.ui.styles {
pbs := pb.ui.styles[style].pgbar
pb.theme_style = theme
pb.style.color = pbs.color
pb.style.border_color = pbs.border_color
pb.style.bg_color = pbs.bg_color
pb.style.bg_border_color = pbs.bg_border_color
}
}
pub fn (mut pb ProgressBar) update_style(p ProgressBarStyleParams) {
if p.color != no_color {
pb.style.color = p.color
}
if p.border_color != no_color {
pb.style.border_color = p.border_color
}
if p.bg_color != no_color {
pb.style.bg_color = p.bg_color
}
if p.bg_border_color != no_color {
pb.style.bg_border_color = p.bg_border_color
}
}