def get_parameters_helper(self): """ Helper method to launch get_parameters_from_script on a thread so that it isn't run on the GUI thread, since it may be slow (when initializing pyimagej). """ # Reset previously parsed parameters self.clear_script_parameters() global stop_progress_thread stop_progress_thread = False progress_gauge = Gauge(Window.FindFocus(), -1, size=(100, -1)) progress_gauge.Show(True) parse_param_thread = Thread(target=self.get_parameters_from_script, name="Parse Parameters Thread", daemon=True) parse_param_thread.start() while True: # Wait for get_parameters_from_script to finish progress_gauge.Pulse() time.sleep(0.025) if stop_progress_thread: progress_gauge.Show(False) break if not self.initialization_failed: self.parsed_params = True
def gauge(element, instance: wx.Gauge) -> wx.Object: props = element['props'] set_basic_props(instance, props) if props.get('range'): instance.SetRange(props['range']) if props.get('pulse', False): instance.Pulse() return instance
class InfiniteProgressBarDialog(Dialog): def __init__(self, parent, title, text): Dialog.__init__(self, parent, title=title, style=CAPTION | STAY_ON_TOP) sizer = BoxSizer(VERTICAL) self.label = StaticText(self, label=text) sizer.Add(self.label, flag=FLAG_ALL_AND_EXPAND) self.gauge = Gauge(self, style=GA_SMOOTH | GA_HORIZONTAL) sizer.Add(self.gauge, flag=FLAG_ALL_AND_EXPAND) self.close_event = Event() def show_progress(): while not self.close_event.is_set(): sleep(0.05) self.gauge.Pulse() self.EndModal(ID_OK) self.SetSizerAndFit(sizer) run_in_separate_thread(show_progress)