diff --git a/lib/mayaUsd/resources/CMakeLists.txt b/lib/mayaUsd/resources/CMakeLists.txt index 9f7e4e171e..3f4fbec8f5 100644 --- a/lib/mayaUsd/resources/CMakeLists.txt +++ b/lib/mayaUsd/resources/CMakeLists.txt @@ -1,3 +1,4 @@ add_subdirectory(ae) +add_subdirectory(helpTable) add_subdirectory(icons) add_subdirectory(scripts) diff --git a/lib/mayaUsd/resources/helpTable/CMakeLists.txt b/lib/mayaUsd/resources/helpTable/CMakeLists.txt new file mode 100644 index 0000000000..c261ba7e46 --- /dev/null +++ b/lib/mayaUsd/resources/helpTable/CMakeLists.txt @@ -0,0 +1,8 @@ +# --------------------------------------------------------------------------------------------- +# install +# --------------------------------------------------------------------------------------------- + +install(FILES "helpTableMayaUSD" + DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/helpTable" + ) + diff --git a/lib/mayaUsd/resources/helpTable/helpTableMayaUSD b/lib/mayaUsd/resources/helpTable/helpTableMayaUSD new file mode 100644 index 0000000000..88128f41d0 --- /dev/null +++ b/lib/mayaUsd/resources/helpTable/helpTableMayaUSD @@ -0,0 +1,10 @@ +UsdEditDuplicateAsMaya +?contextId=UsdEditDuplicateAsMaya +UsdHierarchyView +?contextId=UsdHierarchyView +UsdImportOptionsConfig +?contextId=UsdImportOptionsConfig +UsdLayerEditor +?contextId=UsdLayerEditor +UsdMergeMayaEditsToUsd +?contextId=UsdMergeMayaEditsToUsd \ No newline at end of file diff --git a/lib/mayaUsd/resources/scripts/mayaUsdDuplicateAsUsdDataOptions.py b/lib/mayaUsd/resources/scripts/mayaUsdDuplicateAsUsdDataOptions.py index 8eb61916eb..4284ec8b78 100644 --- a/lib/mayaUsd/resources/scripts/mayaUsdDuplicateAsUsdDataOptions.py +++ b/lib/mayaUsd/resources/scripts/mayaUsdDuplicateAsUsdDataOptions.py @@ -19,8 +19,8 @@ from mayaUsdLibRegisterStrings import getMayaUsdLibString from mayaUsdMergeToUSDOptions import getDefaultMergeToUSDOptionsDict +from mayaUsdUtils import showHelpMayaUSD import mayaUsdOptions - from functools import partial @@ -72,9 +72,8 @@ def _createDuplicateAsUsdDataOptionsDialog(window): cmds.menuItem(label=getMayaUsdLibString("kResetSettingsMenuItem"), command=partial(_resetDuplicateAsUsdDataOptions, subLayout)) cmds.setParent(menuBarLayout) - if _hasDuplicateAsUsdDataOptionsHelp(): - menu = cmds.menu(label=getMayaUsdLibString("kHelpMenu"), parent=menuBarLayout) - cmds.menuItem(label=getMayaUsdLibString("kHelpDuplicateAsUsdDataOptionsMenuItem"), command=_helpDuplicateAsUsdDataOptions) + menu = cmds.menu(label=getMayaUsdLibString("kHelpMenu"), parent=menuBarLayout) + cmds.menuItem(label=getMayaUsdLibString("kHelpDuplicateAsUsdDataOptionsMenuItem"), command=_helpDuplicateAsUsdDataOptions) buttonsLayout = cmds.formLayout(parent=windowFormLayout) @@ -150,22 +149,11 @@ def _fillDuplicateAsUsdDataOptionsDialog(subLayout, optionsText, action): mayaUsdTranslatorExport("{subLayout}", "{action}=all;!output", "{optionsText}", "") '''.format(optionsText=optionsText, subLayout=subLayout, action=action)) - -def _hasDuplicateAsUsdDataOptionsHelp(): - """ - Returns True if the help topic for the options is available in Maya. - """ - # Note: catchQuiet returns 0 or 1, not the value, so we use a dummy assignment - # to produce the value to be returned by eval(). - url = mel.eval('''catchQuiet($url = `showHelp -q "''' + _kDuplicateAsUsdDataOptionsHelpContentId + '''"`); $a = $url;''') - return bool(url) - def _helpDuplicateAsUsdDataOptions(data=None): """ Shows help on the duplicate-as-Usd-data options dialog. """ - cmds.showHelp(_kDuplicateAsUsdDataOptionsHelpContentId) - + showHelpMayaUSD(_kDuplicateAsUsdDataOptionsHelpContentId); def _getDuplicateAsUsdDataOptionsVarName(): """ diff --git a/lib/mayaUsd/resources/scripts/mayaUsdMergeToUSDOptions.py b/lib/mayaUsd/resources/scripts/mayaUsdMergeToUSDOptions.py index 9175a761ae..079a902d08 100644 --- a/lib/mayaUsd/resources/scripts/mayaUsdMergeToUSDOptions.py +++ b/lib/mayaUsd/resources/scripts/mayaUsdMergeToUSDOptions.py @@ -18,6 +18,7 @@ import maya.mel as mel from mayaUsdLibRegisterStrings import getMayaUsdLibString +from mayaUsdUtils import showHelpMayaUSD import mayaUsdOptions from functools import partial @@ -90,9 +91,8 @@ def _createMergeToUSDOptionsDialog(window, target): cmds.menuItem(label=getMayaUsdLibString("kResetSettingsMenuItem"), command=partial(_resetMergeToUSDOptions, target, subLayout)) cmds.setParent(menuBarLayout) - if _hasMergeToUSDOptionsHelp(): - menu = cmds.menu(label=getMayaUsdLibString("kHelpMenu"), parent=menuBarLayout) - cmds.menuItem(label=getMayaUsdLibString("kHelpMergeToUSDOptionsMenuItem"), command=_helpMergeToUSDOptions) + menu = cmds.menu(label=getMayaUsdLibString("kHelpMenu"), parent=menuBarLayout) + cmds.menuItem(label=getMayaUsdLibString("kHelpMergeToUSDOptionsMenuItem"), command=_helpMergeToUSDOptions) buttonsLayout = cmds.formLayout(parent=windowFormLayout) @@ -218,22 +218,11 @@ def _fillMergeToUSDOptionsDialog(target, subLayout, optionsText, action): mayaUsdTranslatorExport("{subLayout}", "{action}=all;!output", "{optionsText}", "") '''.format(optionsText=optionsText, subLayout=subLayout, action=action)) - -def _hasMergeToUSDOptionsHelp(): - """ - Returns True if the help topic for the options is available in Maya. - """ - # Note: catchQuiet returns 0 or 1, not the value, so we use a dummy assignment - # to produce the value to be returned by eval(). - url = mel.eval('''catchQuiet($url = `showHelp -q "''' + _kMergeToUSDOptionsHelpContentId + '''"`); $a = $url;''') - return bool(url) - def _helpMergeToUSDOptions(data=None): """ Shows help on the merge-to-USD options dialog. """ - # TODO: add help about the options UI instead of the merge command - cmds.showHelp(_kMergeToUSDOptionsHelpContentId) + showHelpMayaUSD(_kMergeToUSDOptionsHelpContentId) def _getMergeToUSDOptionsVarName(): diff --git a/lib/mayaUsd/resources/scripts/mayaUsdUtils.py b/lib/mayaUsd/resources/scripts/mayaUsdUtils.py index 57efddd474..b642ed9cb7 100644 --- a/lib/mayaUsd/resources/scripts/mayaUsdUtils.py +++ b/lib/mayaUsd/resources/scripts/mayaUsdUtils.py @@ -193,4 +193,38 @@ def saveWantPayloadLoaded(want): opVarName = "mayaUsd_WantPayloadLoaded" cmds.optionVar(iv=(opVarName, want)) +def showHelpMayaUSD(contentId): + """ + Helper method to display help content. + + Note that this is a wrapper around Maya's showHelp() method and showHelpMayaUSD() + should be used for all help contents in Maya USD. + + Example usage of this method: + + - In Python scripts: + from mayaUsdUtils import showHelpMayaUSD + showHelpMayaUSD("someContentId"); + + - In MEL scripts: + python(\"from mayaUsdUtils import showHelpMayaUSD; showHelpMayaUSD('someContentId');\") + + - In C++: + MGlobal::executePythonCommand( + "from mayaUsdUtils import showHelpMayaUSD; showHelpMayaUSD(\"someContentId\");"); + + Input contentId refers to the contentId that is registered in helpTableMayaUSD + file which is used to open help pages. + """ + import os + try: + # Finding the path to helpTableMayaUSD file. + helpTablePath = os.path.join(os.environ['MAYAUSD_LIB_LOCATION'], 'helpTable/helpTableMayaUSD'); + # Setting the default helpTable to helpTableMayaUSD + cmds.showHelp(helpTablePath, helpTable=True) + # Showing the help content + cmds.showHelp(contentId) + finally: + # Restoring Maya's default helpTable + cmds.showHelp('helpTable', helpTable=True) diff --git a/lib/usd/ui/importDialog/USDImportDialog.cpp b/lib/usd/ui/importDialog/USDImportDialog.cpp index 17d18d1799..34c77f6d38 100644 --- a/lib/usd/ui/importDialog/USDImportDialog.cpp +++ b/lib/usd/ui/importDialog/USDImportDialog.cpp @@ -218,7 +218,8 @@ void USDImportDialog::onResetFileTriggered() void USDImportDialog::onHierarchyViewHelpTriggered() { - MGlobal::executeCommand("showHelp \"UsdHierarchyView\""); + MGlobal::executePythonCommand( + "from mayaUsdUtils import showHelpMayaUSD; showHelpMayaUSD(\"UsdHierarchyView\");"); } void USDImportDialog::onCheckedStateChanged(int nbChecked) diff --git a/lib/usd/ui/layerEditor/mayaCommandHook.cpp b/lib/usd/ui/layerEditor/mayaCommandHook.cpp index b35357c3e8..b5388acda3 100644 --- a/lib/usd/ui/layerEditor/mayaCommandHook.cpp +++ b/lib/usd/ui/layerEditor/mayaCommandHook.cpp @@ -211,7 +211,11 @@ void MayaCommandHook::muteSubLayer(UsdLayer usdLayer, bool muteIt) } // Help menu callback -void MayaCommandHook::showLayerEditorHelp() { executeMel("showHelp UsdLayerEditor"); } +void MayaCommandHook::showLayerEditorHelp() +{ + MGlobal::executePythonCommand( + "from mayaUsdUtils import showHelpMayaUSD; showHelpMayaUSD(\"UsdLayerEditor\");"); +} // this method is used to select the prims with spec in a layer void MayaCommandHook::selectPrimsWithSpec(UsdLayer usdLayer) diff --git a/modules/mayaUSD.mod.template b/modules/mayaUSD.mod.template index 7ac4a0ad5c..26d06b063d 100644 --- a/modules/mayaUSD.mod.template +++ b/modules/mayaUSD.mod.template @@ -21,6 +21,7 @@ ${PXR_OVERRIDE_PLUGINPATH_NAME}+:=lib/usd MAYAUSD_VERSION=${MAYAUSD_VERSION} PXR_MTLX_STDLIB_SEARCH_PATHS+:=libraries ${MAYAUSD_GTEST_PATH} +MAYAUSD_LIB_LOCATION:=lib + MayaUSD ${MAYAUSD_VERSION} ${CMAKE_INSTALL_PREFIX}/plugin/adsk plug-ins: plugin diff --git a/modules/mayaUSD_Win.mod.template b/modules/mayaUSD_Win.mod.template index 853d086be5..6080893317 100644 --- a/modules/mayaUSD_Win.mod.template +++ b/modules/mayaUSD_Win.mod.template @@ -29,6 +29,7 @@ ${PXR_OVERRIDE_PLUGINPATH_NAME}+:=lib/usd MAYAUSD_VERSION=${MAYAUSD_VERSION} PXR_MTLX_STDLIB_SEARCH_PATHS+:=libraries ${MAYAUSD_GTEST_PATH} +MAYAUSD_LIB_LOCATION:=lib + MayaUSD ${MAYAUSD_VERSION} ${CMAKE_INSTALL_PREFIX}/plugin/adsk plug-ins: plugin diff --git a/plugin/adsk/scripts/USDMenuProc.mel b/plugin/adsk/scripts/USDMenuProc.mel index aeb9314b67..0c259a8e54 100644 --- a/plugin/adsk/scripts/USDMenuProc.mel +++ b/plugin/adsk/scripts/USDMenuProc.mel @@ -249,7 +249,7 @@ global proc mayaUsdMenu_EditAsMayaDataOptions(string $obj) if ($helpItem != "") { menuItem -edit -label `getMayaUsdString("kHelpOnEditAsMayaDataOptions")` - -command ( "showHelp UsdImportOptionsConfig" ) + -command ("python(\"from mayaUsdUtils import showHelpMayaUSD; showHelpMayaUSD('UsdImportOptionsConfig');\")") $helpItem; }