2024-05-11 19:38:05 -07:00
|
|
|
package sectr
|
|
|
|
|
|
|
|
UI_ThemePtr :: struct {
|
|
|
|
layout : ^UI_LayoutCombo,
|
|
|
|
style : ^UI_StyleCombo,
|
|
|
|
}
|
|
|
|
|
|
|
|
UI_Theme :: struct {
|
|
|
|
layout : UI_LayoutCombo,
|
|
|
|
style : UI_StyleCombo,
|
|
|
|
}
|
|
|
|
|
|
|
|
ui_theme_pop :: #force_inline proc() {
|
|
|
|
ui_layout_pop()
|
|
|
|
ui_style_pop()
|
|
|
|
}
|
|
|
|
|
|
|
|
@(deferred_none = ui_theme_pop)
|
|
|
|
ui_theme_via_layout_style :: #force_inline proc( layout : UI_Layout, style : UI_Style ) {
|
|
|
|
using ui := get_state().ui_context
|
|
|
|
ui_layout_push( layout )
|
|
|
|
ui_style_push( style )
|
|
|
|
}
|
|
|
|
|
|
|
|
@(deferred_none = ui_theme_pop)
|
|
|
|
ui_theme_via_combos :: #force_inline proc( layout : UI_LayoutCombo, style : UI_StyleCombo ) {
|
|
|
|
using ui := get_state().ui_context
|
|
|
|
ui_layout_push( layout )
|
|
|
|
ui_style_push( style )
|
|
|
|
}
|
|
|
|
|
|
|
|
@(deferred_none = ui_theme_pop)
|
|
|
|
ui_theme_via_theme :: #force_inline proc( theme : UI_Theme ) {
|
|
|
|
using ui := get_state().ui_context
|
|
|
|
ui_layout_push( theme.layout )
|
|
|
|
ui_style_push( theme.style )
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
UI Themes: Comprise of UI_Box's layout & style
|
|
|
|
|
|
|
|
Provides presets for themes and their interface for manipulating the combo stacks in UI_State in pairs
|
|
|
|
*/
|
2024-05-15 00:34:52 -07:00
|
|
|
// TODO(Ed): Eventually this will have a configuration wizard, and we'll save the presets
|
2024-05-11 19:38:05 -07:00
|
|
|
|
2024-05-15 00:34:52 -07:00
|
|
|
/*
|
|
|
|
UI_Theme_Template :: UI_Theme {
|
|
|
|
UI_Layout {
|
|
|
|
flags = {},
|
|
|
|
anchor = Range2{{},{}},
|
|
|
|
alignment = {},
|
|
|
|
text_alignment = {},
|
|
|
|
font_size = {},
|
|
|
|
margins = {},
|
|
|
|
padding = {},
|
|
|
|
border_width = {},
|
|
|
|
pos = {},
|
|
|
|
size = Range2{{},{}}
|
|
|
|
},
|
|
|
|
UI_Style {
|
|
|
|
bg_color = {},
|
|
|
|
corner_radii = {},
|
|
|
|
blur_size = 0,
|
|
|
|
font = {},
|
|
|
|
text_color = {},
|
|
|
|
cursor = 0,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
|
|
|
|
@(deferred_none = ui_theme_pop)
|
|
|
|
ui_theme_app_menu_bar_default :: proc()
|
|
|
|
{
|
|
|
|
@static theme : UI_Theme
|
|
|
|
// @static loaded : b32 = false
|
|
|
|
// if true && ! loaded
|
|
|
|
// {
|
|
|
|
layout := UI_Layout {
|
|
|
|
flags = {},
|
|
|
|
anchor = range2({},{}),
|
|
|
|
alignment = {0.5, 0.5},
|
|
|
|
text_alignment = {0.0, 1.5},
|
|
|
|
font_size = 12,
|
|
|
|
margins = {0, 0, 0, 0},
|
|
|
|
padding = {0, 0, 0, 0},
|
|
|
|
border_width = 0.6,
|
|
|
|
pos = {0, 0},
|
|
|
|
size = range2({},{})
|
|
|
|
}
|
|
|
|
style := UI_Style {
|
|
|
|
bg_color = Color_ThmDark_BG,
|
|
|
|
border_color = Color_ThmDark_Border_Default,
|
|
|
|
corner_radii = {},
|
|
|
|
blur_size = 0,
|
|
|
|
font = get_state().default_font,
|
|
|
|
text_color = Color_ThmDark_Text_Default,
|
|
|
|
cursor = {},
|
|
|
|
}
|
|
|
|
|
|
|
|
// loaded = true
|
|
|
|
layout_combo := to_ui_layout_combo(layout)
|
|
|
|
style_combo := to_ui_style_combo(style)
|
|
|
|
{
|
|
|
|
using layout_combo.hot
|
|
|
|
using style_combo.hot
|
|
|
|
bg_color = Color_ThmDark_Btn_BG_Hot
|
|
|
|
text_color = Color_ThmDark_Text_Hot
|
|
|
|
}
|
|
|
|
{
|
|
|
|
using layout_combo.active
|
|
|
|
using style_combo.active
|
|
|
|
bg_color = Color_ThmDark_Btn_BG_Active
|
|
|
|
text_color = Color_ThmDark_Text_Active
|
|
|
|
}
|
|
|
|
|
|
|
|
theme = UI_Theme {
|
|
|
|
layout_combo, style_combo
|
|
|
|
}
|
|
|
|
// }
|
2024-05-11 19:38:05 -07:00
|
|
|
|
2024-05-15 00:34:52 -07:00
|
|
|
|
|
|
|
ui_layout_push(theme.layout)
|
|
|
|
ui_style_push(theme.style)
|
2024-05-11 19:38:05 -07:00
|
|
|
}
|
|
|
|
|
2024-05-15 00:34:52 -07:00
|
|
|
@(deferred_none = ui_theme_pop)
|
|
|
|
ui_theme_btn_default :: proc()
|
|
|
|
{
|
|
|
|
@static theme : UI_Theme
|
|
|
|
// @static loaded : b32 = false
|
|
|
|
// if true && ! loaded
|
|
|
|
// {
|
|
|
|
layout := UI_Layout {
|
|
|
|
flags = {},
|
|
|
|
anchor = range2({},{}),
|
|
|
|
alignment = {0, 0},
|
|
|
|
text_alignment = {0.5, 0.5},
|
|
|
|
font_size = 16,
|
|
|
|
margins = {0, 0, 0, 0},
|
|
|
|
padding = {0, 0, 0, 0},
|
|
|
|
border_width = 1,
|
|
|
|
pos = {0, 0},
|
|
|
|
size = range2({},{})
|
|
|
|
}
|
|
|
|
style := UI_Style {
|
|
|
|
bg_color = Color_ThmDark_Btn_BG_Default,
|
|
|
|
border_color = Color_ThmDark_Border_Default,
|
|
|
|
corner_radii = {},
|
|
|
|
blur_size = 0,
|
|
|
|
font = get_state().default_font,
|
|
|
|
text_color = Color_ThmDark_Text_Default,
|
|
|
|
cursor = {},
|
|
|
|
}
|
|
|
|
|
|
|
|
// loaded = true
|
|
|
|
layout_combo := to_ui_layout_combo(layout)
|
|
|
|
style_combo := to_ui_style_combo(style)
|
|
|
|
{
|
|
|
|
using layout_combo.hot
|
|
|
|
using style_combo.hot
|
|
|
|
bg_color = Color_ThmDark_Btn_BG_Hot
|
|
|
|
text_color = Color_ThmDark_Text_Hot
|
|
|
|
margins = {2, 2, 2, 2}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
using layout_combo.active
|
|
|
|
using style_combo.active
|
|
|
|
bg_color = Color_ThmDark_Btn_BG_Active
|
|
|
|
text_color = Color_ThmDark_Text_Active
|
|
|
|
margins = {2, 2, 2, 2}
|
|
|
|
}
|
|
|
|
|
|
|
|
theme = UI_Theme {
|
|
|
|
layout_combo, style_combo
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
ui_layout_push(theme.layout)
|
|
|
|
ui_style_push(theme.style)
|
2024-05-11 19:38:05 -07:00
|
|
|
}
|