<?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>middle of dreams</title>
	<atom:link href="http://middleofdreams.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://middleofdreams.wordpress.com</link>
	<description>mainly techblog</description>
	<lastBuildDate>Fri, 30 Jul 2010 10:26:23 +0000</lastBuildDate>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='middleofdreams.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>middle of dreams</title>
		<link>http://middleofdreams.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://middleofdreams.wordpress.com/osd.xml" title="middle of dreams" />
	<atom:link rel='hub' href='http://middleofdreams.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Oddam projekty w dobre ręce.</title>
		<link>http://middleofdreams.wordpress.com/2010/07/30/oddam-projekty-w-dobre-rece/</link>
		<comments>http://middleofdreams.wordpress.com/2010/07/30/oddam-projekty-w-dobre-rece/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 10:26:23 +0000</pubDate>
		<dc:creator>middleofdreams</dc:creator>
				<category><![CDATA[Organizacyjne]]></category>
		<category><![CDATA[Projekty]]></category>
		<category><![CDATA[Techblog]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pygtk]]></category>
		<category><![CDATA[pyqt]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://middleofdreams.wordpress.com/?p=328</guid>
		<description><![CDATA[Po długim braku aktywności tutaj muszę w końcu napisać, że nie mam czasu na kontynuowanie moich projektów. Oddam je w dobre (właściwie to w każde) ręce, a jako że i tak nie roszcze sobie żadnych praw do napisanego kodu całe &#8216;oddanie&#8217; polega na ewentualnej pomocy ze zrozumieniem napisanego już kodu, objaśnienia funkcji itp. Zgłaszać się [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=middleofdreams.wordpress.com&amp;blog=9872554&amp;post=328&amp;subd=middleofdreams&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Po długim braku aktywności tutaj muszę w końcu napisać, że nie mam czasu na kontynuowanie moich projektów. Oddam je w dobre (właściwie to w każde) ręce, a jako że i tak nie roszcze sobie żadnych praw do napisanego kodu całe &#8216;oddanie&#8217; polega na ewentualnej pomocy ze zrozumieniem napisanego już kodu, objaśnienia funkcji itp. Zgłaszać się można jakkolwiek: w komentarzach, na maila, blipa itp.</p>
<p>Mam nadzieje, że znajdzie się ktoś kto doszuka się w moich projektach czegoś interesującego. Jedyną aplikacją jaką byłbym w stanie dalej rozwijać (w nieznanym mi jednak czasie) jest LBPM, ale jak znajdzie się ktoś chętny do tego programu to równiesz zapraszam.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/middleofdreams.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/middleofdreams.wordpress.com/328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/middleofdreams.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/middleofdreams.wordpress.com/328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/middleofdreams.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/middleofdreams.wordpress.com/328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/middleofdreams.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/middleofdreams.wordpress.com/328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/middleofdreams.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/middleofdreams.wordpress.com/328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/middleofdreams.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/middleofdreams.wordpress.com/328/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/middleofdreams.wordpress.com/328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/middleofdreams.wordpress.com/328/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=middleofdreams.wordpress.com&amp;blog=9872554&amp;post=328&amp;subd=middleofdreams&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://middleofdreams.wordpress.com/2010/07/30/oddam-projekty-w-dobre-rece/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c788d8923f9f4e2bec9285c060080999?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">middleofdreams</media:title>
		</media:content>
	</item>
		<item>
		<title>Wygaszanie ekranu</title>
		<link>http://middleofdreams.wordpress.com/2010/06/04/wygaszanie-ekranu/</link>
		<comments>http://middleofdreams.wordpress.com/2010/06/04/wygaszanie-ekranu/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 21:38:35 +0000</pubDate>
		<dc:creator>middleofdreams</dc:creator>
				<category><![CDATA[Techblog]]></category>
		<category><![CDATA[energooszczędność]]></category>
		<category><![CDATA[setterm]]></category>
		<category><![CDATA[wygaszenie]]></category>
		<category><![CDATA[xset]]></category>

		<guid isPermaLink="false">http://middleofdreams.wordpress.com/?p=323</guid>
		<description><![CDATA[Zawsze zapominam gdzie co ustawić jeśli się nie korzysta z takich dobrodziejstw jak Gnome/KDE/Xfce. Tak właściwie służą do tego tylko 2 komendy. Dla powłoki graficznej xset, natomiast dla powłoki terminalowej setterm. Składnia obu jest bardzo prosta. Najpierw xset: Całkowite wyłączenie wygaszania ekranu: xset s off Ustawienie czasu wygaszania (jeśli wcześniej było wyłączone &#8211; automatycznie włącza) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=middleofdreams.wordpress.com&amp;blog=9872554&amp;post=323&amp;subd=middleofdreams&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Zawsze zapominam gdzie co ustawić jeśli się nie korzysta z takich dobrodziejstw jak Gnome/KDE/Xfce. Tak właściwie służą do tego tylko 2 komendy. Dla powłoki graficznej xset, natomiast dla powłoki terminalowej setterm. Składnia obu jest bardzo prosta.<span id="more-323"></span> Najpierw xset:<br />
Całkowite wyłączenie wygaszania ekranu:</p>
<p><code>xset s off</code></p>
<p>Ustawienie czasu wygaszania (jeśli wcześniej było wyłączone &#8211; automatycznie włącza)</p>
<p><code>xset s 30</code></p>
<p>Czas podawany jest w sekundach. Polecenia te można dopisać do skryptów startowych (użytkownika &#8211; nie systemowych) na przykład .bashrc. Można też podpiąć pod skróty klawiszowe (jeśli chcemy np tymczasowo wyłączyć).</p>
<p>Można tak:</p>
<p><code>xset s off &amp; notify-send "Wyłączono wygaszenie ekranu"</code></p>
<p>A można i tak:</p>
<p><code>xset s off &amp;&amp; notify-send "Wygaszenie ekranu wydłużono o 15 minut" &amp;&amp; sleep 900 &amp;&amp; xset s on &amp;</code></p>
<p>Co tylko przyjdzie do głowy.</p>
<p>W <em>setterm</em> mylące może być to, że czas podawany jest w<strong> minutach</strong>. Dodatkowo do wyboru mamy tylko zakres <strong>od 0 do 60</strong> (z czego pierwsza pozycja służy do wyłączania). Np całkowite wyłączenie to:</p>
<p><code>setterm -blank 0</code></p>
<p>Taki wpis również umieszczamy w skryptach startowych &#8211; tym razem systemowym. Najlepszym miejscem do tego będzie <em>/etc/rc.local</em>. Zdaża się jednak, że i to nie działa &#8211; wtedy trzeba posłużyć się <em>/etc/X11/xorg.conf</em>, gdzie w sekcji <strong>Server Layout</strong> umieszczamy coś na podobieństwo:</p>
<p><code>Option "BlankTime" "0"<br />
Option "StandbyTime" "0"<br />
Option "SuspendTime" "0"<br />
Option "OffTime" "0"</code></p>
<p>To już musi działać.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/middleofdreams.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/middleofdreams.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/middleofdreams.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/middleofdreams.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/middleofdreams.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/middleofdreams.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/middleofdreams.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/middleofdreams.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/middleofdreams.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/middleofdreams.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/middleofdreams.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/middleofdreams.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/middleofdreams.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/middleofdreams.wordpress.com/323/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=middleofdreams.wordpress.com&amp;blog=9872554&amp;post=323&amp;subd=middleofdreams&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://middleofdreams.wordpress.com/2010/06/04/wygaszanie-ekranu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c788d8923f9f4e2bec9285c060080999?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">middleofdreams</media:title>
		</media:content>
	</item>
		<item>
		<title>Pain of Salvation &#8211; droga do upadku?</title>
		<link>http://middleofdreams.wordpress.com/2010/06/01/pain-of-salvation-droga-do-upadku/</link>
		<comments>http://middleofdreams.wordpress.com/2010/06/01/pain-of-salvation-droga-do-upadku/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 12:55:50 +0000</pubDate>
		<dc:creator>middleofdreams</dc:creator>
				<category><![CDATA[Muzyka]]></category>
		<category><![CDATA[pain of salvation]]></category>
		<category><![CDATA[progressive]]></category>
		<category><![CDATA[rock]]></category>

		<guid isPermaLink="false">http://middleofdreams.wordpress.com/?p=321</guid>
		<description><![CDATA[Ostatnie dziecko tego zespołu już pewnie jest wszystkim zainteresowanym znane. Nie będzie więc kolejnej recenzji, których w internecie pełno. Chciałem się za to przyjrzeć całej karierze POSu. Właściwie nie można powiedzieć, że coś jest w ich stylu &#8211; na każdym krążku jest coś innego. Jednak jak poprzednie albumy jakoś trzymały się kupy, najnowsze wydania jakoś [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=middleofdreams.wordpress.com&amp;blog=9872554&amp;post=321&amp;subd=middleofdreams&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ostatnie dziecko tego zespołu już pewnie jest wszystkim zainteresowanym znane. Nie będzie więc kolejnej recenzji, których w internecie <a href="http://www.google.pl/search?client=opera&amp;rls=pl&amp;q=pain+of+salvation+road+salt+one+recenzja&amp;sourceid=opera&amp;ie=utf-8&amp;oe=utf-8">pełno</a>. Chciałem się za to przyjrzeć całej karierze POSu. Właściwie nie można powiedzieć, że coś jest w ich stylu &#8211; na każdym krążku jest coś innego. Jednak jak poprzednie albumy jakoś trzymały się kupy, najnowsze wydania jakoś strasznie odstają. Osobiście czuję jakąś tęsknotę do &#8222;starego posu&#8221;.<span id="more-321"></span> <strong>Entropi</strong><strong>a</strong> &#8211; pierwszy LP Pain of Salvation. Dla słuchaczy (bo sam Daniel G.<a href="http://artrock.pl/wywiady.php?id=462"> w ostatnim wywiadzie</a> mówi co innego) tutaj wszystko się zaczyna. Są kawałki zarówno &#8216;z k0pyta&#8217; jak i spokojniejsze &#8211; ale nie nudzące. To właśnie na tym albumie znajdziemy takie &#8222;hity&#8221; jak Nightmist czy Winning a war, których nie sposób pominąć przy wymienianiu ich arcydzieł. Następny album <strong>One Hour By a Concrete Lake</strong> jest moim zdaniem najmocniejszym i najbardziej progresywnym dziełem. Może nie porywa tak jak poprzednik, ale ciągle ma to coś co sprawia, że chce się więcej i więcej. Podobnie jest z dwoma następnymi wydaniami. Zarówno<strong> Remedy Lane</strong> jak i <strong>The perfect element p.1</strong> prezentują nalepszy poziom i świetną formę muzyków. Genialne i pomysły i wykonanie. Niektórzy twierdzą, że to właśnie jest esencją Pain of Salvation.</p>
<p>I tu zaczynają się schody.<strong> BE</strong>. Album z udziałem orkiestry już w zupełnie innym stylu. Płyta, którą osobiście słuchać mogę w kółko. Skoczne motywy (jak te z Imago) poprzeplatane z głębokimi utworami jak Lilium Cruentus czy Iter Impius, a wszystko łączące się w jedną całość. Ale&#8230; album, który jak sądziłem miałbyć odskocznią od ich standardowego grania, jakby naprowadził zespół na zupełnie nowe tory. Bo znowu &#8211; kolejny album, kolejny styl. Scarsick był dość nowoczesny i chociaż nie można powiedzieć, że jest to złe wydanie, sam musiałem się z nim trochę obyć. Nie od razu do mnie trafił w przeciwieństwie do poprzedników. Nie będę się tu rozwodził o takich &#8222;perełkach&#8221; jak America czy Disco queen bo ile głow tyle opini.</p>
<p>Tym sposobem dochodzimy do ostatniego EP &#8211; <strong>Linoleum</strong>. Moim zdaniem większość płyty kompletnie niesłuchalna. Na uwagę zasługuje conajwyżej utwór tytułowy, Mortar Grind i cover Yellow Raven &#8211; chociaż ten ostatni to też odrobinę przerost formy nad treścią. Jeśli EP miało przygotować słuchaczy do <strong>Road Salt One</strong>, to chyba się udało. Ja już wtedy obawiałem się o kolejną płytę. I mimo, że parę kawałków (np Sisters, Tell me where it hurts) naprawdę mi się podoba &#8211; album jako całość niezbyt do mnie przemawia. Gildenlow przedstawiał album jako nu-metal lat 70 (w dużym skrócie), a wyszło chyba gorzej niż przytoczony opis. Jeden wielki gar &#8211; wszystkiego po trochu i jakoś się to nie trzyma kupy. Poza tym&#8230; Melodifestivalen&#8230; poważnie?</p>
<p><img class="aligncenter" title="Pain of Salvation - Road Salt One" src="http://www.roadrunnerrecords.com/blabbermouth.net/reviewpics/painroad.jpg" alt="" width="350" height="350" /></p>
<p>Ale może jeszcze Daniel nas zaskoczy i<strong> Road Salt Two</strong> będzie powrotem na stare tory? Wątpie. Raz, że to niejako kontynuacja, a dwa, że Gildenlow strasznie zachwyca się pierwszą częścia. Pozostaje mieć nadzieje.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/middleofdreams.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/middleofdreams.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/middleofdreams.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/middleofdreams.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/middleofdreams.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/middleofdreams.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/middleofdreams.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/middleofdreams.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/middleofdreams.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/middleofdreams.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/middleofdreams.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/middleofdreams.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/middleofdreams.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/middleofdreams.wordpress.com/321/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=middleofdreams.wordpress.com&amp;blog=9872554&amp;post=321&amp;subd=middleofdreams&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://middleofdreams.wordpress.com/2010/06/01/pain-of-salvation-droga-do-upadku/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c788d8923f9f4e2bec9285c060080999?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">middleofdreams</media:title>
		</media:content>

		<media:content url="http://www.roadrunnerrecords.com/blabbermouth.net/reviewpics/painroad.jpg" medium="image">
			<media:title type="html">Pain of Salvation - Road Salt One</media:title>
		</media:content>
	</item>
		<item>
		<title>Najbliższe plany. Aktualizacja.</title>
		<link>http://middleofdreams.wordpress.com/2010/05/26/najblizsze-plany/</link>
		<comments>http://middleofdreams.wordpress.com/2010/05/26/najblizsze-plany/#comments</comments>
		<pubDate>Wed, 26 May 2010 21:31:48 +0000</pubDate>
		<dc:creator>middleofdreams</dc:creator>
				<category><![CDATA[Organizacyjne]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[plany]]></category>

		<guid isPermaLink="false">http://middleofdreams.wordpress.com/?p=240</guid>
		<description><![CDATA[Skoro nauka już za mną, w najbliższym czasie zamierzam: Przenieść blog na jakiś inny serwer i odpowiednio go odpicować Stworzyć jakiś layout Rozszerzyć tematyke bloga Ponownie ruszyć z projektami UPDATE: Ze względu na brak kasy na serwer oraz czasu na zabawę z tym wszystkim blog zostanie tutaj. Jednak przeorganizuje go trochę.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=middleofdreams.wordpress.com&amp;blog=9872554&amp;post=240&amp;subd=middleofdreams&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Skoro nauka już za mną, w najbliższym czasie zamierzam:</p>
<ul>
<li><span style="text-decoration:line-through;">Przenieść blog na jakiś inny serwer i</span> odpowiednio go odpicować</li>
<li><span style="text-decoration:line-through;">Stworzyć jakiś layout</span></li>
<li>Rozszerzyć tematyke bloga</li>
<li>Ponownie ruszyć z projektami</li>
</ul>
<p>UPDATE:</p>
<p>Ze względu na brak kasy na serwer oraz czasu na zabawę z tym wszystkim blog zostanie tutaj. Jednak przeorganizuje go trochę.</p>
<ul></ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/middleofdreams.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/middleofdreams.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/middleofdreams.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/middleofdreams.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/middleofdreams.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/middleofdreams.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/middleofdreams.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/middleofdreams.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/middleofdreams.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/middleofdreams.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/middleofdreams.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/middleofdreams.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/middleofdreams.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/middleofdreams.wordpress.com/240/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=middleofdreams.wordpress.com&amp;blog=9872554&amp;post=240&amp;subd=middleofdreams&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://middleofdreams.wordpress.com/2010/05/26/najblizsze-plany/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c788d8923f9f4e2bec9285c060080999?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">middleofdreams</media:title>
		</media:content>
	</item>
		<item>
		<title>GCounter 1.0 rc 2</title>
		<link>http://middleofdreams.wordpress.com/2010/03/27/gcounter-1-0-rc-2/</link>
		<comments>http://middleofdreams.wordpress.com/2010/03/27/gcounter-1-0-rc-2/#comments</comments>
		<pubDate>Sat, 27 Mar 2010 16:04:27 +0000</pubDate>
		<dc:creator>middleofdreams</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Projekty]]></category>
		<category><![CDATA[Techblog]]></category>
		<category><![CDATA[count]]></category>
		<category><![CDATA[gcounter]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[suspend]]></category>

		<guid isPermaLink="false">http://middleofdreams.wordpress.com/?p=236</guid>
		<description><![CDATA[Added feature that lets you set exact time, when for example computer should suspend. past dates are ignored (app will execute action after 1 minute) similar with setting current date &#8211; minimum is 1 minute. This is release candidate &#8211; something might not work properly. As always &#8211; Download here<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=middleofdreams.wordpress.com&amp;blog=9872554&amp;post=236&amp;subd=middleofdreams&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Added feature that lets you set exact time, when for example computer should suspend.</p>
<ul>
<li>past dates are ignored (app will execute action after 1 minute)</li>
<li>similar with setting current date &#8211; minimum is 1 minute.</li>
<li>This is release candidate &#8211; something might not work properly.</li>
</ul>
<p>As always &#8211; <a href="http://github.com/downloads/middleofdreams/gcounter/gcounter-1.0rc2.tar.bz2">Download here</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/middleofdreams.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/middleofdreams.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/middleofdreams.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/middleofdreams.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/middleofdreams.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/middleofdreams.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/middleofdreams.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/middleofdreams.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/middleofdreams.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/middleofdreams.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/middleofdreams.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/middleofdreams.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/middleofdreams.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/middleofdreams.wordpress.com/236/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=middleofdreams.wordpress.com&amp;blog=9872554&amp;post=236&amp;subd=middleofdreams&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://middleofdreams.wordpress.com/2010/03/27/gcounter-1-0-rc-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c788d8923f9f4e2bec9285c060080999?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">middleofdreams</media:title>
		</media:content>
	</item>
		<item>
		<title>Zawieszenie blogowania.</title>
		<link>http://middleofdreams.wordpress.com/2010/03/15/zawieszenie-blogowania/</link>
		<comments>http://middleofdreams.wordpress.com/2010/03/15/zawieszenie-blogowania/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 20:12:24 +0000</pubDate>
		<dc:creator>middleofdreams</dc:creator>
				<category><![CDATA[Organizacyjne]]></category>

		<guid isPermaLink="false">http://middleofdreams.wordpress.com/?p=233</guid>
		<description><![CDATA[Ze względu na inne priorytety zmuszony jestem zawiesić blogowanie. Powrót? Za parę miesięcy<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=middleofdreams.wordpress.com&amp;blog=9872554&amp;post=233&amp;subd=middleofdreams&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ze względu na inne priorytety zmuszony jestem zawiesić blogowanie. Powrót? Za parę miesięcy</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/middleofdreams.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/middleofdreams.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/middleofdreams.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/middleofdreams.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/middleofdreams.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/middleofdreams.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/middleofdreams.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/middleofdreams.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/middleofdreams.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/middleofdreams.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/middleofdreams.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/middleofdreams.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/middleofdreams.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/middleofdreams.wordpress.com/233/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=middleofdreams.wordpress.com&amp;blog=9872554&amp;post=233&amp;subd=middleofdreams&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://middleofdreams.wordpress.com/2010/03/15/zawieszenie-blogowania/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c788d8923f9f4e2bec9285c060080999?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">middleofdreams</media:title>
		</media:content>
	</item>
		<item>
		<title>QuickPassGen 0.1</title>
		<link>http://middleofdreams.wordpress.com/2010/03/11/quickpassgen-0-1/</link>
		<comments>http://middleofdreams.wordpress.com/2010/03/11/quickpassgen-0-1/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 12:06:07 +0000</pubDate>
		<dc:creator>middleofdreams</dc:creator>
				<category><![CDATA[Projekty]]></category>
		<category><![CDATA[Techblog]]></category>
		<category><![CDATA[generator haseł]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://middleofdreams.wordpress.com/?p=230</guid>
		<description><![CDATA[W końcu udało mi się dokończyć mój generator haseł. Działa on na bardzo prostej zasadzie &#8211; użytkownik podaje słowo (lub słowa), a skrypt zamienia litery na znaki specjalne co czyni nasze hasło mocniejszym. Skrypt nie posiada żadnego GUI, jednak można go uruchomić w dwóch trybach &#8211; normalnym oraz interaktywnym. W normalnym podajemy opcje jako argumenty, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=middleofdreams.wordpress.com&amp;blog=9872554&amp;post=230&amp;subd=middleofdreams&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>W końcu udało mi się dokończyć mój generator haseł. Działa on na bardzo prostej zasadzie &#8211; użytkownik podaje słowo (lub słowa), a skrypt zamienia litery na znaki specjalne co czyni nasze hasło mocniejszym. Skrypt nie posiada żadnego GUI, jednak można go uruchomić w dwóch trybach &#8211; normalnym oraz interaktywnym. W normalnym podajemy opcje jako argumenty, w drugim program pyta nas o nie.</p>
<p>Głowne cechy:</p>
<ul>
<li> 2 poziomy zaawansowania generowanego hasła</li>
<li>tryb cichy &#8211; zwraca samo hasło bez dodatkowych lini (można użyć do skryptów)</li>
<li>dostępny tryb interaktywny.</li>
</ul>
<p>Skrypt można pobrać <a href="http://cli-apps.org/content/download.php?content=121380&amp;id=1">stąd</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/middleofdreams.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/middleofdreams.wordpress.com/230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/middleofdreams.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/middleofdreams.wordpress.com/230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/middleofdreams.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/middleofdreams.wordpress.com/230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/middleofdreams.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/middleofdreams.wordpress.com/230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/middleofdreams.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/middleofdreams.wordpress.com/230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/middleofdreams.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/middleofdreams.wordpress.com/230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/middleofdreams.wordpress.com/230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/middleofdreams.wordpress.com/230/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=middleofdreams.wordpress.com&amp;blog=9872554&amp;post=230&amp;subd=middleofdreams&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://middleofdreams.wordpress.com/2010/03/11/quickpassgen-0-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c788d8923f9f4e2bec9285c060080999?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">middleofdreams</media:title>
		</media:content>
	</item>
		<item>
		<title>gtk.ComboBox oraz gtk.ComboBoxEntry &#8211; czyli listy rozwijane.</title>
		<link>http://middleofdreams.wordpress.com/2010/02/28/gtk-combobox-oraz-gtk-comboboxentry-czyli-listy-rozwijane/</link>
		<comments>http://middleofdreams.wordpress.com/2010/02/28/gtk-combobox-oraz-gtk-comboboxentry-czyli-listy-rozwijane/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 11:24:45 +0000</pubDate>
		<dc:creator>middleofdreams</dc:creator>
				<category><![CDATA[Techblog]]></category>
		<category><![CDATA[combobox]]></category>
		<category><![CDATA[comboboxentry]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[pygtk]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://middleofdreams.wordpress.com/?p=220</guid>
		<description><![CDATA[Listy rozwijane działają na podobnej zasadzie co zwykłe listy: jest widget obsługujący wyświetlanie oraz model przechowujący wartości. Oczywiście nie można zapomnieć o rendererze by elementy były wyświetlane prawidłowo (w zależności czy to tekst, obrazki czy coś innego). Okazuje się to odrobinę problematyczne, gdyż gdy trzeba stworzyć prostą listę rozwijaną, należy parę linijek kodu wklepać. Najprostszy [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=middleofdreams.wordpress.com&amp;blog=9872554&amp;post=220&amp;subd=middleofdreams&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Listy rozwijane działają na podobnej zasadzie co zwykłe listy: jest widget obsługujący wyświetlanie oraz model przechowujący wartości. Oczywiście nie można zapomnieć o rendererze by elementy były wyświetlane prawidłowo (w zależności czy to tekst, obrazki czy coś innego). Okazuje się to odrobinę problematyczne, gdyż gdy trzeba stworzyć prostą listę rozwijaną, należy parę linijek kodu wklepać. Najprostszy przykład jednokolumnowej listy:<span id="more-220"></span><br />
<code><br />
combobox=self.wTree.get_widget("combobox1")<br />
model=gtk.ListStore(str)<br />
combobox.set_model(model)<br />
cell = gtk.CellRendererText()<br />
combobox.pack_start(cell, True)<br />
combobox.add_attribute(cell, 'text', 0)<br />
</code><br />
Dopiero teraz możemy dodawać wartości do listy:<br />
<code><br />
model.append(["jakas wartosc"])<br />
model.append(["inna wartosc"])<br />
etc<br />
</code><br />
Jest to dość dużo kodu jak na prostą jednokolumnową listę. Okazuje się, że do najprostszych list, łatwiej zostawić wolne miejsce w Glade i stworzyć combobox w kodzie:<br />
<code><br />
jakiskontener=self.wTree.get_widget("hbox1")<br />
combo=gtk.combo_box_new_text()<br />
jakiskontener.pack_start("combo")<br />
combo.show_all()<br />
</code><br />
I już. Należy jednak zaznaczyć, że wartościami w listach tworzonych tą funkcją manipuluje się za pomocą następujących funkcji:<br />
<code><br />
combo.append_text(tekst),<br />
combo.insert_text(pozycja,tekst),<br />
combo.prepend_text(text),<br />
combo.remove_text(pozycja).<br />
</code><br />
<em> Uwaga! W tym przypadku funkcje wykonywane są na widgecie (combobox), a nie modelu!</em><br />
Powyższy przykład wydaje się bardziej przejrzysty niż ten pierwszy. Jednak gdy w naszej liście chcemy mieć więcej niż 1 kolumnę musimy listę utworzyć tradycyjnym sposobem. Przykład:<br />
<code><br />
combobox=self.wTree.get_widget("combobox1")<br />
model=gtk.ListStore(gtk.gdk.Pixbuf,str,str) #jedna kolumna obrazkowa i 2 tekstowe<br />
combobox.set_model(model)<br />
cell = gtk.CellRendererPixbuf() #renderer musi wiedzieć co wyświetlać<br />
combobox.pack_start(cell,expand=False) #expand=False gdy nie chcemy, żeby kolumna była rozszerzalna<br />
combobox.add_attribute(cell, ' pixbuf', 0) #ostatni argument (0) oznacza wyświetlaną kolumne z modelu<br />
cell = gtk.CellRendererText()#kolejny renderer - tym razem dla tekstu<br />
combobox.pack_start(cell, True)<br />
combobox.add_attribute(cell, ' text', 1)<br />
cell = gtk.CellRendererText()#mimo, że znowu tekst, renderer musi być wywołany ponownie<br />
combobox.pack_start(cell, True)<br />
combobox.add_attribute(cell, ' text', 2)<br />
</code><br />
Teraz można dopisywać wartości:<br />
<code><br />
model.append([gtk.gdk.pixbuf_new_from_file("/sciezka/do/pliku.jpg"),"jakis tekst","inny tekst"])<br />
</code>Viola!</p>
<h2>Pobieranie wybranej wartości.</h2>
<p>Pobieranie wartości z aktualnie wybranego rzędu wcale nie jest takie trudne:<br />
<code><br />
combobox=self.wTree.get_widget("combobox1") #przypisujemy widget z glade<br />
model=combobox.get_model() #pobieramy wczesniej utworzony model<br />
index=combobox.get_active() #pobieramy numer obecnie wybranego rzędu<br />
print model[index][0] #wyswietlamy wartość pierwszej kolumny.<br />
print model[index][1] # i wyswietlamy wartość drugiej kolumny<br />
</code> I tyle. Proste, nie?</p>
<h2>Wejście z opcjami.</h2>
<p>ComboBoxEntry generalnie jest dość podobne w budowie do zwykłego ComboBox. Należy jednak pamiętać, że trzeba ustalić która kolumna odpowiada za wpisywany tekst (entry). Przykład:<br />
<code><br />
comboentry=self.wTree.get_widget("comboboxentry1")<br />
model=gtk.ListStore(gtk.gdk.Pixbuf,str,str)<br />
comboentry.set_model(model)<br />
cell = gtk.CellRendererPixbuf()<br />
comboentry.pack_start(cell,expand=False)<br />
comboentry.add_attribute(cell, ' pixbuf', 0)<br />
cell = gtk.CellRendererText()<br />
comboentry.pack_start(cell, True)<br />
comboentry.add_attribute(cell, ' text', 1)<br />
cell = gtk.CellRendererText()<br />
comboentry.pack_start(cell, True)<br />
comboentry.add_attribute(cell, ' text', 2)<br />
<strong>comboentry.set_text_column(1)</strong>#ustawiamy drugą kolumnę jako tą do wpisywania.<br />
</code></p>
<p>Jednak pobieranie tekstu z owego wpisu (entry) wygląda troszkę inaczej. Entry jest tutaj upakowane wewnątrz combobox&#8217;a więc należy zastosować taką sztuczkę:<br />
<code><br />
print comboentry.<strong>child</strong>.get_text()<br />
</code><br />
Odwołujemy się tutaj do widgetu potomnego, czyli entry, a nie samego comboboxentry.</p>
<h2>Automatyczne dodawanie wartości do ComboBoxEntry.</h2>
<p>Czasami zachodzi potrzeba automatycznego dodawania elementów do listy. Na przykład przy naciśnięciu klawisza enter. Oczywiście będzie to działać tylko w przypadku jednokolumnowej listy, więc utworzymy ją sobie prostszym sposobem, a następnie dla obiektu potomnego podpinamy sygnał:<br />
<code><br />
comboentry=gtk.combo_box_entry_new_text()<br />
comboentry.child.connect("key-press-event",self.combo_append)<br />
</code> Teraz przy naciśnięciu jakiegokolwiek klawisza w gtk.ComboBoxEntry powinno wywołać naszą funkcję:<br />
<code><br />
def comb_append(self,widget,event):</p>
<p style="padding-left:30px;">if gtk.gdk.keyval_name(event.keyval)=="Return": #jesli wcisniety klawisz to enter</p>
<p style="padding-left:60px;">combo=widget.get_parent()  #pobieramy comboboxentry<br />
combo.append_text(widget.get_text()) #dodajemy wartosc pobraną z entry<br />
widget.set_text("") #czyscimy pole do wpisywania</p>
<p></code><br />
Można jeszcze dodać warunek sprawdzający czy pole nie jest puste (w przeciwnym razie doda się pusty wpis), ale to już każdy powinien potrafić. Mam nadzieje, że wystarczająco wyjaśniłem obsługę i zasadę działania list rozwijanych.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/middleofdreams.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/middleofdreams.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/middleofdreams.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/middleofdreams.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/middleofdreams.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/middleofdreams.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/middleofdreams.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/middleofdreams.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/middleofdreams.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/middleofdreams.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/middleofdreams.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/middleofdreams.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/middleofdreams.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/middleofdreams.wordpress.com/220/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=middleofdreams.wordpress.com&amp;blog=9872554&amp;post=220&amp;subd=middleofdreams&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://middleofdreams.wordpress.com/2010/02/28/gtk-combobox-oraz-gtk-comboboxentry-czyli-listy-rozwijane/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c788d8923f9f4e2bec9285c060080999?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">middleofdreams</media:title>
		</media:content>
	</item>
		<item>
		<title>Sortowanie gtk.TreeView</title>
		<link>http://middleofdreams.wordpress.com/2010/02/06/sortowanie-gtk-treeview/</link>
		<comments>http://middleofdreams.wordpress.com/2010/02/06/sortowanie-gtk-treeview/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 23:30:24 +0000</pubDate>
		<dc:creator>middleofdreams</dc:creator>
				<category><![CDATA[Techblog]]></category>
		<category><![CDATA[liststore]]></category>
		<category><![CDATA[pygtk]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[sortowanie]]></category>
		<category><![CDATA[treeview]]></category>

		<guid isPermaLink="false">http://middleofdreams.wordpress.com/?p=205</guid>
		<description><![CDATA[W GTK dla obiektu TreeView (Lista) posiadamy parę metod sortowania, wszystkie za pomocą gtk.TreeSortable (chociaż można posortować listę nie zdając sobie z tego sprawy, gdyż model przypisany dla TreeView implementuje funkcje TreeSortable). Gdy chcemy użyć wbudowanej metody sortowania wystarczy: model=sometreeview.get_model() #pobieramy model elementu gtk.TreeView model.set_sort_column_id(0,gtk.SORT_ASCENDING) sometreeview to nasz, utworzony wcześniej obiekt gtk.TreeView. Jaki widać używamy [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=middleofdreams.wordpress.com&amp;blog=9872554&amp;post=205&amp;subd=middleofdreams&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>W GTK dla obiektu TreeView (Lista) posiadamy parę metod sortowania, wszystkie za pomocą gtk.TreeSortable (chociaż można posortować listę nie zdając sobie z tego sprawy, gdyż model przypisany dla TreeView implementuje funkcje TreeSortable).</p>
<p>Gdy chcemy użyć wbudowanej metody sortowania wystarczy:<br />
<code><br />
model=sometreeview.get_model()<br />
#pobieramy model elementu gtk.TreeView<br />
model.set_sort_column_id(0,gtk.SORT_ASCENDING)<br />
</code><br />
sometreeview to nasz, utworzony wcześniej obiekt gtk.TreeView.<br />
Jaki widać używamy tu funkcji<span style="font-style:italic;"> set_sort_column_id</span> i przekazujemy do niej 2 argumenty:</p>
<ul>
<li>id kolumny, według której chcemy sortować naszą liste</li>
<li>porządek sortowania &#8211; rosnąco lub malejąco (<span style="font-style:italic;">gtk.SORT_ASCENDING</span> albo <span style="font-style:italic;">gtk.SORT_DESCENDING</span>)</li>
</ul>
<p>Należy zauważyć, że podana metoda jest nieczuła na wielkość znaków.</p>
<p>Jeśli chcemy by użytkownik miał wybór wg której kolumny sortować możemy zmieniać kolumnę sortowania po kliknięciu w nagłówek kolumny:<br />
<code><br />
def on_column_clicked(model,id):</code></p>
<p><code> </code></p>
<p><code></p>
<p style="padding-left:30px;">model.set_sort_column_id(id)</p>
<p></code></p>
<p>i dla każdej kolumny podpiąć jako sygnał:</p>
<p><code>somecolumn1.connect("clicked",on_column_clicked,1)</code></p>
<p>gdzie model to model oznacza kolumnę. Dla kolumn funkcja set_sort_column_id ma tylko jeden argument &#8211; numer kolumny. Jest to spowodowane zamienny porządkiem sortowania (klikniemy raz &#8211; jest rosnąco, klikniemy drugi raz &#8211; jest malejąco). Dla pewności możemy dopisać<br />
<code><br />
sometreeview.set_headers_clickable(True)<br />
</code> gdyż glade nie zawsze poprawnie ustawia tą opcję.</p>
<p><span id="more-205"></span></p>
<h1><span style="font-weight:bold;">Sortowanie czułe na wielkość znaków.</span></h1>
<p>Gdy chcemy by nasze sortowanie było czułe na wielkość znaków samo set_sort_column_id niestety nie wystarczy. Należy stworzyć własną funkcję sortującą:<br />
<code><br />
def my_sort_func(model, iter1, iter2, column):</code></p>
<p><code> </code></p>
<p><code></p>
<p style="padding-left:30px;">data1 = model.get_value(iter1, column)<br />
data2 = model.get_value(iter2, column)<br />
return cmp(data1, data2)</p>
<p></code></p>
<p>Jest to bardzo prosta funkcja, która tylko wartości z podanej kolumny dla dwóch porównywanych wierszy (iter1,iter2)<br />
W przykładzie podano numer kolumny jako zmienną (która jest przekazywana jako parametr funkcji), jednak można ustawić go na stałe ( np. <code><span style="font-style:italic;">data1=model.get_value(iter1,1)</span></code> ).<br />
Gdy metoda sortowania jest już gotowa, musimy podpiąć ją za pomocą:<br />
<code> model=sometreeview.get_model()<br />
model.set_sort_func(1,my_sort_func,1)<br />
</code><br />
Funkcja <span style="font-style:italic;">set_sort_func</span> musi przekazywać conajmniej 2 argumenty:</p>
<ul>
<li>numer kolumny dla której zastosujemy funkcje sortującą</li>
<li>nazwe naszej funkcji sortującej.</li>
</ul>
<p>Dalej możemy przekazywać argumenty naszej funkcji. W typ przypadku jest to również numer kolumny. Należy pamiętać, że trzech pierwszych argumentów (<span style="font-style:italic;">model, iter1, iter2</span>) nie podajemy, gdyż są one przekazywane automatycznie wraz z wywołaniem <span style="font-style:italic;">set_sort_func</span>.</p>
<h1><span style="font-weight:bold;">Sortowanie według 2 lub więcej kolumn na raz.</span></h1>
<p>Czasami musimy posortować listę według dwóch kolumn na raz. Na przykład sortujemy według kolumny nr 1, a gdy wartości w tej kolumnie są takie same, sortujemy według kolumny nr 3. W tym celu musimy zmodyfikować naszą metodę sortowania. Na początek przykład gdzie numery kolumn ustawione są statycznie:<br />
<code><br />
def my_sort_func(model, iter1, iter2):</code></p>
<p><code> </code></p>
<p><code></p>
<p style="padding-left:30px;">data1 = model.get_value(iter1,1)<br />
data2 = model.get_value(iter2,1)<br />
if data1==data2:</p>
<p></code></p>
<p style="padding-left:50px;"><code>#jesli są te same wartości<br />
data1 = model.get_value(iter1,3)<br />
data2 = model.get_value(iter2,3)<br />
#pobieramy wartości z kolumny 3<br />
#i sortujemy:</code></p>
<p><code> </code></p>
<p style="padding-left:30px;"><code> return cmp(data1, data2)</code></p>
<p>Jak widać jest to dość intuicyjne. A co jeśli chcemy by kolumnę nr 3 sortował w odwrotnym porządku? Wystarczy, że odwrotnie przypiszemy zmienne data1 i data2:<br />
<code><br />
def my_sort_func(model, iter1, iter2):</code></p>
<p><code> </code></p>
<p><code></p>
<p style="padding-left:30px;">data1 = model.get_value(iter1,1)<br />
data2 = model.get_value(iter2,1)<br />
if data1==data2:</p>
<p style="padding-left:50px;">#jesli są te same wartości<br />
data1 = model.get_value(iter2,3) #data1 to iter2<br />
data2 = model.get_value(iter1,3) #a data2 to iter1<br />
#pobieramy wartości z kolumny 3<br />
#i sortujemy w odwrotnej kolejności:</p>
<p></code></p>
<p style="padding-left:30px;"><code> return cmp(data1, data2)</code></p>
<p><code><br />
</code>I tyle. Teraz możemy troszkę zmodyfikować naszą funkcję. Będziemy sortować wg trzech kolumn, których numery będziemy przekazywać jako parametr. Dodatkowo wszystkie wartości będą nieczułe na wielkość znaków.<br />
<code><br />
def my_sort_func(model, iter1, iter2, cols):</code></p>
<p><code> </code></p>
<p><code></p>
<p style="padding-left:30px;">data1 = model.get_value(iter1,cols[0]).lower()<br />
data2 = model.get_value(iter2,cols[0]).lower()<br />
if data1==data2:</p>
<p style="padding-left:50px;">#jesli są te same wartości<br />
data1 = model.get_value(iter1,cols[1]).lower()<br />
data2 = model.get_value(iter2,cols[1]).lower()<br />
if data1==data2:</p>
<p style="padding-left:70px;">#jesli są te same wartości<br />
data1 = model.get_value(iter1,cols[2]).lower()<br />
data2 = model.get_value(iter2,cols[2]).lower()</p>
<p></code></p>
<p style="padding-left:30px;"><code> return cmp(data1, data2)</code></p>
<p>By sortowanie było nieczułe na wielkość liter użyjemy np funkcji lower(), która na potrzeby sortowania zamieni wszystkie wartości na małe znaki. Uwaga! Przy podaniu kolumny typu int (liczba) funkcja lower() zwróci nam błąd.<br />
Podpinamy to na przykład za pomocą <code>column1.set_sort_func(1,my_sort_func,[1,2,0])</code>.W tym wypadku mamy kolejność sortowania:</p>
<ol>
<li>według 1 kolumny</li>
<li>według 2 kolumny</li>
<li>według 0 kolumny.</li>
</ol>
<p>Dlaczego kolumny podajemy jako listę? Gdyż set_sort_func przewiduje tylko jeden argument dodatkowy, a jeśli będzie nim lista, możemy przekazywać dowolną liczbę zmiennych.</p>
<h1><span style="font-weight:bold;">Przykład</span></h1>
<p>Na koniec prosty przykład: lista z czterema kolumnami, dla których (poza pierwszą) stosujemy potrójne sortowanie.<br />
Efekt jest taki:</p>
<p><a href="http://middleofdreams.files.wordpress.com/2010/02/lista.png"><img class="aligncenter size-medium wp-image-209" title="lista" src="http://middleofdreams.files.wordpress.com/2010/02/lista.png?w=300&#038;h=185" alt="" width="300" height="185" /></a></p>
<p>Cały kod programu <a href="http://wklej.org/id/274949/">jest dostępny tutaj</a>, natomiast <a href="http://wklej.org/id/274950/">plik glade tutaj</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/middleofdreams.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/middleofdreams.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/middleofdreams.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/middleofdreams.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/middleofdreams.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/middleofdreams.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/middleofdreams.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/middleofdreams.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/middleofdreams.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/middleofdreams.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/middleofdreams.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/middleofdreams.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/middleofdreams.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/middleofdreams.wordpress.com/205/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=middleofdreams.wordpress.com&amp;blog=9872554&amp;post=205&amp;subd=middleofdreams&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://middleofdreams.wordpress.com/2010/02/06/sortowanie-gtk-treeview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c788d8923f9f4e2bec9285c060080999?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">middleofdreams</media:title>
		</media:content>

		<media:content url="http://middleofdreams.files.wordpress.com/2010/02/lista.png?w=300" medium="image">
			<media:title type="html">lista</media:title>
		</media:content>
	</item>
		<item>
		<title>Przejście na KDE</title>
		<link>http://middleofdreams.wordpress.com/2010/01/04/przejscie-na-kde/</link>
		<comments>http://middleofdreams.wordpress.com/2010/01/04/przejscie-na-kde/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 18:58:44 +0000</pubDate>
		<dc:creator>middleofdreams</dc:creator>
				<category><![CDATA[Techblog]]></category>
		<category><![CDATA[DE]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[qt]]></category>

		<guid isPermaLink="false">http://middleofdreams.wordpress.com/?p=200</guid>
		<description><![CDATA[Ostatnio przesiadłem się na środowisko KDE (w wersji 4.4 beta2). Co mnie do tego skłoniło? Rosnąca z każdym wydaniem stabilność tego środowiska Funkcjonalność coraz bardziej zbliżona do tej z czasów 3.5 Ciekawe rozwiązania Świeży i oryginalny wygląd Fakt, że lubię zmiany pod tym względem, poza tym w KDE ciągle się coś zmienia. Jednym z ciekawych [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=middleofdreams.wordpress.com&amp;blog=9872554&amp;post=200&amp;subd=middleofdreams&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ostatnio przesiadłem się na środowisko KDE (w wersji 4.4 beta2). Co mnie do tego skłoniło?</p>
<ul>
<li>Rosnąca z każdym wydaniem stabilność tego środowiska</li>
<li>Funkcjonalność coraz bardziej zbliżona do tej z czasów 3.5</li>
<li>Ciekawe rozwiązania</li>
<li>Świeży i oryginalny wygląd</li>
<li>Fakt, że lubię zmiany pod tym względem, poza tym w KDE ciągle się coś zmienia.</li>
</ul>
<div id="attachment_201" class="wp-caption aligncenter" style="width: 310px"><a href="http://middleofdreams.files.wordpress.com/2010/01/kde10.png"><img class="size-medium wp-image-201" title="kde10" src="http://middleofdreams.files.wordpress.com/2010/01/kde10.png?w=300&#038;h=187" alt="" width="300" height="187" /></a><p class="wp-caption-text">Screenshot 04.01.10</p></div>
<p>Jednym z ciekawych rozwiązań jakie najbardziej podobają mi się w KDE to powiadomienia z tacki systemowej. Wszystkie powiadomienia ładnie się wysuwają i chowają do tacki, a jak ktoś nie zdąży przeczytać to można je spowrotem wysunąć. Dolphin &#8211; menedżer plików też wygląda zachęcająco i dość dobrze działa na zdalnych katalogach (przez ssh choćby &#8211; na protokole fish). Także niektóre applety plazmy są ciekawe &#8211; widok katalogu &#8211; pokazany na screenie &#8211; pozwala na szybki podgląd i dostęp do plików bez otwierania dolphina.</p>
<p>Oczywiście nie jest to środowisko bez błędów. Nie podoba mi się na przykład zachowywanie ikon aplikacji GTK w tacce. Na zrzucie również widać rozjechaną ikone Pidgina&#8230; Kolejną rzeczą jest brak niektórych aplikacji na QT. Dla mnie nie ma póki co komunikatora dorównującego Pidginowi (czekam na Kadu z obsługą XMPP). Dobrego klienta mpd też mam problem znaleźć (korzystam z qmpdclient, ale czasami nie wiedzieć czemu&#8230; po prostu się wyłącza), których to pod GTK mamy całe mnóstwo: ario, sonata, gmpc. Inna rzecz&#8230; KDE jest ciągle w fazie bardzo intensywnego rozwoju &#8211; ma to swoje zalety, ale często dodawanie nowych ficzerów przedkłada się nad łatanie dziur i poprawianie tego co już jest.</p>
<p>Jak się dalej potoczy rozwój KDE &#8211; zobaczymy. Póki co używam i jestem zadowolony.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/middleofdreams.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/middleofdreams.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/middleofdreams.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/middleofdreams.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/middleofdreams.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/middleofdreams.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/middleofdreams.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/middleofdreams.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/middleofdreams.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/middleofdreams.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/middleofdreams.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/middleofdreams.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/middleofdreams.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/middleofdreams.wordpress.com/200/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=middleofdreams.wordpress.com&amp;blog=9872554&amp;post=200&amp;subd=middleofdreams&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://middleofdreams.wordpress.com/2010/01/04/przejscie-na-kde/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c788d8923f9f4e2bec9285c060080999?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">middleofdreams</media:title>
		</media:content>

		<media:content url="http://middleofdreams.files.wordpress.com/2010/01/kde10.png?w=300" medium="image">
			<media:title type="html">kde10</media:title>
		</media:content>
	</item>
	</channel>
</rss>
