private void BuildWindow()
        {
            VBox.Spacing = 12;
            main_box     = VBox;

            var save_button = new Button("gtk-save")
            {
                CanDefault = true
            };

            name_entry          = new Entry();
            name_entry.Text     = feed.Title;
            name_entry.Changed += delegate {
                save_button.Sensitive = !String.IsNullOrEmpty(name_entry.Text);
            };

            subscribed_check = new CheckButton(Catalog.GetString("Check periodically for new episodes"))
            {
                TooltipText = Catalog.GetString("If checked, Banshee will check every hour to see if this podcast has new episodes")
            };

            download_check = new CheckButton(Catalog.GetString("Download new episodes"));
            DownloadPref   = feed.AutoDownload;

            archive_check = new CheckButton(Catalog.GetString("Archive all episodes except the newest one"));
            MaxItemCount  = (int)feed.MaxItemCount;

            subscribed_check.Toggled += delegate {
                download_check.Sensitive = archive_check.Sensitive = subscribed_check.Active;
            };
            subscribed_check.Active  = feed.IsSubscribed;
            download_check.Sensitive = archive_check.Sensitive = subscribed_check.Active;

            var last_updated_text = new Label(feed.LastDownloadTime.ToString("f"))
            {
                Justify = Justification.Left,
                Xalign  = 0f
            };

            var feed_url_text = new Label()
            {
                Text       = feed.Url.ToString(),
                Wrap       = false,
                Selectable = true,
                Xalign     = 0f,
                Justify    = Justification.Left,
                Ellipsize  = Pango.EllipsizeMode.End
            };

            string description_string = String.IsNullOrEmpty(feed.Description) ?
                                        Catalog.GetString("No description available") :
                                        feed.Description;

            var header_box = new HBox()
            {
                Spacing = 6
            };

            header_image_frame = new Frame();
            header_image       = new Image();
            LoadCoverArt(fake_track);
            header_image_frame.Add(
                CoverArtEditor.For(header_image,
                                   (x, y) => true,
                                   () => fake_track,
                                   () => LoadCoverArt(fake_track)
                                   )
                );
            header_box.PackStart(header_image_frame, false, false, 0);

            var table = new Hyena.Widgets.SimpleTable <int> ();

            table.XOptions[0] = AttachOptions.Fill;
            table.XOptions[1] = AttachOptions.Expand | AttachOptions.Fill;
            table.AddRow(0, HeaderLabel(Catalog.GetString("Name:")), name_entry);
            table.AddRow(1, HeaderLabel(Catalog.GetString("Website:")),
                         new Gtk.Alignment(0f, 0f, 0f, 0f)
            {
                Child = new LinkButton(feed.Link, Catalog.GetString("Visit"))
                {
                    Image = new Gtk.Image(Gtk.Stock.JumpTo, Gtk.IconSize.Button)
                }
            });
            header_box.PackStart(table, true, true, 0);

            main_box.PackStart(header_box, false, false, 0);

            Add(Catalog.GetString("Subscription Options"), subscribed_check, download_check, archive_check);

            var details = new Banshee.Gui.TrackEditor.StatisticsPage();

            details.AddItem(Catalog.GetString("Feed URL:"), feed_url_text.Text);
            details.AddItem(Catalog.GetString("Last Refreshed:"), last_updated_text.Text);
            details.AddItem(Catalog.GetString("Description:"), description_string, true);
            details.AddItem(Catalog.GetString("Category:"), feed.Category);
            details.AddItem(Catalog.GetString("Keywords:"), feed.Keywords);
            details.AddItem(Catalog.GetString("Copyright:"), feed.Copyright);
            details.HeightRequest = 120;
            Add(true, Catalog.GetString("Details"), details);

            AddActionWidget(new Button("gtk-cancel")
            {
                CanDefault = true
            }, ResponseType.Cancel);
            AddActionWidget(save_button, ResponseType.Ok);
        }
        private void BuildWindow()
        {
            VBox.Spacing = 12;
            main_box = VBox;

            var save_button = new Button ("gtk-save") { CanDefault = true };

            name_entry = new Entry ();
            name_entry.Text = feed.Title;
            name_entry.Changed += delegate {
                save_button.Sensitive = !String.IsNullOrEmpty (name_entry.Text);
            };

            subscribed_check = new CheckButton (Catalog.GetString ("Check periodically for new episodes")) {
                TooltipText = Catalog.GetString ("If checked, Banshee will check every hour to see if this podcast has new episodes")
            };

            download_check = new CheckButton (Catalog.GetString ("Download new episodes"));
            DownloadPref = feed.AutoDownload;

            archive_check = new CheckButton (Catalog.GetString ("Archive all episodes except the newest one"));
            MaxItemCount = (int)feed.MaxItemCount;

            subscribed_check.Toggled += delegate {
                download_check.Sensitive = archive_check.Sensitive = subscribed_check.Active;
            };
            subscribed_check.Active = feed.IsSubscribed;
            download_check.Sensitive = archive_check.Sensitive = subscribed_check.Active;

            var last_updated_text = new Label (feed.LastDownloadTime.ToString ("f")) {
                Justify = Justification.Left,
                Xalign = 0f
            };

            var feed_url_text = new Label () {
                Text = feed.Url.ToString (),
                Wrap = false,
                Selectable = true,
                Xalign = 0f,
                Justify = Justification.Left,
                Ellipsize = Pango.EllipsizeMode.End
            };

            string description_string = String.IsNullOrEmpty (feed.Description) ?
                                        Catalog.GetString ("No description available") :
                                        feed.Description;

            var header_box = new HBox () { Spacing = 6 };

            header_image_frame = new Frame ();
            header_image = new Image ();
            LoadCoverArt (fake_track);
            header_image_frame.Add (
                CoverArtEditor.For (header_image,
                    (x, y) => true,
                    () => fake_track,
                    () => LoadCoverArt (fake_track)
                )
            );
            header_box.PackStart (header_image_frame, false, false, 0);

            var table = new Hyena.Widgets.SimpleTable<int> ();
            table.XOptions[0] = AttachOptions.Fill;
            table.XOptions[1] = AttachOptions.Expand | AttachOptions.Fill;
            table.AddRow (0, HeaderLabel (Catalog.GetString ("Name:")), name_entry);
            table.AddRow (1, HeaderLabel (Catalog.GetString ("Website:")),
                new Gtk.Alignment (0f, 0f, 0f, 0f) {
                    Child = new LinkButton (feed.Link, Catalog.GetString ("Visit")) {
                        Image = new Gtk.Image (Gtk.Stock.JumpTo, Gtk.IconSize.Button)
                    }
            });
            header_box.PackStart (table, true, true, 0);

            main_box.PackStart (header_box, false, false, 0);

            Add (Catalog.GetString ("Subscription Options"), subscribed_check, download_check, archive_check);

            var details = new Banshee.Gui.TrackEditor.StatisticsPage ();
            details.AddItem (Catalog.GetString ("Feed URL:"), feed_url_text.Text);
            details.AddItem (Catalog.GetString ("Last Refreshed:"), last_updated_text.Text);
            details.AddItem (Catalog.GetString ("Description:"), description_string, true);
            details.AddItem (Catalog.GetString ("Category:"), feed.Category);
            details.AddItem (Catalog.GetString ("Keywords:"), feed.Keywords);
            details.AddItem (Catalog.GetString ("Copyright:"), feed.Copyright);
            details.HeightRequest = 120;
            Add (true, Catalog.GetString ("Details"), details);

            AddActionWidget (new Button ("gtk-cancel") { CanDefault = true }, ResponseType.Cancel);
            AddActionWidget (save_button, ResponseType.Ok);
        }