Exemplo n.º 1
0
        private bool ExecutePlay(int contextHandle, int startMillisecond, int endMillisecond, bool logAudio)
        {
            ExecutionContext context;

            if (!_registeredContexts.TryGetValue(contextHandle, out context))
            {
                return(false);
            }
            if (!(((context.SynchronousEngineInstance != null) && (context.Object != null)) && context.Object.CanBePlayed))
            {
                return(false);
            }
            if (context.SynchronousEngineInstance.IsRunning)
            {
                return(false);
            }
            if (!context.SynchronousEngineInstance.IsPaused)
            {
                try {
                    context.SynchronousEngineInstance.Initialize(context.Object);
                }
                catch (Exception exception) {
                    LogError("ExecutePlay", exception);
                    return(false);
                }
            }
            var str = context.SynchronousEngineInstance.CurrentObject.Key.ToString(CultureInfo.InvariantCulture);

            Host.Communication["KeyInterceptor_" + str]   = context.KeyInterceptor;
            Host.Communication["ExecutionContext_" + str] = context;
            var flag         = context.SynchronousEngineInstance.Play(startMillisecond, endMillisecond, logAudio);
            var saveSettings = false;

            foreach (var form in context.OutputPlugInForms)
            {
                form.BringToFront();

                if (_preferences.CreateIfMissing("SavePlugInDialogPositions", form.Name + ".x", 0) |
                    _preferences.CreateIfMissing("SavePlugInDialogPositions", form.Name + ".y", 0))
                {
                    saveSettings = true;
                }
                form.Location = new Point(_preferences.GetInteger(form.Name + ".x"), _preferences.GetInteger(form.Name + ".y"));
            }

            if (saveSettings)
            {
                _preferences.SaveSettings();
            }

            return(flag);
        }