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.353 ]

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

DotGNU: a resposta Open Source ao dotNET

Referências ou ponteiros em PHP

Instalando o Allegro

Montando um workstation de desenvolvimento web em GNU/Linux

O perigo no gerenciador de uploads do PHP

Leitura recomendada

Mapear objetos em C

Android NDK: Desmistificando o acesso a códigos nativos em C

A poderosa nuvem: Intel® DevCloud com GPU Iris Xe Max!

Dynamic libraries com libtool

Utilizando técnicas recursivas em C e C++

  
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