banshee r4160 - in trunk/banshee: . src/Core/Banshee.Core/Banshee.Collection src/Core/Banshee.Core/Banshee.Streaming src/Core/Banshee.Services/Banshee.Collection.Database src/Core/Banshee.Services/Banshee.Database src/Core/Banshee.Services/Banshee.Query src/Core/Banshee.ThickClient/Banshee.Collection.Gui src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs src/Core/Banshee.ThickClient/Resources src/Extensions/Banshee.AudioCd/Banshee.AudioCd src/Libraries/Hyena/Hyena.Data.Sqlite src/Libraries/Hyena/Hyena.Query
- From: gburt svn gnome org
- To: svn-commits-list gnome org
- Subject: banshee r4160 - in trunk/banshee: . src/Core/Banshee.Core/Banshee.Collection src/Core/Banshee.Core/Banshee.Streaming src/Core/Banshee.Services/Banshee.Collection.Database src/Core/Banshee.Services/Banshee.Database src/Core/Banshee.Services/Banshee.Query src/Core/Banshee.ThickClient/Banshee.Collection.Gui src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs src/Core/Banshee.ThickClient/Resources src/Extensions/Banshee.AudioCd/Banshee.AudioCd src/Libraries/Hyena/Hyena.Data.Sqlite src/Libraries/Hyena/Hyena.Query
- Date: Tue, 17 Jun 2008 22:35:41 +0000 (UTC)
Author: gburt
Date: Tue Jun 17 22:35:41 2008
New Revision: 4160
URL: http://svn.gnome.org/viewvc/banshee?rev=4160&view=rev
Log:
2008-06-17 Gabriel Burt <gabriel burt gmail com>
* src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdDiscModel.cs:
* src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdTrackInfo.cs:
* src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdRipper.cs:
* src/Core/Banshee.ThickClient/Banshee.Collection.Gui/DefaultColumnController.cs:
* src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/TrackEditor.cs:
* src/Core/Banshee.ThickClient/Resources/banshee-dialogs.glade:
* src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumInfo.cs:
* src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumListModel.cs:
* src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs:
* src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseFilterListModel.cs:
* src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs:
* src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs:
* src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs:
* src/Core/Banshee.Core/Banshee.Streaming/SaveTrackMetadataJob.cs:
* src/Core/Banshee.Core/Banshee.Streaming/StreamTagger.cs:
* src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs:
This commit adds support for multi-artist (compilation) albums. It
triggers a metadata refresh for already imported items to get the
AlbumArtist metadata from the files, and gets it for new ones on import.
It also writes AlbumArtist back to the files if the preference is set.
Given proper AlbumArtist info (editable in the information editor), the
issues with sorting and many-copies-of-one-album in the album list should
be fixed (BGO #517671)
Added:
trunk/banshee/src/Libraries/Hyena/Hyena.Query/DefaultQueryField.cs
Modified:
trunk/banshee/ChangeLog
trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs
trunk/banshee/src/Core/Banshee.Core/Banshee.Streaming/SaveTrackMetadataJob.cs
trunk/banshee/src/Core/Banshee.Core/Banshee.Streaming/StreamTagger.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumInfo.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumListModel.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseFilterListModel.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/DefaultColumnController.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/TrackEditor.cs
trunk/banshee/src/Core/Banshee.ThickClient/Resources/banshee-dialogs.glade
trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdDiscModel.cs
trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdRipper.cs
trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdTrackInfo.cs
trunk/banshee/src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs
Modified: trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs (original)
+++ trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs Tue Jun 17 22:35:41 2008
@@ -1,4 +1,4 @@
-//
+
// TrackInfo.cs
//
// Author:
@@ -47,6 +47,7 @@
private string artist_name;
private string album_title;
+ private string album_artist;
private string track_title;
private string genre;
private string composer;
@@ -146,6 +147,11 @@
set { album_title = value; }
}
+ public virtual string AlbumArtist {
+ get { return album_artist; }
+ set { album_artist = value; }
+ }
+
public virtual string TrackTitle {
get { return track_title; }
set { track_title = value; }
@@ -197,7 +203,7 @@
}
public virtual string ArtworkId {
- get { return CoverArtSpec.CreateArtistAlbumId (ArtistName, AlbumTitle); }
+ get { return CoverArtSpec.CreateArtistAlbumId (AlbumArtist, AlbumTitle); }
}
public virtual string Genre {
Modified: trunk/banshee/src/Core/Banshee.Core/Banshee.Streaming/SaveTrackMetadataJob.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Banshee.Streaming/SaveTrackMetadataJob.cs (original)
+++ trunk/banshee/src/Core/Banshee.Core/Banshee.Streaming/SaveTrackMetadataJob.cs Tue Jun 17 22:35:41 2008
@@ -65,6 +65,7 @@
TagLib.File file = StreamTagger.ProcessUri (track.Uri);
file.Tag.Performers = new string [] { track.ArtistName };
file.Tag.Album = track.AlbumTitle;
+ file.Tag.AlbumArtists = track.AlbumArtist == null ? new string [0] : new string [] {track.AlbumArtist};
// Bug in taglib-sharp-2.0.3.0: Crash if you send it a genre of "{ null }"
// on a song with both ID3v1 and ID3v2 metadata. It's happy with "{}", though.
// (see http://forum.taglib-sharp.com/viewtopic.php?f=5&t=239 )
Modified: trunk/banshee/src/Core/Banshee.Core/Banshee.Streaming/StreamTagger.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Banshee.Streaming/StreamTagger.cs (original)
+++ trunk/banshee/src/Core/Banshee.Core/Banshee.Streaming/StreamTagger.cs Tue Jun 17 22:35:41 2008
@@ -114,6 +114,7 @@
track.ArtistName = Choose (file.Tag.JoinedPerformers, track.ArtistName, preferTrackInfo);
track.AlbumTitle = Choose (file.Tag.Album, track.AlbumTitle, preferTrackInfo);
+ track.AlbumArtist = Choose (file.Tag.FirstAlbumArtist, track.AlbumArtist, preferTrackInfo);
track.TrackTitle = Choose (file.Tag.Title, track.TrackTitle, preferTrackInfo);
track.Genre = Choose (file.Tag.FirstGenre, track.Genre, preferTrackInfo);
track.Composer = Choose (file.Tag.FirstComposer, track.Composer, preferTrackInfo);
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumInfo.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumInfo.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumInfo.cs Tue Jun 17 22:35:41 2008
@@ -106,6 +106,7 @@
if (found != album) {
// Overwrite the found album
album.Title = found.Title;
+ album.ArtistName = found.ArtistName;
album.dbid = found.DbId;
album.ArtistId = found.ArtistId;
album.Save ();
@@ -158,12 +159,17 @@
get { return Title == null ? null : Title.ToLower (); }
}
- [VirtualDatabaseColumn("Name", "CoreArtists", "ArtistID", "ArtistID")]
+ [DatabaseColumn]
public override string ArtistName {
get { return base.ArtistName; }
set { base.ArtistName = value; }
}
+ [DatabaseColumn(Select = false)]
+ protected string ArtistNameLowered {
+ get { return ArtistName == null ? null : ArtistName.ToLower (); }
+ }
+
public override string ToString ()
{
return String.Format ("<LibraryAlbumInfo Title={0} DbId={1}>", Title, DbId);
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumListModel.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumListModel.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumListModel.cs Tue Jun 17 22:35:41 2008
@@ -52,7 +52,7 @@
WHERE CoreCache.ModelID = {1} AND
CoreCache.ItemId = {2})
{3}
- ORDER BY CoreAlbums.TitleLowered, CoreArtists.NameLowered";
+ ORDER BY CoreAlbums.TitleLowered, CoreAlbums.ArtistNameLowered";
}
public override string FilterColumn {
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseFilterListModel.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseFilterListModel.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseFilterListModel.cs Tue Jun 17 22:35:41 2008
@@ -81,8 +81,8 @@
FilteredModel.CachesJoinTableEntries
? String.Format (
"{0}.{1} AND CoreTracks.TrackID = {0}.{2}",
- FilteredModel.JoinTable, FilteredModel.JoinPrimaryKey, FilteredModel.JoinColumn
- ) : "CoreTracks.TrackID",
+ FilteredModel.JoinTable, FilteredModel.JoinPrimaryKey, FilteredModel.JoinColumn)
+ : "CoreTracks.TrackID",
GetFilterFragment ()
);
}
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs Tue Jun 17 22:35:41 2008
@@ -121,9 +121,9 @@
public DatabaseArtistInfo Artist {
get { return DatabaseArtistInfo.FindOrCreate (ArtistName); }
}
-
+
public DatabaseAlbumInfo Album {
- get { return DatabaseAlbumInfo.FindOrCreate (Artist, AlbumTitle); }
+ get { return DatabaseAlbumInfo.FindOrCreate (DatabaseArtistInfo.FindOrCreate (AlbumArtist), AlbumTitle); }
}
private static bool notify_saved = true;
@@ -225,11 +225,16 @@
if (value == null)
return;
+ // Overwrite the AlbumArtist if it was set to our old value
+ if (String.IsNullOrEmpty (AlbumArtist) || AlbumArtist == ArtistName) {
+ AlbumArtist = value;
+ }
+
base.ArtistName = value;
artist_changed = artist_changed != null;
}
}
-
+
[VirtualDatabaseColumn ("Title", "CoreAlbums", "AlbumID", "AlbumID")]
public override string AlbumTitle {
get { return base.AlbumTitle; }
@@ -242,6 +247,19 @@
album_changed = album_changed != null;
}
}
+
+ [VirtualDatabaseColumn ("ArtistName", "CoreAlbums", "AlbumID", "AlbumID")]
+ public override string AlbumArtist {
+ get { return base.AlbumArtist; }
+ set {
+ value = CleanseString (value, AlbumArtist);
+ if (value == null)
+ return;
+
+ base.AlbumArtist = value;
+ album_changed = album_changed != null;
+ }
+ }
private static string CleanseString (string input, string old_val)
{
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs Tue Jun 17 22:35:41 2008
@@ -52,8 +52,8 @@
// NOTE: Whenever there is a change in ANY of the database schema,
// this version MUST be incremented and a migration method
// MUST be supplied to match the new version number
- protected const int CURRENT_VERSION = 11;
- protected const int CURRENT_METADATA_VERSION = 1;
+ protected const int CURRENT_VERSION = 12;
+ protected const int CURRENT_METADATA_VERSION = 2;
#region Migration Driver
@@ -407,6 +407,18 @@
#endregion
+#region Version 12
+
+ [DatabaseVersion (12)]
+ private bool Migrate_12 ()
+ {
+ Execute ("ALTER TABLE CoreAlbums ADD COLUMN ArtistName STRING");
+ Execute ("ALTER TABLE CoreAlbums ADD COLUMN ArtistNameLowered STRING");
+ return true;
+ }
+
+#endregion
+
#pragma warning restore 0169
#region Fresh database setup
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs Tue Jun 17 22:35:41 2008
@@ -225,7 +225,7 @@
DateAddedField, PlaylistField, SmartPlaylistField
);
- private const string default_sort = @"CoreArtists.NameLowered ASC, CoreAlbums.TitleLowered ASC, CoreTracks.Disc ASC, CoreTracks.TrackNumber ASC, CoreTracks.Uri ASC";
+ private const string default_sort = @"CoreAlbums.ArtistNameLowered ASC, CoreAlbums.TitleLowered ASC, CoreTracks.Disc ASC, CoreTracks.TrackNumber ASC, CoreTracks.Uri ASC";
public static string GetSort (string key)
{
return GetSort (key, false);
@@ -238,8 +238,9 @@
switch(key) {
case "Track":
sort_query = String.Format (@"
- CoreArtists.NameLowered ASC,
+ CoreAlbums.ArtistNameLowered ASC,
CoreAlbums.TitleLowered ASC,
+ CoreTracks.Disc ASC,
CoreTracks.TrackNumber {0}", ascDesc);
break;
@@ -263,7 +264,7 @@
case "Title":
sort_query = String.Format (@"
CoreTracks.TitleLowered {0},
- CoreArtists.NameLowered ASC,
+ CoreAlbums.ArtistNameLowered ASC,
CoreAlbums.TitleLowered ASC", ascDesc);
break;
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/DefaultColumnController.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/DefaultColumnController.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/DefaultColumnController.cs Tue Jun 17 22:35:41 2008
@@ -52,7 +52,7 @@
{
if (loadDefault) {
AddDefaultColumns ();
- DefaultSortColumn = ArtistColumn;
+ DefaultSortColumn = TrackColumn;
Load ();
}
}
@@ -99,7 +99,7 @@
public SortableColumn TitleColumn {
get { return title_column; }
}
-
+
private SortableColumn artist_column = new SortableColumn (Catalog.GetString ("Artist"),
new ColumnCellText ("ArtistName", true), 0.225, "Artist", true);
public SortableColumn ArtistColumn {
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/TrackEditor.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/TrackEditor.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/TrackEditor.cs Tue Jun 17 22:35:41 2008
@@ -55,6 +55,7 @@
public string ArtistName;
public string AlbumTitle;
+ public string AlbumArtist;
public string TrackTitle;
public string Genre;
public SafeUri Uri;
@@ -86,6 +87,7 @@
{
ArtistName = track.ArtistName ?? String.Empty;
AlbumTitle = track.AlbumTitle ?? String.Empty;
+ AlbumArtist = track.AlbumArtist ?? String.Empty;
TrackTitle = track.TrackTitle ?? String.Empty;
Genre = track.Genre ?? String.Empty;
Disc = track.Disc;
@@ -100,6 +102,7 @@
{
track.ArtistName = ArtistName;
track.AlbumTitle = AlbumTitle;
+ track.AlbumArtist = AlbumArtist;
track.TrackTitle = TrackTitle;
track.Genre = Genre;
track.Disc = Disc;
@@ -124,6 +127,7 @@
[Widget] private Button Next;
[Widget] private Button TrackNumberIterator;
[Widget] private Button TrackCountSync;
+ [Widget] private Button AlbumArtistSync;
[Widget] private Button ArtistSync;
[Widget] private Button AlbumSync;
[Widget] private Button YearSync;
@@ -135,6 +139,7 @@
[Widget] private SpinButton TrackNumber;
[Widget] private SpinButton Disc;
[Widget] private Entry Year;
+ [Widget] private Entry AlbumArtist;
[Widget] private Entry Artist;
[Widget] private Entry Album;
[Widget] private Entry Title;
@@ -189,6 +194,7 @@
TrackNumberIterator.Clicked += OnTrackNumberIteratorClicked;
TrackCountSync.Clicked += OnTrackCountSyncClicked;
ArtistSync.Clicked += OnArtistSyncClicked;
+ AlbumArtistSync.Clicked += OnAlbumArtistSyncClicked;
AlbumSync.Clicked += OnAlbumSyncClicked;
GenreSync.Clicked += OnGenreSyncClicked;
DiscSync.Clicked += OnDiscSyncClicked;
@@ -225,6 +231,7 @@
Glade["MultiTrackButtons"].Visible = TrackSet.Count > 1;
TrackNumberIterator.Visible = TrackSet.Count > 1;
TrackCountSync.Visible = TrackSet.Count > 1;
+ AlbumArtistSync.Visible = TrackSet.Count > 1;
ArtistSync.Visible = TrackSet.Count > 1;
AlbumSync.Visible = TrackSet.Count > 1;
GenreSync.Visible = TrackSet.Count > 1;
@@ -238,7 +245,8 @@
tips.SetTip (TrackNumberIterator, Catalog.GetString ("Automatically set all track numbers in increasing order"), "track iterator");
tips.SetTip (TrackCountSync, Catalog.GetString ("Set all track counts to this value"), "track counts");
- tips.SetTip (ArtistSync, Catalog.GetString ("Set all artists to this value"), "artists");
+ tips.SetTip (AlbumArtistSync, Catalog.GetString ("Set all album artists to this value"), "artists");
+ tips.SetTip (ArtistSync, Catalog.GetString ("Set all track artists to this value"), "artists");
tips.SetTip (AlbumSync, Catalog.GetString ("Set all albums to this value"), "albums");
tips.SetTip (DiscSync, Catalog.GetString ("Set all disc numbers to this value"), "discs");
tips.SetTip (GenreSync, Catalog.GetString ("Set all genres to this value"), "genres");
@@ -297,6 +305,7 @@
Year.Text = track.Year.ToString ();
rating_entry.Value = (int)track.Rating;
+ (Glade["AlbumArtist"] as Entry).Text = track.AlbumArtist;
(Glade["Artist"] as Entry).Text = track.ArtistName;
(Glade["Album"] as Entry).Text = track.AlbumTitle;
(Glade["Title"] as Entry).Text = track.TrackTitle;
@@ -477,6 +486,13 @@
track.Disc = (int)Disc.Value;
}
}
+
+ private void OnAlbumArtistSyncClicked (object o, EventArgs args)
+ {
+ foreach (EditorTrack track in TrackSet) {
+ track.AlbumArtist = AlbumArtist.Text;
+ }
+ }
private void OnArtistSyncClicked (object o, EventArgs args)
{
@@ -498,6 +514,7 @@
OnGenreSyncClicked (o, args);
OnDiscSyncClicked (o, args);
OnAlbumSyncClicked (o, args);
+ OnAlbumArtistSyncClicked (o, args);
OnArtistSyncClicked (o, args);
OnYearSyncClicked (o, args);
OnRatingSyncClicked (o, args);
@@ -571,6 +588,7 @@
track.TrackNumber = (int)TrackNumber.Value;
track.TrackCount = (int)TrackCount.Value;
track.Disc = (int)Disc.Value;
+ track.AlbumArtist = AlbumArtist.Text;
track.ArtistName = Artist.Text;
track.AlbumTitle = Album.Text;
track.TrackTitle = Title.Text;
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Resources/banshee-dialogs.glade
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Resources/banshee-dialogs.glade (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Resources/banshee-dialogs.glade Tue Jun 17 22:35:41 2008
@@ -16,619 +16,676 @@
<child>
<widget class="GtkVBox" id="EditorVBox">
<property name="visible">True</property>
- <child>
- <widget class="GtkTable" id="EditorTable">
- <property name="visible">True</property>
- <property name="border_width">10</property>
- <property name="n_rows">10</property>
- <property name="n_columns">4</property>
- <property name="column_spacing">2</property>
- <property name="row_spacing">5</property>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
<child>
- <widget class="GtkAlignment" id="RatingContainerAlignment">
+ <widget class="GtkTable" id="EditorTable">
<property name="visible">True</property>
- <property name="left_padding">10</property>
+ <property name="border_width">10</property>
+ <property name="n_rows">11</property>
+ <property name="n_columns">4</property>
+ <property name="column_spacing">2</property>
+ <property name="row_spacing">5</property>
<child>
- <widget class="GtkHBox" id="RatingContainer">
+ <widget class="GtkButton" id="AlbumArtistSync">
<property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NONE</property>
+ <property name="response_id">0</property>
<child>
- <placeholder/>
+ <widget class="GtkImage" id="image3">
+ <property name="visible">True</property>
+ <property name="stock">gtk-copy</property>
+ <property name="icon_size">1</property>
+ </widget>
</child>
</widget>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
</child>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">8</property>
- <property name="bottom_attach">9</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="RatingLabel">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>_Rating:</b></property>
- <property name="use_markup">True</property>
- <property name="use_underline">True</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">8</property>
- <property name="bottom_attach">9</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="RatingSync">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="relief">GTK_RELIEF_NONE</property>
- <property name="response_id">0</property>
<child>
- <widget class="GtkImage" id="image24">
+ <widget class="GtkLabel" id="label42">
<property name="visible">True</property>
- <property name="stock">gtk-copy</property>
- <property name="icon_size">1</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>Track _number:</b></property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">TrackNumber</property>
</widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label43">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>Track _count:</b></property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">TrackCount</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
</child>
- </widget>
- <packing>
- <property name="top_attach">8</property>
- <property name="bottom_attach">9</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="TrackNumberIterator">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="relief">GTK_RELIEF_NONE</property>
- <property name="response_id">0</property>
<child>
- <widget class="GtkImage" id="TrackNumberIteratorImage">
+ <widget class="GtkLabel" id="label54">
<property name="visible">True</property>
- <property name="stock">gnome-stock-text-numbered-list</property>
- <property name="icon_size">3</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>_Disc:</b></property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">Disc</property>
</widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label66">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>_Year:</b></property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">Year</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">8</property>
+ <property name="bottom_attach">9</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
</child>
- </widget>
- <packing>
- <property name="left_attach">3</property>
- <property name="right_attach">4</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">6</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <widget class="GtkAlignment" id="SyncAllAlignment">
- <property name="visible">True</property>
- <property name="top_padding">10</property>
<child>
- <widget class="GtkButton" id="SyncAll">
+ <widget class="GtkButton" id="ArtistSync">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="relief">GTK_RELIEF_NONE</property>
<property name="response_id">0</property>
<child>
- <widget class="GtkAlignment" id="alignment17">
+ <widget class="GtkImage" id="image5">
<property name="visible">True</property>
- <property name="xscale">0</property>
- <property name="yscale">0</property>
- <child>
- <widget class="GtkHBox" id="hbox22">
- <property name="visible">True</property>
- <property name="spacing">2</property>
- <child>
- <widget class="GtkImage" id="image20">
- <property name="visible">True</property>
- <property name="stock">gtk-copy</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label84">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Apply common field values to all tracks</property>
- <property name="use_underline">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- </child>
+ <property name="stock">gtk-copy</property>
+ <property name="icon_size">1</property>
</widget>
</child>
</widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
</child>
- </widget>
- <packing>
- <property name="right_attach">4</property>
- <property name="top_attach">9</property>
- <property name="bottom_attach">10</property>
- <property name="x_options"></property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkAlignment" id="alignment22">
- <property name="visible">True</property>
- <property name="left_padding">10</property>
<child>
- <widget class="GtkSpinButton" id="TrackNumber">
+ <widget class="GtkButton" id="AlbumSync">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="adjustment">1 0 1000 1 10 10</property>
- <property name="climb_rate">1</property>
+ <property name="relief">GTK_RELIEF_NONE</property>
+ <property name="response_id">0</property>
+ <child>
+ <widget class="GtkImage" id="image6">
+ <property name="visible">True</property>
+ <property name="stock">gtk-copy</property>
+ <property name="icon_size">1</property>
+ </widget>
+ </child>
</widget>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
</child>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkAlignment" id="alignment25">
- <property name="visible">True</property>
- <property name="left_padding">10</property>
<child>
- <widget class="GtkEntry" id="Year">
+ <widget class="GtkButton" id="GenreSync">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="invisible_char">â</property>
+ <property name="relief">GTK_RELIEF_NONE</property>
+ <property name="response_id">0</property>
+ <child>
+ <widget class="GtkImage" id="image9">
+ <property name="visible">True</property>
+ <property name="stock">gtk-copy</property>
+ <property name="icon_size">1</property>
+ </widget>
+ </child>
</widget>
+ <packing>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
</child>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">7</property>
- <property name="bottom_attach">8</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkAlignment" id="alignment24">
- <property name="visible">True</property>
- <property name="left_padding">10</property>
<child>
- <widget class="GtkSpinButton" id="Disc">
+ <widget class="GtkButton" id="TrackCountSync">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="adjustment">1 0 1000 1 10 10</property>
- <property name="climb_rate">1</property>
+ <property name="relief">GTK_RELIEF_NONE</property>
+ <property name="response_id">0</property>
+ <child>
+ <widget class="GtkImage" id="image4">
+ <property name="visible">True</property>
+ <property name="stock">gtk-copy</property>
+ <property name="icon_size">1</property>
+ </widget>
+ </child>
</widget>
+ <packing>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
</child>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkAlignment" id="alignment23">
- <property name="visible">True</property>
- <property name="left_padding">10</property>
<child>
- <widget class="GtkSpinButton" id="TrackCount">
+ <widget class="GtkButton" id="DiscSync">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="adjustment">1 0 1000 1 10 10</property>
- <property name="climb_rate">1</property>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkAlignment" id="alignment21">
- <property name="visible">True</property>
- <property name="left_padding">10</property>
- <child>
- <widget class="GtkComboBoxEntry" id="Genre">
- <property name="visible">True</property>
- <child internal-child="entry">
- <widget class="GtkEntry" id="comboboxentry-entry1">
+ <property name="relief">GTK_RELIEF_NONE</property>
+ <property name="response_id">0</property>
+ <child>
+ <widget class="GtkImage" id="image4">
+ <property name="visible">True</property>
+ <property name="stock">gtk-copy</property>
+ <property name="icon_size">1</property>
</widget>
</child>
</widget>
+ <packing>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
</child>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">4</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <widget class="GtkAlignment" id="alignment20">
- <property name="visible">True</property>
- <property name="left_padding">10</property>
<child>
- <widget class="GtkHBox" id="hbox23">
+ <widget class="GtkButton" id="YearSync">
<property name="visible">True</property>
- <property name="spacing">5</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NONE</property>
+ <property name="response_id">0</property>
<child>
- <widget class="GtkEntry" id="Title">
+ <widget class="GtkImage" id="image10">
<property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="stock">gtk-copy</property>
+ <property name="icon_size">1</property>
</widget>
</child>
+ </widget>
+ <packing>
+ <property name="top_attach">8</property>
+ <property name="bottom_attach">9</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label63">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>_Genre:</b></property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">Genre</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label46">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>_Title:</b></property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">Title</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label45">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>Albu_m:</b></property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">Album</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label44">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>Track _Artist:</b></property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">Artist</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkAlignment" id="alignment18">
+ <property name="visible">True</property>
+ <property name="left_padding">10</property>
<child>
- <widget class="GtkButton" id="EnterNextTitle">
+ <widget class="GtkEntry" id="Artist">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Enter Next</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
</widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
</child>
</widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
+ </packing>
</child>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">4</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkAlignment" id="alignment19">
- <property name="visible">True</property>
- <property name="left_padding">10</property>
<child>
- <widget class="GtkEntry" id="Album">
+ <widget class="GtkLabel" id="label044">
<property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>Al_bum Artist:</b></property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">Artist</property>
</widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
</child>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">4</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkAlignment" id="alignment18">
- <property name="visible">True</property>
- <property name="left_padding">10</property>
<child>
- <widget class="GtkEntry" id="Artist">
+ <widget class="GtkAlignment" id="alignment018">
<property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="left_padding">10</property>
+ <child>
+ <widget class="GtkEntry" id="AlbumArtist">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </widget>
+ </child>
</widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">4</property>
+ <property name="y_options"></property>
+ </packing>
</child>
- </widget>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">4</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label44">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>_Artist:</b></property>
- <property name="use_markup">True</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">Artist</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label45">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Albu_m:</b></property>
- <property name="use_markup">True</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">Album</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label46">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>_Title:</b></property>
- <property name="use_markup">True</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">Title</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label63">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>_Genre:</b></property>
- <property name="use_markup">True</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">Genre</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="YearSync">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="relief">GTK_RELIEF_NONE</property>
- <property name="response_id">0</property>
<child>
- <widget class="GtkImage" id="image10">
+ <widget class="GtkAlignment" id="alignment19">
<property name="visible">True</property>
- <property name="stock">gtk-copy</property>
- <property name="icon_size">1</property>
+ <property name="left_padding">10</property>
+ <child>
+ <widget class="GtkEntry" id="Album">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </widget>
+ </child>
</widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"></property>
+ </packing>
</child>
- </widget>
- <packing>
- <property name="top_attach">7</property>
- <property name="bottom_attach">8</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="DiscSync">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="relief">GTK_RELIEF_NONE</property>
- <property name="response_id">0</property>
<child>
- <widget class="GtkImage" id="image4">
+ <widget class="GtkAlignment" id="alignment20">
<property name="visible">True</property>
- <property name="stock">gtk-copy</property>
- <property name="icon_size">1</property>
+ <property name="left_padding">10</property>
+ <child>
+ <widget class="GtkHBox" id="hbox23">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <widget class="GtkEntry" id="Title">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkButton" id="EnterNextTitle">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Enter Next</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
</widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options"></property>
+ </packing>
</child>
- </widget>
- <packing>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="TrackCountSync">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="relief">GTK_RELIEF_NONE</property>
- <property name="response_id">0</property>
<child>
- <widget class="GtkImage" id="image4">
+ <widget class="GtkAlignment" id="alignment21">
<property name="visible">True</property>
- <property name="stock">gtk-copy</property>
- <property name="icon_size">1</property>
+ <property name="left_padding">10</property>
+ <child>
+ <widget class="GtkComboBoxEntry" id="Genre">
+ <property name="visible">True</property>
+ <child internal-child="entry">
+ <widget class="GtkEntry" id="comboboxentry-entry1">
+ </widget>
+ </child>
+ </widget>
+ </child>
</widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
</child>
- </widget>
- <packing>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="GenreSync">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="relief">GTK_RELIEF_NONE</property>
- <property name="response_id">0</property>
<child>
- <widget class="GtkImage" id="image9">
+ <widget class="GtkAlignment" id="alignment23">
<property name="visible">True</property>
- <property name="stock">gtk-copy</property>
- <property name="icon_size">1</property>
+ <property name="left_padding">10</property>
+ <child>
+ <widget class="GtkSpinButton" id="TrackCount">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">1 0 1000 1 10 10</property>
+ <property name="climb_rate">1</property>
+ </widget>
+ </child>
</widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
+ <property name="y_options"></property>
+ </packing>
</child>
- </widget>
- <packing>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="AlbumSync">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="relief">GTK_RELIEF_NONE</property>
- <property name="response_id">0</property>
<child>
- <widget class="GtkImage" id="image6">
+ <widget class="GtkAlignment" id="alignment24">
<property name="visible">True</property>
- <property name="stock">gtk-copy</property>
- <property name="icon_size">1</property>
+ <property name="left_padding">10</property>
+ <child>
+ <widget class="GtkSpinButton" id="Disc">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">1 0 1000 1 10 10</property>
+ <property name="climb_rate">1</property>
+ </widget>
+ </child>
</widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
+ <property name="y_options"></property>
+ </packing>
</child>
- </widget>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="ArtistSync">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="relief">GTK_RELIEF_NONE</property>
- <property name="response_id">0</property>
<child>
- <widget class="GtkImage" id="image5">
+ <widget class="GtkAlignment" id="alignment25">
<property name="visible">True</property>
- <property name="stock">gtk-copy</property>
- <property name="icon_size">1</property>
+ <property name="left_padding">10</property>
+ <child>
+ <widget class="GtkEntry" id="Year">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </widget>
+ </child>
</widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">8</property>
+ <property name="bottom_attach">9</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkAlignment" id="alignment22">
+ <property name="visible">True</property>
+ <property name="left_padding">10</property>
+ <child>
+ <widget class="GtkSpinButton" id="TrackNumber">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="adjustment">1 0 1000 1 10 10</property>
+ <property name="climb_rate">1</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkAlignment" id="SyncAllAlignment">
+ <property name="visible">True</property>
+ <property name="top_padding">10</property>
+ <child>
+ <widget class="GtkButton" id="SyncAll">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NONE</property>
+ <property name="response_id">0</property>
+ <child>
+ <widget class="GtkAlignment" id="alignment17">
+ <property name="visible">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <widget class="GtkHBox" id="hbox22">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <widget class="GtkImage" id="image20">
+ <property name="visible">True</property>
+ <property name="stock">gtk-copy</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label84">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Apply common field values to all tracks</property>
+ <property name="use_underline">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="right_attach">4</property>
+ <property name="top_attach">10</property>
+ <property name="bottom_attach">11</property>
+ <property name="x_options"></property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="TrackNumberIterator">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NONE</property>
+ <property name="response_id">0</property>
+ <child>
+ <widget class="GtkImage" id="TrackNumberIteratorImage">
+ <property name="visible">True</property>
+ <property name="stock">gnome-stock-text-numbered-list</property>
+ <property name="icon_size">3</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">7</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="RatingSync">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NONE</property>
+ <property name="response_id">0</property>
+ <child>
+ <widget class="GtkImage" id="image24">
+ <property name="visible">True</property>
+ <property name="stock">gtk-copy</property>
+ <property name="icon_size">1</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="top_attach">9</property>
+ <property name="bottom_attach">10</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="RatingLabel">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>_Rating:</b></property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">9</property>
+ <property name="bottom_attach">10</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkAlignment" id="RatingContainerAlignment">
+ <property name="visible">True</property>
+ <property name="left_padding">10</property>
+ <child>
+ <widget class="GtkHBox" id="RatingContainer">
+ <property name="visible">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">9</property>
+ <property name="bottom_attach">10</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
</child>
</widget>
- <packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label66">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>_Year:</b></property>
- <property name="use_markup">True</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">Year</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">7</property>
- <property name="bottom_attach">8</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label54">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>_Disc:</b></property>
- <property name="use_markup">True</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">Disc</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label43">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Track _count:</b></property>
- <property name="use_markup">True</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">TrackCount</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label42">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Track _number:</b></property>
- <property name="use_markup">True</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">TrackNumber</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
</child>
</widget>
</child>
- </widget>
- </child>
<child>
<widget class="GtkLabel" id="label63">
<property name="visible">True</property>
@@ -664,25 +721,50 @@
<property name="column_spacing">10</property>
<property name="row_spacing">2</property>
<child>
- <widget class="GtkAlignment" id="alignment28">
+ <widget class="GtkCheckButton" id="EmbedCoverArt">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Embed directly in song</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox25">
<property name="visible">True</property>
- <property name="top_padding">10</property>
<child>
- <widget class="GtkCheckButton" id="CopyCoverArt">
+ <widget class="GtkButton" id="CoverButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Save to song directory</property>
- <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NONE</property>
<property name="response_id">0</property>
- <property name="draw_indicator">True</property>
+ <child>
+ <widget class="GtkImage" id="CoverImage">
+ <property name="visible">True</property>
+ <property name="stock">gtk-missing-image</property>
+ <property name="icon_size">6</property>
+ </widget>
+ </child>
</widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
</child>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
@@ -770,48 +852,23 @@
</packing>
</child>
<child>
- <widget class="GtkVBox" id="vbox25">
+ <widget class="GtkAlignment" id="alignment28">
<property name="visible">True</property>
+ <property name="top_padding">10</property>
<child>
- <widget class="GtkButton" id="CoverButton">
+ <widget class="GtkCheckButton" id="CopyCoverArt">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="relief">GTK_RELIEF_NONE</property>
+ <property name="label" translatable="yes">Save to song directory</property>
+ <property name="use_underline">True</property>
<property name="response_id">0</property>
- <child>
- <widget class="GtkImage" id="CoverImage">
- <property name="visible">True</property>
- <property name="stock">gtk-missing-image</property>
- <property name="icon_size">6</property>
- </widget>
- </child>
+ <property name="draw_indicator">True</property>
</widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
</child>
</widget>
<packing>
- <property name="bottom_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <widget class="GtkCheckButton" id="EmbedCoverArt">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Embed directly in song</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
@@ -851,331 +908,329 @@
<property name="column_spacing">10</property>
<property name="row_spacing">5</property>
<child>
- <widget class="GtkLabel" id="SampleRate">
+ <widget class="GtkLabel" id="label71">
<property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Unknown</property>
- <property name="selectable">True</property>
+ <property name="label" translatable="yes"><b>File name:</b></property>
+ <property name="use_markup">True</property>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">8</property>
- <property name="bottom_attach">9</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="Channels">
+ <widget class="GtkEntry" id="Uri">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Unknown</property>
- <property name="selectable">True</property>
+ <property name="editable">False</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">9</property>
- <property name="bottom_attach">10</property>
- <property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkAlignment" id="alignment8">
+ <widget class="GtkLabel" id="label72">
<property name="visible">True</property>
- <property name="top_padding">10</property>
- <child>
- <widget class="GtkLabel" id="BitRate">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Unknown</property>
- <property name="selectable">True</property>
- </widget>
- </child>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>Location:</b></property>
+ <property name="use_markup">True</property>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">7</property>
- <property name="bottom_attach">8</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
+ <property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkAlignment" id="alignment7">
+ <widget class="GtkEntry" id="Location">
<property name="visible">True</property>
- <property name="top_padding">10</property>
- <child>
- <widget class="GtkLabel" id="PlayCountLabel">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">0</property>
- <property name="use_markup">True</property>
- <property name="selectable">True</property>
- </widget>
- </child>
+ <property name="can_focus">True</property>
+ <property name="editable">False</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <widget class="GtkAlignment" id="alignment6">
- <property name="visible">True</property>
- <property name="top_padding">10</property>
- <child>
- <widget class="GtkLabel" id="label81">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Bitrate:</b></property>
- <property name="use_markup">True</property>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="top_attach">7</property>
- <property name="bottom_attach">8</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <widget class="GtkAlignment" id="alignment5">
- <property name="visible">True</property>
- <property name="top_padding">10</property>
- <child>
- <widget class="GtkLabel" id="label76">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Play count:</b></property>
- <property name="use_markup">True</property>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label83">
+ <widget class="GtkLabel" id="label73">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Channels:</b></property>
+ <property name="label" translatable="yes"><b>Duration:</b></property>
<property name="use_markup">True</property>
</widget>
<packing>
- <property name="top_attach">9</property>
- <property name="bottom_attach">10</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label82">
+ <widget class="GtkLabel" id="label74">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Sample rate:</b></property>
+ <property name="label" translatable="yes"><b>File size:</b></property>
<property name="use_markup">True</property>
</widget>
<packing>
- <property name="top_attach">8</property>
- <property name="bottom_attach">9</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="ImportedLabel">
+ <widget class="GtkLabel" id="DurationLabel">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Unknown</property>
+ <property name="label" translatable="yes">0:00</property>
<property name="use_markup">True</property>
<property name="selectable">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="LastPlayedLabel">
+ <widget class="GtkLabel" id="FileSize">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Unknown</property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">0 MB</property>
<property name="selectable">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label78">
+ <widget class="GtkLabel" id="label77">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Imported on:</b></property>
+ <property name="label" translatable="yes"><b>Last played:</b></property>
<property name="use_markup">True</property>
</widget>
<packing>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label77">
+ <widget class="GtkLabel" id="label78">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Last played:</b></property>
+ <property name="label" translatable="yes"><b>Imported on:</b></property>
<property name="use_markup">True</property>
</widget>
<packing>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="FileSize">
+ <widget class="GtkLabel" id="LastPlayedLabel">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">0 MB</property>
+ <property name="label" translatable="yes">Unknown</property>
+ <property name="use_markup">True</property>
<property name="selectable">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="DurationLabel">
+ <widget class="GtkLabel" id="ImportedLabel">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">0:00</property>
+ <property name="label" translatable="yes">Unknown</property>
<property name="use_markup">True</property>
<property name="selectable">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label74">
+ <widget class="GtkLabel" id="label82">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes"><b>File size:</b></property>
+ <property name="label" translatable="yes"><b>Sample rate:</b></property>
<property name="use_markup">True</property>
</widget>
<packing>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
+ <property name="top_attach">8</property>
+ <property name="bottom_attach">9</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label73">
+ <widget class="GtkLabel" id="label83">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Duration:</b></property>
+ <property name="label" translatable="yes"><b>Channels:</b></property>
<property name="use_markup">True</property>
</widget>
<packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
+ <property name="top_attach">9</property>
+ <property name="bottom_attach">10</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkEntry" id="Location">
+ <widget class="GtkAlignment" id="alignment5">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="editable">False</property>
- <property name="invisible_char">â</property>
+ <property name="top_padding">10</property>
+ <child>
+ <widget class="GtkLabel" id="label76">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>Play count:</b></property>
+ <property name="use_markup">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkAlignment" id="alignment6">
+ <property name="visible">True</property>
+ <property name="top_padding">10</property>
+ <child>
+ <widget class="GtkLabel" id="label81">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><b>Bitrate:</b></property>
+ <property name="use_markup">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkAlignment" id="alignment7">
+ <property name="visible">True</property>
+ <property name="top_padding">10</property>
+ <child>
+ <widget class="GtkLabel" id="PlayCountLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">0</property>
+ <property name="use_markup">True</property>
+ <property name="selectable">True</property>
+ </widget>
+ </child>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="y_options"></property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label72">
+ <widget class="GtkAlignment" id="alignment8">
<property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><b>Location:</b></property>
- <property name="use_markup">True</property>
+ <property name="top_padding">10</property>
+ <child>
+ <widget class="GtkLabel" id="BitRate">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Unknown</property>
+ <property name="selectable">True</property>
+ </widget>
+ </child>
</widget>
<packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
<property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
+ <property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
- <widget class="GtkEntry" id="Uri">
+ <widget class="GtkLabel" id="Channels">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="editable">False</property>
- <property name="invisible_char">â</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Unknown</property>
+ <property name="selectable">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
+ <property name="top_attach">9</property>
+ <property name="bottom_attach">10</property>
+ <property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label71">
+ <widget class="GtkLabel" id="SampleRate">
<property name="visible">True</property>
+ <property name="can_focus">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes"><b>File name:</b></property>
- <property name="use_markup">True</property>
+ <property name="label" translatable="yes">Unknown</property>
+ <property name="selectable">True</property>
</widget>
<packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">8</property>
+ <property name="bottom_attach">9</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
@@ -1360,33 +1415,31 @@
<property name="column_spacing">16</property>
<property name="row_spacing">12</property>
<child>
- <widget class="GtkCheckButton" id="DoNotShowCheckBox">
+ <widget class="GtkLabel" id="MessageLabel">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Do not show this dialog again</property>
- <property name="use_underline">True</property>
- <property name="response_id">0</property>
- <property name="draw_indicator">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Your media library is empty. You may import new music and videos into your library now, or choose to do so later.</property>
+ <property name="wrap">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_EXPAND</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkImage" id="ImportIcon">
+ <widget class="GtkLabel" id="label64">
<property name="visible">True</property>
- <property name="yalign">0</property>
- <property name="stock">gtk-harddisk</property>
- <property name="icon_size">6</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes"><big><b>Import Media to Library</b></big></property>
+ <property name="use_markup">True</property>
</widget>
<packing>
- <property name="bottom_attach">4</property>
- <property name="x_options"></property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options"></property>
</packing>
</child>
<child>
@@ -1415,31 +1468,33 @@
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label64">
+ <widget class="GtkImage" id="ImportIcon">
<property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes"><big><b>Import Media to Library</b></big></property>
- <property name="use_markup">True</property>
+ <property name="yalign">0</property>
+ <property name="stock">gtk-harddisk</property>
+ <property name="icon_size">6</property>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="y_options"></property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="MessageLabel">
+ <widget class="GtkCheckButton" id="DoNotShowCheckBox">
<property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Your media library is empty. You may import new music and videos into your library now, or choose to do so later.</property>
- <property name="wrap">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Do not show this dialog again</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="y_options"></property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_EXPAND</property>
</packing>
</child>
</widget>
@@ -1761,53 +1816,52 @@
<placeholder/>
</child>
<child>
- <widget class="GtkEntry" id="disc_name_entry">
+ <widget class="GtkLabel" id="disc_drive_label">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">â</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Write disc to:</property>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="disc_name_label">
+ <widget class="GtkLabel" id="label72">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Disc name:</property>
+ <property name="label" translatable="yes">Disc format:</property>
</widget>
<packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label72">
+ <widget class="GtkLabel" id="disc_name_label">
<property name="visible">True</property>
<property name="xalign">0</property>
- <property name="label" translatable="yes">Disc format:</property>
+ <property name="label" translatable="yes">Disc name:</property>
</widget>
<packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="disc_drive_label">
+ <widget class="GtkEntry" id="disc_name_entry">
<property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Write disc to:</property>
+ <property name="can_focus">True</property>
</widget>
<packing>
- <property name="x_options">GTK_FILL</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="y_options"></property>
</packing>
</child>
@@ -1856,6 +1910,17 @@
<placeholder/>
</child>
<child>
+ <widget class="GtkLabel" id="label76">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Write speed:</property>
+ </widget>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+ <child>
<widget class="GtkCheckButton" id="eject_checkbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -1873,17 +1938,6 @@
<property name="y_options"></property>
</packing>
</child>
- <child>
- <widget class="GtkLabel" id="label76">
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Write speed:</property>
- </widget>
- <packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"></property>
- </packing>
- </child>
</widget>
</child>
</widget>
@@ -2010,7 +2064,6 @@
<widget class="GtkEntry" id="name_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="invisible_char">â</property>
<property name="activates_default">True</property>
<property name="width_chars">12</property>
</widget>
Modified: trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdDiscModel.cs
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdDiscModel.cs (original)
+++ trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdDiscModel.cs Tue Jun 17 22:35:41 2008
@@ -161,7 +161,6 @@
model_track.Disc = disc_number;
model_track.Album = album;
- model_track.AlbumArtist = artist;
model_track.Artist = new DatabaseArtistInfo ();
model_track.Artist.Name = track.Artist.Name;
model_track.Artist.MusicBrainzId = track.Artist.Id;
Modified: trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdRipper.cs
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdRipper.cs (original)
+++ trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdRipper.cs Tue Jun 17 22:35:41 2008
@@ -200,21 +200,10 @@
track.PrimarySource = ServiceManager.SourceManager.MusicLibrary;
track.Uri = args.Uri;
- if (track.Artist != null) {
- track.Artist = DatabaseArtistInfo.UpdateOrCreate (track.Artist);
- track.ArtistId = track.Artist.DbId;
- }
-
- if (track.Album != null && track.AlbumArtist != null) {
- DatabaseArtistInfo.UpdateOrCreate (track.AlbumArtist);
- track.Album = DatabaseAlbumInfo.UpdateOrCreate (track.AlbumArtist, track.Album);
- track.AlbumId = track.Album.DbId;
- }
-
track.FileSize = Banshee.IO.File.GetSize (track.Uri);
track.Save ();
-
+
source.UnlockTrack (track);
RipNextTrack ();
}
Modified: trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdTrackInfo.cs
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdTrackInfo.cs (original)
+++ trunk/banshee/src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdTrackInfo.cs Tue Jun 17 22:35:41 2008
@@ -60,12 +60,6 @@
get { return index_on_disc; }
}
- public DatabaseArtistInfo album_artist_info;
- public DatabaseArtistInfo AlbumArtist {
- get { return album_artist_info; }
- set { album_artist_info = value; }
- }
-
private DatabaseAlbumInfo album_info;
public new DatabaseAlbumInfo Album {
get { return album_info; }
Modified: trunk/banshee/src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs
==============================================================================
--- trunk/banshee/src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs (original)
+++ trunk/banshee/src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs Tue Jun 17 22:35:41 2008
@@ -662,7 +662,6 @@
StringBuilder where_builder = new StringBuilder ();
Dictionary<string, string> tables = new Dictionary<string,string> (virtual_columns.Count + 1);
- tables.Add (TableName, null);
bool first_virtual = true;
foreach (VirtualDatabaseColumn column in virtual_columns) {
if (first_virtual) {
@@ -693,13 +692,9 @@
}
StringBuilder from_builder = new StringBuilder ();
- bool first_tables = true;
+ from_builder.Append (TableName);
foreach (KeyValuePair<string, string> pair in tables) {
- if (first_tables) {
- first_tables = false;
- } else {
- from_builder.Append (',');
- }
+ from_builder.Append (',');
from_builder.Append (pair.Key);
}
Added: trunk/banshee/src/Libraries/Hyena/Hyena.Query/DefaultQueryField.cs
==============================================================================
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]