diff --git a/QControlKit/Cue/QTextCue.cs b/QControlKit/Cue/QTextCue.cs new file mode 100644 index 0000000..d4be898 --- /dev/null +++ b/QControlKit/Cue/QTextCue.cs @@ -0,0 +1,69 @@ +using System.Collections.Generic; +using QControlKit.Constants; + +namespace QControlKit.Cue +{ + public class QTextCue : QCue + { + + public int fixedWidth + { + get + { + return (int)propertyForKey(QOSCKey.FixedWidth); + } + set + { + if(fixedWidth > 0) + { + setProperty(value, QOSCKey.FixedWidth); + } + } + } + public string text + { + get + { + return propertyForKey(QOSCKey.Text).ToString(); + } + + set + { + setProperty(value, QOSCKey.Text); + } + } + + public string liveText + { + get + { + return propertyForKey(QOSCKey.LiveText).ToString(); + } + + set + { + setProperty(value, QOSCKey.LiveText); + } + } + + //TODO: + /* https://qlab.app/docs/v4/scripting/osc-dictionary-v4/#text-cue-methods + * /cue/{cue_number}/text/format {json_string} + * /cue/{cue_number}/text/format/alignment {alignment} + * /cue/{cue_number}/text/format/fontFamily + * /cue/{cue_number}/text/format/fontStyle + * /cue/{cue_number}/text/format/fontFamilyAndStyle {family} {style} + * /cue/{cue_number}/text/format/fontName {name} + * /cue/{cue_number}/text/format/fontSize {number} + * /cue/{cue_number}/text/format/lineSpacing {number} + * /cue/{cue_number}/text/format/color {red} {green} {blue} {alpha} + * /cue/{cue_number}/text/format/backgroundColor {red} {green} {blue} {alpha} + * /cue/{cue_number}/text/format/strikethroughColor {red} {green} {blue} {alpha} + * /cue/{cue_number}/text/format/underlineColor {red} {green} {blue} {alpha} + * /cue/{cue_number}/text/format/strikethroughStyle {style} + * /cue/{cue_number}/text/format/underlineStyle {style} + * /cue/{cue_number}/text/outputSize + * /cue/{cue_number}/liveText/outputSize + */ + } +} diff --git a/QControlKit/QCue.cs b/QControlKit/QCue.cs index 74f0b0a..05b48e5 100644 --- a/QControlKit/QCue.cs +++ b/QControlKit/QCue.cs @@ -571,6 +571,45 @@ namespace QControlKit } } + public QTriggerAction secondTriggerAction + { + get + { + return (QTriggerAction)propertyForKey(QOSCKey.SecondTriggerAction); + } + set + { + setProperty(value, QOSCKey.SecondTriggerAction); + } + } + + public bool secondTriggerOnRelease + { + get + { + var val = (int)propertyForKey(QOSCKey.SecondTriggerOnRelease); + if (val == 0) + { + return true; + } + else + { + return false; + } + } + set + { + if (value) + { + setProperty(0, QOSCKey.SecondTriggerOnRelease); + } + else + { + setProperty(1, QOSCKey.SecondTriggerOnRelease); + } + } + } + //TODO add quaternion property and setter public Size surfaceSize() { throw new NotImplementedException(); } public Size cueSize() { throw new NotImplementedException(); } @@ -936,6 +975,20 @@ namespace QControlKit public void togglePause() { workspace.togglePauseCue(this); } public void preview() { workspace.previewCue(this); } public void panic() { workspace.panicCue(this); } + public void playheadNext() + { + if (this.type == QCueType.CueList) + { + workspace.sendMessageForCue(this, "playhead/next"); + } + } + public void playheadPrevious() + { + if (this.type == QCueType.CueList) + { + workspace.sendMessageForCue(this, "playhead/previous"); + } + } #endregion diff --git a/QControlKit/QWorkspace.cs b/QControlKit/QWorkspace.cs index 85d607a..08513dc 100644 --- a/QControlKit/QWorkspace.cs +++ b/QControlKit/QWorkspace.cs @@ -252,6 +252,7 @@ namespace QControlKit public void fetchCueLists() { client.sendMessage($"{workspacePrefix}/cueLists"); } public void fetchPlaybackPositionForCue(QCue cue) { client.sendMessage(addressForCue(cue, QOSCKey.PlaybackPositionId)); } //EventHandler for this? can I use the CueListPlaybackPosition one? public void go() { client.sendMessage($"{workspacePrefix}/go"); } + public void go(string cueNumber) { client.sendMessage($"{workspacePrefix}/go/{cueNumber}"); } public void save() { client.sendMessage($"{workspacePrefix}/save"); } public void undo() { client.sendMessage($"{workspacePrefix}/undo"); } public void redo() { client.sendMessage($"{workspacePrefix}/redo"); } @@ -358,6 +359,11 @@ namespace QControlKit client.sendMessage(address, args); } + public void sendMessageForCue(QCue cue, string action) + { + client.sendMessage(addressForCue(cue, action)); + } + private string addressForCue(QCue cue, string action) { return $"{workspacePrefix}/cue_id/{cue.propertyForKey(QOSCKey.UID)}/{action}"; diff --git a/QControlKitXamDemo/QControlKitXamDemo.Android/QControlKitXamDemo.Android.csproj b/QControlKitXamDemo/QControlKitXamDemo.Android/QControlKitXamDemo.Android.csproj index 466bc0d..bcdd620 100644 --- a/QControlKitXamDemo/QControlKitXamDemo.Android/QControlKitXamDemo.Android.csproj +++ b/QControlKitXamDemo/QControlKitXamDemo.Android/QControlKitXamDemo.Android.csproj @@ -57,8 +57,8 @@ 0.2.0.64 - - + + diff --git a/QControlKitXamDemo/QControlKitXamDemo.iOS/QControlKitXamDemo.iOS.csproj b/QControlKitXamDemo/QControlKitXamDemo.iOS/QControlKitXamDemo.iOS.csproj index 33f7306..3fe068e 100644 --- a/QControlKitXamDemo/QControlKitXamDemo.iOS/QControlKitXamDemo.iOS.csproj +++ b/QControlKitXamDemo/QControlKitXamDemo.iOS/QControlKitXamDemo.iOS.csproj @@ -131,8 +131,8 @@ 0.2.0.64 - - + + diff --git a/QControlKitXamDemo/QControlKitXamDemo/QControlKitXamDemo.csproj b/QControlKitXamDemo/QControlKitXamDemo/QControlKitXamDemo.csproj index 4eef9fa..ffec7a3 100644 --- a/QControlKitXamDemo/QControlKitXamDemo/QControlKitXamDemo.csproj +++ b/QControlKitXamDemo/QControlKitXamDemo/QControlKitXamDemo.csproj @@ -12,8 +12,8 @@ - - + +