fc43fbe4b0
- Merged four separate hardware control projects into unified platform - Created unified requirements.txt with all dependencies - Added comprehensive .gitignore - Added project overview README Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
126 lines
4.8 KiB
Python
126 lines
4.8 KiB
Python
"""
|
|
nueScan - Oscilloscope Dialog Controller
|
|
Handles all UI interactions for the oscilloscope dialog
|
|
|
|
Copyright (C) 2025 Thomas Ales
|
|
Licensed under GNU General Public License v2.0
|
|
"""
|
|
|
|
import os
|
|
from PyQt6 import uic
|
|
from PyQt6.QtWidgets import QDialog, QMessageBox
|
|
|
|
|
|
class OscopeDialog(QDialog):
|
|
"""Oscope dialog for nueScan application"""
|
|
|
|
def __init__(self, parent, microscope):
|
|
super().__init__(parent)
|
|
|
|
# Store hardware controllers
|
|
self.microscope = microscope
|
|
|
|
# Load UI file
|
|
ui_path = os.path.join(os.path.dirname(__file__), '..', 'nuescan_oscope_dialog.ui')
|
|
uic.loadUi(ui_path, self)
|
|
|
|
# Set window title
|
|
self.setWindowTitle("nueScan - Oscilloscope Settings")
|
|
|
|
# Connect all UI signals
|
|
self._connect_signals()
|
|
|
|
# Initialize UI state
|
|
self._initialize_ui()
|
|
|
|
def _connect_signals(self):
|
|
"""Connect all UI signals to handler methods"""
|
|
# ===== ComboBox Value Changed Handlers =====
|
|
self.cb_set_trig_channel.currentIndexChanged.connect(self.on_trigger_channel_changed)
|
|
self.cb_set_saw_channel.currentIndexChanged.connect(self.on_saw_channel_changed)
|
|
self.cb_set_bias_a_ch.currentIndexChanged.connect(self.on_bias_a_channel_changed)
|
|
self.cb_set_bias_b_ch.currentIndexChanged.connect(self.on_bias_b_channel_changed)
|
|
|
|
# ===== LineEdit Text Changed Handlers =====
|
|
self.le_set_trigger_voltage.textChanged.connect(self.on_trigger_voltage_changed)
|
|
self.le_set_sample_thresh_voltage.textChanged.connect(self.on_sample_thresh_voltage_changed)
|
|
self.le_set_pd_trig_voltage.textChanged.connect(self.on_pd_trig_voltage_changed)
|
|
self.le_oscope_visa_address.textChanged.connect(self.on_oscope_visa_address_changed)
|
|
|
|
|
|
# ===== Button Click Handlers =====
|
|
self.btn_test_scope_connection.clicked.connect(self.on_test_scope_connection_clicked)
|
|
self.btn_save_scope_settings.clicked.connect(self.on_save_scope_settings_clicked)
|
|
self.btn_cancel_scope_settings.clicked.connect(self.on_cancel_scope_settings_clicked)
|
|
|
|
def _initialize_ui(self):
|
|
"""Initialize UI with default values"""
|
|
# Populate combo boxes with dummy data
|
|
self._populate_combo_boxes()
|
|
|
|
def _populate_combo_boxes(self):
|
|
"""Populate all combo boxes with initial values"""
|
|
# Oscilloscope channels
|
|
channels = ["CH1", "CH2", "CH3", "CH4"]
|
|
self.cb_set_trig_channel.addItems(channels)
|
|
self.cb_set_saw_channel.addItems(channels)
|
|
self.cb_set_bias_a_ch.addItems(channels)
|
|
self.cb_set_bias_b_ch.addItems(channels)
|
|
|
|
|
|
# ==================== ComboBox Change Handlers ====================
|
|
|
|
def on_trigger_channel_changed(self, index):
|
|
"""Handle Phototrigger channel change"""
|
|
channel = self.cb_set_trig_channel.currentText()
|
|
print(f"DEBUG: Phototrigger channel changed to: {channel}")
|
|
|
|
def on_bias_a_channel_changed(self, index):
|
|
"""Handle Bias A channel change"""
|
|
channel = self.cb_set_bias_a_ch.currentText()
|
|
print(f"DEBUG: Bias A channel changed to: {channel}")
|
|
|
|
def on_bias_b_channel_changed(self, index):
|
|
"""Handle Bias B channel change"""
|
|
channel = self.cb_set_bias_b_ch.currentText()
|
|
print(f"DEBUG: Bias B channel changed to: {channel}")
|
|
|
|
def on_saw_channel_changed(self, index):
|
|
"""Handle RF/SAW channel change"""
|
|
channel = self.cb_set_saw_channel.currentText()
|
|
print(f"DEBUG: RF/SAW channel changed to: {channel}")
|
|
|
|
|
|
# ==================== LineEdit Text Change Handlers ====================
|
|
|
|
def on_pd_trig_voltage_changed(self, text):
|
|
"""Handle PD Trigger voltage change"""
|
|
print(f"DEBUG: PD Trigger voltage changed to: {text}")
|
|
|
|
def on_trigger_voltage_changed(self, text):
|
|
"""Handle Sample Min Bias voltage change"""
|
|
print(f"DEBUG: Sample Min Bias voltage changed to: {text}")
|
|
|
|
def on_sample_thresh_voltage_changed(self, text):
|
|
"""Handle Sample Min Bias voltage change (placeholder)"""
|
|
print(f"DEBUG: Sample threshold voltage changed to: {text}")
|
|
|
|
def on_oscope_visa_address_changed(self, text):
|
|
"""Handle oscilloscope VISA address change"""
|
|
print(f"DEBUG: Oscilloscope VISA address changed to: {text}")
|
|
|
|
# ==================== Button Click Handlers ====================
|
|
|
|
def on_test_scope_connection_clicked(self):
|
|
"""Test the oscilloscope connection"""
|
|
print("DEBUG: Test oscope connection clicked")
|
|
|
|
def on_save_scope_settings_clicked(self):
|
|
"""Save the oscilloscope settings"""
|
|
print("DEBUG: Save oscope settings clicked")
|
|
self.accept()
|
|
|
|
def on_cancel_scope_settings_clicked(self):
|
|
"""Cancel the oscilloscope settings changes"""
|
|
print("DEBUG: Cancel oscope settings clicked")
|
|
self.reject() |