Overview
Every OpenTrack plugin must provide metadata through theMetadata class. This includes the plugin’s display name and icon that appear in the user interface.
Interface Definition
Base Classes
Metadata_
TR
Provides translation support through Qt’s internationalization system. Inherit from this to enabletr() function for translatable strings.
Methods
name()
QString
The plugin name displayed in the UI dropdown menus
- Use descriptive, user-friendly names
- Keep names concise (prefer “Easy Tracker” over “Easy Tracker Version 1.1”)
- Use
tr()for internationalization support - Include version numbers only if multiple versions exist
icon()
QIcon
A QIcon object, or empty icon if none available
- Use 16x16 or 32x32 PNG images for best results
- Store icons in Qt resource files (
.qrc) - Return
QIcon()(empty) if no icon available - Use consistent icon style within plugin family
- Create resource file (
plugin.qrc):
- Add to CMakeLists.txt:
- Reference in code:
Complete Implementation
Plugin Registration
The metadata class is used in plugin registration macros:Tracker Registration
Protocol Registration
Filter Registration
Registration Macro Details
What the Macros Do
The registration macros expand to export three C functions:- GetMetadata(): Query plugin name/icon for UI display
- GetConstructor(): Create plugin instance when selected
- GetDialog(): Create settings dialog when configured
Macro Definition
Example Metadata Classes
- Tracker
- Protocol
- Filter
Translation Support
To support multiple languages, use Qt’s translation system:1. Mark Strings for Translation
2. Create Translation Files
Create.ts files for each language:
3. Add to Build System
Best Practices
Naming Conventions
Naming Conventions
- Be descriptive: “Point Tracker” not “PT”
- User-friendly: “Easy Tracker” not “tracker-easy”
- Consistent: Match naming style of existing plugins
- Versioned: Include version if multiple versions exist
Icon Guidelines
Icon Guidelines
- Size: 16x16 or 32x32 pixels
- Format: PNG with transparency
- Style: Simple, recognizable shapes
- Color: Match OpenTrack’s color scheme
- Fallback: Return empty QIcon() if none available
Class Naming
Class Naming
- Metadata class can have any name
- Common patterns:
<PluginName>Metadata<PluginName>Dll(legacy)Metadatain plugin namespace
Common Issues
Missing Q_OBJECT Macro
Not Using tr() for Translation
Invalid Icon Path
See Also
- Plugin API Overview - Plugin system architecture
- Tracker Interface - Tracker plugin interface
- Protocol Interface - Protocol plugin interface
- Filter Interface - Filter plugin interface