mirror of
https://github.com/jwetzell/q-sys-plugin-novastar.git
synced 2026-09-10 06:29:33 +00:00
Initial Commit
This commit is contained in:
@@ -0,0 +1,32 @@
|
|||||||
|
name: Deploy Package
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
-master
|
||||||
|
tags:
|
||||||
|
- '*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: windows-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Pull Source Files
|
||||||
|
uses: actions/checkout@v1
|
||||||
|
|
||||||
|
- name: Setup Nuget.exe
|
||||||
|
uses: warrenbuckley/Setup-Nuget@v1
|
||||||
|
|
||||||
|
- name: Update version in .qplug file
|
||||||
|
run: |
|
||||||
|
$TAG = $Env:GITHUB_REF.Replace("refs/tags/","")
|
||||||
|
# Will get exactly the first instance of a .qplug file
|
||||||
|
$QPLUG = (Get-ChildItem -Path "content" -Include *.qplug -Force -Recurse -File | Select-Object -First 1).Name
|
||||||
|
((Get-Content -path content\$QPLUG -Raw) -replace '0.0.0.0-master',$TAG) | Set-Content content\$QPLUG
|
||||||
|
|
||||||
|
|
||||||
|
- name: Pack with nuget.exe
|
||||||
|
run: |
|
||||||
|
nuget pack -Version $Env:GITHUB_REF.Replace("refs/tags/","")
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 9.1 KiB |
@@ -0,0 +1,277 @@
|
|||||||
|
-- Plugin for Lightware Devices by Solo Works London
|
||||||
|
-- Built in Lua
|
||||||
|
-- For source, contact https://soloworks.co.uk
|
||||||
|
|
||||||
|
PluginInfo = {
|
||||||
|
Name = "NovaStar~VX4S/VX6S/ProHD/ProHDJr/MCTRL4K", -- The tilde here indicates folder structure in the Shematic Elements pane
|
||||||
|
Version = "0.0.0-master",
|
||||||
|
Id = "novastar.plugin.0.0.0-master", -- show this is just a unique id. Show some commented out 'fun' unique ids
|
||||||
|
Description = "Plugin for controlling NovaStar video wall controllers",
|
||||||
|
ShowDebug = true,
|
||||||
|
Author = "Joel Wetzell"
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Once you've drawn your plugin in Designer, you can determine what colors you use a lot. Save yourself some time by putting them in a table, and then simply calling them later.
|
||||||
|
local Colors = {
|
||||||
|
White = {255, 255, 255},
|
||||||
|
Black = {0, 0, 0},
|
||||||
|
Red = {255, 0, 0},
|
||||||
|
Green = {0, 255, 0},
|
||||||
|
Blue = {0, 0, 255}
|
||||||
|
}
|
||||||
|
|
||||||
|
-- We can let users determine some of the plugin properties by exposing them here
|
||||||
|
-- While this function can be very useful, it is completely optional and not always needed.
|
||||||
|
-- If no Properties are set here, only the position and fill properties of your plugin will show in the Properties pane
|
||||||
|
function GetProperties()
|
||||||
|
props = {
|
||||||
|
{
|
||||||
|
Name = "host",
|
||||||
|
Type = "string",
|
||||||
|
Value = "127.0.0.1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name = "port",
|
||||||
|
Type = "integer",
|
||||||
|
Min = 1024,
|
||||||
|
Max = 65535,
|
||||||
|
Value = 9990
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return props
|
||||||
|
end
|
||||||
|
|
||||||
|
-- The below function is optional (like GetProperties() is), but it can allow further customization of what users can and can't do with your plugin.
|
||||||
|
-- In this example, when Model 1 is selected in the properties pane, the ability to modify some of the properties will be hidden, only allowing customization with Model 2
|
||||||
|
-- Another application of this is if you have different input/output types for different models, and want those properties to be dynamic in the Properties pane
|
||||||
|
function RectifyProperties(props)
|
||||||
|
return props
|
||||||
|
end
|
||||||
|
|
||||||
|
-- The below function is where you will populate the controls for your plugin.
|
||||||
|
-- If you've written some of the Runtime code already, simply use the control names you populated in Text Controller/Control Script, and use their Properties to inform the values here
|
||||||
|
-- ControlType can be Button, Knob, Indicator or Text
|
||||||
|
-- ButtonType ( ControlType == Button ) can be Momentary, Toggle or Trigger
|
||||||
|
-- IndicatorType ( ControlType == Indicator ) can be Led, Meter, Text or Status
|
||||||
|
-- ControlUnit ( ControlType == Knob ) can be Hz, Float, Integer, Pan, Percent, Position or Seconds
|
||||||
|
function GetControls(props)
|
||||||
|
ctls = {
|
||||||
|
-- ControlType == Indicator
|
||||||
|
{
|
||||||
|
Name = "IndicatorLed",
|
||||||
|
ControlType = "Indicator",
|
||||||
|
IndicatorType = "Led",
|
||||||
|
PinStyle = "Output",
|
||||||
|
UserPin = true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name = "IndicatorMeter",
|
||||||
|
ControlType = "Indicator",
|
||||||
|
IndicatorType = "Meter",
|
||||||
|
PinStyle = "Output",
|
||||||
|
UserPin = true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name = "IndicatorText",
|
||||||
|
ControlType = "Indicator",
|
||||||
|
IndicatorType = "Text",
|
||||||
|
PinStyle = "Output",
|
||||||
|
UserPin = true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name = "IndicatorStatus",
|
||||||
|
ControlType = "Indicator",
|
||||||
|
IndicatorType = "Status",
|
||||||
|
PinStyle = "Output",
|
||||||
|
UserPin = true
|
||||||
|
},
|
||||||
|
-- ControlType == Button
|
||||||
|
{
|
||||||
|
Name = "ButtonMomentary",
|
||||||
|
ControlType = "Button",
|
||||||
|
ButtonType = "Toggle",
|
||||||
|
PinStyle = "Input",
|
||||||
|
Count = 1,
|
||||||
|
UserPin = true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name = "ButtonToggle",
|
||||||
|
ControlType = "Button",
|
||||||
|
ButtonType = "Toggle",
|
||||||
|
PinStyle = "Input",
|
||||||
|
Count = 1,
|
||||||
|
UserPin = true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name = "ButtonTrigger",
|
||||||
|
ControlType = "Button",
|
||||||
|
ButtonType = "Trigger",
|
||||||
|
PinStyle = "Input",
|
||||||
|
Count = 1,
|
||||||
|
UserPin = true
|
||||||
|
},
|
||||||
|
-- ControlType == Knob
|
||||||
|
{
|
||||||
|
Name = "KnobHz",
|
||||||
|
ControlType = "Knob",
|
||||||
|
ControlUnit = "Hz",
|
||||||
|
PinStyle = "Output",
|
||||||
|
Count = 1,
|
||||||
|
UserPin = true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name = "KnobFloat",
|
||||||
|
ControlType = "Knob",
|
||||||
|
ControlUnit = "Float",
|
||||||
|
PinStyle = "Output",
|
||||||
|
Count = 1,
|
||||||
|
UserPin = true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name = "KnobInteger",
|
||||||
|
ControlType = "Knob",
|
||||||
|
ControlUnit = "Integer",
|
||||||
|
PinStyle = "Output",
|
||||||
|
Count = 1,
|
||||||
|
UserPin = true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name = "KnobPan",
|
||||||
|
ControlType = "Knob",
|
||||||
|
ControlUnit = "Pan",
|
||||||
|
PinStyle = "Output",
|
||||||
|
Count = 1,
|
||||||
|
UserPin = true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name = "KnobPercent",
|
||||||
|
ControlType = "Knob",
|
||||||
|
ControlUnit = "Percent",
|
||||||
|
PinStyle = "Output",
|
||||||
|
Count = 1,
|
||||||
|
UserPin = true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name = "KnobPosition",
|
||||||
|
ControlType = "Knob",
|
||||||
|
ControlUnit = "Position",
|
||||||
|
PinStyle = "Output",
|
||||||
|
Count = 1,
|
||||||
|
UserPin = true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name = "KnobSeconds",
|
||||||
|
ControlType = "Knob",
|
||||||
|
ControlUnit = "Seconds",
|
||||||
|
PinStyle = "Output",
|
||||||
|
Count = 1,
|
||||||
|
UserPin = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ctls
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Variable holding Page Names for ease
|
||||||
|
local pagenames = {"System"}
|
||||||
|
|
||||||
|
-- This function allows you to populate pages in your plugin.
|
||||||
|
function GetPages(props)
|
||||||
|
pages = {}
|
||||||
|
table.insert(pages, {name = pagenames[1]})
|
||||||
|
return pages
|
||||||
|
end
|
||||||
|
|
||||||
|
-- This function allows you to layout pages in your plugin.
|
||||||
|
function GetControlLayout(props)
|
||||||
|
-- layout holds representaiton of Controls
|
||||||
|
local layout = {}
|
||||||
|
-- graphics holds aesthetic & design items
|
||||||
|
local graphics = {}
|
||||||
|
-- ctl_str is a helper string to get around system not indexing single value as [1]
|
||||||
|
--local ctl_str = tostring(props["SomeValue"].Value == 1 and "" or " " .. PageIndex)
|
||||||
|
-- x,y allows an easy method of knowing where you are relative to the section being designed
|
||||||
|
local x, y = 0, 0
|
||||||
|
|
||||||
|
-- Graphics Section
|
||||||
|
table.insert(
|
||||||
|
graphics,
|
||||||
|
{
|
||||||
|
Type = "GroupBox", -- This is the overall groupbox that will give the plugin a more 'contained' look
|
||||||
|
Text = "Design Elements",
|
||||||
|
HTextAlign = "Left",
|
||||||
|
Fill = Colors.White,
|
||||||
|
CornerRadius = 8,
|
||||||
|
StrokeColor = Colors.Black,
|
||||||
|
StrokeWidth = 1,
|
||||||
|
Position = {x, y},
|
||||||
|
Size = {220, 140} -- The width of the main GroupBox is dependent on how many channels the user specified. More channels means a wider group box
|
||||||
|
}
|
||||||
|
)
|
||||||
|
table.insert(
|
||||||
|
graphics,
|
||||||
|
{
|
||||||
|
Type = "Text",
|
||||||
|
Text = "My Text Field",
|
||||||
|
Font = "Roboto",
|
||||||
|
FontSize = 12,
|
||||||
|
FontStyle = "Bold",
|
||||||
|
HTextAlign = "Left",
|
||||||
|
Color = Colors.Black,
|
||||||
|
Position = {x + 5, y + 20},
|
||||||
|
Size = {100, 20}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
-- Buttons Section
|
||||||
|
y = y + 150
|
||||||
|
table.insert(
|
||||||
|
graphics,
|
||||||
|
{
|
||||||
|
Type = "GroupBox", -- This is the overall groupbox that will give the plugin a more 'contained' look
|
||||||
|
Text = "Button Elements",
|
||||||
|
HTextAlign = "Left",
|
||||||
|
Fill = Colors.White,
|
||||||
|
CornerRadius = 8,
|
||||||
|
StrokeColor = Colors.Black,
|
||||||
|
StrokeWidth = 1,
|
||||||
|
Position = {x, y},
|
||||||
|
Size = {220, 140} -- The width of the main GroupBox is dependent on how many channels the user specified. More channels means a wider group box
|
||||||
|
}
|
||||||
|
)
|
||||||
|
-- Indicator Section
|
||||||
|
y = y + 150
|
||||||
|
table.insert(
|
||||||
|
graphics,
|
||||||
|
{
|
||||||
|
Type = "GroupBox", -- This is the overall groupbox that will give the plugin a more 'contained' look
|
||||||
|
Text = "Indicator Elements",
|
||||||
|
HTextAlign = "Left",
|
||||||
|
Fill = Colors.White,
|
||||||
|
CornerRadius = 8,
|
||||||
|
StrokeColor = Colors.Black,
|
||||||
|
StrokeWidth = 1,
|
||||||
|
Position = {x, y},
|
||||||
|
Size = {220, 140} -- The width of the main GroupBox is dependent on how many channels the user specified. More channels means a wider group box
|
||||||
|
}
|
||||||
|
)
|
||||||
|
-- Knob Section
|
||||||
|
y = y + 150
|
||||||
|
table.insert(
|
||||||
|
graphics,
|
||||||
|
{
|
||||||
|
Type = "GroupBox", -- This is the overall groupbox that will give the plugin a more 'contained' look
|
||||||
|
Text = "Knob Elements",
|
||||||
|
HTextAlign = "Left",
|
||||||
|
Fill = Colors.White,
|
||||||
|
CornerRadius = 8,
|
||||||
|
StrokeColor = Colors.Black,
|
||||||
|
StrokeWidth = 1,
|
||||||
|
Position = {x, y},
|
||||||
|
Size = {220, 140} -- The width of the main GroupBox is dependent on how many channels the user specified. More channels means a wider group box
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return layout, graphics
|
||||||
|
end
|
||||||
|
|
||||||
|
if Controls then
|
||||||
|
end
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- Initially generated manually using `nuget spec`-->
|
||||||
|
<package >
|
||||||
|
<metadata>
|
||||||
|
<id>NovaStar</id>
|
||||||
|
<version>0.0.0.0-master</version>
|
||||||
|
<title>NovaStar Controller</title>
|
||||||
|
<authors>Joel Wetzell</authors>
|
||||||
|
<owners>Joel Wetzell</owners>
|
||||||
|
<license type="expression">GPL-3.0-or-later</license>
|
||||||
|
<projectUrl>https://github.com/jwetzell/q-sys-plugin-novastar</projectUrl>
|
||||||
|
<iconUrl>http://content/images/NovaStar-logo.png</iconUrl>
|
||||||
|
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||||
|
<description>NovaStar Controller Plugin</description>
|
||||||
|
<releaseNotes>AutoGenerateFromGitCommitMessages</releaseNotes>
|
||||||
|
<copyright>Copyright 2021</copyright>
|
||||||
|
<tags>NovaStar VX4S VX6S</tags>
|
||||||
|
<summary>A plugin for control of NovaStar Video Wall controllers</summary>
|
||||||
|
</metadata>
|
||||||
|
<files>
|
||||||
|
<file src="content\**" target="content" />
|
||||||
|
</files>
|
||||||
|
</package>
|
||||||
Reference in New Issue
Block a user