/// <summary> /// Button click event was detected. Raises the mouse click event /// to notify the app /// </summary> /// <param name="sender">event sender</param> /// <param name="e">event args</param> private void button_EvtMouseClicked(object sender, WidgetEventArgs e) { if (_player == null) { return; } var widget = e.SourceWidget; var animationWidget = _player.GetAnimationWidgetInCurrentAnimation(widget); PCode onMouseClick = null; SetSelectedWidget(widget); if (animationWidget != null && animationWidget.OnMouseClick != null) { onMouseClick = animationWidget.OnMouseClick; } else if (widget.OnMouseClick != null) { onMouseClick = widget.OnMouseClick; } if (onMouseClick != null && onMouseClick.HasCode()) { _interpreter.Execute(onMouseClick); } else if (widget.IsMouseClickActuateOn) { widget.Actuate(); } }
/// <summary> /// A switch was activated. Figure out the context and execute the /// appropriate action. The input manager triggers this event. Every /// switch has an action that is configured in the swtichconfigmap file. /// The action is executed depending on the state of the animation player. /// </summary> /// <param name="sender">event sender</param> /// <param name="e">event args</param> private void actuatorManager_EvtSwitchActivated(object sender, ActuatorSwitchEventArgs e) { IActuatorSwitch switchObj = e.SwitchObj; try { if (_player == null || _currentPanel == null) { return; } Log.Debug("switch: " + switchObj.Name); Log.Debug(" Panel: " + _currentPanel.Name); if (_currentPanel.UIControl is System.Windows.Forms.Form) { bool visible = Windows.GetVisible(_currentPanel.UIControl); Log.Debug("Form: " + _currentPanel.UIControl.Name + ", playerState: " + _player.State + ", visible: " + visible); if (!visible) { return; } } // get the action associated with the switch PCode onTrigger = getOnTrigger(switchObj); if (onTrigger == null) { Log.Debug("OnTrigger is null. returning"); return; } Log.Debug("onTrigger.HasCode: " + onTrigger.HasCode()); // execute action if the player is in the right state. if (_player.State != PlayerState.Stopped && _player.State != PlayerState.Unknown && _player.State != PlayerState.Paused && onTrigger.HasCode()) { Log.Debug("Executing OnTrigger for panel..." + _currentPanel.Name); _interpreter.Execute(onTrigger); return; } if (_player.State == PlayerState.Timeout || _player.State == PlayerState.Interrupted) { Log.Debug("Calling player transition for firstanimation"); _player.Transition(_firstAnimation); return; } Log.Debug("PLayer state is " + _player.State); if (_player.State != PlayerState.Running) { Log.Debug(_currentPanel.Name + ": Player is not Running. Returning"); return; } playBeep(switchObj); AnimationWidget highlightedWidget = _player.HighlightedWidget; Animation currentAnimation = _player.CurrentAnimation; highlightedWidget = _switchDownHighlightedWidget; currentAnimation = _switchDownAnimation; if (highlightedWidget == null) { highlightedWidget = _switchAcceptedHighlightedWidget; currentAnimation = _switchAcceptedAnimation; } if (highlightedWidget == null) { highlightedWidget = _player.HighlightedWidget; currentAnimation = _player.CurrentAnimation; } resetSwitchEventStates(); if (currentAnimation != null && highlightedWidget != null) { setSwitchState(false); var widgetName = (highlightedWidget.UIWidget is IButtonWidget) ? "Button" : highlightedWidget.UIWidget.Name; AuditLog.Audit(new AuditEventUISwitchDetect(switchObj.Name, _currentPanel.Name, highlightedWidget.UIWidget.GetType().Name, widgetName)); Log.Debug(_currentPanel.Name + ": Switch on " + highlightedWidget.UIWidget.Name + " type: " + highlightedWidget.UIWidget.GetType().Name); // check if the widget has a onSelect code fragment. If so execute it. Otherwise // then check if the animation seq that this widget is a part of, has a onSelect. // If it does, execute that. PCode code; SetSelectedWidget(highlightedWidget.UIWidget); if (highlightedWidget.OnSelect.HasCode()) { code = highlightedWidget.OnSelect; _interpreter.Execute(code); } else if (currentAnimation.OnSelect.HasCode()) { code = currentAnimation.OnSelect; _interpreter.Execute(code); } } else { Log.Debug(_currentPanel.Name + ": No current animation or highlighed widget!!"); } } catch (Exception ex) { Log.Debug(ex.ToString()); } finally { setSwitchState(false); } }