Go to: Synopsis. Return value. Flags. MEL examples.

Synopsis

scriptedPanelType [-addCallback string] [-copyStateCallback string] [-createCallback string] [-customView boolean] [-defineTemplate string] [-deleteCallback string] [-exists] [-hotkeyCtxClient string] [-initCallback string] [-label string] [-obsolete boolean] [-removeCallback string] [-retainOnFileOpen boolean] [-saveStateCallback string] [-unique boolean] [-useTemplate string] [string]

scriptedPanelType is undoable, queryable, and editable.

This command defines the callbacks for a type of scripted panel. The panel type created by this command is then used when creating a scripted panel. See also the 'scriptedPanel' command.

Return value

stringThe name of the scripted panel type.

In query mode, return type is based on queried flag.

Flags

addCallback, copyStateCallback, createCallback, customView, defineTemplate, deleteCallback, exists, hotkeyCtxClient, initCallback, label, obsolete, removeCallback, retainOnFileOpen, saveStateCallback, unique, useTemplate
Long name (short name) Argument types Properties
-addCallback(-acb) string createqueryedit
This flag specifies the callback procedure for adding the panel to a particular control layout. The parent layout is guaranteed to be the current default layout when the proc is called. If its name is required then it can be queried with 'setParent -q'. Any editors should be parented here. global proc procName (string $panelName) { .... }
-copyStateCallback(-ocb) string createqueryedit
This flag specifies the callback procedure for copying the state of the panel when a tear-off copy of the panel is made. The callback proc has the form: global proc procName (string $panelName, string $newPanelName) { .... } This procedure will be executed immediately after the addCallback procedure has finished executing. At that point, the copied panel will be fully created and accessible to facilitate copying of panel settings. Note: the addCallback procedure is called after the createCallback procedure has been called.
-createCallback(-ccb) string createqueryedit
This flag specifies the callback procedure for initially creating the panel object. No UI should be created here. Any editors owned by the panel should be created here unparented. The callback proc has the form: global proc procName (string $panelName) { .... }
-customView(-cv) boolean createqueryedit
This flag specifies if this view is a custom 3d view for MPx3dModelView types. This flag should only be used for MPx3dModelView types.
-defineTemplate(-dt) string create
Puts the command in a mode where any other flags and arguments are parsed and added to the command template specified in the argument. They will be used as default arguments in any subsequent invocations of the command when templateName is set as the current template.
-deleteCallback(-dcb) string createqueryedit
This flag specifies the callback procedure for final deletion of the panel. The callback proc has the form: global proc procName (string $panelName) { .... }
-exists(-ex) create
Returns whether the specified object exists or not. Other flags are ignored.
-hotkeyCtxClient(-hkc) string createqueryedit
This flag is used to specify the name of the hotkey context client for this panel type. By default, it is the same as the panel type.
-initCallback(-icb) string createqueryedit
This flag specifies the callback procedure for the initialize callback. This will be called on file -new and file -open to give the panel an opportunity to re-initialize to a starting state, if required. The panel may be parented or unparented at this time. The callback proc has the form: global proc procName (string $panelName) { .... }
-label(-l) string createqueryedit
Label for the panel
-obsolete(-o) boolean createqueryedit
This flag specifies that this type is no longer used in Maya.
-removeCallback(-rcb) string createqueryedit
This flag specifies the callback procedure for removing the panel from its current control layout. Any editors should be unparented here. The callback proc has the form: global proc procName (string $panelName) { .... }
-retainOnFileOpen(-rfo) boolean createqueryedit
This flag specifies if panels of this type should be retained after restoring panel cofiguration during file open. Default value is false.
-saveStateCallback(-scb) string createqueryedit
This flag specifies the callback procedure for saving the state of the panel. The callback proc has the form: global proc string procName (string $panelName) { .... } Note that the proc returns a string. This string will be executed after the createCallback has been called to facilitate restoring the panel state.
-unique(-u) boolean createqueryedit
This flag specifies if only one instance of this type of panel can exist at a given time.
-useTemplate(-ut) string create
Forces the command to use a command template other than the current one.

Flag can appear in Create mode of command Flag can appear in Edit mode of command
Flag can appear in Query mode of command Flag can be used more than once in a command.

MEL examples

 // define callbacks for this type and make it a unique type
 // as we don't want two panels sharing the same global data.

scriptedPanelType
    -ccb sampleCreateCallback
      -icb sampleInitCallback
    -acb sampleAddCallback
    -rcb sampleRemoveCallback
    -dcb sampleDeleteCallback
    -scb sampleSaveStateCallback
    -unique true
    sampleScriptedPanelType;


global proc sampleCreateCallback(string $panelName) {
//
//  Description:
//      Create any editors unparented here and do
//      any other initialization required.
//
//      In this example we will only declare a global array to
//        maintain some state information.
//
    global float $gSampleState[5];

}


global proc sampleInitCallback(string $panelName) {
//
//  Description:
//      Re-initialize the panel on file -new or file -open.
//
//      In this example we will only re-init the global array.
//
    global float $gSampleState[];

       $gSampleState[0] = 20.2;
       $gSampleState[1] = 50.5;
       $gSampleState[2] = 34.7;
       $gSampleState[3] = 2.0;
       $gSampleState[4] = 1.0;

}

