<?

// кнопки запуска этапов

class Bt_steps {

	private $unpress_label = ''; //надпись на кнопке когда она не нажата
	private $press = false;

	function __construct() {
	}


	function onClick($step) {
		GLOBAL $Ui_thread, $OP, $INFO, $log, $setting, $Lang;

		// нажата
		if($this->press) {
			$this->stop($step);
		}
		// не нажата
		else {
			$this->start($step);
		}
	}

	function start($step) {
		GLOBAL $Ui_thread, $OP, $INFO, $log, $setting, $Lang, $Ui_steps_story;

		// кнопка не всегда есть физически
		// поэтому важно вызывать через get_ui
		$button = get_ui('Fm->bt_run'); //get_ui('run_'.$this->step);

		logFile("onClick. не нажата");
		
		if($Ui_thread->run($step)) {
			// сохраняем надпись на кнопке. Поскольку у нас будет несколько языков и некоторые кнопки отличаются от стандартной Go
			if($button) {
				//$this->unpress_label = $button->caption;

				$step_info = Steps_info::$data[$step];

				if($step_info['not_to_stop'])
					 Ui_over::all_bt_run_enabled(false); //$button->enabled = 0; // просто делаем неактивной
				else $button->caption = $Lang->get('bt_run.pause');
			}

			$this->press = true;

			//c('bt_step_reset')->enabled = false;

			// отключаем настройки для текущего этапа
			$Ui_steps_story->steps[$step]->fields_enabled('process', true);

			// не запускать если имя этой кнопки отличается от OP['info']['step']
			//if($INFO['step'] != $this->step)
			logFile("onClick. не нажата. finish");
		}
	}

	function stop($step) {
		GLOBAL $Ui_thread, $OP, $INFO, $log, $setting, $Lang;

		// кнопка не всегда есть физически
		// поэтому важно вызывать через get_ui
		$button = get_ui('Fm->bt_run'); //get_ui('run_'.$this->step);


		logFile("onClick. Нажата");
		
		$this->press = false;

		//if($this->not_to_stop == false) { нельзя, потому что после выполнения таймер сам нажмет на кнопку чтобы до конца остановить поток


		// ожидание пока процесс словит 
		// эта хрень срабатывает даже при програмном нажатии когда процесс выполнен успешно, что приводит к ожидаю (в аналитике например)
		//sleep($Ui_thread->interval_check_handstop + 1);


		logFile("onClick. _stop()");
		// запускаем в самом конце чтобы Ui_thread->stop смог сгенерировать after_run_complete из которого можно было бы вызвать запуск потока снова. Иначе поток снова автоматом не включится корректно.
		$Ui_thread->stop($step);
		
		//$button->caption = $this->unpress_label;

		// если это кнопка анализа, то она блокируется. А здесь мы ее разблокируем.
		// не смотря на то что кнопка неактивна, на нее нажмет сама программа когда анализ выполнится
		Ui_over::all_bt_run_enabled(1);
		//$button->enabled = 1;

		// оформление кнопки run, доступность кнопки reset
		Ui_over::visual_bts_run_and_reset();

		logFile("onClick. _stop. finish");
		logFile("onClick. Нажата. Finish");
	}

}



?>