Jump to content
Muxe Inc Forums
Sign in to follow this  

new release: 2.30.2830

Recommended Posts

hi everyone


after 4 weeks in munich i am back with a new release

there are a lot of new things, and i know of a few things that i broke

but maybe you won't realize it at all




[!] first of all: sorry to everyone who wrote email or posted to the forum

and waited for a reply by me, but as i told you all i cannot do that at

the moment as i would like to

you can be sure that i do get all reports and messages and i am working

a lot on NDN


[-] closing the System Dialog 'Abort,Retry...' randomly crashed (BMW) [A]

-> drivers5.SystemError calculated wrong size for clearing the

error dialog buffer with ' ' (now MemSize / 2)

[-] "Ignore All" of drivers5.SystemError didn't react to it's hotkey [A]

-> drivers5.SystemError had an error in the if/then/else statement

[-] stringsx.DelChar didn't handle empty strings [A]

[*] LNX: removed Options.Configuration.System Setup.Clear read-only from CD

usage (commands.ossRemoveCD_RO)

[+] LNX: added vpsyslow.tSysOptions/SysOptions: configure LNX RTL operations

[*] added misc (multiple dialog) configuration setup: regex, name completion

[+] Filename/Keyword completion: filename completion works on

the commandline and in all inputlines, the keyword completion

works in the internal editor

-> updated help: editor, dialogs, commandline, options.configuration menu

-> created new help topics: NameCompletion & Setup

-> changed options.configurations menu help: regexsetup -> misc setups

-> added (cm)CompleteKeyword editor command, added to edcom.dnr

-> added highlight keyword completion options

-> extended stringsx.FormatStrCase to format a range in a string

-> added stringsx.DeleteX: works like standard Delete but returns the deleted data

-> modified flpanel, dialogs.microed6/micro_3, highlite, stringsx, dialmult,


-> added cmdline.TCommandLine.HandleNameComp()

[*] added TCL to ndn.ext and ndn.hgl

[*] LNX RTL: vpsyslnx.SysFindFirst() now supports '~/*' paths

[-] fileio.IsDir() now returns data correctly for C: and C:\ [A]

[+] added Options.Configuration.Misc Setups.OS Setup:

W32: store position and state of console window to desktop on exit

-> added commands.osRestoreWindowState

LNX: a few options concerning the screen drawing: direct screen access,

G1/G0 selection and UTF-8 mode. (experimental)

[+] added stringsx.PasStrCmp() which works like StrCmp but handles pascal strings,

used in: collect.TNoCaseStringCollection, highlite.TKeywordCollection.Compare,

highlite.TCommentTypeCollection.Compare, pcregexp.TRegExpCollection.Compare

[*] improved: video.TVideoModeByModeCol.Compare

[+] added stringsx.PCharCopy(): works like standard copy but with pchars

[+] added stringsx.PosX(): like the standard system.Pos() but handles

escaped characters and accepts a starting index

[+] colors: (re)get colors for views only on palette change or (re)start

-> added views.TView.UpdateColors(), called from views.TGroup.Redraw

-> removed highlite.THighliteParams.ColorsInited and color get code from

microed7.EditorDraw() and fviewer.TFileViewer.Draw()



[-] Copy/Move: "Reset copy options" was always on [A]

-> filecopy.CopyDialog() didn't use current dialog options to check for


[-] Copy/Move: "Preserve dir structure" when copying dirs crashed and

base dir was created but source dirs were not created inside it [A]

-> missing check for Own=nil in CopyFile, target dir structure was

stored to DirsPreCreate but not to Dirs in CopyDirectories

[-] D32 NT: couldn't delete read only directories [NC]

-> lfn.lRmDir always resets file attributes to 0 before deletion

[-] Move from CDROM: prints a warning/error message when trying to delete

a file or directory [DNOC]

-> checking CD_DRIVES/IsCD 2 times in filecopy.MaxWrite

