summaryrefslogtreecommitdiff
path: root/src/CueSheets/Banshee.CueSheets/CueSheetEditor.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/CueSheets/Banshee.CueSheets/CueSheetEditor.cs')
-rw-r--r--src/CueSheets/Banshee.CueSheets/CueSheetEditor.cs67
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();
+ }
}
}