AngelsHolocaust 0 Report post Posted May 29, 2007 hi *! Sorry, again not as much news as I wanted to achieve. whatsnew: [!] replaced my nickname in the about box with my real name [*] providing host define HOST_OS to the makefile: %WINDIR% check for NT/9x else assume D32 [+] WatchDog unit to handle NDN/created thread crashes -> added VP\SOURCE\RTL\watchdog.pas -> contains shortcut calls for one main watchdog -> custom watchdogs can be created [*] fileio.TTextReader now inherits from fileio.TMemReader - TMemReader can now check for a complete string of ANY length in consecutive buffers if the inheriting object provides the interface (see TTextReader) - CR/LF/CRLF check and result generation now placed into TMemReader including cfMix support W32/D32/LNX/OS2/VIRTUAL PASCAL COMPATIBILITIES: [!] D32 finally NDN can be developed in DOS directly thanks to the newest version of the nice HX DOS Extender (http://www.japheth.de/) -> this didn't work the last time I tried with an older version -> necessary files and interface now included into VPUPDATE [*] W32: - removed the extra SysPlatform handling from w32\vpkbdw32.pas, now using vpsyslow.SysPlatformID() - Platform init code is now again in vpsyslow.SysPlatformID() [*] LNX: several changes to prevent hangups - drivers6.ReportFatalError() quits waiting for keypress if the KbdThread died and uses vpsyslow.SysFlushKeyBuf() instead of custom code - added CustomWatchDogCheck() to dnapp.GetEvent() which quits NDN as soon as the kbd thread dies [*] D32: moved main.RunMainProgram().RemoveDpmi32Exceptionhandlers() to vpsysd32.SysCtrlExitProcess() [*] D32: moved Options.Configuration.System Setup."Fast" Command Execution (Int 2eh) into Options.Configuration.Miscellaneous Options.Operating System -> commands.ossFastExec renamed to commands.osFastExec and now D32 only [+] W32: added support for wintitle.GetTitle() -> WINAPI.GetConsoleTitle() [*] W32: added (german) start menu shortcut creation to the user menu [F2] [-] D32/W9x: window title showed "NDN - NDN - Edit - ..." [A] (Oleg Arkhangelsky) -> wintitle.SetTitle() prepended 'NDN - ' to the title strings, but this is not necessary since W9x adds this internally -> wintitle.GetTitle() didn't return any data [-] LNX: writeln() from within NDN is not correct because of the OPOST bit in the terminal settings (LF != BOL) [V] -> not corrected in vpsyslnx.TrmInit() VIEWER [-] QuickView content only visible when changing to panel [A] (Zaimskih) -> viewer colors in quickview were not initialized anymore -> added manual fviewer.TFileViewer.ReadFile().UpdateColors() SCREEN SAVER [-] W32: monitor off and lock turned the monitor on again after lock [A] -> monitor off needs to be the last action performed -> put the monitor off code to the end of idlers.TMonitorSaver.Init() KEYBOARD [-] D32: [CTRL-? ?] didn't work anymore (editor) [A] -> was due to the change from [CTRL] press to release keycode generation -> drivers.GetKeyMouseEvent() does not send a key release when another key was pressed during holding the [CTRL] key FILE PANEL [-] scrolling mouse wheel didn't update panel information lines [A] (Sir Yaro) -> TFilePanel.HandleEvent.evMouseWheel didn't redraw the info view [-] pressing [CTRL-O] in user screen [ESC] hid the panel [A] -> main3.MyApp.GetEvent().kbCtrlO will not work if UserScreenIsOn is true [+] LNX: when copying a filename without path to the commandline NDN will prepend './' -> flpanelx.TFilePanelRoot.CommandHandle().MakeFName() SCREEN/VIDEOMODES [*] LNX X: user screen ([CTRL-O] [ALT-F5]) had several display problems: - some X terminal programs do not keep the screen content of the alternate buffer when switching to the normal buffer (gnome-terminal) -> dnapp.TApplication.ShowUserScreen() calls video.UpdateScreen() - clock (memory, date...) and statusline were visible in normal buffer -> dnapp.TApplication.ShowUserScreen() hides the views respectively -> added gauges.TClockView.SetState() - mouse moves/clicks refreshed cells in normal screen buffer when Options.Configuration.Mouse.Hardware Cursor was turned off or on mouse clicks -> added drivers.MouseEnabled and drivers.(Disable|Enable)Mouse(), used in dnapp.TApplication.ShowUserScreen() - leaving user screen with [CTRL-O] didn't work -> main3.MyApp.GetEvent().kbCtrlO will not work if UserScreenIsOn is true -> improved dnutil.TDnApplication.HandleCommand().GetUserScreen() [-] LNX X: resizing with mouse hung up NDN [A] -> depended on terminal emulator (no problems in gnome-terminal) -> added parameter KeepScreenSaved to video.DoneVideo(), used in dnapp.TProgram.SetScreenMode() [*] D32: replaced custom PreNDNCursor asm code from video.DoneVideo() with SysTVSetCurPos and SysTVSetCurType TURBOVISION: VIEWS/DIALOGS/MENUS/OBJECTS [-] open dialog, [CTRL-O], [ESC/CTRL-F4] and commandline didn't work [DNOC] -> dialogs.TDialog.HandleEvent() checks usermenu.UserWindowIsOn and routes the events to cmdline.TCommandLine.HandleEvent() [-] dnstddlg.TFileDialog.GetFileName() appended the extension of the input filename if the inputline contained a name without dot (abc != abc.) -> now only adds the extension if the user entered a wildcard in the filename extension DNEXEC/EXTERNAL VIEWER/EDITOR DNEXEC.EXECUTEFILEEXT/LOCAL_GLOBAL_MENUS [-] Executing external files from NDN.EXT: - problems when the block end character, i.e. ]}) was the last character on any line in the statement block, if the block-start character was [{[ respectively -> dnexec._SearchExt() -> block-end characters will be ignored if entered like: \) or )) -> only the block-end character will be replaced, not the other 2 ununsed block-characters - line length shortstring limit (Dandv) [DNC] -> added GetAStr() to fileio.TTextReader -> usermenu.MakeString() handles AnsiStrings [*] reenabled flpanelx.PShootState usage instead of drivers.ShiftState1 [-] LNX: started programs inherited FDs from NDN (GPFault) [V] -> vpsyslnx.SysExecute() sets FD_CLOEXEC on all open FDs before execve() [-] LNX X: hang ups after executing NOP programs (sleep 0) (GPFAult) [?] {G} -> fragmented cursor position reply by XTerm -> vpsyslnx.KbdTerminalThread().TerminalGetKeyCode() -> added define X_GETCURPOS_PATCH_GPF -> could not be reproduced (AH) EDITOR [*] maximum editor string length is now 2GB -> microed2.EditorReadBlock() now has 2 file read routines: the old one, with the 32KB string length limit and a new one, based on fileio.TTextReader, which can handle (in theory) strings up to 2GB; both routines will stay until the new code is proven to be bugfree; also note that the new code is not enabled by default and that it is slower than the old code -> I would like to hear some tests concerning the file loading times with large files on slower machines -> added option in Options.Configuration.Editor Setup.New File Loading -> startup.MaxEdStringLength changed from 32767 to MaxLongInt-1 [*] added mixed line break handling (cfMix) (Necromancer) -> added Options.Configuration.Editor.Mixed Line Breaks and commands.edeMixedLineBreaks, used in in microed2.EditorReadBlock() -> removed global microed.DefLineDivisor and added microed.GetDefaultLineBreak(); removed load/save of DefLineDivisor in dnutil.TDNApplication.SaveDesktop() and dnutil.TDNApplication.LoadDesktop() and all other references -> mixed line breaks will be removed as soon as the file is saved: microed2.WriteBlock() corrects microed.TFileEditor.EdOptions.ForcedCRLF ARCHIVES [*] LNX: display of drive in archive name like "C:ABC.RAR" removed -> vfs_arcv.TArcDrive.GetDir() [-] TGZ issues (J.B.Lethbridge) [] * the displayed name in the opened archive was wrong when the original archive name was not given inside the archive (missing .tar ext) -> arc_tgz.TTGZArchive.GetFile() correctly returns the filename * trying to extract the TAR archive inside the TGZ didn't work because the TGZ archiver was "tar[.exe]" and it directly extracts the tared files from the TGZ - we use GZIP for TGZ archives -> redirection only way to (un)compress files to wanted location with gzip -> for this arc_tgz.TTGZArchive needs to read the filename from the archive internally for add/extract operations -> added arc.TArchive.Redirect(Un)Comp to signal use of redirection for this archive type (gzip only for now - to be improved later?!) -> modified archiver.MakeArchive(), archiver.UnArchiveFiles(), vfs_arcv.TArcDrive.ExtractFiles(), vfs_arcv.TArcDrive.UseFile() [*] put more archive handling code into the archive object -> created base archive object called arc.TArchive -> removed the unused arcs.TArchive.PutTempBefore variable download: http://ndn.muxe.com/beta Stefan / AH Share this post Link to post Share on other sites