BannerTrimPath: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
Instructor (talk | contribs) No edit summary |
Instructor (talk | contribs) No edit summary |
||
Line 25: | Line 25: | ||
"[PathString]" ; | "[PathString]" ; | ||
; | ; | ||
"[Option]" ; [ | "[Option]" ; [Lenght][A|B|C] | ||
; | ; | ||
; | ; Lenght -Maximum string lenght | ||
; A -Trim center path (default) | ; A -Trim center path (default) | ||
; (C:\root\...\third path) | ; (C:\root\...\third path) | ||
Line 42: | Line 42: | ||
<b>Example:</b> | |||
<highlight-nsis> | <highlight-nsis>Section | ||
Section | |||
${BannerTrimPath} "C:\Server\Documents\Terminal\license.htm" "35A" $R0 | ${BannerTrimPath} "C:\Server\Documents\Terminal\license.htm" "35A" $R0 | ||
;$R0=C:\Server\...\Terminal\ | ;$R0=C:\Server\...\Terminal\license.htm | ||
SectionEnd | SectionEnd | ||
</highlight-nsis> | </highlight-nsis> | ||
<highlight-nsis> | |||
!include "WinMessages.nsh" | <b>Example (Banner plugin):</b> | ||
<highlight-nsis>!include "WinMessages.nsh" | |||
!include "FileFunc.nsh" | !include "FileFunc.nsh" | ||
!insertmacro Locate | !insertmacro Locate | ||
Line 80: | Line 80: | ||
</highlight-nsis> | </highlight-nsis> | ||
<highlight-nsis> | <b>Example ([http://nsis.sourceforge.net/wiki/Banner_with_Cancel_button nxs] plugin):</b> | ||
!include "FileFunc.nsh" | <highlight-nsis>!include "FileFunc.nsh" | ||
!insertmacro Locate | !insertmacro Locate | ||
Revision as of 14:57, 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, 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]" ; [Lenght][A|B|C] ; ; Lenght -Maximum string lenght ; 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\license.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