# JavaScript

## Consola de JavaScript

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

A consola 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 poderá perder quaisquer dados ao usá-lo. Contudo, os seus programas poderão não funcionar com as versões futuras do &krusader;, dado que o suporte para JS está a mudar.

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 têm 2 ficheiros `xpto.js` e `xpto.ui`. Estes são instalados em `~/.kde/share/apps/krusader/js/`, onde uma acção do utilizador com uma acção "%_Script" irá iniciar a programação em JavaScript. De momento, 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, este não sabe a sua origem (ou poderá vir a existir uma forma de o fazer, desconhecida dos autores) e todos os locais são relativos à pasta de trabalho actual. Contudo, esta pasta (normalmente) não é onde o programa se encontra, mas sim a pasta actual do painel activo do Krusader. Isto deverá permanecer assim. Contudo, para referenciar os ficheiros adicionais, como os ficheiros '.ui' (interfaces do utilizador, exportadas pelo &Qt; Designer), é necessária a localização do programa. A alternativa de usar locais absolutos, como será de esperar, é completamente inconveniente. Por essa razão, foi introduzida a variável "scriptDir". Se um programa necessitar de carregar uma &GUI; de um ficheiro '.ui' serão sempre feitos desta forma: var ui = Factory.loadui( scriptDir + ficheiro.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 acedidos da seguinte forma: ui.child('nomeElemento')

De momento, só os objectos de C++ 'Krusader' e 'PanelManager' estão expostos sem qualquer lógica por trás. Os mesmos poderão ser inspeccionados com a consola de JS e as funções 'properties()', 'children()' e 'slots()'. Poderá aceder aos filhos com a função 'child("nomeDoFilho")', o qual devolve o próprio objecto. De momento, 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 comandos

Poderá brincar à vontade com o 'Krusader.setCaption("Ei, vamos embora!");', 'Krusader.children();', 'Krusader.child("ajuda").slots();', 'alert(Krusader.properties())' ou 'Krusader.child("ajuda").show();'.... Para além disso, é existe um novo item de substituição para as Acções do Utilizador, o '%_Script()%', que irá executar um ficheiro externo.

NOTA: O objecto 'Krusader' irá mudar. Ainda não foram feitas as decisões sobre a interface JS (à altura 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 reacções.

The JavaScript-support is based on KJSEmbed. Some examples which show the power of this library can be found here. Support for all of KDE's ground-laying technologies such as DCOP or KParts is provided. You can even load whole GUIs from .ui-files, created with &Qt;'s Designer. An example extension making use of this can be found here.