| 66 | |
| 67 | impl TextEditElement { |
| 68 | pub fn new(widget: &TextEditProperties) -> Self { |
| 69 | let id = widget.key.id(); |
| 70 | |
| 71 | let node = LayoutSystem::new_node(style::Style { ..default() }, vec![]).unwrap(); |
| 72 | |
| 73 | let component = WidgetComponent::get(widget.key.id()); |
| 74 | |
| 75 | // let filter = options.filter; |
| 76 | |
| 77 | let label = LabelElement::new(&LabelProperties { |
| 78 | parent: Some(id), |
| 79 | x: 2.0, |
| 80 | y: 0.0, |
| 81 | // w: component.w, |
| 82 | // h: component.h, |
| 83 | // options: options.options.label, |
| 84 | mouse_input: false, |
| 85 | depth: widget.depth + 0.001, |
| 86 | internal_visible: widget.visible, |
| 87 | text: widget.text.clone(), |
| 88 | text_size: widget.text_size, |
| 89 | align: widget.align, |
| 90 | align_vertical: widget.align_vertical, |
| 91 | bounds_wrap: widget.bounds_wrap, |
| 92 | ..Default::default() |
| 93 | }); |
| 94 | |
| 95 | let edit = widget.text.clone(); |
| 96 | let index = edit.len() as i32; |
| 97 | |
| 98 | let display_char = widget.display_char; |
| 99 | |
| 100 | let instance = Self { |
| 101 | component, |
| 102 | filter: None, // TODO: DV |
| 103 | state: RefCell::new(TextEditState { |
| 104 | index, |
| 105 | composition_length: 0, |
| 106 | composition_start: 0, |
| 107 | composition: String::new(), |
| 108 | edit: edit.clone(), |
| 109 | display: String::new(), |
| 110 | display_char, |
| 111 | text: String::new(), |
| 112 | }), |
| 113 | label, |
| 114 | onchange: Signal::new(), |
| 115 | onchangeindex: Signal::new(), |
| 116 | oncommit: Signal::new(), |
| 117 | renderer: WidgetRenderFactory::global().get::<Self>(), |
| 118 | node, |
| 119 | }; |
| 120 | |
| 121 | instance.refresh(edit, false, true); |
| 122 | |
| 123 | instance |
| 124 | } |
| 125 | |