[banshee] [FileNamePattern] Bring back static API



commit 139907d8f69223b96c3e16df5cac2897210421d2
Author: Gabriel Burt <gabriel burt gmail com>
Date:   Wed Feb 24 12:18:33 2010 -0800

    [FileNamePattern] Bring back static API
    
    Rename the instance-based API to PathPattern, and have bring back the
    old static FileNamePattern API (verbatim) proxying the Music
    PathPattern.

 .../Banshee.Core/Banshee.Base/FileNamePattern.cs   |  149 ++++------------
 src/Core/Banshee.Core/Banshee.Base/PathPattern.cs  |  188 ++++++++++++++++++++
 src/Core/Banshee.Core/Banshee.Core.csproj          |    1 +
 src/Core/Banshee.Core/Makefile.am                  |    1 +
 .../DatabaseTrackInfo.cs                           |    6 +-
 .../Banshee.Library/LibrarySource.cs               |    2 +-
 .../Banshee.Library/MusicFileNamePattern.cs        |    2 +-
 .../Banshee.Library/MusicLibrarySource.cs          |    5 +-
 .../Banshee.Library/Tests/FileNamePatternTests.cs  |   12 +-
 .../Banshee.Metadata/SaveTrackMetadataJob.cs       |    2 +-
 .../Banshee.Sources/PrimarySource.cs               |    6 +-
 .../DefaultPreferenceWidgets.cs                    |   14 +-
 .../Banshee.Audiobook/AudiobookFileNamePattern.cs  |    2 +-
 13 files changed, 247 insertions(+), 143 deletions(-)
---
diff --git a/src/Core/Banshee.Core/Banshee.Base/FileNamePattern.cs b/src/Core/Banshee.Core/Banshee.Base/FileNamePattern.cs
index ab96cc3..7d5f413 100644
--- a/src/Core/Banshee.Core/Banshee.Base/FileNamePattern.cs
+++ b/src/Core/Banshee.Core/Banshee.Base/FileNamePattern.cs
@@ -6,7 +6,7 @@
 //   Alexander Kojevnikov <alexander kojevnikov com>
 //   Gabriel Burt <gburt novell com>
 //
-// Copyright (C) 2005-2009 Novell, Inc.
+// Copyright (C) 2005-2010 Novell, Inc.
 // Copyright (C) 2009 Alexander Kojevnikov
 //
 // Permission is hereby granted, free of charge, to any person obtaining