-> added disk.TDriveInfo.(IsCD|GetDriveTypeA)

[-] Copy/Move: didn't set source time/date on directories [DNOC]

-> filecopy.CopyI sets it after creation of the directory

[*] Copy/Move: set all time/date information, not only last write

-> modified filecopy collections to store tFileTimes instead

of only last write time

-> filecopy.MaxWrite only set last write file time

[*] Delete: added progress bar and counter, deletion of unicode LFN (D32/W32) {G}

-> eraser.EraseFiles()



[-] W32 NT: setting (f.ex.) 94x25 from 80x30 didn't work [V/WinNT]

-> vpsysw32.SysSetVideoMode now resets SetConsoleWindowInfo() before

setting new video data

[*] W32 NT: now stores current video mode to mode list if it doesn't exist



[*] PROC: signal NDN (self) in list by comparing it's PID

-> vfs_proc.TProcDrive.GetDirectory.FinishProcInfo changes

TFileRec.LName to '<<< NDN >>>'

[*] FIND: several improvements

* starting a search inside a FIND PANEL will search files inside the

panel by default (selected files or total find drive) (MiB);

if a new search doesn't use data from this panel the panel will be deleted

* search in selected files/dirs (Alex Grishanov)

-> moved dnutil.TDnApplication.HandleCommand().cmFindFile into


-> vfs_find.FindFile() now receives the Panel from where the command was


-> a lot of changes and improvements to vfs_find.FindFile|FindFiles



[*] added views.TGroup.GetFirstTypeOf(): helper to check for Checkboxes or


[-] dialogs.TCluster.SetButtonState only worked for TCheckBoxes,

added it to dialogs.TRadioButtons

[*] added filescol.TFilesCollection.Clone() constructor and

TFilesCollection.CloneItem() to copy items based on the current

collection - NOTE: tries to do a object based implementation in

collect.TCollection with a virtual CloneItem() failed because the Clone

constructor didn't use the CloneItem of TFilesCollection

[*] collect.TCollection: added flag to signal that only the container should

be disposed, not the items; items are only deleted from list, not freed:

collect.TCollection.OnlyDeleteItems: Boolean

-> collect.TCollection.Done uses it

-> fltools.GetSelection() automatically sets this flag

-> removed GetSelection + DeleteAll/Dispose combinations from:

1*vfs_find, 3*flpanelx, 1*diskimg, 6*fltools

-> also solved some memory leaks due to undisposed collections:


[*] implemented dialogs.CheckBoxesE/RadioButtonsE.SetButtonState():

receives no bit mask but the value of one button to disable/enable

[+] added generic code to views.TListViewer: QuickSearch, GetQuickSeachChar

-> possibility to quickly search for chars inside of all list boxes;

the first character only

-> removed first implementation from TComboBox

[*] added filescol.TFilesCollection.GetSelection(): creates new collection

with (depending on parameters) OnlyDeleteItems set from all items

which are (not) Selected (TFileRec.Selected)

[*] added collect.TCollection.Merge(): collection A takes the items of

collection B and Disposes B

[*] added collect.TCollection.Iterate(): return items of a collection until

list end; checks for nil internally

[+] implemented dialogs.ListBoxE: receives items in a Collection or SItem list,

handles scrollbar and list internally, only returns focused value

[*] TComboBox [ESC]/[ENTER]: first hit closes the expanded box,

next hit closes dialog

[+] filescol.TFilesColletion: added GetFileNameCollection() which returns all

files in a string collection

[*] collect.TUnSortedStrCollection now handles duplicates

[*] collect.TCollection.Insert() now returns a boolean if the value was actually added

-> converted from procedure to function

[*] views.TWindow: windows which cannot be zoomed (dialogs f.ex.) will be

centered on double click on the top frameline, added "Center" to Window menu

-> views.TWindow.HandleEvent() handles cmCenter, sent by


-> added views.TView.CenterView(), removed center code from


[*] TComboBox: discard changes if clicking besides the box (Dandv)

