AngelsHolocaust 0 Report post Posted January 27, 2008 Hi everyone, I am pleased to release the first version in 2008. Have fun and thank you all for the support in 2007. Whatsnew: ─════┤ v2.31.0000 DPMI32/WINDOWS/LINUX 27.01.08 ├═══════════════════════════─ [*] added more IFDEF checks for "Reanimator" code, using the define REANIMAT [*] added a few more comment macros to C/C++, Java, C#, PHP, Lua, JavaScript [!] D32 makefile.dos: added define which specifies the dos extender: DOS_EXT_* -> DOS_EXT_DOS32A, ... [!] single year/version number reference in code (use in tvhc, ndn, rpc...) -> added main.CurrentYear, NDNYears and NDNYearsAH constants -> converted all date/version code to use the constants in main [*] W32 new contray code by Vladimir Bochkarev: [-] tray code never restored the window in maximized state -> SW_SHOW instead of SW_RESTORE [+] Fullscreen menu command, animation [*] added timedate.GetWeekdayString(), replaced code in calendar.TCalendarView.Draw() and gauges.TClockView.Update() [+] from now on NDN will be released in self extracting archives (Garl) (yes, the LINUX archive has an EXE extention on purpose) [-] "Options.Load ini file" didn't redraw the screen [A] -> added RedrawForce to dnutil.TDnApplication.HandleCommand().cmLoadIni [+] added memory.Mem(Get|Free)() and memory TMemStorage, for easier memory buffer handling [*] replaced commands.dlArcMsg4 with commands.dlFBBNoOpen, since they had the same text except for a 'the' [!] moved the -$M<minstack>,<maxstack> from makefile.dos to ndn.vpo, because it the commandline length limit of maker was reached HEADER VIEWER [-] MZ-Overlay calculation in viewhead.tMZ.CalcOverlayStart() was wrong [A] [+] added Go32Stub support, which is a LE/LX compatible format with different ID ('L'#01) [+] code will now use the Overlay start offset if the NewExe offset seems invalid -> added viewhead.tMZ.GetNEOfs() [-] LE/LX and ELF dialog handling corrupted memory [A] -> viewhead.tLE.EntryPoint() and viewhead.tLE.GetHdr() used more than LE_OBJECT_COUNT*viewhead.tLE.ObjTable entries -> viewhead.tELF.EntryPoint() and viewhead.tELF.GetHdr() used more than ELF_PRGHDR_COUNT*viewhead.tELF.PrgHdr entries [-] viewhead.HdrInit() didn't correctly setup tHdr.SubExeType [A] ARCHIVES [+] added support for Go32Stub SFX archives (DOS RAR f.ex.) -> modified archiver.SkipSFX() by using the overlay start ofs instead of the new exe ofs if it's invalid -> added a new exe header ID 'L'#01 [+] added (uncompressed!) ELF SFX support (tested with Linux RAR SFX) -> added ELF check to archiver.SkipSFX() -> doesn't work with UPXed RAR SFX for example VIEWER [-] HEX/DUMP: goto offset and goto bookmarks didn't work correctly [A] -> fviewer.TFileViewer.MoveToOfs() didn't handle buffer position offsets correcty [-] Modified file, [ESC], No button -> always repeated the MessageBox() [A] -> fviewer.TFileViewer.WriteModify() didn't clear the Modified flag before executing the cmNo code -> the MessageBox() as recursively executed [-] HEX/DUMP/ASM: Creating blocks with mouse on the first or last line on screen didn't work [A] -> modified fviewer.TFileViewer.HandleEvent().evMouseDown so the view scrolling (pressed mouse button) only works when moving over the viewer boundaries [-] SaveAs [SHIFT-F5]: didn't close current file and open the saved one [DNOC] -> modified fviewer.TFileViewer.HandleEvent().cmReanimator to open the new file after saving -> moved the code from cmReanimator to cmSaveTextAs [-] vmDump/Hex: couldn't enter $00-$31/$ff from from ASCII-Table (Dandv) [DNC] -> fviewer.TFileViewer.HandleEvent() keyboard code didn't allow the above charcodes, now checking for ALT/CTRL in Event.Shiftstate [-] not fully loaded files didn't support *.BAK files [A] -> in fviewer.TFileViewer.WriteModify(): copyfile instead of renaming before saving using vpsyslow.SysFileCopy() -> error message if the backup couldn't be created [*] merged fviewer.TFileViewer.HandleEvent().Windows(Copy|Cut|Paste)() into fviewer.TFileViewer.HandleEvent().(Copy|Cut|Paste)Block() [-] header display didn't work if more than 1 file was loaded into viewer on startup and the last file loaded had no supported header [A] -> moved cmViewHeader enable/disable code from fviewer.TFileViewer.ReadFile() to fviewer.TFileViewer.SetState() [-] Scrollbar handling was not based on the current position, but always on the view window position into the file (Slavka) [DNOC] -> improved the TScrollBar.Value handling, it is now based on the current view mode using cmChangeValue with fviewer.TFileViewer.CurrentPos() in fviewer.TFileViewer.DrawScrollBar() -> added DrawScrollBar to fviewer.TFileViewer.HandleEvent().CED() -> added fviewer.TFileViewer.Awaken(), which correctly sets up fviewer.TFileViewer.ScrollBar after load; removed scrollbar setup code from fviewer.TFileViewer.ReadFile(), Awaken() is called manually in fviewer.TFileWindow.Init() -> with Awaken() the need for fviewer.TFileViewer.Loaded was gone, therefore removed the boolean and all references in fviewer and histries.RestoreViewInfo() -> TScrollbar.Max is now correctly initialized with Filesize-1 [+] added fviewer.TFileViewer.GetSelection(), which returns selection data in a buffer, handling data on disk AND inside the currently loaded buffer [+] Copy to/Paste from file operations [CTRL+ALT+F5/F4] -> added fviewer.TFileViewer.PasteFromFile(), CopyToFile() and cmBlock(Read|Write) to fviewer.TFileViewer.HandleEvent() [-] reloading a file from viewer opened archives or external viewers [A] (Dandv/Necromancer) -> fviewer.TFileViewer.HandleEvent().Reload() provided -1 instead of the current viewmode to dnutil.TDNApplication.ViewFile() [-] syntax highlighting was wrong in some cases if there was no EOL before the EOF (Dandv) [A] -> fviewer.TFileViewer.CountLines() didn't correctly use LineCount [-] vmDump/Hex/Asm: [DEL] at the EOF of files which were not fully loaded behaved like [BACKSPACE] [A] (Dandv) (http://forums.muxe.com/index.php?showtopic=526) -> edit operations on not fully loaded files force a reload of the file, which acesses the histories, but the history did not store and restore the position in the file but cursor position on screen -> now (re)stores the file instead of the cursor position in histries.StoreViewInfo() and histries.RestoreViewInfo() by using fviewer.TFileViewer.MoveToOfs() and CurrentPos() [*] better buffer calculation: align to even boundaries except if forced by the user -> fviewer.TFileViewer.MoveToOfs() didn't correctly detect if the file position is already on screen and it didn't align correctly -> fviewer.TFileViewer.SeekEOF() was improved by using MoveToOfs() and removing unecessary code [-] Cursor/file position was not correctly restored on NDN restart [DNOC] -> fviewer.TFileViewer.(Store|Load)() only (re)stored FilePos+BufPos, they now use fviewer.TFileViewer.(Currentpos|MoveToOfs)() respectively [-] vmAsm/Dump/Hex: deleting a block from the end of the block position didn't advance the cursor correctly to the start of the block [A] (Dandv) (http://forums.muxe.com/index.php?showtopic=524) -> fviewer.TFileViewer.HandleEvent().kbDel didn't move the cursor to the block start correclty EDITOR [*] merged microed6.EditorHandleEvent.cmWindows(Cut|Paste|Copy) into microed6.EditorHandleEvent.cm(Cut|Paste|Copy) [-] Undo/Redo behaviour in case of single line block deletion was wrong [A] -> complete line after the deleted block was appended on undo after a redo to the existing line -> modified single line behaviour in micro_2.EdConvert4do().dkUndo.udDelBlock EDITOR/VIEWER [+] Append to clipboard operation: clipboard copy/cut + [SHIFT/CTRL] appends the new data to the clipboard instead of replacing [CTRL-SHIFT-C/X/INS/DEL] -> improved winclp.__SetWinClip() -> modified fviewer.TFileViewer.HandleEvent().*CopyBlock() and micro_1.EdCopyBlock() not to always delete the old clipboard data -> modified microed.TFileEditor.GetSelection(), microed3.EditorGetSelection() and all references to these functions to support copy into existing clipboard data -> modified microed6.TFileEditor.HandleEvent().cm(Clear|*Cut|Copy) to support the new appending hotkeys [-] "Opening locked file" bugs, if Options.Configuration.Editor."New file loading" was disabled [A] (Dandv) A = System Setup.[X] Internal Editor B = System Setup.[X] Internal Viewer C = Editor Setup.[X] Auto codepage * ABC: Viewer error message, Editor opens empty file -> microed2.EditorReadBlock() (old code) used a constant error value of 2 if S^.Status <> stOK, now uses S^.ErrorInfo which holds the correct error code of the function * AB: Viewer error msg, Editor error msg but crash afterwards -> microed2.EditorReadBlock() (old code) disposed keymap.TCodePageDetector even though it was not used * other combinations don't show any errors anymore LFN [*] D32: put LFN open/create code into vpsysd32 [V] -> removed lfn._SysFile(Open|Create) by updating vpsysd32.SysFile(Open|Create) -> moved Options.Configuration.System Setup.[ ] Don't Use LFN to Options.Configuration.Miscellaneous Setup.Operating System to support LFN code also in the RTL, removed commands.ossaNoLongNames, added commands.osNoLFNCode -> every target now uses vpsyslow.SysOptions instead of startup.MiscMultiData.OSSetup.Options CLOCK [-] AM/PM was not shown when seconds were disabled [DNOC] when AM/PM was enabled the clock was not fully displayed -> rewrote gauges.TClockView.FormatTimeStr() [-] clock placement with various options was not correctly handled [NC] * D32: time/date in top corner truncated on cmdline exec (Rugxulo) * start of NDN with 12 hour format moved the clock view to the right -> added gauges.TClockView.InitAuto() which uses the extent of the desktop and calculates it's boundaries internally, used in dnutil.TDNApplication.Init() -> added gauges.TClockString -> added gauges.TClockView.(ResetView|Relocate)(), replaced code in dnutil.TDNApplication.RetrieveDesktop() -> replaced the gauges.TClockView.OldShowSeconds code with gauges.TClockView.OldStdClockWidth, which checks the clock size and not the options of the clock [+] command: move clock to starting place ("=" menu) -> added commands.cmResetClock and =.Reset clock position, handled in dnutil.TDnApplication.HandleCommand() [-] clock was not always placed correctly, see big screens in Linux (AdminZ) [?] -> added cmVideoModeChanged check to gauges.TClockView.HandleEvent(), which checks the clock placement on each start or mode change -> removed clock code from dnutil.TDNApplication.RetrieveDesktop() and dnutil.TDnApplication.HandleCommand().SetScrMode() CALENDAR [*] Calendar is now selectable like any other window on the desktop -> added stdefine.CALENDAR_SELECT, which signals the new code in calendar.pas [*] Activating calendar when it's already selected (topmost window) closes it -> modified calendar.InsertCalendar() to check it's current state TURBOVISION: VIEWS/DIALOGS/MENUS/OBJECTS/MESSAGES [+] added objects.TRect.Contains(Rect|View)() which can be used to check if view is completely in TRect, used in dnutil.TDNApplication.RetrieveDesktop() SCREEN/VIDEOMODES [+] added dnapp.TProgram.SignalVideoModeChange(), which broadcasts cmVideoModeChanged to the Application (not Desktop anymore), used in dnutil.TDNApplication.Init() and dnapp.TProgram.SetScreenMode() -> added video.TVideoModeChangeInfo, which holds the old and new video mode information; auto updated by video.SetCrtData() DNEXEC/EXTERNAL VIEWER/EDITOR DNEXEC.EXECUTEFILEEXT/LOCAL_GLOBAL_MENUS [-] W32: new processes were started with hard errors disabled, resulting in no message boxes when DLLs were not found [V] (Dandv) -> added CREATE_DEFAULT_ERROR_MODE to SysExecute().dwCreationFlags download: http://ndn.muxe.com/download/ Stefan / AH Share this post Link to post Share on other sites
Minimus 0 Report post Posted January 28, 2008 I am pleased to release the first version in 2008. Have fun and thank you all for the support in 2007. Whatsnew: Sorry for offtop ;-) 1. When there will be normal support of a network (in Windows)? 2. Where i can look ToDo list? Share this post Link to post Share on other sites
Garl 0 Report post Posted January 29, 2008 1. When there will be normal support of a network (in Windows)? network work fine with 'cd' command or you want Network like FAR\DN2 ? 2. Where i can look ToDo list? \DOC\whatsnew.txt line 268 Share this post Link to post Share on other sites
Minimus 0 Report post Posted January 29, 2008 network work fine with 'cd' command or you want Network like FAR\DN2 ? Yes, like FAR\DN2. (For Windows NDN only) \DOC\whatsnew.txt line 268 Opsss :blush: Has not seen. Share this post Link to post Share on other sites
AngelsHolocaust 0 Report post Posted January 29, 2008 Hi! The network VFS was a quick hack from me for Necromancer. It is not of high priority for me at the moment, but I put it on my todo list. It would be also a nice example for plugins, which I want to work on in 2008. Bye, Stefan / AH Share this post Link to post Share on other sites
RayeR 0 Report post Posted January 30, 2008 Hi, thx for new beta. I'm happy with linux version, no crashes... I know you know about DOS version issue with cmd and have low priority but remembering :) Also a small note to new SFX packages. I think it would be better if it create NDN directory than just extacting files in current dir. But just my preference any clue to NDN functionality. EDIT: also for linux the SFX package is not good choice - I cannot unpack it on machine at work: user@debian:~/ndn$ ./_lnx.exe ./_lnx.exe: /lib/tls/i686/cmov/libc.so.6: version `GLIBC_2.4' not found (required by ./_lnx.exe) I have no root rights to fiddle with libc version so I cannot unpack it there on my user account. But previous version in normal archive can run OK. Share this post Link to post Share on other sites
AngelsHolocaust 0 Report post Posted February 5, 2008 Hi! Found the first major bug myself: NDN cannot view a file with size 0 a second time in text mode, except if it's entry in the viewer history is deleted. SFX + Linux: Ui, this is bad. But you can still unpack it with RAR like a standard archive. If there will be more complains I will think about it again. Bye, Stefan / AH Share this post Link to post Share on other sites