diff options
| author | dam <dam@gudinoff> | 2022-01-10 17:56:30 +0000 |
|---|---|---|
| committer | dam <dam@gudinoff> | 2022-01-10 17:56:30 +0000 |
| commit | 81b602620412fbad0429e841051c30c537a1b461 (patch) | |
| tree | 780bf47204aa13e41bd5c22e527f7c69f05e5bcc /logic | |
| parent | 5ba40857cdc770841d216a27e2a9e8bb3ebf3186 (diff) | |
| download | surgery-log-81b602620412fbad0429e841051c30c537a1b461.tar.zst surgery-log-81b602620412fbad0429e841051c30c537a1b461.zip | |
Split touch logic from stage
Diffstat (limited to 'logic')
| -rw-r--r-- | logic/stage.gd | 99 |
1 files changed, 5 insertions, 94 deletions
diff --git a/logic/stage.gd b/logic/stage.gd index dc42273..12457c9 100644 --- a/logic/stage.gd +++ b/logic/stage.gd @@ -1,11 +1,10 @@ -extends ScrollContainer +extends TouchVerticalContainer class_name Stage signal save # (database_entry: Dictionary) signal discard # () const FILTERS_FILE_PATH: String = "user://filters.csv" -const POINTER_VELOCITY_DECAYING_FACTOR: float = 2.5 var staged_entry := {} var filters := { @@ -44,8 +43,6 @@ var filters := { "xpto_29": null, }, } -var is_pointer_dragging := false -var pointer_drag_velocity := 0.0 onready var process_id := get_node("controls/process_id") as LineEdit onready var surgery_id := get_node("controls/surgery_id") as LineEdit @@ -62,40 +59,16 @@ onready var is_urgency := get_node("controls/is_urgency") as Button onready var notes := get_node("controls/notes") as LineEdit onready var save_button := get_node("controls/save") as Button onready var discard_button := get_node("controls/discard") as Button -onready var v_scroll_bar := get_v_scrollbar() as VScrollBar + + +func _init(): + exclude_controls = ["date_picker", "save", "discard"] func _ready(): save_button.connect("pressed", self, "save_action") discard_button.connect("pressed", self, "discard_action") - for it in get_node("controls").get_children(): - it = it as Control - match it.name: - "date_picker", "save", "discard": - pass - - _: - var drag_sensor = PointerInputSensor.new() - it.add_child(drag_sensor) - - drag_sensor.name = "drag_sensor" - drag_sensor.anchor_right = 1.0 - drag_sensor.anchor_bottom = 1.0 - - drag_sensor.connect("on_press", self, "pointer_input_handler") - drag_sensor.connect("on_drag", self, "pointer_input_handler") - drag_sensor.connect("on_end_drag", self, "pointer_input_handler") - drag_sensor.connect("on_click", self, "pointer_input_handler") - - it.connect("focus_entered", drag_sensor, "set_mouse_filter", [Control.MOUSE_FILTER_IGNORE]) - it.connect("focus_entered", drag_sensor, "mouse_default_cursor_shape", [Control.CURSOR_IBEAM]) - it.connect("focus_exited", drag_sensor, "set_mouse_filter", [Control.MOUSE_FILTER_STOP]) - it.connect("focus_exited", drag_sensor, "mouse_default_cursor_shape", [Control.CURSOR_ARROW]) - - if it is LineEdit: - it.connect("focus_exited", it, "deselect") - var auto_place := place.get_node("auto") as Button auto_place.connect("pressed", self, "auto_populate", ["place"]) @@ -112,14 +85,6 @@ func auto_selected(index: int, field: String): field_input.caret_position = field_input.text.length() - -func _process(delta: float): - # Apply drag movement inertia. - if is_pointer_dragging == false && abs(pointer_drag_velocity) > 0.5: - pointer_drag_velocity *= clamp((1.0 - POINTER_VELOCITY_DECAYING_FACTOR * delta), 0.0, 1.0) - v_scroll_bar.value -= pointer_drag_velocity * delta - - func save_action(): self.visible = false emit_signal("save", get_stage()) @@ -167,60 +132,6 @@ func get_stage() -> Dictionary: return staged_entry -func pointer_input_handler(pointer: PointerInputSensor.PointerInputData): - match pointer.action: - PointerInputSensor.PointerInputAction.ON_PRESS: - is_pointer_dragging = true - - PointerInputSensor.PointerInputAction.ON_DRAG: - is_pointer_dragging = true - pointer_drag_velocity = pointer.velocity.y - v_scroll_bar.value -= pointer.relative_position.y - - PointerInputSensor.PointerInputAction.ON_END_DRAG: - is_pointer_dragging = false - - PointerInputSensor.PointerInputAction.ON_CLICK: - - # @DAM Try this approach on the TouchItemList - - var target: Control = pointer.target.get_parent() - var position := target.get_global_mouse_position() - target.rect_global_position - - var button: Button = target.get_node("auto") - if button != null && button.get_rect().has_point(position): - button.grab_focus() -# button.emit_signal("button_down") - button.emit_signal("pressed") -# button.emit_signal("button_up") - else: - target.grab_focus() - return - - - var event_touch := InputEventScreenTouch.new() - event_touch.index = 0 - event_touch.position = position - - var event_mouse := InputEventMouseButton.new() - event_mouse.button_index = BUTTON_LEFT - event_mouse.button_mask = BUTTON_MASK_LEFT - event_mouse.position = position - - event_mouse.pressed = true - event_touch.pressed = true - target._gui_input(event_mouse) - target._gui_input(event_touch) - - target.grab_focus() - - event_mouse.pressed = false - event_touch.pressed = false - target._gui_input(event_mouse) - target._gui_input(event_touch) - - - func load_filters(file_path: String = FILTERS_FILE_PATH): var file := File.new() file.open(file_path, File.READ_WRITE) |
