private void InsertDeck(FileInfo file) { ///get the index of the current slide that's selected, ///so that we can insert our deck there int current_slide_index; using (Synchronizer.Lock(deck_traversal_.SyncRoot)) { current_slide_index = deck_traversal_.AbsoluteCurrentSlideIndex; } ///if current_slide_index == -1, this means there are no slides in current deck. ///This new slide we try to insert is the first slide. if (current_slide_index < 0) { current_slide_index = 0; } /// get the deck of slides to insert DeckModel deck = null; if (file.Extension == ".cp3") { deck = Decks.PPTDeckIO.OpenCP3(file); } else if (file.Extension == ".ppt") { deck = Decks.PPTDeckIO.OpenPPT(file); } else if (file.Extension == ".pptx") { deck = Decks.PPTDeckIO.OpenPPT(file); } else if (file.Extension == ".xps") { deck = Decks.XPSDeckIO.OpenXPS(file); } if (deck == null) // This should never happen, since we have filtered on extension { throw new Exception("Wrong file extension"); } else { deck_.InsertDeck(deck); } using (Synchronizer.Lock(deck.TableOfContents.SyncRoot)) { using (Synchronizer.Lock(deck_.TableOfContents.SyncRoot)) { ///insert each slide from the deck into our current deck. for (int i = 0; i < deck.TableOfContents.Entries.Count; i++) { ///create our TOC entry TableOfContentsModel.Entry entry = new TableOfContentsModel.Entry(Guid.NewGuid(), deck_.TableOfContents, deck.TableOfContents.Entries[i].Slide); ///insert it into our TOC this.m_WhereTheEntriesGo.Insert(current_slide_index + i, entry);//Natalie - should it be +1? } } } }