Facility Control

 View Only
Expand all | Collapse all

VDCP custom panel - Dashboard

  • 1.  VDCP custom panel - Dashboard

    Posted 11-09-2023 09:52

    Hello,

    I need to create a custom panel to control a server through VDCP protocol, however I didn't have success on it so far. 

    The customer has an old Ross server known as "SMS - Softmetal server" which only receives commands from VDCP protocol. It worked fine with his Vision swtcher, but since he recently bought a new Carbonite Ultra and TD panel, this automation will not longer work. Due to the TD panel sending commands only  via  the AMP protocol. So, I believe that I can overcome this issue developing an custom Dashboard Panel. 

    As I don't have this server in my lab, I'd like to develop a panel and test it using my Mira Xpress server, in this way I can simulate the functionalities. I've tried to use the panel attached, but it does not work so far. 

    If anyone could help me that would be amazing. 

    Thanks, 



    ------------------------------
    João victhor Mariano
    ------------------------------


  • 2.  RE: VDCP custom panel - Dashboard

    Posted 11-09-2023 10:38

    Hi João,

    Thanks for reaching out! Unfortunately, you cannot upload grid files to the DashBoard Community forum, I would recommend renaming the file and changing its extension to ".txt" or sharing the link of your custom panel hosted on Google Drive or One Drive. I look forward to finding a solution for you.

    Cheers



    ------------------------------
    Altaz Daruwala
    Ross Video
    ------------------------------



  • 3.  RE: VDCP custom panel - Dashboard

    Posted 11-09-2023 11:05

    Hi,

    I'm sorry for that. You'll find the script below. Thank you for your attention.

    <abs contexttype="opengear" style="bg-u:Images/Red.jpg;" virtualheight="1077" virtualwidth="1918">
       <timer id="ClipName1" pattern="HH:mm:ss" rate="1000">
          <timertask tasktype="ogscript">function callbackFunction1(success, cmd, result, exception)
    {
       if (success = 'true') {
          ogscript.rename('clipName1',result); //Update Channel 1 Clip Name in playout area
          params.setValue('Blackstorm.loadedClipName',0,result); //Store Channel 1 Clipname
          params.setValue('Blackstorm.Channel1State', 0, 0); //Set Channel 1 State to none
       }
    }

    var host = params.getValue('Blackstorm.IPAddress', 0); //Get IP Address
    var port = params.getValue('Blackstorm.PortNumber', 0); //Get Port Number
    var numOfChs = params.getValue('Blackstorm.NumOfChannels', 0); // Get the number of Channels
    var state = params.getValue('Blackstorm.Channel1State', 0); //Get the the Channel 1 state flag

    if (numOfChs &gt; 0) {
       if (state == 0) {
          vdcp.activeClip(host,port, 1, callbackFunction1);
          params.setValue('Blackstorm.Channel1State', 0, 1); //Set Channel 1 State to request
          ogscript.debug('Channel 1Requesting');
       }
    }</timertask>
       </timer>
       <timer id="ClipName4" pattern="HH:mm:ss" rate="1000">
          <timertask tasktype="ogscript">function callbackFunction4(success, cmd, result, exception)
    {
       if (success = 'true') {
          ogscript.rename('clipName4',result); //Update Channel 4 Clip Name in playout area
          params.setValue('Blackstorm.loadedClipName',3,result); //Store Channel 4 Clipname
          params.setValue('Blackstorm.Channel4State', 0, 0); //Set Channel 4 State to none
       }
    }

    var host = params.getValue('Blackstorm.IPAddress', 0); //Get IP Address
    var port = params.getValue('Blackstorm.PortNumber', 3); //Get Port Number
    var numOfChs = params.getValue('Blackstorm.NumOfChannels', 0); // Get the number of Channels
    var state = params.getValue('Blackstorm.Channel4State', 0); //Get the the Channel 4 state flag

    if (numOfChs &gt; 3) {
       if (state == 0) {
          vdcp.activeClip(host,port, 4, callbackFunction4);
          params.setValue('Blackstorm.Channel4State', 0, 1); //Set Channel 4 State to request
          ogscript.debug('Channel 4 Requesting');
       }
    }</timertask>
       </timer>
       <timer id="ClipName3" pattern="HH:mm:ss" rate="1000">
          <timertask tasktype="ogscript">function callbackFunction3(success, cmd, result, exception)
    {
       if (success = 'true') {
          ogscript.rename('clipName3',result); //Update Channel 3 Clip Name in playout area
          params.setValue('Blackstorm.loadedClipName',2,result); //Store Channel 3 Clipname
          params.setValue('Blackstorm.Channel3State', 0, 0); //Set Channel 3 State to none
       }
    }

    var host = params.getValue('Blackstorm.IPAddress', 0); //Get IP Address
    var port = params.getValue('Blackstorm.PortNumber', 2); //Get Port Number
    var numOfChs = params.getValue('Blackstorm.NumOfChannels', 0); // Get the number of Channels
    var state = params.getValue('Blackstorm.Channel3State', 0); //Get the the Channel 3 state flag

    if (numOfChs &gt; 2) {
       if (state == 0) {
          vdcp.activeClip(host,port, 3, callbackFunction3);
          params.setValue('Blackstorm.Channel3State', 0, 1); //Set Channel 3 State to request
          ogscript.debug('Channel 3 Requesting');
       }
    }</timertask>
       </timer>
       <timer id="ClipName2" pattern="HH:mm:ss" rate="1000">
          <timertask tasktype="ogscript">function callbackFunction2(success, cmd, result, exception)
    {
       if (success = 'true') {
          ogscript.rename('clipName2',result); //Update Channel 2 Clip Name in playout area
          params.setValue('Blackstorm.loadedClipName',1,result); //Store Channel 2 Clipname
          params.setValue('Blackstorm.Channel2State', 0, 0); //Set Channel 2 State to none
       }
    }

    var host = params.getValue('Blackstorm.IPAddress', 0); //Get IP Address
    var port = params.getValue('Blackstorm.PortNumber', 1); //Get Port Number
    var numOfChs = params.getValue('Blackstorm.NumOfChannels', 0); // Get the number of Channels
    var state = params.getValue('Blackstorm.Channel2State', 0); //Get the the Channel 2 state flag

    if (numOfChs &gt; 1) {
       if (state == 0) {
          vdcp.activeClip(host,port, 2, callbackFunction2);
          params.setValue('Blackstorm.Channel2State', 0, 1); //Set Channel 2 State to request
          ogscript.debug('Channel 2 Requesting');
       }
    }</timertask>
       </timer>
       
       <meta>
          <lookup code="true" id="GlobalScripts" multiline="true" name="Global Scripts">
             <entry key="LoadClip">function loadClip(channel){
       var ip = params.getValue('Blackstorm.IPAddress', 0); //Get IP Address
       var port = params.getValue('Blackstorm.PortNumber', (channel - 1)); //Get Port Number
       var fileExt = params.getValue('Flag.Extention', 0); //Get File extension flag
       var extension = params.getValue('Blackstorm.extension', 0);
       
       //Get the current selected line item in the displayed cliplist
       var clip_index = params.getValue('Blackstorm.ClipList',0); 
       //Get the String name of the selected clip
       var name = params.getIdentifiedConstraint('ClipListChoices').getStringOf(clip_index);
       
       if (fileExt) {
          name = name + extension;
       }
       //Update the currently selected clipname
       params.setValue('Blackstorm.loadedClipName', (channel - 1), name);

       ogscript.debug('Load Clip: '+name+' in to Channel: '+channel);
       //Cue the selected clip into the selected Channel
       function callbackFunction(success, cmd, result, exception)
       {
          if (success){
             ogscript.rename('status'+channel, 'Clip Loaded');
          }
       }
       vdcp.cueClip(ip, port, channel, name, callbackFunction);
    }</entry>
             <entry key="CueClip">function cueClip(channel){
       var ip = params.getValue('Blackstorm.IPAddress', 0);
       var port = params.getValue('Blackstorm.PortNumber', (channel - 1));
       var fileExt = params.getValue('Flag.Extention', 0); 
       var name = params.getValue('Blackstorm.loadedClipName', (channel - 1));
       //Recue the current loaded clip.
       function callbackFunction(success, cmd, result, exception)
       {
          if (success){
             ogscript.rename('status'+channel, 'Clip Cued');
          }
       }
       vdcp.cueClip(ip, port, channel, name, callbackFunction);
       ogscript.debug('Cue Clip: '+name+' in to Channel: '+channel);
    }</entry>
             <entry key="RewindClip">function revClip(channel){
       var ip = params.getValue('Blackstorm.IPAddress', 0);
       var port = params.getValue('Blackstorm.PortNumber', (channel - 1));
       //Rewind the current loaded clip.
       function callbackFunction(success, cmd, result, exception)
       {
          if (success){
             ogscript.rename('status'+channel, 'Clip Rewinding');
          }
       }
       vdcp.rewind(ip, port, channel, callbackFunction);
       ogscript.debug('Rewind Channel: '+channel);
    }</entry>
             <entry key="StopClip">function stopClip(channel){
       var ip = params.getValue('Blackstorm.IPAddress', 0);
       var port = params.getValue('Blackstorm.PortNumber', (channel - 1));
       //Stop the current loaded clip.
       function callbackFunction(success, cmd, result, exception)
       {
          if (success){
             ogscript.rename('status'+channel, 'Clip Ejected');
          }
       }
       vdcp.stop(ip, port, channel, callbackFunction);
       ogscript.debug('Stop Channel: '+channel);
    }</entry>
             <entry key="PlayClip">function playClip(channel){
       var ip = params.getValue('Blackstorm.IPAddress', 0);
       var port = params.getValue('Blackstorm.PortNumber', (channel - 1));
       //Play the current loaded clip.
       function callbackFunction(success, cmd, result, exception)
       {
          if (success){
             ogscript.rename('status'+channel, 'Clip Playing');
          }
       }
       vdcp.play(ip, port, channel, callbackFunction);
       ogscript.debug('Play Channel: '+channel);
    }</entry>
             <entry key="PauseClip">function pauseClip(channel){
       var ip = params.getValue('Blackstorm.IPAddress', 0);
       var port = params.getValue('Blackstorm.PortNumber', (channel - 1));
       //Pause the current loaded clip.
       function callbackFunction(success, cmd, result, exception)
       {
          if (success){
             ogscript.rename('status'+channel, 'Clip Paused');
          }
       }
       vdcp.pause(ip, port, channel, callbackFunction);
       ogscript.debug('Pause Channel: '+channel);
    }</entry>
             <entry key="FastForwardClip">function ffClip(channel){
       var ip = params.getValue('Blackstorm.IPAddress', 0);
       var port = params.getValue('Blackstorm.PortNumber', (channel - 1));
       //Fast Forward the current loaded clip.
       function callbackFunction(success, cmd, result, exception)
       {
          if (success){
             ogscript.rename('status'+channel, 'Clip Fast Forwarding');
          }
       }
       vdcp.fastForward(ip, port, channel, callbackFunction);
       ogscript.debug('Fast Forward Channel: '+channel);
    }</entry>
          </lookup>
          <lookup id="hosts">
             <entry key="BlackStorm.host">172.16.7.178</entry>
             <entry key="BlackStorm.port">50103</entry>
             <entry key="XPNBVS.host">10.0.200.91</entry>
             <entry key="XPNBVS.port">50103</entry>
          </lookup>
          <constraint constrainttype="INT_CHOICE" id="ClipListChoices" precision="0">
             <constraint key="0">Choices Not Loaded</constraint>
          </constraint>
          <params>
             <param access="1" maxlength="0" name="IP Address" oid="Blackstorm.IPAddress" type="STRING" value="10.65.1.174" widget="0"/>
             <param access="1" constrainttype="INT_CHOICE" name="Clip List" oid="Blackstorm.ClipList" precision="0" strvalue="List Not Loaded" type="INT32" value="690" widget="7">
                <constraint key="0">List Not Loaded</constraint>
             </param>
             <param access="1" maxlength="0" name="Port Number" oid="Blackstorm.PortNumber" precision="0" type="STRING_ARRAY" widget="0">
                <value>50103</value>
                <value>50104</value>
                <value>50105</value>
                <value>50106</value>
             </param>
             <param access="1" maxlength="0" name="Clip Names" oid="Blackstorm.loadedClipName" precision="0" type="STRING_ARRAY" widget="0">
                <value>WJR's Timeout</value>
                <value>WJr's Post Replay</value>
                <value>World Jrs Empty Net Post</value>
                <value>World Jrs Empty Net Replay</value>
             </param>
             <param access="1" constrainttype="INT_CHOICE" name="File Extention" oid="Flag.Extention" precision="0" strvalue="OFF" type="INT16" value="0" widget="0">
                <constraint key="0">OFF</constraint>
                <constraint key="1">ON</constraint>
             </param>
             <param access="1" maxlength="0" name="Extension" oid="Blackstorm.extension" type="STRING" value=".mov" widget="0"/>
             <param access="1" constrainttype="INT_CHOICE" name="Number of Channels" oid="Blackstorm.NumOfChannels" precision="0" strvalue="0" type="INT16" value="0" widget="0">
                <constraint key="0">0</constraint>
                <constraint key="1">1</constraint>
                <constraint key="2">2</constraint>
                <constraint key="3">3</constraint>
                <constraint key="4">4</constraint>
             </param>
             <param access="1" constrainttype="INT_CHOICE" name="Channel 1 State" oid="Blackstorm.Channel1State" precision="0" type="INT16" value="0" widget="default">
                <constraint key="0">None</constraint>
                <constraint key="1">Request</constraint>
             </param>
             <param access="1" constrainttype="INT_CHOICE" name="Channel 2 State" oid="Blackstorm.Channel2State" precision="0" type="INT16" value="0" widget="default">
                <constraint key="0">None</constraint>
                <constraint key="1">Request</constraint>
             </param>
             <param access="1" constrainttype="INT_CHOICE" name="Channel 3 State" oid="Blackstorm.Channel3State" precision="0" type="INT16" value="0" widget="default">
                <constraint key="0">None</constraint>
                <constraint key="1">Request</constraint>
             </param>
             <param access="1" constrainttype="INT_CHOICE" name="Channel 4 State" oid="Blackstorm.Channel4State" precision="0" type="INT16" value="0" widget="default">
                <constraint key="0">None</constraint>
                <constraint key="1">Request</constraint>
             </param>
          </params>
          <style id="TitleLabel" name="TitleLabel" value="bdr#000000;size:20;bg#393939;"/>
          <style id="ParamLabel" name="ParamLabel" value="size:Big;bg#dark;txt-align:center;bdr:etched;"/>
          <ogscript handles="onchange" oid="Blackstorm.NumOfChannels">for (var i = 1; i &lt; 5; i++)
    {
       ogscript.hide('Channel'+i);
    }

    var numOfChs = params.getValue('Blackstorm.NumOfChannels', 0);

    if (numOfChs == 1){
       ogscript.reveal('Channel1');
    }else if (numOfChs == 2) {
       ogscript.reveal('Channel1');
       ogscript.reveal('Channel2');
    }else if (numOfChs == 3) {
       ogscript.reveal('Channel1');
       ogscript.reveal('Channel2');
       ogscript.reveal('Channel3');
    }else if (numOfChs == 4) {
       ogscript.reveal('Channel1');
       ogscript.reveal('Channel2');
       ogscript.reveal('Channel3');
       ogscript.reveal('Channel4');
    }</ogscript>
          <ogscript handles="onload" name="Reset Channel States">params.setValue('Blackstorm.Channel1State', 0, 0);
    params.setValue('Blackstorm.Channel2State', 0, 0);
    params.setValue('Blackstorm.Channel3State', 0, 0);
    params.setValue('Blackstorm.Channel4State', 0, 0);
    </ogscript>
       </meta>
       <label height="84" left="717" name="DashBoard VDCP" right="727" style="size:30;bg#3E3C3C;font:bold;txt-align:center;bdr:etched;" top="11"/>
       <abs height="962" left="15" style="bg#panelbg;bdr:etched;" top="101" virtualheight="962" virtualwidth="936" width="936">
          
          <button buttontype="push" height="104" left="23" name="Load Clip List" top="198" width="886">
             <task tasktype="ogscript">function myFunc(success, cmd, result, exception)
    {
       ogscript.debug("List Clips callback: " + success);
       var list = params.createIntChoiceConstraint(result); //Create a choice constraint with the results of the clip list
       params.replaceIdentifiedConstraint('ClipListChoices', list); //Replace the old list with the new clip list
       ogscript.reload('ClipSelector'); //Refresh the Clip List display
    }

    var ip = params.getValue('Blackstorm.IPAddress', 0);
    var port = params.getValue('Blackstorm.PortNumber', 0);
    //Get the cliplist from the server run 'myFunc'
    vdcp.listClips(ip, port, myFunc);

    ogscript.debug ("List Clips Sent. IP Address: " + ip);</task>
          </button>
          <table height="409" left="23" top="314" width="886">
             <tr>
                <label colspan="1" fill="both" height="35" insets="2,2,2,2" name="Clip List" rowspan="1" style="style:ParamLabel;txt-align:center;" weightx="1.0" weighty="0.2" width="545"/>
             </tr>
             <tr>
                <param anchor="west" constraint="ClipListChoices" constrainttype="ID_REFERENCE" fill="both" height="277" id="ClipSelector" insets="2,2,2,2" oid="Blackstorm.ClipList" precision="0" scroll="vertical" showlabel="false" style="bdr:none;" weightx="1.0" weighty="1.0" widget="35" width="545"/>
             </tr>
          </table>
          <table height="99" left="30" top="835" width="872">
             <tr>
                <button buttontype="push" colspan="1" fill="both" height="60" name="Load to Channel 1" rowspan="1" weightx="1.0" weighty="1.0" width="322">
                   <task tasktype="ogscript">%const['GlobalScripts']['LoadClip']%

    loadClip(1);</task>
                </button>
                <button buttontype="push" colspan="1" fill="both" height="60" name="Load to Channel 2" rowspan="1" weightx="1.0" weighty="1.0" width="322">
                   <task tasktype="ogscript">%const['GlobalScripts']['LoadClip']%

    loadClip(2);</task>
                </button>
                <button buttontype="push" colspan="1" fill="both" height="60" name="Load to Channel 3" rowspan="1" weightx="1.0" weighty="1.0" width="322">
                   <task tasktype="ogscript">%const['GlobalScripts']['LoadClip']%

    loadClip(3);</task>
                </button>
                <button buttontype="push" colspan="1" fill="both" height="60" name="Load to Channel 4" rowspan="1" weightx="1.0" weighty="1.0" width="322">
                   <task tasktype="ogscript">%const['GlobalScripts']['LoadClip']%

    loadClip(4);</task>
                </button>
             </tr>
          </table>
          <table height="92" left="684" top="733" width="210">
             <tr>
                <table colspan="1" fill="both" height="25" insets="2,2,2,2" name="" rowspan="1" style="txt-align:center;" weightx="1.0" weighty="1.0">
                   <tr>
                      <label colspan="1" fill="both" height="37" name="Add Extension:" rowspan="1" style="txt-align:west;" weightx="1.0" weighty="1.0" width="131"/>
                      <param colspan="1" element="0" fill="both" height="37" oid="Blackstorm.extension" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0" width="131"/>
                   </tr>
                </table>
             </tr>
             <tr>
                <param colspan="1" expand="true" fill="both" insets="2,2,2,2" oid="Flag.Extention" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0"/>
             </tr>
          </table>
          <label height="99" html="true" left="36" scroll="vertical" style="bdr:shadow;" top="732" width="637"><![CDATA[
    Some VDCP devices display clip lists without file extensions, but require them to load clips.
    If needed type the file extension in the field to the left and select On. 
    The 'useFileExtensionVDCP' parameter on Blackstorm can be found C:\Ross\Blackstorm\ControllerPortsConfig.xml (default is set to false).
    ]]></label>
       <table height="175" left="23" top="20" width="876">
             <tr>
                <label colspan="1" fill="both" height="57" insets="2,2,2,2" name="Number of Channels:" rowspan="1" style="style:TitleLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="424"/>
                <param colspan="1" expand="true" fill="both" height="57" insets="2,2,2,2" oid="Blackstorm.NumOfChannels" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0" width="424"/>
             </tr>
             <tr>
                <label colspan="1" fill="both" height="57" insets="2,2,2,2" name="IP Address:" rowspan="1" style="style:TitleLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="424"/>
                <param colspan="1" expand="true" fill="both" height="57" insets="2,2,2,2" oid="Blackstorm.IPAddress" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0" width="424"/>
             </tr>
             <tr>
                <label colspan="1" fill="both" height="57" insets="2,2,2,2" name="Port Numbers:" rowspan="1" style="style:TitleLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="424"/>
                <table colspan="1" fill="both" height="57" insets="2,2,2,2" rowspan="1" weightx="1.0" weighty="1.0" width="424">
                   <tr>
                      <abs colspan="1" fill="both" height="52" insets="0,2,0,2" rowspan="1" weightx="1.0" weighty="1.0" width="76">
                         <abs bottom="0" id="Port1" left="0" name="Port1" right="0" top="0" visible="true">
                            <table bottom="0" left="0" right="0" top="0">
                               <tr>
                                  <label colspan="1" fill="both" name="Channel 1" rowspan="1" style="txt-align:center" weightx="1.0" weighty="1.0"/>
                               </tr>
                               <tr>
                                  <param colspan="1" element="0" fill="both" oid="Blackstorm.PortNumber" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0"/>
                               </tr>
                            </table>
                         </abs>
                      </abs>
                      <abs colspan="1" fill="both" height="52" insets="0,2,0,2" rowspan="1" weightx="1.0" weighty="1.0" width="76">
                         <abs bottom="0" id="Port2" left="0" name="Port2" right="0" top="0" visible="true">
                            <table bottom="0" left="0" right="0" top="0">
                               <tr>
                                  <label colspan="1" fill="both" name="Channel 2" rowspan="1" style="txt-align:center" weightx="1.0" weighty="1.0"/>
                               </tr>
                               <tr>
                                  <param colspan="1" element="1" fill="both" oid="Blackstorm.PortNumber" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0"/>
                               </tr>
                            </table>
                         </abs>
                      </abs>
                      <abs colspan="1" fill="both" height="52" insets="0,2,0,2" rowspan="1" weightx="1.0" weighty="1.0" width="76">
                         <abs bottom="0" id="Port3" left="0" name="Port3" right="0" top="0" visible="true">
                            <table bottom="0" left="0" right="0" top="0">
                               <tr>
                                  <label colspan="1" fill="both" name="Channel 3" rowspan="1" style="txt-align:center" weightx="1.0" weighty="1.0"/>
                               </tr>
                               <tr>
                                  <param colspan="1" element="2" fill="both" oid="Blackstorm.PortNumber" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0"/>
                               </tr>
                            </table>
                         </abs>
                      </abs>
                      <abs colspan="1" fill="both" height="52" insets="0,2,0,2" rowspan="1" weightx="1.0" weighty="1.0" width="76">
                         <abs bottom="0" id="Port4" left="0" name="Port4" right="0" top="0" visible="true">
                            <table bottom="0" left="0" right="0" top="0">
                               <tr>
                                  <label colspan="1" fill="both" name="Channel 4" rowspan="1" style="txt-align:center" weightx="1.0" weighty="1.0"/>
                               </tr>
                               <tr>
                                  <param colspan="1" element="3" fill="both" oid="Blackstorm.PortNumber" rowspan="1" showlabel="false" weightx="1.0" weighty="1.0"/>
                               </tr>
                            </table>
                         </abs>
                      </abs>
                   </tr>
                </table>
             </tr>
          </table>
       </abs>
       <abs height="87" left="1654" style="bg-u:platform:/plugin/com.rossvideo.common.oglml/patterns/ross-150.png;bg-align:center;bg-fill:shrink;" top="11" virtualheight="87" virtualwidth="252" width="252"/>
       <abs height="90" left="18" style="bg-u:Images/BlackStorm_sm.png;bg-align:center;bg-fill:none;" top="11" virtualheight="90" virtualwidth="333" width="333"/>
       <table height="962" id="Table Test" left="959" top="101" width="946">
          <tr>
             <abs colspan="1" fill="both" height="253" id="" insets="2,0,2,0" name="" rowspan="1" style="bg#panelbg;bdr:etched;" virtualheight="237" virtualwidth="946" visible="false" weightx="1.0" weighty="1.0" width="946">
                <table height="59" left="26" top="19" width="897">
                   <tr>
                      <label colspan="1" fill="both" height="90" id="" insets="2,2,2,2" name="" rowspan="1" style="txt-align:center;" weightx="1.0" weighty="1.0" width="184"/>
                   </tr>
                </table>
                <abs bottom="0" colspan="1" fill="both" id="Channel1" left="0" name="" right="0" rowspan="1" style="bg#panelbg;bdr:etched;" top="0" virtualheight="224" virtualwidth="847" visible="false" weightx="1.0" weighty="1.0">
                   <table height="86" left="14" top="12" width="817">
                      <tr>
                         <label colspan="1" fill="both" height="90" insets="2,0,2,0" name="Channel 1: " rowspan="1" style="style:TitleLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="170"/>
                         <label colspan="1" fill="both" height="90" id="clipName1" insets="2,2,2,2" name="" rowspan="1" style="style:ParamLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="170"/>
                      </tr>
                      <tr>
                         <label colspan="1" fill="both" height="90" insets="2,0,2,0" name="Status: " rowspan="1" style="style:TitleLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="170"/>
                         <label colspan="1" fill="both" height="90" id="status1" insets="2,2,2,2" name="" rowspan="1" style="style:ParamLabel;txt-align:center;" weightx="1.0" weighty="1.0" width="170"/>
                      </tr>
                   </table>
                   <table height="107" left="14" top="104" width="811">
                      <tr>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgCueClip.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['CueClip']%

    cueClip(1);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgRewind.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['RewindClip']%

    revClip(1);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgStop.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['StopClip']%

    stopClip(1);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgPlay.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['PlayClip']%

    playClip(1);</task>
                         </button>
                         <button buttontype="push" colspan="1" fill="both" height="92" name="" rowspan="1" style="bg-u:Images/lgPause.png;bg#dark;i-u:;" weightx="1.0" weighty="1.0" width="92">
                            <task tasktype="ogscript">%const['GlobalScripts']['PauseClip']%

    pauseClip(1);</task>
                         </button>
        &nb