public ExportingDialog(iMetaLibrary.Scanners.MovieScanner MovieScanner, iMetaLibrary.Scanners.TvScanner TvScanner) { this.Build (); notebook1.ShowTabs = false; notebook1.ShowBorder = false; bkgWorker = new System.ComponentModel.BackgroundWorker(); bkgWorker.WorkerSupportsCancellation = true; bkgWorker.DoWork += HandleBkgWorkerDoWork; System.Timers.Timer pulsar = new System.Timers.Timer(50) { AutoReset = true}; pulsar.Elapsed += delegate { pbarExporting.Pulse(); }; this.buttonCancel.Clicked += delegate(object sender, EventArgs e) { bkgWorker.CancelAsync(); this.Destroy(); }; this.buttonOk.Clicked += delegate(object sender, EventArgs e) { if(notebook1.Page == 0) { string folder = filechooserbutton1.Filename; if(String.IsNullOrEmpty(folder) || !System.IO.Directory.Exists(folder)){ MessageBox.Show("Invalid export location specfied."); return; } this.buttonOk.Visible = false; bkgWorker.RunWorkerAsync(new object[] { folder, MovieScanner, TvScanner} ); pulsar.Start(); notebook1.Page = 1; } else { // final page. this.Destroy(); } }; bkgWorker.RunWorkerCompleted += delegate(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e) { pulsar.Stop(); if(e.Result as bool? == true) { notebook1.Page = 2; this.buttonOk.Visible = true; this.buttonCancel.Visible = false; } else { notebook1.Page = 3; this.buttonOk.Visible = true; this.buttonCancel.Visible = false; } }; }
public void InitializeShow(iMetaLibrary.Metadata.TvShowMeta TvShowMeta, iMetaLibrary.Metadata.TvFileMeta[] Episodes) { /* var enumerator = store.GetEnumerator(); while(enumerator.MoveNext()) { ((GuiComponents.TvEpisodeNodeItem)enumerator.Current).Meta.MetaUpdated -= MetaUpdated; } */ /* store.Foreach(delegate(TreeModel modelOuter, TreePath pathOuter, TreeIter iterOuter) { TreeIter childIter; modelOuter.IterChildren(out childIter); modelOuter.Foreach(delegate(TreeModel model, TreePath path, TreeIter iter) { GuiComponents.TvEpisodeNodeItem node = model.GetValue(iter, 0) as GuiComponents.TvEpisodeNodeItem; if(node != null) node.Meta.MetaUpdated -= MetaUpdated; return true; }); return true; }); */ store.Clear(); string showtitle = TvShowMeta == null ? Episodes[0].ShowTitle : TvShowMeta.Title; this.TvShowMeta = TvShowMeta; this.Episodes = Episodes; //lblShowName.Markup = "<span font=\"18\" weight=\"bold\">{0}</span> <span size=\"small\"> [{1} Episode{2}]</span>".FormatStr(showtitle.HtmlEncode(), Episodes.Length, Episodes.Length == 1 ? "" : "s"); if(Poster != null) { Poster.Dispose(); Poster = null; } System.Drawing.Image poster = Episodes[0].GetPoster(); if(poster != null) { Poster = GuiHelper.ImageToPixbufIcon(poster, 230, 320); poster.Dispose(); poster = null; } SortedList<int, List<iMetaLibrary.Metadata.TvFileMeta>> seasons = new SortedList<int, List<iMetaLibrary.Metadata.TvFileMeta>>(); foreach(iMetaLibrary.Metadata.TvFileMeta file in Episodes) { if(!seasons.ContainsKey(file.Season)) seasons.Add(file.Season, new List<iMetaLibrary.Metadata.TvFileMeta>()); seasons[file.Season].Add(file); } foreach(int season in seasons.Keys) { var iter = store.AppendValues(new KeyNode(season == 0 ? "Specials" : "Season {0}".FormatStr(season))); foreach(iMetaLibrary.Metadata.TvFileMeta meta in seasons[season]) { store.AppendValues(iter, new GuiComponents.TvEpisodeNodeItem(meta)); meta.MetaUpdated += MetaUpdated; } } treeview.ExpandAll(); //txtShowInfoTvdbId.Buffer.Text = TvShowMeta == null ? "" : TvShowMeta.Id.ToString(); //txtShowInfoRuntime.Buffer.Text = TvShowMeta == null ? "" : TvShowMeta.Runtime.ToString(); txtTitle.Text = showtitle; txtMpaa.Text = TvShowMeta == null ? "" : TvShowMeta.Mpaa; txtPremiered.Text = TvShowMeta == null ? "" : TvShowMeta.Premiered; txtStudio.Text = TvShowMeta == null ? "" : TvShowMeta.Studio; txtGenres.Text = TvShowMeta == null ? "" : String.Join(", ", TvShowMeta.Genres); txtPlot.Buffer.Text = TvShowMeta == null ? "" : TvShowMeta.Plot; switch(TvShowMeta == null ? "" : TvShowMeta.Status) { // Continuing - Series currently still in production this is generally the status that should be set during the initial run of a season case "Continuing": cboStatus.Active = 0; break; // Ended - For a series which has finished it's run and is not producing any new episodes. case "Ended ": cboStatus.Active = 1; break; // On Hiatus - For series where the current season has ended and it's return status is unknown. case "On Hiatus": cboStatus.Active = 2; break; // Other - Not commonly used, potentially for series that are in production and have yet to air at all. default: cboStatus.Active = 3; break; } this.QueueDraw(); }
public TvEpisodeNodeItem(iMetaLibrary.Metadata.TvFileMeta Meta, bool Spacer = false) { this.Meta = Meta; this.Spacer = Spacer; }
public MovieEditor(iMetaLibrary.Metadata.MovieMeta Meta) { this.Build (); this.Meta = Meta; #region setup the actors datagrid store = new NodeStore(typeof(ActorNode)); CellRendererText nameRender = new CellRendererText(){ Editable = true, }; nameRender.Edited += delegate(object o, EditedArgs args) { // update the text ActorNode node = (ActorNode)store.GetNode(new Gtk.TreePath(args.Path)); node.Name = args.NewText; }; nvActors.AppendColumn("Name", nameRender, "text", 0); CellRendererText roleRender = new CellRendererText(){ Editable = true, }; roleRender.Edited += delegate(object o, EditedArgs args) { // update the text ActorNode node = (ActorNode)store.GetNode(new Gtk.TreePath(args.Path)); node.Role = args.NewText; }; nvActors.AppendColumn("Role", roleRender, "text", 1); nvActors.NodeStore = store; btnActorsRemove.Clicked += delegate { ActorNode node = nvActors.NodeSelection.SelectedNode as ActorNode; if(node != null) store.RemoveNode(node); }; btnActorsAdd.Clicked += delegate { var node = new ActorNode(); store.AddNode(node); nvActors.NodeSelection.SelectNode(node); int _n = 0; var enumerator = store.GetEnumerator(); while(enumerator.MoveNext()) _n++; nvActors.ScrollToCell(new TreePath(new int[] {_n-1}), null, false, 0, 0); }; #endregion if(Meta.Actors != null){ foreach(var actor in Meta.Actors) store.AddNode(new ActorNode() { Name = actor.Key, Role = actor.Value}); } txtTitle.Text = Meta.Title ?? ""; txtSortTitle.Text = Meta.SortTitle ?? ""; txtSet.Text = Meta.Set ?? ""; txtTagline.Text = Meta.TagLine ?? ""; txtGenres.Text = String.Join(", ", Meta.Genres ?? new string[] {}); txtDirectors.Text = String.Join(", ", Meta.Directors ?? new string[] {}); txtWriters.Text = String.Join(", ", Meta.Writers ?? new string[] {}); txtTrailer.Text = Meta.Trailer ?? ""; txtImdbId.Text = Meta.Id ?? ""; txtMpaa.Text = Meta.Mpaa ?? ""; txtReleaseDate.Text = Meta.ReleaseDate > new DateTime(1850, 1,1) ? Meta.ReleaseDate.ToString("yyyy-MM-dd") : ""; txtPlot.Buffer.Text = Meta.Plot ?? ""; numRuntime.Value = Meta.Runtime / 60; // convert seconds to minutes ratingwidget.Value = (int)Meta.Rating; Poster = GuiHelper.ImageToPixbuf(Meta.LoadThumbnail(290, 1000)); //ratingwidget.Visible = false; buttonOk.Clicked += delegate { Save (); }; eventPoster.ButtonPressEvent += delegate{ BrowseForNewPoster(); }; }
public EpisodesEditorGui(iMetaLibrary.Metadata.TvFileMeta Meta) { this.Build (); this.Meta = Meta; this.buttonOk.Clicked += HandleButtonOkhandleClicked; string tbnFile = Meta.Filename.Substring(0, Meta.Filename.LastIndexOf(".")+1) + "tbn"; if (System.IO.File.Exists(tbnFile)) { using(System.Drawing.Image image = System.Drawing.Image.FromFile(tbnFile)) { imgThumbnail.Pixbuf = GuiHelper.ImageToPixbufIcon(image, 320, 240); } //UsingTbnFile = true; } else { //picThumbnail.Image = Resources.noposter; } store = new NodeStore(typeof(TvEpisodeNode)); //List<iMetaLibrary.Metadata.TvEpisodeMeta> episodes = new List<iMetaLibrary.Metadata.TvEpisodeMeta>(); bool first = true; foreach (iMetaLibrary.Metadata.TvEpisodeMeta episode in Meta.Episodes) { //episodes.Add(episode.Clone()); iMetaLibrary.Metadata.TvEpisodeMeta epmeta = episode.Clone(); if(first) { episodeEditor.Initialize(epmeta); first = false; } store.AddNode(new TvEpisodeNode(epmeta)); } nvEpisodeList.NodeStore = store; nvEpisodeList.AppendColumn("Episode", new Gtk.CellRendererText (), "text", 0); nvEpisodeList.NodeSelection.Changed += delegate(object o, System.EventArgs args) { Gtk.NodeSelection selection = (Gtk.NodeSelection) o; TvEpisodeNode node = (TvEpisodeNode) selection.SelectedNode; // check selection hasnt changed if (node == SelectedEpisodeNode) return; // check if current data in episode editor is valid if (!episodeEditor.IsValid()) { nvEpisodeList.NodeSelection.SelectNode(SelectedEpisodeNode); return; } else // if valid saved the data to the meta object { episodeEditor.Save(); // this reassignment to itself forces the listbox to revalidate it and updates the text in the listbox if change, otherwise it doesnt update //lstEpisodes.Items[SelectedEpisodeIndex] = lstEpisodes.Items[SelectedEpisodeIndex]; } // update selected epsiode index SelectedEpisodeNode = node; // initialize the newly selected episode data episodeEditor.Initialize(node.Meta); };
public TvEpisodeNode(iMetaLibrary.Metadata.TvEpisodeMeta Meta) { this.Meta = Meta;