@@ -41,151 +41,59 @@ using Banshee.Collection;
 
 namespace Banshee.Base
 {
-    public class FileNamePattern
+    public static class FileNamePattern
     {
         public delegate string ExpandTokenHandler (TrackInfo track, object replace);
         public delegate string FilterHandler (string path);
 
-        public FilterHandler Filter;
+        public static FilterHandler Filter;
+        public static PathPattern MusicPattern { get; set; }
 
-        private SortedList<string, Conversion> conversion_table = new SortedList<string, Conversion> ();
+        public static IEnumerable<Conversion> PatternConversions { get { return MusicPattern.PatternConversions; } }
+        public static string DefaultFolder { get { return MusicPattern.DefaultFolder; } }
+        public static string DefaultFile { get { return MusicPattern.DefaultFile; } }
+        public static string DefaultPattern { get { return MusicPattern.DefaultPattern; } }
+        public static string [] SuggestedFolders { get { return MusicPattern.SuggestedFolders; } }
+        public static string [] SuggestedFiles { get { return MusicPattern.SuggestedFiles; } }
 
-        public FileNamePattern ()
+        public static void AddConversion (string token, string name, ExpandTokenHandler handler)
         {
+            MusicPattern.AddConversion (token, name, handler);
         }
 
-        public void AddConversion (string token, string name, ExpandTokenHandler handler)
+        public static string CreateFolderFilePattern (string folder, string file)
         {
-            conversion_table.Add (token, new Conversion (token, name, handler));
+            return MusicPattern.CreateFolderFilePattern (folder, file);
         }
 
-        public IEnumerable<Conversion> PatternConversions {
-            get { return conversion_table.Values; }
-        }
-
-        public virtual IEnumerable<TrackInfo> SampleTracks {
-            get { yield return new SampleTrackInfo (); }
-        }
-
-        public string DefaultFolder { get; set; }
-        public string DefaultFile   { get; set; }
-
-        public string DefaultPattern {
-            get { return CreateFolderFilePattern (DefaultFolder, DefaultFile); }
-        }
-
-        public SchemaEntry<string> FileSchema { get; set; }
-        public SchemaEntry<string> FolderSchema { get; set; }
-
-        public string [] SuggestedFolders { get; set; }
-        public string [] SuggestedFiles   { get; set; }
-
-        private string OnFilter (string input)
+        public static string CreatePatternDescription (string pattern)
         {
-            string repl_pattern = input;
-
-            FilterHandler filter_handler = Filter;
-            if (filter_handler != null) {
-                repl_pattern = filter_handler (repl_pattern);
-            }
-
-            return repl_pattern;
+            return MusicPattern.CreatePatternDescription (pattern);
         }
 
-        public string CreateFolderFilePattern (string folder, string file)
+        public static string CreateFromTrackInfo (TrackInfo track)
         {
-            return String.Format ("{0}%path_sep%{1}", folder, file);
+            return MusicPattern.CreateFromTrackInfo (track);
         }
 
-        public string CreatePatternDescription (string pattern)
+        public static string CreateFromTrackInfo (string pattern, TrackInfo track)
         {
-            pattern = Convert (pattern, conversion => conversion.Name);
-            return OnFilter (pattern);
+            return MusicPattern.CreateFromTrackInfo (pattern, track);
         }
 
-        public string CreateFromTrackInfo (TrackInfo track)
+        public static string Convert (string pattern, Func<Conversion, string> handler)
         {
-            string pattern = null;
-
-            try {
-                pattern = CreateFolderFilePattern (FolderSchema.Get (), FileSchema.Get ());
-            } catch {}
-
-            return CreateFromTrackInfo (pattern, track);
+            return MusicPattern.Convert (pattern, handler);
         }
 
-        public string CreateFromTrackInfo (string pattern, TrackInfo track)
+        public static string BuildFull (string base_dir, TrackInfo track)
         {
-            if (pattern == null || pattern.Trim () == String.Empty) {
-                pattern = DefaultPattern;
-            }
-
-            pattern = Convert (pattern, conversion => conversion.Handler (track, null));
-
-            return OnFilter (pattern);
+            return MusicPattern.BuildFull (base_dir, track);
         }
 
-        private static Regex optional_tokens_regex = new Regex ("{([^}]*)}", RegexOptions.Compiled);
-
-        public string Convert (string pattern, Func<Conversion, string> handler)
+        public static string BuildFull (string base_dir, TrackInfo track, string ext)
         {
-            if (String.IsNullOrEmpty (pattern)) {
-                return null;
-            }
-
-            pattern = optional_tokens_regex.Replace (pattern, delegate (Match match) {
-                var sub_pattern = match.Groups[1].Value;
-                foreach (var conversion in PatternConversions) {
-                    var token_string = conversion.TokenString;
-                    if (!sub_pattern.Contains (token_string)) {
-                        continue;
-                    }
-                    var replacement = handler (conversion);
-                    if (String.IsNullOrEmpty (replacement)) {
-                        sub_pattern = String.Empty;
-                        break;
-                    }
-                    sub_pattern = sub_pattern.Replace (token_string, replacement);
-                }
-                return sub_pattern;
-            });
-
-            foreach (Conversion conversion in PatternConversions) {
-                pattern = pattern.Replace (conversion.TokenString, handler (conversion));
-            }
-
-            return pattern;
-        }
-
-        public string BuildFull (string base_dir, TrackInfo track)
-        {
-            return BuildFull (base_dir, track, Path.GetExtension (track.Uri.ToString ()));
-        }
-
-        public string BuildFull (string base_dir, TrackInfo track, string ext)
-        {
-            if (ext == null || ext.Length < 1) {
-                ext = String.Empty;
-            } else if (ext[0] != '.') {
-                ext = String.Format (".{0}", ext);
-            }
-
-            string songpath = CreateFromTrackInfo (track) + ext;
-            songpath = Hyena.StringUtil.EscapePath (songpath);
-            string dir = Path.GetFullPath (Path.Combine (base_dir,
-                Path.GetDirectoryName (songpath)));
-            string filename = Path.Combine (dir, Path.GetFileName (songpath));
-
-            if (!Banshee.IO.Directory.Exists (dir)) {
-                Banshee.IO.Directory.Create (dir);
-            }
-
-            return filename;
-        }
-
-        public static string Escape (string input)
-        {
-            return Hyena.StringUtil.EscapeFilename (input);
+            return MusicPattern.BuildFull (base_dir, track, ext);
         }
 
         public struct Conversion
@@ -221,5 +129,10 @@ namespace Banshee.Base
                 get { return token_string; }
             }
         }
