diff options
author | Alexey Yakovenko <wakeroid@gmail.com> | 2010-04-18 12:52:51 +0200 |
---|---|---|
committer | Alexey Yakovenko <wakeroid@gmail.com> | 2010-04-18 12:52:51 +0200 |
commit | 47814dcd4e5749be883042999920308936d9a899 (patch) | |
tree | 313ec39562fb1386de43183e69ee4f6342279f06 /plugins | |
parent | 78bf582fb29151a916d2c93e9f056d9464d1f997 (diff) |
added new info page to track properties window
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/gtkui/callbacks.c | 1 | ||||
-rw-r--r-- | plugins/gtkui/callbacks.h | 1 | ||||
-rw-r--r-- | plugins/gtkui/deadbeef.glade | 92 | ||||
-rw-r--r-- | plugins/gtkui/interface.c | 45 | ||||
-rw-r--r-- | plugins/gtkui/trkproperties.c | 40 |
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)); } |