@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@c By the same author  - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@c      Included as part of the Technical Support chapter of texinfo docs. - - -
@c      Last updated: 25-May-2026  - - - - - - - - - - - - - - - - - - - - - - -
@c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

@itemize @bullet
@item @b{NcDialog Application Programming Interface} (API) library.@*
The NcDialog API forms the basis for most of our other software 
projects. It provides the application developer with the tools to 
create dialog-based console applications, without the need to learn 
@i{anything} about the complexities of the underlying @LSQ{}ncurses@RSQ{} 
C-language library.

Console applications have always been the most efficient and 
easily-implemented of computer programs. What they lacked was a 
friendly and visually-pleasing user interface. 

With the NcDialog API, console applications can now be used and 
understood by experts and novice users alike.

@item @b{FileMangler} (@b{fmg}), is a compact, fast and flexible tool for 
handling all your file management needs.

FileMangler performs all basic file management tasks, as well as 
performing scheduled and ad-hoc file backup and synchronization 
activities.

FileMangler runs in a console window, and thus provides access to 
many system tools not available to a GUI application. FileMangler 
also provides full support for accessing the local Trashcan.

FileMangler is based on the NcDialog API, and thus will run in 
almost any GNU/Linux or UNIX terminal environment.

@item @b{Console Trashcan} (@b{ctrash}) is a simple, console-based (command-line) 
utility for managing the contents of your local Trashcan. Send 
items to the trash, restore items from the trash, report the 
trashcan contents, and empty the trash. 'ctrash' is designed as a 
safer, and more flexible alternative to the 'rm' and 'rmdir' 
commands.

@ifhtml
@sp 2
@end ifhtml

@item Infodoc, post-processing and CSS style for HTML documents created 
by the Texinfo (makeinfo) utility. If you write documentation using the 
Texinfo/makeinfo documentation engine, @i{AND} if you care at all 
about what your documentation looks like, then you really do need the 
@LSQ{}infodoc-styles.css@LSQ{} definition file and the @LSQ{}idpp@RSQ{} 
HTML post-processor.

The HTML version of this document was formatted using @LSQ{}idpp@RSQ{} and is 
displayed using the @LSQ{}infodoc-styles.css@LSQ{} definition file. Many more 
examples are available on the author's website.

@item @b{gString} text internationalization tool.@*
gString implements a C++ class that may be integraged into any 
application for smooth and painless text formatting, and for 
converting between UTF-8 and @LSQ{}wchar_t@RSQ{} (wide) character encoding.

The gString class is lightweight, consisting of one C++ source 
module and one header file. The gString class may be directly 
integrated into an application, or may be built as a link library.@*
The gString class is also embedded within the NcDialog API library 
(see above).

@item @b{Taggit} (@b{taggit}) is a demonstration program written for students, or 
for anyone who wishes to create a console application with a multilingual 
user interface.

Conceptually, Taggit is an audio-file tag editor (metadata editor), and is 
album oriented rather than file oriented so that all audio files in an 
album may be edited simultaneously.

Taggit is not intended as a full-featured tag editor; for instance, Taggit 
does not access online databases of audio tag information. Taggit fully 
supports tag editing for audio formats: MP3, M4A, OGG/Vorbis and WMA. 

The OGG/Vorbis I specification is supported for all text tags in @t{'.ogg'} 
and @t{'.oga'} audio files.

For MP3 audio files, all tag frames of the ID3v2.3 standard are supported, 
along with some features of ID3v2.4, such as support for UTF-8 text encoding 
which enables writing text tags in any language.

Taggit is implemented in four(4) user interface languages: Español (Spanish),
Zhōngwén (中文) (Chinese, simplified), Tiếng Việt (Vietnamese) and English (U.S.). 
Additional user interface languages (both LTR and RTL) may be added with 
minimum effort.

@item @b{AnsiCmd Library} and ACTest test application.@*
The AnsiCmd link library defines a simple and comprehensive way to configure a 
console program's text attributes, as well as cursor positioning, area erasure 
and other operations defined by @t{ANSI} escape sequences in the ANSI X3.64 
standard.

@t{ANSI} escape sequences are available for setting foreground and background 
color, including 3-bit and 4-bit color, 8-bit color, 24-bit (RGB) color, 
greyscale color, and the @t{aixterm} (IBM) extensions.

Text modifiers include bold/faint, italic, underline, double-underline, 
overline, strikethrough, blinking text (fast/slow), reversed fgnd/bkgnd, and 
invisible text; as well as commands to disable each of these modifiers.