global proc sampleAddCallback(string $panelName) {
//
//  Description:  Create UI and parent any editors.
//
    global float $gSampleState[];

    columnLayout -adj true topCol;
    separator -style "none" -h 10;
        frameLayout -l "Sliders" -mw 10;
            columnLayout -adj true sampleCol;
                separator -style "none" -h 10;

                floatSliderGrp -l "Property A" -f true
                    -v $gSampleState[0]
                    fsg1;
                floatSliderGrp -l "Property B" -f true
                    -v $gSampleState[1]
                    fsg2;
                floatSliderGrp -l "Property C" -f true
                    -v $gSampleState[2]
                    fsg3;
                separator -style "none" -h 10;
            setParent ..;
        setParent ..;

        separator -style "none" -h 10;
        frameLayout -l "Radio Buttons" -mw 10;
            columnLayout sampleCol2;
                separator -style "none" -h 10;
                radioButtonGrp -nrb 3
                    -l "Big Options"
                    -la3 "Option 1" "Option 2" "Option 3"
                    -select $gSampleState[3]
                    rbg;
                radioButtonGrp -nrb 3
                    -l "Little Options"
                    -la3 "Option 4" "Option 5" "Option 6"
                    -select $gSampleState[4]
                    rbg2;
                separator -style "none" -h 10;

}

global proc sampleRemoveCallback(string $panelName) {
//
//  Description:
//        Unparent any editors and save state if required.
//
        global float $gSampleState[];
       //  Scope the control names to this panel.
       //
       string $control = `scriptedPanel -q -control $panelName`;
       setParent $control;

       $gSampleState[0] = `floatSliderGrp -q -v fsg1`;
       $gSampleState[1] = `floatSliderGrp -q -v fsg2`;
       $gSampleState[2] = `floatSliderGrp -q -v fsg3`;
       $gSampleState[3] = `radioButtonGrp -q -sl rbg`;
       $gSampleState[4] = `radioButtonGrp -q -sl rbg2`;
}

global proc sampleDeleteCallback(string $panelName) {
//
//  Description:
//        Delete any editors and do any other cleanup required.

}

global proc string sampleSaveStateCallback(string $panelName) {
//
//  Description:
//        Return a string that will restore the current state
//        when it is executed.

        global float $gSampleState[];
       $indent = "\n\t\t\t";

       return ($indent+"$gSampleState[0]="+$gSampleState[0]+";" +
               $indent+"$gSampleState[1]="+$gSampleState[1]+";" +
               $indent+"$gSampleState[2]="+$gSampleState[2]+";" +
               $indent+"$gSampleState[3]="+$gSampleState[3]+";" +
               $indent+"$gSampleState[4]="+$gSampleState[4]+";" +
               $indent+"setSamplePanelState $panelName;\n" );
}

global proc setSamplePanelState( string $whichPanel ) {
//
//  Description:
//        This is a convenience proc to set the panel state from the
//        global array

        global float $gSampleState[];

       //  Scope the control names to this panel.
       //
       string $control = `scriptedPanel -q -control $whichPanel`;
       if ("" != $control) {
              setParent $control;

              floatSliderGrp -e -v $gSampleState[0] fsg1;
              floatSliderGrp -e -v $gSampleState[1] fsg2;
              floatSliderGrp -e -v $gSampleState[2] fsg3;
              if (0 != $gSampleState[3]) {
               radioButtonGrp -e -sl $gSampleState[3] rbg;
              };
           if (0 != $gSampleState[4]) {
               radioButtonGrp -e -sl $gSampleState[4] rbg2;
           }
       }
}


//  This script will create an unparented scripted panel, place it
//  in one window, remove it, and place it in another window then
//  return it to the first window.
//

//    Create unparented scripted panel
//
scriptedPanel -unParent -type sampleScriptedPanelType -label "Sample" sampleScriptedPanel;

//    Create a couple of windows and parent the scripted panel to the first.
//
window sampleWin;
frameLayout -lv false -bv false frm;
scriptedPanel -e -parent "sampleWin|frm" sampleScriptedPanel;
showWindow;

window -w `window -q -w sampleWin` -h `window -q -h sampleWin` sampleWin2;
frameLayout -lv false -bv false frm;
showWindow;


//    Reparent the scripted panel to the second window.
//
scriptedPanel -e -unParent sampleScriptedPanel;
scriptedPanel -e -parent "sampleWin2|frm" sampleScriptedPanel;

//    Reparent the scripted panel back to the first window.
//
scriptedPanel -e -unParent sampleScriptedPanel;
scriptedPanel -e -parent "sampleWin|frm" sampleScriptedPanel;


//    Close both windows
//
catch (`window -e -visible false sampleWin`);
catch (`window -e -visible false sampleWin2`);

//    The scripted panel should appear in the Panel menu.  Select
//    Panels->Panel->Sample and the panel should appear in the main window.
//