changed dante timecode fps to 25
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,47 +1,153 @@
|
|||||||
@echo off
|
# plugin_prelaunch.py - With connection check
|
||||||
REM ---------------------------------------------
|
from switchboard.devices.device_base import Device, DeviceStatus
|
||||||
REM Safe Switchboard External Command: Git Pull
|
from switchboard.devices.device_widget_base import DeviceWidget
|
||||||
REM Discards local changes, pulls latest from current branch
|
from switchboard.switchboard_logging import LOGGER
|
||||||
REM Safe to keep inside the Git repo
|
from switchboard.config import IntSetting, StringSetting
|
||||||
REM ---------------------------------------------
|
|
||||||
|
|
||||||
REM Change this to your project repo path (can be inside repo)
|
from PySide6 import QtCore
|
||||||
set REPO_PATH=D:\Projects\DEV_TheStudio_Plugin
|
|
||||||
|
|
||||||
REM Name of this batch file
|
|
||||||
set BATCH_NAME=%~nx0
|
|
||||||
|
|
||||||
echo ------------------------------------------------
|
class DevicePreLaunch(Device):
|
||||||
echo [%COMPUTERNAME%] Starting safe Git pull on %REPO_PATH%
|
"""PreLaunch device - executes batch file on connect"""
|
||||||
echo ------------------------------------------------
|
|
||||||
|
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
|
class DeviceWidgetPreLaunch(DeviceWidget):
|
||||||
where git >nul 2>&1
|
"""Widget for PreLaunch device"""
|
||||||
IF %ERRORLEVEL% NEQ 0 (
|
|
||||||
echo ERROR: Git is not installed or not in PATH
|
def __init__(self, name, device_hash, address, icons, parent=None):
|
||||||
exit /b 1
|
super().__init__(name, device_hash, address, icons, parent=parent)
|
||||||
)
|
LOGGER.info(f"PreLaunch widget created for {name}")
|
||||||
|
|
||||||
REM Get current branch
|
def _add_control_buttons(self):
|
||||||
for /f "tokens=*" %%i in ('git rev-parse --abbrev-ref HEAD') do set CURRENT_BRANCH=%%i
|
"""Add connect button"""
|
||||||
echo Current branch: %CURRENT_BRANCH%
|
super()._add_control_buttons()
|
||||||
|
|
||||||
REM Discard any local changes (staged and unstaged)
|
CONTROL_BUTTON_ICON_SIZE = QtCore.QSize(21, 21)
|
||||||
git reset --hard
|
|
||||||
|
self.connect_button = self.add_control_button(
|
||||||
REM Clean untracked files and directories, excluding this batch file
|
icon_size=CONTROL_BUTTON_ICON_SIZE,
|
||||||
git clean -fdX -e "%BATCH_NAME%"
|
checkable=True,
|
||||||
|
tool_tip='Connect and execute batch file',
|
||||||
REM Pull latest changes from origin for current branch
|
hover_focus=False,
|
||||||
git pull origin %CURRENT_BRANCH%
|
name='connect')
|
||||||
|
|
||||||
REM Show status
|
self.connect_button.clicked.connect(self.connect_button_clicked)
|
||||||
git status
|
|
||||||
|
def connect_button_clicked(self):
|
||||||
echo ------------------------------------------------
|
"""Handle connect button click"""
|
||||||
echo [%COMPUTERNAME%] Git pull complete
|
if self.connect_button.isChecked():
|
||||||
echo ------------------------------------------------
|
self._connect()
|
||||||
pause
|
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)
|
||||||
Reference in New Issue
Block a user