void BrowseForNewPoster() { using (Gtk.FileChooserDialog fc = new Gtk.FileChooserDialog("Choose a new Poster.", this, FileChooserAction.Open, "Cancel", ResponseType.Cancel, "Open", ResponseType.Accept)) { fc.LocalOnly = false; FileFilter filter = new FileFilter(); filter.Name = "Images"; filter.AddMimeType("image/png"); filter.AddMimeType("image/jpeg"); filter.AddMimeType("image/gif"); filter.AddPattern("*.png"); filter.AddPattern("*.jpg"); filter.AddPattern("*.jpeg"); filter.AddPattern("*.jpe"); filter.AddPattern("*.gif"); filter.AddPattern("*.tbn"); fc.AddFilter(filter); if (fc.Run() == (int)ResponseType.Accept) { try { // get the new poster string newposter = new System.IO.FileInfo(fc.Filename).FullName; using (System.Drawing.Image poster = System.Drawing.Image.FromFile(newposter)) { iMetaLibrary.Helpers.ImageHelper.SavePoster(poster, Meta.PosterFilename); if (Poster != null) { Poster.Dispose(); } Poster = GuiHelper.ImageToPixbuf(poster); ExposeIt(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } //Don't forget to call Destroy() or the FileChooserDialog window won't get closed. fc.Destroy(); } }
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(); }; }