+
+        public static string Escape (string input)
+        {
+            return Hyena.StringUtil.EscapeFilename (input);
+        }
     }
 }
diff --git a/src/Core/Banshee.Core/Banshee.Base/PathPattern.cs b/src/Core/Banshee.Core/Banshee.Base/PathPattern.cs
new file mode 100644
index 0000000..1f202fa
--- /dev/null
+++ b/src/Core/Banshee.Core/Banshee.Base/PathPattern.cs
@@ -0,0 +1,188 @@
+//
+// PathPattern.cs
+//
+// Author:
+//   Aaron Bockover <abockover novell com>
+//   Alexander Kojevnikov <alexander kojevnikov com>
+//   Gabriel Burt <gburt novell com>
+//
+// Copyright (C) 2005-2010 Novell, Inc.
+// Copyright (C) 2009 Alexander Kojevnikov
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Text.RegularExpressions;
+using System.Collections.Generic;
+using System.IO;
+using Mono.Unix;
+
+using Banshee.Configuration;
+using Banshee.Configuration.Schema;
+using Banshee.Collection;
+
+namespace Banshee.Base
+{
+    public class PathPattern
+    {
+        public FileNamePattern.FilterHandler Filter;
+
+        private SortedList<string, FileNamePattern.Conversion> conversion_table = new SortedList<string, FileNamePattern.Conversion> ();
+
+        public PathPattern ()
+        {
+        }
+
+        public void AddConversion (string token, string name, FileNamePattern.ExpandTokenHandler handler)
+        {
+            conversion_table.Add (token, new FileNamePattern.Conversion (token, name, handler));
+        }
+
+        public IEnumerable<FileNamePattern.Conversion> PatternConversions {
+            get { return conversion_table.Values; }
+        }
+
+        public virtual IEnumerable<TrackInfo> SampleTracks {
+            get { yield return new SampleTrackInfo (); }
+        }
+
+        public string DefaultFolder { get; set; }
+        public string DefaultFile   { get; set; }
+
+        public string DefaultPattern {
+            get { return CreateFolderFilePattern (DefaultFolder, DefaultFile); }
+        }
+
+        public SchemaEntry<string> FileSchema { get; set; }
+        public SchemaEntry<string> FolderSchema { get; set; }
+
+        public string [] SuggestedFolders { get; set; }
+        public string [] SuggestedFiles   { get; set; }
+
+        private string OnFilter (string input)
+        {
+            string repl_pattern = input;
+
+            FileNamePattern.FilterHandler filter_handler = Filter;
+            if (filter_handler != null) {
+                repl_pattern = filter_handler (repl_pattern);
+            }
+
+            return repl_pattern;
+        }
+
+        public string CreateFolderFilePattern (string folder, string file)
+        {
+            return String.Format ("{0}%path_sep%{1}", folder, file);
+        }
+
+        public string CreatePatternDescription (string pattern)
+        {
+            pattern = Convert (pattern, conversion => conversion.Name);
+            return OnFilter (pattern);
+        }
+
+        public string CreateFromTrackInfo (TrackInfo track)
+        {
+            string pattern = null;
+
+            try {
+                pattern = CreateFolderFilePattern (FolderSchema.Get (), FileSchema.Get ());
+            } catch {}
+
+            return CreateFromTrackInfo (pattern, track);
+        }
+
+        public string CreateFromTrackInfo (string pattern, TrackInfo track)
+        {
+            if (pattern == null || pattern.Trim () == String.Empty) {
+                pattern = DefaultPattern;
+            }
+
+            pattern = Convert (pattern, conversion => conversion.Handler (track, null));
+
+            return OnFilter (pattern);
+        }
+
+        private static Regex optional_tokens_regex = new Regex ("{([^}]*)}", RegexOptions.Compiled);
+
+        public string Convert (string pattern, Func<FileNamePattern.Conversion, string> handler)
+        {
+            if (String.IsNullOrEmpty (pattern)) {
+                return null;
+            }
+
+            pattern = optional_tokens_regex.Replace (pattern, delegate (Match match) {
+                var sub_pattern = match.Groups[1].Value;
+                foreach (var conversion in PatternConversions) {
+                    var token_string = conversion.TokenString;
+                    if (!sub_pattern.Contains (token_string)) {
+                        continue;
+                    }
+                    var replacement = handler (conversion);
+                    if (String.IsNullOrEmpty (replacement)) {
+                        sub_pattern = String.Empty;
+                        break;
+                    }
+                    sub_pattern = sub_pattern.Replace (token_string, replacement);
+                }
+                return sub_pattern;
+            });
+
+            foreach (FileNamePattern.Conversion conversion in PatternConversions) {
+                pattern = pattern.Replace (conversion.TokenString, handler (conversion));
+            }
+
+            return pattern;
+        }
+
+        public string BuildFull (string base_dir, TrackInfo track)
+        {
+            return BuildFull (base_dir, track, Path.GetExtension (track.Uri.ToString ()));
+        }
+
+        public string BuildFull (string base_dir, TrackInfo track, string ext)
+        {
+            if (ext == null || ext.Length < 1) {
+                ext = String.Empty;
+            } else if (ext[0] != '.') {
+                ext = String.Format (".{0}", ext);
+            }
+
+            string songpath = CreateFromTrackInfo (track) + ext;
+            songpath = Hyena.StringUtil.EscapePath (songpath);
+            string dir = Path.GetFullPath (Path.Combine (base_dir,
+                Path.GetDirectoryName (songpath)));
+            string filename = Path.Combine (dir, Path.GetFileName (songpath));
+
+            if (!Banshee.IO.Directory.Exists (dir)) {
+                Banshee.IO.Directory.Create (dir);
+            }
+
+            return filename;
+        }
+
+        public static string Escape (string input)
+        {
+            return Hyena.StringUtil.EscapeFilename (input);
+        }
+    }
+}
diff --git a/src/Core/Banshee.Core/Banshee.Core.csproj b/src/Core/Banshee.Core/Banshee.Core.csproj
index d9e3088..1fe492d 100644
--- a/src/Core/Banshee.Core/Banshee.Core.csproj
+++ b/src/Core/Banshee.Core/Banshee.Core.csproj
@@ -95,6 +95,7 @@
     <Compile Include="Banshee.Kernel\Scheduler.cs" />
     <Compile Include="Banshee.Configuration\SchemaEntry.cs" />
     <Compile Include="Banshee.Base\FileNamePattern.cs" />
