private DvdSubItem CreateLanguageSubItem(int streamIndex, int languageId) { CultureInfo ci = new CultureInfo(languageId); DvdRenderingStartHint hint = new DvdRenderingStartHint(languageId, streamIndex); return(new DvdSubItem(ci.NativeName, hint, this)); }
private DvdSubItem CreateTitleSubItem(int titleIndex) { int dvdTitleIndex = titleIndex + 1; string titleName = "Title " + dvdTitleIndex; DvdRenderingStartHint hint = new DvdRenderingStartHint(new DvdPlaybackLocation(dvdTitleIndex, 0, 0)); return(new DvdSubItem(titleName, hint, this)); }
private DvdSubItem CreateChapterSubItem(int titleIndex, int chapterIndex) { int dvdTitleIndex = titleIndex + 1; int dvdChapterIndex = chapterIndex + 1; string chapterName = "Chapter " + dvdChapterIndex; DvdRenderingStartHint hint = new DvdRenderingStartHint(new DvdPlaybackLocation(dvdTitleIndex, dvdChapterIndex, 0)); return(new DvdSubItem(chapterName, hint, this)); }
public DvdSubItem(string name, DvdRenderingStartHint hint, PlaylistItem parent) : base(name, parent) { _hint = hint; }
public void AttachPlaylistItemMenu(PlaylistItem plItem, MenuWrapper <T> menu, MenuType menuType, EventHandler clickHandler) { if (menuType != MenuType.Playlist) { AttachCommonPlaylistToolsMenu(menu, menuType, clickHandler, plItem); } MenuWrapper <T> menuToAlter = menu; if (menuType == MenuType.Playlist) { OPMToolStripMenuItem item = new OPMToolStripMenuItem(plItem.DisplayName); item.Tag = plItem; item.Click += clickHandler; item.Checked = _pnlPlaylist.IsActiveItem(plItem); menu.AddSingleEntry(item); menuToAlter = new MenuWrapper <OPMToolStripMenuItem>(item) as MenuWrapper <T>; } if (plItem != null && menuType != MenuType.MultipleItems) { // It may have subitems: // * a DVD item will have titles, chapters, etc ... // * other media files may have bookmarks ... Dictionary <PlaylistSubItem, List <PlaylistSubItem> > submenu = plItem.GetSubmenu(); if (submenu != null && submenu.Count >= 1) { if (menuType == MenuType.SingleItem) { menuToAlter.AddSingleEntry(new OPMMenuStripSeparator()); } foreach (KeyValuePair <PlaylistSubItem, List <PlaylistSubItem> > subitems in submenu) { OPMToolStripMenuItem subItem = new OPMToolStripMenuItem(subitems.Key.Name); subItem.Click += clickHandler; subItem.Tag = subitems.Key; if (subitems.Value != null) { foreach (PlaylistSubItem ssitem in subitems.Value) { OPMToolStripMenuItem subSubItem = null; if (ssitem is DvdSubItem) { subSubItem = new OPMToolStripMenuItem(ssitem.Name); subSubItem.Click += clickHandler; subSubItem.Tag = ssitem; DvdSubItem si = ssitem as DvdSubItem; DvdRenderingStartHint hint = (si != null) ? si.StartHint as DvdRenderingStartHint : null; if (hint != null && hint.IsSubtitleHint) { subSubItem.Checked = (hint.SID == MediaRenderer.DefaultInstance.SubtitleStream); } } else if (ssitem is BookmarkSubItem) { BookmarkSubItem bsi = (ssitem as BookmarkSubItem); BookmarkStartHint hint = (bsi != null) ? bsi.StartHint as BookmarkStartHint : new BookmarkStartHint(Bookmark.Empty); string name = string.Format("{0} - '{1}'", hint.Bookmark.PlaybackTime, bsi.Name); subSubItem = new OPMToolStripMenuItem(name); subSubItem.Click += clickHandler; subSubItem.Tag = ssitem; } if (subSubItem != null) { subItem.DropDownItems.Add(subSubItem); } } } menuToAlter.AddSingleEntry(subItem); } } if (menuType == MenuType.SingleItem) { if (plItem is DvdPlaylistItem) { AttachDvdMenuItems(plItem as DvdPlaylistItem, menuToAlter, clickHandler); } else { AttachFileMenuItems(plItem as PlaylistItem, menuToAlter, clickHandler); } } } }
protected override void DoStartRendererWithHint(RenderingStartHint startHint) { DvdRenderingStartHint hint = startHint as DvdRenderingStartHint; if (dvdGraphBuilder == null) { _vdi = new VideoDvdInformation(renderMediaName); InitMedia(); InitAudioAndVideo(); // Run the graph to play the media file int hr = mediaControl.Run(); DsError.ThrowExceptionForHR(hr); // Give enough time for the filter graph to be completely built Thread.Sleep(500); rotEntry = new DsROTEntry(mediaControl as IFilterGraph); } if (hint == DvdRenderingStartHint.MainMenu) { int hr = dvdControl2.ShowMenu(DvdMenuId.Title, DvdCmdFlags.Flush | DvdCmdFlags.Block, _lastCmd); DsError.ThrowExceptionForHR(hr); } else if (hint == DvdRenderingStartHint.Beginning) { int hr = 0; if (ProTONEConfig.DisableDVDMenu) { hr = dvdControl2.PlayTitle(1, DvdCmdFlags.Flush | DvdCmdFlags.Block, _lastCmd); } else { //dvdControl.PlayForwards(1f, DvdCmdFlags.Flush | DvdCmdFlags.Block, _lastCmd); hr = dvdControl2.ShowMenu(DvdMenuId.Title, DvdCmdFlags.Flush | DvdCmdFlags.Block, _lastCmd); } DsError.ThrowExceptionForHR(hr); } else if (hint.Location.ChapterNum == 0) { int hr = dvdControl2.PlayTitle(hint.Location.TitleNum, DvdCmdFlags.Flush | DvdCmdFlags.Block, _lastCmd); DsError.ThrowExceptionForHR(hr); } else { int hr = dvdControl2.PlayChapterInTitle(hint.Location.TitleNum, hint.Location.ChapterNum, DvdCmdFlags.Flush | DvdCmdFlags.Block, _lastCmd); DsError.ThrowExceptionForHR(hr); } if (ProTONEConfig.PrefferedSubtitleLang > 0) { int sid = _vdi.GetSubtitle(ProTONEConfig.PrefferedSubtitleLang); if (sid > 0) { SetSubtitleStream(sid); } } }
public void HandlePlaylistItemMenuClick(object sender, EventArgs e) { OPMToolStripMenuItem senderMenu = (sender as OPMToolStripMenuItem); if (senderMenu != null) { try { senderMenu.Enabled = false; if (senderMenu.Tag != null) { if (senderMenu.Tag is PlaylistSubItem) { if (senderMenu.Tag is DvdSubItem) { DvdSubItem si = senderMenu.Tag as DvdSubItem; DvdRenderingStartHint hint = (si != null) ? si.StartHint as DvdRenderingStartHint : null; if (hint != null && hint.IsSubtitleHint) { MediaRenderer.DefaultInstance.SubtitleStream = hint.SID; return; } } if (senderMenu.Tag is AudioCdSubItem) { CDAFileInfo cdfi = (senderMenu.Tag as AudioCdSubItem).Parent.MediaFileInfo as CDAFileInfo; if (cdfi != null) { cdfi.RefreshDisk(); EventDispatch.DispatchEvent(LocalEventNames.UpdatePlaylistNames, true); } } else { PlaylistSubItem psi = senderMenu.Tag as PlaylistSubItem; if (psi != null && psi.StartHint != null) { JumpToPlaylistSubItem(senderMenu.Tag as PlaylistSubItem); } } } else if (senderMenu.Tag is PlaylistItem) { JumpToPlaylistItem(senderMenu.Tag as PlaylistItem); } else { ShortcutMapper.DispatchCommand((OPMShortcut)senderMenu.Tag); } } } finally { senderMenu.Enabled = true; } } }