<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4238322822933175461</id><updated>2011-11-27T23:43:00.802Z</updated><category term='bugfix'/><category term='pyinotify'/><category term='codefreeze'/><category term='phonon'/><category term='dialog'/><category term='tango'/><category term='javascript'/><category term='icons'/><category term='pylint'/><category term='QtSql'/><category term='bugs'/><category term='gentoo'/><category term='lucid'/><category term='tag'/><category term='mutagen'/><category term='youtube'/><category term='funtoo'/><category term='pyside'/><category term='user-interface'/><category term='roadmap'/><category term='audio'/><category term='trolltech'/><category term='pep8'/><category term='python'/><category term='issues'/><category term='urllib'/><category term='distutils'/><category term='pyqt4'/><category term='update'/><category term='screenshots'/><category term='gstreamer'/><category term='future'/><category term='gereqi'/><category term='init'/><category term='setuptools'/><category term='mysql'/><category term='refactor'/><category term='sorting'/><category term='deb'/><category term='ideas'/><category term='reddit'/><category term='widgets'/><category term='tagpy'/><category term='pyqt'/><category term='feature'/><category term='plan'/><category term='refatoring'/><category term='ipod'/><category term='aac'/><category term='release'/><category term='ubuntu'/><category term='amarok'/><category term='freedesktop'/><title type='text'>Gereqi Dev-Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-3300807666505219404</id><published>2011-03-05T13:40:00.000Z</published><updated>2011-03-05T13:40:01.094Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='pyside'/><category scheme='http://www.blogger.com/atom/ns#' term='pyqt'/><title type='text'>Moving to PySide</title><content type='html'>Gereqi has been slowly moving to PySide. It has been a bit difficult because PyQt is not that Pythonic so there is a lot to change.&lt;br /&gt;&lt;br /&gt;With &lt;a href="http://www.pyside.org/2011/03/pyside-python-for-qt-1-0-released/"&gt;PySide now at its first stable&lt;/a&gt; release it seems a good point to drop PyQt completely and stop messing around with C++ idioms in a Python program.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-3300807666505219404?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/3300807666505219404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2011/03/moving-to-pyside.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/3300807666505219404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/3300807666505219404'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2011/03/moving-to-pyside.html' title='Moving to PySide'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-5271900561625644344</id><published>2011-02-06T13:39:00.000Z</published><updated>2011-02-06T13:39:31.101Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='amarok'/><category scheme='http://www.blogger.com/atom/ns#' term='icons'/><category scheme='http://www.blogger.com/atom/ns#' term='freedesktop'/><category scheme='http://www.blogger.com/atom/ns#' term='tango'/><title type='text'>Icons</title><content type='html'>I have been slowly plodding along doing some small enhancements here and there but there has been just thing that I have not been able to decide on; icons.&lt;br /&gt;&lt;br /&gt;Using the user's theme-icons is very hit and miss because not all themes have the same type of icons. Additionally, the &lt;a href="http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html"&gt;freedesktop icon-naming standard&lt;/a&gt; are rather limiting for multimedia i.e. no volume icon.&lt;br /&gt;&lt;br /&gt;Using the Amarok-1.4 icons, where they are available, just does not seem to look "right" as made evident by the image below.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://farm6.static.flickr.com/5092/5388787406_55cc8403fa_b_d.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://farm6.static.flickr.com/5092/5388787406_55cc8403fa_b_d.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;What I will go forward with still is not ideal but shall be this:&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;User's theme-icons with the Tango iconset filling in where possible (Default).&lt;/li&gt;&lt;li&gt;Amarok-1.4 icons as an option, perhaps.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-5271900561625644344?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/5271900561625644344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2011/02/icons.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/5271900561625644344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/5271900561625644344'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2011/02/icons.html' title='Icons'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-4028058563244558580</id><published>2011-01-01T13:14:00.000Z</published><updated>2011-01-01T13:14:00.685Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='update'/><category scheme='http://www.blogger.com/atom/ns#' term='gereqi'/><category scheme='http://www.blogger.com/atom/ns#' term='ipod'/><title type='text'>Update</title><content type='html'>It's been a while since the last update but things keep ticking on. I haven't had any coding sprints but I have been adding features and tidying up various things.&lt;br /&gt;&lt;br /&gt;In the latest &lt;a href="https://github.com/regomodo/Gereqi/commit/e1d5ba602a192ffc2499b76569d9fa3870df9d4d"&gt;commit&lt;/a&gt;&amp;nbsp;the new features/changes since ver-0.4.2 are:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Basic iPod support - very experimental (only tried with 120GB Classic), read-only&lt;/li&gt;&lt;li&gt;Can selectively hide/show columns of the track-table&lt;/li&gt;&lt;li&gt;Track-types in the filebrowser is not hardcoded to .m4a, .mp3, etc. Now shows formats based on what libraries are available.&lt;/li&gt;&lt;li&gt;The seekbar can be clicked on to advance it instead of grabbing the handle.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;There's been a lot happening underneath such as cleaning up the database-backend. Also, playing around with a menu for right-clicking a track in the table. The options available match Amarok-1.4 but do nothing for now.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-4028058563244558580?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/4028058563244558580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2011/01/update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/4028058563244558580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/4028058563244558580'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2011/01/update.html' title='Update'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-2205437372608875382</id><published>2010-09-26T11:15:00.000+01:00</published><updated>2010-09-26T11:15:55.257+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='roadmap'/><title type='text'>Scrathing Itches</title><content type='html'>&lt;a href="http://gereqi-dev.blogspot.com/2010/08/roadmap-for-050.html"&gt;Previously&lt;/a&gt; I outlined the roadmap for Gereqi. I've been giving it thought and the feature's I need are more likely to get done i'm narrowing the roadmap for 0.5 to a few things.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Mass Storage support (i.e. Android phone)&lt;/li&gt;&lt;li&gt;iPod support&lt;/li&gt;&lt;li&gt;Transcoding, perhaps with ffmpeg.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;There are abnormalities in the program but I can live with them, for now.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-2205437372608875382?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/2205437372608875382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2010/09/scrathing-itches.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/2205437372608875382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/2205437372608875382'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2010/09/scrathing-itches.html' title='Scrathing Itches'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-7876998532441121081</id><published>2010-09-11T12:33:00.000+01:00</published><updated>2010-09-11T12:33:55.727+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='bugfix'/><title type='text'>Gereqi 0.4.2 - more fixes</title><content type='html'>Version 0.4.2 brings minor but 1 very important fix. Previously, any track that had a filename encoding other than Utf8 would not play. This has been fixed (for at least latin1 encoded filenames) in 0.4.2&lt;br /&gt;&lt;br /&gt;Here are a couple other fixes:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Stopped using sqlite for the applications settings. Now use a .ini-like file at "~/.gereqi/config"&lt;/li&gt;&lt;li&gt;The "About" dialog is no longer the Qt boilerplate dialog.&lt;/li&gt;&lt;li&gt;If the option to save playlist on close was enabled and mysql was being used, only 1 track would be saved. Now fixed.&lt;/li&gt;&lt;li&gt;The configuration dialog was incorrectly formatted, fixed.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, Geneva, sans-serif; font-size: x-large; line-height: 33px;"&gt;Downloads&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, Geneva, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;For Ubuntu download: &amp;nbsp;&lt;/span&gt;&lt;a href="http://code.google.com/p/gereqi/downloads/detail?name=gereqi_0.4.2-1_all.deb" style="color: #d52932; text-decoration: none;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;gereqi_0.4.2-1_all.deb&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;For Fedora download:&amp;nbsp;&lt;/span&gt;&lt;a href="http://code.google.com/p/gereqi/downloads/detail?name=gereqi-0.4.2-1.noarch.rpm" style="color: #d52932; text-decoration: none;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;gereqi-0.4.2-1.noarch.rpm&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;For everyone else:&amp;nbsp;&lt;/span&gt;&lt;a href="http://code.google.com/p/gereqi/downloads/detail?name=gereqi-0.4.2.tar.gz" style="color: #d52932; text-decoration: none;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;gereqi-0.4.2.tar.gz&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-7876998532441121081?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/7876998532441121081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2010/09/gereqi-042-more-fixes.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/7876998532441121081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/7876998532441121081'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2010/09/gereqi-042-more-fixes.html' title='Gereqi 0.4.2 - more fixes'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-8558220542862212974</id><published>2010-08-31T20:44:00.001+01:00</published><updated>2010-09-02T16:44:16.728+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='bugfix'/><title type='text'>Gereqi 0.4.1 - bugfixes</title><content type='html'>Thanks to a few helpful people bugs were unsurprisingly found in the 0.4.0 release. The bugs that were found and quashed were:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/gereqi/issues/detail?id=13&amp;amp;can=7"&gt;Theme / color scheme of playlist colors after sort&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/gereqi/issues/detail?id=16&amp;amp;can=7"&gt;Configuration window fixed size causes awkward filesystem browsing&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/gereqi/issues/detail?id=17&amp;amp;can=7"&gt;Tracks with no title-tag are reported as "unknown"&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/gereqi/issues/detail?id=19&amp;amp;can=7"&gt;.deb will not work in non-i386&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;It is recommended to upgrade as your system colour-theme is used for the playlist and vastly improves the appearance of Gereqi in dark-theme setups&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;Old and Ugly&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_P9dAsDlNu1A/TH_GRzv2jXI/AAAAAAAAAeo/yr6Xa6ndfOo/s1600/gereqi-theme-issue.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="258" src="http://2.bp.blogspot.com/_P9dAsDlNu1A/TH_GRzv2jXI/AAAAAAAAAeo/yr6Xa6ndfOo/s400/gereqi-theme-issue.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;New and better&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://farm5.static.flickr.com/4142/4932841570_1fe7ae5c54_d.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="286" src="http://farm5.static.flickr.com/4142/4932841570_1fe7ae5c54_d.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Downloads&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;For Ubuntu download: &amp;nbsp;&lt;a href="http://code.google.com/p/gereqi/downloads/detail?name=gereqi_0.4.1-1_all.deb"&gt;gereqi_0.4.1-1_all.deb &lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;For Fedora download: &lt;a href="http://code.google.com/p/gereqi/downloads/detail?name=gereqi-0.4.1-1.noarch.rpm"&gt;gereqi-0.4.1-1.noarch.rpm&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;For everyone else: &lt;a href="http://code.google.com/p/gereqi/downloads/detail?name=gereqi-0.4.1.tar.gz"&gt;gereqi-0.4.1.tar.gz&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-8558220542862212974?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/8558220542862212974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2010/08/gereqi-041-bugfixes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/8558220542862212974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/8558220542862212974'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2010/08/gereqi-041-bugfixes.html' title='Gereqi 0.4.1 - bugfixes'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_P9dAsDlNu1A/TH_GRzv2jXI/AAAAAAAAAeo/yr6Xa6ndfOo/s72-c/gereqi-theme-issue.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-6587260444383877631</id><published>2010-08-30T01:20:00.001+01:00</published><updated>2010-08-30T01:21:09.943+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='roadmap'/><category scheme='http://www.blogger.com/atom/ns#' term='issues'/><title type='text'>Roadmap for 0.5.0</title><content type='html'>I have been thinking on where Gereqi should go from here. Feature-wise Gereqi isn't that great but I am finding niggly issues here and there. These issues are what I would like to complete for the 0.5.0 release and if too much time hasn't passed I might have a go at some features.&lt;br /&gt;&lt;br /&gt;The list of niggly issues:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Drag and drop - from the library/ filesystem-browser to the playlist&lt;/li&gt;&lt;li&gt;The playlist table is very rigid. You cannot manually sort your tracks (say just dumping the tracks to the bottom of the list) or dragging tracks around the table.&lt;/li&gt;&lt;li&gt;The progressbar &lt;a href="http://code.google.com/p/gereqi/issues/detail?id=7"&gt;does not allow 'click-to-position'  interactions&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;The progressbar  is in the wrong location. It should be in the status-bar area.&lt;/li&gt;&lt;li&gt;The album-art retrieval is, although more efficient, less capable (the albumart.org searching api is pretty limited)&lt;/li&gt;&lt;li&gt;No capability to remove tracks (from the DB) that have been removed from library directories when the application is not running.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;If that lot doesn't take too long the list of features that may get a look at ( most easiest to do first):&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;.m3u playlist read/write&lt;/li&gt;&lt;li&gt;mass-storage device (Android phones, etc) read support&lt;/li&gt;&lt;li&gt;mtp device read support&lt;/li&gt;&lt;li&gt;ipod read support&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;In summary: issues and usability comes first. Features come last.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-6587260444383877631?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/6587260444383877631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2010/08/roadmap-for-050.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/6587260444383877631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/6587260444383877631'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2010/08/roadmap-for-050.html' title='Roadmap for 0.5.0'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-3778024162710400824</id><published>2010-08-25T21:19:00.005+01:00</published><updated>2010-08-30T20:35:50.327+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>Gereqi 0.4.0, Finally</title><content type='html'>After a bit of a hiatus I have fixed several bugs that were found in the release candidates. As I can not detect &lt;a href="http://code.google.com/p/gereqi/issues/list"&gt;any major show stoppers&lt;/a&gt; releasing 0.4.0 seems suitable.&lt;br /&gt;&lt;br /&gt;This release not only provides what was &lt;a href="http://gereqi-dev.blogspot.com/2010/07/gereqi-040-release-candidate-1.html"&gt;mentioned previously&lt;/a&gt; but also provides proper packages.&lt;br /&gt;&lt;br /&gt;Ubuntu &amp;gt;= 9.10  :  &lt;a href="http://code.google.com/p/gereqi/downloads/detail?name=gereqi_0.4.0-2_all.deb"&gt;gereqi_0.4.0-2.deb&lt;/a&gt;&lt;br /&gt;Fedora = 13 :  &lt;a href="http://code.google.com/p/gereqi/downloads/detail?name=gereqi-0.4.0-1.noarch.rpm"&gt;gereqi-0.4.0-1.noarch.rpm&lt;/a&gt;&lt;br /&gt;Others  :  &lt;a href="http://code.google.com/p/gereqi/downloads/detail?name=gereqi-0.4.0.tar.gz"&gt;gereqi-0.4.0.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you find any bugs or queries contact me in the comments or via e-mail.&lt;br /&gt;Also, check out the &lt;a href="http://code.google.com/p/gereqi/wiki/FAQ"&gt;FAQ&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-3778024162710400824?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/3778024162710400824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2010/08/gereqi-040-finally.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/3778024162710400824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/3778024162710400824'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2010/08/gereqi-040-finally.html' title='Gereqi 0.4.0, Finally'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-1484186023365884870</id><published>2010-07-25T11:19:00.005+01:00</published><updated>2010-07-25T12:10:18.083+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>Gereqi 0.4.0 Release Candidate 1</title><content type='html'>Finally! It's been a long time coming and has taken me many hours to get to a point in that I am satisfied for others to try. Strangely enough the only part I didn't enjoy was trying to create working  rpm and deb packages.&lt;br /&gt;&lt;br /&gt;There has been a lot of change since version 0.3.9 so here's a list:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sort your media collection alphabetically by Album instead of just Artist,&lt;/li&gt;&lt;li&gt;The timed collection search has been fixed,&lt;/li&gt;&lt;li&gt;Having multiple directories (recursive or not) as the source for the media collection database is possible,&lt;/li&gt;&lt;li&gt;Watching the media collection directories for changes and automatically updating the database is an option made possible by pyinotify,&lt;/li&gt;&lt;li&gt;The sqlite backend has been massively sped up&lt;/li&gt;&lt;li&gt;Mysql is an option for the database. No prevision to create the database though, that has to be done manually by the user,&lt;/li&gt;&lt;li&gt;The album covers are retrieved from albumart.org and stored locally. This method is a lot quicker and efficient but has fewer results than the old google+amazon method,&lt;/li&gt;&lt;li&gt;The random mode has been un-dumbed. Previously the random mode was very random and allowed you to play the same song you just heard. Now the random mode will not allow you to hear a song previously played until all in the playlist are finished.&lt;/li&gt;&lt;li&gt;The context browser has been used a bit more. Shows some relevant detail but doesn't allow interaction yet.&lt;/li&gt;&lt;li&gt;The system-tray icon is now an option.&lt;/li&gt;&lt;li&gt;Audio-cd playback now appears to work flawlessly. I didn't have to do anything, it just appears most distros have updated their gstreamer packages.&lt;/li&gt;&lt;li&gt;Addition of many tracks, e.g. all tracks by an artist in your database, has been massively sped up. Previously the program would get the track metadata by looking at each file in the filesystem. That metadata is now stored in the database.&lt;/li&gt;&lt;li&gt;The playlist saving is more robust&lt;/li&gt;&lt;li&gt;Reloading the last playlist on startup is an option&lt;/li&gt;&lt;li&gt;A working "settings" page&lt;/li&gt;&lt;li&gt;Sorting tracks by track number in the playlist is no longer dumb; tracks are sorted by track &amp;amp; album.&lt;/li&gt;&lt;li&gt;A lot of user interface features have been removed as they were not implemented. Previously I left them in to show my intention of what I aimed to do. In reality it just looked messy and gave an unfinished feel to the program.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;b&gt;Installation&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;To give it a try get the installers or packages from the &lt;a href="http://code.google.com/p/gereqi/downloads/list"&gt;google-code page&lt;/a&gt;. There may be a few caveats on how to install the programme for your distribution. Please leave any issues you have here or at the &lt;a href="http://code.google.com/p/gereqi/issues/list"&gt;google-code issues page&lt;/a&gt;. If you think you know how to package .rpms or .debs I'd love to hear as I really could do with help there.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;b&gt;Screenshots&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;To not make this post completely dry here are a couple screenshots:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.flickr.com/photos/jonnobleuk/4826013105/" title="Screenshot-3.png by jonno85uk, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4117/4826013105_1f5ffef9de.jpg" width="500" height="313" alt="Screenshot-3.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/jonnobleuk/4826013371/" title="Screenshot-2.png by jonno85uk, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4134/4826013371_9b7e38fb6b.jpg" width="500" height="313" alt="Screenshot-2.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/jonnobleuk/4825920105/" title="Screenshot-4.png by jonno85uk, on Flickr"&gt;&lt;img alt="Screenshot-4.png" height="500" src="http://farm5.static.flickr.com/4120/4825920105_abbe6cf4b7.jpg" width="378" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-1484186023365884870?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/1484186023365884870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2010/07/gereqi-040-release-candidate-1.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/1484186023365884870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/1484186023365884870'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2010/07/gereqi-040-release-candidate-1.html' title='Gereqi 0.4.0 Release Candidate 1'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm5.static.flickr.com/4117/4826013105_1f5ffef9de_t.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-6350649800261006830</id><published>2010-07-24T17:56:00.000+01:00</published><updated>2010-07-24T17:56:36.830+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='codefreeze'/><category scheme='http://www.blogger.com/atom/ns#' term='refatoring'/><title type='text'>Gereqi version 0.4.0 Code Freeze</title><content type='html'>Things are finally going smoothly for the development of this release. I had several features to complete before getting to this point and now I am 95% happy to leave the application alone and fix bugs.&lt;br /&gt;&lt;br /&gt;There remains a stray 5% which is due to my developing habit of refactoring. Finding new methods of doing things and trying to implement them is fun. Bug fixing isn't. The 5% is inserting a small bit of javascript into a html template to save a lot of faff elsewhere in the program. It's not necessary as it isn't fixing a bug that isn't there, just looks nicer.&lt;br /&gt;&lt;br /&gt;Hopefully, by the end of the day a release-candidate should be out for testing by the general public. Here's hoping.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-6350649800261006830?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/6350649800261006830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2010/07/gereqi-version-040-code-freeze.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/6350649800261006830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/6350649800261006830'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2010/07/gereqi-version-040-code-freeze.html' title='Gereqi version 0.4.0 Code Freeze'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-5998509568878725389</id><published>2010-07-07T11:08:00.003+01:00</published><updated>2010-07-08T08:54:55.826+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='widgets'/><category scheme='http://www.blogger.com/atom/ns#' term='update'/><title type='text'>Useless Widgets</title><content type='html'>For a long time Gereqi has been looking very alpha; widgets that are disabled or do nothing are the main cause.  I've decided that instead of leaving useless widgets in to show future intentions i'm just going to leave them out.&lt;br /&gt;&lt;br /&gt;The git tree now reflects this change and from now on if something does nothing it shouldn't be there, so let me know either by creating an issue over at the googlecode site or by dropping me a line.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-5998509568878725389?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/5998509568878725389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2010/07/useless-widgets.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/5998509568878725389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/5998509568878725389'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2010/07/useless-widgets.html' title='Useless Widgets'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-403198727016564585</id><published>2010-06-28T23:12:00.003+01:00</published><updated>2010-06-28T23:21:21.747+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='QtSql'/><category scheme='http://www.blogger.com/atom/ns#' term='pyqt'/><title type='text'>Gereqi 0.4.0 Setbacks</title><content type='html'>Things are not going to plan. After the last update it looked like everything was shaping up for release not soon afterwards. In the process of testing the Mysql+sqlite database backends all hell broke loose, mainly due to Unicode issues in Python I have which appear to be near impossible to get around. What worked with the sqlite backend didn't work with the Mysql backend.&lt;br /&gt;&lt;br /&gt;To try and solve this issue I am doing what I was supposed to have done a long time ago and forgot, namely using PyQt's QtSql module that has done what I've done so far and a lot better and more complete. In the process of moving everything to this new module a lot of other code has to change elsewhere which is a pain as a lot of it will have been working fine. It has to be done for my future sanity and continuing development of Gereqi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-403198727016564585?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/403198727016564585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2010/06/gereqi-040-setbacks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/403198727016564585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/403198727016564585'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2010/06/gereqi-040-setbacks.html' title='Gereqi 0.4.0 Setbacks'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-8542882135965027713</id><published>2010-06-17T20:47:00.002+01:00</published><updated>2010-06-18T20:45:56.585+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='update'/><category scheme='http://www.blogger.com/atom/ns#' term='pyinotify'/><title type='text'>Gereqi-0.4.0 Development</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Since I described what I expected to &lt;/span&gt;&lt;a href="http://gereqi-dev.blogspot.com/2010/04/gereqi-040-roadmap.html"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;get done for version-0.4.0&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt; a lot has been happening. No " just code refactoring". No faffing. Just work. Apart from Podcast support and a complete, working UI everything has been met and a whole lot more. &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;The list of features and improvements made so far are:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://trac.dbzteam.org/pyinotify"&gt;pyinotify&lt;/a&gt; support for your collection folders. This includes multiple includes and excludes and specifies the option to perform a recursive watch. By using this package files are automatically added and removed from the database when the user adds and removes files from their watched directories,&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;MYSQL support. Switch between SQLITE and MYSQL on the fly. Early testing shows MYSQL appears to be massively quicker than SQLITE(when not using the "PRAGMA synchronous = OFF" option),&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;A settings dialog. It's not feature complete but it's definitely a start. Learning how to use modal dialogs has been a huge gain for this project,&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Webkit widget for the information page. The previous method of displaying information was too rigid and hopefully this new method should allow easier modifications and visual improvements. Plus anybody who knows html + css (I barely do) should be able to help out here,&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Flac block fixing is not done automatically. Previously Flac files which had multiple comment blocks were automatically fixed. Now, for each file, the user is prompted whether to fix the issue,&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;System tray icon is an option instead of always being on,&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Option to rebuild the database from scratch.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Displaying the collection by Albums or Artists&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Chose a cleaner section of the wikipedia result to display&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Album art covers are retrieved using the api of &lt;a href="http://albumart.org/"&gt;http://albumart.org/&lt;/a&gt; and then saved locally in &lt;i&gt;~/.gereqi/album-art. &lt;/i&gt;This is considerably quicker than using a Google "feeling lucky" result and parsing for the album art.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;There are a few minor UI features I want to achieve before the release but things are looking good so far.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;If you want to try the program there is no installer yet (for obvious reasons) but if you're feeling adventurous the tree at &lt;/span&gt;&lt;a href="http://github.com/regomodo/Gereqi/tree/e23dabd44dc51842aca6b1da24c68af8e3c8d122"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;this revision&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt; is the most stable it's been in a long time. If you find issues please enter them in the &lt;/span&gt;&lt;a href="http://code.google.com/p/gereqi/issues/list"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;issue tracker&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Screenshots&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_P9dAsDlNu1A/TBp3UoxMx1I/AAAAAAAAAeA/_hIbPZ03SO4/s1600/gereqi3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="http://1.bp.blogspot.com/_P9dAsDlNu1A/TBp3UoxMx1I/AAAAAAAAAeA/_hIbPZ03SO4/s320/gereqi3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Webkit infopage showing the all the album covers of the playing artist&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_P9dAsDlNu1A/TBp3b4QpIzI/AAAAAAAAAeE/1py_dnENkLQ/s1600/gereqi2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="231" src="http://3.bp.blogspot.com/_P9dAsDlNu1A/TBp3b4QpIzI/AAAAAAAAAeE/1py_dnENkLQ/s320/gereqi2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Mysql support and a checkboxed fileview.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_P9dAsDlNu1A/TBp3i8KDrQI/AAAAAAAAAeI/sO_llAkkUSI/s1600/gereqi5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="231" src="http://4.bp.blogspot.com/_P9dAsDlNu1A/TBp3i8KDrQI/AAAAAAAAAeI/sO_llAkkUSI/s320/gereqi5.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Some UI options.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_P9dAsDlNu1A/TBp3qLVSwhI/AAAAAAAAAeM/J0rgEFDE_j0/s1600/gereqi6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="231" src="http://2.bp.blogspot.com/_P9dAsDlNu1A/TBp3qLVSwhI/AAAAAAAAAeM/J0rgEFDE_j0/s320/gereqi6.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Equaliser dialog. It does nothing.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_P9dAsDlNu1A/TBp3w1xafUI/AAAAAAAAAeQ/7hp6Xx57b0Q/s1600/gereqi7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/_P9dAsDlNu1A/TBp3w1xafUI/AAAAAAAAAeQ/7hp6Xx57b0Q/s320/gereqi7.png" width="244" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;List by album.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_P9dAsDlNu1A/TBp33Ou3x0I/AAAAAAAAAeU/5yXnSIiECHw/s1600/gereqi8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_P9dAsDlNu1A/TBp33Ou3x0I/AAAAAAAAAeU/5yXnSIiECHw/s320/gereqi8.png" width="225" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;List by artist.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_P9dAsDlNu1A/TBp39qzUItI/AAAAAAAAAeY/6rH6MXW6eG8/s1600/gereqi9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://2.bp.blogspot.com/_P9dAsDlNu1A/TBp39qzUItI/AAAAAAAAAeY/6rH6MXW6eG8/s320/gereqi9.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Filtering artists.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_P9dAsDlNu1A/TBp4EuK1sCI/AAAAAAAAAec/7fF68dLf0ho/s1600/gereqi10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_P9dAsDlNu1A/TBp4EuK1sCI/AAAAAAAAAec/7fF68dLf0ho/s320/gereqi10.png" width="165" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Wikipedia information about the playing artist.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-8542882135965027713?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/8542882135965027713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2010/06/gereqi-040-development.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/8542882135965027713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/8542882135965027713'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2010/06/gereqi-040-development.html' title='Gereqi-0.4.0 Development'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_P9dAsDlNu1A/TBp3UoxMx1I/AAAAAAAAAeA/_hIbPZ03SO4/s72-c/gereqi3.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-8029235766808658556</id><published>2010-05-31T01:22:00.010+01:00</published><updated>2010-05-31T01:47:41.096+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='trolltech'/><category scheme='http://www.blogger.com/atom/ns#' term='pyqt4'/><category scheme='http://www.blogger.com/atom/ns#' term='dialog'/><category scheme='http://www.blogger.com/atom/ns#' term='user-interface'/><title type='text'>Filesystem TreeView with Checkboxes</title><content type='html'>This post isn't about Gereqi specifically but more to do with something I made during recent development. Currently I am trying to copy the Configuration dialog of Amarok to make Gereqi a bit more user friendly.&lt;br /&gt;&lt;br /&gt;Amarok's filesystem view looks like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_P9dAsDlNu1A/TAMCJ24x2lI/AAAAAAAAAdQ/LGmyh2CJUN4/s1600/settings5.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 369px; height: 400px;" src="http://2.bp.blogspot.com/_P9dAsDlNu1A/TAMCJ24x2lI/AAAAAAAAAdQ/LGmyh2CJUN4/s400/settings5.png" alt="" id="BLOGGER_PHOTO_ID_5477223940188396114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Unfortunately, in PyQt4 (or Qt4) there's no easy way to have those checkBoxes so it would like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_P9dAsDlNu1A/TAMC5lMYyYI/AAAAAAAAAdg/Z0RNEtIOHbM/s1600/settings8.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 295px; height: 400px;" src="http://4.bp.blogspot.com/_P9dAsDlNu1A/TAMC5lMYyYI/AAAAAAAAAdg/Z0RNEtIOHbM/s400/settings8.png" alt="" id="BLOGGER_PHOTO_ID_5477224760072522114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;With some clever c++ hackery &lt;a href="http://www.qtcentre.org/threads/6957-QDirModel-QTreeView-and-checkable-items"&gt;made by a member of the qtcentre forums&lt;/a&gt; I was able to translate that into PyQt4 despite not knowing c++ and some of Qt4 specific features such as  &lt;a href="http://doc.trolltech.com/4.3/qset.html#details"&gt;QSet&lt;/a&gt;, which I still haven't the foggiest about.&lt;br /&gt;&lt;br /&gt;This PyQt4 code, for future reference and to help some poor soul dealing with the lack of PyQt4 examples and documentation on the internet, looks exactly like this (one day I might properly explain or comment it:&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;pre style="color: rgb(0, 0, 0); background: none repeat scroll 0% 0% rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;from&lt;/span&gt; PyQt4&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;QtCore &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;import&lt;/span&gt; QDirModel&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;class&lt;/span&gt; MyQDirModel&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;QDirModel&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;:&lt;/span&gt;&lt;br /&gt;checked &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(128, 128, 48);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;def&lt;/span&gt; data&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;self&lt;span style="color: rgb(128, 128, 48);"&gt;,&lt;/span&gt; index&lt;span style="color: rgb(128, 128, 48);"&gt;,&lt;/span&gt; role &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; Qt&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;DisplayRole&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;if&lt;/span&gt; index&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;isValid&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;and&lt;/span&gt; &lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;index&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;column&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 140, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;and&lt;/span&gt; &lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;role &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; Qt&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;CheckStateRole&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;:&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(105, 105, 105);"&gt;# the item is checked only if we have stored its path&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;if&lt;/span&gt; self&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;filePath&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;index&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;in&lt;/span&gt; MyQDirModel&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;checked&lt;span style="color: rgb(128, 128, 48);"&gt;:&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;return&lt;/span&gt; Qt&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;Checked&lt;br /&gt;   &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;else&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;:&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;return&lt;/span&gt; Qt&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;Unchecked&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;return&lt;/span&gt; QDirModel&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;data&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;self&lt;span style="color: rgb(128, 128, 48);"&gt;,&lt;/span&gt; index&lt;span style="color: rgb(128, 128, 48);"&gt;,&lt;/span&gt; role&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;def&lt;/span&gt; flags&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;self&lt;span style="color: rgb(128, 128, 48);"&gt;,&lt;/span&gt; index&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;if&lt;/span&gt; index&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;column&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 140, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;:&lt;/span&gt; &lt;span style="color: rgb(105, 105, 105);"&gt;# make the first column checkable&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;return&lt;/span&gt; QDirModel&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;flags&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;self&lt;span style="color: rgb(128, 128, 48);"&gt;,&lt;/span&gt; index&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 128, 48);"&gt;|&lt;/span&gt; Qt&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;ItemIsUserCheckable&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;else&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;:&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;return&lt;/span&gt; QDirModel&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;flags&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;self&lt;span style="color: rgb(128, 128, 48);"&gt;,&lt;/span&gt; index&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;   &lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;def&lt;/span&gt; setData&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;self&lt;span style="color: rgb(128, 128, 48);"&gt;,&lt;/span&gt; index&lt;span style="color: rgb(128, 128, 48);"&gt;,&lt;/span&gt; value&lt;span style="color: rgb(128, 128, 48);"&gt;,&lt;/span&gt; role &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; Qt&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;EditRole&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;if&lt;/span&gt; index&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;isValid&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;and&lt;/span&gt; &lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;index&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;column&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 140, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;and&lt;/span&gt; role &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; Qt&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;CheckStateRole&lt;span style="color: rgb(128, 128, 48);"&gt;:&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(105, 105, 105);"&gt;# store checked paths, remove unchecked paths&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;value &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; Qt&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;Checked&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;:&lt;/span&gt;&lt;br /&gt;       MyQDirModel&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;checked&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;append&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;self&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;filePath&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;index&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: rgb(227, 74, 220);"&gt;True&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;else&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;:&lt;/span&gt;&lt;br /&gt;       MyQDirModel&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;checked&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;remove&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;self&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;filePath&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;index&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: rgb(227, 74, 220);"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;else&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;:&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;return&lt;/span&gt; QDirModel&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;setData&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;self&lt;span style="color: rgb(128, 128, 48);"&gt;,&lt;/span&gt; index&lt;span style="color: rgb(128, 128, 48);"&gt;,&lt;/span&gt; value&lt;span style="color: rgb(128, 128, 48);"&gt;,&lt;/span&gt; role&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt; Simply put the above creates a "new" QDirModel Class with some custom methods as the default ones don't allow for this behaviour. Just swap where you were going to QDirModel with MyQDirModel.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The result of all this? A filesystem view the same as Amarok's&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_P9dAsDlNu1A/TAMFIGuuT0I/AAAAAAAAAdo/-a9Ss3iI2JA/s1600/settings9.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 293px; height: 400px;" src="http://4.bp.blogspot.com/_P9dAsDlNu1A/TAMFIGuuT0I/AAAAAAAAAdo/-a9Ss3iI2JA/s400/settings9.png" alt="" id="BLOGGER_PHOTO_ID_5477227208616333122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So that's one of the thing's I've been recently working on for version 0.4.0. Other things include directory watching, equaliser and sessioning (your Ui settings are saved to be loaded on restart).&lt;br /&gt;&lt;br /&gt;There's more to come for 0.4.0 so keep your eye's peeled.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-8029235766808658556?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/8029235766808658556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2010/05/filesystem-treeview-with-checkboxes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/8029235766808658556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/8029235766808658556'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2010/05/filesystem-treeview-with-checkboxes.html' title='Filesystem TreeView with Checkboxes'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_P9dAsDlNu1A/TAMCJ24x2lI/AAAAAAAAAdQ/LGmyh2CJUN4/s72-c/settings5.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-2795429067995116218</id><published>2010-04-18T21:08:00.017+01:00</published><updated>2010-04-19T23:59:00.692+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deb'/><category scheme='http://www.blogger.com/atom/ns#' term='pylint'/><category scheme='http://www.blogger.com/atom/ns#' term='pep8'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='gereqi'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Gereqi 0.3.9 -- now in .deb form</title><content type='html'>Finally I have got around to the requests and made a .deb for Gereqi!&lt;br /&gt;&lt;br /&gt;I tried to use some deb-building guides out there but they seemed needlessly long winded so I created my own process. Now all I need to do to create a .deb is run a &lt;a href="http://gereqi.googlecode.com/issues/attachment?aid=-1075865846553492983&amp;amp;name=builder.sh"&gt;custom script&lt;/a&gt; where I feed it the location of .deb control file and the final package name; this streamlines thing immensely.&lt;br /&gt;&lt;br /&gt;So apart from the .deb what else is new in this release? Well, like usual, not much. Mainly the code has been refactored and tidied up a little in compliance with &lt;a href="http://www.python.org/dev/peps/pep-0008/"&gt;Pep8&lt;/a&gt; and &lt;a href="http://freshmeat.net/projects/pylint/"&gt;pylint&lt;/a&gt; to make it easier to read. The only addition is that all tracks of an artist can be added at once &lt;a href="http://gereqi-dev.blogspot.com/2010/03/feature-request-response.html"&gt;although it's not ideal&lt;/a&gt;. A couple minor visual bugs relating to the track table have been addressed also but that's it.&lt;br /&gt;&lt;br /&gt;Get the .deb &lt;a href="http://gereqi.googlecode.com/files/gereqi-0.3.9-3.deb"&gt;here&lt;/a&gt;. [tested on Ubuntu 9.10 (x86) and 10.04-beta2 (x86+amd64)]&lt;br /&gt;Get the source installer &lt;a href="http://gereqi.googlecode.com/files/gereqi-0.3.9-2.tar.gz"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you are having issues I really want to know as I doubt my testing machines are clean enough.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;UPDATE&lt;/span&gt; I've updated the packages to include a menu-entry so no more faffing around trying to start the application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-2795429067995116218?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/2795429067995116218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2010/04/gereqi-039-now-in-deb-form.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/2795429067995116218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/2795429067995116218'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2010/04/gereqi-039-now-in-deb-form.html' title='Gereqi 0.3.9 -- now in .deb form'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-4665419379577511350</id><published>2010-04-06T23:22:00.003+01:00</published><updated>2010-04-19T00:40:23.964+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plan'/><category scheme='http://www.blogger.com/atom/ns#' term='ideas'/><category scheme='http://www.blogger.com/atom/ns#' term='future'/><title type='text'>Gereqi 0.4.0 roadmap</title><content type='html'>I have a habit of not planning what I do with regards to Gereqi. Usually I'll jot down a couple of ideas and then loosely follow them if I'm good; typically I lose the piece of paper.&lt;br /&gt;&lt;br /&gt;Well, for future reference here are the items I want to get sorted/perform before I release 0.4.0:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Ui elements (excluding the menubar) all must work to some extent. Preferably fully.&lt;/li&gt;&lt;li&gt;Thoroughly debugged&lt;/li&gt;&lt;li&gt;Allow the media-library to be sorted by album/artist&lt;/li&gt;&lt;li&gt;Ignore dynamic playlist support&lt;/li&gt;&lt;li&gt;Podcast support&lt;/li&gt;&lt;li&gt;Ipod support (maybe)&lt;/li&gt;&lt;/ol&gt;That's the general gist of what to expect in 0.4.0. Nothing amazing but I haven't the time or resources for that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-4665419379577511350?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/4665419379577511350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2010/04/gereqi-040-roadmap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/4665419379577511350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/4665419379577511350'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2010/04/gereqi-040-roadmap.html' title='Gereqi 0.4.0 roadmap'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-5280030058865774410</id><published>2010-03-30T20:39:00.006+01:00</published><updated>2010-03-30T21:11:16.497+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><category scheme='http://www.blogger.com/atom/ns#' term='pyqt4'/><category scheme='http://www.blogger.com/atom/ns#' term='sorting'/><category scheme='http://www.blogger.com/atom/ns#' term='gereqi'/><title type='text'>Feature request response</title><content type='html'>In response to &lt;a href="http://gereqi-dev.blogspot.com/2010/03/gereqi-version-038-1-major-bug-down.html?showComment=1269937623610#c3204142474669393949"&gt;bear.sh's request of adding all tracks of an artist at once&lt;/a&gt; i've put in the feature as of &lt;a href="http://github.com/regomodo/Gereqi/commit/9cdf32e180cac44b578af7ac8c8cb33568dc67aa"&gt;this commit to the Git repository&lt;/a&gt;(0.3 branch).&lt;br /&gt;&lt;br /&gt;To save you opening a new link to read my commit message(including spelling errors)  I'll post it here as I feel it's important.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Adding all tracks from all albums of an artist is possible. I wouldn't&lt;br /&gt;suggest doing so as the sorting of the table is pretty poor. The inbuilt&lt;br /&gt;sort of the table providid by PyQt4 is unaware of what else exists in thetable in different columns.&lt;/blockquote&gt;&lt;br /&gt;What does "pretty poor" sorting of a table looks like? Like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_P9dAsDlNu1A/S7JVHMOoxoI/AAAAAAAAAc8/ykhrF57-Mt0/s1600/sort-error.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 250px;" src="http://1.bp.blogspot.com/_P9dAsDlNu1A/S7JVHMOoxoI/AAAAAAAAAc8/ykhrF57-Mt0/s400/sort-error.png" alt="" id="BLOGGER_PHOTO_ID_5454515680729155202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Notice that the "sort by track#" is dumb. It does that explicitly even though you would expect it to sort by track# per album (I know that's what I think it should be).&lt;br /&gt;&lt;br /&gt;However, although it's not guaranteed, you may get this desired sorting if you sort by album like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_P9dAsDlNu1A/S7JVp4kU2aI/AAAAAAAAAdE/1-TepDZW5N4/s1600/sort-error1.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 250px;" src="http://4.bp.blogspot.com/_P9dAsDlNu1A/S7JVp4kU2aI/AAAAAAAAAdE/1-TepDZW5N4/s400/sort-error1.png" alt="" id="BLOGGER_PHOTO_ID_5454516276746836386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;So, the short of it? The feature is there but not as you or I want it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-5280030058865774410?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/5280030058865774410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2010/03/feature-request-response.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/5280030058865774410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/5280030058865774410'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2010/03/feature-request-response.html' title='Feature request response'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_P9dAsDlNu1A/S7JVHMOoxoI/AAAAAAAAAc8/ykhrF57-Mt0/s72-c/sort-error.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-7304264447515973161</id><published>2010-03-29T00:42:00.009+01:00</published><updated>2010-03-30T23:35:16.552+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='gereqi'/><category scheme='http://www.blogger.com/atom/ns#' term='youtube'/><title type='text'>Gereqi, version 0.3.8 - 1 major bug down</title><content type='html'>It may seem i'm chucking out these releases a bit fast but the bug that I fixed tonight is a big one. A &lt;a href="http://www.reddit.com/r/linux/comments/bjae6/amarok_2_is_still_after_years_of_waiting_for/"&gt;pos&lt;/a&gt;t over at reddit gave me a bit of encouragement / motivation to tackle this mother of a bug.&lt;br /&gt;&lt;br /&gt;In the past you could only add tracks to the playlist-view if it was sorted by filename in ascending order. After that you could sort them however you want. If you added tracks by any other sorting scheme all hell broke loose. Today, after over 5 months, this issue is fixed. If you're wondering, the fix ended up being about an &lt;a href="http://github.com/regomodo/Gereqi/commit/69e932ca3cc2acae98ce5313554b3026d26e99de"&gt;added&lt;/a&gt; &lt;a href="http://github.com/regomodo/Gereqi/commit/983a090d137398e6f80f4e6062214eb9327df74e"&gt;6lines&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I've added another feature which i've called "playlist-view history navigation". In essence, whenever you clear the playlist-view and add new stuff you can go back to previous selections, and then forward again. It's not 100%  finished (more like 95%) but it's a good place to release it.&lt;br /&gt;&lt;br /&gt;Here is a video i've just made.&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/b32OeMujUjA&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/b32OeMujUjA&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Apologies for the lack of sound but it's too late in the day to sort that out. Also, note 2 bugs I found whilst doing the video (the date added widget and the moment I save a 2nd playlist). Those are small ones compared to the one I just fixed. Also, the quality, as of now, looks crap. That maybe a youtube processing issue as i've only just uploaded it.&lt;br /&gt;&lt;br /&gt;Gereqi 0.3.8 can be found &lt;a href="http://gereqi.googlecode.com/files/gereqi-0.3.8.tar.gz"&gt;here&lt;/a&gt; and an installation guide of sorts is &lt;a href="http://code.google.com/p/gereqi/wiki/Installation"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;PS: excuse the typos. This is rushed as I want to get some sleep.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-7304264447515973161?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/7304264447515973161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2010/03/gereqi-version-038-1-major-bug-down.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/7304264447515973161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/7304264447515973161'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2010/03/gereqi-version-038-1-major-bug-down.html' title='Gereqi, version 0.3.8 - 1 major bug down'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-3110938737122374872</id><published>2010-03-27T09:49:00.003Z</published><updated>2010-03-30T22:41:02.209+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='screenshots'/><category scheme='http://www.blogger.com/atom/ns#' term='funtoo'/><category scheme='http://www.blogger.com/atom/ns#' term='lucid'/><category scheme='http://www.blogger.com/atom/ns#' term='gereqi'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Gereqi Screenshots</title><content type='html'>I noticed a few days ago that the screenshots I had been using were old. Here are a few I've recently taken on Ubuntu Lucid and Funtoo with KDE-4.4.1&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.flickr.com/photos/jonnobleuk/4466073477/" title="gereqi-lucid by jonno85uk, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2798/4466073477_9a2446ee9c.jpg" alt="gereqi-lucid" height="375" width="500" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/jonnobleuk/4466073477/" title="gereqi-lucid by jonno85uk, on Flickr"&gt;&lt;/a&gt;Note the slightly wonky position of the pause icon in its button. That has always been the case in Ubuntu going back to 9.04. I really wished they'd fix bugs for once.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/jonnobleuk/4466073477/" title="gereqi-lucid by jonno85uk, on Flickr"&gt;&lt;/a&gt;&lt;a href="http://www.flickr.com/photos/jonnobleuk/4463390984/" title="gereqi-037-2.png by jonno85uk, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4003/4463390984_6c3cf51825.jpg" alt="gereqi-037-2.png" height="349" width="500" /&gt;&lt;/a&gt;&lt;a href="http://www.flickr.com/photos/jonnobleuk/4462613807/" title="gereqi-037-1.png by jonno85uk, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4040/4462613807_ae7c5251db.jpg" alt="gereqi-037-1.png" height="351" width="500" /&gt;&lt;/a&gt;&lt;a href="http://www.flickr.com/photos/jonnobleuk/4463379452/" title="gereqi-037.png by jonno85uk, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4071/4463379452_aafd1211bc.jpg" alt="gereqi-037.png" height="351" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-3110938737122374872?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/3110938737122374872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2010/03/gereqi-screenshots.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/3110938737122374872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/3110938737122374872'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2010/03/gereqi-screenshots.html' title='Gereqi Screenshots'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2798/4466073477_9a2446ee9c_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-2785766769438369821</id><published>2010-03-24T19:29:00.001Z</published><updated>2010-03-30T22:42:51.290+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reddit'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='audio'/><category scheme='http://www.blogger.com/atom/ns#' term='pyqt'/><title type='text'>Gereqi, version 0.3.7 released</title><content type='html'>Following on from version 0.3.6 the other day I found the bug that I assumed was entirely random. A few minutes of digging found the culprit. Long story short, when a track was stopped then replayed the audio-backend was not being fed a string as expected.&lt;br /&gt;&lt;br /&gt;That is now fixed and along with some &lt;a href="http://www.reddit.com/r/Python/comments/bgsq7/help_how_do_i_package_my_application/"&gt;feedback&lt;/a&gt; from reddit.com the installer setup is considerably more &lt;span style="font-style: italic;"&gt;proper&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Version 0.3.7 can be found &lt;a href="http://gereqi.googlecode.com/files/gereqi-0.3.7.tar.gz"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-2785766769438369821?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/2785766769438369821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2010/03/gereqi-version-037-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/2785766769438369821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/2785766769438369821'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2010/03/gereqi-version-037-released.html' title='Gereqi, version 0.3.7 released'/><author><name>regomodo</name><uri>http://www.blogger.com/profile/16024222143120970683</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-3684237842250655199</id><published>2010-03-22T23:36:00.001Z</published><updated>2010-03-30T22:42:33.100+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='urllib'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='pyqt4'/><category scheme='http://www.blogger.com/atom/ns#' term='distutils'/><title type='text'>Gereqi 0.3.6 - not any old point release!</title><content type='html'>I've just released version 0.3.6 and with it comes some new features:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Playlist saving, renaming, reusing&lt;/li&gt;&lt;li&gt;Playback of tracks with "#" in them&lt;/li&gt;&lt;li&gt;And most importantly, an installer via the use of distutils!&lt;/li&gt;&lt;/ol&gt;To install run (whilst in the packages root directory):&lt;br /&gt;&lt;blockquote&gt;python setup.py build&lt;br /&gt;sudo python setup.py install&lt;/blockquote&gt;Done.&lt;br /&gt;&lt;br /&gt;There are 2 bugs and feature#2 sort of brought of one of those in:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Urllib's pathname2url seems to be a bit flakey and causes exceptions. It's really random as the files it's chucked at work most of the time, just sometimes it doesn't.&lt;/li&gt;&lt;li&gt;Adding tracks to the playlist that is not sorted by filename causes blank rows and an unplayable playlist. I might try the PyQt4 mailing list but every time I do it seems to be a waste of time.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Slowly but surely progress is being made and apart from those aforementioned bugs, the program has been rock solid for me. I've only tested on Funtoo amd64/i386 and Ubuntu 9.10-i386.&lt;br /&gt;&lt;br /&gt;Get the package from &lt;a href="http://gereqi.googlecode.com/files/gereqi-0.3.6.tar.gz"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-3684237842250655199?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/3684237842250655199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2010/03/gereqi-036-not-any-old-point-release.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/3684237842250655199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/3684237842250655199'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2010/03/gereqi-036-not-any-old-point-release.html' title='Gereqi 0.3.6 - not any old point release!'/><author><name>regomodo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-6629877820954003361</id><published>2010-02-10T22:18:00.000Z</published><updated>2010-02-10T22:24:40.343Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='setuptools'/><category scheme='http://www.blogger.com/atom/ns#' term='gereqi'/><title type='text'>Gereqi, version 0.3.5 releases</title><content type='html'>This release brings a few fixes and 1 minor new-feature.&lt;br /&gt;&lt;br /&gt;It appears a lot of files (~3) were missing from the repo's and tarballs. This was a mess up on my end as I had the byte-files in my dev directory so I never saw the errors until I ran the program from the tarball.&lt;br /&gt;&lt;br /&gt;The new-feature is that the media collection can be now be filtered by time of addition in conjunction with text-search.&lt;br /&gt;&lt;br /&gt;That's all the time I have for now; i'll be lucky if I can find time to figure out the confusing setuptools.&lt;br /&gt;&lt;br /&gt;Get the release &lt;a href="http://gereqi.googlecode.com/files/gereqi-0.3.5.tar.gz"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-6629877820954003361?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/6629877820954003361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2010/02/gereqi-version-035-releases.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/6629877820954003361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/6629877820954003361'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2010/02/gereqi-version-035-releases.html' title='Gereqi, version 0.3.5 releases'/><author><name>regomodo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-1625098149427217329</id><published>2010-01-17T23:26:00.001Z</published><updated>2010-03-30T22:39:54.877+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gstreamer'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='gereqi'/><title type='text'>Version 0.3.2 released</title><content type='html'>Due to starting a new job at an Engineering firm my priorities are not with this project right now as I get used to my new situation.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Minor changes between 0.3.1 and 0.3.2. &lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Added experimental support for audio-cd's (it's a Gstreamer issue i'm waiting to be fixed)&lt;/li&gt;&lt;li&gt;fixed bugs where menubar actions would double-trigger&lt;/li&gt;&lt;li&gt;Removed exceptions where cover-art and wiki info would try to fetch without an internet connection.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Apart from that not much else.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For 0.3.3 I aim to get an installer for this application. It's about time it was done. Just wished I could maybe get some help.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Get the package &lt;a href="http://gereqi.googlecode.com/files/gereqi-0.3.2.tar.gz"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-1625098149427217329?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/1625098149427217329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2010/01/version-032-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/1625098149427217329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/1625098149427217329'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2010/01/version-032-released.html' title='Version 0.3.2 released'/><author><name>regomodo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-3244518447205395832</id><published>2009-12-16T20:38:00.001Z</published><updated>2010-03-30T22:42:12.448+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mutagen'/><category scheme='http://www.blogger.com/atom/ns#' term='tagpy'/><category scheme='http://www.blogger.com/atom/ns#' term='gstreamer'/><category scheme='http://www.blogger.com/atom/ns#' term='gereqi'/><title type='text'>version 0.3.1 released</title><content type='html'>I've got real-life problems at the moment which are likely to cause problems for a while. So, I'm pushing this out just in case I don't get the chance again. I've tried to make the code as bug-free as possible and made sure the features that work, work.&lt;br /&gt;&lt;br /&gt;Differences from 0.2 to 0.3:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;tagpy dependency gone along with the huge boost-python dep's. In place is Mutagen.&lt;/li&gt;&lt;li&gt;File(s) can be added to the playlist directly from the UI using the embedded fileview in tree format.&lt;/li&gt;&lt;li&gt;Gone is Phonon. In it's place is Python Gstreamer which, for developing, is a lot more trustworthy.&lt;/li&gt;&lt;li&gt;Small UI tweaks. I've disabled non-implemented widgets where suitable and removed some buttons (the searching options buttons in Amarok) that are unlikely to be done for a long time.&lt;/li&gt;&lt;li&gt;Massive code refactor. Truth be told, i'm not sure if it's correct but at least the ugly multiple class inheritance has gone and is a lot easier to read than before.&lt;/li&gt;&lt;li&gt;Wikipedia info displayed better.The app uses the printable version of each page. Wikipedia seem to be having a massive donation-drive of late so I haven't removed that.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I'm a bit disappointed I didn't get audio-cd playback supported but that is my next thing on the agenda, when I can find the time.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here's 1 &lt;a href="http://code.google.com/p/gereqi/wiki/ScreenShots"&gt;of a few current screengrabs&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://imgur.com/I3Hfb.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 538px; height: 340px;" src="http://imgur.com/I3Hfb.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you're wondering why it's 0.3.1, I missed a minor UI bug in 0.3.0.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-3244518447205395832?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/3244518447205395832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2009/12/version-031-released.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/3244518447205395832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/3244518447205395832'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2009/12/version-031-released.html' title='version 0.3.1 released'/><author><name>regomodo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-977482158555709240</id><published>2009-12-07T21:44:00.001Z</published><updated>2010-03-30T22:41:20.775+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mutagen'/><category scheme='http://www.blogger.com/atom/ns#' term='tagpy'/><category scheme='http://www.blogger.com/atom/ns#' term='aac'/><title type='text'>Mutagen Thoughts</title><content type='html'>Ok, today i've been working with &lt;a href="http://code.google.com/p/mutagen/"&gt;Mutagen&lt;/a&gt;. It's definitely a feature-full package but to my dismay i've notice it's very, very flakey.&lt;br /&gt;&lt;br /&gt;The main thing i've noticed, when coming from tagpy, is that Mutagen is extremely picky. I've come across so many instances where mp3/ogg/flac files worked fine in tagpy but not in Mutagen. I feel it's because Mutagen likes to have pristine files with no encoding errors, which frankly is a bit much.&lt;br /&gt;This would be OK if there was some crude method to get around this which requires some hacking about but there's no way. It either works or it doesn't.&lt;br /&gt;&lt;br /&gt;I am starting to have my doubts about the switch but the support of aac files, which tagpy lacks, is driving me to figure this issue out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-977482158555709240?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/977482158555709240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2009/12/mutagen-thoughts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/977482158555709240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/977482158555709240'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2009/12/mutagen-thoughts.html' title='Mutagen Thoughts'/><author><name>regomodo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-6036618767910265688</id><published>2009-12-06T22:02:00.001Z</published><updated>2010-03-30T22:43:46.826+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mutagen'/><category scheme='http://www.blogger.com/atom/ns#' term='tagpy'/><category scheme='http://www.blogger.com/atom/ns#' term='tag'/><category scheme='http://www.blogger.com/atom/ns#' term='gstreamer'/><title type='text'>Tagging</title><content type='html'>Currently Gereqi uses &lt;a href="http://mathema.tician.de/software/tagpy"&gt;tagpy&lt;/a&gt; for tagging duties. It's a small and simple tool but sadly is lacking in file format support. This seems to be due to it being a wrapper for taglib so allows a little room for expansion.&lt;br /&gt;&lt;br /&gt;There are plenty alternatives out there. Gstreamer has support for tags but documentation for it is elusive. The package I shall be moving to is &lt;a href="http://code.google.com/p/quodlibet/wiki/Mutagen"&gt;Mutagen&lt;/a&gt;. Quod-libet and Ex-Falso use it. The latter being well-known for it's tagging features.&lt;br /&gt;&lt;br /&gt;As I am trying to keep dependencies to a minimum Mutagen is a good choice as it is a needed dependency of libgpod, which somewhere down the line Gereqi will need for iPod support.&lt;br /&gt;&lt;br /&gt;So, if I can get around this refactor issue, Mutagen should be coming up soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-6036618767910265688?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/6036618767910265688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2009/12/tagging.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/6036618767910265688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/6036618767910265688'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2009/12/tagging.html' title='Tagging'/><author><name>regomodo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-115065584187910281</id><published>2009-11-27T21:52:00.000Z</published><updated>2009-11-27T21:59:25.585Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='gstreamer'/><category scheme='http://www.blogger.com/atom/ns#' term='refactor'/><title type='text'>Refactoring</title><content type='html'>Currently I am in the process of refactoring the code. A class, &lt;a href="http://github.com/regomodo/Gereqi/blob/eda22cc8114d93dcb8315b6d6921a4616923e2b4/ui/interface.py#L260"&gt;MainWindow&lt;/a&gt;, inherits way too many things and is apparently bad practice. That is not to say it causes performance problems but instead  hinders the way things can be added later.&lt;br /&gt;&lt;br /&gt;The main problem is that despite understanding the basic proper Class usage I have troubles applying that to the big mess I have created.&lt;br /&gt;&lt;br /&gt;Expect a long delay before any new features. Additionally, the Gstreamer move is now complete and all changes are now in the &lt;a href="http://github.com/regomodo/Gereqi/tree/master"&gt;Master branch&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-115065584187910281?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/115065584187910281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2009/11/refactoring.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/115065584187910281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/115065584187910281'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2009/11/refactoring.html' title='Refactoring'/><author><name>regomodo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-5379315586480229207</id><published>2009-11-23T18:17:00.000Z</published><updated>2009-11-23T18:46:14.236Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='gentoo'/><category scheme='http://www.blogger.com/atom/ns#' term='gstreamer'/><category scheme='http://www.blogger.com/atom/ns#' term='phonon'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Gstreamer Migration</title><content type='html'>Just shy of a month ago I became fed up of &lt;a href="http://en.wikipedia.org/wiki/Phonon_%28KDE%29"&gt;Phonon's&lt;/a&gt; flakey API and decided to dump it for something else. Performance and feature-wise Phonon was OK but thing's in the API didn't actually match up to what was happening in real life. Mainly it's "state" feature was the key reason for me to give it up.&lt;br /&gt;I won't get into details, as it will raise my blood-pressure, but ever since I started using this media-framework I would discover something nasty and create an awful hack to get around it.&lt;br /&gt;&lt;br /&gt;Since the end of October I have been trying out Python-Gstreamer in a new git &lt;a href="http://github.com/regomodo/Gereqi/tree/pygst"&gt;branch&lt;/a&gt;. Some periods I doubted my decision because of Python-Gstreamer initially quite terrible documentation. I spent a good period learning the nitty gritty parts of how it uses "elements" to create a &lt;a href="http://upload.wikimedia.org/wikipedia/commons/9/98/GStreamer_Technical_Overview.svg"&gt;"Pipeline&lt;/a&gt;" which is a catch-all solution for playing a file.&lt;br /&gt;Despite getting this low-level method to work it was not gap-less. When a track moves tot he next in a playlist automatically, a noticeable gap was present.&lt;br /&gt;&lt;br /&gt;This brings me on to Gstreamer's &lt;a href="http://www.gstreamer.net/data/doc/gstreamer/head/gst-plugins-base-plugins/html/gst-plugins-base-plugins-playbin2.html"&gt;playbin2&lt;/a&gt;. If you look at that link you will notice that there is no Python. That's because there is no Python documentation for this useful feature of Gstreamer. Playbin2 is a high-level solution to playing a file. You can put in elements if you want but I wanted it just for it's gap-less playback.&lt;br /&gt;As I had no Python examples a Google search resulted in this &lt;a href="http://code.google.com/p/quodlibet/source/browse/quodlibet/quodlibet/player/gstbe.py?spec=svne0fef23b8359cf80796717f5eda2c15c13d1a9c2&amp;amp;r=e0fef23b8359cf80796717f5eda2c15c13d1a9c2"&gt;find&lt;/a&gt;. It took a while to figure out what was relevant to Gstreamer and Quod-libet but eventually I got the gist of it. If it looks messy, that is OK. It looked the same to me. In my opinion they seem to be doing a lot of unnecessary things such as destroying+re-creating their playbin2 object when loading a new file. I know how this sounds but I think it looks very hacked together. Maybe time will prove them right and me to be wrong.&lt;br /&gt;&lt;br /&gt;By taking what I needed from &lt;a href="http://code.google.com/p/quodlibet/"&gt;quod-libet's&lt;/a&gt; backend I ended up with an almost working solution. On rare occasions gap-less playback was possible. After a frustrating and fruitless few days I made a new thread at Gentoo Forums as last resort. Thankfully a superstar by the name of didumos &lt;a href="http://forums.gentoo.org/viewtopic.php?p=6068300#6068300"&gt;provided a possible reason to the error, investigated it, and provided a patch&lt;/a&gt;. All that and he/she doesn't _do_ Python.&lt;br /&gt;&lt;br /&gt;Since then I have done a touch of bug-fixing and now believe the end is near for the migration. I have a feeling a few bugs are present in my use of gstreamer and defintely know it's not optimal. In addition PyLint always crashes when checking it's "Pythonness" of the backend which isn't helpful.&lt;br /&gt;&lt;br /&gt;After this a few new minor features expect ver0.3 out soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-5379315586480229207?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/5379315586480229207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2009/11/gstreamer-migration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/5379315586480229207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/5379315586480229207'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2009/11/gstreamer-migration.html' title='Gstreamer Migration'/><author><name>regomodo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4238322822933175461.post-451320178030023758</id><published>2009-11-23T18:12:00.000Z</published><updated>2009-11-23T18:16:55.434Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='init'/><title type='text'>Blog.__init__()</title><content type='html'>As it's a pain to manually mess around with the &lt;a href="http://regomodo.github.com/Gereqi/"&gt;Github static page&lt;/a&gt; I thought i'd create a dev page so that it appears i'm actually doing/ thinking about something. Although I am making progress, unless you watch the github repository you'll rarely hear anything about it other than a slight mention in Reddit.&lt;br /&gt;&lt;br /&gt;Basically this blog is just to track the development of Gereqi and for any users to express their views/ideas on this application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4238322822933175461-451320178030023758?l=gereqi-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gereqi-dev.blogspot.com/feeds/451320178030023758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://gereqi-dev.blogspot.com/2009/11/bloginit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/451320178030023758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4238322822933175461/posts/default/451320178030023758'/><link rel='alternate' type='text/html' href='http://gereqi-dev.blogspot.com/2009/11/bloginit.html' title='Blog.__init__()'/><author><name>regomodo</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
