dtm777
29th August 2013 04:49 UTC
Optional Radio Buttons
Hi all,
I'm relatively new to NSIS, so excuse my noobness.
I'm using NSIS 2.46 with MUI2. I am trying to create a components page where the component group is optional, but the items in the group are radio buttons.
The context is that I install some prerequisites for my installation. The user can choose 2 options on how those prerequisites are installed, but they can also choose not to install the prerequisites at all.
Currently my code looks something like:
!insertmacro MUI_PAGE_COMPONENTS
...
SectionGroup "Prerequisite Installation"
Section  "Install Type 1" installType1
SectionEnd
Section  "Install Type 2" installType2
SectionEnd
SectionGroupEnd
...
Function .onInit
StrCpy $1 ${installType1}
FunctionEnd
Function .onSelChange
!insertmacro StartRadioButtons $1
!insertmacro RadioButton "${installType1}"
!insertmacro RadioButton "${installType2}"
!insertmacro EndRadioButtons
FunctionEnd
      
      Code examples taken from 
http://stackoverflow.com/questions/1...ams-to-install.
      
      This does give me the "radio button" effect for install types, but I cant deselect the group checkbox (which ok, is "correct" radio button operation. I'm seeing if theres a way to have nothing selected or only 1 selected)
      
      Thanks!!
    
 
    
      Smurge
      7th October 2013 19:49 UTC
      good question, i have the same problem. I use it the same way you do, like this http://nsis.sourceforge.net/Examples/one-section.nsi
      
      Always 1 checkbox is activated. You cant deactivate both.
      
      Is it possible to uncheck both options with this "Sections.nsh" method?
      
      
!include "Sections.nsh"
;--------------------------------
Name "One Section"
OutFile "one-section.exe"
RequestExecutionLevel user
;--------------------------------
; Pages
Page components
;--------------------------------
; Sections
Section !Required
 SectionIn RO
SectionEnd
Section "Group 1 - Option 1" g1o1
SectionEnd
Section /o "Group 1 - Option 2" g1o2
SectionEnd
;-------------------------------
; Functions
; $1 stores the status of group 1
Function .onInit
 StrCpy $1 ${g1o1} ; Group 1 - Option 1 is selected by default
FunctionEnd
Function .onSelChange
 !insertmacro StartRadioButtons $1
  !insertmacro RadioButton ${g1o1}
  !insertmacro RadioButton ${g1o2}
 !insertmacro EndRadioButtons
FunctionEnd
     
    
      Afrow UK
      8th October 2013 16:21 UTC
      You can write your own code in .onSelChange to check the selected states of sections and uncheck the others as necessary. You can use ${If} ${SectionIsSelected} and the UnselectSection macro in Sections.nsh to simplify things.
      
      Stu