2017 © Pedro Peláez
 

library ncursesobjects

This library implements ncurses functionality in OOP way.

image

wapmorgan/ncursesobjects

This library implements ncurses functionality in OOP way.

  • Tuesday, February 13, 2018
  • by wapmorgan
  • Repository
  • 1 Watchers
  • 14 Stars
  • 180 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 4 Forks
  • 0 Open issues
  • 2 Versions
  • 3 % Grown

The README.md

Ncurses Objects

This is a php library that provides ncurses functionality in OOP interface., (*1)

Composer package Latest Stable Version Total Downloads License Latest Unstable Version, (*2)

  1. Basics
  2. Installation
  3. Simple application example
  4. API
  5. Installation of ncurses binding

Basics

Structure, (*3)

  1. There's 4 main classes:, (*4)

    1. Ncurses - main object to act with Ncurses.
    2. Window - an object that represents a ncurses windows.
    3. Panel - an object that represents a window panels.
    4. Terminal - an object to act with Terminal

    And 4 additional classes:, (*5)

    1. Colors - all colors available in Ncurses
    2. Keys - all keys
    3. MouseEvents - all events from Mouse
    4. WindowStyle - a helper to create style of windows
  2. How it works:
    1. ncurses initiation
    2. windows making & filling with text
    3. refresh() calling
    4. go to step 2
  3. Read comments and see examples
  4. Ncurses in PHP tutorial: http://devzone.zend.com/173/using-ncurses-in-php/ (on russian).
  5. Ncurses tutorial: http://invisible-island.net/ncurses/ncurses-intro.html, docs: http://pubs.opengroup.org/onlinepubs/007908799/xcurses/curses.h.html

Installation

Install it via Composer:, (*6)

composer require wapmorgan/ncursesobjects dev-master

Simple application example

  1. Create the main object and setup it, (*7)

    $ncurses = new Ncurses;
    $ncurses
        ->setEchoState(false)
        ->setNewLineTranslationState(true)
        ->setCursorState(Ncurses::CURSOR_INVISIBLE)
        ->refresh();
    
  2. Create the main window, (*8)

    $mainWindow = new Window;
    $mainWindow
        ->border()
        ->title('Hello! Today is '.date('d.m.Y'))
        ->refresh();
    
  3. Create a small window 10x10 in the center of the main window, (*9)

    $window = Window::createCenteredOf($mainWindow, 10, 10);
    $window
        ->border()
        ->moveCursor(3, 4)
        ->drawStringHere('OK!')
        ->refresh();
    
  4. Wait for input to see windows, (*10)

    while (true) {
        $ncurses->inputChar();
    sleep(1);
    }
    
  5. Close ncurses session and clear the screen (you need do it manually if your script should show any data in normal mode), (*11)

    unset($ncurses);
    

API

Main classes

Ncurses - __construct() - Initializes Ncurses session - getTerminal() - Returns an instance of Terminal - setEchoState(bool $state) - Sets echo state - setNewLineTranslationState($state) - Sets nl state - setCursorState($state) - Sets cursor state. Applicable values are: - Ncurses::CURSOR_INVISIBLE - Ncurses::CURSOR_NORMAL - Ncurses::CURSOR_VISIBLE - moveOutput($y, $x) - Moves cursor - refresh() - Refreshes main window - beep() - Beep (makes terminal sound)** - getCh() - Reades a char from keyboard - unGetCh($ch) - Reverse function - updatePanels() - Refreshes the virtual screen to reflect the relations between panels in the stack - insertChar($char) - Inserts a char at current position - insertDeleteLines($count) - Inserts a dl-char - __destruct() - Ends Ncurses session, (*12)

Terminal - hasKey($keycode) - Checks for key - hasColors() - Checks for colors support - hasIC() - Check for insert- and delete-capabilities - hasIL() - Check for line insert- and delete-capabilities - allAtributes() - Returns all terminal attributes - termName() - Returns short name of terminal - longName() - Returns full name of terminal, (*13)

