1 type CheckBox = 2 inherit Wrapper 3 4 var obs text = "" 5 var obs is_checked = false 6 7 subscribe { _, event -> if event.is_mouse_press then 8 is_checked = not is_checked } 9 10 is_clickable = true 11 12 let text_block = TextBlock.new 13 let background_rectangle = Rectangle.new 14 let check_rectangle = Rectangle.new 15 let margin = Margin.new 16 17 text_block.char_margins_height@atom.bind { 18 val u = _ as f32 * 0.7 |> as<u32> 19 background_rectangle.min_width = u 20 min_height = u 21 22 let v = u as f32 * 0.5 |> as<u32> 23 check_rectangle.min_width = v 24 min_height = v 25 26 margin.left = u as f32 * 0.3 |> as<u32> } |> push_token 27 28 is_checked@atom.bind { check_rectangle.is_visible = _ } 29 |> push_token 30 31 let stack = Stack 32 is_horizontal = true 33 align_h = AlignH/Left 34 margin 35 align_h = AlignH/Left 36 align_v = AlignV/Center 37 up = 0 38 background_rectangle 39 color = Vector3.gray 0.6 40 check_rectangle 41 color = Vector3.gray 0.2 42 align_h = AlignH/Center 43 align_v = AlignV/Center 44 text_block 45 text@obs = text@obs 46 align_h = AlignH/Left 47 align_v = AlignV/Center 48 49 content = stack 50