beginner
beginner

Reputation: 483

using radio button followed by custom button in nsis

i have created an installer using NSIS. In that i have included 2 radio buttons. whenever user selects any of the radio buttons it immediately starts execution , but i want after selecting a radio button execution should start only after user presses a custom button say Next.

So how to add button(say Next) in my script and how can i connect my radio button selection with it ?

the partial code snippet is as follows:

Function mode_selection

    nsDialogs::Create 1018
    Pop $dialog
    ${NSD_CreateLabel} 0 10 75% 20u "Choose your preference....."
    Pop $0 

    ${NSD_CreateRadioButton}  20 60 100% 25u "Execution Mode"
    Pop $hwnd
    ${NSD_AddStyle} $hwnd ${WS_GROUP}
    ${NSD_OnClick} $hwnd exec_mode

    ${NSD_CreateRadioButton} 20 90 100% 25u "Debug Mode "
    Pop $hwnd
    ${NSD_OnClick} $hwnd debug_mode


nsDialogs::Show

FunctionEnd

Function exec_mode

    ;some code

FunctionEnd
Function debug_mode

     ;some code

FunctionEnd

Upvotes: 0

Views: 673

Answers (1)

Anders
Anders

Reputation: 101666

!include nsDialogs.nsh
!include LogicLib.nsh
Page custom mode_selection

var hwndExecModeRadio

Function mode_selection
nsDialogs::Create 1018 
Pop $0
${NSD_CreateLabel} 0 10 75% 20u "Choose your preference....."
Pop $0 

${NSD_CreateRadioButton} 20 60 80% 25u "Execution Mode"
Pop $hwndExecModeRadio
${NSD_AddStyle} $hwndExecModeRadio ${WS_GROUP}

${NSD_CreateRadioButton} 20 90 80% 25u "Debug Mode "
Pop $0

${NSD_CreateButton} 20 150 -40 14u "Do it"
Pop $0
${NSD_OnClick} $0 perform_mode

nsDialogs::Show
FunctionEnd

Function perform_mode
    ${NSD_GetState} $hwndExecModeRadio $0
    ${If} $0 = ${BST_CHECKED}
        Call exec_mode
    ${Else}
        Call debug_mode
    ${EndIF}
FunctionEnd

Function exec_mode
    MessageBox mb_ok "exec_mode"
FunctionEnd 

Function debug_mode
    MessageBox mb_ok "debug_mode"
FunctionEnd

Upvotes: 1

Related Questions