Scripting
A API Groovy do Freeplane: objetos, operações de escrita, onde guardar scripts e o modelo de permissões.
Scripting🔗
Definição. Execução de código Groovy com acesso à estrutura do mapa e à interface do Freeplane.
Diferença para fórmulas🔗
| Fórmula | Script | |
|---|---|---|
| Onde vive | No nó | Em arquivo ou console |
| Devolve | Um valor exibido | Nada, ou efeitos |
| Pode alterar o mapa | Não | Sim |
| Reavaliada sozinha | Sim | Não |
| Aparece no menu | Não | Sim, se instalado |
Objetos de entrada🔗
node— o nó selecionadoc— o controladorconfig— preferências
Operações de leitura🔗
As mesmas propriedades de node disponíveis em fórmulas.
Operações de escrita🔗
node.text = 'Novo texto'
node.createChild('Filho')
node.createChild(0, 'Primeiro filho') // em posição
node.moveTo(outroNo)
node.moveTo(outroNo, 2) // como filho na posição 2
node.delete()
node['chave'] = 'valor'
node.attributes.remove('chave')
node.icons.add('button_ok')
node.icons.remove(0)
node.note = 'Texto da nota'
node.detail = 'Texto do detalhe'
node.link.text = 'https://exemplo.org'
node.style.name = 'Bloqueado'
node.folded = true
node.style.backgroundColorCode = '#ffcccc'
node.style.font.bold = trueO controlador c🔗
c.selected // nó atual
c.selecteds // lista selecionada
c.select(no) // muda a seleção
c.selectMultipleNodes(lista)
c.statusInfo = 'mensagem' // barra de status
c.find { it.text.startsWith('TODO') } // busca no mapa
c.newMap() // cria mapa
c.setZoom(1.5)
c.undoableActionFactory // agrupar operações num único desfazerOnde guardar🔗
~/.config/freeplane/1.11.x/scripts/ # Linux
%APPDATA%\Freeplane\1.11.x\scripts\ # Windows
Arquivos .groovy ali viram itens de menu em Ferramentas → Scripts após reiniciar. Sufixos no nome do arquivo controlam quando o script fica disponível — _on_single_node, _on_selected_nodes e variantes.
Atalhos de teclado se atribuem em Preferências → Atalhos, seção de scripts.
Permissões🔗
Separadas e concedidas em Preferências → Scripts:
| Permissão | Habilita |
|---|---|
| Scripts sem assinatura | Rodar scripts locais |
| Ler arquivos | new File(...).text |
| Escrever arquivos | new File(...).text = ... |
| Executar programas | "comando".execute() |
| Acesso à rede | Requisições HTTP |
Um script tem os mesmos poderes que você no sistema. Conceda o mínimo.
Documentação da API🔗
Ferramentas → Scripts → Ajuda da API de scripting abre um mapa navegável com todas as classes e métodos da versão instalada. É a única referência confiável — nomes de método mudam entre versões, e tutoriais antigos enganam.
Desfazer🔗
Operações de script podem ser desfeitas com Ctrl+Z, mas não de forma confiável para tudo. Para agrupar várias mudanças num único passo de desfazer, use a fábrica de ações desfazíveis do controlador.
Na prática: teste em cópia.
Depuração🔗
println "valor: ${x}" // saída do console de scripts
c.statusInfo = "chegou aqui" // barra de status
ui.informationMessage("texto") // diálogo
Exceções aparecem num diálogo com a pilha completa.
Erros comuns
- Rodar script de terceiros com permissões amplas sem ler o código
- Alterar o mapa em massa sem backup e sem testar num mapa de cópia
- Escrever script para o que uma fórmula resolveria, e perder a reavaliação automática
- Depender de
nodenum script chamado sem seleção — nem todo modo de execução o define
Perguntas para reflexão
- Qual é o critério que separa fórmula de script?
- Cite três operações que só um script consegue fazer.
- Por que permissões de script são uma decisão de segurança e não de conveniência?
- O que você faria antes de rodar um script que altera muitos nós?