+    <Compile Include="Banshee.Base\PathPattern.cs" />
     <Compile Include="Banshee.Base\Paths.cs" />
     <Compile Include="Banshee.Base\SafeUri.cs" />
     <Compile Include="Banshee.Base\UriList.cs" />
diff --git a/src/Core/Banshee.Core/Makefile.am b/src/Core/Banshee.Core/Makefile.am
index 4dd48bf..b8d9625 100644
--- a/src/Core/Banshee.Core/Makefile.am
+++ b/src/Core/Banshee.Core/Makefile.am
@@ -6,6 +6,7 @@ SOURCES =  \
 	Banshee.Base/FileNamePattern.cs \
 	Banshee.Base/Localization.cs \
 	Banshee.Base/NamingUtil.cs \
+	Banshee.Base/PathPattern.cs \
 	Banshee.Base/Paths.cs \
 	Banshee.Base/PlatformHacks.cs \
 	Banshee.Base/ProductInformation.cs \
diff --git a/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs b/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs
index 23a71c5..54a0257 100644
--- a/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs
+++ b/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs
@@ -642,10 +642,10 @@ namespace Banshee.Collection.Database
             }
         }
 
-        public FileNamePattern FileNamePattern {
+        public PathPattern PathPattern {
             get {
                 var src = PrimarySource;
-                var pattern = src == null ? null : src.FileNamePattern;
+                var pattern = src == null ? null : src.PathPattern;
                 return pattern ?? MusicLibrarySource.MusicFileNamePattern;
             }
         }
@@ -663,7 +663,7 @@ namespace Banshee.Collection.Database
             bool in_library = old_uri.IsLocalPath ? old_uri.AbsolutePath.StartsWith (PrimarySource.BaseDirectoryWithSeparator) : false;
 
             if (!in_library && (LibrarySchema.CopyOnImport.Get () || force_copy)) {
-                string new_filename = FileNamePattern.BuildFull (PrimarySource.BaseDirectory, this, Path.GetExtension (old_uri.ToString ()));
+                string new_filename = PathPattern.BuildFull (PrimarySource.BaseDirectory, this, Path.GetExtension (old_uri.ToString ()));
                 SafeUri new_uri = new SafeUri (new_filename);
 
                 try {
diff --git a/src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs b/src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs
index c09382c..5a76d2e 100644
--- a/src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs
+++ b/src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs
@@ -141,7 +141,7 @@ namespace Banshee.Library
                 source.NotifyTracksChanged ();
             } else {
                 // Figure out where we should put it if were to copy it
-                var pattern = this.FileNamePattern ?? MusicLibrarySource.MusicFileNamePattern;
+                var pattern = this.PathPattern ?? MusicLibrarySource.MusicFileNamePattern;
                 string path = pattern.BuildFull (BaseDirectory, track);
                 SafeUri uri = new SafeUri (path);
 
diff --git a/src/Core/Banshee.Services/Banshee.Library/MusicFileNamePattern.cs b/src/Core/Banshee.Services/Banshee.Library/MusicFileNamePattern.cs
index 13528f1..b364000 100644
--- a/src/Core/Banshee.Services/Banshee.Library/MusicFileNamePattern.cs
+++ b/src/Core/Banshee.Services/Banshee.Library/MusicFileNamePattern.cs
@@ -39,7 +39,7 @@ using Banshee.Configuration.Schema;
 
 namespace Banshee.Library
 {
-    public class MusicFileNamePattern : FileNamePattern
+    public class MusicFileNamePattern : PathPattern
     {
         public MusicFileNamePattern ()
         {
diff --git a/src/Core/Banshee.Services/Banshee.Library/MusicLibrarySource.cs b/src/Core/Banshee.Services/Banshee.Library/MusicLibrarySource.cs
index 053c854..f549c27 100644
--- a/src/Core/Banshee.Services/Banshee.Library/MusicLibrarySource.cs
+++ b/src/Core/Banshee.Services/Banshee.Library/MusicLibrarySource.cs
@@ -43,8 +43,8 @@ namespace Banshee.Library
 {
     public class MusicLibrarySource : LibrarySource
     {
-        private static FileNamePattern music_filename_pattern = new MusicFileNamePattern ();
-        public static FileNamePattern MusicFileNamePattern {
+        private static PathPattern music_filename_pattern = new MusicFileNamePattern ();
+        public static PathPattern MusicFileNamePattern {
             get { return music_filename_pattern; }
         }
 
@@ -52,6 +52,7 @@ namespace Banshee.Library
         {
             music_filename_pattern.FolderSchema = LibrarySchema.FolderPattern;
             music_filename_pattern.FileSchema   = LibrarySchema.FilePattern;
+            Banshee.Base.FileNamePattern.MusicPattern = music_filename_pattern;
         }
 
         // Catalog.GetString ("Music Library")
diff --git a/src/Core/Banshee.Services/Banshee.Library/Tests/FileNamePatternTests.cs b/src/Core/Banshee.Services/Banshee.Library/Tests/FileNamePatternTests.cs
index 75a1a56..34e9376 100644
--- a/src/Core/Banshee.Services/Banshee.Library/Tests/FileNamePatternTests.cs
+++ b/src/Core/Banshee.Services/Banshee.Library/Tests/FileNamePatternTests.cs
@@ -45,7 +45,7 @@ namespace Banshee.Library.Tests
             return num < 10 ? "0" + str : str;
         }
 
-        public static FileNamePattern FileNamePattern { get { return MusicLibrarySource.MusicFileNamePattern; } }
+        public static PathPattern Pattern { get { return MusicLibrarySource.MusicFileNamePattern; } }
 
         [Test]
         public void MakePathsRelative ()
@@ -61,7 +61,7 @@ namespace Banshee.Library.Tests
         public void CreateFromTrackInfo()
         {
             SampleTrackInfo track = new SampleTrackInfo();
-            string built = FileNamePattern.CreateFromTrackInfo(
+            string built = Pattern.CreateFromTrackInfo(
                 "%artist%:%album%:%title%:%track_number%:" +
                 "%track_count%:%track_number_nz%:%track_count_nz%",
                 track);
@@ -93,7 +93,7 @@ namespace Banshee.Library.Tests
                 "{%track_number%. }%title%.oga";
             Assert.AreEqual (
                 "Esoteric/2008 The Maniacal Vale (disc 2 of 2)/01. Silence.oga",
-                FileNamePattern.Convert (pattern, conversion => conversion.Handler (track, null)));
+                Pattern.Convert (pattern, conversion => conversion.Handler (track, null)));
         }
 
         [Test]
@@ -103,7 +103,7 @@ namespace Banshee.Library.Tests
                 DiscNumber = 0
             };
             var pattern = "{ (disc %disc_number%)}";
-            Assert.IsEmpty (FileNamePattern.Convert (pattern, conversion => conversion.Handler (track, null)));
+            Assert.IsEmpty (Pattern.Convert (pattern, conversion => conversion.Handler (track, null)));
         }
 
         [Test]
@@ -113,7 +113,7 @@ namespace Banshee.Library.Tests
                 Genre = ""
             };
             var pattern = "{ (%genre%)}";
-            Assert.IsEmpty (FileNamePattern.Convert (pattern, conversion => conversion.Handler (track, null)));
+            Assert.IsEmpty (Pattern.Convert (pattern, conversion => conversion.Handler (track, null)));
         }
 
         [Test]
@@ -124,7 +124,7 @@ namespace Banshee.Library.Tests
                 DiscCount = 2
             };
             var pattern = "{ (disc %disc_number% of %disc_count%)}";
-            Assert.IsEmpty (FileNamePattern.Convert (pattern, conversion => conversion.Handler (track, null)));
+            Assert.IsEmpty (Pattern.Convert (pattern, conversion => conversion.Handler (track, null)));
         }
     }
 }