-> dialogs.TDialog.HandleEvent(): clicking to an "empty" area will reset

the focus on the object

-> added views.TView.ResetView() which releases and gives focus

[-] validate.TValidator.Options was 0, hence no data was gotten/set [DNOC]

[+] added collect.TNoCaseStringCollection which sorts strings case insensitive

[+] added views.TWindow.HandleEvent().cmGetName: needed for Window.Window List



[+] QuickSearch, see update to views.TListViewer (Basil/2)

[+] setup for max edit/view/directory/command history length/size,

added Options.Configuration.Miscellaneous Setups.History Setup

-> now saves histries.MaxCmdHistorySize to ini file

-> added hcHistorySetup



[+] added delete word right of cursor: [CTRL-SHIFT-BACKSPACE]

-> cmdline.TCommandLine.HandleEvent



[-] lfn.zlfSplit() didn't split '.\' correctly -> returned '.\' as ext [NC]

-> commented "and ((B > 2) or not HasColon)" hopefully w/o side effects



[*] LNX T: [CTRL-SPACE] works

[*] added timeout for double keypresses (0.25s)

-> drivers.GetKeyMouseEvent().DoubleKeyTimer

[*] delay dead keys (shift,ctrl,alt,caps,win keys) for double assignments:

NDN will wait for a second keypress for 1/4 second before sending the single

one - behaviour like in LINUX with TAB possible

-> drivers.GetKeyMouseEvent()



[+] implemented MultiDialog: SUBGROUP/END,COMMONRECT

SUBGROUPS are basically DIALOGS (without buttons),

SUBGROUP bounds are relative to COMMONRECT

-> dialogs from ndn.dnr can be copied into a subgroup w/o changing

the bounds/coordinates/sizes of the subviews

-> see Options.Configuration.Miscellaneous Setups

[+] added ListBoxE

[*] all dialog content (PVIEWs) can now be scanned recursively, now only one

implementation of the parsing code exists

-> added rcp.CompileDialog().ScanDialogContent()

[+] added "IntInputLine <min>,<max>,<bounds>,<maxlen>,<history>"

-> converting from integer to string and vice versa internally

using validate.TRangeValidator; receives and returns an integer

instead of a string

[*] removed the D^.Awaken call from rcp.ProcessDLGs.CompileDialog()

-> added setups.TSysDialog.Init() which calls awaken



[*] several changes in drawing output to remove linux/dos ifdefs:

bookmark line (now '-'), filtered characters (now '.')



[-] FTP: still some files could be overlooked when parsing the incoming

file list and remove '/' when getting current directory [A] {G}

-> vfs_ftp.TFTPConnected.(GetFilesCol|GetCurrentDir)



[+] new feature: delete empty lines at the end of the file when saving

-> added editor option "Del. empty lines"

-> works if "Optimal fill" or "Del. empty lines" are enabled

-> microed2.WriteBlock, used in microed2.Editor(SaveFile|SaveFileAs)

-> microed7.EditorDraw(): better view setting of Pos.Y

[*] delete word to the right now behaves as delete word left

(stop at breakchars and delete breakchars separately)

-> commented additional line in micro_4.EdDelWordRight

[-] file > 1 lines, move cursor to end, cursor right, backsp:

cursor left AND 1 line appended (GPFault) [A]

-> micro_4.EdMakeBack() sets cursor to EOL, but only if line contains

data to support indent on empty lines

[*] keyword comp: collect all words (word/char count code)

-> at the moment collected with each name completion event

maybe: on load (microed2.EditorLoadFile) and line update/next

completion event?!

-> modified micro_3.(EdCountCharsWords|EdCompleteKeyWord)

[*] the bookmark and infoview lines were not redrawn when the state

sfSelected or sfActive were off

-> microed.TEditWindow.SetState() did only draw info/bookmarks

when above states were enabled

[*] confirmation option: modify read only files

-> one confirmation for editor and viewer:

