You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.8 KiB
57 lines
1.8 KiB
@tool
|
|
class_name DCSS
|
|
|
|
static func inline(style:Dictionary) -> StyleBoxFlat:
|
|
var scale:float = DialogicUtil.get_editor_scale()
|
|
var s := StyleBoxFlat.new()
|
|
for property in style.keys():
|
|
match property:
|
|
'border-left':
|
|
s.set('border_width_left', style[property] * scale)
|
|
'border-radius':
|
|
var radius:float = style[property] * scale
|
|
s.set('corner_radius_top_left', radius)
|
|
s.set('corner_radius_top_right', radius)
|
|
s.set('corner_radius_bottom_left', radius)
|
|
s.set('corner_radius_bottom_right', radius)
|
|
'background':
|
|
s.set('bg_color', style[property])
|
|
'border':
|
|
var width:float = style[property] * scale
|
|
s.set('border_width_left', width)
|
|
s.set('border_width_right', width)
|
|
s.set('border_width_top', width)
|
|
s.set('border_width_bottom', width)
|
|
'border-color':
|
|
s.set('border_color', style[property])
|
|
'padding':
|
|
var value_v: float = 0.0
|
|
var value_h: float = 0.0
|
|
if style[property] is int:
|
|
value_v = style[property] * scale
|
|
value_h = value_v
|
|
else:
|
|
value_v = style[property][0] * scale
|
|
value_h = style[property][1] * scale
|
|
s.set('content_margin_top', value_v)
|
|
s.set('content_margin_bottom', value_v)
|
|
s.set('content_margin_left', value_h)
|
|
s.set('content_margin_right', value_h)
|
|
'padding-right':
|
|
s.set('content_margin_right', style[property] * scale)
|
|
'padding-left':
|
|
s.set('content_margin_left', style[property] * scale)
|
|
return s
|
|
|
|
static func style(node, style:Dictionary) -> StyleBoxFlat:
|
|
var s:StyleBoxFlat = inline(style)
|
|
|
|
node.set('theme_override_styles/normal', s)
|
|
node.set('theme_override_styles/focus', s)
|
|
node.set('theme_override_styles/read_only', s)
|
|
node.set('theme_override_styles/hover', s)
|
|
node.set('theme_override_styles/pressed', s)
|
|
node.set('theme_override_styles/disabled', s)
|
|
node.set('theme_override_styles/panel', s)
|
|
return s
|