Initial commit: merge nuescan, pymso, pybbd202, and pypewpewhops into scanengine-3
- 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>
This commit is contained in:
@@ -0,0 +1,126 @@
|
||||
"""
|
||||
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()
|
||||
Reference in New Issue
Block a user