Difference between revisions of "Wizard Page Events"
(Initial text and Page IDs) |
(Started events documentation. Added OnEnter() and OnLeave().) |
||
Line 31: | Line 31: | ||
You can give these two pages any ID you want but make sure it's unique. Besides the obvious reasons why it should be unique, the page ID is also used by various wizard pages to store per-page user selections inside the Code::Blocks configuration. So a duplicate ID will save under the same configuration key... | You can give these two pages any ID you want but make sure it's unique. Besides the obvious reasons why it should be unique, the page ID is also used by various wizard pages to store per-page user selections inside the Code::Blocks configuration. So a duplicate ID will save under the same configuration key... | ||
+ | |||
+ | |||
+ | == Events == | ||
+ | Now that we 've seen what page IDs are, we can talk about wizard script events. | ||
+ | |||
+ | To make a script handle a wizard event, you must create a script function with a special name to handle this event. All event functions must follow the same naming conventions: | ||
+ | |||
+ | * First is the event name | ||
+ | * An underscore follows | ||
+ | * And finally the page ID | ||
+ | |||
+ | Look in the events documentation below. Each event contains sample code. | ||
+ | |||
+ | |||
+ | === OnEnter(forward) === | ||
+ | Fired just before a page is displayed by the wizard. The script can initialize the page contents in this event. | ||
+ | |||
+ | {| border="1" cellpadding="3" cellspacing="0" style="border: 1px solid gray; border-collapse: collapse;" | ||
+ | |- style="background: #ececec; border: 0px solid gray" | ||
+ | !Return type || Value | ||
+ | |- | ||
+ | |void || - | ||
+ | |} | ||
+ | |||
+ | |||
+ | {| border="1" cellpadding="3" cellspacing="0" style="border: 1px solid gray; border-collapse: collapse;" | ||
+ | |- style="background: #ececec; border: 0px solid gray" | ||
+ | !Parameter || Type || Description | ||
+ | |- | ||
+ | |forward || bool || If true, the page entered after the user clicked "Next". If false, the user had clicked "Back". | ||
+ | |} | ||
+ | |||
+ | |||
+ | '''Sample:''' | ||
+ | function OnEnter_CompilerPage(forward) | ||
+ | { | ||
+ | // we only care to initialize if going forward | ||
+ | if (forward) | ||
+ | { | ||
+ | // do something? | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | === OnLeave(forward) === | ||
+ | Fired just before a page is changed to another. This is a very useful event because the script can assign the page contents to variables. | ||
+ | |||
+ | Inside this event, the script has the ability to abort the page change. So, for example, the script can check the values the user entered and abort the page from changing if it detects incorrect values. | ||
+ | |||
+ | {| border="1" cellpadding="3" cellspacing="0" style="border: 1px solid gray; border-collapse: collapse;" | ||
+ | |- style="background: #ececec; border: 0px solid gray" | ||
+ | !Return type || Value | ||
+ | |- | ||
+ | |bool || If this function returns true, the page is allowed to change. If it returns false, the change is aborted (the wizard stays in the same page). | ||
+ | |} | ||
+ | |||
+ | |||
+ | {| border="1" cellpadding="3" cellspacing="0" style="border: 1px solid gray; border-collapse: collapse;" | ||
+ | |- style="background: #ececec; border: 0px solid gray" | ||
+ | !Parameter || Type || Description | ||
+ | |- | ||
+ | |forward || bool || If true, the page entered after the user clicked "Next". If false, the user had clicked "Back". | ||
+ | |} | ||
+ | |||
+ | |||
+ | '''Sample:''' | ||
+ | function OnLeave_MyXRCPanel(forward) | ||
+ | { | ||
+ | // we only care to check validity if going forward | ||
+ | if (forward) | ||
+ | { | ||
+ | local userName = Wizard.GetTextControlValue("txtUserName"); | ||
+ | if (userName.IsEmpty()) | ||
+ | { | ||
+ | ShowWarning(_T("You must enter a username!")); | ||
+ | return false; // abort the page change | ||
+ | } | ||
+ | } | ||
+ | return true; // all is well | ||
+ | } |
Revision as of 09:55, 10 July 2006
A script can handle various wizard events while the wizard is running. This page explains these events (and their uses) in detail.
Page IDs
Every wizard page (pre-defined or custom) has a unique page ID. This ID is a wxString that identifies the page in scripts.
These are the valid pre-defined page IDs:
Page | ID |
---|---|
Intro | "IntroPage" |
File selection | "FilePathPage" |
Project settings | "ProjectPathPage" |
Compiler | "CompilerPage" |
Build target | "BuildTargetPage" |
Generic path | |
Generic single choice list |
You 'll notice that the two last pre-defined pages don't have an ID. This is because you can have more than one of them inside the same wizard and so the IDs wouldn't be unique anymore.
For these two pages, the ID is the first argument passed to their creation calls. See AddGenericSelectPathPage and AddGenericSingleChoiceListPage syntax.
You can give these two pages any ID you want but make sure it's unique. Besides the obvious reasons why it should be unique, the page ID is also used by various wizard pages to store per-page user selections inside the Code::Blocks configuration. So a duplicate ID will save under the same configuration key...
Events
Now that we 've seen what page IDs are, we can talk about wizard script events.
To make a script handle a wizard event, you must create a script function with a special name to handle this event. All event functions must follow the same naming conventions:
- First is the event name
- An underscore follows
- And finally the page ID
Look in the events documentation below. Each event contains sample code.
OnEnter(forward)
Fired just before a page is displayed by the wizard. The script can initialize the page contents in this event.
Return type | Value |
---|---|
void | - |
Parameter | Type | Description |
---|---|---|
forward | bool | If true, the page entered after the user clicked "Next". If false, the user had clicked "Back". |
Sample:
function OnEnter_CompilerPage(forward) { // we only care to initialize if going forward if (forward) { // do something? } }
OnLeave(forward)
Fired just before a page is changed to another. This is a very useful event because the script can assign the page contents to variables.
Inside this event, the script has the ability to abort the page change. So, for example, the script can check the values the user entered and abort the page from changing if it detects incorrect values.
Return type | Value |
---|---|
bool | If this function returns true, the page is allowed to change. If it returns false, the change is aborted (the wizard stays in the same page). |
Parameter | Type | Description |
---|---|---|
forward | bool | If true, the page entered after the user clicked "Next". If false, the user had clicked "Back". |
Sample:
function OnLeave_MyXRCPanel(forward) { // we only care to check validity if going forward if (forward) { local userName = Wizard.GetTextControlValue("txtUserName"); if (userName.IsEmpty()) { ShowWarning(_T("You must enter a username!")); return false; // abort the page change } } return true; // all is well }