36
using Banshee.Gui.Widgets;
37
37
using Banshee.Collection;
38
38
using Banshee.MediaEngine;
39
39
using Banshee.ServiceStack;
41
41
namespace Banshee.Lyrics.Gui
43
public partial class LyricsWindow : Gtk.Window
43
public class LyricsWindow : Window
45
private TrackInfo saved_track;
47
45
private int current_mode;
49
47
public static int HTML_MODE = 0;
50
48
public static int INSERT_MODE = 1;
52
public LyricsWindow () : base(Gtk.WindowType.Toplevel)
50
private TrackInfo saved_track;
52
private ClassicTrackInfoDisplay track_info_display;
53
private LyricsBrowser lyrics_browser;
54
private ScrolledWindow lyrics_pane;
55
private Button refresh_button;
56
private Button save_button;
57
private TextView text_view;
59
public LyricsWindow () : base (WindowType.Toplevel)
58
64
private void InitComponents ()
60
this.KeyPressEvent += OnKeyPressed;
61
this.DeleteEvent += delegate(object o, DeleteEventArgs args) {
69
WindowPosition = WindowPosition.Center;
70
Icon = IconThemeUtils.LoadIcon ("banshee", 16);
72
var vbox = new VBox () {
77
track_info_display = new ClassicTrackInfoDisplay ();
78
vbox.PackStart (track_info_display, false, false, 0);
80
lyrics_browser = new LyricsBrowser ();
82
lyrics_pane = new ScrolledWindow ();
83
lyrics_pane.Add (lyrics_browser);
85
var frame = new Frame ();
86
frame.Add (lyrics_pane);
88
vbox.PackStart (frame, true, true, 0);
90
var button_box = new HButtonBox () {
93
LayoutStyle = ButtonBoxStyle.End
96
var copy_button = new Button ("gtk-copy") {
97
TooltipText = AddinManager.CurrentLocalizer.GetString ("Copy lyrics to clipboard")
99
var close_button = new Button ("gtk-close");
100
refresh_button = new Button ("gtk-refresh");
101
save_button = new Button ("gtk-save");
103
button_box.PackStart (copy_button, false, false, 0);
104
button_box.PackStart (refresh_button, false, false, 0);
105
button_box.PackStart (save_button, false, false, 0);
106
button_box.PackStart (close_button, false, false, 0);
108
vbox.PackStart (button_box, false, false, 0);
115
text_view = new TextView ();
116
text_view.WrapMode = WrapMode.Word;
120
KeyPressEvent += OnKeyPressed;
121
DeleteEvent += delegate(object o, DeleteEventArgs args) {
62
122
OnClose (this, null);
63
123
args.RetVal = true;
66
this.buttonRefresh.Clicked += new EventHandler (OnRefresh);
67
this.buttonSave.Clicked += new EventHandler (OnSaveLyrics);
68
this.buttonClose.Clicked += new EventHandler (OnClose);
126
refresh_button.Clicked += OnRefresh;
127
save_button.Clicked += OnSaveLyrics;
128
close_button.Clicked += OnClose;
129
copy_button.Clicked += OnCopy;
70
this.lyricsBrowser.AddLinkClicked += ManuallyAddLyrics;
71
LyricsManager.Instance.LoadStarted += this.lyricsBrowser.OnLoading;
72
LyricsManager.Instance.LoadFinished += this.lyricsBrowser.LoadString;
73
this.SwitchTo (HTML_MODE);
131
lyrics_browser.AddLinkClicked += ManuallyAddLyrics;
132
LyricsManager.Instance.LoadStarted += lyrics_browser.OnLoading;
133
LyricsManager.Instance.LoadFinished += lyrics_browser.LoadString;
134
SwitchTo (HTML_MODE);
76
137
public void ForceUpdate ()
135
195
private void OnRefresh (object sender, EventArgs args)
137
this.GetBrowser ().OnRefresh ();
197
Browser.OnRefresh ();
200
private void OnCopy (object sender, EventArgs args)
202
Browser.CopyLyricsToClipboard ();
140
205
private void ManuallyAddLyrics (object sender, EventArgs args)
142
this.SwitchTo (INSERT_MODE);
207
SwitchTo (INSERT_MODE);
145
210
public void SwitchTo (int mode)
147
this.lyricsScrollPane.Remove (this.lyricsScrollPane.Child);
212
lyrics_pane.Remove (lyrics_pane.Child);
148
213
if (mode == HTML_MODE) {
149
this.buttonRefresh.Show ();
150
this.buttonSave.Hide ();
151
this.lyricsScrollPane.Add (this.lyricsBrowser);
214
refresh_button.Show ();
216
lyrics_pane.Add (lyrics_browser);
153
this.buttonSave.Show ();
154
this.buttonRefresh.Hide ();
156
this.lyricsScrollPane.Add (this.textBrowser);
157
this.textBrowser.Buffer.Text = "";
158
this.textBrowser.GrabFocus ();
160
this.saved_track = ServiceManager.PlayerEngine.CurrentTrack;
219
refresh_button.Hide ();
221
lyrics_pane.Add (text_view);
222
text_view.Buffer.Text = "";
223
text_view.GrabFocus ();
225
saved_track = ServiceManager.PlayerEngine.CurrentTrack;
163
this.lyricsScrollPane.ResizeChildren ();
164
this.lyricsScrollPane.ShowAll ();
228
lyrics_pane.ResizeChildren ();
229
lyrics_pane.ShowAll ();
166
231
current_mode = mode;
169
234
public void OnSaveLyrics (object sender, EventArgs args)
171
string lyrics = this.textBrowser.Buffer.Text;
236
string lyrics = text_view.Buffer.Text;
172
237
LyricsManager.Instance.SaveLyrics (saved_track, lyrics, true);
174
239
/*refresh all the views. Now the track is taken from the cache */