BannerTrimPath: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
Instructor (talk | contribs) |
Instructor (talk | contribs) (→Links) |
||
Line 6: | Line 6: | ||
: http://forums.winamp.com/showthread.php?s=&threadid=203228&goto=lastpost | : http://forums.winamp.com/showthread.php?s=&threadid=203228&goto=lastpost | ||
If a function is used without | If a function is used without header, you should put the function code in your script before calling it. | ||
== The Function Description== | == The Function Description== |
Revision as of 11:35, 4 July 2005
Author: Instructor (talk, contrib) |
Links
- Latest version of headers "nsh.zip"
- http://forums.winamp.com/showthread.php?s=&threadid=203228&goto=lastpost
If a function is used without header, you should put the function code in your script before calling it.
The Function Description
____________________________________________________________________________ BannerTrimPath ____________________________________________________________________________ Trim string path for banner. Syntax: ${BannerTrimPath} "[PathString]" "[Option]" $var "[PathString]" ; ; "[Option]" ; [Length][A|B|C] ; ; Length -Maximum string length ; A -Trim center path (default) ; (C:\root\...\third path) ; If A mode not possible Then will be used B mode ; If B mode not possible Then will be used C mode ; B -Trim right path ; (C:\root\second path\...) ; If B mode not possible Then will be used C mode ; C -Trim right string ; (C:\root\second path\third p...) ; $var ; Result: Trimmed path
Example:
Section ${BannerTrimPath} "C:\Server\Documents\Terminal\license.htm" "35A" $R0 ;$R0=C:\Server\...\Terminal\licensing.htm SectionEnd
Example (Banner plugin):
!include "WinMessages.nsh" !include "FileFunc.nsh" !insertmacro Locate Section Banner::show /NOUNLOAD "Starting..." Banner::getWindow /NOUNLOAD Pop $R1 ${Locate} "$WINDIR" "/L=F /M=*.* /B=1" "LocateCallback" Banner::destroy SectionEnd Function LocateCallback StrCmp $R0 $R8 code StrCpy $R0 $R8 ${BannerTrimPath} "$R8" "38B" $R8 GetDlgItem $1 $R1 1030 SendMessage $1 ${WM_SETTEXT} 0 "STR:$R8" code: StrCmp $R9 '' end ;... end: Push $0 FunctionEnd
Example (nxs plugin):
!include "FileFunc.nsh" !insertmacro Locate Section nxs::Show /NOUNLOAD `$(^Name) Setup`\ /top `Setup searching something$\nPlease wait$\nIf you can...`\ /h 1 /can 1 /end ${Locate} "$WINDIR" "/L=F /M=*.* /B=1" "LocateCallback" nxs::Destroy SectionEnd Function LocateCallback StrCmp $R0 $R8 abortcheck StrCpy $R0 $R8 ${BannerTrimPath} "$R8" "55A" $R8 nxs::Update /NOUNLOAD /sub "$R8" /pos 78 /end abortcheck: nxs::HasUserAborted /NOUNLOAD Pop $0 StrCmp $0 1 0 +2 StrCpy $0 StopLocate StrCmp $R9 '' end ;... end: Push $0 FunctionEnd
The Function Code
Function BannerTrimPath !define BannerTrimPath `!insertmacro BannerTrimPathCall` !macro BannerTrimPathCall _PATH _LENGHT _RESULT Push `${_PATH}` Push `${_LENGHT}` Call BannerTrimPath Pop ${_RESULT} !macroend Exch $1 Exch Exch $0 Exch Push $2 Push $3 Push $4 StrCpy $3 $1 1 -1 IntOp $1 $1 + 0 StrLen $2 $0 IntCmp $2 $1 end end IntOp $1 $1 - 3 IntCmp $1 0 empty empty StrCmp $3 'A' A-trim StrCmp $3 'B' B-trim StrCmp $3 'C' C-trim A-trim: StrCpy $3 $0 1 1 StrCpy $2 0 StrCmp $3 ':' 0 +2 IntOp $2 $2 + 2 loopleft: IntOp $2 $2 + 1 StrCpy $3 $0 1 $2 StrCmp $2 $1 C-trim StrCmp $3 '\' 0 loopleft StrCpy $3 $0 $2 IntOp $2 $2 - $1 IntCmp $2 0 B-trim 0 B-trim loopright: IntOp $2 $2 + 1 StrCpy $4 $0 1 $2 StrCmp $2 0 B-trim StrCmp $4 '\' 0 loopright StrCpy $4 $0 '' $2 StrCpy $0 '$3\...$4' goto end B-trim: StrCpy $2 $1 IntOp $2 $2 - 1 StrCmp $2 -1 C-trim StrCpy $3 $0 1 $2 StrCmp $3 '\' 0 -3 StrCpy $0 $0 $2 StrCpy $0 '$0\...' goto end C-trim: StrCpy $0 $0 $1 StrCpy $0 '$0...' goto end empty: StrCpy $0 '' end: Pop $4 Pop $3 Pop $2 Pop $1 Exch $0 FunctionEnd