# JavaScript

## Console do JavaScript

O &Alt;&Ctrl; J abre o console de JavaScript. (só está disponível se a libkjsembed estiver presente na compilação e na execução)

O console de JavaScript é uma interface para o interpretador de JS incorporado, o qual poderá ser usado para diversão ou para testes.

## Interface de JavaScript

Atenção: O suporte para JS é bastante estável e você não deverá perder quaisquer dados ao usá-lo. Contudo, os seus programas poderão não funcionar com as versões futuras do &krusader;, uma vez que o suporte para JS está mudando.

Por favor envie as suas Extensões de JavaScript favoritas para que se tornem disponíveis para a comunidade do &krusader;. Muito obrigado!

As aplicações de JavaScript normalmente possuem 2 arquivos `nome.js` e `nome.ui`. Estes são instalados em `~/.kde/share/apps/krusader/js/`, onde uma ação do usuário com uma ação "%_Script" irá iniciar o programa em JavaScript. Atualmente, existem 2 demonstrações em JS `root-mount-extension.tar.bz2` e `js-demo-calc.tar.bz2`, as quais poderão ser mais explicativas.

Quando é executado um programa, ele não sabe a sua origem (ou talvez possa existir uma forma de fazer isso, desconhecida dos autores) e todos os locais são relativos à pasta de trabalho atual. Contudo, esta pasta (normalmente) não é onde o programa se encontra, mas sim a pasta atual do painel ativo do Krusader. Isto deverá permanecer assim. Contudo, para referenciar os arquivos adicionais, como os arquivos '.ui' (interfaces do usuário, exportadas pelo &Qt; Designer), é necessária a localização do programa. A alternativa de usar locais absolutos, como é de se esperar, é completamente inconveniente. Por essa razão, foi introduzida a variável "scriptDir". Se um programa necessitar carregar uma &GUI; de um arquivo '.ui' serão sempre feitos desta forma: var ui = Factory.loadui( scriptDir + arquivo.ui' ); Recomenda-se a utilização do Dialog como base para desenhar as &GUI;s a usar com o JS. Execute a janela com o comando ui.exec(); Os elementos da &GUI; poderão ser acessados da seguinte forma: ui.child('nomeElemento')

Atualmente, só os objetos de C++ 'Krusader' e 'PanelManager' estão expostos sem qualquer lógica por trás. Os mesmos poderão ser inspecionados com o console de JS e as funções 'properties()', 'children()' e 'slots()'. Ele poderá acessar aos filhos com a função 'child("nomeDoFilho")', o qual devolve o próprio objeto. Atualmente, a variável 'scriptDir' é mais útil. A seguir à extensão de montagem como 'root', já é possível criar &GUI;'s avançadas para as ferramentas da linha de comando

Você poderá brincar à vontade com o 'Krusader.setCaption("Ei, vamos lá!");', 'Krusader.children();', 'Krusader.child("ajuda").slots();', 'alert(Krusader.properties())' ou 'Krusader.child("ajuda").show();'.... Além disso, existe um novo item de substituição para as Ações do Usuário, o '%_Script()%', que irá executar um arquivo externo.

NOTA: O objeto 'Krusader' irá mudar. Ainda não foram feitas as decisões sobre a interface JS (no momento da versão 1.70.0). Todas as ideias são bem-vindas. Por favor, veja o nosso Fórum do &krusader; para obter algumas reações.

O suporte para JavaScript baseia-se no KJSEmbed. Alguns exemplos que demonstram a potencialidade desta biblioteca poderão ser consultados aqui. O suporte para todas as tecnologias de suporte do KDE, como o DCOP ou o KParts, está disponibilizado. Você poderá até carregar interfaces completas de arquivos '.ui', criadas com o &Qt;'s Designer. Uma extensão de exemplo que tira partido disto poderá ser consultada aqui.