changed dante timecode fps to 25

This commit is contained in:
2025-12-03 12:43:35 +02:00
parent 98780c7aae
commit 22566b6767
5 changed files with 148 additions and 42 deletions

View File

@@ -1,47 +1,153 @@
@echo off
REM ---------------------------------------------
REM Safe Switchboard External Command: Git Pull
REM Discards local changes, pulls latest from current branch
REM Safe to keep inside the Git repo
REM ---------------------------------------------
# plugin_prelaunch.py - With connection check
from switchboard.devices.device_base import Device, DeviceStatus
from switchboard.devices.device_widget_base import DeviceWidget
from switchboard.switchboard_logging import LOGGER
from switchboard.config import IntSetting, StringSetting
REM Change this to your project repo path (can be inside repo)
set REPO_PATH=D:\Projects\DEV_TheStudio_Plugin
from PySide6 import QtCore
REM Name of this batch file
set BATCH_NAME=%~nx0
echo ------------------------------------------------
echo [%COMPUTERNAME%] Starting safe Git pull on %REPO_PATH%
echo ------------------------------------------------
class DevicePreLaunch(Device):
"""PreLaunch device - executes batch file on connect"""
csettings = {
'batch_file': StringSetting(
attr_name="batch_file",
nice_name="Batch File Path",
value="D:\\Projects\\DEV_TheStudio_Plugin\\Source\\git_management.bat",
tool_tip="Full path to the batch file on the remote machine",
category="PreLaunch Settings",
),
'port': IntSetting(
attr_name="port",
nice_name="Listener Port",
value=2980,
tool_tip="Port of SwitchboardListener",
category="Network Settings",
),
}
def __init__(self, name, address, **kwargs):
super().__init__(name, address, **kwargs)
LOGGER.info(f"PreLaunch device '{name}' created")
def device_settings(self):
return super().device_settings()
def connect(self):
"""Called when connect button clicked"""
LOGGER.info(f">>> {self.name}: connect() called!")
# First, check if listener is reachable
LOGGER.info(f">>> {self.name}: Checking listener connection...")
# Try a simple connectivity test
try:
# Send a simple test message
test_message = {'command': 'state'}
success, response = self.unreal_client.send_message(test_message)
if not success:
LOGGER.error(f">>> {self.name}: Cannot connect to listener!")
self.device_qt_handler.signal_device_connect_failed.emit(self)
return
LOGGER.info(f">>> {self.name}: Listener responded: {response}")
except Exception as e:
LOGGER.error(f">>> {self.name}: Connection test failed: {e}")
self.device_qt_handler.signal_device_connect_failed.emit(self)
return
# Set status to READY
self.status = DeviceStatus.READY
LOGGER.info(f">>> {self.name}: Status set to READY, executing batch file...")
# Execute batch file
self.execute_batch_file()
def disconnect(self):
"""Called when disconnect button clicked"""
LOGGER.info(f">>> {self.name}: disconnect() called!")
self.status = DeviceStatus.DISCONNECTED
def execute_batch_file(self):
"""Execute the batch file"""
batch_file = self.batch_file.get_value()
if not batch_file:
LOGGER.warning(f"  {self.name}: No batch file configured")
return False
LOGGER.info(f">>> {self.name}: ========== EXECUTING ==========")
LOGGER.info(f">>> {self.name}: File: {batch_file}")
LOGGER.info(f">>> {self.name}: Address: {self.address}")
LOGGER.info(f">>> {self.name}: Port: {self.port.get_value()}")
try:
message = {
'command': 'start',
'bTryKill': False,
'bUpdateWorkingDir': False,
'caller': self.name,
'name': 'cmd.exe',
'args': f'/c "{batch_file}"',
'working_dir': '',
}
LOGGER.info(f">>> {self.name}: Sending message...")
success, msg = self.unreal_client.send_message(message)
if success:
LOGGER.info(f">>>  {self.name}: SUCCESS!")
LOGGER.info(f">>> Response: {msg}")
return True
else:
LOGGER.error(f">>> L {self.name}: Send failed!")
return False
except Exception as e:
LOGGER.error(f">>> L {self.name}: ERROR: {e}")
import traceback
LOGGER.error(traceback.format_exc())
return False
REM Navigate to the repo
cd /d "%REPO_PATH%"
REM Ensure Git is installed
where git >nul 2>&1
IF %ERRORLEVEL% NEQ 0 (
echo ERROR: Git is not installed or not in PATH
exit /b 1
)
REM Get current branch
for /f "tokens=*" %%i in ('git rev-parse --abbrev-ref HEAD') do set CURRENT_BRANCH=%%i
echo Current branch: %CURRENT_BRANCH%
REM Discard any local changes (staged and unstaged)
git reset --hard
REM Clean untracked files and directories, excluding this batch file
git clean -fdX -e "%BATCH_NAME%"
REM Pull latest changes from origin for current branch
git pull origin %CURRENT_BRANCH%
REM Show status
git status
echo ------------------------------------------------
echo [%COMPUTERNAME%] Git pull complete
echo ------------------------------------------------
pause
class DeviceWidgetPreLaunch(DeviceWidget):
"""Widget for PreLaunch device"""
def __init__(self, name, device_hash, address, icons, parent=None):
super().__init__(name, device_hash, address, icons, parent=parent)
LOGGER.info(f"PreLaunch widget created for {name}")
def _add_control_buttons(self):
"""Add connect button"""
super()._add_control_buttons()
CONTROL_BUTTON_ICON_SIZE = QtCore.QSize(21, 21)
self.connect_button = self.add_control_button(
icon_size=CONTROL_BUTTON_ICON_SIZE,
checkable=True,
tool_tip='Connect and execute batch file',
hover_focus=False,
name='connect')
self.connect_button.clicked.connect(self.connect_button_clicked)
def connect_button_clicked(self):
"""Handle connect button click"""
if self.connect_button.isChecked():
self._connect()
else:
self._disconnect()
def _connect(self):
"""Connect"""
self.connect_button.setChecked(True)
self.signal_device_widget_connect.emit(self)
def _disconnect(self):
"""Disconnect"""
self.connect_button.setChecked(False)
self.signal_device_widget_disconnect.emit(self)