Options.Configuration.Confirmations.Modify read-only files

(startup.Confirms.Options and commands.cfModifyReadOnly)

-> rus and eng resources have been modified accordingly

[*] search info window when searching in search paths (SPF)

-> searchf.FindFileWithSPF(): added PTimedWhileView and now receives a

list of filenames to look for

-> microed2.EditorOpenFileAtCursor() provides a list of possible filenames

and only calls FindFileWithSPF() once

[-] 1 lined files always get CRLF as line divisor (GPFault) [DNOC]

-> microed2.EditorReadBlock.CountLines() did always set CRLF even if no

line ending was detected at all, now uses default value from editor

setup (files with 1 line don't have a line ending)

[-] ruler with RMB over window moved cursor after release (GPFault) [DNOC]

-> restructured code in micro_3.EdHandleMouse(), now no editor content

is modified anymore (cursor, blocks)

[-] Smart tab now also uses the first line for indenting information [A]

-> micro_4.EdDoTab().GetSmartTabStep() used 'I > 0' instead of '>='

[-] Smart tab did not work if the preceeding line was empty, or one of the

preceeding lines was more indented than one of it's succeeding lines [A]

-> micro_4.EdDoTab().GetSmartTabStep() skips directly preceeding empty


-> micro_4.EdDoTab().GetTabStep() ignores 'out of order' lines



[-] QuickSearch: pressing [ALT] quit the quicksearch mode but didn't

remove the search from the panel [A]

-> flpanel.TFilePanel.HandleEvent didn't draw the information view

of the panel after leaving the quicksearch mode

[-] flpanel.QuickDirArr was not disposed [A]

-> flpanelx.CleanFlPanelX disposes it

[-] LNX: "cd path+filename" didn't work [A]

-> sk.__CheckDirectory.ValidPath LINUX code didn't check trailing parts

of the given directory for validity

[-] LNX "Show hidden files" had no effect (.*) (Sir_Yaro) [V]

-> vpsyslnx.DoFindFile now sets the hidden attribute



[*] move: indicates when user is moving a group

-> groupdlg.TGroupViewer.NewItemPos() shows info in subtitle

[*] file group list, color info line didn't use it's the whole size.x to

display the mask

-> groupdlg.TGroupInfoPane.Draw



[*] flag values can now read a list of bit values, not only one value

-> highlite.MakeValue() using stringsx.ParseLineSpace()

-> example: "1 2 32 1024"

[*] improved the very slow loading of large files with a lot of multiline

comments or strings (f.ex. windows.pas) [NC]

-> about 50% faster = highlite.TMultiCommentCollection.NewFreshLine():

modified for construct which increased all line data when inserting

new lines from 0 to count-1, now goes from count-1 to 0 and breaks

at the very first line < new line

same modification to highlite.TMultiCommentCollection.CleanLine()

(which is almost unused)

[*] (correct) use of '\' as escape char in keyword and comment highlight data

- "REM " comments or ',' in comment(start|string) was not possible [NC]

-> highlite.InitHighLight.FixHighliteParams() treats every character

succeeding a '\' literally

-> highlite.InitHighLight.MakeStrings() checks if a ',' is preceeded by

'\' and looks for the next ','

- "RegKeywords color red bug\\,bug2" == "bug\,bug2" but should be 2 keywords

(GPFault) [NC]

-> highlite.InitHighLight.MakeRegKeywordsColl() now skips all escaped


- Stringflags 1+2 didn't work correctly: \'abc\' still highlighted the first

' (Dandv) [NC]

-> highlite.Highlites.CheckString(), only when MultilineString disabled,

didn't check the first found ' or " for escape

- Keywords with escaped characters

-> highlite.InitHighLight.MakeKeywordsColl() handles escaped characters

- escaped multiline comments are now supported

-> highlite.InitHighLight.MakeDefaults()

[+] new regkeyword and colored keyword color values:

string, comment, number, symbol, normal (GPFault)

-> modified highlite.InitHighLight.GetCurrentColor() and

added highlite.InitHighLight.ReadColor(), used in following 2 methods

-> Keywords: highlite.InitHighLight.MakeColoredKeywords()

-> RegKeywords: highlite.InitHighLight.MakeRegKeywordsColl()

[+] RegKeyWords[1-8] using the KeyWord[1-8] colors (GPFAult)

-> modified highlite.InitHighLight.MakeDefaults(),

highlite.InitHighLight.MakeRegKeywordsColl() and added


[+] match not only file mask, but content of file

-> normal search pattern: inside <> regex pattern: inside ><

-> case insensitive

-> modified microed2.EditorLoadFile() and fviewer.TFileViewer.ReadFile():

load the HGL data after loading the file data

-> microed.TFileEditor.InitHighLight() provides first line and

fviewer.TFileViewer.ReadFile() first Min(64, filesize) bytes

-> added highlite.InitHighLight.FirstMatch() which matches mask & content

-> added pattern for *.SH files to ndn.hgl



[*] pcregexp.TpcRegExp now inherits from TObject (FreeObject)



[+] CSV file support (*.csv, *.rep, *.spr) {G}

-> dbfview

-> @Garl: please read the dbfview-source code for some notes by me



[-] big screen video mode, editor help, cannot select "system clipboard" [DNOC]

-> helpfile.THelpViewer set it's limit to 78, now always sets Size.X

[*] open help like a standard window with switching etc...

-> added stdefine.NEW_HELP_WINDOW (to see old help code)

-> modified dnutil.TDnApplication.HandleCommand().cmHelp:

* using ExecView() if top view is user screen, in dragging mode or

already started via ExecView() else Insert() into desktop

* commented the unused dnutil.HelpInUse with the define above

-> modified helpfile.THelpWindow.Init()


-> Options.Configuration.Interface.Allow multiple help windows:


-> added global views.ExecViewActive: if a view is executed via ExecuteView

this value is true (255 nested calls possible)

-> help window in Window.List also shows the current topic: added

helpfile.THelpWindow.HelpFile and helpfile.THelpWindow.HandleEvent()



[-] set-on-next-viewer/editor-window code always used english window strings

and always used the first editor window, even if current was a viewer

-> using getstring to get the dlViewTitle and dlEditTitle language strings

-> code will now select exactly according to what the current view is


see you soon


Stefan / AH


download: http://ndn.muxe.com/beta.php

(even if the beta page is not yet updated don't worry, the links point to the new version already)

Share this post

Link to post
Share on other sites
dandv    0

Cool! New version! Unfortunately, it doesn't start on my Windows XP SP2. I opened a command prompt to c:\ndn and typed .\NDN.EXE. NDN displays its startup message and exists:

Necromancer's Dos Navigator v2.30.2830/WIN32. Based on Dos Navigator by Ritlabs...
·WinNT detected, Process ID is 3308...

NDN 2.30.0024 runs without problems.


BTW, I'm not sure if anyone reported this, but starting several months ago, the RAR archives of NDN beta contain two files with the same name in the same folder (!?). I used WinRAR 3.61 to open the archives and every file in the colors\ directory was doubled.

Share this post

Link to post
Share on other sites

hey dan!


yes, i am sorry, this has to do with the fact that i added the feature that the current video mode, if ti doesn't exist in the current list, is added to the vm-list


and, when you start ndn in a standard w2k+ console you have a window buffer of 80x300 (!).

so, since the mode was in the list and NDN found the current mode to be set it tried to set it, but i

tested it once and the max possible screen sizes are a less than that


i have fixed this in the release i will upload in a few minutes

(yes, i had to come back home again...)


about the color problem:

my work w32 dir (where i compiled my work into) had an additional color dir

i have removed this and it shouldn't appear anymore


check my next post in this forum


Stefan / AH

Share this post

Link to post
Share on other sites
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoticons maximum are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this