Opening MP3 files
Let's finish this chapter by adding the ability to open MP3 files and show their metadata in the playlist widget we just created.
First of all, we'll remove this line:
cover.set_from_file("cover.jpg");
This is because the image will be set from the data of the MP3 files we play.
We'll use a new crate, so add this line in the [dependencies]
section of your Cargo.toml
:
gtk-sys = "^0.5.0"
Also, add the following line to your main.rs
:
extern crate gtk_sys;
The *-sys
crates of the gtk-rs
ecosystem are low-level crates, the ones that directly bind to the GTK+ C library. Since they're very low-level and require the use of unsafe code, wrappers have been made; these are crates without the -sys
suffix, such as gtk
and gdk
.
Reference-counting pointer
We'll also change some code before we continue. Since we'll want to share our Playlist
widget with different parts of our code, including some event handlers, we need a way of sharing a reference that will last long enough (remember the issue...