mirror of
https://github.com/jwetzell/q-sys-plugin-novastar.git
synced 2026-07-26 08:38:40 +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