public function __construct(EventLoop $loop = null) { if ($loop === null) { $loop = \Kurses\EventLoopFactory::select(); } $this->loop = $loop; ncurses_init(); ncurses_cbreak(); ncurses_noecho(); $this->panels = []; if (ncurses_has_colors()) { ncurses_start_color(); ncurses_init_pair(1, NCURSES_COLOR_RED, NCURSES_COLOR_BLACK); } $this->cursor = new Cursor(null, null, false); $this->screen = new Screen(); $onKeyboardEvent = function (KeyboardEvent $keyboardEvent) { $this->handleKeyboardEvent($keyboardEvent); }; $onMouseEvent = function (MouseEvent $mouseEvent) { $this->handleMouseEvent($mouseEvent); }; $refreshScreen = function () { $this->refreshScreen(); }; $this->keyboard = new Keyboard($onKeyboardEvent); $this->mouse = new Mouse($onMouseEvent); $this->loop->every($refreshScreen, 200); stream_set_blocking(STDIN, FALSE); $this->loop->attachStreamHandler(STDIN, function () { $this->handleStdIn(); }); }
/** * Initiate our NCurses panels. */ private function init() { // Get Sizes $top = $right = $bottom = $left = 0; ncurses_getmaxyx(STDSCR, $bottom, $right); $this->lastBottom = $bottom; $this->lastRight = $right; // Panel Layouts $traceWidth = min($right / 2, 55); $traceHeight = $bottom; $debugWidth = $right - $traceWidth; $debugHeight = 8; $inputWidth = $debugWidth; $inputHeight = 3; $outputWidth = $debugWidth; $outputHeight = $bottom - $debugHeight - $inputHeight; $this->panels['trace'] = ncurses_newwin($traceHeight, $traceWidth, $top, $right - $traceWidth); ncurses_wborder($this->panels['trace'], 0, 0, 0, 0, 0, 0, 0, 0); ncurses_mvwaddstr($this->panels['trace'], 0, 2, "[ Logging ]"); ncurses_wmove($this->panels['trace'], 2, 2); $this->panels['debug'] = ncurses_newwin($debugHeight, $debugWidth, $bottom - $debugHeight, $left); $this->panels['input'] = ncurses_newwin($inputHeight, $inputWidth, $bottom - $debugHeight - $inputHeight, $left); $this->panels['output'] = ncurses_newwin($outputHeight, $outputWidth, $top, $left); ncurses_wborder($this->panels['output'], 0, 0, 0, 0, 0, 0, 0, 0); ncurses_mvwaddstr($this->panels['output'], 0, 2, "[ Output ]"); ncurses_wmove($this->panels['output'], 2, 2); ncurses_curs_set(0); ncurses_cbreak(); ncurses_noecho(); $this->redrawAll(); }
/** * Sets echo state * @param bool $state True of false * @see http://www.php.net/manual/en/function.ncurses-echo.php * @return Ncurses This object */ public function setEchoState($state) { if ($state) { ncurses_echo(); } else { ncurses_noecho(); } return $this; }
function ncurses_show_screen($showHelp) { // basic settings ncurses_noecho(); ncurses_curs_set(0); // set app title $title = "Red Ventures Selenium Runner"; // commands to be listed in help $commands = array('q' => 'quit', 'r' => 'run selected tests', 'space' => 'toggle test selection', 'enter' => 'run highlighted tests', 'up' => 'move up', 'down' => 'move down', 'pgUp' => 'scroll description up', 'pgDown' => 'scroll description down', '?/h' => 'show this help panel'); // create a fullscreen window $fullscreen = ncurses_newwin(0, 0, 0, 0); ncurses_getmaxyx($fullscreen, $max_y, $max_x); // enter the main event loop $do_loop = 1; while ($do_loop) { // calculate width of help window columns $c = $t = 0; foreach ($commands as $cmd => $txt) { $c = strlen($cmd) > $c ? strlen($cmd) : $c; $t = strlen($txt) > $t ? strlen($txt) : $t; } $h = count($commands); // calculate the help windows height if ($showHelp) { if (!empty($helpWin)) { ncurses_delwin($helpWin); } $helpWin = ncurses_newwin($h + 4, $c + $t + 5, ($max_y - $h - 4) / 2, ($max_x - $c - $t - 5) / 2); ncurses_wborder($helpWin, 0, 0, 0, 0, 0, 0, 0, 0); $i = 0; foreach ($commands as $cmd => $txt) { ncurses_mvwaddstr($helpWin, 2 + $i, 2, $cmd); ncurses_mvwaddstr($helpWin, 2 + $i, 2 + $c + 1, $txt); } if (!empty($helpWin)) { ncurses_wrefresh($helpWin); } else { ncurses_refresh(); } } if (empty($helpWin)) { $key = ncurses_getch(); } else { $key = ncurses_wgetch($helpWin); } switch ($key) { case 27: ncurses_flushinp(); $do_loop = 0; break; default: $showHelp = $showHelp === true ? false : true; ncurses_show_screen($showHelp); } } }
public function __construct($prompt) { ncurses_init(); // Create a full-screen window $this->window = ncurses_newwin(0, 0, 0, 0); $this->prompt = $prompt; // Disable echoing the characters without our control ncurses_noecho(); $this->drawPrompt(); }
/** * Construct */ public function start() { ncurses_keypad($this->getWindow(), true); ncurses_noecho(); $this->setBorder(); ncurses_wattron($this->getWindow(), NCURSES_A_BOLD); ncurses_mvwaddstr($this->getWindow(), 0, 1, $this->title); ncurses_wattroff($this->getWindow(), NCURSES_A_BOLD); ncurses_mvwaddstr($this->getWindow(), 2, 2, $this->text); $this->processing(); }
public function __construct(EventLoop $loop) { $this->loop = $loop; ncurses_init(); ncurses_cbreak(); ncurses_noecho(); $this->panels = []; if (ncurses_has_colors()) { ncurses_start_color(); } $this->cursor = new Cursor(null, null, false); $this->loop->every([$this, 'refresh'], 200); stream_set_blocking(STDIN, FALSE); $this->loop->attachStreamHandler(STDIN, [$this, 'handleStdIn']); }
public function __construct() { $ncurse = ncurses_init(); $this->fullscreen = ncurses_newwin(0, 0, 0, 0); ncurses_noecho(); ncurses_border(0, 0, 0, 0, 0, 0, 0, 0); $this->small = ncurses_newwin(10, 30, 7, 25); ncurses_wborder($this->small, 0, 0, 0, 0, 0, 0, 0, 0); ncurses_refresh(); ncurses_attron(NCURSES_A_REVERSE); ncurses_mvaddstr(0, 10, "---Sample Title---"); ncurses_attroff(NCURSES_A_REVERSE); ncurses_mvwaddstr($this->small, 5, 5, "Initial screen"); ncurses_wrefresh($this->small); }
public function InitialiseTerminal() { $this->ncursesess = ncurses_init(); ncurses_noecho(); // turn off echo to screen ncurses_start_color(); // initialise colour //ncurses_cbreak(); // turn off buffering ncurses_curs_set(0); /* * Initialise the colour pairs that we'll use. First param is a define so we don't have to use * magic numbers all through the app. */ ncurses_init_pair(NC_PAIR_IRCOUT, NCURSES_COLOR_WHITE, NCURSES_COLOR_BLACK); ncurses_init_pair(NC_PAIR_INPUT, NCURSES_COLOR_WHITE, NCURSES_COLOR_BLUE); ncurses_init_pair(NC_PAIR_INPUT_ACTIVE, NCURSES_COLOR_RED, NCURSES_COLOR_BLUE); }
public function openCLI($title = NULL) { // 1. initiate ncurses ncurses_init(); // Create a full-screen window $this->window = ncurses_newwin(0, 0, 0, 0); // Disable echoing the characters without our control ncurses_noecho(); // let ncurses know we wish to use the whole screen $screen = ncurses_newwin(0, 0, 0, 0); // get screen size ncurses_getmaxyx($screen, $this->rows, $this->cols); // draw a border around the whole thing. ncurses_border(0, 0, 0, 0, 0, 0, 0, 0); // set the application title if (!is_null($title)) { ncurses_mvaddstr(0, 2, " " . $title . " "); } // paint window ncurses_refresh(); }
function __construct() { if (!self::$cwt) { self::$cwt = $this; } $this->buffer = new \Data\FifoQueue(50); if (!function_exists('\\ncurses_init')) { die("This application requires ncurses to work."); } \ncurses_init(); if (ncurses_has_colors()) { $this->initColors(); } ncurses_curs_set(0); ncurses_noecho(); ncurses_mousemask(NCURSES_ALL_MOUSE_EVENTS); $oldmask = null; $newmask = NCURSES_BUTTON1_CLICKED | NCURSES_BUTTON1_RELEASED | NCURSES_BUTTON1_PRESSED | NCURSES_BUTTON2_CLICKED | NCURSES_BUTTON2_RELEASED | NCURSES_BUTTON1_PRESSED | NCURSES_BUTTON3_CLICKED | NCURSES_BUTTON3_RELEASED | NCURSES_BUTTON1_PRESSED | NCURSES_BUTTON4_CLICKED | NCURSES_BUTTON4_RELEASED | NCURSES_BUTTON1_PRESSED; $mask = ncurses_mousemask($newmask, $oldmask); $this->fpin = fopen("php://stdin", "r"); //open direct input stream for reading stream_set_blocking($this->fpin, 0); //set non-blocking mode }
/** * Application class constructor * * @param int $bufferMode The desired ncurses buffer mode */ public function __construct($bufferMode = null) { // Buffer mode muse be an integer if (isset($bufferMode) && !is_int($bufferMode)) { throw new Exception("Buffer mode must be an integer"); } // Initialize ncurses & save terminal state ncurses_init(); ncurses_savetty(); // Initialize buffer mode switch ($bufferMode) { case self::BUFFER_CBREAK: ncurses_cbreak(); break; default: if (isset($bufferMode) && $bufferMode !== self::BUFFER_RAW) { throw new Exception("Invalid buffer mode"); } ncurses_raw(); } // Do not echo characters ncurses_noecho(); // Create an instance of the terminal $this->terminal = new Terminal(); // Initialize colors for capable terminals if ($this->terminal->hasColor()) { ncurses_start_color(); } // Create the events manager $this->eventsMananager = new EventsManager(); // Create the states manager $this->statesManager = new StatesManager(); // The application has been initialized $this->initialized = true; }
function menu_check_list($params) { ############################################################################################### if (!is_array($params) || empty($params)) { trigger_error('wrong_params'); return NULL; } $menu = isset($params['items']) ? $params['items'] : NULL; $rows = isset($params['rows']) ? (int) $params['rows'] : 0; $cols = isset($params['cols']) ? (int) $params['cols'] : 0; $centered = empty($params['centered']) ? 0 : 1; $y_menu = isset($params['y']) ? (int) $params['y'] : 0; $x_menu = isset($params['x']) ? (int) $params['x'] : 0; if (!is_array($menu) || empty($menu) || $rows <= 0 || $cols <= 0 || $y_menu < 0 || $x_menu < 0) { trigger_error('wrong params'); return NULL; } $keys = array_keys($menu); $n_menu = count($keys); $items = array(); $checked = array(); $current = 0; $width = 0; $height = $n_menu + 2; $i = 0; $k = NULL; $i_checked = NULL; for ($i = 0; $i < $n_menu; $i++) { $k = $keys[$i]; $i_checked = isset($menu[$k][1]) && $menu[$k][1] == 1 ? 1 : 0; $items[$i] = ' [' . ($i_checked ? '*' : ' ') . '] ' . $menu[$k][0]; $width = max($width, strlen($items[$i])); $checked[$i] = $i_checked; } for ($i = 0; $i < $n_menu; $i++) { $items[$i] = $items[$i] . str_repeat(' ', 2 + $width - strlen($items[$i])); } $width += 4; if ($centered) { $r = $rows - $height >> 1; $c = $cols - $width >> 1; } $window = ncurses_newwin($height, $width, $r, $c); if (empty($window)) { trigger_error('unable to create window'); return NULL; } ncurses_wborder($window, 0, 0, 0, 0, 0, 0, 0, 0); $n_items = count($items); for ($i = 0; $i < $n_items; $i++) { if ($i == $current) { ncurses_wattron($window, NCURSES_A_REVERSE); } ncurses_mvwaddstr($window, 1 + $i, 1, $items[$i]); if ($i == $current) { ncurses_wattroff($window, NCURSES_A_REVERSE); } } ncurses_wrefresh($window); ncurses_keypad($window, TRUE); ncurses_noecho(); ncurses_curs_set(0); $do_loop = 1; $save_result = 0; while ($do_loop) { $key = ncurses_wgetch($window); $move = 0; switch ($key) { case NCURSES_KEY_UP: if ($current > 0) { $move = -1; } break; case NCURSES_KEY_DOWN: if ($current < $n_menu - 1) { $move = 1; } break; case XCURSES_KEY_LF: case XCURSES_KEY_CR: $do_loop = 0; $save_result = 1; break; case XCURSES_KEY_SPACE: if ($checked[$current]) { $checked[$current] = 0; $items[$current] = ' [ ] ' . substr($items[$current], 5); } else { $checked[$current] = 1; $items[$current] = ' [*] ' . substr($items[$current], 5); } ncurses_wattron($window, NCURSES_A_REVERSE); ncurses_mvwaddstr($window, 1 + $current, 1, $items[$current]); ncurses_wattroff($window, NCURSES_A_REVERSE); ncurses_wrefresh($window); break; case XCURSES_KEY_ESC: ncurses_flushinp(); $do_loop = 0; break; } if ($move) { ncurses_mvwaddstr($window, 1 + $current, 1, $items[$current]); $current += $move; ncurses_wattron($window, NCURSES_A_REVERSE); ncurses_mvwaddstr($window, 1 + $current, 1, $items[$current]); ncurses_wattroff($window, NCURSES_A_REVERSE); ncurses_wrefresh($window); } } ncurses_delwin($window); $result = NULL; if ($save_result) { for ($i = 0; $i < $n_menu; $i++) { $result[$keys[$i]] = $checked[$i]; } } return $result; }
function dialog($params) { ############################################################################################### if (empty($params) || !is_array($params)) { trigger_error('params must be non-empty array'); return NULL; } $message = isset($params['message']) ? $params['message'] : ''; $buttons = !empty($params['buttons']) && is_array($params['buttons']) ? $params['buttons'] : array('OK'); $n_buttons = count($buttons); for ($i = 0; $i < $n_buttons; $i++) { $buttons[$i] = ' ' . $buttons[$i] . ' '; } $parent_rows = isset($params['rows']) && $params['rows'] > 0 ? (int) $params['rows'] : 25; $parent_cols = isset($params['cols']) && $params['cols'] > 0 ? (int) $params['cols'] : 80; if (empty($message) || empty($buttons) || $parent_rows <= 0 || $parent_cols <= 0) { trigger_error('wrong params'); return NULL; } $message_lines = split("\n", $message); $message_width = 0; $n_message_lines = count($message_lines); for ($i = 0; $i < $n_message_lines; $i++) { $message_width = max(strlen($message_lines[$i]), $message_width); } $buttons_delim = ' '; $buttons_delim_len = strlen($buttons_delim); $buttons_len = strlen(implode($buttons_delim, $buttons)); $width = 4 + max($buttons_len + 2 * $buttons_delim_len, $message_width); $height = 4 + $n_message_lines; $dlg_y = $parent_rows > $height ? $parent_rows - $height >> 1 : 1; $dlg_x = $parent_cols > $width ? $parent_cols - $width >> 1 : 1; $window = ncurses_newwin($height, $width, $dlg_y, $dlg_x); if (empty($window)) { trigger_error('unable to create window'); return NULL; } ncurses_wborder($window, 0, 0, 0, 0, 0, 0, 0, 0); $i_x = 0; $i_y = 0; for ($i = 0; $i < $n_message_lines; $i++) { $i_y = 1 + $i; $i_x = 1 + ($width - 2 - strlen($message_lines[$i]) >> 1); ncurses_mvwaddstr($window, $i_y, $i_x, rtrim($message_lines[$i])); } $buttons_data = array(); $buttons_shift_x = 1 + ($width - 1 - $buttons_len >> 1); $buttons_shift_y = 2 + $n_message_lines; $i_title = ''; $i_x = $buttons_shift_x; for ($i = 0; $i < $n_buttons; $i++) { $i_title = $buttons[$i]; $buttons_data[] = array('x' => $i_x, 's' => $i_title); if (0 == $i) { ncurses_wattron($window, NCURSES_A_REVERSE); } ncurses_mvwaddstr($window, $buttons_shift_y, $i_x, $i_title); if (0 == $i) { ncurses_wattroff($window, NCURSES_A_REVERSE); } $i_x += strlen($i_title) + $buttons_delim_len; } ncurses_wrefresh($window); ncurses_keypad($window, TRUE); ncurses_curs_set(0); ncurses_noecho(); $result = -1; $do_loop = 1; $move = 0; $current = 0; while ($do_loop) { $key = ncurses_wgetch($window); $move = 0; switch ($key) { case NCURSES_KEY_LEFT: if ($current > 0) { $move = -1; } break; case NCURSES_KEY_RIGHT: if ($current < $n_buttons - 1) { $move = 1; } break; case XCURSES_KEY_LF: case XCURSES_KEY_CR: $result = $current; $do_loop = 0; break; case XCURSES_KEY_ESC: $do_loop = 0; break; } if (0 == $do_loop) { ncurses_flushinp(); } elseif ($move) { ncurses_mvwaddstr($window, $buttons_shift_y, $buttons_data[$current]['x'], $buttons_data[$current]['s']); $current += $move; ncurses_wattron($window, NCURSES_A_REVERSE); ncurses_mvwaddstr($window, $buttons_shift_y, $buttons_data[$current]['x'], $buttons_data[$current]['s']); ncurses_wattroff($window, NCURSES_A_REVERSE); ncurses_wrefresh($window); } } ncurses_delwin($window); return $result; }
for ($i = 0; $i < $n_lines; $i++) { $window_width = max($window_width, strlen($lines[$i])); } $window_width += 4; $x_coords = array(10, 14, 18); $y_coords = array(10, 12, 8); for ($i = 0; $i < 3; $i++) { $windows[$i] = ncurses_newwin(4 + $n_lines, $window_width, $y_coords[$i], $x_coords[$i]); ncurses_wborder($windows[$i], 0, 0, 0, 0, 0, 0, 0, 0); ncurses_wattron($windows[$i], NCURSES_A_REVERSE); ncurses_mvwaddstr($windows[$i], 0, 2, ' window #' . $i . ' '); ncurses_wattroff($windows[$i], NCURSES_A_REVERSE); for ($j = 0; $j < $n_lines; $j++) { ncurses_mvwaddstr($windows[$i], 2 + $j, 2, $lines[$j]); } ncurses_wrefresh($windows[$i]); $panels[$i] = ncurses_new_panel($windows[$i]); } ncurses_update_panels(); ncurses_curs_set(0); ncurses_noecho(); $i = 0; $k = NULL; while (XCURSES_KEY_ESC != $k) { $k = ncurses_getch(); ncurses_top_panel($panels[$i % 3]); ncurses_update_panels(); ncurses_doupdate(); $i++; } ncurses_end();
function dlg_input($params = array()) { ############################################################################################### $title = isset($params['title']) ? $params['title'] : NULL; $max_length = isset($params['max_len']) ? (int) $params['max_len'] : 10; $dlg_rows = isset($params['dlg_cols']) ? (int) $params['dlg_cols'] : 3; $dlg_cols = isset($params['dlg_cols']) ? (int) $params['dlg_cols'] : 40; $parent_cols = isset($params['cols']) ? (int) $params['cols'] : NULL; $parent_rows = isset($params['rows']) ? (int) $params['rows'] : NULL; $dlg_x = (int) (($parent_cols - $dlg_cols) / 2); if ($dlg_x < 0) { $dlg_x = 0; } $dlg_y = (int) (($parent_rows - $dlg_rows) / 2); if ($dlg_y < 0) { $dlg_y = 0; } if ($max_length <= 0 || $dlg_rows <= 0 || $dlg_cols <= 0) { trigger_error('wrong params'); return NULL; } $dlg_window = ncurses_newwin($dlg_rows, $dlg_cols, $dlg_y, $dlg_x); if (empty($dlg_window)) { return NULL; } ncurses_wborder($dlg_window, 0, 0, 0, 0, 0, 0, 0, 0); if ($title) { ncurses_wattron($dlg_window, NCURSES_A_REVERSE); ncurses_mvwaddstr($dlg_window, 0, 2, ' ' . $title . ' '); ncurses_wattroff($dlg_window, NCURSES_A_REVERSE); } ncurses_curs_set(1); ncurses_wmove($dlg_window, 2, 2); ncurses_wrefresh($dlg_window); $do_getch = 1; $input_val = ''; $input_char = ''; $input_len = 0; $cursor_x = 2; $cursor_y = 1; ncurses_wmove($dlg_window, $cursor_y, $cursor_x); ncurses_noecho(); ncurses_keypad($dlg_window, TRUE); while ($do_getch) { $key_code = ncurses_wgetch($dlg_window); if ($key_code == XCURSES_KEY_CR || $key_code == XCURSES_KEY_LF) { $do_getch = 0; } elseif ($key_code == NCURSES_KEY_BACKSPACE) { if ($input_len > 0) { $input_len--; $input_val = substr($input_val, 0, $input_len); $cursor_x--; ncurses_mvwaddstr($dlg_window, $cursor_y, $cursor_x, ' '); ncurses_wmove($dlg_window, $cursor_y, $cursor_x); } } elseif ($key_code < XCURSES_KEY_PRINTABLE_MIN || $key_code > XCURSES_KEY_PRINTABLE_MAX) { continue; } elseif ($input_len < $max_length) { $input_val .= $input_char = chr($key_code); $input_len++; $cursor_x++; ncurses_waddstr($dlg_window, $input_char); } } ncurses_delwin($dlg_window); return $input_val; }
public function initWindow() { ncurses_init(); ncurses_noecho(); ncurses_border(0, 0, 0, 0, 0, 0, 0, 0); ncurses_refresh(); $this->paneMain = new Pane(0, 0, 0, 0); $this->paneLeft = new MenuPane($this->paneMain->height, 24, 0, 0); $this->paneRight = new RoomPane($this->paneMain->height - 2, $this->paneMain->width - 23, 0, 23); $this->paneInput = new Pane(3, $this->paneMain->width - 23, $this->paneMain->height - 3, 23); $this->paneLeft->isBordered = true; $this->paneRight->isBordered = true; $this->paneInput->isBordered = true; $this->paneLeft->slack =& $this->slack; $this->paneRight->slack =& $this->slack; $this->paneInput->slack =& $this->slack; $this->paneLeft->currentChannel =& $this->currentChannel; $this->paneRight->currentChannel =& $this->currentChannel; $this->paneInput->currentChannel =& $this->currentChannel; }
protected function initScreen() { ncurses_curs_set(0); ncurses_noecho(); $fullscreen = ncurses_newwin(0, 0, 0, 0); ncurses_getmaxyx($fullscreen, $this->screenMaxHeight, $this->screenMaxWidth); ncurses_delwin($fullscreen); //COLOR SCHEMES ncurses_start_color(); // text color, background color /* COLOR_BLACK 0 COLOR_RED 1 COLOR_GREEN 2 COLOR_YELLOW 3 COLOR_BLUE 4 COLOR_MAGENTA 5 COLOR_CYAN 6 COLOR_WHITE 7 */ ncurses_init_pair(1, NCURSES_COLOR_WHITE, NCURSES_COLOR_RED); ncurses_init_pair(2, NCURSES_COLOR_BLACK, NCURSES_COLOR_WHITE); ncurses_init_pair(3, NCURSES_COLOR_WHITE, NCURSES_COLOR_WHITE); ncurses_init_pair(4, NCURSES_COLOR_BLACK, NCURSES_COLOR_RED); ncurses_init_pair(5, NCURSES_COLOR_WHITE, NCURSES_COLOR_BLUE); ncurses_init_pair(6, NCURSES_COLOR_YELLOW, NCURSES_COLOR_BLUE); ncurses_init_pair(7, NCURSES_COLOR_BLUE, NCURSES_COLOR_WHITE); ncurses_color_set(5); ncurses_erase(); ncurses_mvhline(0, 0, 0, $this->screenMaxWidth); ncurses_attron(NCURSES_A_BOLD); ncurses_mvaddstr(0, 1, $this->titlePageHeader); ncurses_attroff(NCURSES_A_BOLD); for ($y = 1; $y < $this->screenMaxHeight; $y++) { ncurses_mvhline($y, 0, 32, $this->screenMaxWidth); } ncurses_refresh(); }
function _init_screen() { ncurses_curs_set(0); ncurses_noecho(); $fullscreen = ncurses_newwin(0, 0, 0, 0); ncurses_getmaxyx($fullscreen, $this->_screen_max_height, $this->_screen_max_width); ncurses_delwin($fullscreen); ncurses_start_color(); ncurses_init_pair(1, NCURSES_COLOR_WHITE, NCURSES_COLOR_RED); ncurses_init_pair(4, NCURSES_COLOR_BLACK, NCURSES_COLOR_RED); ncurses_init_pair(2, NCURSES_COLOR_BLACK, NCURSES_COLOR_WHITE); ncurses_init_pair(3, NCURSES_COLOR_WHITE, NCURSES_COLOR_WHITE); ncurses_init_pair(5, NCURSES_COLOR_WHITE, NCURSES_COLOR_BLUE); ncurses_init_pair(6, NCURSES_COLOR_YELLOW, NCURSES_COLOR_BLUE); ncurses_init_pair(7, NCURSES_COLOR_YELLOW, NCURSES_COLOR_WHITE); ncurses_color_set(1); ncurses_erase(); ncurses_mvhline(0, 0, 0, $this->_screen_max_width); ncurses_attron(NCURSES_A_BOLD); ncurses_mvaddstr(0, 1, $this->title_page_header); ncurses_attroff(NCURSES_A_BOLD); for ($y = 1; $y < $this->_screen_max_height; $y++) { ncurses_mvhline($y, 0, 32, $this->_screen_max_width); } ncurses_refresh(); }
/** * Renders the dump */ public function render() { // initialize ncurses window ncurses_init(); ncurses_curs_set(0); ncurses_noecho(); ncurses_cbreak(); ncurses_start_color(); ncurses_use_default_colors(); ncurses_init_pair(self::COLOR_RED, NCURSES_COLOR_RED, -1); ncurses_init_pair(self::COLOR_GREEN, NCURSES_COLOR_GREEN, -1); ncurses_init_pair(self::COLOR_YELLOW, NCURSES_COLOR_YELLOW, -1); ncurses_init_pair(self::COLOR_BLUE, NCURSES_COLOR_BLUE, -1); ncurses_init_pair(self::COLOR_MAGENTA, NCURSES_COLOR_MAGENTA, -1); ncurses_init_pair(self::COLOR_CYAN, NCURSES_COLOR_CYAN, -1); ncurses_init_pair(self::COLOR_WHITE, NCURSES_COLOR_WHITE, -1); ncurses_init_pair(self::COLOR_HIGHLIGHTED_DEFAULT, 0, NCURSES_COLOR_WHITE); ncurses_init_pair(self::COLOR_HIGHLIGHTED_RED, NCURSES_COLOR_RED, NCURSES_COLOR_WHITE); ncurses_init_pair(self::COLOR_HIGHLIGHTED_GREEN, NCURSES_COLOR_GREEN, NCURSES_COLOR_WHITE); ncurses_init_pair(self::COLOR_HIGHLIGHTED_YELLOW, NCURSES_COLOR_YELLOW, NCURSES_COLOR_WHITE); ncurses_init_pair(self::COLOR_HIGHLIGHTED_BLUE, NCURSES_COLOR_BLUE, NCURSES_COLOR_WHITE); ncurses_init_pair(self::COLOR_HIGHLIGHTED_MAGENTA, NCURSES_COLOR_MAGENTA, NCURSES_COLOR_WHITE); ncurses_init_pair(self::COLOR_HIGHLIGHTED_CYAN, NCURSES_COLOR_CYAN, NCURSES_COLOR_WHITE); ncurses_init_pair(self::COLOR_HIGHLIGHTED_WHITE, NCURSES_COLOR_WHITE, NCURSES_COLOR_BLACK); // create a dummy pad which will receive user inputs $this->windowDummy = ncurses_newpad(1, 1); ncurses_keypad($this->windowDummy, true); // run interface $continue = true; $this->currentRenderer = $this->rendererVarDump; $this->createTitleWindow(); $this->createFooterWindow(); $this->refreshTitle(); $this->refreshFooter(); while ($continue) { $this->currentRenderer->refresh(); $key = ncurses_wgetch($this->windowDummy); $continue = $this->onKeypress($key); } ncurses_end(); }