Projeto Icecream (parte 1)

O Icecream é um projeto que visa fornecer um ambiente de desenvolvimento web para programadores de sistema GNU/Linux. Eis aqui o Making Off para quem está interessado em aprender mais sobre programação visual em Linux utilizando o framework Qt.

[ Hits: 27.776 ]

Por: Ragen Dazs em 19/04/2005 | Blog: http://www.orkut.com


Os bastidores da criação do recurso



Com o projeto do Ice Cream aberto no Qt Designer:

$ designer icecream.pro &

O menu acesse o menu "File/New" e escolha em seguida "Dialog":


A dialog abaixo foi desenhada:


E o código abaixo foi adicionado para o SLOT editFind() que já estava pré-definido como ação do clique do ícone Find na Toolbar da tela principal.

// Cabeçalho para a nova dialog nomeada como find.ui.h
#include "find.h"

// Criamos uma referência pública para o mainForm, uma vez
// que ele está declarado de forma global
findWindow *findDlg;

void mainForm::init()
{
    // Instanciaremos o novo formulário, que nada mais é que
    // uma classe, e devolveremos para nossa referencia global
    findDlg = new findWindow( this );

    // Conectaremos o SIGNAL "clicked" do objeto findDlg ao
    // SLOT findText() da mainForm, ou seja, quando o botão
    // "Find" for clicado a rotina findText() é disparada
    connect( findDlg->findText, SIGNAL( clicked( ) ),
             this, SLOT( findText( ) ) );
}

// Exibe a dialog Find. Nesse caso, foi pensado exatamente
// em somente se mostrar a dialog, pois se ele fosse instanciada
// localmente poderíamos ter várias instâncias da janela Find abertas.
// Além disso, sempre quando a dialog fosse fechada, perderíamos a
// referencia da última palavra digitada.

void mainForm::editFind()
{
    findDlg->show();
}


// Por fim, eis onde a mágica da busca acontece. Na dialog "Find Text"
// ao se clicar no botão de busca, esse método é chamado
void mainForm::findText()
{
    // currentEditor() é um método que mais tarde será explicado.
    // Ele devolve uma referencia para o componente "Editor" da aba
    // selecionada. Tal componente, chama-se QScintilla, e será explicado
    // no próximo artigo.
    // Como pode-se ver, ele chama o método findFirst(), que aceita como
    // parâmetros a chave de busca, o segundo parâmetro booleano se a
    // busca será baseada em expressão regular ou somente string, o
    // próximo determina a busca não case sensitive, o próximo determina
    // que a busca somente deve retornar resultados Iguais da string e não
    // apenas partes dela (algo similar a busca de "chave1 chave2" no Google),
    // o próximo parâmetro determina a quebra de texto, o próximo parâmetro
    // determina que a próxima busca deve ser a partir da posição atual - caso
    // contrario a busca é iniciada no começo do texto, e por fim é a indicação
    // do índice da linha de onde a busca deve iniciar (Se for negativo, começa
    // da posição atual, caso contrario inicia a primeira linha).

    currentEditor()->findFirst (findDlg->findString->text(), FALSE, FALSE, TRUE, TRUE, TRUE, -1);}

Para finalizar adicionaremos o evento "close()" ao botão "Close" da dialog:

void findWindow::closeDialog()
{
    close();
}

Ao clicar sob o ícone Find, eis o resultado:


Ao procurarmos pela string "Viva o Linux" em meio ao texto, ele encontra a primeira ocorrência, em seguida a próxima e a próxima, e caso não haja próxima para baixo ele volta ao início.

Página anterior     Próxima página

Páginas do artigo
   1. Genesis
   2. Um tour pelos features e roadmap do projeto
   3. Instalando e configurando o ambiente de desenvolvimento
   4. Os bastidores da criação do recurso
   5. Consideracões finais
Outros artigos deste autor

Adaptação das empresas de TI aos trabalhadores da era digital

Tratamento de dados fornecidos pelo usuário: projetando sistemas com mais segurança

DotGNU: a resposta Open Source ao dotNET

Usando cache na classe Fast Template

XSS - Um exemplo de ataque

Leitura recomendada

Mapear objetos em C

Acessando a porta paralela via Linux

Programação com números inteiros gigantes

A mágica do polimorfismo e seus conceitos na ótica de C/C++

Desenvolvendo aplicativo para autenticação biométrica utilizando a Libfprint

  
Comentários
[1] Comentário enviado por birilo em 19/04/2005 - 09:07h

Legal saber q tem gente desenvolvendo SW livre por aqui....

Quanto ao QT, já tentei utiliza-lo, mas visto á minha deficiencia em Orientação a objetos desisti, e continuei no GTK/C

Agora estou tentando aprender JAVA, nem tanto pela linguagem/portabilidade, mas pelo simples fato de ser OO.

É isso...

[]'s

[2] Comentário enviado por gossip em 19/04/2005 - 09:24h

Salve Alysson,

Parabéns pela grande iniciativa e espero que em breve, com a aceitação da comunidade, o projeto possa ganhar maturidade. Um sorriso se abre sempre que vejo iniciativas tupiniquins para projetos OpenSource.

Um abraço,
Guilherme Machado
Curitiba/PR

[3] Comentário enviado por Ragen em 19/04/2005 - 09:47h

Olá Guilherme,

Só uma pequena correção:

"Um sorriso se abre sempre que vejo iniciativas tupiniquins para projetos OpenSource."

O projeto é mais que Código Aberto, ele é de Código Livre

=]

[4] Comentário enviado por fabio em 19/04/2005 - 13:02h

Olá Alysson,

Parabéns pelo projeto! Já pensou em inscrevê-lo no SourceForge? Isso facilitaria a vida de quem quiser participar do desenvolvimento.

[]'s

[5] Comentário enviado por Ragen em 19/04/2005 - 13:35h

Olá Fabio,

Sim já pensei, mas estou aguardando o projeto tomar mais maturidade para já publicar por lá uma versão "estável". Ao final dessa série de artigos pretendo publicá-lo no SourceForge e Freshmeat

Vlw!

[6] Comentário enviado por agk em 19/04/2005 - 20:56h

Excelente iniciativa, programas para Linux e Open Source que venham a facilitar a vida dos usuários sempre são bem vindos. Gostaria de ajudar, vou tentar instalar e testar por aqui, ajudando a encontrar bug's e dando sugestões talvez já ajude.

[7] Comentário enviado por cwars em 07/01/2008 - 21:15h

Já pensou em usar o doxygen para documentar o código, pois assim ficaria mais simples de poder tanto se ajudar quanto outros ajudarem, além que uma boa documentação programada sempre é útil.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts