BannerTrimPath: Difference between revisions
Instructor (talk | contribs) |
Instructor (talk | contribs) |
||
Line 8: | Line 8: | ||
== The Function == | == The Function == | ||
/* | <highlight-nsis>/* | ||
____________________________________________________________________________ | ____________________________________________________________________________ | ||
Line 77: | Line 77: | ||
Example ([[nxs]] plugin): | Example (</highlight-nsis>[[nxs]] <highlight-nsis>plugin): | ||
!include "FileFunc.nsh" | !include "FileFunc.nsh" | ||
!insertmacro Locate | !insertmacro Locate | ||
Line 111: | Line 111: | ||
;--------------------------------------------------------------------------- | ;--------------------------------------------------------------------------- | ||
Function BannerTrimPath | Function BannerTrimPath | ||
!define BannerTrimPath `!insertmacro BannerTrimPathCall` | !define BannerTrimPath `!insertmacro BannerTrimPathCall` |
Revision as of 08:08, 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
The Function
/*
____________________________________________________________________________
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 (
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
- /
;--------------------------------------------------------------------------- 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