class_name ProgressStepTracker extends Object var _step_name: String = "" var _message: String = "" var _subset_index: int = 0 var _subset_count: int = 0 var _tracker: ProgressTracker = null func _init(tracker: ProgressTracker, step_name: String): self._tracker = tracker self._step_name = step_name # set_substeps: set the number of substeps for this step func set_substeps(substeps: int): self._subset_count = substeps # substep: should be called when a substep is started func substep(message: String = ""): self._subset_index += 1 self._message = message self._tracker.progress_update.emit() # complete: should be called when this step is done func complete(): self._tracker.step_complete.emit() # get_step_name: get the name of this step func get_step_name() -> String: return self._step_name # get_message: get the message for this step func get_message() -> String: return self._message # get_substep_index: get the index of the current substep func get_substep_index() -> int: return self._subset_index # get_substep_count: get the number of substeps for this step func get_substep_count() -> int: return self._subset_count # get_progress: get the progress of this step func get_progress() -> float: if self._subset_count == 0: return 0.0 else: return float(self._subset_index) / float(self._subset_count)