aboutsummaryrefslogtreecommitdiff
path: root/logic/stage.gd
diff options
context:
space:
mode:
Diffstat (limited to 'logic/stage.gd')
-rw-r--r--logic/stage.gd150
1 files changed, 65 insertions, 85 deletions
diff --git a/logic/stage.gd b/logic/stage.gd
index 62e0a58..27962c6 100644
--- a/logic/stage.gd
+++ b/logic/stage.gd
@@ -4,21 +4,10 @@ class_name Stage
signal save # (database_entry: Dictionary)
signal discard # ()
-#onready var process_id: LineEdit = get_node("touch_scroll/controls/process_id")
-#onready var surgery_id: LineEdit = get_node("touch_scroll/controls/surgery_id")
-#onready var date: DatePicker = get_node("touch_scroll/controls/date_picker")
-#onready var place: LineEdit = get_node("touch_scroll/controls/place")
-#onready var anesthetic: LineEdit = get_node("touch_scroll/controls/anesthetic")
-#onready var first_assistant: LineEdit = get_node("touch_scroll/controls/first_assistant")
-#onready var type: LineEdit = get_node("touch_scroll/controls/type")
-#onready var sub_type: LineEdit = get_node("touch_scroll/controls/sub_type")
-#onready var sub_sub_type: LineEdit = get_node("touch_scroll/controls/sub_sub_type")
-#onready var pathology: LineEdit = get_node("touch_scroll/controls/pathology")
-#onready var intervention: LineEdit = get_node("touch_scroll/controls/intervention")
-#onready var is_urgency: Button = get_node("touch_scroll/controls/is_urgency")
-#onready var notes: LineEdit = get_node("touch_scroll/controls/notes")
-#onready var save_button: Button = get_node("touch_scroll/controls/save")
-#onready var discard_button: Button = get_node("touch_scroll/controls/discard")
+const POINTER_VELOCITY_DECAYING_FACTOR: float = 2.5
+
+var is_pointer_dragging := false
+var pointer_drag_velocity := 0.0
onready var process_id: LineEdit = get_node("controls/process_id")
onready var surgery_id: LineEdit = get_node("controls/surgery_id")
@@ -35,94 +24,46 @@ onready var is_urgency: Button = get_node("controls/is_urgency")
onready var notes: LineEdit = get_node("controls/notes")
onready var save_button: Button = get_node("controls/save")
onready var discard_button: Button = get_node("controls/discard")
+onready var v_scroll_bar: VScrollBar = get_v_scrollbar()
func _ready():
save_button.connect("pressed", self, "save_action")
discard_button.connect("pressed", self, "discard_action")
-
for it in get_node("controls").get_children():
-# print("%s" % it.name)
+ it = it as Control
match it.name:
"date_picker", "save", "discard":
- print("- %s" % it.name)
-
+ pass
+
_:
-# "first_assistant":
- print("+ %s" % it.name)
var drag_sensor = PointerInputSensor.new()
+ it.add_child(drag_sensor)
+
drag_sensor.name = "drag_sensor"
- drag_sensor.mouse_default_cursor_shape = Control.CURSOR_IBEAM
- (it as Control).add_child(drag_sensor)
drag_sensor.anchor_right = 1.0
drag_sensor.anchor_bottom = 1.0
- drag_sensor.connect("on_press", self, "on_press")
- drag_sensor.connect("on_drag", self, "on_drag")
- drag_sensor.connect("on_end_drag", self, "on_end_drag")
- drag_sensor.connect("on_click", self, "on_click")
- drag_sensor.on_process = funcref(self, "bazinga")
-
-
-# @DAM Cleanup this code.
-onready var v_scroll_bar: VScrollBar = get_v_scrollbar()
-export var scroll_velocity_decaying_factor: float = 2.5
-var drag_velocity := 0.0
-var is_dragging := false
+ 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")
-func bazinga(delta: float, pointer: PointerInputSensor):
- if (pointer.get_parent() as Control).has_focus():
- pointer.mouse_filter = Control.MOUSE_FILTER_IGNORE
- else:
- pointer.mouse_filter = Control.MOUSE_FILTER_STOP
func _process(delta: float):
- if is_dragging == false && abs(drag_velocity) > 0.5:
- drag_velocity *= clamp((1.0 - scroll_velocity_decaying_factor * delta), 0.0, 1.0)
- v_scroll_bar.value -= drag_velocity * delta
-
-func on_click(pointer: PointerInputSensor.PointerInputData):
- var target: Control = pointer.target.get_parent()
- var position := target.get_global_mouse_position() - target.rect_global_position
-
- 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 on_press(pointer: PointerInputSensor.PointerInputData):
- is_dragging = true
-
-func on_end_drag(pointer: PointerInputSensor.PointerInputData):
- is_dragging = false
-
-func on_drag(pointer: PointerInputSensor.PointerInputData):
- is_dragging = true
- drag_velocity = pointer.velocity.y
- v_scroll_bar.value -= pointer.relative_position.y
-
-
-
-
-
-
+ # 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():
@@ -179,3 +120,42 @@ func _notification(what: int):
discard_action()
+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:
+ var target: Control = pointer.target.get_parent()
+ var position := target.get_global_mouse_position() - target.rect_global_position
+
+ 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)
+
+