summaryrefslogtreecommitdiff
path: root/plugins/gtkui/trkproperties.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/gtkui/trkproperties.c')
-rw-r--r--plugins/gtkui/trkproperties.c40
1 files changed, 38 insertions, 2 deletions
diff --git a/plugins/gtkui/trkproperties.c b/plugins/gtkui/trkproperties.c
index a3e2a413..216f414e 100644
--- a/plugins/gtkui/trkproperties.c
+++ b/plugins/gtkui/trkproperties.c
@@ -25,9 +25,8 @@
#include "../../deadbeef.h"
#include "gtkui.h"
-#pragma GCC optimize("O0")
-
static GtkWidget *trackproperties;
+static DB_playItem_t *track;
gboolean
on_trackproperties_delete_event (GtkWidget *widget,
@@ -35,6 +34,10 @@ on_trackproperties_delete_event (GtkWidget *widget,
gpointer user_data)
{
trackproperties = NULL;
+ if (track) {
+ deadbeef->pl_item_unref (track);
+ track = NULL;
+ }
return FALSE;
}
@@ -45,6 +48,10 @@ on_trackproperties_key_press_event (GtkWidget *widget,
{
if (event->keyval == GDK_Escape) {
trackproperties = NULL;
+ if (track) {
+ deadbeef->pl_item_unref (track);
+ track = NULL;
+ }
gtk_widget_destroy (widget);
}
return FALSE;
@@ -62,6 +69,10 @@ on_metadata_edited (GtkCellRendererText *renderer, gchar *path, gchar *new_text,
void
show_track_properties_dlg (DB_playItem_t *it) {
+ if (it) {
+ deadbeef->pl_item_ref (it);
+ }
+ track = it;
if (!trackproperties) {
trackproperties = create_trackproperties ();
gtk_window_set_transient_for (GTK_WINDOW (trackproperties), GTK_WINDOW (mainwin));
@@ -183,3 +194,28 @@ show_track_properties_dlg (DB_playItem_t *it) {
gtk_window_present (GTK_WINDOW (widget));
}
+void
+on_write_tags_clicked (GtkButton *button,
+ gpointer user_data)
+{
+ return;
+ DB_id3v2_tag_t tag;
+ memset (&tag, 0, sizeof (tag));
+ DB_FILE *fp = deadbeef->fopen (track->fname);
+ if (fp) {
+ if (deadbeef->junk_read_id3v2_full (NULL, &tag, fp) < 0) {
+ fprintf (stderr, "failed to read tags from %s\n", track->fname);
+ goto error;
+ }
+ if (deadbeef->junk_write_id3v2 (track->fname, &tag) < 0) {
+ fprintf (stderr, "failed to write tags to %s\n", track->fname);
+ goto error;
+ }
+ }
+error:
+ if (fp) {
+ deadbeef->fclose (fp);
+ }
+ deadbeef->junk_free_id3v2 (&tag);
+}
+