From d84da6352de10d745466ff098c75f0fc90b9dfbb Mon Sep 17 00:00:00 2001 From: "Rob Swindell (on Debian Linux)" <rob@synchro.net> Date: Sat, 16 Sep 2023 14:29:33 -0700 Subject: [PATCH] Load lib to return descriptive strings for terminal parameters Much of the logic ported from sbbs_t methods in con_out.cpp For Nelgin's default_settings.js project --- exec/load/termdesc.js | 84 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100755 exec/load/termdesc.js diff --git a/exec/load/termdesc.js b/exec/load/termdesc.js new file mode 100755 index 0000000000..d12d89e8ed --- /dev/null +++ b/exec/load/termdesc.js @@ -0,0 +1,84 @@ +// Terminal type/parameters (set or detected) descriptive strings + +// Common function arguments: +// verbose: true if you want verbose output (default to false) +// usr: Pass a User object (defaults to current 'user') + +// e.g. load("termdesc.js".type() +// load("termdesc.js".charset() +// load("termdesc.js".rows() +// load("termdesc.js".columns() +// load("termdesc.js".type(true) +// load("termdesc.js".type(true, User(4)) + +require("text.js", "TerminalAutoDetect"); +require("userdefs.js", "USER_PETSCII"); + +"use strict"; + +function charset(term) +{ + if(term === undefined) + term = console.term_supports(); + if(term & USER_PETSCII) + return "CBM-ASCII"; + if(term & USER_UTF8) + return "UTF-8"; + if(term & USER_NO_EXASCII) + return "US-ASCII"; + return "CP437"; +} + +function rows(verbose, usr) +{ + if(usr === undefined) // Use current user by default + usr = user; + var rows = usr.screen_rows || console.screen_rows; + if(verbose !== true) + return String(rows); + return format("%s%d %s", usr.screen_rows ? "":bbs.text(TerminalAutoDetect), rows, bbs.text(TerminalRows)); +} + +function columns(verbose, usr) +{ + if(usr === undefined) // Use current user by default + usr = user; + var cols = usr.screen_columns || console.screen_columns; + if(verbose !== true) + return String(cols); + return format("%s%d %s", usr.screen_columns ? "":bbs.text(TerminalAutoDetect), cols, bbs.text(TerminalColumns)); +} + +function type(verbose, usr) +{ + var term; + + if(usr === undefined) { // Use current user by default + usr = user; + term = console.term_supports(); // user current-detected terminal params + } else + term = usr.settings; + + var type = "DUMB"; + if(term & USER_PETSCII) + type = "PETSCII"; + if(term & USER_RIP) + type = "RIP"; + if(term & USER_ANSI) + type = "ANSI"; + if(verbose !== true) + return type; + + // Verbose + if(term & USER_PETSCII) + return ((usr.settings & USER_AUTOTERM) ? bbs.text(TerminalAutoDetect) : "") + "CBM/PETSCII"; + return format("%s%s / %s %s%s%s" + ,(usr.settings & USER_AUTOTERM) ? bbs.text(TerminalAutoDetect) : "" + ,this.charset(term) + ,type + ,(term & USER_COLOR) ? (term & USER_ICE_COLOR ? bbs.text(TerminalIceColor) : bbs.text(TerminalColor)) : bbs.text(TerminalMonochrome) + ,(term & USER_MOUSE) ? bbs.text(TerminalMouse) : "" + ,(term & USER_SWAP_DELETE) ? "DEL=BS" : "").trimRight(); +} + +this; -- GitLab