Window - __construct($columns = 0, $rows = 0, $x = 0, $y = 0) - Creates a new window - static createCenteredOf(Window $parentWindow, $columns, $rows) - Creates a new window placed in the center of another window - getWindow() - Returns raw ncurses resource - getSize(&$columns, &$rows) - Returns array with size and fill arguments with window size - border($left = 0, $right = 0, $top = 0, $bottom = 0, $tl_corner = 0, $tr_corner = 0, $bl_corner = 0, $br_corner = 0) - Draws a border with different chars - borderStyle($style) - Draws a border with one of styles - refresh() - Refreshes window - title($title) - Draws a window title - status($status) - Draws a window status - erase() - Erases window - moveCursor($x, $y) - Moves cursor - drawStringHere($string, $attributes = 0) - Draws string with attributes - makePanel() - Creates a new panel of this window - getPanel() - Returns panel of this window, (*14)

Panel - show() - Shows a panel - hide() - Hides panel - putOnTop() - Puts panel on top - putOnBottom() - Puts panel on bottom, (*15)

Additional classes

Colors - Colors::COLOR_BLACK - Colors::COLOR_WHITE - Colors::COLOR_RED - Colors::COLOR_GREEN - Colors::COLOR_YELLOW - Colors::COLOR_BLUE - Colors::COLOR_CYAN - Colors::COLOR_MAGENTA, (*16)

Keys - Keys::KEY_F1 - Keys::KEY_F2 - Keys::KEY_F3 - Keys::KEY_F4 - Keys::KEY_F5 - Keys::KEY_F6 - Keys::KEY_F7 - Keys::KEY_F8 - Keys::KEY_F9 - Keys::KEY_F10 - Keys::KEY_F11 - Keys::KEY_F12 - Keys::KEY_F13 - Keys::KEY_F14 - Keys::KEY_F15 - Keys::KEY_F16 - Keys::KEY_F17 - Keys::KEY_F18 - Keys::KEY_F19 - Keys::KEY_F20 - Keys::KEY_F21 - Keys::KEY_F22 - Keys::KEY_F23 - Keys::KEY_F24 - Keys::KEY_F25 - Keys::KEY_F26 - Keys::KEY_F27 - Keys::KEY_F28 - Keys::KEY_F29 - Keys::KEY_F30 - Keys::KEY_F31 - Keys::KEY_F32 - Keys::KEY_F33 - Keys::KEY_F34 - Keys::KEY_F35 - Keys::KEY_F36 - Keys::KEY_F37 - Keys::KEY_F38 - Keys::KEY_F39 - Keys::KEY_F40 - Keys::KEY_F41 - Keys::KEY_F42 - Keys::KEY_F43 - Keys::KEY_F44 - Keys::KEY_F45 - Keys::KEY_F46 - Keys::KEY_F47 - Keys::KEY_F48 - Keys::KEY_F49 - Keys::KEY_F50 - Keys::KEY_F51 - Keys::KEY_F52 - Keys::KEY_F53 - Keys::KEY_F54 - Keys::KEY_F55 - Keys::KEY_F56 - Keys::KEY_F57 - Keys::KEY_F58 - Keys::KEY_F59 - Keys::KEY_F60 - Keys::KEY_F61 - Keys::KEY_F62 - Keys::KEY_F63 - Keys::KEY_F64 - Keys::KEY_LEFT - Keys::KEY_RIGHT - Keys::KEY_HOME - Keys::KEY_BACKSPACE - Keys::KEY_DL - Keys::KEY_IL - Keys::KEY_DC - Keys::KEY_IC - Keys::KEY_EIC - Keys::KEY_CLEAR - Keys::KEY_EOS - Keys::KEY_EOL - Keys::KEY_SF - Keys::KEY_SR - Keys::KEY_NPAGE - Keys::KEY_PPAGE - Keys::KEY_STAB - Keys::KEY_CTAB - Keys::KEY_CATAB - Keys::KEY_SRESET - Keys::KEY_RESET - Keys::KEY_PRINT - Keys::KEY_LL - Keys::KEY_A1 - Keys::KEY_A3 - Keys::KEY_B2 - Keys::KEY_C1 - Keys::KEY_C3 - Keys::KEY_BTAB - Keys::KEY_BEG - Keys::KEY_CANCEL - Keys::KEY_CLOSE - Keys::KEY_COMMAND - Keys::KEY_COPY - Keys::KEY_CREATE - Keys::KEY_END - Keys::KEY_EXIT - Keys::KEY_FIND - Keys::KEY_HELP - Keys::KEY_MARK - Keys::KEY_MESSAGE - Keys::KEY_MOVE - Keys::KEY_NEXT - Keys::KEY_OPEN - Keys::KEY_OPTIONS - Keys::KEY_PREVIOUS - Keys::KEY_REDO - Keys::KEY_REFERENCE - Keys::KEY_REFRESH - Keys::KEY_REPLACE - Keys::KEY_RESTART - Keys::KEY_RESUME - Keys::KEY_SAVE - Keys::KEY_SBEG - Keys::KEY_SCANCEL - Keys::KEY_SCOMMAND - Keys::KEY_SCOPY - Keys::KEY_SCREATE - Keys::KEY_SDC - Keys::KEY_SDL - Keys::KEY_SELECT - Keys::KEY_SEND - Keys::KEY_SEOL - Keys::KEY_SEXIT - Keys::KEY_SFIND - Keys::KEY_SHELP - Keys::KEY_SHOME - Keys::KEY_SIC - Keys::KEY_SLEFT - Keys::KEY_SMESSAGE - Keys::KEY_SMOVE - Keys::KEY_SNEXT - Keys::KEY_SOPTIONS - Keys::KEY_SPREVIOUS - Keys::KEY_SPRINT - Keys::KEY_SREDO - Keys::KEY_SREPLACE - Keys::KEY_SRIGHT - Keys::KEY_SRSUME - Keys::KEY_SSAVE - Keys::KEY_SSUSPEND - Keys::KEY_UNDO - Keys::KEY_MOUSE - Keys::KEY_MAX - Keys::KEY_LF - Keys::KEY_CR - Keys::KEY_ESC - Keys::KEY_TAB, (*17)

