Skip to main content

easy menus from a single config across apps

Reason this release was yanked:

wrong version due to typo

Project description

UniMenu (Universal Menu)

PyPI Downloads Wiki

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

how to use

you can make your menu(s):

  • from a config
  • from a dict
  • with explicit code
  • from a folder of scripts

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 dynamic dict

import unimenu
data = {"items": [{"label": test,"command": 'print("hello world")'}]}
unimenu.setup(data)

with code

import unimenu.apps.blender

menu = unimenu.dccs.blender.MenuNodeBlender(label="my submenu")  # create a submenu, parent defaults to the menu bar
item = unimenu.dccs.blender.MenuNodeBlender(label="hello", command='print("hello world")',
                                            parent="UNIMENU_MT_my_submenu")  # add menu item to our submenu
menu.items.append(item)  # add the item to the submenu
menu.setup()  # setup the menu

from a folder of scripts (module) (experimental, needs updating)

great for a folder full of tools that need launching when clicking a button.

  1. ensure the folder is importable (in the sys.path)
  2. 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

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

unimenu-3.0.0.tar.gz (142.8 kB view details)

Uploaded Source

Built Distribution

unimenu-3.0.0-py3-none-any.whl (18.0 kB view details)

Uploaded Python 3

File details

Details for the file unimenu-3.0.0.tar.gz.

File metadata

  • Download URL: unimenu-3.0.0.tar.gz
  • Upload date:
  • Size: 142.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for unimenu-3.0.0.tar.gz
Algorithm Hash digest
SHA256 be610e91025e1ce553263ba1519f1e7c1e34b4ea91e1520a380f7ea1d41239da
MD5 4ef3d159515ee2eed1ac20201a5abe8c
BLAKE2b-256 10199a813d16d9498ea9a988c5cc8a5d960554fb134eda1d6aacca4b49e76865

See more details on using hashes here.

File details

Details for the file unimenu-3.0.0-py3-none-any.whl.

File metadata

  • Download URL: unimenu-3.0.0-py3-none-any.whl
  • Upload date:
  • Size: 18.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for unimenu-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 65d37bdca9c3b01420d54beb8b93b69befcb7b3d72a560a9846816b77331fb45
MD5 3cfa0be5b832685ec9cf6471b9381b76
BLAKE2b-256 a8ddace8ef311e83242664ed10ea67d928521a9474b5bbaa9832229fbf9d777c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page