From 47814dcd4e5749be883042999920308936d9a899 Mon Sep 17 00:00:00 2001 From: Alexey Yakovenko Date: Sun, 18 Apr 2010 12:52:51 +0200 Subject: added new info page to track properties window --- plugins/gtkui/callbacks.c | 1 + plugins/gtkui/callbacks.h | 1 + plugins/gtkui/deadbeef.glade | 92 +++++++++++++++++++++++++++++++++++++++++++ plugins/gtkui/interface.c | 45 +++++++++++++++++++++ plugins/gtkui/trkproperties.c | 40 +++++++++++++++++-- 5 files changed, 176 insertions(+), 3 deletions(-) (limited to 'plugins/gtkui') diff --git a/plugins/gtkui/callbacks.c b/plugins/gtkui/callbacks.c index 49281181..7dd8e86f 100644 --- a/plugins/gtkui/callbacks.c +++ b/plugins/gtkui/callbacks.c @@ -1164,3 +1164,4 @@ create_seekbar (gchar *widget_name, gchar *string1, gchar *string2, return GTK_WIDGET (ddb_seekbar_new ()); } + diff --git a/plugins/gtkui/callbacks.h b/plugins/gtkui/callbacks.h index 09dad46d..1c45c10d 100644 --- a/plugins/gtkui/callbacks.h +++ b/plugins/gtkui/callbacks.h @@ -933,3 +933,4 @@ on_mainwin_motion_notify_event (GtkWidget *widget, GtkWidget* create_seekbar (gchar *widget_name, gchar *string1, gchar *string2, gint int1, gint int2); + diff --git a/plugins/gtkui/deadbeef.glade b/plugins/gtkui/deadbeef.glade index 958032f5..349879c9 100644 --- a/plugins/gtkui/deadbeef.glade +++ b/plugins/gtkui/deadbeef.glade @@ -1506,6 +1506,98 @@ tab + + + + 12 + True + False + 8 + + + + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + True + False + True + False + False + False + + + + + 0 + True + True + + + + + + True + GTK_BUTTONBOX_END + 0 + + + + True + True + True + Close + True + GTK_RELIEF_NORMAL + True + + + + + + 0 + False + False + + + + + False + True + + + + + + True + Properties + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + tab + + diff --git a/plugins/gtkui/interface.c b/plugins/gtkui/interface.c index 49030e34..02ea5ec8 100644 --- a/plugins/gtkui/interface.c +++ b/plugins/gtkui/interface.c @@ -1125,6 +1125,12 @@ create_trackproperties (void) GtkWidget *write_tags; GtkWidget *closebtn; GtkWidget *label64; + GtkWidget *vbox24; + GtkWidget *scrolledwindow6; + GtkWidget *properties; + GtkWidget *hbuttonbox2; + GtkWidget *button2; + GtkWidget *label80; trackproperties = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_size_request (trackproperties, 400, 400); @@ -1187,6 +1193,36 @@ create_trackproperties (void) gtk_widget_show (label64); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook3), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook3), 0), label64); + vbox24 = gtk_vbox_new (FALSE, 8); + gtk_widget_show (vbox24); + gtk_container_add (GTK_CONTAINER (notebook3), vbox24); + gtk_container_set_border_width (GTK_CONTAINER (vbox24), 12); + + scrolledwindow6 = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_show (scrolledwindow6); + gtk_box_pack_start (GTK_BOX (vbox24), scrolledwindow6, TRUE, TRUE, 0); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow6), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow6), GTK_SHADOW_IN); + + properties = gtk_tree_view_new (); + gtk_widget_show (properties); + gtk_container_add (GTK_CONTAINER (scrolledwindow6), properties); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (properties), TRUE); + + hbuttonbox2 = gtk_hbutton_box_new (); + gtk_widget_show (hbuttonbox2); + gtk_box_pack_start (GTK_BOX (vbox24), hbuttonbox2, FALSE, FALSE, 0); + gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox2), GTK_BUTTONBOX_END); + + button2 = gtk_button_new_with_mnemonic ("Close"); + gtk_widget_show (button2); + gtk_container_add (GTK_CONTAINER (hbuttonbox2), button2); + GTK_WIDGET_SET_FLAGS (button2, GTK_CAN_DEFAULT); + + label80 = gtk_label_new ("Properties"); + gtk_widget_show (label80); + gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook3), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook3), 1), label80); + g_signal_connect ((gpointer) trackproperties, "key_press_event", G_CALLBACK (on_trackproperties_key_press_event), NULL); @@ -1199,6 +1235,9 @@ create_trackproperties (void) g_signal_connect ((gpointer) closebtn, "clicked", G_CALLBACK (on_closebtn_clicked), NULL); + g_signal_connect ((gpointer) button2, "clicked", + G_CALLBACK (on_closebtn_clicked), + NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (trackproperties, trackproperties, "trackproperties"); @@ -1213,6 +1252,12 @@ create_trackproperties (void) GLADE_HOOKUP_OBJECT (trackproperties, write_tags, "write_tags"); GLADE_HOOKUP_OBJECT (trackproperties, closebtn, "closebtn"); GLADE_HOOKUP_OBJECT (trackproperties, label64, "label64"); + GLADE_HOOKUP_OBJECT (trackproperties, vbox24, "vbox24"); + GLADE_HOOKUP_OBJECT (trackproperties, scrolledwindow6, "scrolledwindow6"); + GLADE_HOOKUP_OBJECT (trackproperties, properties, "properties"); + GLADE_HOOKUP_OBJECT (trackproperties, hbuttonbox2, "hbuttonbox2"); + GLADE_HOOKUP_OBJECT (trackproperties, button2, "button2"); + GLADE_HOOKUP_OBJECT (trackproperties, label80, "label80"); return trackproperties; } diff --git a/plugins/gtkui/trkproperties.c b/plugins/gtkui/trkproperties.c index f4ce782f..68db8def 100644 --- a/plugins/gtkui/trkproperties.c +++ b/plugins/gtkui/trkproperties.c @@ -132,11 +132,16 @@ show_track_properties_dlg (DB_playItem_t *it) { GtkTreeView *tree; GtkListStore *store; + GtkTreeView *proptree; + GtkListStore *propstore; if (!trackproperties) { trackproperties = create_trackproperties (); gtk_window_set_transient_for (GTK_WINDOW (trackproperties), GTK_WINDOW (mainwin)); + + // metadata tree tree = GTK_TREE_VIEW (lookup_widget (trackproperties, "metalist")); store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING); + gtk_tree_view_set_model (tree, GTK_TREE_MODEL (store)); GtkCellRenderer *rend_text = gtk_cell_renderer_text_new (); rend_text2 = gtk_cell_renderer_text_new (); g_signal_connect ((gpointer)rend_text2, "edited", @@ -146,13 +151,26 @@ show_track_properties_dlg (DB_playItem_t *it) { GtkTreeViewColumn *col2 = gtk_tree_view_column_new_with_attributes ("Value", rend_text2, "text", 1, NULL); gtk_tree_view_append_column (tree, col1); gtk_tree_view_append_column (tree, col2); + + // properties tree + proptree = GTK_TREE_VIEW (lookup_widget (trackproperties, "properties")); + propstore = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING); + gtk_tree_view_set_model (proptree, GTK_TREE_MODEL (propstore)); + GtkCellRenderer *rend_propkey = gtk_cell_renderer_text_new (); + GtkCellRenderer *rend_propvalue = gtk_cell_renderer_text_new (); + g_object_set (G_OBJECT (rend_propvalue), "editable", TRUE, NULL); + col1 = gtk_tree_view_column_new_with_attributes ("Key", rend_propkey, "text", 0, NULL); + col2 = gtk_tree_view_column_new_with_attributes ("Value", rend_propvalue, "text", 1, NULL); + gtk_tree_view_append_column (proptree, col1); + gtk_tree_view_append_column (proptree, col2); } else { tree = GTK_TREE_VIEW (lookup_widget (trackproperties, "metalist")); store = GTK_LIST_STORE (gtk_tree_view_get_model (tree)); - - // remove everything from store gtk_list_store_clear (store); + proptree = GTK_TREE_VIEW (lookup_widget (trackproperties, "properties")); + propstore = GTK_LIST_STORE (gtk_tree_view_get_model (proptree)); + gtk_list_store_clear (propstore); } if (allow_editing) { @@ -179,7 +197,6 @@ show_track_properties_dlg (DB_playItem_t *it) { value = ""; } gtk_list_store_set (store, &iter, 0, types[i+1], 1, value, -1); - gtk_tree_view_set_model (tree, GTK_TREE_MODEL (store)); i += 2; } deadbeef->pl_unlock (); @@ -191,6 +208,23 @@ show_track_properties_dlg (DB_playItem_t *it) { gtk_widget_set_sensitive (lookup_widget (widget, "write_tags"), FALSE); } + // properties + char temp[200]; + GtkTreeIter iter; + gtk_list_store_append (propstore, &iter); + gtk_list_store_set (propstore, &iter, 0, "Location", 1, it->fname, -1); + gtk_list_store_append (propstore, &iter); + snprintf (temp, sizeof (temp), "%d", it->tracknum); + gtk_list_store_set (propstore, &iter, 0, "Subtrack Index", 1, temp, -1); + gtk_list_store_append (propstore, &iter); + deadbeef->pl_format_time (deadbeef->pl_get_item_duration (it), temp, sizeof (temp)); + gtk_list_store_set (propstore, &iter, 0, "Duration", 1, temp, -1); + gtk_list_store_append (propstore, &iter); + deadbeef->pl_format_title (it, -1, temp, sizeof (temp), -1, "%T"); + gtk_list_store_set (propstore, &iter, 0, "Tag Type(s)", 1, temp, -1); + gtk_list_store_append (propstore, &iter); + gtk_list_store_set (propstore, &iter, 0, "Embedded Cuesheet", 1, (deadbeef->pl_get_item_flags (it) & DDB_HAS_EMBEDDED_CUESHEET) ? "Yes" : "No", -1); + gtk_widget_show (widget); gtk_window_present (GTK_WINDOW (widget)); } -- cgit v1.2.3