• Artigos
  • Projetos
  • Download
  • Docs
  • Enviar Artigo
  • ?

Skins no PHP-GTK2

03/09/2004  Hugo Sacramento  Ler e Comentar

Se tem uma coisa que embeleza qualquer tipo de aplicação é o uso de skins. A maioria das aplicações de entretenimento como players, discadores, etc... fazem uso desta funcionalidade para atrair o gosto do usuário. Além das questões de estética é incrível como se dá pra fazer coisas super legais e criativas no momento em que se pode por exemplo criar um buraco no meio de sua Janela(GtkWindow) ou qualquer outro Widget. 



<?

/*********************************************************************
* Trabalhando com Skins(Mascarando seu Widget a partir de uma imagem)
* Escrito por Hugo Sacramento 03 de Setembro de 2004
* Adaptação para PHP-GTK2 por Pablo Dall'Oglio em 16/04/2007
* skin.png pode ser encontrado em: www.php-gtk.com.br/components/images/skin.png
**********************************************************************/

// Cria a janela
$window = new GtkWindow;
$window->set_decorated(FALSE); // tira as bordas
$window->connect_simple("destroy", array('gtk', 'main_quit'));
// centraliza
$window->set_position(GTK::WIN_POS_CENTER);

// cria um fixed
$fixed = new GtkFixed();
$window->add($fixed);

/*****************************************************************************
* Aqui será feito o skin:
* Primeiramente deve-se colocar a "máscara" da imagem(skin.png) como
* sendo "máscara" da Janela. Tudo o que for transparente na imagem também
* será na janela. Depois coloca-se a imagem na janela na mesma posição que
* foi colocada a "máscara".
* Tente Fazer um teste comentando a linha: $fixed->put($image, 0, 0);
*****************************************************************************/

// lê a imagem
$pixbuf=GdkPixbuf::new_from_file('skin.png');
$image = GtkImage::new_from_pixbuf($pixbuf);

// obtém sua máscara
list($pixmap,$mask)=$pixbuf->render_pixmap_and_mask(255);
$window->shape_combine_mask($mask, 0, 0); // note 8 

// adiciona imagem na janela
$fixed->put($image, 0, 0);

// Campo Text Login
$lframe= new GtkFrame("Usuário");
$lframe->set_size_request(110, 40);
$text_login = new GtkEntry();
$text_login->set_max_length(20);
$text_login->set_size_request(90, 20);
$window->set_focus($text_login);
$fixed->put($lframe, 250, 40);
$fixed->put($text_login, 260, 54);

// Campo Text Senha
$sframe= new GtkFrame("Senha");
$sframe->set_size_request(110, 40);
$text_senha = new GtkEntry();
$text_senha->set_editable(true);
$text_senha->set_max_length(15);
$text_senha->set_size_request(90, 20);
$text_senha->set_visibility(false);
$text_login->connect_simple('activate', array($window, 'set_focus'), $text_senha);
$fixed->put($sframe, 250, 85);
$fixed->put($text_senha, 260, 99);
$text_senha->connect("activate", array(&$this, 'login'));

$button_login = new GtkButton("Entrar");
$button_login->set_size_request(50, 20);
$fixed->put($button_login, 250, 135);
$button_login->connect("clicked", array(&$this, "login"));

$button_cancel = new GtkButton("Fechar");
$button_cancel->set_size_request(50, 20);
$fixed->put($button_cancel, 310, 135);
$button_cancel->connect_simple("clicked", array("gtk", "main_quit"));

$window->show_all();
Gtk::main();
?> 




Comentários

 Adicionar Comentário
 login
 Senha
 Título
 Comentário

Livros




    Outros

    Busque conteúdo no site
    Participe de nosso grupo no google

    [Grupo]  [Arquivos] [Mapa Usuários]

    Google

    Parceiros

 
Designed by Wolfgang Bartelme Designed by Wolfgang Bartelme

© 2006 Wordpress Themes | Theme (Not so) Fresh
XHTML CSS RSS