<?

class Ui_step {
	
	private $name = ''; //имя группы. Если его здесь не инициализировать, то оно не задается
	private $need_changed_images = array(); 

	function __construct($name) {
		$this->name = $name;
		$this->fields = array();
		
		// добавление кнопок запуска и повтора
		$this->buttons['run'] = get_ui("Fm->bt_run");
		$this->buttons['repeat'] = get_ui("Fm->repeat_" . $name);
		$this->buttons['next'] = get_ui("Fm->next_" . $name);
	}
	
	function apply_changed() {
		foreach($this->need_changed_images as $obj_name=>$path) {
			$obj =  get_ui('Fm->'.$obj_name);
			if($obj)
				$obj->loadFromFile($path);
		}

		$this->need_changed_images = array();

	}

	// добавить поле
	function add($name) {
		if(!$field = get_ui('Fm->'.$name)) {
			print "не найдено поле $name";
			return false;
		}
		
		$this->fields[$name] = $field;
	}
	
	// выполненный этап
	// у done групп блокировать все кроме кнопки "заново"
	function done() {
		//global $log;
		//$log->line('done_' . $this->name);
		
		//$this->visible_icon_done(1);
		$this->set_marker('done');
		//$this->set_bg('done');
		
		// поля
		$this->fields_enabled('process');//если 0 только буду блокироваться поля пройденных этапов

		// кнопки
		$this->bt_enabled('repeat', 1);
		$this->bt_enabled('next', 0);
	}
	
	// текущий этап
	function cur() {
		GLOBAL $INFO, $log;

		//$log->line('cur_' . $this->name);
		
		//$this->visible_icon_done(0);
		$this->set_marker('cur');
		//$this->set_bg('cur');
		
		//$this->head();

		//$log->line("2 rec_info $INFO[recovery_fname]");

		// поля
		if(empty($INFO['recovery_fname']))
			 $is_enabled = true;
		else $is_enabled = 'process';

		$this->fields_enabled($is_enabled);

		// кнопки
		$this->bt_enabled('repeat', 0);
		$this->bt_enabled('next', 1); // нам не нужно больше блокировать кнопку в анализе. А больше нигде эта опция пока не используется.
	}
	
	// недоступные (будущие этапы)
	// у будущих групп блокировать кнопки но не настройки
	function future() {
		//global $log;
		//$log->line('hidden_' . $this->name);
		
		//$this->visible_icon_done(0);
		$this->set_marker('def');
		//$this->set_bg('def');
		
		// поля
		$this->fields_enabled(1);

		// кнопки
		$this->bt_enabled('repeat', 0);
		$this->bt_enabled('next', 0);
	}
	
	// вкл/выкл всех полей
	// Нельзя делать приватным потому что вызывается и в коде
	// если all=true, то активируем не смотря на $field->enable_change=false
	//$is_enabled = 0, 1, process - значит этап в стадии выполнения
	function fields_enabled($is_enabled, $all=false) {
		GLOBAL $log, $Ui_fields;

		//$log->line("fields_enabled($is_enabled)");

		foreach($this->fields as $name=>$obj) {
			$field = $Ui_fields[$name];

			// не активируем поле если оно в списке неактивируемых
			if(!$all AND $is_enabled !== 'process' AND !$field->enable_change) {
				//$log->line("пропускаем поле $name");
				continue; 
			}

			if($is_enabled === 'process') {
				if($field->enable_process)
					 $enabled = true;
				else $enabled = false;
			}
			else {
				$enabled = $is_enabled;
			}

			//$log->line("$name $enabled | $is_enabled");

			$obj->enabled = $enabled;
		}

		//$log->line("fields_enabled_end");
	}


	function disk_legend_fields() {

	}

	// в одном месте вызывается за пределами класса родителя, поэтому нельзя делать приватным
	function bt_enabled($name, $is_enabled) {
		$bt = $this->buttons[$name];

		if($bt) {
			// для кнопок сделанных через TMimage
			if($name == 'repeat') {
				c('Fm->'.$bt->name)->visible = $is_enabled;
				//Bt_img::set_enabled($bt->name, $is_enabled); эта штука затеняла кнопку если она не активна
			}
			else 
				$bt->enabled = $is_enabled;
			//print "bt $name, $is_enabled \n";
		}
	}


	// не используется
	function head() {
		GLOBAL $Lang;

		$h1 = get_ui('Fm->cur_step_h1');
		$h1->caption = $Lang->get('h_' . $this->name);
	}

	// НЕ используется
	// $type = ''def |cur|last_value"
	function set_bg($type) {
		GLOBAL $GOP;

		$path = 'img/bg_step_'.$type.'.ico';
		$obj_name = 'bg_'.$this->name;
		$this->need_changed_images[$obj_name] =  $path;

		/*
		$bg =  get_ui('bg_'.$this->name);
		if($bg)
			$bg->loadFromFile($path);
		*/
	}

	// $type = ''def |cur"
	function set_marker($type) {
		GLOBAL $log;

		$path = 'img/marker_'.$type.'.ico';
		$obj_name = 'marker_'.$this->name;
		$this->need_changed_images[$obj_name] =  $path;	
		
		/*$obj =  get_ui('marker_'.$this->name);
		if($obj) {
			//$log->line('marker_'.$this->name);
			//$log->line('img/marker_'.$type.'.png');
			$obj->loadFromFile('img/marker_'.$type.'.png');
		}*/
	}
	
	/*
	private function visible_icon_done($is_visible) {
		$icon = get_ui('done_'. $this->name);
		if($icon) $icon->visible = $is_visible;
	}*/
}

?>