diff --git a/src/Core/Banshee.Services/Banshee.Metadata/SaveTrackMetadataJob.cs b/src/Core/Banshee.Services/Banshee.Metadata/SaveTrackMetadataJob.cs
index bc00bca..1984cc7 100644
--- a/src/Core/Banshee.Services/Banshee.Metadata/SaveTrackMetadataJob.cs
+++ b/src/Core/Banshee.Services/Banshee.Metadata/SaveTrackMetadataJob.cs
@@ -115,7 +115,7 @@ namespace Banshee.Metadata
                 return false;
             }
 
-            string new_filename = track.FileNamePattern.BuildFull (source.BaseDirectory, track, System.IO.Path.GetExtension (old_uri.ToString ()));
+            string new_filename = track.PathPattern.BuildFull (source.BaseDirectory, track, System.IO.Path.GetExtension (old_uri.ToString ()));
             SafeUri new_uri = new SafeUri (new_filename);
 
             if (!new_uri.Equals (old_uri) && !Banshee.IO.File.Exists (new_uri)) {
diff --git a/src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs b/src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs
index 59a6266..604d4e5 100644
--- a/src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs
+++ b/src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs
@@ -239,11 +239,11 @@ namespace Banshee.Sources
             set { ExpandedSchema.Set (value); }
         }
 
