Revista Do Linux
 


 
EDIÇÃO DO MÊS
 CD do Mês


 Capa
 Entrevista
 Estudo de Caso 1
 Estudo de Caso 2
 Desenvolvimento
 Programação
 Segurança
 REDES
 Comunidade
 Lançamento
 Internacional
 Mascote
 Corporativo
 Distro
assinantes
 

Construindo um Navegador - Parte final

Para terminar com o assunto de programação KDE, vamos ver como a consistência de interface é atingida através de um artifício extremamente simples e como personalizar a interface de usuário com XM

Luz, câmera, AÇÃO!

Se o leitor já utilizou alguma aplicação KDE por um certo tempo, já deve ter percebido que ela dispõe de mais de uma maneira de se realizar alguma coisa. É comum, por exemplo, que um programa tenha a opção de salvar um documento disponível via menu (geralmente em Arquivo Salvar) e também por meio de um botão na barra de ferramentas. Observando a consistência entre os aplicativos, podemos rapidamente perceber que isso não é responsabilidade direta do programador da aplicação, ou teríamos barras de ferramentas muito diferentes entre duas aplicações. O que ocorre, na verdade, é que tudo é conseqüência direta do design da biblioteca KDEUI, responsável pela interface gráfica.

O KDE utiliza o conceito de “ações” para lidar com a interface gráfica no que diz respeito a tarefas. Por exemplo, o ato de salvar um documento é representado por uma ação-padrão chamada save. Esta ação é automaticamente colocada no menu apropriado (no caso, o menu Arquivo) e na barra de ferramentas. A mágica é feita pelas classes KStdAction e KAction, que representam, respectivamente, uma ação-padrão ou uma ação específica da aplicação.

As ações-padrão são as ações comuns à maioria das aplicações. Para se ter uma idéia de qual tipo de ação é considerado padrão, a lista abaixo mostra algumas ações-padrão diversas:

  • save: salva um documento;
  • saveAs: salva um documento com outro nome;
  • openNew: cria um novo documento;
  • printPreview: permite visualização da impressão;
  • zoomIn: aumenta o zoom;
  • 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


A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade
Anuncie na Revista do Linux