MouseEvents - MouseEvents::BUTTON1_RELEASED - MouseEvents::BUTTON2_RELEASED - MouseEvents::BUTTON3_RELEASED - MouseEvents::BUTTON4_RELEASED - MouseEvents::BUTTON1_PRESSED - MouseEvents::BUTTON2_PRESSED - MouseEvents::BUTTON3_PRESSED - MouseEvents::BUTTON4_PRESSED - MouseEvents::BUTTON1_CLICKED - MouseEvents::BUTTON2_CLICKED - MouseEvents::BUTTON3_CLICKED - MouseEvents::BUTTON4_CLICKED - MouseEvents::BUTTON1_DOUBLE_CLICKED - MouseEvents::BUTTON2_DOUBLE_CLICKED - MouseEvents::BUTTON3_DOUBLE_CLICKED - MouseEvents::BUTTON4_DOUBLE_CLICKED - MouseEvents::BUTTON1_TRIPLE_CLICKED - MouseEvents::BUTTON2_TRIPLE_CLICKED - MouseEvents::BUTTON3_TRIPLE_CLICKED - MouseEvents::BUTTON4_TRIPLE_CLICKED - MouseEvents::BUTTON_CTRL - MouseEvents::BUTTON_SHIFT - MouseEvents::BUTTON_ALT - MouseEvents::ALL_MOUSE_EVENTS - MouseEvents::REPORT_MOUSE_POSITION, (*18)

Installation of ncurses binding

  1. Install pecl. It is in a package named php5-dev in Ubuntu (php-pear in ArchLinux)
  2. Install the ncurses binding., (*19)

    sudo pecl install ncurses
    
  3. Include the php extension. Add follows in your php.ini:, (*20)

    extension=ncurses.so
    

The Versions

13/02 2018

dev-master

9999999-dev

This library implements ncurses functionality in OOP way.

  Sources   Download

MIT

The Requires

  • ext-ncurses *

 

15/01 2017

0.9.7

0.9.7.0

This library implements ncurses functionality in OOP way.

  Sources   Download

MIT

by Avatar wapmorgan