Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
ref:uifc [2020/11/28 10:54] – [Javascript Interface] mlong | ref:uifc [2024/03/05 13:37] (current) – [Background] Update link to NetWare SYSCON page digital man | ||
---|---|---|---|
Line 3: | Line 3: | ||
===== Background ===== | ===== Background ===== | ||
- | UIFC (User InterFaCe) is the text mode full-screen user interface library used by [[util: | + | UIFC (User InterFaCe) is the text mode full-screen user interface library used by [[util: |
- | ===== Implementations | + | ===== Interfaces |
- | Over the years, a few different implementations have been ported/ | + | ==== Output ==== |
- | ==== uifc.c ==== | + | The UIFC library uses the Synchronet Console I/O Library (CIOLIB). |
- | The original DOS 16-bit implementation, | + | === Windows Console Mode === |
- | ==== uifc32.c ==== | + | == Windows Terminal |
- | The 32-bit port of the DOS version, initialized using uifcini32(). This is the best supported version and is reccomended for effectively every use. | + | UIFC apps are often not pretty when run from within Windows Terminal |
- | + | ||
- | ==== uifcx.c ==== | + | |
- | + | ||
- | The command-line version using standard I/O, initialized using uifcinix(). | + | |
- | + | ||
- | ===== Interfaces ===== | + | |
==== Input ==== | ==== Input ==== | ||
Line 48: | Line 42: | ||
| Paste item | '' | | Paste item | '' | ||
+ | |||
+ | ===== Development Documentation ===== | ||
==== C Interface ==== | ==== C Interface ==== | ||
+ | |||
+ | === uifc.h === | ||
+ | |||
+ | The C API is exposed through the header file: '' | ||
+ | |||
+ | === uifc32.c === | ||
+ | |||
+ | The 32-bit port of the DOS version, initialized using uifcini32(). | ||
+ | |||
+ | === uifcx.c === | ||
+ | |||
+ | The command-line version using standard I/O, initialized using uifcinix(). | ||
+ | |||
==== Javascript Interface ==== | ==== Javascript Interface ==== | ||
See [[http:// | See [[http:// | ||
+ | |||
+ | When using uifc.list, you can pass the WIN_SAV option, along with a context object to preserve the menu selection index. | ||
+ | |||
+ | The context object is created as follows: | ||
+ | |||
+ | < | ||
+ | var ctx = new uifc.list.CTX( | ||
+ | 0, // current | ||
+ | 0, // bar | ||
+ | 0, // left | ||
+ | 0, // top | ||
+ | 0 // width | ||
+ | ); | ||
+ | </ | ||
==== UIFC List Window Flags ==== | ==== UIFC List Window Flags ==== | ||
- | ^ Flag ^ Description | + | ^ Flag ^ Description ^ |
- | | WIN_ORG | Original menu, destroy valid screen area | + | | WIN_ORG | Original menu, destroy valid screen area | |
- | | WIN_SAV | Save existing text and replace when finished (use with context object) | + | | WIN_SAV | Save existing text and replace when finished (use with context object) | |
- | |||| | + | |
- | | WIN_ACT | Menu remains active after a selection | Y | Y | | + | |
- | | WIN_INSACT | Remains active after insert key | Y | Y | | + | |
- | | WIN_DELACT | Remains active after delete key | Y | Y | | + | |
- | | WIN_CHE | Stay active after escape if changes | Y | Y | | + | |
- | | WIN_EXTKEYS | Return on any keypress. Return value is -2 - keyvalue | Y | Y | | + | |
- | | WIN_POP | Exit the list as though ESC was pressed. For use after WIN_EXTKEYS or WIN_DYN | Y | - | | + | |
- | | WIN_SEL | Exit the list as though ENTER was pressed. For use after WIN_EXTKEYS or WIN_DYN | Y | - | | + | |
- | | WIN_ESC | Screen is active when escape is hit | Y | Y | | + | |
- | | WIN_EDITACT | Remain active after edit key | - | Y | | + | |
|| | || | ||
- | | WIN_L2R | Center the window based on width | Y | Y | | + | | WIN_ACT | Menu remains active after a selection | |
- | | WIN_T2B | Center the window based on height | + | | WIN_INSACT | Remains active after insert key | |
- | | WIN_RHT | Place window against right side of screen | + | | WIN_DELACT | Remains active after delete key | |
- | | WIN_MID | Place window in middle of screen | + | | WIN_CHE | Stay active after escape if changes | |
- | | WIN_BOT | Place window against bottom of screen | + | | WIN_EXTKEYS | Return on any keypress. Return value is -2 - keyvalue | |
- | | WIN_FIXEDHEIGHT | Use light_height from uifc struct | + | | WIN_POP | Exit the list as though ESC was pressed. For use after WIN_EXTKEYS or WIN_DYN | |
- | | WIN_NOBRDR | Do not draw a border around the window | + | | WIN_SEL | Exit the list as though ENTER was pressed. For use after WIN_EXTKEYS or WIN_DYN | |
- | |||| | + | | WIN_ESC | Screen is active when escape is hit | |
- | | WIN_IMM | Draw window and return immediately | + | | WIN_EDITACT | Remain active after edit key | |
- | | WIN_INACT | Draw window inactive, intended for use with WIN_IMM | + | || |
- | |||| | + | | WIN_L2R | Center the window based on width | |
- | | WIN_DYN | Dynamic window, return at least every second | + | | WIN_T2B | Center the window based on height | |
- | | WIN_REDRAW | Force redraw on dynamic window | + | | WIN_RHT | Place window against right side of screen | |
- | | WIN_NODRAW | Force not to redraw on dynamic window | + | | WIN_MID | Place window in middle of screen | |
- | |||| | + | | WIN_BOT | Place window against bottom of screen | |
- | | WIN_INS | Allow user to use insert key | Y | Y | | + | | WIN_FIXEDHEIGHT | Use light_height from uifc struct | |
- | | WIN_DEL | Allows use to use delete key | Y | Y | | + | | WIN_NOBRDR | Do not draw a border around the window | |
- | | WIN_COPY | Allows F5 to Get/Copy a menu item | Y | Y | | + | ||| |
- | | WIN_PASTE | Allows F6 to Put/Paste a menu item | Y | Y | | + | | WIN_IMM | Draw window and return immediately | |
- | | WIN_XTR | Add extra line at end for inserting at end | Y | Y | | + | | WIN_INACT | Draw window inactive, intended for use with WIN_IMM | |
- | | WIN_CUT | Allow Ctrl-X/Cut a Menu Item | Y | Y | | + | ||| |
- | | WIN_EDIT | Allow F2 to edit a menu item | Y | Y | | + | | WIN_DYN | Dynamic window, return at least every second | |
- | | WIN_PASTEXTR | Allow paste into extra (blank) item | Y | - | | + | | WIN_REDRAW | Force redraw on dynamic window | |
- | | WIN_GET | Alias for WIN_COPY | Y | - | | + | | WIN_NODRAW | Force not to redraw on dynamic window | |
- | | WIN_PUT | Alias for WIN_PASTE | Y | - | | + | ||| |
- | |||| | + | | WIN_INS | Allow user to use insert key | |
- | | WIN_HLP | Parse Help Codes | Y | - | | + | | WIN_DEL | Allows use to use delete key | |
- | | WIN_PACK | Pack text in window (no padding) | + | | WIN_COPY | Allows F5 to Get/Copy a menu item | |
- | | WIN_FAT | Do not pad outside borders | + | | WIN_PASTE | Allows F6 to Put/Paste a menu item | |
- | | WIN_UNGETMOUSE | If the mouse is clicked outside window, put mouse even back into even queue | Y | Y | | + | | WIN_XTR | Add extra line at end for inserting at end | |
+ | | WIN_CUT | Allow Ctrl-X/Cut a Menu Item | | ||
+ | | WIN_EDIT | Allow F2 to edit a menu item | | ||
+ | | WIN_PASTEXTR | Allow paste into extra (blank) item | | ||
+ | ||| | ||
+ | | WIN_HLP | Parse Help Codes | | ||
+ | | WIN_PACK | Pack text in window (no padding) | | ||
+ | | WIN_FAT | Do not pad outside borders | | ||
+ | | WIN_UNGETMOUSE | If the mouse is clicked outside window, put mouse even back into even queue | | ||
==== UIFC Input Keyboard Modes ==== | ==== UIFC Input Keyboard Modes ==== | ||
- | ^ Flag ^ Description | + | ^ Flag ^ Description ^ |
- | | K_NONE | No special behavior | + | | K_NONE | No special behavior | |
- | | K_UPPER | Converts all letters to upper case | Y | Y | | + | | K_UPPER | Converts all letters to upper case | |
- | | K_UPRLWR | Upper/lower case automatically | + | | K_UPRLWR | Upper/lower case automatically | |
- | | K_NUMBER | Allow numbers only | Y | Y | | + | | K_NUMBER | Allow numbers only | |
- | | K_WRAP | Allows word wrap | Y | Y | | + | | K_MSG | Allows Ctrl-A |
- | | K_MSG | Allows | + | | K_EDIT | Edit string |
- | | K_SPIN | Spinning cursor | Y | Y | | + | | K_ALPHA | Only allow alphabetic characters | |
- | | K_LINE | Input line (inverse color) | Y | Y | | + | | K_SCANNING | UPC Scanner is active, return on ' |
- | | K_EDIT | Edit string | + | | K_LEFTEXIT | Allow exit from getstr() with backspace | |
- | | K_CHAT | In chat multi-chat | Y | Y | | + | | K_TABEXIT | Exit on TAB or BACKTAB | |
- | | K_NOCRLF | Don't print CRLF after string input | Y | Y | | + | | K_DECIMAL | Allow floating point numbers only | |
- | | K_ALPHA | Only allow alphabetic characters | + | | K_DEUCEEXIT | Return on up/down/F2 | |
- | | K_SCANNING | UPC Scanner is active, return on ' | + | | K_MOUSEEXIT | Returns when mouse is clicked outside of input area (not window) | |
- | | K_LOWPRIO | Low-priority input | Y | Y | | + | | K_PASSWORD | Do not display text while editing | |
- | | K_NOEXASC | No extended ASCII allowed | Y | Y | | + | | K_FIND | Don't set the " |
- | | K_E71DETECT | Detect E-7-1 terminal type | Y | Y | | + | |
- | | K_AUTODEL | Auto-delete text (used with K_EDIT) | Y | Y | | + | |
- | | K_COLD | Possible cold key mode | Y | Y | | + | |
- | | K_NOECHO | Don't echo input | Y | Y | | + | |
- | | K_TAB | Treat TAB as CR | Y | Y | | + | |
- | | K_LEFTEXIT | Allow exit from getstr() with backspace | + | |
- | | K_USEOFFSET | Use console.getstr_offset with getstr() | Y | Y | | + | |
- | | K_NOSPIN | Do not honor user's spinning cursor | Y | Y | | + | |
- | | K_ANSI_CPR | ANSI Cursor Position Report expected | Y | Y | | + | |
- | | K_TRIM | Trim white-space from both ends of str | Y | Y | | + | |
- | | K_CTRLKEYS | No control-key handling in inkey() | Y | Y | | + | |
- | | K_TABEXIT | Exit on TAB or BACKTAB | + | |
- | | K_DECIMAL | Allow floating point numbers only | Y | Y | | + | |
- | | K_DEUCEEXIT | Return on up/ | + | |
- | | K_MOUSEEXIT | Returns when mouse is clicked outside of input area (not window) | + | |
- | | K_PASSWORD | Do not display text while editing | + | |
- | | K_FIND | Don't set the " | + | |
==== UIFC List Return Input Masks ==== | ==== UIFC List Return Input Masks ==== | ||
Line 150: | Line 154: | ||
| MSK_CUT | Item cut (Ctrl-X) | | | MSK_CUT | Item cut (Ctrl-X) | | ||
| MSK_PASTE | Item pasted (Ctrl-V) | | | MSK_PASTE | Item pasted (Ctrl-V) | | ||
- | | MSK_EDIT | | | + | | MSK_EDIT | Item was selected for edit (F2) | |
- | Example | + | Example |
< | < | ||
Line 160: | Line 164: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | {{tag> |