* New header file with macros and conversion functions for use with InstallOptions

* Updated InstallOptions documentation


git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@5226 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
joostverburg 2007-08-09 00:53:45 +00:00
parent 0865910e56
commit 13425ee143
3 changed files with 1071 additions and 828 deletions

View file

@ -0,0 +1,232 @@
/*
InstallOptions.nsh
Macros and conversion functions for InstallOptions
*/
!macro INSTALLOPTIONS_FUNCTION_READ_CONVERT
!insertmacro INSTALLOPTIONS_FUNCTION_IO2NSIS ""
!macroend
!macro INSTALLOPTIONS_UNFUNCTION_READ_CONVERT
!insertmacro INSTALLOPTIONS_FUNCTION_IO2NSIS un.
!macroend
!macro INSTALLOPTIONS_FUNCTION_WRITE_CONVERT
!insertmacro INSTALLOPTIONS_FUNCTION_NSIS2IO ""
!macroend
!macro INSTALLOPTIONS_UNFUNCTION_WRITE_CONVERT
!insertmacro INSTALLOPTIONS_FUNCTION_NSIS2IO un.
!macroend
!macro INSTALLOPTIONS_FUNCTION_NSIS2IO UNINSTALLER_FUNCPREFIX
; Convert an NSIS string to a form suitable for use by InstallOptions
; Usage:
; Push <NSIS-string>
; Call Nsis2Io
; Pop <IO-string>
Function ${UNINSTALLER_FUNCPREFIX}Nsis2Io
Exch $0 ; The source
Push $1 ; The output
Push $2 ; Temporary char
StrCpy $1 "" ; Initialise the output
loop:
StrCpy $2 $0 1 ; Get the next source char
StrCmp $2 "" done ; Abort when none left
StrCpy $0 $0 "" 1 ; Remove it from the source
StrCmp $2 "\" "" +3 ; Back-slash?
StrCpy $1 "$1\\"
Goto loop
StrCmp $2 "$\r" "" +3 ; Carriage return?
StrCpy $1 "$1\r"
Goto loop
StrCmp $2 "$\n" "" +3 ; Line feed?
StrCpy $1 "$1\n"
Goto loop
StrCmp $2 "$\t" "" +3 ; Tab?
StrCpy $1 "$1\t"
Goto loop
StrCpy $1 "$1$2" ; Anything else
Goto loop
done:
StrCpy $0 $1
Pop $2
Pop $1
Exch $0
FunctionEnd
!macroend
!macro INSTALLOPTIONS_FUNCTION_IO2NSIS UNINSTALLER_FUNCPREFIX
; Convert an InstallOptions string to a form suitable for use by NSIS
; Usage:
; Push <IO-string>
; Call Io2Nsis
; Pop <NSIS-string>
Function ${UNINSTALLER_FUNCPREFIX}Io2Nsis
Exch $0 ; The source
Push $1 ; The output
Push $2 ; Temporary char
StrCpy $1 "" ; Initialise the output
loop:
StrCpy $2 $0 1 ; Get the next source char
StrCmp $2 "" done ; Abort when none left
StrCpy $0 $0 "" 1 ; Remove it from the source
StrCmp $2 "\" +3 ; Escape character?
StrCpy $1 "$1$2" ; If not just output
Goto loop
StrCpy $2 $0 1 ; Get the next source char
StrCpy $0 $0 "" 1 ; Remove it from the source
StrCmp $2 "\" "" +3 ; Back-slash?
StrCpy $1 "$1\"
Goto loop
StrCmp $2 "r" "" +3 ; Carriage return?
StrCpy $1 "$1$\r"
Goto loop
StrCmp $2 "n" "" +3 ; Line feed?
StrCpy $1 "$1$\n"
Goto loop
StrCmp $2 "t" "" +3 ; Tab?
StrCpy $1 "$1$\t"
Goto loop
StrCpy $1 "$1$2" ; Anything else (should never get here)
Goto loop
done:
StrCpy $0 $1
Pop $2
Pop $1
Exch $0
FunctionEnd
!macroend
!macro INSTALLOPTIONS_EXTRACT FILE
InitPluginsDir
File "/oname=$PLUGINSDIR\${FILE}" "${FILE}"
!insertmacro INSTALLOPTIONS_WRITE "${FILE}" "Settings" "RTL" "$(^RTL)"
!verbose pop
!macroend
!macro INSTALLOPTIONS_EXTRACT_AS FILE FILENAME
InitPluginsDir
File "/oname=$PLUGINSDIR\${FILENAME}" "${FILE}"
!insertmacro INSTALLOPTIONS_WRITE "${FILENAME}" "Settings" "RTL" "$(^RTL)"
!macroend
!macro INSTALLOPTIONS_DISPLAY FILE
Push $0
InstallOptions::dialog "$PLUGINSDIR\${FILE}"
Pop $0
Pop $0
!macroend
!macro INSTALLOPTIONS_DISPLAY_RETURN FILE
InstallOptions::dialog "$PLUGINSDIR\${FILE}"
!macroend
!macro INSTALLOPTIONS_INITDIALOG FILE
InstallOptions::initDialog /NOUNLOAD "$PLUGINSDIR\${FILE}"
!macroend
!macro INSTALLOPTIONS_SHOW
Push $0
InstallOptions::show
Pop $0
Pop $0
!macroend
!macro INSTALLOPTIONS_SHOW_RETURN
InstallOptions::show
!macroend
!macro INSTALLOPTIONS_READ VAR FILE SECTION KEY
ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}"
!macroend
!macro INSTALLOPTIONS_WRITE FILE SECTION KEY VALUE
WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" "${VALUE}"
!macroend
!macro INSTALLOPTIONS_READ_CONVERT VAR FILE SECTION KEY
ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}"
Push ${VAR}
Call Io2Nsis
Pop ${VAR}
!macroend
!macro INSTALLOPTIONS_READ_UNCONVERT VAR FILE SECTION KEY
ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}"
Push ${VAR}
Call un.Io2Nsis
Pop ${VAR}
!macroend
!macro INSTALLOPTIONS_WRITE_CONVERT FILE SECTION KEY VALUE
Push $0
StrCpy $0 "${VALUE}"
Push $0
Call Nsis2Io
Pop $0
WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" $0
Pop $0
!macroend
!macro INSTALLOPTIONS_WRITE_UNCONVERT FILE SECTION KEY VALUE
Push $0
StrCpy $0 "${VALUE}"
Push $0
Call un.Nsis2Io
Pop $0
WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" $0
Pop $0
!macroend

File diff suppressed because it is too large Load diff

View file

@ -33,6 +33,11 @@ docs = Split("""
Readme.html
""")
Import('BuildPlugin')
includes = Split("""
InstallOptions.nsh
""")
Import('BuildPlugin env')
BuildPlugin(target, files, libs, examples, docs, res = resources)
env.DistributeInclude(includes)