An extension can contain any number of wizards. For each wizard that you want to
create, you add the element <wizard> in the extension's XML
file. For each wizard, you define steps. For each step, you define callbacks and properties.
Tip: To customize the appearance of a Workbench-based wizard, you can add the
optional element <uidefinition>. In this element, you
can define layouts both for the wizard interface as a whole and for individual
wizard components. For more information, see Custom Wizard Interfaces and Custom Wizard Interface Example.
The extension WizardDemos contains a project wizard named
ProjectWizard that is executed from the
Project tab in Workbench. An excerpt from the file
WizardDemos.xml follows. Code is omitted for the element
<uidefinition> and all wizards other than the wizard
ProjectWizard.
<extension version="2" minorversion="1" name="WizardDemos"> <guid shortid="WizardDemos">7fdb141e-3383-433a-a5af-32cb19971771</guid> <author>Ansys, Inc.</author> <description>Simple extension to test wizards in different contexts.</description> <script src="main.py" /> <script src="ds.py" /> <script src="dm.py" /> <script src="sc.py" /> <interface context="Project|Mechanical|SpaceClaim"> <images>images</images> </interface> <interface context="DesignModeler"> <images>images</images> <toolbar name="Deck" caption="Deck"> <entry name="Deck" icon="deck"> <callbacks> <onclick>CreateDeck</onclick> </callbacks> </entry> <entry name="Support" icon="Support"> <callbacks> <onclick>CreateSupport</onclick> </callbacks> </entry> </toolbar> </interface> ... <wizard name="ProjectWizard" version="1" context="Project" icon="wizard_icon"> <description>Simple wizard for demonstration in Project page.</description> <step name="Geometry" caption="Geometry" version="1" HelpFile="help/geometry.html" layout="DefaultTabularDataLayout"> <description>Create a geometry component.</description> <componentStyle component="Submit"> <background-color>#b6d7a8</background-color> </componentStyle> <componentData component="TabularData"> <CanAddDelete>false</CanAddDelete> </componentData> <callbacks> <onupdate>EmptyAction</onupdate> <onreset>DeleteGeometry</onreset> <oninit>InitTabularData</oninit> </callbacks> <propertygroup display="caption" name="definition" caption="Basic properties" > <property name="filename" caption="Geometry file name" control="fileopen" /> <property name="myint" caption="Integer value" control="integer" /> <property name="mytext" caption="Text value" control="text" /> <property name="myquantity" caption="Quantity value" control="float" unit="Pressure" /> <property name="myreadonly" caption="Readonly value" control="text" readonly="true" default="My value" /> <propertygroup display="property" name="myselect" caption="List of choice" control="select" default="Option1"> <attributes options="Option1,Option2" /> <property name="option1" caption="Option1 value" control="text" visibleon="Option1" /> <property name="option2first" caption="Option2 first value" control="float" unit="Pressure" visibleon="Option2" /> <property name="option2seond" caption="Option2 second value" control="float" unit="Length" visibleon="Option2" /> </propertygroup> </propertygroup> <propertytable name="Table" caption="Table" control="custom" display="worksheet" class="Worksheet.TabularDataEditor.TabularDataEditor"> <property name="Frequency" caption="Frequency" unit="Frequency" control="float" isparameter="true"></property> <property name="Damping" caption="Damping" control="float" isparameter="true"></property> <property name="TestFileopen" caption="fileopen" control="fileopen"></property> </propertytable> <propertytable name="TableB" caption="Table B" control="tabulardata" display="worksheet"> <property name="Integer" caption="Integer" control="integer"></property> <property name="FileOpen" caption="Fileopen" control="fileopen"></property> <property name="Number" caption="Number A" unit="Pressure" control="float"></property> <property name="ReadOnly" caption="ReadOnly" unit="Pressure" control="float" readonly="true" default="4 [Pa]"/> <propertygroup display="property" name="myselect" caption="List of choice" control="select" default="Option1"> <attributes options="Option1,Option2" /> <property name="TestStr" caption="Text" control="text" visibleon="Option1"></property> <property name="Number B" caption="Number B" unit="Temperature" control="float"></property> </propertygroup> </propertytable> </step> <step name="Mechanical" caption="Mechanical" enabled="true" version="1" HelpFile="help/mechanical.html"> <description>Create a mechanical component.</description> <callbacks> <onupdate>EmptyAction</onupdate> <onreset>DeleteMechanical</onreset> </callbacks> <property name="name" caption="System name" control="text" /> </step> <step name="Fluent" caption="Fluent" version="1" HelpFile="help/fluent.html"> <description>Create a fluent component.</description> <callbacks> <onrefresh>CreateDialog</onrefresh> <onupdate>EmptyAction</onupdate> <onreset>EmptyReset</onreset> </callbacks> <property name="name" caption="System name" control="text" /> <property name="dialog" caption="Dialog" control="text"> <callbacks> <onvalidate>ValidateDialog</onvalidate> </callbacks> </property> <property name="dialog2" caption="DialogProgress" control="text"> <callbacks> <onvalidate>ValidateDialogProgress</onvalidate> </callbacks> </property> <property name="nextstep" caption="Next Step" control="select" > <callbacks> <onvalidate>ValidateNextStep</onvalidate> </callbacks> </property> </step> <step name="ReportView" caption="ReportView" version="1" layout="ReportView@WizardDemos"> <description>Simple example to demonstrate how report can be displayed.</description> <callbacks> <onrefresh>RefreshReport</onrefresh> <onreset>EmptyReset</onreset> </callbacks> </step> <step name="CustomStep" caption="CustomStep" enabled="true" version="1" layout="MyLayout@WizardDemos"> <description>Create a mechanical component.</description> <callbacks> <onrefresh>RefreshMechanical</onrefresh> <onupdate>LogReport</onupdate> <onreset>EmptyReset</onreset> </callbacks> <property name="name" caption="System name" control="text" /> </step> <step name="Charts" caption="Charts" enabled="true" version="1" layout="GraphLayout@WizardDemos"> <description>Demonstrate all chart capabilities.</description> <callbacks> <onrefresh>RefreshCharts</onrefresh> </callbacks> </step> </wizard> ... </extension>
As indicated in the element <description>, this extension
is for testing wizards in different contexts. It has two elements
<interface>. In the first element
<interface>, the attribute context
is set to Project|Mechanical|SpaceClaim, which indicates that
wizards with their context set to these products use this interface. In the second
element <interface>, the attribute
context is set to DesignModeler, which
indicates that wizards with their context set to this product use this interface.
In addition to the project wizard named ProjectWizard, the
extension WizardDemos includes target product wizards for
DesignModeler, SpaceClaim, and Mechanical. Additionally, it includes a mixed wizard. For information on the
product-specific wizards in this extension, see the ACT customization guides for these
products. The concluding
section provides links to these guides.