<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Philip Sampaio´s blog</title>
	<atom:link href="http://philss.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://philss.wordpress.com</link>
	<description>Programação, tecnologia e pensamentos soltos</description>
	<lastBuildDate>Wed, 10 Nov 2010 15:22:50 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='philss.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Philip Sampaio´s blog</title>
		<link>http://philss.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://philss.wordpress.com/osd.xml" title="Philip Sampaio´s blog" />
	<atom:link rel='hub' href='http://philss.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Novo site</title>
		<link>http://philss.wordpress.com/2010/11/10/novo-site/</link>
		<comments>http://philss.wordpress.com/2010/11/10/novo-site/#comments</comments>
		<pubDate>Wed, 10 Nov 2010 15:22:50 +0000</pubDate>
		<dc:creator>Philip Sampaio</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://philss.wordpress.com/?p=114</guid>
		<description><![CDATA[Para quem quiser continuar acompanhando meu trabalho, siga o link http://www.philipsampaio.com.br/blog/<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philss.wordpress.com&amp;blog=2960934&amp;post=114&amp;subd=philss&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Para quem quiser continuar acompanhando meu trabalho, siga o link <a title="Novo blog - Philip Sampaio" href="http://www.philipsampaio.com.br/blog/" target="_self">http://www.philipsampaio.com.br/blog/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philss.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philss.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philss.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philss.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/philss.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/philss.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/philss.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/philss.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philss.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philss.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philss.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philss.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philss.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philss.wordpress.com/114/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philss.wordpress.com&amp;blog=2960934&amp;post=114&amp;subd=philss&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://philss.wordpress.com/2010/11/10/novo-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a69ccd99c8ef0be30b5dc870d7c8e9f8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Phil</media:title>
		</media:content>
	</item>
		<item>
		<title>Android SDK no Fedora 12 x86_64</title>
		<link>http://philss.wordpress.com/2010/05/29/android-sdk-no-fedora-12-x86_64/</link>
		<comments>http://philss.wordpress.com/2010/05/29/android-sdk-no-fedora-12-x86_64/#comments</comments>
		<pubDate>Sat, 29 May 2010 16:18:00 +0000</pubDate>
		<dc:creator>Philip Sampaio</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[Introdução]]></category>
		<category><![CDATA[android 64 bits]]></category>
		<category><![CDATA[android linux 64 bits]]></category>
		<category><![CDATA[android sdk 64 bits]]></category>
		<category><![CDATA[fedora 12]]></category>
		<category><![CDATA[fedora 12 x86_64]]></category>
		<category><![CDATA[fedora 64 bits]]></category>
		<category><![CDATA[fedora android 64 bits]]></category>

		<guid isPermaLink="false">http://philss.wordpress.com/?p=107</guid>
		<description><![CDATA[Esse tal de Android me deixa bem animado com a programação para dispositivos móveis! Parece um bom investimento aprender a desenvolver para celulares&#8230; Bem, eu queria muito saber como é rodar um sistema desses, emulado. Sei que a Google especifica um sistema 32bits para rodar, porém o meu sistema é de 64bits. Não desisti e [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philss.wordpress.com&amp;blog=2960934&amp;post=107&amp;subd=philss&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Esse tal de Android me deixa bem animado com a programação para dispositivos móveis! Parece um bom investimento aprender a desenvolver para celulares&#8230;</p>
<p>Bem, eu queria muito saber como é rodar um sistema desses, emulado. Sei que a Google especifica um sistema 32bits para rodar, porém o meu sistema é de 64bits. Não desisti e corri atrás de informações.<br />
Consegui encontrar uma mensagem no mainlist do grupo android-developers do groups(google) relacionada a isso.<br />
Resumidamente: precisa-se instalar bibliotecas 32 bits, mas a lista é grande, então rode e instale tudo com:</p>
<p><strong>#yum install glibc.i686 glibc-devel.i686 libstdc++.i686 zlib-devel.i686 ncurses-devel.i686 libX11-devel.i686 glibc.i686 ncurses-libs.i686 libgcc.i686 ncurses-libs.i686 libstdc++.i686 libX11.i686 zlib.i686 SDL.i686 libXext.i686 libXv.i686 libXrandr.i686 alsa-lib.i686 alsa-plugins-pulseaudio.i686</strong></p>
<p>Em seguida rode o seu sistema emulado:</p>
<p><strong>$./emulator -audio alsa @nomedasuaAVD</strong></p>
<div id="attachment_108" class="wp-caption aligncenter" style="width: 520px"><a href="http://philss.files.wordpress.com/2010/05/captura_de_tela-16.png"><img class="size-full wp-image-108" title="Tela do Android" src="http://philss.files.wordpress.com/2010/05/captura_de_tela-16.png?w=510&#038;h=330" alt="" width="510" height="330" /></a><p class="wp-caption-text">*-*</p></div>
<p style="text-align:left;">Não abordei a instalação do SDK porque é fácil pra caramba. Na verdade é só baixar e descompactar.<br />
Agora vou estudar mais sobre isso&#8230; quem sabe eu consiga construir uma boa app!*-*</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philss.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philss.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philss.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philss.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/philss.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/philss.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/philss.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/philss.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philss.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philss.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philss.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philss.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philss.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philss.wordpress.com/107/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philss.wordpress.com&amp;blog=2960934&amp;post=107&amp;subd=philss&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://philss.wordpress.com/2010/05/29/android-sdk-no-fedora-12-x86_64/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a69ccd99c8ef0be30b5dc870d7c8e9f8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Phil</media:title>
		</media:content>

		<media:content url="http://philss.files.wordpress.com/2010/05/captura_de_tela-16.png" medium="image">
			<media:title type="html">Tela do Android</media:title>
		</media:content>
	</item>
		<item>
		<title>Aprendendo Django no Planeta Terra</title>
		<link>http://philss.wordpress.com/2010/03/12/aprendendo-django-no-planeta-terra/</link>
		<comments>http://philss.wordpress.com/2010/03/12/aprendendo-django-no-planeta-terra/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 19:57:47 +0000</pubDate>
		<dc:creator>Philip Sampaio</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[aprendendo django]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[framework web]]></category>
		<category><![CDATA[mvc]]></category>

		<guid isPermaLink="false">http://philss.wordpress.com/?p=100</guid>
		<description><![CDATA[Eis uma tecnologia promissora: o Django Framework. Para quem não conhece, o Django é como uma grande coleção de bibliotecas e rotinas prontas, feitas para agilizar o desenvolvimento de um sistema web. Por exemplo: em um site, sempre haverá as rotinas de adicionar, editar e excluir uma determinada informação. Programando da forma &#8220;clássica&#8221;, sem framework, você [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philss.wordpress.com&amp;blog=2960934&amp;post=100&amp;subd=philss&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Eis uma tecnologia promissora: o <a title="Site do projeto Django" href="http://www.djangoproject.com/" target="_blank">Django Framework</a>.</p>
<p>Para quem não conhece, o Django é como uma grande coleção de bibliotecas e rotinas prontas, feitas para agilizar o desenvolvimento de um sistema web.</p>
<p>Por exemplo: em um site, sempre haverá as rotinas de adicionar, editar e excluir uma determinada informação.<br />
Programando da forma &#8220;clássica&#8221;, sem framework, você terá que criar cada processo na &#8220;mão&#8221;. Quando não há muitas coisas para criar, fica fácil, mas se é um sistema com muitas coisas para se editar, aí o bicho pega!<br />
Com o Django, você só cria uma classe modelo, com o tipo de informação. Daí ele cria todo o processo de edição de determinada informação.<br />
Isso não fará com que você não tenha contato com a linguagem de programação, mas simplificará todo o processo. Esse é o papel do Django!</p>
<p>Você pode obter mais informações no <a title="Projeto django" href="http://www.djangobrasil.org/">site da comunidade brasileira de desenvolvimento Django</a>.</p>
<p>Se ficou interessado e deseja começar a aprender, vai no link <a href="http://www.aprendendodjango.com/">http://www.aprendendodjango.com/</a> e surpreenda-se!<br />
Mesmo se você não souber programar muito bem!<br />
Mas terás que entender bem o padrão MVC para progredir com mais facilidade no curso.</p>
<p>Ainda não tive tempo para terminar o curso online, mas fiquei super animado com o que vi!</p>
<p>Espero encontrar muitos sites, em um futuro próximo, sendo desenvolvidos sob o Django.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philss.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philss.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philss.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philss.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/philss.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/philss.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/philss.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/philss.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philss.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philss.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philss.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philss.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philss.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philss.wordpress.com/100/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philss.wordpress.com&amp;blog=2960934&amp;post=100&amp;subd=philss&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://philss.wordpress.com/2010/03/12/aprendendo-django-no-planeta-terra/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a69ccd99c8ef0be30b5dc870d7c8e9f8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Phil</media:title>
		</media:content>
	</item>
		<item>
		<title>Agora sou um FEDERAL!</title>
		<link>http://philss.wordpress.com/2010/03/12/agora-sou-um-federal/</link>
		<comments>http://philss.wordpress.com/2010/03/12/agora-sou-um-federal/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 18:28:56 +0000</pubDate>
		<dc:creator>Philip Sampaio</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://philss.wordpress.com/?p=95</guid>
		<description><![CDATA[Ora, vejam só&#8230; aquele menino está virando gente grande. Ele até já faz faculdade! Estou no Instituto Federal de São Paulo, meio que sem ter planejado, e adorando muito o curso de Análise e Desenvolvimento de Sistemas! A instituição é um tanto desorganizada, mas as aulas  são ótimas(há exceções, claro)! Meu título, ao terminar o [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philss.wordpress.com&amp;blog=2960934&amp;post=95&amp;subd=philss&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ora, vejam só&#8230; aquele menino está virando gente grande. Ele até já faz faculdade!</p>
<p><a href="http://philss.files.wordpress.com/2010/03/if10.png"><img class="alignleft size-full wp-image-96" title="Instituto Federal de educação, ciência e tecnologia" src="http://philss.files.wordpress.com/2010/03/if10.png?w=510&#038;h=217" alt="" width="510" height="217" /></a></p>
<div style="clear:both;">Estou no Instituto Federal de São Paulo, meio que sem ter planejado, e adorando muito o curso de Análise e Desenvolvimento de Sistemas!</div>
<div style="clear:both;">A instituição é um tanto desorganizada, mas as aulas  são ótimas(há exceções, claro)!</div>
<div style="clear:both;"></div>
<div style="clear:both;">Meu título, ao terminar o curso, será de tecnólogo, mas isso não é mais um problema! Tô fazendo o que gosto!</div>
<div style="clear:both;">Talvez ciência da computação fosse legal, mas duvido que eu estaria tão animado pra ir às aulas!</div>
<div style="clear:both;"></div>
<div style="clear:both;">Além disso, o pessoal de lá é muito gente boa!</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philss.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philss.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philss.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philss.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/philss.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/philss.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/philss.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/philss.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philss.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philss.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philss.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philss.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philss.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philss.wordpress.com/95/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philss.wordpress.com&amp;blog=2960934&amp;post=95&amp;subd=philss&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://philss.wordpress.com/2010/03/12/agora-sou-um-federal/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a69ccd99c8ef0be30b5dc870d7c8e9f8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Phil</media:title>
		</media:content>

		<media:content url="http://philss.files.wordpress.com/2010/03/if10.png" medium="image">
			<media:title type="html">Instituto Federal de educação, ciência e tecnologia</media:title>
		</media:content>
	</item>
		<item>
		<title>Algumas mudanças</title>
		<link>http://philss.wordpress.com/2009/04/09/algumas-mudancas/</link>
		<comments>http://philss.wordpress.com/2009/04/09/algumas-mudancas/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 00:12:13 +0000</pubDate>
		<dc:creator>Philip Sampaio</dc:creator>
				<category><![CDATA[diversão]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://philss.wordpress.com/?p=89</guid>
		<description><![CDATA[Acho que se eu disser novamente que vou recomeçar a postar, você irá rir disso. Pois bem, não direi isso. Quero dizer que estou vivo e que aconteceram coisas muito legais nesse tempo todo! Fiz 18 anos de idade! A liberdade agora está estampada na minha testa! XD Me alistei no serviço militar, o que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philss.wordpress.com&amp;blog=2960934&amp;post=89&amp;subd=philss&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Acho que se eu disser novamente que vou recomeçar a postar, você irá rir disso. Pois bem, não direi isso.</p>
<p>Quero dizer que estou vivo e que aconteceram coisas muito legais nesse tempo todo!</p>
<p>Fiz 18 anos de idade! A liberdade agora está estampada na minha testa! XD<br />
Me alistei no serviço militar, o que não foi nada legal porque tive que ir até 3 juntas por aqui(pq não sabia qual era e me informaram errado)!<br />
Mas foi uma boa experiência!</p>
<p>Bom, o melhor é que estou trabalhando (supostamente) com o que gosto de fazer! Ser desenvolvedor web!</p>
<p>Bom, vou fazer cursinho no meu tempo vago, mas quando tiver tempo e arrumar meu PC(minha placa-mãe foi pro saco!) eu volto a postar.</p>
<p>Abraços!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philss.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philss.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philss.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philss.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/philss.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/philss.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/philss.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/philss.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philss.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philss.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philss.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philss.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philss.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philss.wordpress.com/89/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philss.wordpress.com&amp;blog=2960934&amp;post=89&amp;subd=philss&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://philss.wordpress.com/2009/04/09/algumas-mudancas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a69ccd99c8ef0be30b5dc870d7c8e9f8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Phil</media:title>
		</media:content>
	</item>
		<item>
		<title>Adicionando máscara de entrada em um campo de texto</title>
		<link>http://philss.wordpress.com/2009/01/26/adicionando-mascara-de-entrada-em-um-campo-de-texto/</link>
		<comments>http://philss.wordpress.com/2009/01/26/adicionando-mascara-de-entrada-em-um-campo-de-texto/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 21:07:02 +0000</pubDate>
		<dc:creator>Philip Sampaio</dc:creator>
				<category><![CDATA[Introdução]]></category>
		<category><![CDATA[pygtk]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[entry]]></category>
		<category><![CDATA[input]]></category>
		<category><![CDATA[mascara]]></category>

		<guid isPermaLink="false">http://philss.wordpress.com/?p=79</guid>
		<description><![CDATA[Hoje é um dia propício pra postagem, não me pergunte o porque. Vou começar mostrando como se aplica máscara de entrada em um campo de texto usando uma classe pronta. Encontrei essa classe em um fórum. Provavelmente surgiu deste projeto brasileiro (já que um dos autores é o mesmo da classe). Siga as regras da [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philss.wordpress.com&amp;blog=2960934&amp;post=79&amp;subd=philss&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="attachment_80" class="wp-caption alignleft" style="width: 471px"><img class="size-full wp-image-80" title="Máscara de texto." src="http://philss.files.wordpress.com/2009/01/inputmask.png?w=461&#038;h=77" alt="Exemplo utilizando máscara de texto." width="461" height="77" /><p class="wp-caption-text">Exemplo utilizando máscara de texto.</p></div>
<p>Hoje é um dia propício pra postagem, não me pergunte o porque.<br />
Vou começar mostrando como se aplica máscara de entrada em um campo de texto usando uma classe pronta. Encontrei essa classe em um fórum. Provavelmente surgiu <a href="http://www.async.com.br/projects/kiwi/index.html">deste projeto brasileiro<br />
</a>(já que um dos autores é o mesmo da classe).<br />
Siga as regras da licença.</p>
<p>Copie o código e salve com o nome de MaskEntry.py</p>
<pre style="color:#000020;background:#f6f8ff;"><span style="color:#595979;">#</span>
<span style="color:#595979;"># Copyright (C) 2006 Async Open Source</span>
<span style="color:#595979;">#</span>
<span style="color:#595979;"># This library is free software; you can redistribute it and/or</span>
<span style="color:#595979;"># modify it under the terms of the GNU Lesser General Public</span>
<span style="color:#595979;"># License as published by the Free Software Foundation; either</span>
<span style="color:#595979;"># version 2.1 of the License, or (at your option) any later version.</span>
<span style="color:#595979;">#</span>
<span style="color:#595979;"># This library is distributed in the hope that it will be useful,</span>
<span style="color:#595979;"># but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<span style="color:#595979;"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
<span style="color:#595979;"># Lesser General Public License for more details.</span>
<span style="color:#595979;">#</span>
<span style="color:#595979;"># You should have received a copy of the GNU Lesser General Public</span>
<span style="color:#595979;"># License along with this library; if not, write to the Free Software</span>
<span style="color:#595979;"># Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307</span>
<span style="color:#595979;"># USA</span>
<span style="color:#595979;">#</span>
<span style="color:#595979;"># Author(s): Johan Dahlin &lt;[EMAIL PROTECTED]&gt;</span>
<span style="color:#595979;">#</span>

<span style="color:#200080;font-weight:bold;">import</span> <span style="color:#e34adc;">string</span>
<span style="color:#200080;font-weight:bold;">import</span> sys

<span style="color:#200080;font-weight:bold;">import</span> gobject
<span style="color:#200080;font-weight:bold;">import</span> pango
<span style="color:#200080;font-weight:bold;">import</span> gtk

<span style="color:#200080;font-weight:bold;">class</span> MaskError<span style="color:#308080;">(</span><span style="color:#e34adc;">Exception</span><span style="color:#308080;">)</span><span style="color:#308080;">:</span>
    <span style="color:#200080;font-weight:bold;">pass</span>

<span style="color:#308080;">(</span>INPUT_CHARACTER<span style="color:#308080;">,</span>
 INPUT_ALPHA<span style="color:#308080;">,</span>
 INPUT_DIGIT<span style="color:#308080;">)</span> <span style="color:#308080;">=</span> <span style="color:#e34adc;">range</span><span style="color:#308080;">(</span><span style="color:#008c00;">3</span><span style="color:#308080;">)</span>

INPUT_FORMATS <span style="color:#308080;">=</span> <span style="color:#406080;">{</span>
    <span style="color:#1060b6;">'a'</span><span style="color:#308080;">:</span> INPUT_ALPHA<span style="color:#308080;">,</span>
    <span style="color:#1060b6;">'d'</span><span style="color:#308080;">:</span> INPUT_DIGIT<span style="color:#308080;">,</span>
    <span style="color:#1060b6;">'c'</span><span style="color:#308080;">:</span> INPUT_CHARACTER<span style="color:#308080;">,</span>
    <span style="color:#406080;">}</span>

<span style="color:#200080;font-weight:bold;">class</span> MaskEntry<span style="color:#308080;">(</span>gtk<span style="color:#308080;">.</span>Entry<span style="color:#308080;">)</span><span style="color:#308080;">:</span>
    <span style="color:#200080;font-weight:bold;">def</span> <span style="color:#e34adc;">__init__</span><span style="color:#308080;">(</span>self<span style="color:#308080;">)</span><span style="color:#308080;">:</span>
        gtk<span style="color:#308080;">.</span>Entry<span style="color:#308080;">.</span><span style="color:#e34adc;">__init__</span><span style="color:#308080;">(</span>self<span style="color:#308080;">)</span>
        <span style="color:#595979;"># It only makes se</span>
        self<span style="color:#308080;">.</span>modify_font<span style="color:#308080;">(</span>pango<span style="color:#308080;">.</span>FontDescription<span style="color:#308080;">(</span><span style="color:#1060b6;">"monospace"</span><span style="color:#308080;">)</span><span style="color:#308080;">)</span>
        self<span style="color:#308080;">.</span>set_property<span style="color:#308080;">(</span><span style="color:#1060b6;">'editable'</span><span style="color:#308080;">,</span> <span style="color:#e34adc;">True</span><span style="color:#308080;">)</span>
        self<span style="color:#308080;">.</span>set_size_request<span style="color:#308080;">(</span><span style="color:#008c00;">90</span><span style="color:#308080;">,</span> <span style="color:#308080;">-</span><span style="color:#008c00;">1</span><span style="color:#308080;">)</span>

        self<span style="color:#308080;">.</span>connect<span style="color:#308080;">(</span><span style="color:#1060b6;">'insert-text'</span><span style="color:#308080;">,</span> self<span style="color:#308080;">.</span>_on_insert_text<span style="color:#308080;">)</span>
        self<span style="color:#308080;">.</span>connect<span style="color:#308080;">(</span><span style="color:#1060b6;">'delete-text'</span><span style="color:#308080;">,</span> self<span style="color:#308080;">.</span>_on_delete_text<span style="color:#308080;">)</span>

        <span style="color:#595979;"># List of validators</span>
        <span style="color:#595979;">#  str -&gt; static characters</span>
        <span style="color:#595979;">#  int -&gt; dynamic, according to constants above</span>
        self<span style="color:#308080;">.</span>_validators <span style="color:#308080;">=</span> <span style="color:#308080;">[</span><span style="color:#308080;">]</span>
        self<span style="color:#308080;">.</span>_interactive_input <span style="color:#308080;">=</span> <span style="color:#e34adc;">True</span>
        self<span style="color:#308080;">.</span>_mask <span style="color:#308080;">=</span> <span style="color:#e34adc;">None</span>

    <span style="color:#595979;"># Callbacks</span>

    <span style="color:#200080;font-weight:bold;">def</span> _on_insert_text<span style="color:#308080;">(</span>self<span style="color:#308080;">,</span> editable<span style="color:#308080;">,</span> new<span style="color:#308080;">,</span> length<span style="color:#308080;">,</span> position<span style="color:#308080;">)</span><span style="color:#308080;">:</span>
        <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#200080;font-weight:bold;">not</span> self<span style="color:#308080;">.</span>_interactive_input<span style="color:#308080;">:</span>
            <span style="color:#200080;font-weight:bold;">return</span>

        <span style="color:#200080;font-weight:bold;">if</span> length <span style="color:#308080;">!</span><span style="color:#308080;">=</span> <span style="color:#008c00;">1</span><span style="color:#308080;">:</span>
            <span style="color:#200080;font-weight:bold;">print</span> <span style="color:#1060b6;">'TODO: paste'</span>
            self<span style="color:#308080;">.</span>stop_emission<span style="color:#308080;">(</span><span style="color:#1060b6;">'insert-text'</span><span style="color:#308080;">)</span>
            <span style="color:#200080;font-weight:bold;">return</span>

        position <span style="color:#308080;">=</span> self<span style="color:#308080;">.</span>get_position<span style="color:#308080;">(</span><span style="color:#308080;">)</span>
        next <span style="color:#308080;">=</span> position <span style="color:#308080;">+</span> <span style="color:#008c00;">1</span>
        validators <span style="color:#308080;">=</span> self<span style="color:#308080;">.</span>_validators
        <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#e34adc;">len</span><span style="color:#308080;">(</span>validators<span style="color:#308080;">)</span> <span style="color:#308080;">&lt;</span><span style="color:#308080;">=</span> position<span style="color:#308080;">:</span>
            self<span style="color:#308080;">.</span>stop_emission<span style="color:#308080;">(</span><span style="color:#1060b6;">'insert-text'</span><span style="color:#308080;">)</span>
            <span style="color:#200080;font-weight:bold;">return</span>

        validator <span style="color:#308080;">=</span> validators<span style="color:#308080;">[</span>position<span style="color:#308080;">]</span>
        <span style="color:#200080;font-weight:bold;">if</span> validator <span style="color:#308080;">=</span><span style="color:#308080;">=</span> INPUT_CHARACTER<span style="color:#308080;">:</span>
            <span style="color:#595979;"># Accept anything</span>
            <span style="color:#200080;font-weight:bold;">pass</span>
        <span style="color:#200080;font-weight:bold;">elif</span> validator <span style="color:#308080;">=</span><span style="color:#308080;">=</span> INPUT_ALPHA<span style="color:#308080;">:</span>
            <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#200080;font-weight:bold;">not</span> new <span style="color:#200080;font-weight:bold;">in</span> <span style="color:#e34adc;">string</span><span style="color:#308080;">.</span>lowercase<span style="color:#308080;">:</span>
                self<span style="color:#308080;">.</span>stop_emission<span style="color:#308080;">(</span><span style="color:#1060b6;">'insert-text'</span><span style="color:#308080;">)</span>
                <span style="color:#200080;font-weight:bold;">return</span>
        <span style="color:#200080;font-weight:bold;">elif</span> validator <span style="color:#308080;">=</span><span style="color:#308080;">=</span> INPUT_DIGIT<span style="color:#308080;">:</span>
            <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#200080;font-weight:bold;">not</span> new <span style="color:#200080;font-weight:bold;">in</span> <span style="color:#e34adc;">string</span><span style="color:#308080;">.</span>digits<span style="color:#308080;">:</span>
                self<span style="color:#308080;">.</span>stop_emission<span style="color:#308080;">(</span><span style="color:#1060b6;">'insert-text'</span><span style="color:#308080;">)</span>
                <span style="color:#200080;font-weight:bold;">return</span>
        <span style="color:#200080;font-weight:bold;">elif</span> <span style="color:#e34adc;">isinstance</span><span style="color:#308080;">(</span>validator<span style="color:#308080;">,</span> <span style="color:#e34adc;">str</span><span style="color:#308080;">)</span><span style="color:#308080;">:</span>
            self<span style="color:#308080;">.</span>set_position<span style="color:#308080;">(</span>next<span style="color:#308080;">)</span>
            self<span style="color:#308080;">.</span>stop_emission<span style="color:#308080;">(</span><span style="color:#1060b6;">'insert-text'</span><span style="color:#308080;">)</span>
            <span style="color:#200080;font-weight:bold;">return</span>

        self<span style="color:#308080;">.</span>delete_text<span style="color:#308080;">(</span>position<span style="color:#308080;">,</span> next<span style="color:#308080;">)</span>

        <span style="color:#595979;"># If the next position is a static character and</span>
        <span style="color:#595979;"># the one after the next is input, skip over</span>
        <span style="color:#595979;"># the static character</span>
        <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#e34adc;">len</span><span style="color:#308080;">(</span>validators<span style="color:#308080;">)</span> <span style="color:#308080;">&gt;</span> next <span style="color:#308080;">+</span> <span style="color:#008c00;">1</span><span style="color:#308080;">:</span>
            <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#308080;">(</span><span style="color:#e34adc;">isinstance</span><span style="color:#308080;">(</span>validators<span style="color:#308080;">[</span>next<span style="color:#308080;">]</span><span style="color:#308080;">,</span> <span style="color:#e34adc;">str</span><span style="color:#308080;">)</span> <span style="color:#200080;font-weight:bold;">and</span>
                <span style="color:#e34adc;">isinstance</span><span style="color:#308080;">(</span>validators<span style="color:#308080;">[</span>next<span style="color:#308080;">+</span><span style="color:#008c00;">1</span><span style="color:#308080;">]</span><span style="color:#308080;">,</span> <span style="color:#e34adc;">int</span><span style="color:#308080;">)</span><span style="color:#308080;">)</span><span style="color:#308080;">:</span>
                <span style="color:#595979;"># Ugly: but it must be done after the parent</span>
                <span style="color:#595979;">#       inserts the text</span>
                gobject<span style="color:#308080;">.</span>idle_add<span style="color:#308080;">(</span>self<span style="color:#308080;">.</span>set_position<span style="color:#308080;">,</span> next<span style="color:#308080;">+</span><span style="color:#008c00;">1</span><span style="color:#308080;">)</span>

    <span style="color:#200080;font-weight:bold;">def</span> _on_delete_text<span style="color:#308080;">(</span>self<span style="color:#308080;">,</span> editable<span style="color:#308080;">,</span> start<span style="color:#308080;">,</span> end<span style="color:#308080;">)</span><span style="color:#308080;">:</span>
        <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#200080;font-weight:bold;">not</span> self<span style="color:#308080;">.</span>_interactive_input<span style="color:#308080;">:</span>
            <span style="color:#200080;font-weight:bold;">return</span>
        <span style="color:#200080;font-weight:bold;">if</span> end <span style="color:#308080;">-</span> start <span style="color:#308080;">!</span><span style="color:#308080;">=</span> <span style="color:#008c00;">1</span><span style="color:#308080;">:</span>
            <span style="color:#200080;font-weight:bold;">print</span> <span style="color:#1060b6;">'TODO: cut/delete several'</span>
            self<span style="color:#308080;">.</span>stop_emission<span style="color:#308080;">(</span><span style="color:#1060b6;">'delete-text'</span><span style="color:#308080;">)</span>
            <span style="color:#200080;font-weight:bold;">return</span>

        validator <span style="color:#308080;">=</span> self<span style="color:#308080;">.</span>_validators<span style="color:#308080;">[</span>start<span style="color:#308080;">]</span>
        <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#e34adc;">isinstance</span><span style="color:#308080;">(</span>validator<span style="color:#308080;">,</span> <span style="color:#e34adc;">str</span><span style="color:#308080;">)</span><span style="color:#308080;">:</span>
            self<span style="color:#308080;">.</span>set_position<span style="color:#308080;">(</span>start<span style="color:#308080;">)</span>
            self<span style="color:#308080;">.</span>stop_emission<span style="color:#308080;">(</span><span style="color:#1060b6;">'delete-text'</span><span style="color:#308080;">)</span>
            <span style="color:#200080;font-weight:bold;">return</span>

        self<span style="color:#308080;">.</span>insert_text<span style="color:#308080;">(</span><span style="color:#1060b6;">' '</span><span style="color:#308080;">,</span> end<span style="color:#308080;">)</span>
        <span style="color:#200080;font-weight:bold;">return</span> <span style="color:#e34adc;">False</span>

    <span style="color:#595979;"># Public API</span>

    <span style="color:#200080;font-weight:bold;">def</span> set_mask<span style="color:#308080;">(</span>self<span style="color:#308080;">,</span> mask<span style="color:#308080;">)</span><span style="color:#308080;">:</span>
        <span style="color:#595979;">"""</span>
<span style="color:#595979;">        Sets the mask of the Entry.</span>
<span style="color:#595979;">        The format of the mask is similar to printf, but the</span>
<span style="color:#595979;">        only supported format characters are:</span>
<span style="color:#595979;">        - 'd' digit</span>
<span style="color:#595979;">        - 'a' alphabet, honors the locale</span>
<span style="color:#595979;">        - 'c' any character</span>
<span style="color:#595979;">        A digit is supported after the control.</span>
<span style="color:#595979;">        Example mask for a ISO-8601 date</span>
<span style="color:#595979;">        &gt;&gt;&gt; entry.set_mask('%4d-%2d-%2d')</span>
<span style="color:#595979;">        HACK for erase data &gt; set_mask('%0d') </span>
<span style="color:#595979;">        </span>

<span style="color:#595979;">        @param mask: the mask to set</span>
<span style="color:#595979;">        """</span>

        self<span style="color:#308080;">.</span>_mask <span style="color:#308080;">=</span> mask
        <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#200080;font-weight:bold;">not</span> mask<span style="color:#308080;">:</span>
            <span style="color:#200080;font-weight:bold;">return</span>

        input_length <span style="color:#308080;">=</span> <span style="color:#e34adc;">len</span><span style="color:#308080;">(</span>mask<span style="color:#308080;">)</span>
        keys <span style="color:#308080;">=</span> INPUT_FORMATS<span style="color:#308080;">.</span>keys<span style="color:#308080;">(</span><span style="color:#308080;">)</span>
        lenght <span style="color:#308080;">=</span> <span style="color:#008c00;">0</span>
        pos <span style="color:#308080;">=</span> <span style="color:#008c00;">0</span>
        <span style="color:#200080;font-weight:bold;">while</span> <span style="color:#e34adc;">True</span><span style="color:#308080;">:</span>
            <span style="color:#200080;font-weight:bold;">if</span> pos <span style="color:#308080;">&gt;</span><span style="color:#308080;">=</span> input_length<span style="color:#308080;">:</span>
                <span style="color:#200080;font-weight:bold;">break</span>
            <span style="color:#200080;font-weight:bold;">if</span> mask<span style="color:#308080;">[</span>pos<span style="color:#308080;">]</span> <span style="color:#308080;">=</span><span style="color:#308080;">=</span> <span style="color:#1060b6;">'%'</span><span style="color:#308080;">:</span>
                s <span style="color:#308080;">=</span> <span style="color:#1060b6;">''</span>
                format_char <span style="color:#308080;">=</span> <span style="color:#e34adc;">None</span>
                <span style="color:#595979;"># Validate/extract format mask</span>
                pos <span style="color:#308080;">+</span><span style="color:#308080;">=</span> <span style="color:#008c00;">1</span>
                <span style="color:#200080;font-weight:bold;">while</span> <span style="color:#e34adc;">True</span><span style="color:#308080;">:</span>
                    <span style="color:#200080;font-weight:bold;">if</span> mask<span style="color:#308080;">[</span>pos<span style="color:#308080;">]</span> <span style="color:#200080;font-weight:bold;">not</span> <span style="color:#200080;font-weight:bold;">in</span> <span style="color:#e34adc;">string</span><span style="color:#308080;">.</span>digits<span style="color:#308080;">:</span>
                        <span style="color:#200080;font-weight:bold;">raise</span> MaskError<span style="color:#308080;">(</span>
                            <span style="color:#1060b6;">"invalid format padding character: %s"</span> <span style="color:#308080;">%</span> mask<span style="color:#308080;">[</span>pos<span style="color:#308080;">]</span><span style="color:#308080;">)</span>
                    s <span style="color:#308080;">+</span><span style="color:#308080;">=</span> mask<span style="color:#308080;">[</span>pos<span style="color:#308080;">]</span>
                    <span style="color:#200080;font-weight:bold;">if</span> mask<span style="color:#308080;">[</span>pos<span style="color:#308080;">+</span><span style="color:#008c00;">1</span><span style="color:#308080;">]</span> <span style="color:#200080;font-weight:bold;">in</span> INPUT_FORMATS<span style="color:#308080;">:</span>
                        format_char <span style="color:#308080;">=</span> mask<span style="color:#308080;">[</span>pos<span style="color:#308080;">+</span><span style="color:#008c00;">1</span><span style="color:#308080;">]</span>
                        <span style="color:#200080;font-weight:bold;">break</span>
                    pos <span style="color:#308080;">+</span><span style="color:#308080;">=</span> <span style="color:#008c00;">1</span>
                pos <span style="color:#308080;">+</span><span style="color:#308080;">=</span> <span style="color:#008c00;">1</span>
                self<span style="color:#308080;">.</span>_validators <span style="color:#308080;">+</span><span style="color:#308080;">=</span> <span style="color:#308080;">[</span>INPUT_FORMATS<span style="color:#308080;">[</span>format_char<span style="color:#308080;">]</span><span style="color:#308080;">]</span> <span style="color:#308080;">*</span> <span style="color:#e34adc;">int</span><span style="color:#308080;">(</span>s<span style="color:#308080;">)</span>
            <span style="color:#200080;font-weight:bold;">else</span><span style="color:#308080;">:</span>
                self<span style="color:#308080;">.</span>_validators<span style="color:#308080;">.</span>append<span style="color:#308080;">(</span>mask<span style="color:#308080;">[</span>pos<span style="color:#308080;">]</span><span style="color:#308080;">)</span>
            pos <span style="color:#308080;">+</span><span style="color:#308080;">=</span> <span style="color:#008c00;">1</span>

        s <span style="color:#308080;">=</span> <span style="color:#1060b6;">''</span>
        <span style="color:#200080;font-weight:bold;">for</span> validator <span style="color:#200080;font-weight:bold;">in</span> self<span style="color:#308080;">.</span>_validators<span style="color:#308080;">:</span>
            <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#e34adc;">isinstance</span><span style="color:#308080;">(</span>validator<span style="color:#308080;">,</span> <span style="color:#e34adc;">int</span><span style="color:#308080;">)</span><span style="color:#308080;">:</span>
                s <span style="color:#308080;">+</span><span style="color:#308080;">=</span> <span style="color:#1060b6;">' '</span>
            <span style="color:#200080;font-weight:bold;">elif</span> <span style="color:#e34adc;">isinstance</span><span style="color:#308080;">(</span>validator<span style="color:#308080;">,</span> <span style="color:#e34adc;">str</span><span style="color:#308080;">)</span><span style="color:#308080;">:</span>
                s <span style="color:#308080;">+</span><span style="color:#308080;">=</span> validator
            <span style="color:#200080;font-weight:bold;">else</span><span style="color:#308080;">:</span>
                <span style="color:#200080;font-weight:bold;">raise</span> <span style="color:#e34adc;">AssertionError</span>
        self<span style="color:#308080;">.</span>set_text<span style="color:#308080;">(</span>s<span style="color:#308080;">)</span>

    <span style="color:#200080;font-weight:bold;">def</span> get_field_text<span style="color:#308080;">(</span>self<span style="color:#308080;">)</span><span style="color:#308080;">:</span>
        <span style="color:#595979;">"""</span>
<span style="color:#595979;">        Get the fields assosiated with the entry</span>
<span style="color:#595979;">        if a field is empty it'll return an empty string</span>
<span style="color:#595979;">        otherwise it'll include the content</span>

<span style="color:#595979;">        @returns: fields</span>
<span style="color:#595979;">        @rtype: list of strings</span>
<span style="color:#595979;">        """</span>
        <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#200080;font-weight:bold;">not</span> self<span style="color:#308080;">.</span>_mask<span style="color:#308080;">:</span>
            <span style="color:#200080;font-weight:bold;">raise</span> MaskError<span style="color:#308080;">(</span><span style="color:#1060b6;">"a mask must be set before calling get_field_text"</span><span style="color:#308080;">)</span>

        <span style="color:#200080;font-weight:bold;">def</span> append_field<span style="color:#308080;">(</span>fields<span style="color:#308080;">,</span> field_type<span style="color:#308080;">,</span> s<span style="color:#308080;">)</span><span style="color:#308080;">:</span>
            <span style="color:#200080;font-weight:bold;">if</span> s<span style="color:#308080;">.</span>count<span style="color:#308080;">(</span><span style="color:#1060b6;">' '</span><span style="color:#308080;">)</span> <span style="color:#308080;">=</span><span style="color:#308080;">=</span> <span style="color:#e34adc;">len</span><span style="color:#308080;">(</span>s<span style="color:#308080;">)</span><span style="color:#308080;">:</span>
                s <span style="color:#308080;">=</span> <span style="color:#1060b6;">''</span>
            <span style="color:#200080;font-weight:bold;">if</span> field_type <span style="color:#308080;">=</span><span style="color:#308080;">=</span> INPUT_DIGIT<span style="color:#308080;">:</span>
                s <span style="color:#308080;">=</span> <span style="color:#e34adc;">int</span><span style="color:#308080;">(</span>s<span style="color:#308080;">)</span>
            fields<span style="color:#308080;">.</span>append<span style="color:#308080;">(</span>s<span style="color:#308080;">)</span>

        fields <span style="color:#308080;">=</span> <span style="color:#308080;">[</span><span style="color:#308080;">]</span>
        pos <span style="color:#308080;">=</span> <span style="color:#008c00;">0</span>
        s <span style="color:#308080;">=</span> <span style="color:#1060b6;">''</span>
        field_type <span style="color:#308080;">=</span> <span style="color:#308080;">-</span><span style="color:#008c00;">1</span>
        text <span style="color:#308080;">=</span> self<span style="color:#308080;">.</span>get_text<span style="color:#308080;">(</span><span style="color:#308080;">)</span>
        validators <span style="color:#308080;">=</span> self<span style="color:#308080;">.</span>_validators
        <span style="color:#200080;font-weight:bold;">while</span> <span style="color:#e34adc;">True</span><span style="color:#308080;">:</span>
            <span style="color:#200080;font-weight:bold;">if</span> pos <span style="color:#308080;">&gt;</span><span style="color:#308080;">=</span> <span style="color:#e34adc;">len</span><span style="color:#308080;">(</span>validators<span style="color:#308080;">)</span><span style="color:#308080;">:</span>
                append_field<span style="color:#308080;">(</span>fields<span style="color:#308080;">,</span> field_type<span style="color:#308080;">,</span> s<span style="color:#308080;">)</span>
                <span style="color:#200080;font-weight:bold;">break</span>

            validator <span style="color:#308080;">=</span> validators<span style="color:#308080;">[</span>pos<span style="color:#308080;">]</span>
            <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#e34adc;">isinstance</span><span style="color:#308080;">(</span>validator<span style="color:#308080;">,</span> <span style="color:#e34adc;">int</span><span style="color:#308080;">)</span><span style="color:#308080;">:</span>
                s <span style="color:#308080;">+</span><span style="color:#308080;">=</span> text<span style="color:#308080;">[</span>pos<span style="color:#308080;">]</span>
                field_type <span style="color:#308080;">=</span> validator
            <span style="color:#200080;font-weight:bold;">else</span><span style="color:#308080;">:</span>
                append_field<span style="color:#308080;">(</span>fields<span style="color:#308080;">,</span> field_type<span style="color:#308080;">,</span> s<span style="color:#308080;">)</span>
                s <span style="color:#308080;">=</span> <span style="color:#1060b6;">''</span>
                field_type <span style="color:#308080;">=</span> <span style="color:#308080;">-</span><span style="color:#008c00;">1</span>
            pos <span style="color:#308080;">+</span><span style="color:#308080;">=</span> <span style="color:#008c00;">1</span>

        <span style="color:#200080;font-weight:bold;">return</span> fields

    <span style="color:#200080;font-weight:bold;">def</span> set_text<span style="color:#308080;">(</span>self<span style="color:#308080;">,</span> text<span style="color:#308080;">)</span><span style="color:#308080;">:</span>
        <span style="color:#595979;">"""</span>
<span style="color:#595979;">        Sets the text of the entry</span>

<span style="color:#595979;">        @param text:</span>
<span style="color:#595979;">        """</span>
        self<span style="color:#308080;">.</span>_interactive_input <span style="color:#308080;">=</span> <span style="color:#e34adc;">False</span>
        <span style="color:#200080;font-weight:bold;">try</span><span style="color:#308080;">:</span>
            gtk<span style="color:#308080;">.</span>Entry<span style="color:#308080;">.</span>set_text<span style="color:#308080;">(</span>self<span style="color:#308080;">,</span> text<span style="color:#308080;">)</span>
        <span style="color:#200080;font-weight:bold;">finally</span><span style="color:#308080;">:</span>
            self<span style="color:#308080;">.</span>_interactive_input <span style="color:#308080;">=</span> <span style="color:#e34adc;">True</span>

    <span style="color:#200080;font-weight:bold;">def</span> delete_text<span style="color:#308080;">(</span>self<span style="color:#308080;">,</span> start<span style="color:#308080;">,</span> end<span style="color:#308080;">)</span><span style="color:#308080;">:</span>
        <span style="color:#595979;">"""</span>
<span style="color:#595979;">        Deletes text at a certain range</span>

<span style="color:#595979;">        @param start:</span>
<span style="color:#595979;">        @param end:</span>
<span style="color:#595979;">        """</span>
        self<span style="color:#308080;">.</span>_interactive_input <span style="color:#308080;">=</span> <span style="color:#e34adc;">False</span>
        <span style="color:#200080;font-weight:bold;">try</span><span style="color:#308080;">:</span>
            gtk<span style="color:#308080;">.</span>Entry<span style="color:#308080;">.</span>delete_text<span style="color:#308080;">(</span>self<span style="color:#308080;">,</span> start<span style="color:#308080;">,</span> end<span style="color:#308080;">)</span>
        <span style="color:#200080;font-weight:bold;">finally</span><span style="color:#308080;">:</span>
            self<span style="color:#308080;">.</span>_interactive_input <span style="color:#308080;">=</span> <span style="color:#e34adc;">True</span>

    <span style="color:#200080;font-weight:bold;">def</span> insert_text<span style="color:#308080;">(</span>self<span style="color:#308080;">,</span> text<span style="color:#308080;">,</span> position<span style="color:#308080;">=</span><span style="color:#008c00;">0</span><span style="color:#308080;">)</span><span style="color:#308080;">:</span>
        <span style="color:#595979;">"""</span>
<span style="color:#595979;">        Insert text at a specific position</span>

<span style="color:#595979;">        @param text:</span>
<span style="color:#595979;">        @param position:</span>
<span style="color:#595979;">        """</span>
        self<span style="color:#308080;">.</span>_interactive_input <span style="color:#308080;">=</span> <span style="color:#e34adc;">False</span>
        <span style="color:#200080;font-weight:bold;">try</span><span style="color:#308080;">:</span>
            gtk<span style="color:#308080;">.</span>Entry<span style="color:#308080;">.</span>insert_text<span style="color:#308080;">(</span>self<span style="color:#308080;">,</span> text<span style="color:#308080;">,</span> position<span style="color:#308080;">)</span>
        <span style="color:#200080;font-weight:bold;">finally</span><span style="color:#308080;">:</span>
            self<span style="color:#308080;">.</span>_interactive_input <span style="color:#308080;">=</span> <span style="color:#e34adc;">True</span>

<span style="color:#200080;font-weight:bold;">def</span> main<span style="color:#308080;">(</span>args<span style="color:#308080;">)</span><span style="color:#308080;">:</span>
    win <span style="color:#308080;">=</span> gtk<span style="color:#308080;">.</span>Window<span style="color:#308080;">(</span><span style="color:#308080;">)</span>
    win<span style="color:#308080;">.</span>set_title<span style="color:#308080;">(</span><span style="color:#1060b6;">'gtk.Entry subclass'</span><span style="color:#308080;">)</span>
    <span style="color:#200080;font-weight:bold;">def</span> cb<span style="color:#308080;">(</span>window<span style="color:#308080;">,</span> event<span style="color:#308080;">)</span><span style="color:#308080;">:</span>
        <span style="color:#200080;font-weight:bold;">print</span> <span style="color:#1060b6;">'fields'</span><span style="color:#308080;">,</span> widget<span style="color:#308080;">.</span>get_field_text<span style="color:#308080;">(</span><span style="color:#308080;">)</span>
        gtk<span style="color:#308080;">.</span>main_quit<span style="color:#308080;">(</span><span style="color:#308080;">)</span>
    win<span style="color:#308080;">.</span>connect<span style="color:#308080;">(</span><span style="color:#1060b6;">'delete-event'</span><span style="color:#308080;">,</span> cb<span style="color:#308080;">)</span>

    widget <span style="color:#308080;">=</span> MaskEntry<span style="color:#308080;">(</span><span style="color:#308080;">)</span>
    widget<span style="color:#308080;">.</span>set_mask<span style="color:#308080;">(</span><span style="color:#1060b6;">'%2d/%2d/%4d'</span><span style="color:#308080;">)</span>

    win<span style="color:#308080;">.</span>add<span style="color:#308080;">(</span>widget<span style="color:#308080;">)</span>

    win<span style="color:#308080;">.</span>show_all<span style="color:#308080;">(</span><span style="color:#308080;">)</span>

    widget<span style="color:#308080;">.</span>select_region<span style="color:#308080;">(</span><span style="color:#008c00;">0</span><span style="color:#308080;">,</span> <span style="color:#008c00;">0</span><span style="color:#308080;">)</span>
    gtk<span style="color:#308080;">.</span>main<span style="color:#308080;">(</span><span style="color:#308080;">)</span>

<span style="color:#200080;font-weight:bold;">if</span> <span style="color:#e34adc;">__name__</span> <span style="color:#308080;">=</span><span style="color:#308080;">=</span> <span style="color:#1060b6;">'__main__'</span><span style="color:#308080;">:</span>
    sys<span style="color:#308080;">.</span><span style="color:#e34adc;">exit</span><span style="color:#308080;">(</span>main<span style="color:#308080;">(</span>sys<span style="color:#308080;">.</span>argv<span style="color:#308080;">)</span><span style="color:#308080;">)</span></pre>
<p>Depois disso, você poderá testa-la rodando normalmente, assim:<br />
<strong>$ python MaskEntry.py</strong></p>
<p>Para inseri-la no seu próprio programa, faça como no exemplo:</p>
<pre style="color:#000020;background:#f6f8ff;">        self<span style="color:#308080;">.</span>dtaemi     <span style="color:#308080;">=</span> MaskEntry<span style="color:#308080;">(</span><span style="color:#308080;">)</span>
        self<span style="color:#308080;">.</span>dtaemi<span style="color:#308080;">.</span>set_mask<span style="color:#308080;">(</span><span style="color:#1060b6;">'%2d/%2d/%4d'</span><span style="color:#308080;">)</span>
        self<span style="color:#308080;">.</span>hboxDtasBusca<span style="color:#308080;">.</span>pack_start<span style="color:#308080;">(</span>self<span style="color:#308080;">.</span>dtaemi<span style="color:#308080;">,</span><span style="color:#e34adc;">False</span><span style="color:#308080;">,</span><span style="color:#e34adc;">False</span><span style="color:#308080;">,</span><span style="color:#008c00;">0</span><span style="color:#308080;">)</span>
        texto <span style="color:#308080;">=</span> gtk<span style="color:#308080;">.</span>Label<span style="color:#308080;">(</span><span style="color:#308080;">)</span>
        texto<span style="color:#308080;">.</span>set_text<span style="color:#308080;">(</span><span style="color:#1060b6;">"e"</span><span style="color:#308080;">)</span>
        self<span style="color:#308080;">.</span>hboxDtasBusca<span style="color:#308080;">.</span>pack_start<span style="color:#308080;">(</span>texto<span style="color:#308080;">,</span><span style="color:#e34adc;">True</span><span style="color:#308080;">,</span><span style="color:#e34adc;">True</span><span style="color:#308080;">,</span><span style="color:#008c00;">0</span><span style="color:#308080;">)</span>

        self<span style="color:#308080;">.</span>dtavenc    <span style="color:#308080;">=</span> MaskEntry<span style="color:#308080;">(</span><span style="color:#308080;">)</span>
        self<span style="color:#308080;">.</span>dtavenc<span style="color:#308080;">.</span>set_mask<span style="color:#308080;">(</span><span style="color:#1060b6;">'%2d/%2d/%4d'</span><span style="color:#308080;">)</span>
        self<span style="color:#308080;">.</span>hboxDtasBusca<span style="color:#308080;">.</span>pack_start<span style="color:#308080;">(</span>self<span style="color:#308080;">.</span>dtavenc<span style="color:#308080;">,</span><span style="color:#e34adc;">False</span><span style="color:#308080;">,</span><span style="color:#e34adc;">False</span><span style="color:#308080;">,</span><span style="color:#008c00;">0</span><span style="color:#308080;">)</span></pre>
<p>Na primeira linha é criada a entrada de texto que receberá a máscara da classe.<br />
Em seguida é configurada a máscara para esse objeto(%2d significa 2 dígitos).<br />
No meu exemplo eu adicionei à um hbox criado anteriormente.<br />
Pronto, tá feito.</p>
<p>Obs.: Se você selecionar um &#8220;MaskEntry&#8221; utilizando a tecla tab, ele selecionará todos os campos e não conseguirá apagar e voltar para o primeiro espaço.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philss.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philss.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philss.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philss.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/philss.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/philss.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/philss.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/philss.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philss.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philss.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philss.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philss.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philss.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philss.wordpress.com/79/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philss.wordpress.com&amp;blog=2960934&amp;post=79&amp;subd=philss&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://philss.wordpress.com/2009/01/26/adicionando-mascara-de-entrada-em-um-campo-de-texto/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a69ccd99c8ef0be30b5dc870d7c8e9f8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Phil</media:title>
		</media:content>

		<media:content url="http://philss.files.wordpress.com/2009/01/inputmask.png" medium="image">
			<media:title type="html">Máscara de texto.</media:title>
		</media:content>
	</item>
		<item>
		<title>O GTK e o Pascal &#8211; I</title>
		<link>http://philss.wordpress.com/2008/12/30/o-gtk-e-o-pascal-i/</link>
		<comments>http://philss.wordpress.com/2008/12/30/o-gtk-e-o-pascal-i/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 17:14:54 +0000</pubDate>
		<dc:creator>Philip Sampaio</dc:creator>
				<category><![CDATA[diversão]]></category>
		<category><![CDATA[Introdução]]></category>
		<category><![CDATA[pascal]]></category>

		<guid isPermaLink="false">http://philss.wordpress.com/?p=63</guid>
		<description><![CDATA[Pesquisando e programando, encontrei uma ótima referência em  Pascal escrita em bom português. Fiquei inspirado. Logo estou aqui. Bom, hoje vou mostrar um exemplo de programa escrito em Pascal, que utiliza a biblioteca gráfica GTK+ 2. É um exemplo simples, um botão dentro de uma janela, que não possui muita utilidade prática, mas é ótimo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philss.wordpress.com&amp;blog=2960934&amp;post=63&amp;subd=philss&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Pesquisando e programando, encontrei uma <a title="Aprendendo a programar com Pascal" href="http://icaju.wordpress.com/">ótima referência</a> em  Pascal escrita em bom português.<br />
Fiquei inspirado. Logo estou aqui.</p>
<p>Bom, hoje vou mostrar um exemplo de programa escrito em Pascal, que utiliza a biblioteca gráfica GTK+ 2.<br />
É um exemplo simples, um botão dentro de uma janela, que não possui muita utilidade prática, mas é ótimo pra se ter uma idéia do que pode ser feito com pascal.</p>
<p>Utilizei o <a title="Site do Geany IDE" href="http://www.geany.org/Main/HomePage">Geany IDE</a>, mas se você deseja compilar seus programas na mão, é só digitar:<strong><br />
$fpc arquivo.pas</strong></p>
<p>Hoje vou explicar um pouco do código. Então vamos lá&#8230;</p>
<pre style="color:#000020;background:#f6f8ff;"><span style="color:#200080;font-weight:bold;">program</span> pascal_gtk1<span style="color:#406080;">;</span>

<span style="color:#200080;font-weight:bold;">uses</span> glib2<span style="color:#308080;">,</span>gtk2<span style="color:#308080;">,</span>gdk2<span style="color:#308080;">,</span> crt<span style="color:#406080;">;</span></pre>
<p>Este é o início do nosso programa. A primeira linha é o nome do programa, a segunda é o mais importante aqui. Ela importa as classes necessárias para o programa funcionar.<br />
Neste caso estamos usando a <a title="O que é Glib" href="http://library.gnome.org/devel/glib/">Glib 2</a>, <a title="O que é GTK+ 2" href="http://library.gnome.org/devel/gtk/">GTK 2</a>, <a title="O que é GDK 2" href="http://library.gnome.org/devel/gdk/">GDK 2</a> e a <a title="O que é CRT, em inglês" href="http://www.freepascal.org/docs-html/rtl/crt/index.html">CRT</a>.<br />
Se você utiliza distribuições baseadas no Debian precisará instalar o compilador e as units separadamente&#8230;<br />
Faça então:</p>
<p><strong># apt-get install fp-compiler fp-units-base fp-units-gtk2</strong></p>
<p>Se você utiliza distribuições com Yum(Red Hat, Fedora, etc), faça somente:<br />
<strong></strong></p>
<p><strong>#yum install fpc</strong></p>
<p>Se você utiliza Windows, então será um pouco mais chato de instalar tudo.<br />
Comece com o FreePascal: <a href="http://www.freepascal.org/download.html">http://www.freepascal.org/download.html</a><br />
Em seguida baixe o <a href="http://www.gtk.org/download-windows.html">GTK</a> e todos os pacotes listados(glib, pango, gdk, atk e cairo) ou este pacote tudo em um: <a href="http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.14/gtk+-bundle_2.14.6-20081216_win32.zip">http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.14/gtk+-bundle_2.14.6-20081216_win32.zip</a><br />
O pacote do freepascal vem com uma IDE própria, mas é horrível!<br />
Siga este tutorial para maior conforto(serve pra Windows também): <a href="http://icaju.wordpress.com/2008/12/22/aprendendo-a-programar-com-pascal-e-software-livre/">http://icaju.wordpress.com/2008/12/22/aprendendo-a-programar-com-pascal-e-software-livre/</a></p>
<p>Seguindo o tutorial, vamos a segunda parte.</p>
<pre style="background:#f6f8ff none repeat scroll 0 0;color:#000020;"><span style="color:#200080;font-weight:bold;">procedure</span> destroy <span style="color:#308080;">(</span> widget <span style="color:#308080;">:</span> pGtkWidget <span style="color:#406080;">;</span> data <span style="color:#308080;">:</span> pgpointer<span style="color:#308080;">)</span><span style="color:#406080;">;</span> <span style="color:#200080;font-weight:bold;">cdecl</span><span style="color:#406080;">;</span>
<span style="color:#200080;font-weight:bold;">begin</span>
gtk_main_quit<span style="color:#308080;">(</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
<span style="color:#200080;font-weight:bold;">end</span><span style="color:#406080;">;</span>

<span style="color:#200080;font-weight:bold;">procedure</span> clique<span style="color:#308080;">(</span> widget <span style="color:#308080;">:</span> pGtkWidget <span style="color:#406080;">;</span> data <span style="color:#308080;">:</span> pgpointer<span style="color:#308080;">)</span><span style="color:#406080;">;</span> <span style="color:#200080;font-weight:bold;">cdecl</span><span style="color:#406080;">;</span>
<span style="color:#200080;font-weight:bold;">begin</span>
writeln<span style="color:#308080;">(</span><span style="color:#1060b6;">'Olá mundo'</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
<span style="color:#200080;font-weight:bold;">end</span><span style="color:#406080;">;</span></pre>
<p>Estes são os únicos procedimentos de nosso programa. Eles recebem os parâmetros dos sinais de chamada(leia &#8220;Mantendo a sanidade com Glade&#8221;).<br />
O primeiro procedimento é acionado quando a usuário clica no botão de fechar da janela, ou seja, destrói o programa.<br />
O segundo procedimento é acionado quando o botão(que será criado ainda) for clicado.<br />
Mostrarei as conexões de sinais mais à frente.</p>
<pre style="color:#000020;background:#f6f8ff;"><span style="color:#200080;font-weight:bold;">var</span> janela<span style="color:#308080;">:</span>pGtkWidget<span style="color:#406080;">;</span>
    botao<span style="color:#308080;">:</span> pGtkWidget<span style="color:#406080;">;</span></pre>
<p>Aqui são declaradas as variáveis que serão utilizadas no programa. O tipo &#8220;pGtkWidget&#8221; é usado para declarar todos os Widgets GTK em FreePascal(corrija-me se estiver errado).</p>
<pre style="color:#000020;background:#f6f8ff;"><span style="color:#200080;font-weight:bold;">begin</span>

gtk_init <span style="color:#308080;">(</span><span style="color:#308080;">@</span>argc<span style="color:#308080;">,</span> <span style="color:#308080;">@</span>argv<span style="color:#308080;">)</span><span style="color:#406080;">;</span>

janela<span style="color:#308080;">:</span><span style="color:#308080;">=</span> gtk_window_new<span style="color:#308080;">(</span>GTK_WINDOW_TOPLEVEL<span style="color:#308080;">)</span><span style="color:#406080;">;</span>
botao <span style="color:#308080;">:</span><span style="color:#308080;">=</span> gtk_button_new_with_label<span style="color:#308080;">(</span><span style="color:#1060b6;">'Olá mundo!'</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span></pre>
<p>Este é o começo da &#8220;estrutura&#8221; do programa.  A função &#8220;gtk_init&#8221; iniciará tudo que seu programa precisa pra funcionar.<br />
Para variável &#8220;janela&#8221; está sendo declarada uma nova janela gtk de nível superior.<br />
Para variável &#8220;botao&#8221; está sendo declarado um novo botão com etiqueta.</p>
<pre style="color:#000020;background:#f6f8ff;">gtk_container_add<span style="color:#308080;">(</span>pGTKContainer<span style="color:#308080;">(</span>janela<span style="color:#308080;">)</span><span style="color:#308080;">,</span>botao<span style="color:#308080;">)</span><span style="color:#406080;">;</span></pre>
<p>Esta linha diz para adicionar o botão à janela(um container).</p>
<pre style="color:#000020;background:#f6f8ff;">gtk_signal_connect<span style="color:#308080;">(</span>pGTKOBJECT <span style="color:#308080;">(</span>janela<span style="color:#308080;">)</span><span style="color:#308080;">,</span> <span style="color:#1060b6;">'destroy'</span><span style="color:#308080;">,</span> GTK_SIGNAL_FUNC<span style="color:#308080;">(</span><span style="color:#308080;">@</span>destroy<span style="color:#308080;">)</span><span style="color:#308080;">,</span> <span style="color:#7d0045;">NULL</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
<span style="color:#595979;">//Caso o botão seja clicado:</span>
gtk_signal_connect<span style="color:#308080;">(</span>pGTKOBJECT <span style="color:#308080;">(</span>botao<span style="color:#308080;">)</span><span style="color:#308080;">,</span> <span style="color:#1060b6;">'clicked'</span><span style="color:#308080;">,</span> GTK_SIGNAL_FUNC<span style="color:#308080;">(</span><span style="color:#308080;">@</span>clique<span style="color:#308080;">)</span><span style="color:#308080;">,</span> <span style="color:#7d0045;">NULL</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span></pre>
<p>Estas são as linhas mais importantes do programa. São elas que conectam os sinais do programa.<br />
A primeira conecta o widget &#8220;janela&#8221; com o sinal de &#8220;destroy&#8221; ao procedimento &#8220;destroy&#8221;.<br />
A segunda conecta o widget &#8220;botao&#8221; com o sinal de &#8220;clicked&#8221;(clicado) ao procedimento &#8220;clique&#8221;. Ambos os procedures foram declarados anteriormente.</p>
<pre style="color:#000020;background:#f6f8ff;">gtk_widget_show_all<span style="color:#308080;">(</span>janela<span style="color:#308080;">)</span><span style="color:#406080;">;</span>
gtk_main <span style="color:#308080;">(</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
<span style="color:#ffffff;background:#dd9999;font-weight:bold;font-style:italic;">end</span><span style="color:#308080;">.</span></pre>
<p>A primeira linha deste trecho fará o programa mostrar todos os widgets dentro da &#8220;janela&#8221;.<br />
A segunda inicia o loop GTK.<br />
A ultima linha finaliza o nosso programa.</p>
<p>Pra terminar, postarei o código completo.</p>
<pre style="color:#000020;background:#f6f8ff;"><span style="color:#200080;font-weight:bold;">program</span> pascal_gtk1<span style="color:#406080;">;</span>

<span style="color:#200080;font-weight:bold;">uses</span> glib2<span style="color:#308080;">,</span>gtk2<span style="color:#308080;">,</span>gdk2<span style="color:#308080;">,</span> crt<span style="color:#406080;">;</span>

<span style="color:#200080;font-weight:bold;">procedure</span> destroy <span style="color:#308080;">(</span> widget <span style="color:#308080;">:</span> pGtkWidget <span style="color:#406080;">;</span> data <span style="color:#308080;">:</span> pgpointer<span style="color:#308080;">)</span><span style="color:#406080;">;</span> <span style="color:#200080;font-weight:bold;">cdecl</span><span style="color:#406080;">;</span>
<span style="color:#200080;font-weight:bold;">begin</span>
gtk_main_quit<span style="color:#308080;">(</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
<span style="color:#200080;font-weight:bold;">end</span><span style="color:#406080;">;</span>

<span style="color:#200080;font-weight:bold;">procedure</span> clique<span style="color:#308080;">(</span> widget <span style="color:#308080;">:</span> pGtkWidget <span style="color:#406080;">;</span> data <span style="color:#308080;">:</span> pgpointer<span style="color:#308080;">)</span><span style="color:#406080;">;</span> <span style="color:#200080;font-weight:bold;">cdecl</span><span style="color:#406080;">;</span>
<span style="color:#200080;font-weight:bold;">begin</span>
writeln<span style="color:#308080;">(</span><span style="color:#1060b6;">'Olá mundo'</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
<span style="color:#200080;font-weight:bold;">end</span><span style="color:#406080;">;</span>

<span style="color:#200080;font-weight:bold;">var</span> janela<span style="color:#308080;">:</span>pGtkWidget<span style="color:#406080;">;</span>
    botao<span style="color:#308080;">:</span> pGtkWidget<span style="color:#406080;">;</span>

<span style="color:#200080;font-weight:bold;">begin</span>
gtk_init <span style="color:#308080;">(</span><span style="color:#308080;">@</span>argc<span style="color:#308080;">,</span> <span style="color:#308080;">@</span>argv<span style="color:#308080;">)</span><span style="color:#406080;">;</span>

janela<span style="color:#308080;">:</span><span style="color:#308080;">=</span> gtk_window_new<span style="color:#308080;">(</span>GTK_WINDOW_TOPLEVEL<span style="color:#308080;">)</span><span style="color:#406080;">;</span>
botao <span style="color:#308080;">:</span><span style="color:#308080;">=</span> gtk_button_new_with_label<span style="color:#308080;">(</span><span style="color:#1060b6;">'Olá mundo!'</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>

gtk_container_add<span style="color:#308080;">(</span>pGTKContainer<span style="color:#308080;">(</span>janela<span style="color:#308080;">)</span><span style="color:#308080;">,</span>botao<span style="color:#308080;">)</span><span style="color:#406080;">;</span>

gtk_signal_connect<span style="color:#308080;">(</span>pGTKOBJECT <span style="color:#308080;">(</span>janela<span style="color:#308080;">)</span><span style="color:#308080;">,</span> <span style="color:#1060b6;">'destroy'</span><span style="color:#308080;">,</span> GTK_SIGNAL_FUNC<span style="color:#308080;">(</span><span style="color:#308080;">@</span>destroy<span style="color:#308080;">)</span><span style="color:#308080;">,</span> <span style="color:#7d0045;">NULL</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
gtk_signal_connect<span style="color:#308080;">(</span>pGTKOBJECT <span style="color:#308080;">(</span>botao<span style="color:#308080;">)</span><span style="color:#308080;">,</span> <span style="color:#1060b6;">'clicked'</span><span style="color:#308080;">,</span> GTK_SIGNAL_FUNC<span style="color:#308080;">(</span><span style="color:#308080;">@</span>clique<span style="color:#308080;">)</span><span style="color:#308080;">,</span> <span style="color:#7d0045;">NULL</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>

gtk_widget_show_all<span style="color:#308080;">(</span>janela<span style="color:#308080;">)</span><span style="color:#406080;">;</span>

gtk_main <span style="color:#308080;">(</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>

<span style="color:#200080;font-weight:bold;">end</span><span style="color:#308080;">.</span></pre>
<div id="attachment_66" class="wp-caption alignnone" style="width: 289px"><img class="size-full wp-image-66" title="pascal_gtk1" src="http://philss.files.wordpress.com/2008/12/pascal_gtk1.png?w=279&#038;h=150" alt="Programa funcionando" width="279" height="150" /><p class="wp-caption-text">Programa funcionando</p></div>
<p>Observações:</p>
<p>Comandos iniciados com &#8220;#&#8221; significam que deverão ser executados como root.<br />
Iniciados com &#8220;$&#8221; significam que serão executados como usuário normal.</p>
<p>Referências e dicas:</p>
<p><a href="http://library.gnome.org/devel/gtk/stable/">http://library.gnome.org/devel/gtk/stable/</a> (Fortemente recomendado! Em inglês)<br />
<a href="http://linuxhard.org/wp/archives/48">http://linuxhard.org/wp/archives/48</a><a href="http://icaju.wordpress.com/"></p>
<p>http://icaju.wordpress.com/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philss.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philss.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philss.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philss.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/philss.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/philss.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/philss.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/philss.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philss.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philss.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philss.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philss.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philss.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philss.wordpress.com/63/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philss.wordpress.com&amp;blog=2960934&amp;post=63&amp;subd=philss&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://philss.wordpress.com/2008/12/30/o-gtk-e-o-pascal-i/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a69ccd99c8ef0be30b5dc870d7c8e9f8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Phil</media:title>
		</media:content>

		<media:content url="http://philss.files.wordpress.com/2008/12/pascal_gtk1.png" medium="image">
			<media:title type="html">pascal_gtk1</media:title>
		</media:content>
	</item>
		<item>
		<title>Fim de uma etapa</title>
		<link>http://philss.wordpress.com/2008/12/09/fim-de-uma-etapa/</link>
		<comments>http://philss.wordpress.com/2008/12/09/fim-de-uma-etapa/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 04:22:40 +0000</pubDate>
		<dc:creator>Philip Sampaio</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://philss.wordpress.com/2008/12/09/fim-de-uma-etapa/</guid>
		<description><![CDATA[Finalmente terminei meu TCC, conseqüentemente meu curso técnico de informática na Escola Técnica Parque da Juventude &#8211; São Paulo &#8211; olha o orgulho &#8211; ! Também terminei o ensino médio, sem repetir nenhum ano XD ([é porque tem gente que ainda consegue essa proeza nos dias de hoje). Estou bastante feliz pois além de concluir [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philss.wordpress.com&amp;blog=2960934&amp;post=62&amp;subd=philss&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Finalmente terminei meu TCC, conseqüentemente meu curso técnico de informática na Escola Técnica Parque da Juventude &#8211; São Paulo &#8211; olha o orgulho &#8211; !<br />
Também terminei o ensino médio, sem repetir nenhum ano XD ([é porque tem gente que ainda consegue essa proeza nos dias de hoje).<br />
Estou bastante feliz pois além de concluir tudo numa boa, fiz uma ótima apresentação com meu TCC.<br />
Pena não ter nenhum vídeo.</p>
<p>Obrigado a todos que me ajudaram!<br />
Próximo passo é a 2ª fase da Fuvest.<br />
Logo logo postarei novamente!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philss.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philss.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philss.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philss.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/philss.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/philss.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/philss.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/philss.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philss.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philss.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philss.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philss.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philss.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philss.wordpress.com/62/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philss.wordpress.com&amp;blog=2960934&amp;post=62&amp;subd=philss&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://philss.wordpress.com/2008/12/09/fim-de-uma-etapa/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a69ccd99c8ef0be30b5dc870d7c8e9f8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Phil</media:title>
		</media:content>
	</item>
		<item>
		<title>Democracia digital</title>
		<link>http://philss.wordpress.com/2008/10/17/democracia-digital/</link>
		<comments>http://philss.wordpress.com/2008/10/17/democracia-digital/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 15:58:41 +0000</pubDate>
		<dc:creator>Philip Sampaio</dc:creator>
				<category><![CDATA[política]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[democracia]]></category>
		<category><![CDATA[digital]]></category>
		<category><![CDATA[educacao]]></category>
		<category><![CDATA[governo]]></category>
		<category><![CDATA[sao paulo]]></category>

		<guid isPermaLink="false">http://philss.wordpress.com/?p=57</guid>
		<description><![CDATA[É muito bom ver que algumas áreas de nosso governo são tão empenhadas em democratizar o acesso à informação.. mas as vezes é decepcionante: Caso você NÃO possua o navegador proprietário Internet Explorer, e muito menos possua alguma versão do Windows, você terá a agradável surpresa de não vizualizar este site! Claro que você pode [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philss.wordpress.com&amp;blog=2960934&amp;post=57&amp;subd=philss&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>É muito bom ver que algumas áreas de nosso governo são tão empenhadas em democratizar o acesso à informação.. mas as vezes é decepcionante:</p>
<p><a href="http://philss.files.wordpress.com/2008/10/captura_da_tela-19.png"><img class="alignnone size-large wp-image-58" title="Secretaria da educação do estado de São Paulo" src="http://philss.files.wordpress.com/2008/10/captura_da_tela-19.png?w=510&#038;h=382" alt="" width="510" height="382" /></a></p>
<p>Caso você NÃO possua o navegador proprietário Internet Explorer, e muito menos possua alguma versão do Windows, você terá a agradável surpresa de não vizualizar este site!<br />
Claro que você pode formatar seu hd e instalar uma cópia do Windows só para acessar este site. Mas para isso, você pagará no mínimo R$400,00(a não ser que sua consciência permita comprar uma cópia pirata).</p>
<p>Você também pode instalar o <a title="IEs4Linux" href="http://www.tatanka.com.br/ies4linux/page/Main_Page">IEs4Linux</a>. Mas convenhamos: haja paciência!<br />
Para testar, acesse o <a href="http://censo.edunet.sp.gov.br/2008/">Censo da secretaria da educação de São Paulo</a> e clique em algum dos links do site.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philss.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philss.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philss.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philss.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/philss.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/philss.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/philss.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/philss.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philss.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philss.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philss.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philss.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philss.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philss.wordpress.com/57/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philss.wordpress.com&amp;blog=2960934&amp;post=57&amp;subd=philss&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://philss.wordpress.com/2008/10/17/democracia-digital/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a69ccd99c8ef0be30b5dc870d7c8e9f8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Phil</media:title>
		</media:content>

		<media:content url="http://philss.files.wordpress.com/2008/10/captura_da_tela-19.png?w=510" medium="image">
			<media:title type="html">Secretaria da educação do estado de São Paulo</media:title>
		</media:content>
	</item>
		<item>
		<title>Criando uma ListStore em Python</title>
		<link>http://philss.wordpress.com/2008/09/20/criando-uma-liststore-em-python/</link>
		<comments>http://philss.wordpress.com/2008/09/20/criando-uma-liststore-em-python/#comments</comments>
		<pubDate>Sat, 20 Sep 2008 22:53:00 +0000</pubDate>
		<dc:creator>Philip Sampaio</dc:creator>
				<category><![CDATA[diversão]]></category>
		<category><![CDATA[Introdução]]></category>
		<category><![CDATA[pygtk]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[glade]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[liststore]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[tabela]]></category>

		<guid isPermaLink="false">http://philss.wordpress.com/?p=44</guid>
		<description><![CDATA[Neste tutorial irei ensinar como criar uma ListStore em Python, utilizando o criador de interfaces Glade e PyGTK. Primeiro crie uma interface como esta: Salve com o nome que você quiser(no meu exemplo, eu salvei como Exemplo1.glade). Em seguida crie os sinais da interface: Feito isso, abra seu editor/IDE e insira o código comentado: #!/usr/bin/env [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philss.wordpress.com&amp;blog=2960934&amp;post=44&amp;subd=philss&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Neste tutorial irei ensinar como criar uma ListStore em Python, utilizando o criador de interfaces Glade e PyGTK.</p>
<p style="text-align:left;">Primeiro crie uma interface como esta:<br />
<a href="http://philss.files.wordpress.com/2008/09/captura_da_tela-9.png"><img class="size-full wp-image-45 aligncenter" title="Interface do programa ListStore_tuto" src="http://philss.files.wordpress.com/2008/09/captura_da_tela-9.png?w=510&#038;h=248" alt="" width="510" height="248" /></a></p>
<p style="text-align:left;">Salve com o nome que você quiser(no meu exemplo, eu salvei como Exemplo1.glade).</p>
<p>Em seguida crie os sinais da interface:<br />
<a href="http://philss.files.wordpress.com/2008/09/captura_da_tela-111.png"><img class="alignnone size-full wp-image-48" title="Sinal da janela" src="http://philss.files.wordpress.com/2008/09/captura_da_tela-111.png?w=432&#038;h=291" alt="" width="432" height="291" /></a><a href="http://philss.files.wordpress.com/2008/09/captura_da_tela-121.png"></p>
<p><img class="size-full wp-image-49 alignnone" style="padding-left:5px;" title="Sinal do botão adicionar" src="http://philss.files.wordpress.com/2008/09/captura_da_tela-121.png?w=369&#038;h=195" alt="" width="369" height="195" /></a></p>
<p>Feito isso, abra seu editor/IDE e insira o código comentado:<br />
<!-- Trecho com o código do programa. Syntax HighLighting do site http://www.tohtml.com/python. --></p>
<pre style="background:#f6f8ff none repeat scroll 0 0;overflow:auto;width:500px;color:#000020;"><span style="color:#595979;">#!/usr/bin/env python</span>
<span style="color:#595979;">#-*- encoding: utf8 -*-</span>

<span style="color:#595979;">#Criação de uma liststore em Python, com PyGTK e Glade.</span>
<span style="color:#595979;">#Autor: Philip Sampaio</span>

<span style="font-weight:bold;color:#200080;">import</span> gtk
<span style="font-weight:bold;color:#200080;">import</span> gtk<span style="color:#308080;">.</span>glade
<span style="font-weight:bold;color:#200080;">import</span> pygtk

pygtk<span style="color:#308080;">.</span>require<span style="color:#308080;">(</span><span style="color:#1060b6;">"2.0"</span><span style="color:#308080;">)</span>

<span style="font-weight:bold;color:#200080;">class</span> ListStoreSimples<span style="color:#308080;">(</span>object<span style="color:#308080;">)</span><span style="color:#308080;">:</span>
    <span style="font-weight:bold;color:#200080;">def</span> <span style="color:#e34adc;">__init__</span><span style="color:#308080;">(</span>self<span style="color:#308080;">)</span><span style="color:#308080;">:</span>
        <span style="color:#595979;">#Função de início.. é a primeira a ser carregada</span>
        interface             <span style="color:#308080;">=</span>     gtk<span style="color:#308080;">.</span>glade<span style="color:#308080;">.</span>XML<span style="color:#308080;">(</span><span style="color:#1060b6;">"Exemplo1.glade"</span><span style="color:#308080;">)</span>
        self<span style="color:#308080;">.</span>winListStoreSimples    <span style="color:#308080;">=</span>    interface<span style="color:#308080;">.</span>get_widget<span style="color:#308080;">(</span><span style="color:#1060b6;">"winListStoreSimples"</span><span style="color:#308080;">)</span>
        self<span style="color:#308080;">.</span>entNome                <span style="color:#308080;">=</span>    interface<span style="color:#308080;">.</span>get_widget<span style="color:#308080;">(</span><span style="color:#1060b6;">"entNome"</span><span style="color:#308080;">)</span>
        self<span style="color:#308080;">.</span>entEmail            <span style="color:#308080;">=</span>    interface<span style="color:#308080;">.</span>get_widget<span style="color:#308080;">(</span><span style="color:#1060b6;">"entEmail"</span><span style="color:#308080;">)</span>
        self<span style="color:#308080;">.</span>trvListStore        <span style="color:#308080;">=</span>    interface<span style="color:#308080;">.</span>get_widget<span style="color:#308080;">(</span><span style="color:#1060b6;">"trvListStore"</span><span style="color:#308080;">)</span>

        <span style="color:#595979;">#Montando a ListStore(ou tabela, como quiser)</span>
        <span style="color:#595979;">#A linha abaixo diz cria um modelo de liststore com 2 colunas, ambas sendo strings</span>
        self<span style="color:#308080;">.</span>mdlListStore <span style="color:#308080;">=</span> gtk<span style="color:#308080;">.</span>ListStore<span style="color:#308080;">(</span> <span style="color:#e34adc;">str</span><span style="color:#308080;">,</span> <span style="color:#e34adc;">str</span><span style="color:#308080;">)</span>
        <span style="color:#595979;">#A linha abaixo configura o modelo da treeview com o modelo acima</span>
        self<span style="color:#308080;">.</span>trvListStore<span style="color:#308080;">.</span>set_model<span style="color:#308080;">(</span>self<span style="color:#308080;">.</span>mdlListStore<span style="color:#308080;">)</span>

        <span style="color:#595979;">#Colocando as colunas</span>
        colunaNome     <span style="color:#308080;">=</span> gtk<span style="color:#308080;">.</span>TreeViewColumn<span style="color:#308080;">(</span><span style="color:#1060b6;">"Nome"</span><span style="color:#308080;">,</span>gtk<span style="color:#308080;">.</span>CellRendererText<span style="color:#308080;">(</span><span style="color:#308080;">)</span><span style="color:#308080;">,</span> text<span style="color:#308080;">=</span><span style="color:#008c00;">0</span><span style="color:#308080;">)</span>
        colunaEmail    <span style="color:#308080;">=</span> gtk<span style="color:#308080;">.</span>TreeViewColumn<span style="color:#308080;">(</span><span style="color:#1060b6;">"Email"</span><span style="color:#308080;">,</span>gtk<span style="color:#308080;">.</span>CellRendererText<span style="color:#308080;">(</span><span style="color:#308080;">)</span><span style="color:#308080;">,</span> text<span style="color:#308080;">=</span><span style="color:#008c00;">1</span><span style="color:#308080;">)</span>
        <span style="color:#595979;">#Adiciona à nossa treeview (trvListStore)</span>
        self<span style="color:#308080;">.</span>trvListStore<span style="color:#308080;">.</span>append_column<span style="color:#308080;">(</span>colunaNome<span style="color:#308080;">)</span>
        self<span style="color:#308080;">.</span>trvListStore<span style="color:#308080;">.</span>append_column<span style="color:#308080;">(</span>colunaEmail<span style="color:#308080;">)</span>

        <span style="color:#595979;">#Dicionário de conexões</span>
        dic <span style="color:#308080;">=</span> <span style="color:#406080;">{</span>
            <span style="color:#1060b6;">'on_winListStoreSimples_destroy'</span> <span style="color:#308080;">:</span> <span style="color:#308080;">(</span> self<span style="color:#308080;">.</span>on_winListStoreSimples_destroy <span style="color:#308080;">)</span><span style="color:#308080;">,</span>
            <span style="color:#1060b6;">'on_btnAdicionar_clicked'</span>         <span style="color:#308080;">:</span> <span style="color:#308080;">(</span> self<span style="color:#308080;">.</span>on_btnAdicionar_clicked<span style="color:#308080;">)</span>
            <span style="color:#406080;">}</span>

        <span style="color:#595979;">#Conecta os sinais</span>
        interface<span style="color:#308080;">.</span>signal_autoconnect<span style="color:#308080;">(</span>dic<span style="color:#308080;">)</span>
    <span style="font-weight:bold;color:#200080;">def</span> main<span style="color:#308080;">(</span>self<span style="color:#308080;">)</span><span style="color:#308080;">:</span>
        <span style="color:#595979;">#Inicia o loop GTK</span>
        self<span style="color:#308080;">.</span>winListStoreSimples<span style="color:#308080;">.</span>show_all<span style="color:#308080;">(</span><span style="color:#308080;">)</span>
        gtk<span style="color:#308080;">.</span>main<span style="color:#308080;">(</span><span style="color:#308080;">)</span>

    <span style="font-weight:bold;color:#200080;">def</span> on_btnAdicionar_clicked<span style="color:#308080;">(</span>self<span style="color:#308080;">,</span>widget<span style="color:#308080;">)</span><span style="color:#308080;">:</span>
        <span style="color:#595979;">#Sinal de clique do btnAdicionar</span>
        nome     <span style="color:#308080;">=</span> self<span style="color:#308080;">.</span>entNome<span style="color:#308080;">.</span>get_text<span style="color:#308080;">(</span><span style="color:#308080;">)</span>
        email     <span style="color:#308080;">=</span> self<span style="color:#308080;">.</span>entEmail<span style="color:#308080;">.</span>get_text<span style="color:#308080;">(</span><span style="color:#308080;">)</span>
        <span style="color:#595979;">#Preste atenção: você irá adicionar os dados no MODELO</span>
        self<span style="color:#308080;">.</span>mdlListStore<span style="color:#308080;">.</span>append<span style="color:#308080;">(</span><span style="color:#308080;">[</span> nome<span style="color:#308080;">,</span> email<span style="color:#308080;">]</span><span style="color:#308080;">)</span>

        <span style="color:#595979;">#As linhas comentadas abaixo são de exemplo.</span>
        <span style="color:#595979;">"""info = [("Philip Sampaio","</span><span style="color:#7144c4;">philip.sampaio@gmail.com</span><span style="color:#595979;">"),</span>
<span style="color:#595979;">                ("Fulano"         ,"</span><span style="color:#7144c4;">fulano@gmail.com</span><span style="color:#595979;">"),</span>
<span style="color:#595979;">                ("Maria"         ,"</span><span style="color:#7144c4;">Maria@gmail.com</span><span style="color:#595979;">"),</span>
<span style="color:#595979;">                ("João"             ,"</span><span style="color:#7144c4;">Joao@gmail.com</span><span style="color:#595979;">")]</span>
<span style="color:#595979;">        for coluna in info:</span>
<span style="color:#595979;">            print coluna[0], coluna[1]</span>
<span style="color:#595979;">        """</span>
    <span style="font-weight:bold;color:#200080;">def</span> on_winListStoreSimples_destroy<span style="color:#308080;">(</span>self<span style="color:#308080;">,</span>widget<span style="color:#308080;">)</span><span style="color:#308080;">:</span>
        <span style="color:#595979;">#funcao para parar o loop gtk e encerrar o programa</span>
        self<span style="color:#308080;">.</span>winListStoreSimples<span style="color:#308080;">.</span>hide_all<span style="color:#308080;">(</span><span style="color:#308080;">)</span>
        gtk<span style="color:#308080;">.</span>main_quit<span style="color:#308080;">(</span><span style="color:#308080;">)</span>

<span style="font-weight:bold;color:#200080;">if</span> <span style="color:#e34adc;">__name__</span> <span style="color:#308080;">=</span><span style="color:#308080;">=</span> <span style="color:#1060b6;">'__main__'</span><span style="color:#308080;">:</span>
    teste <span style="color:#308080;">=</span> ListStoreSimples<span style="color:#308080;">(</span><span style="color:#308080;">)</span>
    teste<span style="color:#308080;">.</span>main<span style="color:#308080;">(</span><span style="color:#308080;">)</span></pre>
<p>O resultado deve ser algo como isto:<br />
<a href="http://philss.files.wordpress.com/2008/09/captura_da_tela-131.png"><img class="aligncenter size-full wp-image-50" title="Resultado" src="http://philss.files.wordpress.com/2008/09/captura_da_tela-131.png?w=351&#038;h=247" alt="" width="351" height="247" /></a>Fácil, não?<br />
Teste e <span style="font-weight:bold;">estude o código</span>! Pergunte se precisar de ajuda!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/philss.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/philss.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/philss.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/philss.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/philss.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/philss.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/philss.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/philss.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/philss.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/philss.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/philss.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/philss.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/philss.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/philss.wordpress.com/44/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=philss.wordpress.com&amp;blog=2960934&amp;post=44&amp;subd=philss&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://philss.wordpress.com/2008/09/20/criando-uma-liststore-em-python/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a69ccd99c8ef0be30b5dc870d7c8e9f8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Phil</media:title>
		</media:content>

		<media:content url="http://philss.files.wordpress.com/2008/09/captura_da_tela-9.png" medium="image">
			<media:title type="html">Interface do programa ListStore_tuto</media:title>
		</media:content>

		<media:content url="http://philss.files.wordpress.com/2008/09/captura_da_tela-111.png" medium="image">
			<media:title type="html">Sinal da janela</media:title>
		</media:content>

		<media:content url="http://philss.files.wordpress.com/2008/09/captura_da_tela-121.png" medium="image">
			<media:title type="html">Sinal do botão adicionar</media:title>
		</media:content>

		<media:content url="http://philss.files.wordpress.com/2008/09/captura_da_tela-131.png" medium="image">
			<media:title type="html">Resultado</media:title>
		</media:content>
	</item>
	</channel>
</rss>
