diff options
-rw-r--r-- | src/CueSheets/Banshee.CueSheets/CueSheet/CueSheet.cs | 100 | ||||
-rw-r--r-- | src/CueSheets/Banshee.CueSheets/CueSheet/CueSheetEntry.cs | 41 | ||||
-rw-r--r-- | src/CueSheets/Banshee.CueSheets/CueSheetsSource.cs | 46 | ||||
-rw-r--r-- | src/CueSheets/Banshee.CueSheets/Gui/CS_Actions.cs (renamed from src/CueSheets/Banshee.CueSheets/Gui/Actions.cs) | 12 | ||||
-rw-r--r-- | src/CueSheets/Banshee.CueSheets/Gui/CS_AlbumListView.cs | 10 | ||||
-rw-r--r-- | src/CueSheets/Banshee.CueSheets/Gui/CS_ComposerListView.cs | 3 | ||||
-rw-r--r-- | src/CueSheets/Banshee.CueSheets/Gui/CueSheetsView.cs | 138 | ||||
-rw-r--r-- | src/CueSheets/Banshee.CueSheets/Playlists/CS_PlayList.cs | 1 | ||||
-rw-r--r-- | src/CueSheets/CueSheets.csproj | 2 | ||||
-rw-r--r-- | src/CueSheets/Makefile.am | 2 | ||||
-rw-r--r-- | src/CueSheets/Resources/GlobalUI.xml | 2 |
11 files changed, 294 insertions, 63 deletions
diff --git a/src/CueSheets/Banshee.CueSheets/CueSheet/CueSheet.cs b/src/CueSheets/Banshee.CueSheets/CueSheet/CueSheet.cs index aef3ce5..0a9494e 100644 --- a/src/CueSheets/Banshee.CueSheets/CueSheet/CueSheet.cs +++ b/src/CueSheets/Banshee.CueSheets/CueSheet/CueSheet.cs @@ -34,6 +34,10 @@ using Banshee.Base; using Banshee.Playlists.Formats; using System.Collections.Generic; using Hyena; +using Banshee.Collection.Database; +using Hyena.Data.Sqlite; +using Hyena.Collections; +using Banshee.Database; namespace Banshee.CueSheets { @@ -44,7 +48,7 @@ namespace Banshee.CueSheets private string _music_file_name; private string _title; private string _performer; - private CueSheetEntry [] _tracks; + private List<CueSheetEntry> _tracks=new List<CueSheetEntry>(); private string _cuefile; private string _directory; private string _basedir; @@ -53,6 +57,18 @@ namespace Banshee.CueSheets private string _composer; private string _subtitle; private string _cddbId; + + private Kind _kind=Kind.CueSheet; + + public enum Kind { + CueSheet, + PlayList + } + + public Kind SheetKind { + get { return _kind; } + set { _kind=value; } + } public string id() { return "title="+_title+";performer="+_performer+ @@ -65,21 +81,10 @@ namespace Banshee.CueSheets string r=Tools.firstpart(d); return r; } - + + private void append(CueSheetEntry e) { - if (_tracks==null) { - _tracks=new CueSheetEntry[1]; - _tracks[0]=e; - } else { - CueSheetEntry [] es=new CueSheetEntry[_tracks.Length+1]; - int i=0; - for(i=0;i<_tracks.Length;i++) { - es[i]=_tracks[i]; - } - es[i]=e; - _tracks=es; - } - this.Add (e); + _tracks.Add(e); } public string imageFileName() { @@ -127,13 +132,11 @@ namespace Banshee.CueSheets } public int nEntries() { - if (_tracks==null) { return 0; } - else { - return _tracks.Length; - } + return _tracks.Count; } public int searchIndex(string _current_entry_id,double _offset) { + Hyena.Log.Information ("id="+_current_entry_id+", offset="+_offset); int k,N; if (_current_entry_id==null) { for(k=0,N=nEntries ();k<N && _offset>_tracks[k].offset ();k++); @@ -144,7 +147,7 @@ namespace Banshee.CueSheets return N-1; } else { CueSheetEntry e=entry (k); - //Hyena.Log.Information ("offset="+e.offset()+", endoffset="+e.end_offset()+" offset="+_offset); + Hyena.Log.Information ("offset="+e.offset()+", endoffset="+e.end_offset()+" offset="+_offset); if (_offset<e.offset ()) { return k-1; } else if (e.end_offset ()<=0.0) { // end track, we don't know @@ -206,7 +209,7 @@ namespace Banshee.CueSheets } public override string ToString() { - return "Performer: "+this.performer ()+", Title: "+this.title ()+"\ncuefile: "+this.cueFile()+"\nwave: "+this.musicFileName(); + return "cuefile: "+this.cueFile(); } public void SetPerformer(string p) { @@ -246,8 +249,7 @@ namespace Banshee.CueSheets } public void ClearTracks() { - base.Clear (); - _tracks=null; + _tracks.Clear(); } public void AddEntry(CueSheetEntry e) { @@ -255,10 +257,7 @@ namespace Banshee.CueSheets } public CueSheetEntry AddTrack(string e_title,string e_perf,double e_offset) { - int nr=0; - if (_tracks!=null) { - nr=_tracks.Length; - } + int nr=_tracks.Count; string aaid=getArtId (); CueSheetEntry e=new CueSheetEntry(this,_music_file_name,aaid,nr,-1,e_title,e_perf,_title,e_offset); append (e); @@ -479,6 +478,8 @@ namespace Banshee.CueSheets } //Console.WriteLine ("Ready"); } + + base.Selection.MaxIndex=nEntries (); } public void load(CueSheet s) { @@ -498,15 +499,30 @@ namespace Banshee.CueSheets } } + private class CacheableDatabaseModel : ICacheableDatabaseModel + { + public static CacheableDatabaseModel Instance = new CacheableDatabaseModel (); + public int FetchCount { get { return 200; } } + public string ReloadFragment { get { return null; } } + public string SelectAggregates { get { return null; } } + public string JoinTable { get { return null; } } + public string JoinFragment { get { return null; } } + public string JoinPrimaryKey { get { return null; } } + public string JoinColumn { get { return null; } } + public bool CachesJoinTableEntries { get { return false; } } + public bool CachesValues { get { return false; } } + public Selection Selection { get { return null; } } + } + public override void Clear() { - base.Clear (); + base.Selection.Clear (); + _tracks.Clear(); _cuefile=""; _image_file_name=""; _img_full_path=""; _music_file_name=""; _title=""; _performer=""; - _tracks=null; _basedir=""; _directory=""; } @@ -524,6 +540,32 @@ namespace Banshee.CueSheets Clear (); load (filename,directory,basedir); } + + #region implemented abstract members of MemoryTrackListModel + public override TrackInfo this [int index] { + get { Hyena.Log.Information ("get: index="+index); return _tracks[index]; } + } + + public override int Count { + get { return _tracks.Count; } + } + + public override void Reload () { + this.iLoad (); + } + + public override TrackInfo GetRandom (DateTime since) { + return _tracks[0]; + } + + public override int IndexOf (TrackInfo track) { + int i,N; + for(i=0,N=_tracks.Count;i<N && CueSheetEntry.MakeId(track)!=_tracks[i].id ();i++); + if (i==N) { return -1; } + else { return i; } + } + + #endregion } } diff --git a/src/CueSheets/Banshee.CueSheets/CueSheet/CueSheetEntry.cs b/src/CueSheets/Banshee.CueSheets/CueSheet/CueSheetEntry.cs index 62cbeba..b6d540e 100644 --- a/src/CueSheets/Banshee.CueSheets/CueSheet/CueSheetEntry.cs +++ b/src/CueSheets/Banshee.CueSheets/CueSheet/CueSheetEntry.cs @@ -32,10 +32,11 @@ using Banshee.Base; using Hyena; using Banshee.IO.SystemIO; using Banshee.Playlists.Formats; +using Banshee.Collection.Database; namespace Banshee.CueSheets { - public class CueSheetEntry : TrackInfo + public class CueSheetEntry : DatabaseTrackInfo { private string _performer; private string _composer=""; @@ -69,7 +70,11 @@ namespace Banshee.CueSheets } public string id() { - return "title="+_title+";offset="+offset()+";length="+length (); + return MakeId (this); + } + + public static string MakeId(TrackInfo trk) { + return "title="+trk.TrackTitle+";offset="+trk.BeginOffset+";end_offset="+trk.EndOffset; } public string title() { @@ -121,11 +126,13 @@ namespace Banshee.CueSheets public string Length { get { - double l=length (); + double l=_e_offset-_offset; + //Hyena.Log.Information ("Tracklengt="+l); int t=(int) (l*100.0); int m=t/(60*100); int secs=(t/100)%60; - string ln=String.Format ("{0:00}:{0:00}",m,secs); + string ln=String.Format ("{0:00}",m)+":"+String.Format ("{0:00}",secs); + //Hyena.Log.Information ("Tracklengt="+l+" sec="+secs+" ln="+ln); return ln; } } @@ -147,6 +154,7 @@ namespace Banshee.CueSheets public void setLength(double l) { //_length=l; _e_offset=_offset+l; + EndOffset=(int) (_e_offset*1000.0); // millisecs System.Int64 ticks_100nanosecs=(System.Int64) (l*10000000); // 10 miljoen _length=new TimeSpan(ticks_100nanosecs); } @@ -154,12 +162,37 @@ namespace Banshee.CueSheets public override string ToString() { return "nr: "+this.TrackNumber+", title: "+this.title ()+", file: "+this.file (); } + + public CueSheetEntry () { + _file=""; + _title=""; + _performer=""; + _offset=0.0; + BeginOffset=0; + EndOffset=-1; + _length=new TimeSpan(0); + _parent=null; + _art=""; + base.AlbumArtist=""; + base.TrackTitle=""; + base.AlbumTitle=""; + base.ArtistName=""; + base.TrackNumber=0; + base.TrackCount=0; + base.DiscNumber=0; + base.CanPlay=true; + base.CanSaveToDatabase=false; + base.Duration=new System.TimeSpan(0,0,10,0); + base.Uri=new Hyena.SafeUri("",false); + } public CueSheetEntry (CueSheet s,string file,String artId,int nr,int cnt,string title,string performer,string album,double offset) : base() { _file=file; _title=title; _performer=performer; _offset=offset; + BeginOffset=(int) (offset*1000.0); // milliseconds + EndOffset=-1; _length=new TimeSpan(0); _parent=s; diff --git a/src/CueSheets/Banshee.CueSheets/CueSheetsSource.cs b/src/CueSheets/Banshee.CueSheets/CueSheetsSource.cs index f82dd9c..fd11794 100644 --- a/src/CueSheets/Banshee.CueSheets/CueSheetsSource.cs +++ b/src/CueSheets/Banshee.CueSheets/CueSheetsSource.cs @@ -56,15 +56,13 @@ using Banshee.Configuration; namespace Banshee.CueSheets { - - - // We are inheriting from Source, the top-level, most generic type of Source. // Other types include (inheritance indicated by indentation): // DatabaseSource - generic, DB-backed Track source; used by PlaylistSource // PrimarySource - 'owns' tracks, used by DaapSource, DapSource // LibrarySource - used by Music, Video, Podcasts, and Audiobooks - public class CueSheetsSource : Source, IBasicPlaybackController, ITrackModelSource + public class CueSheetsSource : Source, IBasicPlaybackController, + ITrackModelSource { // In the sources TreeView, sets the order value for this source, small on top const int sort_order = 50; @@ -74,23 +72,28 @@ namespace Banshee.CueSheets private Gtk.SeparatorMenuItem _sep; private Gtk.CheckButton _track_search; - private CueSheetCollection _sheets=new CueSheetCollection(); + private CueSheetCollection _sheets=null; private CueSheet _sheet=null; private CueSheetsPrefs _preferences; - private Actions _actions; + private CS_Actions _actions; private CS_TrackInfoDb _track_info_db; public CueSheetsSource () : base (AddinManager.CurrentLocalizer.GetString ("CueSheets"), AddinManager.CurrentLocalizer.GetString ("CueSheets"), - sort_order, - "hod-cuesheets-2013-01-06") + //"cuesheets", + sort_order) //, + //"hod-cuesheets-2013-01-06") { Hyena.Log.Information ("CueSheetsSouce init"); - _track_info_db=new CS_TrackInfoDb(ServiceManager.DbConnection); + DbConnection=ServiceManager.DbConnection; + TM_Provider=DatabaseTrackInfo.Provider; + + _track_info_db=new CS_TrackInfoDb(DbConnection); _sheet=new CueSheet(); + _sheets=new CueSheetCollection(); _view=new CueSheetsView(this); @@ -102,7 +105,7 @@ namespace Banshee.CueSheets try { Properties.SetString("GtkActionPath","/CueSheetsPopup"); - _actions = new Actions (this); + _actions = new CS_Actions (this); Hyena.Log.Information(_actions.ToString()); } catch (System.Exception ex) { Hyena.Log.Information(ex.ToString ()); @@ -159,6 +162,9 @@ namespace Banshee.CueSheets _track_search.Hide(); } + public Banshee.Database.BansheeDbConnection DbConnection { + get; set; + } public override string PreferencesPageId { get { @@ -233,13 +239,14 @@ namespace Banshee.CueSheets public TrackListModel TrackModel { get { + Hyena.Log.Information ("Trackmodel: "+_sheet); return _sheet; } } public bool HasDependencies { get { return false; } } - public bool CanAddTracks { get { return false; } } + public bool CanAddTracks { get { return true; } } public bool CanRemoveTracks { get { return false; } } @@ -261,7 +268,10 @@ namespace Banshee.CueSheets public void DeleteTracks (Hyena.Collections.Selection selection) { } #endregion - + + //public override void Save() { + //} + private CS_AlbumModel _model=null; private CS_ArtistModel _artistModel=null; private CS_GenreModel _genreModel=null; @@ -364,6 +374,10 @@ namespace Banshee.CueSheets return dir; } + public string DefaultBaseDirectory { + get { return getCueSheetDir (); } + } + public void setCueSheetDir(string dir) { Hyena.Log.Information ("Setting cuesheets dir to "+dir); Banshee.Configuration.ConfigurationClient.Set<string>("cuesheets_dir",dir); @@ -375,5 +389,13 @@ namespace Banshee.CueSheets _view.fill (); } + public void HandlePlayList() { + Hyena.Log.Information("playlists"); + } + + public IDatabaseTrackModelProvider TM_Provider { + get; set; + } + } } diff --git a/src/CueSheets/Banshee.CueSheets/Gui/Actions.cs b/src/CueSheets/Banshee.CueSheets/Gui/CS_Actions.cs index 93a01d5..236caff 100644 --- a/src/CueSheets/Banshee.CueSheets/Gui/Actions.cs +++ b/src/CueSheets/Banshee.CueSheets/Gui/CS_Actions.cs @@ -3,14 +3,22 @@ using Banshee.I18n; namespace Banshee.CueSheets { - public class Actions : Banshee.Gui.BansheeActionGroup + public class CS_Actions : Banshee.Gui.BansheeActionGroup { private CueSheetsSource _src; - public Actions (CueSheetsSource src) : base ("CueSheets") { + public CS_Actions (CueSheetsSource src) : base ("CueSheets") { _src=src; + /*base.Add ( + new Gtk.ActionEntry ("Playlists", Gtk.Stock.MediaPlay, + Catalog.GetString ("Playlists"), + null, null, + (o, a) => { _src.HandlePlayList(); } + ) + );*/ + base.AddImportant ( new Gtk.ActionEntry ("Synchronize", Gtk.Stock.Refresh, Catalog.GetString ("Refresh CueSheets"), diff --git a/src/CueSheets/Banshee.CueSheets/Gui/CS_AlbumListView.cs b/src/CueSheets/Banshee.CueSheets/Gui/CS_AlbumListView.cs index 097f969..abbe656 100644 --- a/src/CueSheets/Banshee.CueSheets/Gui/CS_AlbumListView.cs +++ b/src/CueSheets/Banshee.CueSheets/Gui/CS_AlbumListView.cs @@ -10,22 +10,24 @@ namespace Banshee.CueSheets public CS_AlbumListView(CueSheetsView view) : base() { _view=view; - _gridEnabled=base.GetAlbumGrid(); - Hyena.Log.Information ("grid enabled="+_gridEnabled); + //_gridEnabled=base.GetAlbumGrid(); + //Hyena.Log.Information ("grid enabled="+_gridEnabled); EnableGrid (); } public void DisableGrid() { if (_gridEnabled) { _gridEnabled=false; - base.SetAlbumGrid (true); + base.SwitchToAlbumList(); + //base.SetAlbumGrid (true); } } public void EnableGrid() { if (!_gridEnabled) { _gridEnabled=true; - base.SetAlbumGrid (false); + base.SwitchToAlbumGrid(); + //base.SetAlbumGrid (false); } } diff --git a/src/CueSheets/Banshee.CueSheets/Gui/CS_ComposerListView.cs b/src/CueSheets/Banshee.CueSheets/Gui/CS_ComposerListView.cs index 708fa89..ade094b 100644 --- a/src/CueSheets/Banshee.CueSheets/Gui/CS_ComposerListView.cs +++ b/src/CueSheets/Banshee.CueSheets/Gui/CS_ComposerListView.cs @@ -4,7 +4,8 @@ using Hyena.Data.Gui; namespace Banshee.CueSheets { - public class CS_ComposerListView : TrackFilterListView<CS_ComposerInfo> + public class CS_ComposerListView + : TrackFilterListView<CS_ComposerInfo> { public CS_ComposerListView () : base () { diff --git a/src/CueSheets/Banshee.CueSheets/Gui/CueSheetsView.cs b/src/CueSheets/Banshee.CueSheets/Gui/CueSheetsView.cs index 6970d2d..e8b27e9 100644 --- a/src/CueSheets/Banshee.CueSheets/Gui/CueSheetsView.cs +++ b/src/CueSheets/Banshee.CueSheets/Gui/CueSheetsView.cs @@ -25,6 +25,8 @@ using Hyena.Data.Gui; using Banshee.Gui; using Banshee.I18n; using Banshee.Configuration; +using Mono.Unix; +using System.Threading; namespace Banshee.CueSheets { @@ -69,7 +71,119 @@ namespace Banshee.CueSheets private Stack<string> _fill_cues=new Stack<string>(); private int _fill_count=0; private int _fill_dir_count=0; - private bool _fill_canceled=false; + private bool _fill_canceled=false; + + private LibraryImportManager import_manager=null; + + //private Stack<DatabaseTrackInfo> stk=new Stack<DatabaseTrackInfo>(); + + public void ImportSheet(CueSheet s) { + if (import_manager==null) { + try { + import_manager = new LibraryImportManager (false); + /*import_manager.ImportResult+=delegate(object sender,DatabaseImportResultArgs args) { + DatabaseTrackInfo trk=args.Track; + stk.Push (trk); + };*/ + } catch (Exception ex) { + Hyena.Log.Error (ex.ToString ()); + } + } + + Hyena.Log.Debug ("Importsheet: Starting transaction"); + int i,N; + for(i=0,N=s.nEntries ();i<N;i++) { + try { + CueSheetEntry e=s.entry (i); + string file=e.file (); + string uuid=Regex.Replace(e.id (),"\\s","_"); + string ext=".mp3"; + + string uid=Guid.NewGuid ().ToString (); + string u1=uid.Substring (0,1); + string u2=uid.Substring (0,2); + string dir=basedir+"/.banshee/"+u1; + if (!Directory.Exists (dir)) { + Directory.CreateDirectory(dir); + } + dir+="/"+u2; + if (!Directory.Exists(dir)) { + Directory.CreateDirectory(dir); + } + uuid=dir+"/"+uuid+ext; + + UnixFileInfo f=new UnixFileInfo(file); + if (File.Exists (uuid)) { File.Delete(uuid); } + //f.CreateLink (uuid); + f.CreateSymbolicLink(uuid); + + DatabaseTrackInfo trk=import_manager.ImportTrack(uuid); + //File.Delete (uuid); + /*if (trk==null) { + Hyena.Log.Warning ("track = null (file="+e.file ()+")"); + if (stk.Count>0) { trk=stk.Pop (); } + }*/ + + if (trk==null) { + Hyena.Log.Error ("track = null (file="+e.file ()+")"); + } else { + Hyena.Log.Information ("track!=null (file="+e.file ()+")"); + //MySource.DbConnection.BeginTransaction(); + trk.PartOfCue=1; + trk.CueAudioFile=e.file (); + trk.AlbumTitle=s.title (); + //trk.Album=s.title (); + trk.AlbumArtist=s.performer (); + trk.Composer=(e.Composer=="") ? s.composer () : e.Composer; + //trk.ArtworkId=s.getArtId (); + //trk.Artist= + trk.ArtistName=(e.performer ()=="") ? s.performer () : e.performer (); + trk.TrackTitle=e.title (); + trk.TrackNumber=i+1; + trk.Genre=s.genre (); + trk.BeginOffset=e.BeginOffset; + trk.EndOffset=e.EndOffset; + //trk.Uri=trk.CueAudioUri; + //trk.MediaAttributes = TrackMediaAttributes.ExternalResource; + //trk.PrimarySource = ServiceManager.SourceManager.MusicLibrary; + + trk.Save (); + //MySource.DbConnection.CommitTransaction(); + } + } catch (Exception ex) { + Hyena.Log.Error (ex.ToString ()); + } + } + import_manager.NotifyAllSources (); + } + + + + private void FillLibrary(string cwd) { + string [] dirs=Directory.GetDirectories(cwd, "*"); + string [] sheets=Directory.GetFiles (cwd,"*.cue"); + string ddir=basedir+"/.banshee"; + if (!Directory.Exists(ddir)) { + Directory.CreateDirectory(ddir); + } + foreach (string sheet in sheets) { + CueSheet cs=new CueSheet(sheet,cwd,basedir); + ImportSheet(cs); + Thread.Sleep (500); + } + foreach (string dir in dirs) { + FillLibrary (dir); + } + } + + private void FillLibrary() { + basedir=MySource.getCueSheetDir(); + Hyena.Log.Information ("Base directory="+basedir); + Thread thrd=new Thread(delegate() { + FillLibrary (basedir); + }); + thrd.Start (); + } private void fill(string cwd) { Hyena.Log.Information ("Scanning directory "+cwd); @@ -87,8 +201,8 @@ namespace Banshee.CueSheets return false; } - int i; - while(i<50 && _fill_cues.Count>0) { + int i=0; + while(i<1 && _fill_cues.Count>0) { string sheet=_fill_cues.Pop (); string bn=Tools.basename (sheet); if (bn!="") { @@ -167,6 +281,7 @@ namespace Banshee.CueSheets bar.Remove (sep); bar.Remove (cancel); bar.Hide (); + FillLibrary (); return false; } else { return true; @@ -195,7 +310,7 @@ namespace Banshee.CueSheets _song_file=e.file (); } double offset=e.offset (); - ServiceManager.PlayerEngine.SetCurrentTrack(e); + //ServiceManager.PlayerEngine.SetCurrentTrack(e); _position=(uint) (offset*1000.0); _set_position=true; mscount=chgcount-(1000/timeout); @@ -208,8 +323,9 @@ namespace Banshee.CueSheets index=0; try { CueSheet sheet=MySource.getSheet (); - ServiceManager.PlayerEngine.SetAccurateSeek(true); + //ServiceManager.PlayerEngine.SetAccurateSeek(true); CueSheetEntry e=sheet.entry(index); + _song_id=e.id (); ServiceManager.PlayerEngine.Open (e); ServiceManager.PlayerEngine.Play (); if (ServiceManager.PlaybackController.Source!=MySource) { @@ -218,7 +334,7 @@ namespace Banshee.CueSheets if (ServiceManager.PlaybackController.NextSource!=MySource) { ServiceManager.PlaybackController.NextSource=MySource; } - ServiceManager.PlaybackController.SetSeekMode (true); + //ServiceManager.PlaybackController.SetSeekMode (true); } catch (SystemException ex) { Hyena.Log.Information(ex.ToString ()); } @@ -259,19 +375,23 @@ namespace Banshee.CueSheets // Handle repeat track if (ServiceManager.PlaybackController.RepeatMode==PlaybackRepeatMode.RepeatSingle) { seekSong (index); - } + } else if (sheet.SheetKind==CueSheet.Kind.PlayList) { + index=i; + seekSong (i); + } // Every 2 seconds if (mscount==0) { Hyena.Log.Information("Found index i="+i+", songid="+_song_id); index=i; CueSheetEntry e=sheet.entry(index); - ServiceManager.PlayerEngine.SetCurrentTrack (e); + Hyena.Log.Information ("current entry: "+e); + //ServiceManager.PlayerEngine.SetCurrentTrack (e); } } if (mscount==0 && index>=0) { Hyena.Log.Information ("mscount="+mscount+", index="+index); - view.ScrollTo(index); + //view.ScrollTo(index); view.Selection.QuietUnselect (view.Selection.FirstIndex); view.Selection.Select(index); } diff --git a/src/CueSheets/Banshee.CueSheets/Playlists/CS_PlayList.cs b/src/CueSheets/Banshee.CueSheets/Playlists/CS_PlayList.cs index 8d18e32..b79d193 100644 --- a/src/CueSheets/Banshee.CueSheets/Playlists/CS_PlayList.cs +++ b/src/CueSheets/Banshee.CueSheets/Playlists/CS_PlayList.cs @@ -57,6 +57,7 @@ namespace Banshee.CueSheets public CueSheet GetCueSheet() { CueSheet s=new CueSheet(); s.SetTitle (_name); + s.SheetKind=CueSheet.Kind.PlayList; foreach (CS_PlayListEntry ple in _playlist) { s.AddEntry(ple.GetCueSheetEntry ()); } diff --git a/src/CueSheets/CueSheets.csproj b/src/CueSheets/CueSheets.csproj index 023c2d0..ec4bbd2 100644 --- a/src/CueSheets/CueSheets.csproj +++ b/src/CueSheets/CueSheets.csproj @@ -115,7 +115,6 @@ <Compile Include="Banshee.CueSheets\Version\CS_Info.cs" /> <Compile Include="Banshee.CueSheets\mp3splt\Mp3Split.cs" /> <Compile Include="Banshee.CueSheets\mp3splt\Mp3SplitTrack.cs" /> - <Compile Include="Banshee.CueSheets\Gui\Actions.cs" /> <Compile Include="Banshee.CueSheets\Gui\CS_AlbumListView.cs" /> <Compile Include="Banshee.CueSheets\Gui\CueSheetsView.cs" /> <Compile Include="Banshee.CueSheets\Gui\CS_GenreListView.cs" /> @@ -136,6 +135,7 @@ <Compile Include="Banshee.CueSheets\Model\CS_TrackListModel.cs" /> <Compile Include="Banshee.CueSheets\Gui\CS_TrackListView.cs" /> <Compile Include="Banshee.CueSheets\Gui\CS_Column.cs" /> + <Compile Include="Banshee.CueSheets\Gui\CS_Actions.cs" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <ProjectExtensions> diff --git a/src/CueSheets/Makefile.am b/src/CueSheets/Makefile.am index da55a36..e69b1d9 100644 --- a/src/CueSheets/Makefile.am +++ b/src/CueSheets/Makefile.am @@ -11,7 +11,7 @@ SOURCES = \ Banshee.CueSheets/Data/CS_ComposerInfo.cs \ Banshee.CueSheets/Data/CS_GenreInfo.cs \ Banshee.CueSheets/Data/CS_TrackInfoDb.cs \ - Banshee.CueSheets/Gui/Actions.cs \ + Banshee.CueSheets/Gui/CS_Actions.cs \ Banshee.CueSheets/Gui/CS_AlbumListView.cs \ Banshee.CueSheets/Gui/CS_ArtistListView.cs \ Banshee.CueSheets/Gui/CS_CollectionSearchEntry.cs \ diff --git a/src/CueSheets/Resources/GlobalUI.xml b/src/CueSheets/Resources/GlobalUI.xml index cc156a7..cf3f3a1 100644 --- a/src/CueSheets/Resources/GlobalUI.xml +++ b/src/CueSheets/Resources/GlobalUI.xml @@ -2,5 +2,7 @@ <popup action="CueSheetsPopup"> <menuitem action="Synchronize" /> <menuitem name="SourcePreferences" action="SourcePreferencesAction"/> + <separator /> + <menuitem name="NewPlaylist" action="NewPlaylistAction"/> </popup> </ui> |