undo: desfaz uma operação.
Estas são apenas algumas das muitas ações-padrão. Pode-se obter uma lista completa na documentação da classe KStdAction. Estas ações já possuem seus próprios atalhos-padrão de teclado, bem como os seus ícones correspondentes. A única coisa que o programador tem de fazer é criar um slot para a ação e conectá-lo a ela, como pode ser visto no código abaixo:
KStdAction::openNew(this, SLOT(novoArquivo()), actionCollection());
O exemplo acima indica que quando o usuário realizar a ação opneNew o método novoArquivo() deverá ser executado. Como se pode ver, é algo extremamente simples de se fazer do ponto de vista do programador. Mas obviamente, não é tudo o que há para ser feito. O programador ainda tem de decidir quais ações são relevantes à sua aplicação. Felizmente, isso é feito de maneira bem simples.
Existem coisas que só o XML faz por você...
Se você acompanha o mundo da informática, já deve ter ouvido falar em XML. Se você já leu bastante, deve ter tido a impressão de que o XML é a salvação de todos os males da humanidade, pois dizem que o XML é capaz de facilitar a comunicação de dados, comunicação interprocessos e curar o câncer. Parece que todo mundo concorda que XML é o máximo, mas ninguém nunca o usou para nada. Exageros à parte, o XML pode ser o maior hype da história, mas muita coisa útil já apareceu por aí usando XML. O OpenOffice e o KOffice estão trabalhando em conjunto para unificar os formatos de arquivo que utilizam arquivos XML compactados. Mas o que é que isto tem a ver com o assunto deste artigo? A resposta é: muito.
As aplicações KDE usam XML para definir suas interfaces. O arquivo de exemplo abaixo mostra como uma interface simples pode ser definida:
<!DOCTYPE kpartgui >
<kpartgui version=”1" name=”krdlgator” >
<MenuBar>
<Menu name=”file”><text>&File</text>
<Action name=”file_new” />
<Separator/>
<Action name=”file_quit” />
</Menu>
</MenuBar>
</kpartgui>
Este arquivo simplesmente define um menu com duas ações: novo e sair. Automaticamente, as duas ações aparecerão acompanhadas de seus respectivos ícones e teclas de atalho. O programador deverá conectar as ações desejadas aos respectivos slots e então chamar a função a seguir, que lê o arquivo XML e monta a interface:
createGUI();
É simples assim. Mas como dificilmente uma aplicação usa apenas as ações padrão do sistema, é ainda possível criar ações próprias da aplicação usando-se a classe KAction. A criação de uma ação específica é bastante simples como pode ser visto no exemplo a seguir, que ilustra a criação da ação “extract” do “arquivador” do KDE:
new KAction( i18n( “E&xtract...” ), “ark_extract”, 0, this,
SLOT( action_extract() ), actionCollection(), “extract”);
É uma chamada simples que cria a ação extract. Indica que o slot é o método action_extract e que o ícone da ação é chamado ark_extract. No arquivo XML, não faz diferença se a ação é padrão ou não, o uso é o mesmo:
<!DOCTYPE kpartgui >
<kpartgui version=”2" name=”krdlgator” >
<MenuBar>
<Menu name=”file”><text>&File</text>
<Action name=”file_new” />
<Separator/>
<Action name=”extract” />
<Separator/>
<Action name=”file_quit” />
</Menu>
</MenuBar>
</kpartgui>
Note que a ação extract foi adicionada à definição da interface como se fosse uma ação padrão. Perceba também que a versão da interface foi modificada de 1 para 2. É importante mudar a versão sempre que algo for modificado, pois, caso contrário, um usuário que já tenha personalizado sua interface jamais verá as novas modificações.
Recapitulando...
Só para recapitular, nesta série de artigos foram vistos: KParts, DCop, aplicações quiosque, internacionalização, slots e sinais, ações e interfaces XML. Para relembrar estes temas, consulte as edições anteriores online no site da revista.
Saiba mais:
Documentação sobre KStdAction - developer.kde.org/documentation/library/cvs-api/classref/kdeui/KStdAction.html
Documentação sobre KAction - developer.kde.org/documentation/library/cvs-api/classref/kdeui/KAction.html
Página do artigo - kdebr.org/rdl
Página do KDE: kdebr.org/ (português) - kde.org/ (inglês)
Roberto Teixeira - maragato@kde.org