Context Menu Extensions
Context menu extensions add right-click actions to the Data Explorer. They inherit fromDataExplorerContextMenuExtension.
Creating a Context Menu Item
Here’s a real example from~/workspace/source/Plugins/DuplicationPlugin/DuplicateContextMenuItem.cs:613:
Registering Context Menu Items
Register inAssemblyInfo.cs:
~/workspace/source/FrostyPlugin/Attributes/RegisterDataExplorerContextMenuAttribute.cs:11:
Context Menu Properties
string
required
The display text for the menu item
ImageSource
Optional icon displayed next to the menu item
RelayCommand
required
The command executed when the menu item is clicked
Accessing Selected Assets
UseApp.SelectedAsset to get the currently selected asset:
Menu Extensions
Menu extensions add items to the top menu bar. They inherit fromMenuExtension.
Creating a Menu Extension
From~/workspace/source/Plugins/BiowareLocalizationPlugin/BioWareLocalizedStringEditorMenuExtension.cs:
MenuExtension Base Class
From~/workspace/source/FrostyPlugin/Extensions/MenuExtension.cs:10:
Registering Menu Extensions
~/workspace/source/FrostyPlugin/Attributes/RegisterMenuExtensionAttribute.cs:25:
Menu Locations
Common top-level menus:File- File operationsEdit- Editing commandsView- UI toggles and windowsTools- Utility functionsHelp- Documentation and about
Execution Actions
Execution actions run code before or after mod execution in the Mod Manager. They inherit fromExecutionAction.
Creating an Execution Action
From~/workspace/source/FrostyPlugin/Extensions/ExecutionAction.cs:11:
Registering Execution Actions
Use Cases
Execution actions are useful for:- Generating runtime files before game launch
- Cleaning up temporary files after game exit
- Validating mod configurations
- Injecting DLLs or patches
- Logging game session data
Tab Extensions
Tab extensions add custom tabs to the editor. They inherit fromTabExtension.
Creating a Tab Extension
Registering Tab Extensions
Custom Handlers
Custom handlers intercept asset operations for special processing.EBX Handlers
Handle specific EBX asset types:Resource Handlers
Handle specific resource types:~/workspace/source/Plugins/MeshSetPlugin/Properties/AssemblyInfo.cs:40).
Startup Actions
Startup actions run when Frosty first launches, before any profile is loaded:Best Practices
User Feedback
User Feedback
Always provide feedback for long-running operations:
Error Handling
Error Handling
Catch and log errors appropriately:
Asset Validation
Asset Validation
Validate assets before operations:
Complete Example: Export Context Menu
Next Steps
Plugin Attributes Reference
Complete reference for all plugin attributes and their parameters