ncdialogapi-0.0.38.tar.bz2
(updated 2025-07-29)
Source code and full documentation for an application programmer's toolkit which
encapsulates the GNU/Linux 'ncurses' library to create dialog-based console applications.
Includes a comprehensive test suite and many example applications.
The NcDialog API (Application Programming Interface) is implemented as a link library which
provides console applications written in C++ with easy access to the text-formatting tools and
window objects needed to design dialog-based applications which leverage the ncurses (actually ncursesw)
C-language library without the need to know
anything about the ncurses primitives. The NcDialog API
is a class-based design which provides robust, modularized code for quick-and-painless development of
console applications which incorporate sophisticated user-interface controls such as Textboxes, Pushbuttons,
Radiobuttons, Spinners and a variety of controls for display and selection of scrolled data items. All languages
and the full Unicode/UTF-8 character set are supported for both LTR and RTL languages. The NcDialog API is also
completely thread safe.
Comprehensive documentation is included, and is designed to be useful both for student programmers and
for grizzled code warriors.
(See notes on updates made to address recent changes to Wayland and to the GNU C compiler.)
gString-0.0.37.tar.bz2
(updated 2025-07-15)
gString class source code (C++), Makefile, test application,
and detailed documentation in ‘info’ (Texinfo) and HTML formats.
'gString' is a small, fast and flexible way to seamlessly convert, format and analyze both
UTF-8 and UTF-32 (wchar_t) text. Conceptually, gString is a C++ class definition similar to
std::string or the GTK glib::ustring. gString is much simpler than these all-purpose classes,
but it includes the all the common features with none of the fat. gString consists of one
source module and one header file. It can be built as a link library or the object file can be
linked directly with your application. gString is an indispensible tool for multi-language
support in console applications or in any application that is designed to be lean-and-clean.
Technical Note: This is the first public
release of a major update to the gString class. The new release replaces the static buffer size with an automatically
resized storage buffer. This increases the maximum storage capacity from 4Kb to 1Mb while retaining the same functionality
and hopefully, the same stability. While the beta-testers have declared this release to be fully functional, the
previous release will remain available until we get additional feedback.
gstring-0.0.33.tar.bz2
– Stable release (with static buffer capacity).
ctrash-0.0.06.tar.bz2
Console Trashcan (ctrash) source code (C++), Makefile,
and detailed documentation in ‘info’ (Texinfo) and HTML formats.
‘ctrash’ provides comprehnsive Trashcan management from within a terminal window.
Manage the system Trashcan directly from the command-line, or invoke ‘ctrash’ from any application.
‘ctrash’ provides a safe and reliable replacement for the ‘rm’, ‘rmdir’,
‘unlink’ and other console utilities by
provisionally deleting files, rather than deleting them
completely. ‘ctrash’ includes many options which allow you to automatically empty the Trashcan when you log out,
or to manage the number of items in the Trashcan by removing files older than a specified date — and much more.
filemangler-0.0.40.tar.bz2
(updated 2025-07-29)
FileMangler (fmg) source code (C++), installation script (perl) and documentation in 'info' (Texinfo) and HTML
formats.
FileMangler is a compact, fast and flexible tool for handling all your file management needs
including scheduled and ad-hoc file backup and synchronization activities. FileMangler is based on the NcDialog API
(see above), and runs as a menu-driven dialog in the GNU/Linux terminal environment. FileMangler provides interactive
access to many system tools such as Less, Grep, Find, Diff, Stat, Chmod, Hexdump, Mount, Tar and much more.
FileMangler also provides full support for managing the local Trashcan. This makes FileMangler ideal for those
who are new to Linux and have not yet mastered the incredibly-powerful, yet endlessly-frustrating world of the
Linux command line. At the same time, experienced command-line gurus will appreciate how the integration of these
utilities into a single, fluid command structure streamlines even complex system maintenance tasks.
Also, and in all modesty, FileMangler's documentation is vastly superior to that of any other
file management application, hobbiest or commercial, for any system, anywhere. (and that's as modest as we ever get :-)
taggit-0.0.08.tar.bz2
Taggit (taggit) source code (C++), Makefile, and documentation in 'info' (Texinfo) and HTML formats.
Edit, add or remove text and image metadata (tag data) for audio files.
1) Supports MP3
(id2v2.3/4), OGA
(OGG/Vorbis I, 2015) and WMA
(ASF 1.20.03) audio
formats.
2) Simultaneous editing of an entire album (up to 99 audio source files).
3) User interface is multilingual from the ground up, currently implemented in four (4)
languages: English, Español, Zhōngwén (中文) and Tiếng Việt; with hooks for
additional languages, both LTR and RTL.
While ‘Taggit’ is primarily a model for students who are creating applications with fully-integrated
multilingual user interfaces, Taggit includes one or two interesting features which may be missing from more
“mainstream” tag editors.
waylandcb-0.0.05.tar.bz2
(updated 2025-03-23)
WaylandCB class source code (C++), Makefile, test application,
and documentation in 'info' (Texinfo) and HTML formats.
The WaylandCB clipboard interface class provides a seamless interface between console applications
and the Wayland system clipboards. Wayland is the communications protocol which has replaced X-Windows on most GNU/Linux
desktops, including GNOME 45+, KDE Plasma and others. WaylandCB communicates with the system clipboard through Sergey
Bugaev's “wl-clipboard” console apps “wl-copy” and “wl-paste”. This provides full
independence from GTK, Qt or other toolkits normally needed to create applications which directly communicate with Wayland.
The WaylandCB package also includes our gString tool for encoding/decoding and formatting of text data. WaylandCB may be
built against the included ‘Wayclip’ reference and demonstration app. Wayclip verifies accurate compilation
of the clipboard interface code and demonstrates access to each of WaylandCB's public methods. Full documentation is also included.
ansicmd-0.0.04.tar.bz2
AnsiCmd library source code (C++), EarthPoints test application, Makefile,
and detailed documentation in 'info' (Texinfo) and HTML formats.
The AnsiCmd class defines a set of methods which use
ANSI escape sequences to configure the attributes of text output
for any console application. The full set of escape sequences defined in the
ECMA-48 / ANSI X3.64 standard is supported. These include color
attributes and text modifiers such as bold, italic, underline, etc. Also supported are cursor positioning, area erasure,
I/O stream configuration, capture of the break signal (Ctrl+C) and conversion of keystrokes which arrive as escape sequences.
The AnsiCmd class library is bundled with a test application, “EarthPoints,” (epts), which exercises the full
functionality of the library. EarthPoints is a simple utility which calculates the arc distance between any two GPS
coordinate pairs. The results of this calculation are displayed either in basic TTY-style output or in a windowed format
constructed using the AnsiCmd library.
crcplus-0.1.00.tar.bz2
crcPlus (crcplus) source code (C++), Makefile, test data
and documentation in 'info' (Texinfo) and HTML formats.
CRC (Cyclic Redundancy Check) algorithms are used to verify data integrity in streaming data
which may be subject to data loss via single-bit or burst-error corruption. CRC is used to protect data in everything
from mobile phone text messages, to streaming video.
‘crcPlus’ provides
two fully-configurable CRC Generator reference models:
1) a direct-calculation model for CRC algorithm verification, and
2) a table-driven model which uses a dynamically-created hash table for
performance-oriented CRC generation.
Both of these models are built around the CRC_Gen class definition (C++) which may be “#included” in any
application which needs CRC error detection.
‘crcPlus’ is a natural evolution from our C hack, ‘crcmodel’
(see Applets below), which was in turn based on a reference model by Ross Williams (1993).
srcprof-0.0.18.tar.bz2
Source Profiler (srcprof) source code (C++), Makefile,
and detailed documentation in 'info' (Texinfo) and HTML formats.
‘srcprof’ analyzes your source code modules and calculates the “maintainability” of
the code. A count of source code lines, comments and whitespace is generated for each source file, and a
“maintainability-index” report is created, giving a baseline evaluation of the effectiveness of the source
code layout. ‘srcprof’ analyzes high-level languages like C, C++, Java and VB, as well as assembly
languages, HTML/CSS markup and scripting languages such as Perl, Python, shell scripts and more.
Become the rock-star developer of your organization. Management types will love these
reports because their disorganized little brains will almost be able
to comprehend the significance of progress in source code development when presented in this simple way.
infodoc-styles-0.0.16.tar.bz2
(updated 2025-08-04)
CSS3 style definition file for use with HTML documents generated from Texinfo source.
Includes CSS definitions, HTML post-processor utility (C++ source), HTML test suite,
Texinfo documentation.
A bit of painless style for those of us who create (or are considering creation of)
html-formatted documentation using the Texinfo documentation system (makeinfo --html).
As you may know, the raw HTML output from 'makeinfo' is a bit simplistic, but has style
hooks for customizing the look of the document. 'infodoc-styles.css' replaces the
do-nothing style hooks in these documents with actual, style definitions which may be easily
customized to meet your particular needs. You can see this styling in action by clicking any
of the 'View as HTML' buttons on this page.
Important Note
The ‘makeinfo’ development group has made great strides toward their stated goal of support for HTML5/CSS3;
however, this has necessitated significant updates to the “Infodoc” package generally, and the “Idpp”
post-processor specifically.
The “Idpp” post-processor has been updated to support ‘makeinfo’ (texi2any) version 7.1.1 and
above and includes reasonably-robust backward compatibility as far as ‘makeinfo’ version 6.8.
We recommend that you update to the latest version of ‘makeinfo’; however, if your project is using an earlier version of
‘makeinfo’, please download one of the legacy “Infodoc” packages instead.
infodoc-styles-0.0.13.tar.bz2
CSS3 style for HTML documents generated by makeinfo/texi2any version 6.1 through 6.7.
infodoc-styles-0.0.07.tar.bz2
CSS3 style for HTML documents generated by makeinfo/texi2any version 5.x and early 6.0.
The following group of downloads consists of various code examples and student exercises.
The items available in this section may change from time to time, based on students' needs.
exercalc-0.0.01.tar.bz2
Exercalc (ecalc) source code (C++), Makefile,
and detailed documentation in 'info' (Texinfo) and HTML formats.
‘ecalc’ is a console (terminal) dialog-based application built using the
author's NcDialog API (ncurses). The application provides a framework for tracking and analysis of daily exercise
data. Using a series of configuration options such as height, weight, type of exercise, velocity, intensity of effort
and your personal exercise goals Exercalc can analyze the data and display your progress both mathematically and in
the form of a standard bar chart.
Exercalc is designed specifically as a teaching tool for the software-design student who wants to create a software
application with a user-friendly, multilingual user interface. As such, a general user may find Exercalc to be
lacking polish; however, software engineering students may benefit from the simple, C++ coding style, the algorithms
for multi-language support and the source code's extensive internal documentation.
Author's Note: This application was written out of boredom caused by the multiple
corona-virus quarantines we have endured, both here in China and in the U.S. While the author appreciates a quiet work
environment, this level of isolation is just ridiculous!
crcmodel-1.5.02.tar.bz2
'crcmodel' source code (C), Makefile.
'crcmodel' is reference implementation for generating CRC (Cyclic Redundancy Check) error detection.
'crcmodel' is based on an original algorithm designed by Ross Williams (1993), updated with significant code
cleanup, the addition of invocation options and other enhancements to assist students and others in integrating CRC
into their own projects.
'crcmodel' provides a simple, accurate model for CRC generation based on a set of flexible setup parameters.
Both 32-bit and 16-bit CRC are supported, as well as reflected and non-reflected bit manipulation. If, for a given
source data stream and setup parameters, your CRC implementation generates the same CRC value as 'crcmodel' then you
can be relatively certain that your implementation is correct!
salmon-0.0.04.tar.bz2
‘Salmon’ and ‘childApp’ source code (C++), Makefiles, release notes.
The ‘Salmon’ application is a GNU/Linux console (command-line) utility written
in C++ which demonstrates some common examples of spawing an external process from within an application and
redirecting the standard I/O streams to avoid resource conflicts. The application demonstrates the use of the
‘execv’, ‘execl’, ‘execlp’, ‘execvp’, ‘fork’,
‘vfork’, ‘waitpid’ and ‘dup2’ functions, among others. Also demonstrated is a
procedure for defining and opening a secondary terminal window.
bubblesort-0.0.03.tar.bz2
(released 2025-07-22)
‘bubsort’ source code (C++), gString-class source, Makefile, release notes.
The ‘BubbleSort’ application is a GNU/Linux console (command-line) utility written
in C++ which demonstrates the so-called “bubble sort” (actually the cocktail-shaker sort”) algorithm.
Both ascending and descending sorts are supported. Data-sets include: text data (with and without case-sensitivity),
numeric data, and complex data (class objects). BubbleSort also supports sorting of data from an external file.
termsize-0.0.01.tar.bz2
‘TermSize’ source code (C++), Makefiles, release notes.
The ‘TermSize’ application is a GNU/Linux console (command-line) utility written
in C++ which reports on terminal-window resize events. ‘TermSize’ is built on the NcDialog API, but unlike
other applications on this site, ‘TermSize’ uses only the basic NCurses-class methods for startup, shutdown and
display output. This greatly simplifies the source code (about 500 lines of code).
This application was written to compensate for the fact that the GNOME terminal application no longer interactively reports
the size of the window as the user resizes it. In addition, gnome-terminal incorrectly uses a hard-coded 12-point font when
calculating the initial size of the window.
(‘Konsole’, on the other hand,
continues to report window-resize event correctly.) So a big Raspberry 😜 to the gnome-terminal maintainers,
but also a big thanks for providing us the incentive to spend a pleasant afternoon writing this little utility program.
buildcart-0.0.01.tar.bz2
‘BuildCartouche’ source code (C++), Makefiles, release notes.
The ‘BuildCart’ utility is intended for people who are writing documentation in Texinfo and who
want to use the “
@cartouche”
command to highlight important items.
Unfortunately, Texinfo support for the cartouche object is uneven at best. For HTML output,
(with Infodoc support–see above), the cartouche is rendered as a first-class display object; however, the cartouche in the
“info” output is worse than useless.
The BuildCart utility addresses this issue by accepting any block of text, reformatting it to the specified number of rows and columns,
and then enclosing it within a border. The resulting object can be dropped into the Texinfo document source as either a “@verbatim”
block or an “@example” block.
Impress your friends and humiliate your competition with Build Cartouche.
For additional information, see the Infodoc documentation for a discussion of the Texinfo cartouche object:
Infodoc Styles - Cartouche Command
commextract-0.0.02.tar.bz2
‘CommExtract’ source code (C++), Makefile, release notes.
The ‘CommExtract’ utility supports project documentation by extracting selected comments
from the C++ source and reformatting them for use in project documentation such as a “readme” files or
Texinfo documentation source files.
C++ comments in the specified range are copied from the source file, reformatted by removing the “//” comment
token and stripping leading and trailing whitespace. The reformatted data are then written to the target file.
This automatic reformatting can significantly increase the speed and accuracy of creating project documentation.