easy menus from a single config across apps
Project description
UniMenu (Universal Menu)
A pure python module to add python commands to the menu.
Supports Unreal Engine, Blender, Marmoset
and any app that uses QT: Maya, Krita, Substance Painter, 3ds Max, FreeCAD, CryEngine ...
For more info read the wiki
If you use Blender, you can try the unimenu_addon
how to use
load from config (YAML & JSON)
items:
- label: my menu
items:
- label: my item
command: print("Hello World")
import unimenu
config_path = "path/to/config.yaml"
unimenu.setup(config_path)
load from a dict
import unimenu
data = {"items": [{"label": "test","command": 'print("hello world")'}]}
unimenu.setup(data)
with code
import unimenu
menu = unimenu.Node(label="my menu") # create a menu
item = unimenu.Node(label="hi", command='print("hi")') # create a menu item
menu.items.append(item) # add the item to the menu
menu.setup() # setup the menu in the app, parented by default to the main menu bar
from a folder of scripts (or a Python module)
To auto construct a menu from a folder, with a menu entry for every tool in a folder:
- ensure the folder is importable (in the sys.path)
- create a menthod in all submodules with the same name, e.g. def show()
import unimenu
unimenu.module_setup('name_of_folder', function_name='show', menu_name="My tools")
When to use
some software e.g. Unity & Maya already have good ways to make custom menus. If you only use 1 software and find it easy to make a menu, you don't need unimenu.
The power of this module comes from standardising menu creation across multiple software. Great for studio-pipelines with several programs. Unimenu makes menu creation less complex, e.g. in Blender.
Notes
- support loading multiple configs. Great for a single studio config and several project configs. Or a team config.
- support creating another config to a previously created menu, or submenu!
Supports
unimenu was tested in the following versions, and might work in other versions.
- Unreal 5.0.2
- Blender 3.2, 2.93, 2.8 (minimum)
- Maya 2023, 2022 (minimum)
- Substance Painter 8.2.0
- Max 2024
- Marmoset 3.08
- Nuke 13 (minimum)
- Hiero 13 (minimum)
- Katana 5 (minimum)
- Mari 6.0 (minimum)
python 3.7+ due to f-strings and pathlib
Development
main platform is windows, would be interested to hear from mac & linux users.
feel free to create a PR to help out.
to add support for your favorite software, add a python module named after the software with a setup_menu function where possible stick to the windows menu design guidelines
- add editable install instructions
samples
You can install the unimenu samples with
pip install git+https://github.com/hannesdelbeke/unimenu@main#subdirectory=dev
then you can run them with e.g.
import unimenu_samples.any_dcc_test
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters