ANN: tsWxGTUI_PyVx 0.0.0 (pre-alpha) has been released. What is it? ===========
tsWxGTUI_PyVx is a foundation for developing, operating and troubleshooting Python and Python Curses based application programs embedded in local and remote 32-/64-bit computer systems used to monitor and control mission critical equipment. The architecture features Python 2x & Python 3x based Command Line Interfaces (CLI) and Python "Curses"-based "wxPython"-style, Graphical-Text User Interfaces (GUI). The tsWxGTUI_PyVx Application Programming Interface (API) for the CLI and GUI are identical for the Python 2x and Python 3x versions. There are only minor internal differences in the source code. With it, you get that cross-platform, pixel-mode "wxPython" feeling on character-mode 8-/16-color (xterm-family) & non-color (vt100-family) terminals and terminal emulators. What's new in version 0.0.0? ============================ Though the repository is extractable from its zip file after download, only the two Site-Packages in its Source-Distribution are installable. The extensive engineering notebook documention and two Developer-Sand- boxes are not installable because they are provided only to facilitate software development, maintenance and troubleshooting. The two Site-Packages may be installed and verified via the approprite install commands: 1. Example for installing and verifying the Python 2.x site-package: a. cd ./tsWxGTUI_PyVx_Repository/SourceDistributions/ Site-Packages/tsWxGTUI_PyVx/Python-2x b. python2.7 setup.py install c. Follow the demonstration and test instructions in: ./tsWxGTUI_PyVx_Repository/Documents/Demo.txt 2. Example for installing and verifying the Python 3.x site-package: a. cd ./tsWxGTUI_PyVx_Repository/SourceDistributions/ Site-Packages/tsWxGTUI_PyVx/Python-3x b. python3.4 setup.py install c. Follow the demonstration and test instructions in: ./tsWxGTUI_PyVx_Repository/Documents/Demo.txt Features: ========= 1. Launching from command line interface mode 2. Frames, Dialogs, Scrolled Windows 3. Panels 4. Buttons, CheckBoxes, Radio Boxes/Buttons 5. Text Entry and Password Entry (still under development) 6. Splash Screen display constructed or re-used during launch 7. 68-color palette (mapped into 8-/16-color Curses palette) 8. Logging to Screen and Files 9. Event Handling (not yet general purpose) 10. Task Bar (not yet capable of changing focus) 11. Position and dimensions accepted in Pixel (default) or Character (option) cell units. Capabilities: ============= 1. A library of general-purpose, re-usable building block modules for embedded systems. The building blocks: a. Provides both Command Line and Graphical-style User Interfaces that enable application developers to focus on the application specific functionality and not waste effort reinventing the functionality typical of Command Line and Graphical User Interfaces. b. Can operate in an isolated system (Stand-Alone mode) or in a networked system (Stand-Among mode). c. Are implemented in Python 2.x. d. Are ported to Python 3.x using a Python program (2to3) which reads Python 2.x source code and applies a series of fixers to transform it into valid Python 3.x code. Debugging of the Python 3.x code may be required to identify and resolve such runtime issues as decoding the type of data returned by Python curses modules. 2. Cross-platform designs run, without change, on Linux, Mac OS X and Microsoft Windows (the latter requires Cygwin, a Linux-like command line interface and GNU tool add-on from Red Hat). 3. Command Line Interface includes building blocks that create a sophisticated POSIX-/ Unix-like terminal interface. It features: a. Command line keyword/value pair option and positional argument parsing (using the most recent Python argparse, optparse or getopt package that is available). Default parser supports typical options: -h/--help, -a/--about, -d/--debug, -v/--version -V/--Verbose; b. Error/exception handling displays messages on console and returns Unix-style 8-bit exit code to coordinate a sequence of multiple applications. c. Event logging to application designated terminals, files or devices. d. Launching, event dispatching and terminating of the Graphical-style User Interface. e. Wrapper used to ensure that each application termin- ates with the exit code and message appropriate for co-ordination of a sequence of multiple applications. f. Tool to scan an operator designated directory tree and strip lines of source code of any superfluous trailing blank characters. g. Tool to create a copy of an operator designated directory tree after stripping comments and doc strings from Python source code to reduce required embedded system storage resources. h. Tool to scan an operator designated directory tree and report on the total number of files, total number of lines of code, total number of blank/comment lines and their distribution among the file name extensions associated with various programming language such as Ada, Assembler, C/C++, Fortran, Pascal, Python, and shell script. 4. Graphical-style User Interface includes building blocks that create a sophisticated Desktop, Laptop and Work- station Computer-like terminal interface. Using the "nCurses" character-mode and xterm libraries of the host platform, it emulates a subset of the "wxPython" pixel-mode Graphical User Interface. This enables "wxPython" applications to run with little, if any, change if they neither use icons nor other bit-mapped images, nor use proportional sized fonts or associated special features. The emulation features the following widgets: a. Tiled (side-by-side) and overlapped (partially hidden) windows. b. Frames / Dialogs (top-level windows containing other widgets). c. Menu bars (windows) containing drop down menus (windows). d. Tool bars (windows) containing a collection of windows for on-screen buttons, menus, or other input or output widgets. e. Status bars (windows) containing an information window, at the bottom of a top-level window, some- times divided into sections, each of which shows different information). f. Task bar (a top-level window) containing buttons for windows used to control which top-level window has focus and is not partially hidden. g. Sizers (non-windows) containing box and grid sizers or windows for tables of data or buttons. h. Panels (windows) containing sizers or windows. i. Buttons (windows) for operator control action trig- gers, j. Check boxes (windows) containing buttons for enab- ling/disabling any one or combination of several operator mode and option control action triggers. k. Radio boxes (windows) containing buttons for choice of one of several operator mode and option control action triggers. l. Gauges (windows) for horizontal and vertical bar graph widgets. m. Scrolled areas (windows) containing a scrollable text window and horizontal and/or vertical scrollbars (each with associated scroll position gauge and scroll control buttons for action triggers. n. Redirected output (a top-level window or log file) containing system and application messages annotated with date, time and event severity levels that are printed or sent to syslog, stderr, stdout or scrolled windows. o. Splash screen (bit-mapped image) that notifies the operator that the program is in the lengthy process of loading. Limitations: ============ 1. Known "nCurses"-based, "wxPython" Emulation Limitations a. Supports typical nCurses platforms with keyboard, mouse and only 8-/16 color display terminal or term- inal emulator despite some older host-specific curses implementation reports of 88/256 available colors and 7744/32768 color pairs. b. Supports typical nCurses platforms with keyboard, mouse and 1-color phosphor vt100 and vt220 terminal or terminal emulator despite some older host-specific curses implemen- tations which report no mouse. However, unlike the xterm mouse interface (which issues a single hardware notification containing mouse id, mouse x-y-z position, button id and the id for either a single/double/ triple click), the vt100/vt220 mouse interface (issues a sequence of six hardware notifications each time a button is pressed or released. The data from twelve notifications must be parsed and re-assembled into a single xterm-type notification before an association can be made between the triggering (button) and event handling (frame) wxPython-style GUI objects. Of the hardware notifications, the first six describe the mouse id, mouse x-y-z position, button id and button press state. The last six describe the mouse id, mouse x-y-z position, button id and button release state. As a consequence, the synthesized vt100/vt220 mouse event processing recognizes single mouse button clicks but not double or triple ones. c. Bit-mapped images are NOT supported except for the prerecorded one used at startup as a Splash screen. d. Maps wxPython-style pixel dimensions into/from nCurses character row and column cell units (emulation assumes character cell equivalent pixel dimensions are 8 width x 12 height). The operator must therefor manually con- figure the terminal window to either use smaller fonts or a larger window. e. Supports the operator selected terminal/terminal emulator fixed font with the blink, bold, dim, normal, reverse, standout and underline attribute changed/restored by the application as appropriate. However, not all host operating system platforms actually blink and some change colors instead. f. Unverified support for nCurses platforms with key- board, mouse and 256-color display terminal or xterm_256color terminal emulator when control switch to "USE_256_COLOR_PAIR_LIMIT" is deactivated. g. Automatically maps 68-color, "wxPython" palette only into available nCurses 8-/16-color xterm palette. h. Automatically maps 68-color, "wxPython" palette only into available nCurses 1-color (ON/OFF) vt100/vt220 palette. 2. Known "wxPython" Emulation Issues a. Mouse Event handling is rudimentary but suitable for left/middle/right button click, double-click use. b. Queued GUI and non-GUI event processing is non-func- tional while under development. c. Frame / Dialog closing/resizing/deleting is is non- functional while under development. d. Frame / Dialog overlay stacking/hiding/unhiding is non-functional while under development. e. Dialog user keyboard input processing is not recom- mended while under development. f. Linux host platform-specific exceptions during the determination of which GUI scrollbar object may intermittantly occur with mouse clicks. Requirements: ============= Python 2.6.8-2.7.9 with curses and/or nCurses Python 3.0.1-3.4.3 with curses and/or nCurses Platforms: ========== Except as noted below, the foundation is known to work with keyboard and mouse input under: 1. Linux (CentOS 7, Debian 8, Fedora 22, OpenSuSE 13.1, Scientific 7 and Ubuntu 12.04-15.04) using "Terminal" application with non-color (vt100, vt220), 8-color/64-color pair (xterm, xterm-color), 16-color/256-color pair xterm-16color, xterm-88color and xterm-256color) terminals/terminal emulators 2. Mac OS X (10.3-10.10) using third-party "iTerm2" application with non-color (vt100, vt220), 8-color/64-color pair (xterm, xterm-color), 16-color/256-color pair (xterm-16color, xterm-88color and xterm-256color) terminals/terminal emulators 3. Microsoft Windows (requires Cygwin, free Linux-like plugin from Red Hat with XP, 7, 8, 8.1 and 10 --- Technical Preview) using "mintty" application with non-color (vt100, vt220), 8-color/64-color pair (xterm, xterm-color), 16-color/256-color pair xterm-16color, xterm-88color and xterm-256color) terminals/terminal emulators 4. Unix (PC-BSD 10, OpenIndiana 151a8, OpenSolaris 11) using "Terminal" application with non-color (mouseless vt100 and vt220), 8-color/ 64-color pair (xterm, xterm-color), 16-color/256-color pair xterm-16color, xterm-88color and xterm-256color) terminals/terminal emulators Where can I get it? =================== The source code, documentation and engineering notebook are on github: https://github.com/rigordo959/tsWxGTUI_PyVx_Repository If you would like more information before downloading a copy of the repository to your computer, you can browse through the informative README.txt file and the text files it references. You may also browse through the Adobe PDF files in the Engineering Notebook. However, if you attempt to view Microsoft documents (Word, Excel, Access, PowerPoint, Visio), GitHub will respond: "Sorry about that, but we can't show files that are this big right now." Please submit comments about the features, performance and priorities for any requested changes to: softwaregadge...@comcast.net -- https://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations/