diff options
Diffstat (limited to 'src/CueSheets/Banshee.CueSheets/CueSheetEditor.cs')
-rw-r--r-- | src/CueSheets/Banshee.CueSheets/CueSheetEditor.cs | 67 |
1 files changed, 59 insertions, 8 deletions
diff --git a/src/CueSheets/Banshee.CueSheets/CueSheetEditor.cs b/src/CueSheets/Banshee.CueSheets/CueSheetEditor.cs index 4e6fca2..57f5596 100644 --- a/src/CueSheets/Banshee.CueSheets/CueSheetEditor.cs +++ b/src/CueSheets/Banshee.CueSheets/CueSheetEditor.cs @@ -1,4 +1,5 @@ using System; +using System.Text.RegularExpressions; namespace Banshee.CueSheets { @@ -15,6 +16,7 @@ namespace Banshee.CueSheets private Gtk.Button _reload; private Gtk.Button _add_track; private Gtk.Button _del_track; + private Gtk.Button _save; public CueSheetEditor (CueSheet s) { //_sheet=new CueSheet(s.cueFile()); @@ -32,9 +34,13 @@ namespace Banshee.CueSheets _title.Text=_sheet.title (); _performer.Text=_sheet.performer (); - _imagefile.SelectFilename (_sheet.imageFullFileName()); - Gdk.Pixbuf pb=new Gdk.Pixbuf(_sheet.imageFullFileName(),100,100); - _image.Pixbuf=pb; + try { + _imagefile.SelectFilename (_sheet.imageFullFileName()); + Gdk.Pixbuf pb=new Gdk.Pixbuf(_sheet.imageFullFileName(),100,100); + _image.Pixbuf=pb; + } catch(System.Exception e) { + Hyena.Log.Information (e.ToString ()); + } _store.Clear (); int i,N; for(i=0,N=_sheet.nEntries ();i<N;i++) { @@ -44,7 +50,9 @@ namespace Banshee.CueSheets hs=t%100; m=t/(100*60); s=(t/100)%60; - String offset=String.Format ("{0:00}",m)+":"+String.Format ("{0:00}",s)+"."+hs.ToString (); + String offset=String.Format ("{0:00}",m)+":"+ + String.Format ("{0:00}",s)+"."+ + String.Format ("{0:00}",hs); _store.AppendValues (i+1,_sheet.entry (i).title (),offset); } } @@ -57,9 +65,12 @@ namespace Banshee.CueSheets _performer=new Gtk.Entry(200); _title=new Gtk.Entry(200); + _title.WidthChars=60; + _performer.WidthChars=60; _image=new Gtk.Image(); _image.SetSizeRequest (100,100); _imagefile=new Gtk.FileChooserButton("Choose image file",Gtk.FileChooserAction.Open); + _imagefile.FileSet+=new EventHandler(EvtImageSet); Gtk.Image icn_add_track=new Gtk.Image(Gtk.Stock.Add,Gtk.IconSize.Button); _add_track=new Gtk.Button(icn_add_track); @@ -69,6 +80,10 @@ namespace Banshee.CueSheets _del_track=new Gtk.Button(icn_del_track); _del_track.Clicked+=OnDelTrack; + Gtk.Image icn_save=new Gtk.Image(Gtk.Stock.Save,Gtk.IconSize.Button); + _save=new Gtk.Button(icn_save); + _save.Clicked+=OnSave; + _store=new Gtk.ListStore(typeof(int),typeof(string),typeof(string)); _tracks=new Gtk.TreeView(); _tracks.AppendColumn ("Nr.", new Gtk.CellRendererText (), "text", 0); @@ -91,30 +106,32 @@ namespace Banshee.CueSheets hb2.PackEnd (_reload,false,false,1); hb2.PackEnd (_del_track,false,false,1); hb2.PackEnd (_add_track,false,false,1); + hb2.PackEnd (_save,false,false,1); Gtk.HBox hb=new Gtk.HBox(); Gtk.VBox vb1=new Gtk.VBox(); vb1.PackStart (frm,false,false,0); vb1.PackStart (hb2,true,true,0); - hb.PackStart (vb1); + hb.PackStart (vb1,false,false,0); Gtk.Frame frm2=new Gtk.Frame(); frm2.Add (_image); - hb.PackEnd (frm2); + hb.PackEnd (frm2,false,false,2); Gtk.ScrolledWindow scroll=new Gtk.ScrolledWindow(); scroll.Add (_tracks); + scroll.SetSizeRequest (-1,300); base.VBox.PackStart(hb,false,false,4); base.VBox.PackStart (_imagefile,false,false,4); base.VBox.PackStart(scroll,true,true,0); base.VBox.ShowAll (); - base.AddButton ("Cancel",0); - base.AddButton ("OK",1); + base.AddButton ("Close",0); } public void OnReload(object sender,EventArgs args) { + Reload (); } public void OnAddTrack(object sender,EventArgs args) { @@ -122,6 +139,40 @@ namespace Banshee.CueSheets public void OnDelTrack(object sender,EventArgs args) { } + + public void EvtImageSet(object sender,EventArgs args) { + try { + string imgf=_imagefile.Filename; + Gdk.Pixbuf pb=new Gdk.Pixbuf(imgf,100,100); + _image.Pixbuf=pb; + } catch(System.Exception e) { + Hyena.Log.Information (e.ToString ()); + } + } + + public void OnSave(object sender,EventArgs args) { + string nPerformer=_performer.Text.Trim (); + string nTitle=_title.Text.Trim (); + _sheet.SetPerformer(nPerformer); + _sheet.SetTitle(nTitle); + _sheet.SetImagePath(_imagefile.Filename); + _sheet.ClearTracks(); + Gtk.TreeIter iter; + if (_store.GetIterFirst(out iter)) { + do { + string title=(string) _store.GetValue (iter,1); + string offset=(string) _store.GetValue (iter,2); + string []parts=Regex.Split(offset,"[.:]"); + double e_offset; + int min=Convert.ToInt32(parts[0]); + int secs=Convert.ToInt32(parts[1]); + int hsecs=Convert.ToInt32(parts[2]); + e_offset=min*60+secs+(hsecs/100.0); + _sheet.AddTrack(title,nPerformer,e_offset); + } while(_store.IterNext (ref iter)); + } + _sheet.Save(); + } } } |