Your Ad Here

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

Synopsis

scriptedPanel [-control] [-copy string] [-defineTemplate string] [-docTag string] [-edit] [-exists] [-init] [-isUnique] [-label string] [-menuBarVisible boolean] [-needsInit] [-parent string] [-popupMenuProcedure string] [-query] [-replacePanel string] [-tearOff] [-tearOffCopy string] [-type string] [-unParent] [-useTemplate string] [panelName]

scriptedPanel is undoable, queryable, and editable.

This command will create an instance of the specified scriptedPanelType. A panel is a collection of UI objects (buttons, fields, graphical views) that are grouped together. A panel can be moved around as a group within the application interface, and torn off to exist in its own window. The panel takes care of maintaining the state of its UI when it is relocated, or recreated. A scripted panel is a panel that is defined in MEL, with all of the required callbacks available as MEL proc's.

Flags

control, copy, defineTemplate, docTag, edit, exists, init, isUnique, label, menuBarVisible, needsInit, parent, popupMenuProcedure, query, replacePanel, tearOff, tearOffCopy, type, unParent, useTemplate
Long name (short name) [argument types] Properties
-query(-q) query
Puts the command in query mode so that it will return the value of the specified flag.

In query mode, this flag needs a value.

-edit(-e) edit
Puts the command in edit mode so that it will change the values of the specified flags
-exists(-ex) create
Returns true|false depending upon whether the specified object exists. Other flags are ignored.
-defineTemplate(-dt) string create
Puts a command in a mode where any other flags and args 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.
-useTemplate(-ut) string create
Will force the command to use a command template other than the current one.
-init(-in) createedit
Initializes the panel's default state. This is usually done automatically on file -new and file -open.
-label(-l) string queryedit
Specifies the user readable label for the panel.

In query mode, this flag needs a value.

-copy(-cp) string edit
Makes this panel a copy of the specified panel. Both panels must be of the same type.
-control(-ctl) query
Returns the top level control for this panel. Usually used for getting a parent to attach popup menus. CAUTION: panels may not have controls at times. This flag can return "" if no control is present.

In query mode, this flag needs a value.

-isUnique(-iu) query
Returns true if only one instance of this panel type is allowed.

In query mode, this flag needs a value.

-parent(-p) string create
Specifies the parent layout for this panel.
-popupMenuProcedure(-pmp) string queryedit
Specifies the procedure called for building the panel's popup menu(s). The default value is "buildPanelPopupMenu".

In query mode, this flag needs a value.

-unParent(-up) edit
Specifies that the panel should be removed from its layout. This (obviously) cannot be used with query.
-replacePanel(-rp) string edit
Will replace the specifed panel with this panel. If the target panel is within the same layout it will perform a swap.
-tearOff(-to) queryedit
Will tear off this panel into a separate window with a paneLayout as the parent of the panel. When queried this flag will return if the panel has been torn off into its own window.

In query mode, this flag needs a value.

-tearOffCopy(-toc) string create
Will create this panel as a torn of copy of the specified source panel.
-menuBarVisible(-mbv) boolean createqueryedit
Controls whether the menu bar for the panel is displayed.

In query mode, this flag needs a value.

-needsInit(-ni) queryedit
(Internal) On Edit will mark the panel as requiring initialization. Query will return whether the panel is marked for initialization. Used during file -new and file -open.

In query mode, this flag needs a value.

-docTag(-dt) string createqueryedit
Attaches a tag to the maya panel.

In query mode, this flag needs a value.

-type(-typ) string createquery
This flag specifies the type of scripted panel to create.

In query mode, this flag needs a value.


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

Return value


The name of the scripted panel on creation, or the queried result.

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.
//

  

Return to Autodesk Index


Your Ad Here