MGPickerMenuItem命令

MGPickerMenuItem 不可撤消, 可以查询且可以编辑。

该命令可以创建,查询,编辑子菜单项。在查询和编辑模式下,你需要指定一个合法的菜单项id。在创建模式下,不需要指定,但需要-parent标签指定该菜单项属于哪个菜单。

菜单项的id格式是:

# The 1st menu item in right click menu for "commandButton1"
"commandButton1.rightmenu[0] "
# The 4th subMenu item in 2nd menuitem in left click menu for "selectButton1"
"selectButton1.leftmenu[1][3]"

目前Picker只支持最多一层的子菜单,为避免菜单被设计地太复杂。

跳转到: [MEL例子] [Python例子]

MGPickerMenuItem命令

-addSubMenuItem(-asi)string string string string stringC E

只能用于编辑模式或创建模式,添加一个子菜单项。

需要指定标签,图标路径,命令语言(melpython), 命令 及 marking菜单的方向 (N, NW, W, SW, S, SE, E or NE).

  • 要注意的是,即使该标签被用在创建模式,它返回的也是新加入的子菜单的id,而不是该菜单项本身的id。

  • 另外,如果目前菜单项已经是二级子菜单,则该标签只会返回空id,因为不能再创建三级子菜单。

-command(-c)stringC Q E

菜单项的命令。

-commandType(-ct)stringC Q E

菜单项的命令语言类型:melpython.

-divider(-d)booleanC Q E

菜单项是否是一个分隔线。

-deleteAllSubItems(-dai)C Q E

删除所有子菜单项。

-dividerLabel(-dl)stringC Q E

分隔线标签,只有当菜单项是一个分隔线时才有效 (dividier=True).

-exist(-ex)Q

查询菜单项是否存在。

-image(-i)stringC Q E

菜单项的图标路径。

-queryFullImagePath(-ifp)Q

查询图片路径时是否返回完整的绝对路径。

-insertSubMenuItem(-isi)int string string string string stringC Q E

只能用于编辑模式或创建模式,在特定索引处插入一个子菜单项。

需要指定索引值,标签,图标路径,命令语言(melpython), 命令 及 marking菜单的方向 (N, NW, W, SW, S, SE, E or NE).

  • 要注意的是,即使该标签被用在创建模式,它返回的也是新插入的子菜单的id,而不是该菜单项本身的id。另外,如果目前菜单项已经是二级子菜单,则该标签只会返回空id,因为不能再创建三级子菜单。

-label(-l)stringC Q E

菜单项的标签。

-longDivider(-ld)booleanC Q E

是否是长分隔线,只有当菜单项是一个分隔线时才有效 (dividier=True).

-numberOfSubItems(-nsi)Q

子菜单项的数目。

-parent(-p)stringC Q

在查询模式下返回该菜单所属的picker菜单id或父菜单项的id。在创建模式下,这个标签是必须的,用来指定你要添加到的是哪个picker菜单或父菜单项。

-radialPosition(-rp)stringC Q E

菜单项的marking menu方向: N, NW, W, SW, S, SE, E or NE。注意您需要指定父菜单的markingMenu标签为true才能起效。

-subItemArray(-sia)Q

只能用于查询模式, 返回所有子菜单项的id字符窜数组。

-subMenu(-sm)booleanC Q E

该菜单项是否可以成为子菜单项的父菜单。

-subMenuItem(-smi)intQ

This is a query only flag, for retrieving the sub menu item id string at specific index.

-view(-v)stringC Q E

决定你要查询哪个picker视图的菜单。要指定一个合法的视图id。

C 标签可以在创建模式中使用; E 标签可以在编辑模式中使用
Q 标签可以在查询模式中使用   M 标签可以在一条命令中多次使用.

MEL例子

// You must make sure the picker item: commandButton1 is already in scene.
// To form a picker menu id, use pickerItemId.leftmenu / pickerItemId.rightmenu
string $cmdButton = "commandButton1";
//This just retrieves the id "commandButton1.rightmenu" instead of creating it.
string $rightMenu = `MGPickerMenu -p $cmdButton -m "rightmenu"`;
 
// We get a menu item id via -addMenuItem or -insertMenuItem flag of MGPickerMenu command:
string $menuItem0 = `MGPickerMenu -e 
      -addMenuItem "First Menu Item" "/path/to/icon0.png" "mel" "print \"It works!\"" "N" 
      $rightMenu`;
 
// We can add a menu item using MGPickerMenuItem command:
string $menuItem1 = `MGPickerMenuItem -parent $rightMenu 
      -label "Second Menu Item" 
      -image "/path/to/icon1.png" 
      -commandType "mel" 
      -command "print \"The MGPickerMenuItem in create mode works !\"" 
      -radialPosition "N"`;

// We can also make a menu item a sub menu:
MGPickerMenuItem -e -subMenu 1 $menuItem0;
 
// Like we did above, add submenu items:
string $subMenuItem1 = `MGPickerMenuItem -e 
      -addSubMenuItem "First SubMenu Item" "/path/to/icon.png" 
            "python" "print 'Sub menu item works!'" "" 
      $menuItem0`;
 
// We can also add a sub-menu item using MGPickerMenuItem command:
string $subMenuItem2 = `MGPickerMenuItem -parent $menuItem0 
      -label "Second SubMenu Item" 
      -image "/path/to/icon.png" 
      -commandType "python" 
      -command "print 'The MGPickerMenuItem in create mode also works for submenu item!'"`;

Python例子

from mgpicker import mgp

# You must make sure the picker item: commandButton1 is already in scene.
# To form a picker menu id, use pickerItemId.leftmenu / pickerItemId.rightmenu
cmdButton = "commandButton1"
# This just retrieves the id "commandButton1.rightmenu" instead of creating it.
rightMenu = mgp.MGPickerMenu(p=cmdButton, mode="rightmenu")

#  We get a menu item id via -addMenuItem or -insertMenuItem flag of MGPickerMenu command:
menuItem0 = mgp.MGPickerMenu(
    rightMenu,
    e=True,
    addMenuItem=(
        "First Menu Item",
        "/path/to/icon0.png",
        "mel",
        'print "It works!"',
        "N",
    ),
)
# We can add a menu item using MGPickerMenuItem command:
menuItem1 = mgp.MGPickerMenuItem(
    parent=rightMenu,
    label="Second Menu Item",
    image="/path/to/icon1.png",
    commandType="mel",
    command='print "The MGPickerMenuItem in create mode works !"',
)

# We can also make a menu item a sub menu:
mgp.MGPickerMenuItem(menuItem0, e=True, subMenu=True)

# Like we did above, add submenu items:
subMenuItem1 = mgp.MGPickerMenuItem(
    menuItem0,
    e=True,
    addSubMenuItem=(
        "First SubMenu Item",
        "/path/to/icon0.png",
        "mel",
        'print "Sub menu works!"',
        "",
    ),
)

# We can also add a sub-menu item using MGPickerMenuItem command:
subMenuItem2 = mgp.MGPickerMenuItem(
    parent=menuItem0,
    label="Second SubMenu Item",
    image="/path/to/icon.png",
    commandType="python",
    command="print 'The MGPickerMenuItem in create mode also works for submenu item!'",
)