~ubuntu-branches/debian/experimental/banshee-community-extensions/experimental

« back to all changes in this revision

Viewing changes to src/Lyrics/Banshee.Lyrics/Banshee.Lyrics.Gui/LyricsWindow.cs

  • Committer: Bazaar Package Importer
  • Author(s): Chow Loong Jin
  • Date: 2010-10-01 12:34:03 UTC
  • mfrom: (1.1.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20101001123403-6xw7q58fctu1qynb
Tags: 1.8.0-1
* New upstream release
  + [AlarmClock] Rework synchronization to avoid an infinite loop
  + [AlarmClock] Fix a crash on exit
  + [SoundMenu] Add dependency on the MPRIS extension
* Bump banshee build-dep version to 1.8.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
using Mono.Addins;
32
32
 
33
33
using Gtk;
34
 
using Gdk;
35
34
 
36
35
using Banshee.Gui;
 
36
using Banshee.Gui.Widgets;
37
37
using Banshee.Collection;
38
38
using Banshee.MediaEngine;
39
39
using Banshee.ServiceStack;
40
40
 
41
41
namespace Banshee.Lyrics.Gui
42
42
{
43
 
    public partial class LyricsWindow : Gtk.Window
 
43
    public class LyricsWindow : Window
44
44
    {
45
 
        private TrackInfo saved_track;
46
 
 
47
45
        private int current_mode;
48
46
 
49
47
        public static int HTML_MODE = 0;
50
48
        public static int INSERT_MODE = 1;
51
49
 
52
 
        public LyricsWindow () : base(Gtk.WindowType.Toplevel)
 
50
        private TrackInfo saved_track;
 
51
 
 
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;
 
58
 
 
59
        public LyricsWindow () : base (WindowType.Toplevel)
53
60
        {
54
 
            this.Build ();
55
61
            InitComponents ();
56
62
        }
57
63
 
58
64
        private void InitComponents ()
59
65
        {
60
 
            this.KeyPressEvent += OnKeyPressed;
61
 
            this.DeleteEvent += delegate(object o, DeleteEventArgs args) {
 
66
            Resizable = true;
 
67
            HeightRequest = 425;
 
68
            WidthRequest = 410;
 
69
            WindowPosition = WindowPosition.Center;
 
70
            Icon = IconThemeUtils.LoadIcon ("banshee", 16);
 
71
 
 
72
            var vbox = new VBox () {
 
73
                Spacing = 6,
 
74
                BorderWidth = 12
 
75
            };
 
76
 
 
77
            track_info_display = new ClassicTrackInfoDisplay ();
 
78
            vbox.PackStart (track_info_display, false, false, 0);
 
79
 
 
80
            lyrics_browser = new LyricsBrowser ();
 
81
 
 
82
            lyrics_pane = new ScrolledWindow ();
 
83
            lyrics_pane.Add (lyrics_browser);
 
84
 
 
85
            var frame = new Frame ();
 
86
            frame.Add (lyrics_pane);
 
87
 
 
88
            vbox.PackStart (frame, true, true, 0);
 
89
 
 
90
            var button_box = new HButtonBox () {
 
91
                Spacing = 6,
 
92
                BorderWidth = 1,
 
93
                LayoutStyle = ButtonBoxStyle.End
 
94
            };
 
95
 
 
96
            var copy_button = new Button ("gtk-copy") {
 
97
                TooltipText = AddinManager.CurrentLocalizer.GetString ("Copy lyrics to clipboard")
 
98
            };
 
99
            var close_button = new Button ("gtk-close");
 
100
            refresh_button = new Button ("gtk-refresh");
 
101
            save_button = new Button ("gtk-save");
 
102
 
 
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);
 
107
 
 
108
            vbox.PackStart (button_box, false, false, 0);
 
109
 
 
110
            Add (vbox);
 
111
            if (Child != null) {
 
112
                Child.ShowAll ();
 
113
            }
 
114
 
 
115
            text_view = new TextView ();
 
116
            text_view.WrapMode = WrapMode.Word;
 
117
 
 
118
            Hide ();
 
119
 
 
120
            KeyPressEvent += OnKeyPressed;
 
121
            DeleteEvent += delegate(object o, DeleteEventArgs args) {
62
122
                OnClose (this, null);
63
123
                args.RetVal = true;
64
124
            };
65
125
 
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;
69
130
 
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);
74
135
        }
75
136
 
76
137
        public void ForceUpdate ()
86
147
                artist = AddinManager.CurrentLocalizer.GetString ("Unknown Artist");
87
148
            }
88
149
            window_title += by_str + artist;
89
 
            this.Title = window_title;
 
150
            Title = window_title;
90
151
 
91
152
        }
