The DOS Navigator (DN) is an
extremely interesting and influential implementation of OFM. I discover DN existence
rather late and the first version that I checked was version 1.5 released in April 1997.
But analyses of previous versions and correspondence with one of the authors suggest the
DN was the leader since early 1993 (from version 1.10). By implementing three additional
VFS DN opened a new generation of OFMs. It should be considered as an ultimate
DOS-based classic implementation of OFM and it is difficult to compete with DN
featurewise. It was distributed as shareware and not all features were available for
unregistered users.
Like MC it is a team effort under the leadership of Stefan Tarnukov. The initial
version of DN I (v 0.90) was released in 1991 and written by Stefan Tanurkov, Andrew
Zabolotny and Sergey Melnik (all from Kishinev, Moldavia). After that DN was rewritten
using TurboVision by Stefan Tanurkov and Dmitry Dotsenko (currently in Moscow State University). This versions are sometimes
referred as DN II. DN II was actively developed till the beginning of 1995 (until
the version 1.35 that should be considered as a milestone in the OFM
implementations). After the development mostly took bugfixing direction. So most
material below is applicable to v.1.35 although I did not test it.
Several other programmers participated in the development on that stage: after v. 1.37
Slava Filimonov (he is now an author of the MRP Navigator - a file shell,
designed for use for Win95/NT) and Ilya Bagdasarov were in charge for bug fixing.
The version 1.5 was authored by Stefan Tanurkov and Max Masyutin.
Although it is a text based, DN seems to be more close to GUI-based OFM
counterparts as it is using Borland Turbo Vision for the interface implementation. The
size of DN distribution is also more close to GUI-based OFMs (1M). Although it seems to be
a little bit overloaded with additional utilities, the core OFM functionality is really
impressive.
Disclaimer: The author has a very limited experience working with DN
and tested only the demo of v .150. The demo does not provide some advanced
features. In this case documentation was used.
DN 1.35 should be considered as a milestone in the OFMs virtual file system
implementations. It had made a very important contributions in this area. The feature set
and flexibility of DN in this area are really amazing. Among a long list of DN innovations
I would like to single out the following three VFS:
- Xtree VFS -- the ability to view a directory with all subdirectories as a single virtual
directory. Drive a directory can then be viewed as a flat list of files. This idea
was pioneered in Xtree file manager and is a natural and very important extension of the
OFM paradigm. Filters on subtree are essentially a search function for subtree and
in future implementations this two functions should be merged.
- Briefcase VFS that links to files and directories on existing drives into single virtual
directory(or drive). Semantically it is an implementation of the link operation in UNIX,
so a briefcase should be a standard feature in all UNIX implementations of OFMs. It is
possible to copy files from different directories to the briefcase drive and then work
with this links as if they are were stored on this drive. All file operations are
supported. Of course implementation of briefcase on a regular FAT file system is not
as simple as in UNIX, but this is a Microsoft fault ;-). For drives on some versions
of MS DOS and all version of PC DOS join operation was available (strange mix of link and
mount operations), so limited capability of creating briefcase was present even in DOS.
- List-based VFS - the panel will show only files that are results of the search for the
files, that are present in the text-file list. This is a very important generalization of
the find file function and panel filters. Panel filters as currently implemented are not
very useful. In DN the user activates list-based VFS using Panel|Read. After getting
the name of the file with the list DN will read the list, for example files.bbs, and
search for file present in the list. Much better way of implementing this feature is
generalization of panel filters. One need just to add the capability to read the
specification of the filter from the file and to apply the filter to subtreee rather than
single directory. The panel will display the list of files found. In DN files can be
not only in different directories, but on different drives and that possibility should be
preserved. Here we see a difference between this VFS and Flat subtree VFS although
they are somewhat similar and definitely can share considerable part of the implementation
code. Again I would like to stress that OFM implementers just need to generalize filters
to have this feature - an old concept can be extended into new domain.
This three new types of VFS are really a milestone in OFM development. The Xtree
VFS is an important productivity enhancement tool. It was first introduced in Xtree (as
early as in 1987) and this capability probably was the single most important reason
of XTree popularity. As a limited implementation of Xtree VFS exists in NC 5.0 this
VFS should be a standard in all modern OFMs. It provides really superior functionality to
any known to me Windows-style file manager. With Xtree-line of file managers discontinued
(by the way by Symantec :-(), it can became a distinctive mark of OFMs.
Three other innovations are also very important:
- The ability to have several sets of panels and switch between them like in a real
multi-windows editor. Usefulness of the ability to have several sets of panels is
proved by attempts by other authors to add similar features to OFM (for example early
attempts to introduce 4 panels in the PIE Commander by Valentin Chernyak) and
experience with Windows-style file managers where multiple windows are a standard feature.
- DN was probably the first OFM implementation that introduced keyboard macrorecoder in
OFMs. DN permits to record a key sequence and replay it.
- History lists for directory visited, selection masks, etc.
As I already mentioned DN introduced many other innovations. Among them:
- The first correct implementation of the panel information window concept. Lines in the
panel information windows are customizable via file manager options menu. Default
information windows in DN is a three line entity with a current file as the first line,
the number of selected files is the second and number of files in the directory in the
third line.
- According to Max Masyutin additional macro variables have existed in DN since 1991, i.e.
they has been implemented earlier that in VC.
- Several color styles that can be assigned to groups of extensions (file groups are
provided by default).
- Movable panel delimiter can make the panels asymmetric so that one can view descriptions
and additional columns on the single panel.
- Custom video modes (30-line panel view implementation).
- Drag and drop implementation for groups of files and single files (from information
window) !
- Compare directories operation (permits comparing contents);
- Collapsible tree views (although I did not find the key to return to regular tree view);
- Directory tree has expand/collapse options:
- + : Expands/reads the tree starting at the current directory for one subdirectory level
- - : Collapse the subdirectory tree below the current directory.
- * : Expands/reads all subdirectories starting at the current directory.
- Persistent command history as an option
- Advanced file search:
- List of selection masks (e.g. *.bak; *.$$$; *.tmp ),
- Find words.
- Search inside archives.
- Find file not older that N days.
- Persistent history for search.
- FileFind operation in DN can work in background.
- Some(limited) steps toward mask-selection language. DN does not use UNIX style regular
expressions, but there is an option of negating the mask in the selection panel. Also
there is a "mask construction windows" that can be displayed using Alt-Del. It
seems to be somewhat similar to the Foxpro expression construction windows and permits
constructing expression from several masks use negation for any single mask (JC solution
seems to be simpler and more flexible, see below).
- Alt key activated top menu like in VC.
- Additional operations on selection lists.
- The ability to select files with the same name (Alt-Grey+);
- with the same extension (Ctrl-Shift-Gray+)
- with the same type (executable, etc) as the current file.
- the ability to select all file irregarding the file mask
- The ability to select all files irregarding the file mask
- The list of disks are displayed as the last line of information windows and there is an
ability to switch from one disk to another by just clicking the disk letter with mouse (It
is also possible to select next disk using Ctrl-Left/Right but I see no
benefits from such an operation).
- Translation tables for built-in viewer (but there is no possibility to omit certain
characters as in UFO).
- Operations with floppy images;
- The ability to edit commands history;
- New keys for selection of all files irregarding current selection mask, selecting all
files with extension equal to the extension of the file under cursor, etc.
Viewer has several interesting features:
- Build-in calculator
- dump mode (with address button)
- Filter of ASCII characters
The built-in editor in DN is pretty decent, but without any macro facilities. IMHO for
OFMs unless the editor is programmable and serve as a base of OFM implementation it
probably should belong to QE class (QE or Quick Edit is one of the most famous DOS-based
editor programmed in assembler - a lot of power in 32K of code) or even less. From that
point of view the syntax highlighting is probably an overkill for the light-weight
build-in editor as well as line drawing; an alternative (external) middle-weight or
heavyweight editor should be used in complex cases. Among useful thing that can be
implemented without much trouble I would like to mention:
- ASCII table;
- Jump operation;
- Two types of blocks (line blocks and stream blocks);
- Insert Date and Time opeartion;
- Change case command (for words and blocks).
Copyright (C) 1997-2000 Nikolai Bezroukov