From f5a7f3172c8cf337116aaf92e6292bd6a2fbdf2b Mon Sep 17 00:00:00 2001 From: henrique Date: Mon, 23 Feb 2026 16:42:24 -0300 Subject: [PATCH] a --- install_vr4life.py | 83 ++++++++++++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 36 deletions(-) diff --git a/install_vr4life.py b/install_vr4life.py index b9090cf..0ef7c1d 100644 --- a/install_vr4life.py +++ b/install_vr4life.py @@ -2,15 +2,16 @@ import os import sys from pymxs import runtime as rt -# Versão de Teste Direto -VERSION = "1.0.8-DEBUG" +# Versão v1.0.9 - Correção de Wrapper CUI +VERSION = "1.0.9" + +def log(msg): + print(f"[VR4Life Install Log] {msg}") def install_plugin(): - # Limpa o console para você ler com clareza rt.clearListener() - - print(f"--- DEBUG INICIADO v{VERSION} ---") - + log(f"=== INICIANDO INSTALAÇÃO v{VERSION} ===") + # 1. SETUP DE PASTAS user_scripts_dir = rt.getDir(rt.name("userScripts")) plugin_dir = os.path.join(user_scripts_dir, "VR4Life_Plugin").replace("\\", "/") @@ -20,48 +21,58 @@ def install_plugin(): run_script = os.path.join(plugin_dir, "run_vr4life.py").replace("\\", "/") update_script = os.path.join(plugin_dir, "vr4life_updater.py").replace("\\", "/") - - print(f"Pasta do Plugin: {plugin_dir}") - + # 2. REGISTRO DE MACROS - print("Registrando Macros...") + log("Registrando Macros...") rt.execute(f'macroScript VR4Life_Open category:"Immerse" buttonText:"VR4Life Engine" (on execute do python.ExecuteFile @"{run_script}")') rt.execute(f'macroScript VR4Life_Update category:"Immerse" buttonText:"Atualizar VR4Life" (on execute do python.ExecuteFile @"{update_script}")') - # 3. TENTATIVA DE INJEÇÃO NO MENU RENDERING (SEM SUPRESSÃO DE ERRO) - print("Localizando CUI Content Manager...") - cui_mgr = rt.cui.getContentManager() - main_menu_bar = cui_mgr.mainMenuBar + # 3. INJEÇÃO NO MENU RENDERING VIA MAXSCRIPT (Para evitar erro de Wrapper no Python) + log("Injetando itens no menu Rendering...") - render_menu = None - # No Max 2026 o nome pode variar entre "Rendering" e "&Rendering" - for i in range(main_menu_bar.numItems): - item = main_menu_bar.getItem(i) - if "Rendering" in item.displayText: - render_menu = item - print(f"Menu Rendering encontrado no índice: {i}") - break - - if render_menu: - print("Adicionando itens ao menu Rendering...") - # Adiciona separador e itens - render_menu.addActionItem("VR4Life_Open", "Immerse") - render_menu.addActionItem("VR4Life_Update", "Immerse") + mxs_command = ''' + ( + local cuiMgr = cui.getContentManager() + local mainMenuBar = cuiMgr.mainMenuBar + local renderMenu = undefined + + -- Procura o menu Rendering + for i = 0 to mainMenuBar.numItems - 1 do ( + local item = mainMenuBar.getItem i + if (matchPattern item.displayText pattern:"*Rendering*") then ( + renderMenu = item + exit + ) + ) - print("Forçando atualização da barra de menus...") - cui_mgr.updateMainMenuBar() + if render_menu != undefined then ( + -- Adiciona os itens no final do menu Rendering + renderMenu.addActionItem "VR4Life_Open" "Immerse" + renderMenu.addActionItem "VR4Life_Update" "Immerse" + cuiMgr.updateMainMenuBar() + true + ) else ( + false + ) + ) + ''' + + success = rt.execute(mxs_command) + + if success: + log("Sucesso: Itens adicionados ao menu Rendering.") else: - print("ERRO: Não foi possível localizar o menu Rendering na barra principal!") + log("ERRO: Menu Rendering não encontrado. Criando menu no final da barra...") + # Fallback: Cria menu novo se o Rendering falhar + rt.execute('local m = (cui.getContentManager()).createCustomMenu "VR4Life"; m.addActionItem "VR4Life_Open" "Immerse"; m.addActionItem "VR4Life_Update" "Immerse"; (cui.getContentManager()).mainMenuBar.addItem m -1; (cui.getContentManager()).updateMainMenuBar()') # 4. EXECUÇÃO DA JANELA if os.path.exists(run_script): - print("Executando janela principal...") + log(f"Abrindo v{VERSION}...") rt.python.ExecuteFile(run_script) - else: - print(f"ERRO: Arquivo {run_script} não encontrado!") - print(f"--- DEBUG FINALIZADO v{VERSION} ---") - rt.messageBox(f"Instalação v{VERSION} finalizada.\nCheque o log (F11) para ver se houve erros no console.", title="VR4Life Debug") + log(f"=== INSTALAÇÃO FINALIZADA v{VERSION} ===") + rt.messageBox(f"VR4Life v{VERSION} instalado!\n\nConfira o final do menu Rendering.", title="VR4Life") if __name__ == "__main__": install_plugin() \ No newline at end of file