/////////////////////////////////////////////////////////////////////////////// // Methods and Eventhandling for Background tasks // /////////////////////////////////////////////////////////////////////////////// /// <summary> /// The presentations <see cref="Thread"/> DoWork event handler. /// Initializes the <see cref="PresenterModule"/> for presentation and /// wires the events. /// </summary> /// <param name="data"> /// A <see cref="object"/> with the list of slides. /// </param> private void PresentationThreadDoWork(object data) { // Create presentation form this.presenterForm = new PresenterModule(); // Cast thread data. var threadParams = (List<object>)data; var trialCollection = threadParams[0] as TrialCollection; var trigger = threadParams[1] as Trigger; var enableTrigger = (bool)threadParams[2]; var captureProperties = (ScreenCaptureProperties)threadParams[3]; CaptureDeviceProperties userCameraProperties = null; if (threadParams.Count > 4) { userCameraProperties = (CaptureDeviceProperties)threadParams[4]; } GetTimeDelegate getTimeMethod = this.GetCurrentTime; // Set triggering state this.presenterForm.EnableTrigger = enableTrigger; // Set general trigger this.presenterForm.GeneralTrigger = trigger; // Set slide list of presenter this.presenterForm.TrialList = trialCollection; // Set screen capture device properties this.presenterForm.ScreenCaptureProperties = captureProperties; // Set user camera properties this.presenterForm.UserCameraProperties = userCameraProperties; // sets the get time method this.presenterForm.GetTimeMethod = getTimeMethod; // Wire presenter events this.presenterForm.CounterChanged += this.ObjPresenterCounterChanged; this.presenterForm.SlideChanged += this.ObjPresenterSlideChanged; this.presenterForm.TrialChanged += this.ObjPresenterTrialChanged; this.presenterForm.TrialEventOccured += this.ObjPresenterTrialEventOccured; this.presenterForm.PresentationDone += this.ObjPresenterPresentationDone; // Wire this forms event this.NewRawDataAvailable += this.RecordModuleNewRawDataAvailable; // Captures input to presentation form. this.presenterForm.Capture = true; // Show presenter form, that starts presentation. this.presenterForm.ShowDialog(); // Presentation is done, so unplug event handlers. this.presenterForm.CounterChanged -= this.ObjPresenterCounterChanged; this.presenterForm.SlideChanged -= this.ObjPresenterSlideChanged; this.presenterForm.TrialChanged -= this.ObjPresenterTrialChanged; this.presenterForm.TrialEventOccured -= this.ObjPresenterTrialEventOccured; this.presenterForm.PresentationDone -= this.ObjPresenterPresentationDone; // Delete presentation form this.presenterForm.Dispose(); this.presenterForm = null; this.NewRawDataAvailable -= this.RecordModuleNewRawDataAvailable; }
/// <summary> /// The <see cref="Control.Click"/> event handler for the /// <see cref="Button"/> <see cref="btnPreviewSlideshow"/>. /// Starts a <see cref="PresenterModule"/> with the given slides. /// </summary> /// <param name="sender">Source of the event.</param> /// <param name="e">An empty <see cref="EventArgs"/></param> private void BtnPreviewSlideshowClick(object sender, EventArgs e) { if (!RecordModule.CheckForCorrectPresentationScreenResolution(PresentationScreen.GetPresentationResolution())) { return; } PresenterModule objPresenter = new PresenterModule(); // Create a newly randomized trial list. TrialCollection trials = this.slideshow.GetRandomizedTrials(); // Create a hardcopy of the trials. TrialCollection copyOfTrials = (TrialCollection)trials.Clone(); // Set slide list of presenter objPresenter.TrialList = copyOfTrials; // Show presenter form, that starts presentation. objPresenter.ShowDialog(); // Update slideshow pictures of newly created trials Document.ActiveDocument.ExperimentSettings.SlideShow.UpdateExperimentPathOfResources(Document.ActiveDocument.ExperimentSettings.SlideResourcesPath); }