Announcement

Collapse
No announcement yet.

Optional Radio Buttons

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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:

    code:

    !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!!

  • #2
    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?

    HTML Code:
    !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

    Comment


    • #3
      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

      Comment

      Working...
      X