92
153
 
99
160
            ForceUpdate ();
100
161
        }
101
162
 
102
 
        public LyricsBrowser GetBrowser ()
103
 
        {
104
 
            return this.lyricsBrowser;
 
163
        public LyricsBrowser Browser {
 
164
            get { return lyrics_browser; }
105
165
        }
106
166
 
107
167
        public new void Show ()
108
168
        {
109
169
            if (current_mode != HTML_MODE) {
110
 
                this.SwitchTo (HTML_MODE);
 
170
                SwitchTo (HTML_MODE);
111
171
            }
112
172
            base.Show ();
113
173
        }
122
182
 
123
183
        void OnClose (object sender, EventArgs args)
124
184
        {
125
 
            this.Hide ();
 
185
            Hide ();
126
186
 
127
187
            /*deselect the toggle action "Show lyrics" in the View menu */
128
188
            InterfaceActionService action_service = ServiceManager.Get<InterfaceActionService> ();
134
194
 
135
195
        private void OnRefresh (object sender, EventArgs args)
136
196
        {
137
 
            this.GetBrowser ().OnRefresh ();
 
197
            Browser.OnRefresh ();
 
198
        }
 
199
 
 
200
        private void OnCopy (object sender, EventArgs args)
 
201
        {
 
202
            Browser.CopyLyricsToClipboard ();
138
203
        }
139
204
 
140
205
        private void ManuallyAddLyrics (object sender, EventArgs args)
141
206
        {
142
 
            this.SwitchTo (INSERT_MODE);
 
207
            SwitchTo (INSERT_MODE);
143
208
        }
144
209
 
145
210
        public void SwitchTo (int mode)
146
211
        {
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 ();
 
215
                save_button.Hide ();
 
216
                lyrics_pane.Add (lyrics_browser);
152
217
            } else {
153
 
                this.buttonSave.Show ();
154
 
                this.buttonRefresh.Hide ();
155
 
 
156
 
                this.lyricsScrollPane.Add (this.textBrowser);
157
 
                this.textBrowser.Buffer.Text = "";
158
 
                this.textBrowser.GrabFocus ();
159
 
 
160
 
                this.saved_track = ServiceManager.PlayerEngine.CurrentTrack;
 
218
                save_button.Show ();
 
219
                refresh_button.Hide ();
 
220
 
 
221
                lyrics_pane.Add (text_view);
 
222
                text_view.Buffer.Text = "";
 
223
                text_view.GrabFocus ();
 
224
 
 
225
                saved_track = ServiceManager.PlayerEngine.CurrentTrack;
161
226
            }
162
227
 
163
 
            this.lyricsScrollPane.ResizeChildren ();
164
 
            this.lyricsScrollPane.ShowAll ();
 
228
            lyrics_pane.ResizeChildren ();
 
229
            lyrics_pane.ShowAll ();
165
230
 
166
231
            current_mode = mode;
167
232
        }
168
233
 
169
234
        public void OnSaveLyrics (object sender, EventArgs args)
170
235
        {
171
 
            string lyrics = this.textBrowser.Buffer.Text;
 
236
            string lyrics = text_view.Buffer.Text;
172
237
            LyricsManager.Instance.SaveLyrics (saved_track, lyrics, true);
173
238
 
174
239
            /*refresh all the views. Now the track is taken from the cache */
176
241
                LyricsManager.Instance.FetchLyrics (saved_track);
177
242
            }
178
243
 
179
 
            this.SwitchTo (HTML_MODE);
 
244
            SwitchTo (HTML_MODE);
180
245
        }
181
246
    }
182
247
}
 
 
b'\\ No newline at end of file'