A suite of cursor-positioning commands and text erasure commands are also 
supported.

The standard also specifies escape sequences for little-used and seldom-supported 
options such as Fractur, Ideogram, Framed, Encircled and Alternate-font. The 
AnsiCmd library implements these escape sequence commands; however, most modern 
terminal emulators do not support them.

AnsiCmd also provides some common terminal configuration operations such as 
flexible input buffering options and capture of the Panic Button (break signal).

Also included in the AnsiCmd library are application-level functions such as 
line-drawing, creation of windowed objects, direct control of the cursor-movent 
keys and reasonably sophisticated user input methods.

A stand-alone, temporary-file-management class (TFMan) is included as part 
of the package.

Because this is primarily an experimental project, comprehensive testing of all 
functionality is integrated into the AnsiCmd library.

@item @b{TFMan} is a temporary-file management class for Linux applications.@*
@t{TFMan} is written in C++ and may be easily integrated into any application. 
The system directory for creating temporary files is identified and application 
access is verified. During the session, creation and deletion of temporary 
files is tracked so that all temporary files created during the session are 
deleted on application exit.

@ignore
@item @b{Salmon} (@b{salmon}) demonstrates the use of the C-library @t{"exec"} 
functions to spawn new processes (not fish eggs) from inside an application.@*
Salmon also includes several examples of opening a new terminal window or tab 
from within the current terminal window.
@end ignore

@item @b{Source Profiler} (@b{srcprof}) is a source code analysis tool for 
determining the @LSQ{}maintainability@RSQ{} of source code modules. 

@LSQ{}srcprof@RSQ{} can be used to profile source code for high-level 
languages such as C, C++ and Java, as well as various assembly 
languages and scripting languages such as Python, Perl and Ruby. 
For a complete list of currently-supported source languages, please 
see the Source Profiler documentation.

'srcprof' can be used both as a productivity-measurement tool and as a 
tool for testing source code quality based on an evaluation of its 
@LSQ{}maintainability@RSQ{}.

Source Profiler is a console-based utility, which runs as either a pure, 
command-line utility, OR as a dialog application based on the NcDialog API.

@item @b{WaylandCB}, clipboard access for console applications.@*
Access to the system clipboard under the Wayland communications 
protocol, leveraging Sergey Bugaev's "wl-clipboard" application suite.

WaylandCB is a simple C++ class definition which provides console 
applications with seemless access to the system clipboard.

@item @b{Exercalc} (@b{ecalc}) is a utility for tracking daily exercise activity.@*
Specify the type of exercise, walk/bike/run/cardio/free weights, etc. 
and either the elapsed time, distance travelled, or energy expended 
(KCal or METs). Exercalc then calculates the efficiency and progress over 
time. Archive the data, retrieve and analyze the data in various ways 
including tables, comparisons and bar charts.

The application is specifically designed to be a student exercise in 
creating applications which incorporate a multi-language user interface. 
Exercalc is implemented in four(4) user interface languages: Español (Spanish),
Zhōngwén (中文) (Chinese, simplified), Tiếng Việt (Vietnamese) and English (U.S.). 
Additional user interface languages (both LTR and RTL) may be added with 
minimum effort.

@item @b{DVD Repair} (@b{dvdrep}) is a utility for exploring the contents of a 
damaged DVD video disc and rescuing as much of the data as possible. 

@LSQ{}dvdrep@RSQ{} can be used to rescue data from any non-encrypted DVD 
video source disc that is formatted using the Universal Disc Format 
(UDF) filesystem (as all commercially produced DVD movies are).

@LSQ{}dvdrep@RSQ{} takes a layered approach to the analysis of the source 
disc. A detailed log file is maintained for each step of the 
process in case manual intervention is needed at a later step. 

DVD Repair is based on the NcDialog API, and thus will run in 
almost any GNU/Linux or UNIX terminal environment.

@item @b{crcPlus} (@b{crcplus}) is a reference model and demonstration program 
for implementating CRC (Cyclic Redundancy Check) data error detection. 
crcPlus provides a reliable reference algorithm for verifying the function 
of other CRC generators and decoders as well as providing the tools to build 
a fully customizable hash table (lookup table) for creating your own 
high-speed CRC generator.

@item Various other Linux utilities designed as academic exercises are 
also available for student use. For example: interprocess 
communication pipes, FIFOs, sockets, shared memory blocks, 
multi-threading, the 'Sleeping Barber' problem and so on.@*
These cannot be considered as production-worthy, but they 
demonstrate the concepts in simple terms.
@end itemize

@sp 2
