예제 #1
0
        // before we embed we need to check if we have any old shape on the slide. If
        // we have, we need to delete it AFTER the new shape is inserted to preserve
        // the original timeline.
        public void EmbedOnSlide(PowerPointSlide slide, int clickNumber)
        {
            var isOnClick = clickNumber > 0;
            var shapeName = Name;

            if (slide != null)
            {
                // embed new shape using two-turn method. In the first turn, embed the shape, name it to
                // something special to distinguish from the old shape; in the second turn, delete the
                // old shape using timeline invariant deletion, and rename the new shape to the correct
                // name.
                try
                {
                    var audioShape = AudioHelper.InsertAudioFileOnSlide(slide, SaveName);
                    audioShape.Name = "#";
                    slide.RemoveAnimationsForShape(audioShape);

                    if (isOnClick)
                    {
                        slide.SetShapeAsClickTriggered(audioShape, clickNumber, MsoAnimEffect.msoAnimEffectMediaPlay);
                    }
                    else
                    {
                        slide.SetAudioAsAutoplay(audioShape);
                    }

                    // delete old shape
                    slide.DeleteShapesWithPrefixTimelineInvariant(Name);

                    audioShape.Name = shapeName;
                }
                catch (COMException)
                {
                    // Adding the file failed for one reason or another - probably cancelled by the user.
                }
            }
            else
            {
                MessageBox.Show("Slide selection error");
            }
        }
예제 #2
0
        /// <summary>
        /// Initialize Audio from a sound shape
        /// </summary>
        public Audio(Shape shape, string saveName)
        {
            // detect audio type from shape tag
            AudioType audioType = GetShapeAudioType(shape);

            this.Type = audioType;

            // derive matched id from shape name
            string[] temp = shape.Name.Split(new[] { ' ' });
            if (temp.Length < 3)
            {
                throw new FormatException(NarrationsLabText.RecorderUnrecognizeAudio);
            }
            this.MatchScriptID = Int32.Parse(temp[2]);

            // get corresponding audio
            this.Name         = shape.Name;
            this.SaveName     = saveName;
            this.Length       = AudioHelper.GetAudioLengthString(saveName);
            this.LengthMillis = AudioHelper.GetAudioLength(saveName);
        }