-        public FileNamePattern FileNamePattern { get; private set; }
+        public PathPattern PathPattern { get; private set; }
 
-        protected void SetFileNamePattern (FileNamePattern pattern)
+        protected void SetFileNamePattern (PathPattern pattern)
         {
-            FileNamePattern = pattern;
+            PathPattern = pattern;
 
             var file_system = PreferencesPage.Add (new Section ("file-system", Catalog.GetString ("File Organization"), 5));
             file_system.Add (new SchemaPreference<string> (pattern.FolderSchema, Catalog.GetString ("Folder hie_rarchy")));
diff --git a/src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/DefaultPreferenceWidgets.cs b/src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/DefaultPreferenceWidgets.cs
index 399b7c7..b633f4c 100644
--- a/src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/DefaultPreferenceWidgets.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/DefaultPreferenceWidgets.cs
@@ -52,9 +52,9 @@ namespace Banshee.Preferences.Gui
             foreach (var library in ServiceManager.SourceManager.FindSources<LibrarySource> ()) {
                 new LibraryLocationButton (library);
 
-                if (library.FileNamePattern != null) {
+                if (library.PathPattern != null) {
                     var library_page = library.PreferencesPage;
-                    var pattern = library.FileNamePattern;
+                    var pattern = library.PathPattern;
 
                     var folder_pattern = library_page["file-system"][pattern.FolderSchema.Key];
                     folder_pattern.DisplayWidget = new PatternComboBox (library, folder_pattern, pattern.SuggestedFolders);
@@ -180,11 +180,11 @@ namespace Banshee.Preferences.Gui
                         already_added = true;
                     }
 
-                    Add (source.FileNamePattern.CreatePatternDescription (pattern), pattern);
+                    Add (source.PathPattern.CreatePatternDescription (pattern), pattern);
                 }
 
                 if (!already_added) {
-                    Add (source.FileNamePattern.CreatePatternDescription (conf_pattern), conf_pattern);
+                    Add (source.PathPattern.CreatePatternDescription (conf_pattern), conf_pattern);
                 }
 
                 ActiveValue = conf_pattern;
@@ -217,11 +217,11 @@ namespace Banshee.Preferences.Gui
 
             private void OnChanged (object o, EventArgs args)
             {
-                var pattern = source.FileNamePattern.CreateFolderFilePattern (folder.ActiveValue, file.ActiveValue);
+                var pattern = source.PathPattern.CreateFolderFilePattern (folder.ActiveValue, file.ActiveValue);
 
                 var sb = new System.Text.StringBuilder ();
-                foreach (var track in source.FileNamePattern.SampleTracks) {
-                    string display = source.FileNamePattern.CreateFromTrackInfo (pattern, track);
+                foreach (var track in source.PathPattern.SampleTracks) {
+                    string display = source.PathPattern.CreateFromTrackInfo (pattern, track);
                     if (!String.IsNullOrEmpty (display)) {
                         sb.AppendFormat ("<small>{0}.ogg</small>", GLib.Markup.EscapeText (display));
                     }
diff --git a/src/Extensions/Banshee.Audiobook/Banshee.Audiobook/AudiobookFileNamePattern.cs b/src/Extensions/Banshee.Audiobook/Banshee.Audiobook/AudiobookFileNamePattern.cs
index 6fc5dfd..09ad77e 100644
--- a/src/Extensions/Banshee.Audiobook/Banshee.Audiobook/AudiobookFileNamePattern.cs
+++ b/src/Extensions/Banshee.Audiobook/Banshee.Audiobook/AudiobookFileNamePattern.cs
@@ -38,7 +38,7 @@ using Banshee.Configuration.Schema;
 
 namespace Banshee.Audiobook
 {
-    public class AudiobookFileNamePattern : FileNamePattern
+    public class AudiobookFileNamePattern : PathPattern
     {
         public AudiobookFileNamePattern ()
         {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]