(замена вывода информации вместо pre() выводит информацию на отдельную форму или на любую переданную в класс форму)
- Code:
class Debyg extends QMainWindow { private $array_param = array(); private $debyger = 1; // on - 1 off - 0 private $dy = 12; // шаг строк private $tip_form = 0; // на какую форму выводить 1- новую 0 - ту что передали private $form; // форма дял вывода private $name_form; // имя формы public function __construct($name_form = '', $forms = '') { parent::__construct(); $this->name_form = $name_form; //сохраним имя формы if ($forms != '') { $this->form = $forms; //сохраним переданную форму } else { $this->tip_form = 1; } if ($this->debyger && $this->tip_form == 1) { $this->form = new QMainWindow; $this->form->centralWidget = new QWidget; $this->form->windowTitle = 'дебагер ' . $this->name_form; $this->form->show(); } } public function add($obj, $param)// { if (!$this->debyger) return; if (!isset($obj)) { echo('Передан не существующий элемент: <b>' . $param . '<b>'); return; } // сгенерим имя обекта и определим его тип $temp = $this->get_name_and_tip($obj, $param); $name_obj = $temp['name']; $tip_obj = $temp['tip']; // если уже есть в базе обьект то сразу показать if (array_key_exists($name_obj, $this->array_param)) { $this->display($obj, $name_obj, $param); } else { // если нет обьект то создать и показать $this->create($name_obj, $tip_obj); $this->display($obj, $name_obj, $param); } } private function get_name_and_tip($obj, $param) { $rez = array(); if (is_object($obj)) { $rez['name'] = $obj->uid . '_' . $param; $rez['tip'] = 'obj'; return ($rez); } if (is_array($obj)) { $rez['name'] = 'array_' . $param; $rez['tip'] = 'array'; return ($rez); } $rez['name'] = $param; $rez['tip'] = 'val'; return ($rez); } private function create($name_obj, $tip_obj) { $all = count($this->array_param); $ladel = new QLabel($this->form); $ladel->objectName = $name_obj; $ladel->x = 5; $ladel->y = $this->dy * $all; $ladel->width = 500; $this->array_param[$name_obj]['obj'] = $ladel; $this->array_param[$name_obj]['tip'] = $tip_obj; } private function display($obj, $name_obj, $param) { if ($this->debyger) {//&& isset($this->array_param[$name_obj]['obj']) $text = $param . ' = '; switch ($this->array_param[$name_obj]['tip']) { case 'obj': { $text .= '<b>' . $obj->$param . '</b> -' . $obj; break; } case 'val': { $text .= '<b>' . $obj . '</b>'; break; } } $this->array_param[$name_obj]['obj']->text = $text; $this->array_param[$name_obj]['obj']->show(); } } }
- Code:
class MainWindow extends QMainWindow { private $centralWidget; protected $array_object = array(); /// массив с элементами protected $debyg; private $pole_x = 50;// размер поля Х в шагах private $pole_y = 50; // размер поля У в шагах private $shag = 5; // шаг в пикселях //private $razmer_img=16; // размер квадрактной картинки private $speed = 35; // скорость обработки циктов (скорость движения) public function __construct() { parent::__construct(); $this->debyg = new debyg('главная ФОРМА',$this); $this->initComponents(); } private function initComponents() { $this->centralWidget = new QWidget; $razm_x = $this->shag * $this->pole_x;// --- $razm_y = $this->shag * $this->pole_y;/// ||| $this->test(); $this->resize($razm_x, $razm_y); $this->minimumWidth = $razm_x; $this->minimumHeight = $razm_y; $this->maximumWidth = $razm_x; $this->maximumHeight = $razm_y; $ladel = new QLabel($this); $ladel->text = 'text 1111'; $ladel->objectName = 'objectName 2222'; $ladel->x = 16; $ladel->y = 72; $ladel->width = 352; $this->debyg->add($ladel, 'text'); // объект - параметр (название) $this->debyg->add($ladel, 'objectName'); //$this->debyg->add($ladel, 'width'); $rr = 5; $this->debyg->add($rr, 'переменная rr');// переменная - название $this->debyg->add($this->shag, 'шаг'); //$this->debyg->add($rt, 'rrrrrr'); //$this->debyg->add($rtr, ''); $timer = new QTimer; $timer->interval = $this->speed; $timer->onTimeout = function() { $this->render(); }; $timer->start(); // запускаем таймер } // рисуем стрелку private function render() { $this->shag++; $this->debyg->add($this->shag, 'шаг'); } private function test() { $ladel = new QLabel($this); $ladel->text = 'text 1111'; $ladel->objectName = 'objectName 2222'; $ladel->x = 16; $ladel->y = 72; $ladel->width = 352; $this->array_object['test']['label'] = $ladel; } } $mainWindow = new MainWindow; $mainWindow->show(); qApp::exec();