Qball's Weblog
Selling my soul to the devil.
For years now I always said that I wouldn’t implement certain things. Because 1. I don’t know how, or 2 I don’t like it.
In the last s weeks I have implemented several of these things.
1. “Tabbed” like view
I don’t like tabs, especially in music players. People do however request it a lot, mostly because “I can access it quickly”.
My counter-arguments where:
- Most screens are widescreen today, enough space to have a side bar. This allows for the same quick access.
- A tabbed window does not scale. if you have a larger number of browsers (in gmpc case) you either don’t see the name of the browser (they are ellipsized to make all the tabs fit) or you have to scroll (or open a dropdown menu) to get to non-visible the items. (F.e. open 20 tabs in firefox or opera)
Defeating the purpose of a tabbed view. So you still need large window width to be useful.
To proof this I wrote a “button” bar, because using real GtkNotebook does not fit gmpc internals.
But people still liked it and because the quick implementation I did was pretty clean. (It nicely follows the GtkTreeModel the sidebar and dropdown uses) I decided to keep it there.
Evil deed 1.
2. Last.FM Radio
Now this one is not too evil, but it is something I didn’t know that was possible.
Now that I written already 2 things I decided I could go to greater evil as well:
3. Tag edit plugin
Yes, you read this right. Tag editing is now possible with the right plugin. I don’t like it, as it requires direct access to your music database. But many people have that and I guess it can be useful to quickly fix a few tags.
Yeah, tag editing. It is not too advanced, but it can do a simple form of mass-tagging.
Evil deed 2.
Because mpd is finally under heavy development again and a lot of bugs got fixed, including streaming. (It now uses libcurl instead of the crappy self written code it used to use). I could finally fix up my “mserver” plugin.
This plugin embeds a small webserver in gmpc using libmicrohttpd. Via this webserver it can stream local files via the network to gmpc. Seeking if fully supported and for most formats mpd nicely reads the metadata tags. I also added tagreading to this plugin, so if you add a song to the list of “allowed local songs” you see all the tags.
I hope to get a Release Candidate 1 released this weekend of gmpc/libmpd and the stable plugins. (not sure if tagedit will be part of this.).
Changelog
GMPC
- Fix building with NLS disabled.
- Fix resize issue.
- Add a function that generates a filename for cover art, this should be used in metadata plugins. To give a more consistent saving.
- New Metadata database that uses a more structured layout. (less overhead)
- Custom progres bar. (So gmpc does not use 20% cpu on a theme with animated progress bar)
- Sharper lines around album art.
- [libmpd] If idle command available use it to detect changes in stored playlist.
- Update stored playlist without loosing selection.
- Allow prioritizing of metadata plugins from the gui.
- Speed up saving of config/metadata file by +- 50 times.
- Only save config/metadata/profile file on closing of gmpc.
- Add a script that allows you to open pls files from your browser (gmpc-remote-stream).
- Always safe window zoom state between sessions.
- Add possibility to use buttons instead of dropdown.
- Add possible Tool menu to GmpcMpdDataTreeview
- Add padding to the gmpcPlugin structures, so we won’t break api the next time I add something.
Fixed bugs:
- 0001764 Allow drag and drop of images on the GmpcMetaImage.
- 0001481 Add possibility to prioritize metadata plugins.
- 0001765 Check available urlhandler before handling dnd.
- 0001604 Mute/unmute multimedia key support.
- 0001767 Expand/Collaps keybinding keypad is wrong.
- 0001772 Opening of Information on a song is slow.
- 0001794 Fix gtk deprecation warnings.
- 0001814 Add reset browser option.
- 0001794 Fix high cpu usage caused by progressbar.
- Memory leak in GmpcClickLabel
- Fix play-queue gettting stuck in quick-search.
- Add –debug-updates option that shows redraws.
- Fix mute icon.
Libmpd
- Concatenate artist/composer/performer tag.
- Support Query changes using idle command.
- Unix socket support.
- Fix false MPD_CST_STORED_PLAYLIST update.
The download link to gmpc will be posted shortly.
Q
gmpc website: http://gmpcwiki.sarine.nl/
p.s. this must be my longest blog ever.