forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | """
 | ||
|  | Blender user interface icon handling. | ||
|  | """
 | ||
|  | import os.path | ||
|  | from typing import Optional | ||
|  | 
 | ||
|  | import bpy.utils.previews | ||
|  | 
 | ||
|  | import lnx | ||
|  | 
 | ||
|  | if lnx.is_reload(__name__): | ||
|  |     # _unload_icons is not available in the module scope yet | ||
|  |     def __unload(): | ||
|  |         _unload_icons() | ||
|  | 
 | ||
|  |     # Refresh icons after reload | ||
|  |     __unload() | ||
|  | else: | ||
|  |     lnx.enable_reload(__name__) | ||
|  | 
 | ||
|  | 
 | ||
|  | __all__ = ["get_id"] | ||
|  | 
 | ||
|  | _ICONS_DICT: Optional[bpy.utils.previews.ImagePreviewCollection] = None | ||
|  | """Dictionary of all loaded icons, or `None` if not loaded""" | ||
|  | 
 | ||
|  | _ICONS_DIR = os.path.join(os.path.dirname(__file__), "custom_icons") | ||
|  | """Directory of the icon files""" | ||
|  | 
 | ||
|  | 
 | ||
|  | def _load_icons(): | ||
|  |     """(Re)loads all icons.""" | ||
|  |     global _ICONS_DICT | ||
|  | 
 | ||
|  |     _unload_icons() | ||
|  | 
 | ||
|  |     _ICONS_DICT = bpy.utils.previews.new() | ||
|  |     _ICONS_DICT.load("bundle", os.path.join(_ICONS_DIR, "bundle.png"), 'IMAGE', force_reload=True) | ||
|  |     _ICONS_DICT.load("haxe", os.path.join(_ICONS_DIR, "haxe.png"), 'IMAGE', force_reload=True) | ||
|  |     _ICONS_DICT.load("wasm", os.path.join(_ICONS_DIR, "wasm.png"), 'IMAGE', force_reload=True) | ||
|  | 
 | ||
|  | 
 | ||
|  | def _unload_icons(): | ||
|  |     """Unloads all icons.""" | ||
|  |     global _ICONS_DICT | ||
|  |     if _ICONS_DICT is not None: | ||
|  |         bpy.utils.previews.remove(_ICONS_DICT) | ||
|  |     _ICONS_DICT = None | ||
|  | 
 | ||
|  | 
 | ||
|  | def get_id(identifier: str) -> int: | ||
|  |     """Returns the icon ID from the given identifier.""" | ||
|  |     if _ICONS_DICT is None: | ||
|  |         _load_icons() | ||
|  |     return _ICONS_DICT[identifier].icon_id |