summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-04-18 12:52:51 +0200
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-04-18 12:52:51 +0200
commit47814dcd4e5749be883042999920308936d9a899 (patch)
tree313ec39562fb1386de43183e69ee4f6342279f06 /plugins
parent78bf582fb29151a916d2c93e9f056d9464d1f997 (diff)
added new info page to track properties window
Diffstat (limited to 'plugins')
-rw-r--r--plugins/gtkui/callbacks.c1
-rw-r--r--plugins/gtkui/callbacks.h1
-rw-r--r--plugins/gtkui/deadbeef.glade92
-rw-r--r--plugins/gtkui/interface.c45
-rw-r--r--plugins/gtkui/trkproperties.c40
5 files changed, 176 insertions, 3 deletions
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 @@
<property name="type">tab</property>
</packing>
</child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox24">
+ <property name="border_width">12</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">8</property>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow6">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTreeView" id="properties">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">True</property>
+ <property name="rules_hint">True</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">True</property>
+ <property name="fixed_height_mode">False</property>
+ <property name="hover_selection">False</property>
+ <property name="hover_expand">False</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHButtonBox" id="hbuttonbox2">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkButton" id="button2">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Close</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <signal name="clicked" handler="on_closebtn_clicked" last_modification_time="Sun, 18 Apr 2010 10:49:02 GMT"/>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label80">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Properties</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
</widget>
</child>
</widget>
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));
}