first commit
This commit is contained in:
56
scripts/ui/UiKit.gd
Normal file
56
scripts/ui/UiKit.gd
Normal file
@@ -0,0 +1,56 @@
|
||||
class_name UiKit
|
||||
extends RefCounted
|
||||
|
||||
## Kleine Helfer für die primitiven UI-Bausteine.
|
||||
|
||||
static func flat(bg: Color, border: Color = Color(0, 0, 0, 0), radius: int = 6) -> StyleBoxFlat:
|
||||
var sb := StyleBoxFlat.new()
|
||||
sb.bg_color = bg
|
||||
sb.corner_radius_top_left = radius
|
||||
sb.corner_radius_top_right = radius
|
||||
sb.corner_radius_bottom_left = radius
|
||||
sb.corner_radius_bottom_right = radius
|
||||
if border.a > 0.0:
|
||||
sb.border_color = border
|
||||
sb.set_border_width_all(2)
|
||||
sb.content_margin_left = 6
|
||||
sb.content_margin_right = 6
|
||||
sb.content_margin_top = 4
|
||||
sb.content_margin_bottom = 4
|
||||
return sb
|
||||
|
||||
|
||||
static func panel(bg: Color) -> PanelContainer:
|
||||
var p := PanelContainer.new()
|
||||
p.add_theme_stylebox_override("panel", flat(bg))
|
||||
return p
|
||||
|
||||
|
||||
static func label(text: String, size: int = 14, col: Color = Color(0.9, 0.9, 0.95)) -> Label:
|
||||
var l := Label.new()
|
||||
l.text = text
|
||||
l.add_theme_font_size_override("font_size", size)
|
||||
l.add_theme_color_override("font_color", col)
|
||||
return l
|
||||
|
||||
|
||||
static func button(text: String, bg: Color, fg: Color = Color(1, 1, 1)) -> Button:
|
||||
var b := Button.new()
|
||||
b.text = text
|
||||
b.add_theme_stylebox_override("normal", flat(bg))
|
||||
b.add_theme_stylebox_override("hover", flat(bg.lightened(0.12)))
|
||||
b.add_theme_stylebox_override("pressed", flat(bg.darkened(0.15)))
|
||||
b.add_theme_stylebox_override("disabled", flat(bg.darkened(0.45)))
|
||||
b.add_theme_color_override("font_color", fg)
|
||||
b.add_theme_color_override("font_hover_color", fg)
|
||||
b.add_theme_color_override("font_disabled_color", Color(fg, 0.45))
|
||||
b.add_theme_font_size_override("font_size", 14)
|
||||
b.clip_text = true
|
||||
# Ohne das würde der zuletzt geklickte Knopf die Leertaste abfangen.
|
||||
b.focus_mode = Control.FOCUS_NONE
|
||||
return b
|
||||
|
||||
|
||||
## Lesbare Textfarbe zu einem Hintergrund.
|
||||
static func ink(bg: Color) -> Color:
|
||||
return Color(0.06, 0.06, 0.08) if bg.get_luminance() > 0.5 else Color(0.96, 0.96, 1.0)
|
||||
Reference in New Issue
Block a user