Jump to content
Muxe Inc Forums
Sign in to follow this  

New Release: V2.31.4712

Recommended Posts

Hi everyone.


I planned to go through the complete todo list from the beginning to the end

and fix everything possible for this release, BUT that is impossible to be finished

within just a few weeks or months... :)


So I decided to release it now that I am about 1/3 or 1/4 through the todo list.

There are quite some nice fixes and enhancements.

See for yourself...



─════┤ v2.31.4712 DPMI32/WINDOWS/LINUX 31.08.09 ├═══════════════════════════─
[!] added contact information to doc\licence.txt
[*] Moved advance0.xlt* to keymap
[*] W32: the german SFX stub was replaced by the current english one (Dandv)

[+] W32: implemented drivers.SetMouseCursor() (doesn't work in full screen mode)
[+] New mouse option: Put mouse cursor on the default button
     -> added dialogs.TDialog.SetState() which sets the mouse cursor
     -> added commands.omsMoveDefaultButton to mouse setup and made it default
[-] W32: Mouse cursor was always set to 0x0 on startup when
     Options.Configuration.Interface setup.Store mouse position was enabled [V]
     -> vpsysw32.SysTVUpdateMouseWhere() was not implemented
     -> removed drivers.Mouse[XY]
     -> idlers.CallExternalSaver(), dnutil.TDNApplication.RetrieveDesktop()
        and TDNApplication.SaveDesktop() use drivers.MouseWhere instead of Mouse[XY]
[*] W32/LNX: Option "Store mouse position" is not default anymore
     -> modified startup.InterfaceData.Options
[-] LNX/W32: Executing a file showed the character under the software mouse
     cursor on the console output window [A]
     -> drivers.DoneEvents() now calls drivers.HideMouse()
[-] D32: fixed bugs in mouse X/Y calculation [V] {C}
     -> Modified vpsysd32.SysTVGetMouseEvent(), mouse_eventhandler(), and

[*] cleaned up/corrected the clean up process of NDN
     - Added TGroup.HasView() to check if a view exists in a group
       -> TGroup.IndexOf() returns -1 if nothing found;
          modified TView.PutPeerViewPtr(), TGroup.PutSubViewPtr()
     - collections Update(Prior|Views) now only delete items on clean up,
       not free them; modified RegisterTo(Prior|BackGround)
     - TDNApplication.SaveDesktop() checks if dnapp.MenuBar is nil
     - added TCommandLine.Done(), which sets dnapp.CommandLine to nil
     - TApplication.Done() now uses objects.FreeObject() instead of Dispose()
     - ExecExit() resets QuitForced to false
     - TProgram.Done() now only calls inherited Done() and sets the public
       variables Desktop, StatusLine, MenuBar nil
     - moved drivers4.InitDrivers().InitSysError() call to TApplication.Init()
     - added groupsfm.DoneGroups() and filescol.DoneTempGroups() to
[*] improved the initialization process of the TUI
     -> moved the Insert() and GrowTo() calls for dnapp.(MenuBar|StatusLine)
        from dnapp.TProgram.Init() into dnapp.TProgram.Init(MenuBar|StatusLine)
     -> moved the Insert() call for dnapp.Desktop from dnapp.TProgram.Init()
        into dnapp.TProgram.InitDesktop
     -> Inheriting objects can safely call above functions without a double
        object insertion or object overwrite
[+] Inputlines: support for the QuickDir list window
     -> dialogs.TInputLine.HandleEvent(): added command handling for
        cmQuickChange* and kbAltShift0 for sending cmListOfDirs;
        kbAlt[1-9] now sends cmQuickChange*
[*] Inputlines [LEFT/RIGHT]: Pass the event on to the next view if at the
     beginning or the end of the inputline
     -> Modified dialogs.TInputLine.HandleEvent().kb(Left|Right)
[+] Dialogs: the current/total count of all list boxes will now be shown in
     the window's subtitle frame
     -> views.TListViewer.UpdateSubTitle() now also checks for TDialog, not only
[+] Added collect.TCollection.AtSwap() function
[+] Added Load()/Store()/Done() for future extentions to hideview.TStdWindow
[+] uniwin.TUniWindow now inherits from hideview.TStdWindow
[-] Recalculation of standard window's bounds on screen mode change didn't work
     correctly until zoomed [NC]
     -> removed *another* old non working "fix" in views.TView.CalcBounds().Grow()
        that caused wrong calcuation of standard windows like viewer or editor
        (missing frame lines); this fix was probably added to fix the file panel
        display (visible command line), but I can't be sure due to russian comments
     -> all possible desktop windows (file panel, viewer, editor...) now use
        hideview.TStdWindow, which modifies the standard TWindow GrowMode flags
        to the wanted behaviour
     -> windows with negative starting coordinates now will keep them
[-] Name completion/Inputline: after adding new string the old data was marked [A]
     -> Modified dialogs.TInputLine.HandleEvent() so now the added data is marked
        only if data was actually changed
     -> Corrected dialogs.TInputLine.SetState() to not marking it's data if
        an overlay window is closing (ASCII-Table, Name completion)
[-] Edit/View: moving Find window changed the window caption (Slavik) [DNOC]
     -> views.TWindow.Draw() called wintitle.SetTitle(), removed that call
        and TWindow.Draw() since no other code was left
     -> this also fixed "Copy Dialog + Tree Dialog title blinking" (Slava)
[-] Resizing windows to the lower X-limit (f.ex. Help) showed bad title cuts:
     '-- Help --' '-- ... --' '...Help ' [A] (Slavik)
     -> stringsx.Cut() did not handle lower length edge cases correctly
[+] Move/Resize: added mouse support (Slavik)
     -> modified views.TView.DragView()
[-] Move/Resize: Message boxes didn't support left/right movement (Slavik) [NC]
     -> main3.MyApp.GetEvent() replaced kb(Left|Right) with kb(ShiftTab|Tab) for
        all message boxes when message.MsgActive was true; commented the code
        since it seems unnecessary/redundant
[+] added objects.TPoint.(Copy|Add)() functions, objects.TRect now uses more
     of the TPoint functions internally
[*] HexLine: Improved the HexLine behaviour
     non hex character will be sent to the corresponding inputline
     -> modified dialogs.THexLine.HandleEvent() character handling
     left/right within hex char didn't unselect
     left/right on line limits should tab
     -> modified dialogs.THexLine.HandleEvent().kb(Left|Right)
     select all didn't work
     -> dialogs.THexLine.HandleEvent() now sends all evCommand events to the
     inputline was not selected anymore when entering the corresponding HexLine
     -> dialogs.THexLine.SetState() correctly handles the inputline on focus change
     ASCII table input deleted all data and only one character input was possible
     -> modified dialogs.THexLine.SetState() and TInputLine.SetState()
[*] Improved the fatal error message boxes
     -> modified drivers6.ReportFatalError()
[+] Copy menu items to clipboard
     -> added commands.cmPutInClipboard menus.TMenuView.Execute()

[*] English: Changed all visible hotkey references [ALT+CTRL...] into [CTRL+ALT]
[*] W32/LNX: auto language switch w/o restart by hand;
              restarting NDN now does a full restart
     -> dnutil.TDnApplication.HandleCommand().ChangeLanguage(),
        setups.(MiscMultiSetup|SystemSetup)() now call cmReset
     -> dnexec._ExecString() restarts NDN if reset is required via cmReset
     -> main.RunMainProgram() restarts NDN if dnapp.NeedReset is true
     -> added dnapp.TProgram.(Resume|Suspend)(), used for en/disabling
        OS dependant functionality; used in dnexec._ExecString() and
     -> removed 'echo ' from *.dnl.dlRestart
[-] LNX: restart didn't work [A]
     -> vpsyslnx.SysGetTTYName() didn't correctly save TTY name for new calls
     -> vpsyslnx.OpenVCS() didn't work with multiple calls
     -> vpsyslnx.KbdTerminalThread() init/done handling was not correct
     -> x11.Done() didn't lock the X11 data
[*] The language resources archive now contains all target executables
[-] Russian: Windows hotkeys ([CTRL+C/V...]) didn't work (dimases) [N]
     -> Loading dlAltTable into drivers3.AltCodes1 in drivers3.InitDrivers3()
        didn't correctly check boundaries and overwrote drivers3.ForceWordStarKeys
     -> Russian language uses 37 characters in dlAltTable, modified AltCodes1 and
     -> WordStarChars and AltCodes1 were moved into the implementation section

[*] Removed all stringsx.DisposeStr() on flpanelx.CurFile(Active|Passive)[S]:
     dnexec._ExecDOScommand(), dnutil.TDnApplication.HandleCommand().cmReset,

[-] Ruler on right mouse button was disabled [A]
     -> accidentely commented the code in micro_3.EdHandleMouse()

[+] Marking with mouse + [SHIFT] before marking: copy data to clipboard on
     button release, append data to clipboard if holding [SHIFT] on button
     -> modified micro_3.EdHandleMouse(), added CopyBlock boolean variable
     -> modified fviewer.TFileViewer.HandleEvent(), added DoCopyBlock boolean variable

[*] D32: Improved video code
     -> SetCrtMode() by replacing single VGA calls by adding
        a VGA call table and using the sm* constants instead of absolute values
     -> DoneVideoModes() now uses FreeObject()
     -> InitVideoModes() resets VESA_Found
[-] adding/using mode 175x83 actually was 80x43 (hmskrecik) [A]
     -> added video.CreateNewVideoMode(), which unifies the creation of
        new video modes added at runtime and uses a new video mode
        id routine which does not create conflicting ids
        (see 175x83 = 80x43 = $02FF)
     -> merged video.GetVideoModeNumbyMode() into GetVideoModebyMode()
     -> dnutil.TDnApplication.HandleCommand().ChScreenMode() now returns
        better error information if an invalid or already existing mode
        was entered for addition to the list
[*] moved drivers.TCursorInfo|PreNDNCursor to video
[-] W32: Cursor set to 0x0 in certain cases:
     Start a console that changes the window size twice: 80x300->80x25->80x30
     80x300 is the standard window buffer size for Windows XP consoles
     -> Because of the second video mode change and a call to video.UpdateScreen()
        the default values of drivers.Cursor[XY] were used = 0x0; solved this by
        using the same default values for drivers.OldCur[XY] and Cursor[XY]
[*] moved main.SysTVDoneCursor() to video.DoneVideo()

[-] Mark with mouse: starting point X/Y changed -1 if (X/Y < starting point) [NC]
     -> usermenu.TGrabber.HandleEvent() correctly sets the starting point if
        moving back over it

[+] Added event command to insert a command line string
     -> restructured cmdline.TCommandLine.HandleEvent() and added cmInsertLine

[+] Added drop and edit commands to the view/edit/dir histories
     -> modified histries.(Edit|View|Cmd|Dir)HistoryMenu() to
        accept the drop commands (cmYes)
     -> "Delete record" and "Kill" were renamed to "Delete"
     -> Cleaned up the source code
     -> Renamed histries.TTHistList.ItemStr() to GetItemPtr() and
        added TTHistList.SetItemPtr()
     -> modified histries.TTHistList.HandleEvent().cmOk to use

[*] Added new palette file apometrn.pal (Rodrigo Cesar Banhara / Apometron)

[+] added RTF to, improved PERL and PHP in NDN.hgl (Dandv)

[-] NDN.EXT/D32/NT: executing EXT files may exceed the max commandline length of
     128 which resulted in loading a new command interpreter, which requires
     "exit" to continue with NDN [A] (RayeR)
     -> simplified the names of temporary files from xndn<num>x.* to z<num>.*
        to save command line space in advance0, unified the name generation
        in main2.InvalidateTempDir()
     -> modified dizfiles.ReplaceDIZ(), dnutil3.ClearSwap(),
        dnexe._RunOS2Command() and usermenu.QuickExecExternal() to use the new
        temporary file naming scheme
     -> improved the execution command generation in dnexec._ExecString()
     -> Removed dnexec.ExecExtraEnv
     -> modified fileio.CalcTmpFName() by making the ID parameter optional
[-] Exec file search messed up the file search extension/path order [A] (Dandv)
     -> improved fileio.SearchPathEnv() to scan paths with a fixed extension
        order and to optionally return the extension of the found file
     -> dnexec.Executables was changed from a #0 to a ';' separated list
        with dots in front of each extension and the order of extensions was
        corrected to match the behaviour of DOS and WINDOWS;
        added fileio.IsExecutable() which handles the comparison
[-] NDN.EXT: single lined extension commands appeared 2 times on the console
     screen; http://forums.muxe.com/index.php?showtopic=3210 (Crimso/Dandv) [A]
     -> dnexec._ExecFile() printed single lined commands

[-] Advanced filter [ALT-DEL]: hiding wildcards didn't work anymore [A]
     -> complete code of fltools.CM_AdvancedFilter() was rewritten, improved
        and simplified
     -> Hide-Masks were added to the panel filter with a space "- *.*"
     -> Extensions > 3 were not handled correctly if multiple masks were
     -> stringsx.Replace() didn't return any information
     -> the dialog window will not close and reopen anymore on show/hide;
        code now uses views.TView.EventCallbackHandler()

[*] LNX: Changed Configuration.System Setup.Temporary Dir "%TEMP%" to "/tmp/"
     -> changed startup.SystemData.Temp default data
     -> improved the temp dir handling in main2.InvalidateTempDir()
[-] D32/W32: Former %TEMP temp dir strings are not supported anymore [A]
     -> main2.InvalidateTempDir() corrects bad env strings
     change of the temp dir in Options.Configuration.System Setup was not
     noticed until restart
     -> setups.SystemSetup() resets if the temp strings has changed
     prevented execution of NDN.EXT entries
     -> main2.InvalidateTempDir() didn't reset the advance0.Swp* strings
     -> added error messages dnexec._SearchExt() if it fails
[!] Enabled following options on default (startup.pas)
     * Options.File Manager.Setup:
       Restore Temporary Files, [ALT-F1/F2] Show VFS, Show Driveline info window
     * Options.Configuration.Interface Setup
       Allow multiple help windows
     * Options.Configuration.Mouse Setup
       Track in menus
     * Options.Configuration.Editor Setup
       New file loading

[-] Extract to "<path>" didn't work [A]
     -> archiver.UnarchiveFiles() didn't handle ""

[+] Added CTRL cursor keys that move 2 chars left/right and 5 chars up/down {C}
     -> added kbCtrl(Left|Right|Up|Down) and shortcurt function SetCursorPos()
        to asciitab.TTable.HandleEvent()

[-] Fixed numeral system for negative numbers {C} (Slavik)
     -> calc.NumeralSystem() didn't handle negative values
[+] Added functions: GCD, LCM, BIT {C}

[+] Added CauseWay 3P executables {C}


Get it here: http://ndn.muxe.com/download/


All the best,

Stefan / AH

Share this post

Link to post
Share on other sites
dandv    0
Hi everyone.


I planned to go through the complete todo list from the beginning to the end

and fix everything possible for this release




[-] Exec file search messed up the file search extension/path order [A] (Dandv)

-> improved fileio.SearchPathEnv() to scan paths with a fixed extension

order and to optionally return the extension of the found file

-> dnexec.Executables was changed from a #0 to a ';' separated list

with dots in front of each extension and the order of extensions was

corrected to match the behaviour of DOS and WINDOWS;

added fileio.IsExecutable() which handles the comparison


Unfortunately I missed your test request in the thread for that bug, and I found that this version, 2.31.4712, does not appear to fix it.


There's also another small issue - the About box claims the release date is 31.08.2009, instead of 2009-09-12. So I'm not sure if the fix actually made it in the release.

Share this post

Link to post
Share on other sites

Hi Dan,


the date of release is correct.

I have finished the work on NDN on the 31.8.

But when I tested the LINUX version I found a few severe problems that took

me some days to get fixed. So I had to release NDN on the 12th...


The LINUX compile environment does not auto update the date and version

count, therefore the version count and compile date stood still.


Does it show exactly the same behaviour as before?

Or has it changed?


Stefan / AH

Share this post

Link to post
Share on other sites
dandv    0
Does it show exactly the same behaviour as before?

Or has it changed?


Same as before - when I type 'git' then Enter at the NDN command line, git.exe is executed, although git.cmd would come first in the PATH. If I type 'git' then Enter at the cmd.exe command prompt, git.cmd gets executed.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this