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;
 }
示例#5
0
        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);
                    }
                }
            }
        }
示例#6
0
        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);
                }
            }
        }
示例#7
0
        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;
                }
            }
        }