mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-16 13:15:03 +00:00
@@ -190,6 +190,12 @@ namespace PepperDash.Essentials
|
|||||||
(_CurrentSourceInfo.SourceDevice as IInUseTracking).InUseTracker.AddUser(this, "control");
|
(_CurrentSourceInfo.SourceDevice as IInUseTracking).InUseTracker.AddUser(this, "control");
|
||||||
if (handler != null)
|
if (handler != null)
|
||||||
handler(_CurrentSourceInfo, ChangeType.DidChange);
|
handler(_CurrentSourceInfo, ChangeType.DidChange);
|
||||||
|
|
||||||
|
var vc = VideoCodec as IHasExternalSourceSwitching;
|
||||||
|
if (vc != null)
|
||||||
|
{
|
||||||
|
vc.SetSelectedSource(_CurrentSourceInfo.SourceKey);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SourceListItem _CurrentSourceInfo;
|
SourceListItem _CurrentSourceInfo;
|
||||||
|
|||||||
@@ -14,16 +14,23 @@ using PepperDash.Essentials.Core.SmartObjects;
|
|||||||
namespace PepperDash.Essentials.Core
|
namespace PepperDash.Essentials.Core
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
/// Defines the ability to power a device on and off
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IPower
|
public interface IPower
|
||||||
{
|
{
|
||||||
void PowerOn();
|
void PowerOn();
|
||||||
void PowerOff();
|
void PowerOff();
|
||||||
void PowerToggle();
|
void PowerToggle();
|
||||||
BoolFeedback PowerIsOnFeedback { get; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds feedback for current power state
|
||||||
|
/// </summary>
|
||||||
|
public interface IPowerWithFeedback : IPower
|
||||||
|
{
|
||||||
|
BoolFeedback PowerIsOnFeedback { get; }
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -34,7 +41,12 @@ namespace PepperDash.Essentials.Core
|
|||||||
triList.SetSigFalseAction(101, dev.PowerOn);
|
triList.SetSigFalseAction(101, dev.PowerOn);
|
||||||
triList.SetSigFalseAction(102, dev.PowerOff);
|
triList.SetSigFalseAction(102, dev.PowerOff);
|
||||||
triList.SetSigFalseAction(103, dev.PowerToggle);
|
triList.SetSigFalseAction(103, dev.PowerToggle);
|
||||||
dev.PowerIsOnFeedback.LinkInputSig(triList.BooleanInput[101]);
|
|
||||||
|
var fbdev = dev as IPowerWithFeedback;
|
||||||
|
if (fbdev != null)
|
||||||
|
{
|
||||||
|
fbdev.PowerIsOnFeedback.LinkInputSig(triList.BooleanInput[101]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void UnlinkButtons(this IPower dev, BasicTriList triList)
|
public static void UnlinkButtons(this IPower dev, BasicTriList triList)
|
||||||
@@ -42,7 +54,12 @@ namespace PepperDash.Essentials.Core
|
|||||||
triList.ClearBoolSigAction(101);
|
triList.ClearBoolSigAction(101);
|
||||||
triList.ClearBoolSigAction(102);
|
triList.ClearBoolSigAction(102);
|
||||||
triList.ClearBoolSigAction(103);
|
triList.ClearBoolSigAction(103);
|
||||||
dev.PowerIsOnFeedback.UnlinkInputSig(triList.BooleanInput[101]);
|
|
||||||
|
var fbdev = dev as IPowerWithFeedback;
|
||||||
|
if (fbdev != null)
|
||||||
|
{
|
||||||
|
fbdev.PowerIsOnFeedback.UnlinkInputSig(triList.BooleanInput[101]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -181,14 +181,18 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cameraDevice is IPower)
|
var powerCamera = cameraDevice as IPower;
|
||||||
|
if (powerCamera != null)
|
||||||
{
|
{
|
||||||
var powerCamera = cameraDevice as IPower;
|
|
||||||
trilist.SetSigTrueAction(joinMap.PowerOn.JoinNumber, () => powerCamera.PowerOn());
|
trilist.SetSigTrueAction(joinMap.PowerOn.JoinNumber, () => powerCamera.PowerOn());
|
||||||
trilist.SetSigTrueAction(joinMap.PowerOff.JoinNumber, () => powerCamera.PowerOff());
|
trilist.SetSigTrueAction(joinMap.PowerOff.JoinNumber, () => powerCamera.PowerOff());
|
||||||
|
|
||||||
powerCamera.PowerIsOnFeedback.LinkInputSig(trilist.BooleanInput[joinMap.PowerOn.JoinNumber]);
|
var powerFbCamera = powerCamera as IPowerWithFeedback;
|
||||||
powerCamera.PowerIsOnFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.PowerOff.JoinNumber]);
|
if (powerFbCamera != null)
|
||||||
|
{
|
||||||
|
powerFbCamera.PowerIsOnFeedback.LinkInputSig(trilist.BooleanInput[joinMap.PowerOn.JoinNumber]);
|
||||||
|
powerFbCamera.PowerIsOnFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.PowerOff.JoinNumber]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cameraDevice is ICommunicationMonitor)
|
if (cameraDevice is ICommunicationMonitor)
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ namespace PepperDash.Essentials.Devices.Common.Codec
|
|||||||
void AddExternalSource(string connectorId, string key, string name, eExternalSourceType type);
|
void AddExternalSource(string connectorId, string key, string name, eExternalSourceType type);
|
||||||
void SetExternalSourceState(string key, eExternalSourceMode mode);
|
void SetExternalSourceState(string key, eExternalSourceMode mode);
|
||||||
void ClearExternalSources();
|
void ClearExternalSources();
|
||||||
|
void SetSelectedSource(string key);
|
||||||
Action<string, string> RunRouteAction { set;}
|
Action<string, string> RunRouteAction { set;}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -56,6 +56,7 @@ namespace PepperDash.Essentials.Devices.Common
|
|||||||
eRoutingPortConnectionType.DigitalAudio, null, this);
|
eRoutingPortConnectionType.DigitalAudio, null, this);
|
||||||
OutputPorts = new RoutingPortCollection<RoutingOutputPort> { AnyVideoOut, AnyAudioOut };
|
OutputPorts = new RoutingPortCollection<RoutingOutputPort> { AnyVideoOut, AnyAudioOut };
|
||||||
|
|
||||||
|
PowerIsOnFeedback = new BoolFeedback(() => false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadPresets(string filePath)
|
public void LoadPresets(string filePath)
|
||||||
@@ -348,27 +349,21 @@ namespace PepperDash.Essentials.Devices.Common
|
|||||||
|
|
||||||
public void PowerOn()
|
public void PowerOn()
|
||||||
{
|
{
|
||||||
IrPort.PressRelease(IROutputStandardCommands.IROut_POWER_ON, true);
|
IrPort.Pulse(IROutputStandardCommands.IROut_POWER_ON, 200);
|
||||||
IrPort.PressRelease(IROutputStandardCommands.IROut_POWER_ON, false);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PowerOff()
|
public void PowerOff()
|
||||||
{
|
{
|
||||||
IrPort.PressRelease(IROutputStandardCommands.IROut_POWER_OFF, true);
|
IrPort.Pulse(IROutputStandardCommands.IROut_POWER_OFF, 200);
|
||||||
IrPort.PressRelease(IROutputStandardCommands.IROut_POWER_OFF, false);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PowerToggle()
|
public void PowerToggle()
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
// TODO: Implement power toggle command pulse
|
||||||
|
IrPort.Pulse(IROutputStandardCommands.IROut_POWER, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
public BoolFeedback PowerIsOnFeedback
|
public BoolFeedback PowerIsOnFeedback { get; private set; }
|
||||||
{
|
|
||||||
get { throw new NotImplementedException(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -395,79 +390,98 @@ namespace PepperDash.Essentials.Devices.Common
|
|||||||
trilist.StringInput[joinMap.Name.JoinNumber].StringValue = Name;
|
trilist.StringInput[joinMap.Name.JoinNumber].StringValue = Name;
|
||||||
|
|
||||||
var stbBase = this as ISetTopBoxControls;
|
var stbBase = this as ISetTopBoxControls;
|
||||||
|
if (stbBase != null)
|
||||||
|
{
|
||||||
|
trilist.BooleanInput[joinMap.HasDpad.JoinNumber].BoolValue = stbBase.HasDpad;
|
||||||
|
trilist.BooleanInput[joinMap.HasNumeric.JoinNumber].BoolValue = stbBase.HasNumeric;
|
||||||
|
trilist.BooleanInput[joinMap.HasDvr.JoinNumber].BoolValue = stbBase.HasDvr;
|
||||||
|
trilist.BooleanInput[joinMap.HasPresets.JoinNumber].BoolValue = stbBase.HasPresets;
|
||||||
|
|
||||||
trilist.BooleanInput[joinMap.HasDpad.JoinNumber].BoolValue = stbBase.HasDpad;
|
trilist.SetBoolSigAction(joinMap.DvrList.JoinNumber, stbBase.DvrList);
|
||||||
trilist.BooleanInput[joinMap.HasNumeric.JoinNumber].BoolValue = stbBase.HasNumeric;
|
trilist.SetBoolSigAction(joinMap.Replay.JoinNumber, stbBase.Replay);
|
||||||
trilist.BooleanInput[joinMap.HasDvr.JoinNumber].BoolValue = stbBase.HasDvr;
|
|
||||||
trilist.BooleanInput[joinMap.HasPresets.JoinNumber].BoolValue = stbBase.HasPresets;
|
|
||||||
|
|
||||||
trilist.SetBoolSigAction(joinMap.DvrList.JoinNumber, stbBase.DvrList);
|
trilist.SetStringSigAction(joinMap.LoadPresets.JoinNumber, stbBase.LoadPresets);
|
||||||
trilist.SetBoolSigAction(joinMap.Replay.JoinNumber, stbBase.Replay);
|
}
|
||||||
|
|
||||||
trilist.SetStringSigAction(joinMap.LoadPresets.JoinNumber, stbBase.LoadPresets);
|
|
||||||
|
|
||||||
var stbPower = this as IPower;
|
var stbPower = this as IPower;
|
||||||
|
if (stbPower != null)
|
||||||
trilist.SetSigTrueAction(joinMap.PowerOn.JoinNumber, stbPower.PowerOn);
|
{
|
||||||
trilist.SetSigTrueAction(joinMap.PowerOff.JoinNumber, stbPower.PowerOff);
|
trilist.SetSigTrueAction(joinMap.PowerOn.JoinNumber, stbPower.PowerOn);
|
||||||
trilist.SetSigTrueAction(joinMap.PowerToggle.JoinNumber, stbPower.PowerToggle);
|
trilist.SetSigTrueAction(joinMap.PowerOff.JoinNumber, stbPower.PowerOff);
|
||||||
|
trilist.SetSigTrueAction(joinMap.PowerToggle.JoinNumber, stbPower.PowerToggle);
|
||||||
|
}
|
||||||
|
|
||||||
var stbDPad = this as IDPad;
|
var stbDPad = this as IDPad;
|
||||||
|
|
||||||
trilist.SetBoolSigAction(joinMap.Up.JoinNumber, stbDPad.Up);
|
if (stbDPad != null)
|
||||||
trilist.SetBoolSigAction(joinMap.Down.JoinNumber, stbDPad.Down);
|
{
|
||||||
trilist.SetBoolSigAction(joinMap.Left.JoinNumber, stbDPad.Left);
|
trilist.SetBoolSigAction(joinMap.Up.JoinNumber, stbDPad.Up);
|
||||||
trilist.SetBoolSigAction(joinMap.Right.JoinNumber, stbDPad.Right);
|
trilist.SetBoolSigAction(joinMap.Down.JoinNumber, stbDPad.Down);
|
||||||
trilist.SetBoolSigAction(joinMap.Select.JoinNumber, stbDPad.Select);
|
trilist.SetBoolSigAction(joinMap.Left.JoinNumber, stbDPad.Left);
|
||||||
trilist.SetBoolSigAction(joinMap.Menu.JoinNumber, stbDPad.Menu);
|
trilist.SetBoolSigAction(joinMap.Right.JoinNumber, stbDPad.Right);
|
||||||
trilist.SetBoolSigAction(joinMap.Exit.JoinNumber, stbDPad.Exit);
|
trilist.SetBoolSigAction(joinMap.Select.JoinNumber, stbDPad.Select);
|
||||||
|
trilist.SetBoolSigAction(joinMap.Menu.JoinNumber, stbDPad.Menu);
|
||||||
|
trilist.SetBoolSigAction(joinMap.Exit.JoinNumber, stbDPad.Exit);
|
||||||
|
}
|
||||||
|
|
||||||
var stbChannel = this as IChannel;
|
var stbChannel = this as IChannel;
|
||||||
trilist.SetBoolSigAction(joinMap.ChannelUp.JoinNumber, stbChannel.ChannelUp);
|
if (stbChannel != null)
|
||||||
trilist.SetBoolSigAction(joinMap.ChannelDown.JoinNumber, stbChannel.ChannelDown);
|
{
|
||||||
trilist.SetBoolSigAction(joinMap.LastChannel.JoinNumber, stbChannel.LastChannel);
|
trilist.SetBoolSigAction(joinMap.ChannelUp.JoinNumber, stbChannel.ChannelUp);
|
||||||
trilist.SetBoolSigAction(joinMap.Guide.JoinNumber, stbChannel.Guide);
|
trilist.SetBoolSigAction(joinMap.ChannelDown.JoinNumber, stbChannel.ChannelDown);
|
||||||
trilist.SetBoolSigAction(joinMap.Info.JoinNumber, stbChannel.Info);
|
trilist.SetBoolSigAction(joinMap.LastChannel.JoinNumber, stbChannel.LastChannel);
|
||||||
trilist.SetBoolSigAction(joinMap.Exit.JoinNumber, stbChannel.Exit);
|
trilist.SetBoolSigAction(joinMap.Guide.JoinNumber, stbChannel.Guide);
|
||||||
|
trilist.SetBoolSigAction(joinMap.Info.JoinNumber, stbChannel.Info);
|
||||||
|
trilist.SetBoolSigAction(joinMap.Exit.JoinNumber, stbChannel.Exit);
|
||||||
|
}
|
||||||
|
|
||||||
var stbColor = this as IColor;
|
var stbColor = this as IColor;
|
||||||
trilist.SetBoolSigAction(joinMap.Red.JoinNumber, stbColor.Red);
|
if (stbColor != null)
|
||||||
trilist.SetBoolSigAction(joinMap.Green.JoinNumber, stbColor.Green);
|
{
|
||||||
trilist.SetBoolSigAction(joinMap.Yellow.JoinNumber, stbColor.Yellow);
|
trilist.SetBoolSigAction(joinMap.Red.JoinNumber, stbColor.Red);
|
||||||
trilist.SetBoolSigAction(joinMap.Blue.JoinNumber, stbColor.Blue);
|
trilist.SetBoolSigAction(joinMap.Green.JoinNumber, stbColor.Green);
|
||||||
|
trilist.SetBoolSigAction(joinMap.Yellow.JoinNumber, stbColor.Yellow);
|
||||||
|
trilist.SetBoolSigAction(joinMap.Blue.JoinNumber, stbColor.Blue);
|
||||||
|
}
|
||||||
|
|
||||||
var stbKeypad = this as ISetTopBoxNumericKeypad;
|
var stbKeypad = this as ISetTopBoxNumericKeypad;
|
||||||
|
|
||||||
trilist.StringInput[joinMap.KeypadAccessoryButton1Label.JoinNumber].StringValue = stbKeypad.KeypadAccessoryButton1Label;
|
if (stbKeypad != null)
|
||||||
trilist.StringInput[joinMap.KeypadAccessoryButton2Label.JoinNumber].StringValue = stbKeypad.KeypadAccessoryButton2Label;
|
{
|
||||||
|
trilist.StringInput[joinMap.KeypadAccessoryButton1Label.JoinNumber].StringValue = stbKeypad.KeypadAccessoryButton1Label;
|
||||||
|
trilist.StringInput[joinMap.KeypadAccessoryButton2Label.JoinNumber].StringValue = stbKeypad.KeypadAccessoryButton2Label;
|
||||||
|
|
||||||
trilist.BooleanInput[joinMap.HasKeypadAccessoryButton1.JoinNumber].BoolValue = stbKeypad.HasKeypadAccessoryButton1;
|
trilist.BooleanInput[joinMap.HasKeypadAccessoryButton1.JoinNumber].BoolValue = stbKeypad.HasKeypadAccessoryButton1;
|
||||||
trilist.BooleanInput[joinMap.HasKeypadAccessoryButton2.JoinNumber].BoolValue = stbKeypad.HasKeypadAccessoryButton2;
|
trilist.BooleanInput[joinMap.HasKeypadAccessoryButton2.JoinNumber].BoolValue = stbKeypad.HasKeypadAccessoryButton2;
|
||||||
|
|
||||||
trilist.SetBoolSigAction(joinMap.Digit0.JoinNumber, stbKeypad.Digit0);
|
trilist.SetBoolSigAction(joinMap.Digit0.JoinNumber, stbKeypad.Digit0);
|
||||||
trilist.SetBoolSigAction(joinMap.Digit1.JoinNumber, stbKeypad.Digit1);
|
trilist.SetBoolSigAction(joinMap.Digit1.JoinNumber, stbKeypad.Digit1);
|
||||||
trilist.SetBoolSigAction(joinMap.Digit2.JoinNumber, stbKeypad.Digit2);
|
trilist.SetBoolSigAction(joinMap.Digit2.JoinNumber, stbKeypad.Digit2);
|
||||||
trilist.SetBoolSigAction(joinMap.Digit3.JoinNumber, stbKeypad.Digit3);
|
trilist.SetBoolSigAction(joinMap.Digit3.JoinNumber, stbKeypad.Digit3);
|
||||||
trilist.SetBoolSigAction(joinMap.Digit4.JoinNumber, stbKeypad.Digit4);
|
trilist.SetBoolSigAction(joinMap.Digit4.JoinNumber, stbKeypad.Digit4);
|
||||||
trilist.SetBoolSigAction(joinMap.Digit5.JoinNumber, stbKeypad.Digit5);
|
trilist.SetBoolSigAction(joinMap.Digit5.JoinNumber, stbKeypad.Digit5);
|
||||||
trilist.SetBoolSigAction(joinMap.Digit6.JoinNumber, stbKeypad.Digit6);
|
trilist.SetBoolSigAction(joinMap.Digit6.JoinNumber, stbKeypad.Digit6);
|
||||||
trilist.SetBoolSigAction(joinMap.Digit7.JoinNumber, stbKeypad.Digit7);
|
trilist.SetBoolSigAction(joinMap.Digit7.JoinNumber, stbKeypad.Digit7);
|
||||||
trilist.SetBoolSigAction(joinMap.Digit8.JoinNumber, stbKeypad.Digit8);
|
trilist.SetBoolSigAction(joinMap.Digit8.JoinNumber, stbKeypad.Digit8);
|
||||||
trilist.SetBoolSigAction(joinMap.Digit9.JoinNumber, stbKeypad.Digit9);
|
trilist.SetBoolSigAction(joinMap.Digit9.JoinNumber, stbKeypad.Digit9);
|
||||||
trilist.SetBoolSigAction(joinMap.KeypadAccessoryButton1Press.JoinNumber, stbKeypad.KeypadAccessoryButton1);
|
trilist.SetBoolSigAction(joinMap.KeypadAccessoryButton1Press.JoinNumber, stbKeypad.KeypadAccessoryButton1);
|
||||||
trilist.SetBoolSigAction(joinMap.KeypadAccessoryButton2Press.JoinNumber, stbKeypad.KeypadAccessoryButton1);
|
trilist.SetBoolSigAction(joinMap.KeypadAccessoryButton2Press.JoinNumber, stbKeypad.KeypadAccessoryButton1);
|
||||||
trilist.SetBoolSigAction(joinMap.Dash.JoinNumber, stbKeypad.Dash);
|
trilist.SetBoolSigAction(joinMap.Dash.JoinNumber, stbKeypad.Dash);
|
||||||
trilist.SetBoolSigAction(joinMap.KeypadEnter.JoinNumber, stbKeypad.KeypadEnter);
|
trilist.SetBoolSigAction(joinMap.KeypadEnter.JoinNumber, stbKeypad.KeypadEnter);
|
||||||
|
}
|
||||||
|
|
||||||
var stbTransport = this as ITransport;
|
var stbTransport = this as ITransport;
|
||||||
trilist.SetBoolSigAction(joinMap.Play.JoinNumber, stbTransport.Play);
|
if (stbTransport != null)
|
||||||
trilist.SetBoolSigAction(joinMap.Pause.JoinNumber, stbTransport.Pause);
|
{
|
||||||
trilist.SetBoolSigAction(joinMap.Rewind.JoinNumber, stbTransport.Rewind);
|
trilist.SetBoolSigAction(joinMap.Play.JoinNumber, stbTransport.Play);
|
||||||
trilist.SetBoolSigAction(joinMap.FFwd.JoinNumber, stbTransport.FFwd);
|
trilist.SetBoolSigAction(joinMap.Pause.JoinNumber, stbTransport.Pause);
|
||||||
trilist.SetBoolSigAction(joinMap.ChapMinus.JoinNumber, stbTransport.ChapMinus);
|
trilist.SetBoolSigAction(joinMap.Rewind.JoinNumber, stbTransport.Rewind);
|
||||||
trilist.SetBoolSigAction(joinMap.ChapPlus.JoinNumber, stbTransport.ChapPlus);
|
trilist.SetBoolSigAction(joinMap.FFwd.JoinNumber, stbTransport.FFwd);
|
||||||
trilist.SetBoolSigAction(joinMap.Stop.JoinNumber, stbTransport.Stop);
|
trilist.SetBoolSigAction(joinMap.ChapMinus.JoinNumber, stbTransport.ChapMinus);
|
||||||
trilist.SetBoolSigAction(joinMap.Record.JoinNumber, stbTransport.Record);
|
trilist.SetBoolSigAction(joinMap.ChapPlus.JoinNumber, stbTransport.ChapPlus);
|
||||||
|
trilist.SetBoolSigAction(joinMap.Stop.JoinNumber, stbTransport.Stop);
|
||||||
|
trilist.SetBoolSigAction(joinMap.Record.JoinNumber, stbTransport.Record);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1970,6 +1970,14 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets the selected source of the available external sources on teh Touch10 UI
|
||||||
|
/// </summary>
|
||||||
|
public void SetSelectedSource(string key)
|
||||||
|
{
|
||||||
|
SendText(string.Format("xCommand UserInterface Presentation ExternalSource Select SourceIdentifier: {0}", key));
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Action that will run when the External Source is selected.
|
/// Action that will run when the External Source is selected.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user