public void OnSave(object sender, EventArgs args) { string nPerformer = _performer.Text.Trim(); string nTitle = _title.Text.Trim(); string nComposer = _composer.Text.Trim(); string nYear = _year.Text.Trim(); string nSubtitle = _subtitle.Text.Trim(); _sheet.SetPerformer(nPerformer); _sheet.SetTitle(nTitle); _sheet.SetComposer(nComposer); _sheet.SetYear(nYear); _sheet.SetSubtitle(nSubtitle); _sheet.SetImagePath(_imagefile.Filename); _sheet.ClearTracks(); Gtk.TreeIter iter; if (_store.GetIterFirst(out iter)) { do { string title = (string)_store.GetValue(iter, 1); string perf = (string)_store.GetValue(iter, 2); string composer = (string)_store.GetValue(iter, 3); if (composer.Trim() == "") { composer = nComposer; } string piece = (string)_store.GetValue(iter, 4); piece = piece.Trim(); string offset = (string)_store.GetValue(iter, 5); 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); if (perf.Trim() == "") { perf = nPerformer; } CueSheetEntry e = _sheet.AddTrack(title, perf, e_offset); e.setComposer(composer); e.setPiece(piece); } while(_store.IterNext(ref iter)); } _sheet.Save(); }