Work in progress

This commit is contained in:
Rainer Koschnick
2025-07-14 23:02:07 +02:00
parent b72b496506
commit fdfe0948fe
11 changed files with 871 additions and 389 deletions

2
gw.sh Executable file
View File

@ -0,0 +1,2 @@
#!/bin/bash
gw $*

40
live_output.py Normal file
View File

@ -0,0 +1,40 @@
import subprocess
import sys
import time
# A command that produces output over time
# For example, pinging a server
command = ["ping", "-c", "5", "google.com"]
print(f"--- Starting command: '{' '.join(command)}' ---")
try:
# Start the subprocess
# stdout=subprocess.PIPE redirects the output so we can capture it
# text=True decodes the output as text using the default encoding
# bufsize=1 enables line-buffering for real-time output
process = subprocess.Popen(
command,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
text=True,
bufsize=1
)
# Read the output line by line in real-time
if process.stdout:
for line in iter(process.stdout.readline, ''):
print(line, end="")
sys.stdout.flush() # Ensure the output is printed immediately
# Wait for the process to complete and get the return code
process.wait()
return_code = process.returncode
print(f"--- Command finished with exit code: {return_code} ---")
except FileNotFoundError:
print(f"Error: Command not found: {command[0]}")
except Exception as e:
print(f"An error occurred: {e}")

176
main.py
View File

@ -1,4 +1,4 @@
import sys import sys, glob, json, os
from PySide6 import QtWidgets from PySide6 import QtWidgets
from PySide6.QtWidgets import ( from PySide6.QtWidgets import (
QApplication, QApplication,
@ -10,10 +10,10 @@ from PySide6.QtWidgets import (
QHBoxLayout, QHBoxLayout,
QLabel, QLabel,
QFileDialog, QFileDialog,
QInputDialog,
QMessageBox,
) )
from PySide6.QtCore import Slot from PySide6.QtCore import Slot
import json
import os
from readdisk import ReadDiskWindow from readdisk import ReadDiskWindow
from ui_main_window import Ui_MainWindow from ui_main_window import Ui_MainWindow
from ui_read_disk import Ui_ReadDialog from ui_read_disk import Ui_ReadDialog
@ -23,7 +23,7 @@ class MainWindow(QtWidgets.QMainWindow):
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.settings = {} self.settings = self.get_defaults()
# Create an instance of the UI class # Create an instance of the UI class
self.ui = Ui_MainWindow() self.ui = Ui_MainWindow()
@ -48,35 +48,183 @@ class MainWindow(QtWidgets.QMainWindow):
self.logical_button_group.addButton(self.ui.rb_seek, 11) self.logical_button_group.addButton(self.ui.rb_seek, 11)
self.logical_button_group.addButton(self.ui.rb_delays, 12) self.logical_button_group.addButton(self.ui.rb_delays, 12)
self.logical_button_group.addButton(self.ui.rb_update_firmware, 13) self.logical_button_group.addButton(self.ui.rb_update_firmware, 13)
self.profile = "GWUIDefault"
self.ui.rb_read.setChecked(True) self.ui.rb_read.setChecked(True)
self.ui.pb_close.clicked.connect(self.close) # Populate combo_port with /dev/ttyACM* devices
self.populate_serial_ports()
self.profile = "GWUIDefault"
# Populate combo_profile with available profiles
self.populate_profiles()
self.ui.combo_profile.currentTextChanged.connect(self.on_combo_profile_changed)
self.load_settings(self.profile)
self.ui.combo_port.setCurrentText(self.settings.get("device", "Auto"))
self.ui.combo_port.currentTextChanged.connect(self.on_combo_port_text_changed)
self.ui.action_quit.triggered.connect(self.close) self.ui.action_quit.triggered.connect(self.close)
self.ui.pb_close.clicked.connect(self.close)
self.ui.pb_execute.clicked.connect(self.on_execute) self.ui.pb_execute.clicked.connect(self.on_execute)
self.ui.pb_refresh_ports.clicked.connect(self.populate_serial_ports)
self.ui.pb_add_profile.clicked.connect(self.on_pb_add_profile)
self.ui.pb_delete_profile.clicked.connect(self.on_pb_delete_profile)
def on_combo_profile_changed(self, profile_name: str):
if profile_name:
self.profile = profile_name
self.load_settings(self.profile)
self.ui.combo_port.setCurrentText(self.settings.get("device", "Auto"))
def on_pb_add_profile(self):
text, ok = QInputDialog.getText(self, "Add Profile", "Enter new profile name:")
if ok and text:
self.profile = text
self.settings = self.get_defaults()
self.save_settings(self.profile)
self.populate_profiles()
self.ui.combo_profile.setCurrentText(self.profile)
self.on_combo_profile_changed(self.profile)
def on_pb_delete_profile(self):
"""Delete the currently selected profile and load the previous one, or defaults if none remain."""
config_path = self.get_config_path(self.profile)
try:
if os.path.exists(config_path):
os.remove(config_path)
except Exception as e:
QMessageBox.critical(self, "Error", f"Failed to delete profile: {e}")
return
# Refresh profile list
self.populate_profiles()
profiles = [self.ui.combo_profile.itemText(i) for i in range(self.ui.combo_profile.count())]
if profiles:
# Select the previous profile in the list, or the first if deleted was first
idx = profiles.index(self.profile) if self.profile in profiles else 0
if idx > 0:
idx -= 1
self.profile = profiles[idx]
self.ui.combo_profile.setCurrentText(self.profile)
self.load_settings(self.profile)
self.ui.combo_port.setCurrentText(self.settings.get("device", "Auto"))
else:
# No profiles left, create default
self.profile = "GWUIDefault"
self.settings = self.get_defaults()
self.save_settings(self.profile)
self.populate_profiles()
self.ui.combo_profile.setCurrentText(self.profile)
self.ui.combo_port.setCurrentText(self.settings.get("device", "Auto"))
def on_combo_port_text_changed(self, text: str) -> None:
self.settings["device"] = text
self.save_settings(self.profile)
def get_defaults(self):
return {
"fileprefix": "disk-image",
"filepath": "",
"device": "Auto",
"double_step_enabled": False,
"double_step_value": "1",
"fake_index_enabled": False,
"fake_index_value": "300",
"fake_index_unit": "",
"bitrate_enabled": False,
"bitrate_value": "250",
"revs_enabled": False,
"revs_value": "3",
"drive_select_enabled": False,
"drive_select_value": "A",
"retries_enabled": False,
"retriesAttributeError: 'MainWindow' object has no attribute 'profile'_value": "3",
"pllspec_enabled": False,
"pll_period": "",
"pll_phase": "",
"pll_lowpass": "",
"head_sets_enabled": False,
"head_sets_value": "0-1",
"head_swap_enabled": False,
"ss_legacy_enabled": False,
"cylinder_sets_enabled": False,
"cylinder_sets_value": "0-34,35-79",
"rev_track_data_enabled": False,
"hard_sectors_enabled": False,
"no_clobber_enabled": False,
"raw_enabled": False,
"pin2_enabled": False,
"pin2_high": False,
"pin2_low": False,
"flippy_enabled": False,
"flippy_panasonic": True,
"flippy_teac": False,
"adjust_speed_enabled": False,
"adjust_speed_value": "300",
"adjust_speed_unit": "",
"suffix_value": "",
"inc_enabled": True,
"format_enabled": False,
"format_value": "",
"disktype_value": ""
}
def get_config_path(self, profile_name: str) -> str:
"""Return the full path for a profile config file in ~/.config/gwui/"""
config_dir = os.path.expanduser("~/.config/gwui")
if not os.path.exists(config_dir):
os.makedirs(config_dir, exist_ok=True)
return os.path.join(config_dir, profile_name + ".json")
@Slot() @Slot()
def on_execute(self): def on_execute(self):
read_disk_window = ReadDiskWindow() read_disk_window = ReadDiskWindow()
if self.load_settings("settings.json"): # read_disk_window.set_port(self.ui.combo_port.currentText())
read_disk_window.set_settings(self.settings) read_disk_window.set_settings(self.settings)
read_disk_window.exec() read_disk_window.exec()
self.settings = read_disk_window.get_settings() self.settings = read_disk_window.get_settings()
self.save_settings("settings.json") self.settings["device"] = self.ui.combo_port.currentText()
self.save_settings(self.profile)
def load_settings(self, file_name): def load_settings(self, profile_name: str):
if file_name: config_path = self.get_config_path(profile_name)
if os.path.exists(file_name): if profile_name:
with open(file_name, 'r') as f: if os.path.exists(config_path):
with open(config_path, 'r') as f:
self.settings = json.load(f) self.settings = json.load(f)
return True return True
return False return False
def save_settings(self, file_name): def save_settings(self, profile_name: str):
if file_name: config_path = self.get_config_path(profile_name)
with open(file_name, 'w') as f: if profile_name:
with open(config_path, 'w') as f:
json.dump(self.settings, f, indent=2) json.dump(self.settings, f, indent=2)
def populate_serial_ports(self):
"""Populate the combo_port with all /dev/ttyACM* devices."""
ports = glob.glob('/dev/ttyACM*')
self.ui.combo_port.clear()
self.ui.combo_port.addItem("Auto")
self.ui.combo_port.addItems(ports)
def populate_profiles(self):
"""Populate combo_profile with all config files in ~/.config/gwui/ (minus .json)."""
config_dir = os.path.expanduser("~/.config/gwui")
if not os.path.exists(config_dir):
os.makedirs(config_dir, exist_ok=True)
profiles = []
for fname in os.listdir(config_dir):
if fname.endswith('.json'):
profiles.append(fname[:-5])
self.ui.combo_profile.clear()
self.ui.combo_profile.addItems(sorted(profiles))
# Optionally, set current profile
if self.profile in profiles:
self.ui.combo_profile.setCurrentText(self.profile)
if __name__ == "__main__": if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv) app = QtWidgets.QApplication(sys.argv)

View File

@ -1,6 +1,6 @@
import sys, os, subprocess import sys, os, subprocess
from PySide6.QtWidgets import QApplication, QDialog, QButtonGroup, QFileDialog, QMessageBox from PySide6.QtWidgets import QApplication, QDialog, QButtonGroup, QFileDialog, QMessageBox
from PySide6.QtCore import Slot from PySide6.QtCore import QCoreApplication, Slot
from PySide6.QtGui import QIntValidator from PySide6.QtGui import QIntValidator
# Import the generated UI class from the ui_form.py file # Import the generated UI class from the ui_form.py file
from ui_read_disk import Ui_ReadDialog from ui_read_disk import Ui_ReadDialog
@ -16,13 +16,11 @@ class ReadDiskWindow(QDialog):
self.flippy_type_group = QButtonGroup(self) self.flippy_type_group = QButtonGroup(self)
self.flippy_type_group.addButton(self.ui.rb_panasonic, 1) self.flippy_type_group.addButton(self.ui.rb_panasonic, 1)
self.flippy_type_group.addButton(self.ui.rb_teac, 2) self.flippy_type_group.addButton(self.ui.rb_teac, 2)
self.pin2_setting_group = QButtonGroup(self) self.pin2_setting_group = QButtonGroup(self)
self.pin2_setting_group.addButton(self.ui.rb_pin2_high, 1) self.pin2_setting_group.addButton(self.ui.rb_pin2_high, 1)
self.pin2_setting_group.addButton(self.ui.rb_pin2_low, 2) self.pin2_setting_group.addButton(self.ui.rb_pin2_low, 2)
# --- Connect Signals to Slots --- # --- Connect Signals to Slots ---
self.ui.cb_fake_index.toggled.connect(self.on_update_settings)
self.ui.cb_bitrate.toggled.connect(self.on_update_settings) self.ui.cb_bitrate.toggled.connect(self.on_update_settings)
self.ui.cb_double_step.toggled.connect(self.on_update_settings) self.ui.cb_double_step.toggled.connect(self.on_update_settings)
self.ui.cb_revs.toggled.connect(self.on_update_settings) self.ui.cb_revs.toggled.connect(self.on_update_settings)
@ -62,50 +60,47 @@ class ReadDiskWindow(QDialog):
self.ui.le_adjust_speed.textChanged.connect(self.on_update_settings) self.ui.le_adjust_speed.textChanged.connect(self.on_update_settings)
self.ui.le_suffix.textChanged.connect(self.on_update_settings) self.ui.le_suffix.textChanged.connect(self.on_update_settings)
self.ui.le_fileprefix.textChanged.connect(self.on_update_settings) self.ui.le_fileprefix.textChanged.connect(self.on_update_settings)
#self.ui.btn_suffix_inc.clicked.connect(self.on_update_settings) self.ui.btn_file_select.clicked.connect(self.on_btn_file_select_clicked)
#self.ui.btn_suffix_dec.clicked.connect(self.on_update_settings)
# self.ui.btn_path_select.clicked.connect(self.on_path_select)
self.ui.btn_file_select.clicked.connect(self.on_update_settings)
self.ui.cb_format.toggled.connect(self.on_update_settings) self.ui.cb_format.toggled.connect(self.on_update_settings)
self.ui.cb_inc.toggled.connect(self.on_update_settings) self.ui.cb_inc.toggled.connect(self.on_update_settings)
# --- Connect Buttons to Dialog's Built-in Slots ---
# The "Launch" button will "accept" the dialog (like OK)
# The "Back" button will "reject" the dialog (like Cancel)
self.ui.btn_launch.clicked.connect(self.on_launch) self.ui.btn_launch.clicked.connect(self.on_launch)
self.ui.btn_back.clicked.connect(self.reject) self.ui.btn_back.clicked.connect(self.reject)
self.ui.btn_path_select.clicked.connect(self.on_btn_path_select_clicked)
# Initialize command attribute # Initialize command attribute
self.command = "" self.command = ""
self.device = ""
@Slot()
def on_btn_abort_clicked(self) -> None:
self.abort = True
self.ui.btn_abort.setEnabled(False)
def calc_suffix(self, inc: int) -> None: def calc_suffix(self, inc: int) -> None:
# Increments or decrements the numeric value in the suffix text field. """Increment or decrement the numeric value in the suffix text field."""
try: try:
current_value = int(self.ui.le_suffix.text()) current_value = int(self.ui.le_suffix.text())
current_value = current_value + inc current_value = current_value + inc
except ValueError: except ValueError:
current_value = 0 current_value = 0
self.ui.le_suffix.setText(str(current_value)) self.ui.le_suffix.setText(str(current_value))
@Slot() @Slot()
def on_btn_suffix_inc_clicked(self): def on_btn_suffix_inc_clicked(self) -> None:
self.calc_suffix(1) self.calc_suffix(1)
@Slot() @Slot()
def on_btn_suffix_dec_clicked(self): def on_btn_suffix_dec_clicked(self) -> None:
self.calc_suffix(-1) self.calc_suffix(-1)
@Slot() @Slot()
def on_btn_file_select_clicked(self): def on_btn_file_select_clicked(self) -> None:
file, ok = QFileDialog.getOpenFileName(self, "Select File", self.ui.le_filepath.text()) file, _ = QFileDialog.getOpenFileName(self, "Select File", self.ui.le_filepath.text())
if not file:
if file == "":
return return
file_path, file_name = os.path.split(file) file_path, file_name = os.path.split(file)
name, extension = os.path.splitext(file_name) name, extension = os.path.splitext(file_name)
self.ui.le_filepath.setText(file_path) self.ui.le_filepath.setText(file_path)
self.ui.le_fileprefix.setText(name) self.ui.le_fileprefix.setText(name)
self.ui.le_suffix.setText("") self.ui.le_suffix.setText("")
@ -113,29 +108,22 @@ class ReadDiskWindow(QDialog):
self.on_update_settings() self.on_update_settings()
@Slot() @Slot()
def on_btn_path_select_clicked(self): def on_btn_path_select_clicked(self) -> None:
path = QFileDialog.getExistingDirectory(self, "Select Folder") path = QFileDialog.getExistingDirectory(self, "Select Folder")
if path:
self.ui.le_filepath.setText(path) self.ui.le_filepath.setText(path)
self.on_update_settings() self.on_update_settings()
@Slot() @Slot()
def on_launch(self): def on_cb_fake_index_toggled(self, checked: bool) -> None:
try: """Enables or disables the Fake Index widgets."""
completed = subprocess.run(self.command, check=True) self.ui.le_fake_index.setEnabled(checked)
except FileNotFoundError as e: self.ui.combo_fake_index.setEnabled(checked)
QMessageBox.critical(self, "Error", f"Command not found: {e}") self.on_update_settings()
except subprocess.CalledProcessError as e:
QMessageBox.critical(self, "Error", f"Failed to launch command: {e}")
if self.ui.cb_inc.isChecked(): def get_settings(self) -> dict:
self.calc_suffix(1) """Gather all settings from the UI into a dictionary."""
return {
def get_settings(self):
"""
A helper method to gather all settings from the UI into a dictionary.
This is a clean way to pass the data out of the dialog.
"""
settings = {
"fileprefix": self.ui.le_fileprefix.text(), "fileprefix": self.ui.le_fileprefix.text(),
"filepath": self.ui.le_filepath.text(), "filepath": self.ui.le_filepath.text(),
"double_step_enabled": self.ui.cb_double_step.isChecked(), "double_step_enabled": self.ui.cb_double_step.isChecked(),
@ -170,7 +158,7 @@ class ReadDiskWindow(QDialog):
"pin2_low": self.ui.rb_pin2_low.isChecked(), "pin2_low": self.ui.rb_pin2_low.isChecked(),
"flippy_enabled": self.ui.cb_flippy.isChecked(), "flippy_enabled": self.ui.cb_flippy.isChecked(),
"flippy_panasonic": self.ui.rb_panasonic.isChecked(), "flippy_panasonic": self.ui.rb_panasonic.isChecked(),
"flippy_teac": self.ui.rb_teac.isChecked(),'"' + "flippy_teac": self.ui.rb_teac.isChecked(),
"adjust_speed_enabled": self.ui.cb_adjust_speed.isChecked(), "adjust_speed_enabled": self.ui.cb_adjust_speed.isChecked(),
"adjust_speed_value": self.ui.le_adjust_speed.text(), "adjust_speed_value": self.ui.le_adjust_speed.text(),
"adjust_speed_unit": self.ui.combo_adjust_speed.currentText(), "adjust_speed_unit": self.ui.combo_adjust_speed.currentText(),
@ -181,9 +169,8 @@ class ReadDiskWindow(QDialog):
"disktype_value": self.ui.combo_disktype.currentText(), "disktype_value": self.ui.combo_disktype.currentText(),
} }
return settings def set_settings(self, settings: dict) -> None:
"""Apply a settings dictionary to the UI."""
def set_settings(self, settings):
self.ui.le_fileprefix.setText(settings.get("fileprefix", "")) self.ui.le_fileprefix.setText(settings.get("fileprefix", ""))
self.ui.le_filepath.setText(settings.get("filepath", "")) self.ui.le_filepath.setText(settings.get("filepath", ""))
self.ui.cb_double_step.setChecked(settings.get("double_step_enabled", False)) self.ui.cb_double_step.setChecked(settings.get("double_step_enabled", False))
@ -228,124 +215,103 @@ class ReadDiskWindow(QDialog):
self.ui.combo_format.setCurrentText(settings.get("format_value", "")) self.ui.combo_format.setCurrentText(settings.get("format_value", ""))
self.ui.combo_disktype.setCurrentText(settings.get("disktype_value", "")) self.ui.combo_disktype.setCurrentText(settings.get("disktype_value", ""))
# Note: command is not set here, as it is generated from UI state # Note: command is not set here, as it is generated from UI state
self.device = settings.get("device", "")
self.on_update_settings()
def on_update_settings(self, *args, **kwargs): def build_command(self) -> tuple[list, str]:
"""Build the command list based on the current UI state."""
fileprefix = self.ui.le_fileprefix.text() fileprefix = self.ui.le_fileprefix.text()
drive = "" drive = f"--drive={self.ui.combo_drive_select.currentText()}" if self.ui.cb_drive_select.isChecked() else ""
bitrate = "" bitrate = f"::bitrate={self.ui.le_bitrate.text()}" if self.ui.cb_bitrate.isChecked() else ""
legacy_ss = "" legacy_ss = "::legacy_ss" if self.ui.cb_ss_legacy.isChecked() else ""
revs = "" revs = f"--revs={self.ui.le_revs.text()}" if self.ui.cb_revs.isChecked() else ""
retries = "" retries = f"--retries={self.ui.le_retries.text()}" if self.ui.cb_retries.isChecked() else ""
fake_index = "" fake_index = f"--fake-index={self.ui.le_fake_index.text()}{self.ui.combo_fake_index.currentText()}" if self.ui.cb_fake_index.isChecked() else ""
pll = "" pll = ""
tracks = ""
densel = ""
no_clobber = ""
raw = ""
reverse = ""
hard_sectors = ""
adjust_speed = ""
disktype = ""
if self.ui.cb_revs.isChecked():
revs = "--revs=" + self.ui.le_revs.text()
if self.ui.cb_drive_select.isChecked():
drive = "--drive=" + self.ui.combo_drive_select.currentText()
if self.ui.cb_bitrate.isChecked():
bitrate = "::bitrate=" + self.ui.le_bitrate.text()
if self.ui.cb_ss_legacy.isChecked():
legacy_ss = "::legacy_ss"
if self.ui.cb_retries.isChecked():
retries = "--retries=" + self.ui.le_retries.text()
if self.ui.cb_fake_index.isChecked(): command = " ".join(self.command)
fake_index = "--fake-index=" + self.ui.le_fake_index.text() + self.ui.combo_fake_index.currentText()
if self.ui.cb_pllspec.isChecked(): if self.ui.cb_pllspec.isChecked():
pll = "--pll=period=" + self.ui.le_period.text() + ":phase=m" + self.ui.le_phase.text() pll = f"--pll=period={self.ui.le_period.text()}:phase={self.ui.le_phase.text()}"
if self.ui.le_lowpass.text():
if self.ui.le_lowpass.text() != "": pll += f":lowpass={self.ui.le_lowpass.text()}"
pll = pll + ":lowpass=" + self.ui.le_lowpass.text() tracks = self._build_tracks()
reverse = "--reverse" if self.ui.cb_rev_track_data.isChecked() else ""
# --tracks combines multiple settings into a single argument hard_sectors = "--hard-sectors" if self.ui.cb_hard_sectors.isChecked() else ""
if self.ui.cb_double_step.isChecked(): no_clobber = "--no-clobber" if self.ui.cb_no_clobber.isChecked() else ""
tracks = "step=" + self.ui.le_double_step.text() densel = ""
if self.ui.cb_cylinder_sets.isChecked():
if tracks != "":
tracks = tracks + ":"
tracks = tracks + "c=" + self.ui.le_cylinder_sets.text()
if self.ui.cb_head_sets.isChecked():
if tracks != "":
tracks = tracks + ":"
tracks = tracks + "h=" + self.ui.le_head_sets.text()
if self.ui.cb_head_swap.isChecked():
if tracks != "":
tracks = tracks + ":"
tracks = tracks + "hswap"
if self.ui.cb_flippy.isChecked():
if tracks != "":
tracks = tracks + ":"
if self.ui.rb_panasonic.isChecked():
tracks = tracks + "h1.off=-8"
else:
tracks = tracks + "h0.off=+8"
if tracks != "":
tracks = "--tracks=" + tracks
if self.ui.cb_rev_track_data.isChecked():
reverse = "--reverse"
if self.ui.cb_hard_sectors.isChecked():
hard_sectors = "--hard-sectors"
if self.ui.cb_no_clobber.isChecked():
no_clobber = "--no-clobber"
if self.ui.cb_pin2.isChecked(): if self.ui.cb_pin2.isChecked():
if self.ui.rb_pin2_high.isChecked(): densel = "--densel H" if self.ui.rb_pin2_high.isChecked() else "--densel L"
densel = "--densel H" raw = "--raw" if self.ui.cb_raw.isChecked() else ""
else: adjust_speed = f"--adjust-speed={self.ui.le_adjust_speed.text()}{self.ui.combo_adjust_speed.currentText()}" if self.ui.cb_adjust_speed.isChecked() else ""
densel = "--densel L" suffix = f"-{self.ui.le_suffix.text()}" if self.ui.le_suffix.text() else ""
if self.ui.cb_raw.isChecked():
raw = "--raw"
if self.ui.cb_adjust_speed.isChecked():
adjust_speed = "--adjust-speed=" + self.ui.le_adjust_speed.text() + self.ui.combo_adjust_speed.currentText()
suffix = self.ui.le_suffix.text()
if suffix != "":
suffix = "-" + suffix
filepath = self.ui.le_filepath.text() filepath = self.ui.le_filepath.text()
disktype = self.ui.combo_disktype.currentText() disktype = self.ui.combo_disktype.currentText()
generated_filename = fileprefix + suffix + disktype format = f"--format={self.ui.combo_format.currentText()}" if self.ui.combo_format.currentText() else ""
filename = os.path.join(filepath, generated_filename) + bitrate + legacy_ss generated_filename = f"{fileprefix}{suffix}{disktype}"
filename = os.path.join(filepath, generated_filename) + legacy_ss + bitrate
self.command = [ device = f"--device={self.device}" if self.device and self.device != "Auto" else ""
command = [
item for item in [ item for item in [
"gw", "read", tracks, revs, drive, densel, "./gw.sh", "read", tracks, revs, device, drive, densel,
adjust_speed, no_clobber, raw, reverse, format, adjust_speed, no_clobber, raw, reverse,
hard_sectors, fake_index, pll, retries, filename hard_sectors, fake_index, pll, retries, filename
] if item ] if item
] ]
return command, generated_filename
def _build_tracks(self) -> str:
"""Build the --tracks argument from relevant UI fields."""
tracks = []
if self.ui.cb_double_step.isChecked():
tracks.append(f"step={self.ui.le_double_step.text()}")
if self.ui.cb_cylinder_sets.isChecked():
tracks.append(f"c={self.ui.le_cylinder_sets.text()}")
if self.ui.cb_head_sets.isChecked():
tracks.append(f"h={self.ui.le_head_sets.text()}")
if self.ui.cb_head_swap.isChecked():
tracks.append("hswap")
if self.ui.cb_flippy.isChecked():
if self.ui.rb_panasonic.isChecked():
tracks.append("h1.off=-8")
else:
tracks.append("h0.off=+8")
return f"--tracks={':'.join(tracks)}" if tracks else ""
def on_update_settings(self, *args, **kwargs) -> None:
"""Update the command and filename fields based on current UI state."""
self.command, generated_filename = self.build_command()
self.ui.le_filename.setText(generated_filename) self.ui.le_filename.setText(generated_filename)
self.ui.te_command_line.setPlainText(" ".join(self.command)) self.ui.te_command_line.setPlainText(" ".join(self.command))
@Slot()
def on_launch(self) -> None:
"""Run the constructed command using subprocess.Popen and write output to the console widget."""
self.ui.btn_abort.setEnabled(True)
self.ui.te_console.clear()
self.abort = False
try:
process = subprocess.Popen(
self.command,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
text=True,
bufsize=1
)
if process.stdout:
for line in iter(process.stdout.readline, ''):
self.ui.te_console.append(line.rstrip())
QCoreApplication.processEvents()
if self.abort:
process.terminate()
self.ui.te_console.append("*** Aborted")
break
process.wait()
if process.returncode == 0 and self.ui.cb_inc.isChecked():
self.calc_suffix(1)
except FileNotFoundError as e:
QMessageBox.critical(self, "Error", f"Command not found: {e}")
except Exception as e:
QMessageBox.critical(self, "Error", f"Failed to launch command: {e}")
self.ui.btn_abort.setEnabled(False)

BIN
screenshots/banner2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

45
settings.json.old Normal file
View File

@ -0,0 +1,45 @@
{
"fileprefix": "Test",
"filepath": "/home/arkay/Emulation/Disks/Test",
"double_step_enabled": false,
"double_step_value": "1",
"fake_index_enabled": false,
"fake_index_value": "300",
"fake_index_unit": "rpm",
"bitrate_enabled": false,
"bitrate_value": "250",
"revs_enabled": false,
"revs_value": "3",
"drive_select_enabled": true,
"drive_select_value": "B",
"retries_enabled": true,
"retries_value": "3",
"pllspec_enabled": false,
"pll_period": "5",
"pll_phase": "60",
"pll_lowpass": "",
"head_sets_enabled": false,
"head_sets_value": "0-1",
"head_swap_enabled": false,
"ss_legacy_enabled": false,
"cylinder_sets_enabled": false,
"cylinder_sets_value": "0-34,35-79",
"rev_track_data_enabled": false,
"hard_sectors_enabled": false,
"no_clobber_enabled": false,
"raw_enabled": false,
"pin2_enabled": false,
"pin2_high": false,
"pin2_low": true,
"flippy_enabled": false,
"flippy_panasonic": false,
"flippy_teac": true,
"adjust_speed_enabled": false,
"adjust_speed_value": "300",
"adjust_speed_unit": "rpm",
"suffix_value": "2",
"inc_enabled": true,
"format_enabled": false,
"format_value": "amiga.amigados",
"disktype_value": ".adf"
}

2
ui/1 Normal file
View File

@ -0,0 +1,2 @@
qt.pysideplugin: Environment variable PYSIDE_DESIGNER_PLUGINS is not set, bailing out.
qt.pysideplugin: No instance of QPyDesignerCustomWidgetCollection was found.

View File

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>543</width> <width>486</width>
<height>544</height> <height>373</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
@ -205,7 +205,7 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QGroupBox" name="gb_serial"> <widget class="QGroupBox" name="gb_profile">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch> <horstretch>0</horstretch>
@ -213,31 +213,147 @@
</sizepolicy> </sizepolicy>
</property> </property>
<property name="title"> <property name="title">
<string>USB Serial Ports</string> <string/>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout_2" stretch="1,0"> <layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Profile</string>
</property>
</widget>
</item>
<item row="0" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item> <item>
<widget class="QListView" name="list_view"> <widget class="QComboBox" name="combo_port">
<property name="resizeMode"> <property name="sizePolicy">
<enum>QListView::ResizeMode::Adjust</enum> <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
<property name="toolTip">
<string>Available Ports</string>
</property>
<item>
<property name="text">
<string>Auto</string>
</property>
</item>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pb_refresh_ports"> <widget class="QPushButton" name="pb_refresh_ports">
<property name="text"> <property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Refresh</string> <string>Refresh</string>
</property> </property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset theme="QIcon::ThemeIcon::SystemReboot"/>
</property>
</widget> </widget>
</item> </item>
</layout> </layout>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>USB Serial Port</string>
</property>
</widget>
</item>
<item row="1" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QComboBox" name="combo_profile"/>
</item>
<item>
<widget class="QPushButton" name="pb_add_profile">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Add new profile</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset theme="QIcon::ThemeIcon::ListAdd"/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pb_delete_profile">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Delete profile</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset theme="QIcon::ThemeIcon::ListRemove"/>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QWidget" name="widget" native="true"> <widget class="QWidget" name="widget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_3"> <layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item> <item>
<widget class="QPushButton" name="pb_execute"> <widget class="QPushButton" name="pb_execute">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text"> <property name="text">
<string>Execute</string> <string>Execute</string>
</property> </property>
@ -245,13 +361,18 @@
</item> </item>
<item> <item>
<widget class="QPushButton" name="pb_close"> <widget class="QPushButton" name="pb_close">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text"> <property name="text">
<string>Close</string> <string>Close</string>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</widget>
</item> </item>
</layout> </layout>
</widget> </widget>
@ -260,7 +381,7 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>543</width> <width>486</width>
<height>21</height> <height>21</height>
</rect> </rect>
</property> </property>

View File

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>685</width> <width>743</width>
<height>710</height> <height>832</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -572,6 +572,11 @@
</item> </item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="QComboBox" name="combo_disktype"> <widget class="QComboBox" name="combo_disktype">
<item>
<property name="text">
<string/>
</property>
</item>
<item> <item>
<property name="text"> <property name="text">
<string>.a2r</string> <string>.a2r</string>
@ -783,6 +788,11 @@
</item> </item>
<item row="1" column="3"> <item row="1" column="3">
<widget class="QComboBox" name="combo_format"> <widget class="QComboBox" name="combo_format">
<item>
<property name="text">
<string/>
</property>
</item>
<item> <item>
<property name="text"> <property name="text">
<string>acorn.adfs.160</string> <string>acorn.adfs.160</string>
@ -1489,6 +1499,12 @@
</item> </item>
<item> <item>
<widget class="QGroupBox" name="groupBox_4"> <widget class="QGroupBox" name="groupBox_4">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title"> <property name="title">
<string>Command Line</string> <string>Command Line</string>
</property> </property>
@ -1496,7 +1512,7 @@
<item> <item>
<widget class="QPlainTextEdit" name="te_command_line"> <widget class="QPlainTextEdit" name="te_command_line">
<property name="plainText"> <property name="plainText">
<string>gw.exe read --device=COM3 &quot;C:\Users\Rainer\Downloads\GreaseweazleGUI-v2.127\mydisk.scp&quot;</string> <string/>
</property> </property>
</widget> </widget>
</item> </item>
@ -1511,6 +1527,15 @@
<layout class="QVBoxLayout" name="verticalLayout_3"> <layout class="QVBoxLayout" name="verticalLayout_3">
<item> <item>
<widget class="QTextEdit" name="te_console"> <widget class="QTextEdit" name="te_console">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="acceptDrops">
<bool>false</bool>
</property>
<property name="readOnly"> <property name="readOnly">
<bool>true</bool> <bool>true</bool>
</property> </property>
@ -1522,7 +1547,7 @@ hr { height: 1px; border-width: 0; }
li.unchecked::marker { content: &quot;\2610&quot;; } li.unchecked::marker { content: &quot;\2610&quot;; }
li.checked::marker { content: &quot;\2612&quot;; } li.checked::marker { content: &quot;\2612&quot;; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Fira Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt; &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Fira Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Segoe UI'; font-size:9pt;&quot;&gt;Using CMD Console mode&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> &lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -1549,16 +1574,32 @@ li.checked::marker { content: &quot;\2612&quot;; }
<property name="text"> <property name="text">
<string>Launch</string> <string>Launch</string>
</property> </property>
<property name="autoDefault">
<bool>false</bool>
</property>
<property name="default"> <property name="default">
<bool>false</bool> <bool>false</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QPushButton" name="btn_abort">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Abort</string>
</property>
</widget>
</item>
<item> <item>
<widget class="QPushButton" name="btn_back"> <widget class="QPushButton" name="btn_back">
<property name="text"> <property name="text">
<string>Back</string> <string>Back</string>
</property> </property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget> </widget>
</item> </item>
<item> <item>

View File

@ -16,16 +16,16 @@ from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient,
QIcon, QImage, QKeySequence, QLinearGradient, QIcon, QImage, QKeySequence, QLinearGradient,
QPainter, QPalette, QPixmap, QRadialGradient, QPainter, QPalette, QPixmap, QRadialGradient,
QTransform) QTransform)
from PySide6.QtWidgets import (QApplication, QGroupBox, QHBoxLayout, QListView, from PySide6.QtWidgets import (QApplication, QComboBox, QGridLayout, QGroupBox,
QMainWindow, QMenu, QMenuBar, QPushButton, QHBoxLayout, QLabel, QMainWindow, QMenu,
QRadioButton, QSizePolicy, QSpacerItem, QStatusBar, QMenuBar, QPushButton, QRadioButton, QSizePolicy,
QVBoxLayout, QWidget) QSpacerItem, QStatusBar, QVBoxLayout, QWidget)
class Ui_MainWindow(object): class Ui_MainWindow(object):
def setupUi(self, MainWindow): def setupUi(self, MainWindow):
if not MainWindow.objectName(): if not MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow") MainWindow.setObjectName(u"MainWindow")
MainWindow.resize(543, 544) MainWindow.resize(486, 373)
sizePolicy = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed) sizePolicy = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
sizePolicy.setHorizontalStretch(0) sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0) sizePolicy.setVerticalStretch(0)
@ -152,51 +152,126 @@ class Ui_MainWindow(object):
self.verticalLayout_4.addWidget(self.gb_actions) self.verticalLayout_4.addWidget(self.gb_actions)
self.gb_serial = QGroupBox(self.central_widget) self.gb_profile = QGroupBox(self.central_widget)
self.gb_serial.setObjectName(u"gb_serial") self.gb_profile.setObjectName(u"gb_profile")
sizePolicy2 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred) sizePolicy2 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred)
sizePolicy2.setHorizontalStretch(0) sizePolicy2.setHorizontalStretch(0)
sizePolicy2.setVerticalStretch(0) sizePolicy2.setVerticalStretch(0)
sizePolicy2.setHeightForWidth(self.gb_serial.sizePolicy().hasHeightForWidth()) sizePolicy2.setHeightForWidth(self.gb_profile.sizePolicy().hasHeightForWidth())
self.gb_serial.setSizePolicy(sizePolicy2) self.gb_profile.setSizePolicy(sizePolicy2)
self.horizontalLayout_2 = QHBoxLayout(self.gb_serial) self.gridLayout = QGridLayout(self.gb_profile)
self.gridLayout.setObjectName(u"gridLayout")
self.label_2 = QLabel(self.gb_profile)
self.label_2.setObjectName(u"label_2")
self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
self.horizontalLayout_2 = QHBoxLayout()
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2") self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
self.list_view = QListView(self.gb_serial) self.combo_port = QComboBox(self.gb_profile)
self.list_view.setObjectName(u"list_view") self.combo_port.addItem("")
self.list_view.setResizeMode(QListView.ResizeMode.Adjust) self.combo_port.setObjectName(u"combo_port")
sizePolicy3 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Maximum)
sizePolicy3.setHorizontalStretch(0)
sizePolicy3.setVerticalStretch(0)
sizePolicy3.setHeightForWidth(self.combo_port.sizePolicy().hasHeightForWidth())
self.combo_port.setSizePolicy(sizePolicy3)
self.horizontalLayout_2.addWidget(self.list_view) self.horizontalLayout_2.addWidget(self.combo_port)
self.pb_refresh_ports = QPushButton(self.gb_serial) self.pb_refresh_ports = QPushButton(self.gb_profile)
self.pb_refresh_ports.setObjectName(u"pb_refresh_ports") self.pb_refresh_ports.setObjectName(u"pb_refresh_ports")
sizePolicy4 = QSizePolicy(QSizePolicy.Policy.Maximum, QSizePolicy.Policy.Maximum)
sizePolicy4.setHorizontalStretch(0)
sizePolicy4.setVerticalStretch(0)
sizePolicy4.setHeightForWidth(self.pb_refresh_ports.sizePolicy().hasHeightForWidth())
self.pb_refresh_ports.setSizePolicy(sizePolicy4)
icon = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.SystemReboot))
self.pb_refresh_ports.setIcon(icon)
self.horizontalLayout_2.addWidget(self.pb_refresh_ports) self.horizontalLayout_2.addWidget(self.pb_refresh_ports)
self.horizontalLayout_2.setStretch(0, 1)
self.verticalLayout_4.addWidget(self.gb_serial) self.gridLayout.addLayout(self.horizontalLayout_2, 0, 1, 1, 1)
self.label = QLabel(self.gb_profile)
self.label.setObjectName(u"label")
sizePolicy5 = QSizePolicy(QSizePolicy.Policy.Maximum, QSizePolicy.Policy.Minimum)
sizePolicy5.setHorizontalStretch(0)
sizePolicy5.setVerticalStretch(0)
sizePolicy5.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
self.label.setSizePolicy(sizePolicy5)
self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
self.horizontalLayout_5 = QHBoxLayout()
self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
self.combo_profile = QComboBox(self.gb_profile)
self.combo_profile.setObjectName(u"combo_profile")
self.horizontalLayout_5.addWidget(self.combo_profile)
self.pb_add_profile = QPushButton(self.gb_profile)
self.pb_add_profile.setObjectName(u"pb_add_profile")
sizePolicy6 = QSizePolicy(QSizePolicy.Policy.Maximum, QSizePolicy.Policy.Fixed)
sizePolicy6.setHorizontalStretch(0)
sizePolicy6.setVerticalStretch(0)
sizePolicy6.setHeightForWidth(self.pb_add_profile.sizePolicy().hasHeightForWidth())
self.pb_add_profile.setSizePolicy(sizePolicy6)
icon1 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.ListAdd))
self.pb_add_profile.setIcon(icon1)
self.horizontalLayout_5.addWidget(self.pb_add_profile)
self.pb_delete_profile = QPushButton(self.gb_profile)
self.pb_delete_profile.setObjectName(u"pb_delete_profile")
sizePolicy6.setHeightForWidth(self.pb_delete_profile.sizePolicy().hasHeightForWidth())
self.pb_delete_profile.setSizePolicy(sizePolicy6)
icon2 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.ListRemove))
self.pb_delete_profile.setIcon(icon2)
self.horizontalLayout_5.addWidget(self.pb_delete_profile)
self.gridLayout.addLayout(self.horizontalLayout_5, 1, 1, 1, 1)
self.verticalLayout_4.addWidget(self.gb_profile)
self.widget = QWidget(self.central_widget) self.widget = QWidget(self.central_widget)
self.widget.setObjectName(u"widget") self.widget.setObjectName(u"widget")
self.horizontalLayout_3 = QHBoxLayout(self.widget) self.horizontalLayout_3 = QHBoxLayout(self.widget)
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3") self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
self.pb_execute = QPushButton(self.widget) self.verticalSpacer = QSpacerItem(20, 10, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.pb_execute.setObjectName(u"pb_execute")
self.horizontalLayout_3.addWidget(self.pb_execute) self.horizontalLayout_3.addItem(self.verticalSpacer)
self.pb_close = QPushButton(self.widget)
self.pb_close.setObjectName(u"pb_close")
self.horizontalLayout_3.addWidget(self.pb_close)
self.verticalLayout_4.addWidget(self.widget) self.verticalLayout_4.addWidget(self.widget)
self.horizontalLayout_4 = QHBoxLayout()
self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
self.pb_execute = QPushButton(self.central_widget)
self.pb_execute.setObjectName(u"pb_execute")
sizePolicy6.setHeightForWidth(self.pb_execute.sizePolicy().hasHeightForWidth())
self.pb_execute.setSizePolicy(sizePolicy6)
self.horizontalLayout_4.addWidget(self.pb_execute)
self.pb_close = QPushButton(self.central_widget)
self.pb_close.setObjectName(u"pb_close")
sizePolicy6.setHeightForWidth(self.pb_close.sizePolicy().hasHeightForWidth())
self.pb_close.setSizePolicy(sizePolicy6)
self.horizontalLayout_4.addWidget(self.pb_close)
self.verticalLayout_4.addLayout(self.horizontalLayout_4)
MainWindow.setCentralWidget(self.central_widget) MainWindow.setCentralWidget(self.central_widget)
self.menu_bar = QMenuBar(MainWindow) self.menu_bar = QMenuBar(MainWindow)
self.menu_bar.setObjectName(u"menu_bar") self.menu_bar.setObjectName(u"menu_bar")
self.menu_bar.setGeometry(QRect(0, 0, 543, 21)) self.menu_bar.setGeometry(QRect(0, 0, 486, 21))
self.menu_file = QMenu(self.menu_bar) self.menu_file = QMenu(self.menu_bar)
self.menu_file.setObjectName(u"menu_file") self.menu_file.setObjectName(u"menu_file")
MainWindow.setMenuBar(self.menu_bar) MainWindow.setMenuBar(self.menu_bar)
@ -229,8 +304,26 @@ class Ui_MainWindow(object):
self.rb_seek.setText(QCoreApplication.translate("MainWindow", u"Seek Cylinder", None)) self.rb_seek.setText(QCoreApplication.translate("MainWindow", u"Seek Cylinder", None))
self.rb_delays.setText(QCoreApplication.translate("MainWindow", u"Set Delays", None)) self.rb_delays.setText(QCoreApplication.translate("MainWindow", u"Set Delays", None))
self.rb_update_firmware.setText(QCoreApplication.translate("MainWindow", u"Update Firmware", None)) self.rb_update_firmware.setText(QCoreApplication.translate("MainWindow", u"Update Firmware", None))
self.gb_serial.setTitle(QCoreApplication.translate("MainWindow", u"USB Serial Ports", None)) self.gb_profile.setTitle("")
self.pb_refresh_ports.setText(QCoreApplication.translate("MainWindow", u"Refresh", None)) self.label_2.setText(QCoreApplication.translate("MainWindow", u"Profile", None))
self.combo_port.setItemText(0, QCoreApplication.translate("MainWindow", u"Auto", None))
#if QT_CONFIG(tooltip)
self.combo_port.setToolTip(QCoreApplication.translate("MainWindow", u"Available Ports", None))
#endif // QT_CONFIG(tooltip)
#if QT_CONFIG(tooltip)
self.pb_refresh_ports.setToolTip(QCoreApplication.translate("MainWindow", u"Refresh", None))
#endif // QT_CONFIG(tooltip)
self.pb_refresh_ports.setText("")
self.label.setText(QCoreApplication.translate("MainWindow", u"USB Serial Port", None))
#if QT_CONFIG(tooltip)
self.pb_add_profile.setToolTip(QCoreApplication.translate("MainWindow", u"Add new profile", None))
#endif // QT_CONFIG(tooltip)
self.pb_add_profile.setText("")
#if QT_CONFIG(tooltip)
self.pb_delete_profile.setToolTip(QCoreApplication.translate("MainWindow", u"Delete profile", None))
#endif // QT_CONFIG(tooltip)
self.pb_delete_profile.setText("")
self.pb_execute.setText(QCoreApplication.translate("MainWindow", u"Execute", None)) self.pb_execute.setText(QCoreApplication.translate("MainWindow", u"Execute", None))
self.pb_close.setText(QCoreApplication.translate("MainWindow", u"Close", None)) self.pb_close.setText(QCoreApplication.translate("MainWindow", u"Close", None))
self.menu_file.setTitle(QCoreApplication.translate("MainWindow", u"File", None)) self.menu_file.setTitle(QCoreApplication.translate("MainWindow", u"File", None))

View File

@ -25,7 +25,7 @@ class Ui_ReadDialog(object):
def setupUi(self, ReadDialog): def setupUi(self, ReadDialog):
if not ReadDialog.objectName(): if not ReadDialog.objectName():
ReadDialog.setObjectName(u"ReadDialog") ReadDialog.setObjectName(u"ReadDialog")
ReadDialog.resize(685, 710) ReadDialog.resize(743, 832)
ReadDialog.setModal(True) ReadDialog.setModal(True)
self.verticalLayout_5 = QVBoxLayout(ReadDialog) self.verticalLayout_5 = QVBoxLayout(ReadDialog)
self.verticalLayout_5.setObjectName(u"verticalLayout_5") self.verticalLayout_5.setObjectName(u"verticalLayout_5")
@ -408,6 +408,7 @@ class Ui_ReadDialog(object):
self.combo_disktype.addItem("") self.combo_disktype.addItem("")
self.combo_disktype.addItem("") self.combo_disktype.addItem("")
self.combo_disktype.addItem("") self.combo_disktype.addItem("")
self.combo_disktype.addItem("")
self.combo_disktype.setObjectName(u"combo_disktype") self.combo_disktype.setObjectName(u"combo_disktype")
self.gridLayout.addWidget(self.combo_disktype, 1, 1, 1, 1) self.gridLayout.addWidget(self.combo_disktype, 1, 1, 1, 1)
@ -543,6 +544,7 @@ class Ui_ReadDialog(object):
self.combo_format.addItem("") self.combo_format.addItem("")
self.combo_format.addItem("") self.combo_format.addItem("")
self.combo_format.addItem("") self.combo_format.addItem("")
self.combo_format.addItem("")
self.combo_format.setObjectName(u"combo_format") self.combo_format.setObjectName(u"combo_format")
self.gridLayout.addWidget(self.combo_format, 1, 3, 1, 1) self.gridLayout.addWidget(self.combo_format, 1, 3, 1, 1)
@ -601,6 +603,11 @@ class Ui_ReadDialog(object):
self.groupBox_4 = QGroupBox(ReadDialog) self.groupBox_4 = QGroupBox(ReadDialog)
self.groupBox_4.setObjectName(u"groupBox_4") self.groupBox_4.setObjectName(u"groupBox_4")
sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox_4.sizePolicy().hasHeightForWidth())
self.groupBox_4.setSizePolicy(sizePolicy)
self.verticalLayout = QVBoxLayout(self.groupBox_4) self.verticalLayout = QVBoxLayout(self.groupBox_4)
self.verticalLayout.setObjectName(u"verticalLayout") self.verticalLayout.setObjectName(u"verticalLayout")
self.te_command_line = QPlainTextEdit(self.groupBox_4) self.te_command_line = QPlainTextEdit(self.groupBox_4)
@ -617,6 +624,12 @@ class Ui_ReadDialog(object):
self.verticalLayout_3.setObjectName(u"verticalLayout_3") self.verticalLayout_3.setObjectName(u"verticalLayout_3")
self.te_console = QTextEdit(self.groupBox_5) self.te_console = QTextEdit(self.groupBox_5)
self.te_console.setObjectName(u"te_console") self.te_console.setObjectName(u"te_console")
sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
sizePolicy1.setHorizontalStretch(0)
sizePolicy1.setVerticalStretch(0)
sizePolicy1.setHeightForWidth(self.te_console.sizePolicy().hasHeightForWidth())
self.te_console.setSizePolicy(sizePolicy1)
self.te_console.setAcceptDrops(False)
self.te_console.setReadOnly(True) self.te_console.setReadOnly(True)
self.verticalLayout_3.addWidget(self.te_console) self.verticalLayout_3.addWidget(self.te_console)
@ -632,11 +645,19 @@ class Ui_ReadDialog(object):
self.btn_launch = QPushButton(ReadDialog) self.btn_launch = QPushButton(ReadDialog)
self.btn_launch.setObjectName(u"btn_launch") self.btn_launch.setObjectName(u"btn_launch")
self.btn_launch.setAutoDefault(False)
self.horizontalLayout_7.addWidget(self.btn_launch) self.horizontalLayout_7.addWidget(self.btn_launch)
self.btn_abort = QPushButton(ReadDialog)
self.btn_abort.setObjectName(u"btn_abort")
self.btn_abort.setEnabled(False)
self.horizontalLayout_7.addWidget(self.btn_abort)
self.btn_back = QPushButton(ReadDialog) self.btn_back = QPushButton(ReadDialog)
self.btn_back.setObjectName(u"btn_back") self.btn_back.setObjectName(u"btn_back")
self.btn_back.setAutoDefault(False)
self.horizontalLayout_7.addWidget(self.btn_back) self.horizontalLayout_7.addWidget(self.btn_back)
@ -753,180 +774,182 @@ class Ui_ReadDialog(object):
self.btn_suffix_dec.setText("") self.btn_suffix_dec.setText("")
self.cb_inc.setText(QCoreApplication.translate("ReadDialog", u"Auto Inc.", None)) self.cb_inc.setText(QCoreApplication.translate("ReadDialog", u"Auto Inc.", None))
self.label_4.setText(QCoreApplication.translate("ReadDialog", u"Disk Type", None)) self.label_4.setText(QCoreApplication.translate("ReadDialog", u"Disk Type", None))
self.combo_disktype.setItemText(0, QCoreApplication.translate("ReadDialog", u".a2r", None)) self.combo_disktype.setItemText(0, "")
self.combo_disktype.setItemText(1, QCoreApplication.translate("ReadDialog", u".adf", None)) self.combo_disktype.setItemText(1, QCoreApplication.translate("ReadDialog", u".a2r", None))
self.combo_disktype.setItemText(2, QCoreApplication.translate("ReadDialog", u".ads", None)) self.combo_disktype.setItemText(2, QCoreApplication.translate("ReadDialog", u".adf", None))
self.combo_disktype.setItemText(3, QCoreApplication.translate("ReadDialog", u".adm", None)) self.combo_disktype.setItemText(3, QCoreApplication.translate("ReadDialog", u".ads", None))
self.combo_disktype.setItemText(4, QCoreApplication.translate("ReadDialog", u".adl", None)) self.combo_disktype.setItemText(4, QCoreApplication.translate("ReadDialog", u".adm", None))
self.combo_disktype.setItemText(5, QCoreApplication.translate("ReadDialog", u".ctr", None)) self.combo_disktype.setItemText(5, QCoreApplication.translate("ReadDialog", u".adl", None))
self.combo_disktype.setItemText(6, QCoreApplication.translate("ReadDialog", u".d1m", None)) self.combo_disktype.setItemText(6, QCoreApplication.translate("ReadDialog", u".ctr", None))
self.combo_disktype.setItemText(7, QCoreApplication.translate("ReadDialog", u".d2m", None)) self.combo_disktype.setItemText(7, QCoreApplication.translate("ReadDialog", u".d1m", None))
self.combo_disktype.setItemText(8, QCoreApplication.translate("ReadDialog", u".d4m", None)) self.combo_disktype.setItemText(8, QCoreApplication.translate("ReadDialog", u".d2m", None))
self.combo_disktype.setItemText(9, QCoreApplication.translate("ReadDialog", u".d64", None)) self.combo_disktype.setItemText(9, QCoreApplication.translate("ReadDialog", u".d4m", None))
self.combo_disktype.setItemText(10, QCoreApplication.translate("ReadDialog", u".d71", None)) self.combo_disktype.setItemText(10, QCoreApplication.translate("ReadDialog", u".d64", None))
self.combo_disktype.setItemText(11, QCoreApplication.translate("ReadDialog", u".d81", None)) self.combo_disktype.setItemText(11, QCoreApplication.translate("ReadDialog", u".d71", None))
self.combo_disktype.setItemText(12, QCoreApplication.translate("ReadDialog", u".d88", None)) self.combo_disktype.setItemText(12, QCoreApplication.translate("ReadDialog", u".d81", None))
self.combo_disktype.setItemText(13, QCoreApplication.translate("ReadDialog", u".dcp", None)) self.combo_disktype.setItemText(13, QCoreApplication.translate("ReadDialog", u".d88", None))
self.combo_disktype.setItemText(14, QCoreApplication.translate("ReadDialog", u".dim", None)) self.combo_disktype.setItemText(14, QCoreApplication.translate("ReadDialog", u".dcp", None))
self.combo_disktype.setItemText(15, QCoreApplication.translate("ReadDialog", u".dmk", None)) self.combo_disktype.setItemText(15, QCoreApplication.translate("ReadDialog", u".dim", None))
self.combo_disktype.setItemText(16, QCoreApplication.translate("ReadDialog", u".do", None)) self.combo_disktype.setItemText(16, QCoreApplication.translate("ReadDialog", u".dmk", None))
self.combo_disktype.setItemText(17, QCoreApplication.translate("ReadDialog", u".dsd", None)) self.combo_disktype.setItemText(17, QCoreApplication.translate("ReadDialog", u".do", None))
self.combo_disktype.setItemText(18, QCoreApplication.translate("ReadDialog", u".dsk", None)) self.combo_disktype.setItemText(18, QCoreApplication.translate("ReadDialog", u".dsd", None))
self.combo_disktype.setItemText(19, QCoreApplication.translate("ReadDialog", u".edsk", None)) self.combo_disktype.setItemText(19, QCoreApplication.translate("ReadDialog", u".dsk", None))
self.combo_disktype.setItemText(20, QCoreApplication.translate("ReadDialog", u".fd", None)) self.combo_disktype.setItemText(20, QCoreApplication.translate("ReadDialog", u".edsk", None))
self.combo_disktype.setItemText(21, QCoreApplication.translate("ReadDialog", u".fdi", None)) self.combo_disktype.setItemText(21, QCoreApplication.translate("ReadDialog", u".fd", None))
self.combo_disktype.setItemText(22, QCoreApplication.translate("ReadDialog", u".hdm", None)) self.combo_disktype.setItemText(22, QCoreApplication.translate("ReadDialog", u".fdi", None))
self.combo_disktype.setItemText(23, QCoreApplication.translate("ReadDialog", u".hfe", None)) self.combo_disktype.setItemText(23, QCoreApplication.translate("ReadDialog", u".hdm", None))
self.combo_disktype.setItemText(24, QCoreApplication.translate("ReadDialog", u".ima", None)) self.combo_disktype.setItemText(24, QCoreApplication.translate("ReadDialog", u".hfe", None))
self.combo_disktype.setItemText(25, QCoreApplication.translate("ReadDialog", u".img", None)) self.combo_disktype.setItemText(25, QCoreApplication.translate("ReadDialog", u".ima", None))
self.combo_disktype.setItemText(26, QCoreApplication.translate("ReadDialog", u".imd", None)) self.combo_disktype.setItemText(26, QCoreApplication.translate("ReadDialog", u".img", None))
self.combo_disktype.setItemText(27, QCoreApplication.translate("ReadDialog", u".ipf", None)) self.combo_disktype.setItemText(27, QCoreApplication.translate("ReadDialog", u".imd", None))
self.combo_disktype.setItemText(28, QCoreApplication.translate("ReadDialog", u".mgt", None)) self.combo_disktype.setItemText(28, QCoreApplication.translate("ReadDialog", u".ipf", None))
self.combo_disktype.setItemText(29, QCoreApplication.translate("ReadDialog", u".msa", None)) self.combo_disktype.setItemText(29, QCoreApplication.translate("ReadDialog", u".mgt", None))
self.combo_disktype.setItemText(30, QCoreApplication.translate("ReadDialog", u".nfd", None)) self.combo_disktype.setItemText(30, QCoreApplication.translate("ReadDialog", u".msa", None))
self.combo_disktype.setItemText(31, QCoreApplication.translate("ReadDialog", u".nsi", None)) self.combo_disktype.setItemText(31, QCoreApplication.translate("ReadDialog", u".nfd", None))
self.combo_disktype.setItemText(32, QCoreApplication.translate("ReadDialog", u".po", None)) self.combo_disktype.setItemText(32, QCoreApplication.translate("ReadDialog", u".nsi", None))
self.combo_disktype.setItemText(33, QCoreApplication.translate("ReadDialog", u".raw", None)) self.combo_disktype.setItemText(33, QCoreApplication.translate("ReadDialog", u".po", None))
self.combo_disktype.setItemText(34, QCoreApplication.translate("ReadDialog", u".sf7", None)) self.combo_disktype.setItemText(34, QCoreApplication.translate("ReadDialog", u".raw", None))
self.combo_disktype.setItemText(35, QCoreApplication.translate("ReadDialog", u".scp", None)) self.combo_disktype.setItemText(35, QCoreApplication.translate("ReadDialog", u".sf7", None))
self.combo_disktype.setItemText(36, QCoreApplication.translate("ReadDialog", u".ssd", None)) self.combo_disktype.setItemText(36, QCoreApplication.translate("ReadDialog", u".scp", None))
self.combo_disktype.setItemText(37, QCoreApplication.translate("ReadDialog", u".st", None)) self.combo_disktype.setItemText(37, QCoreApplication.translate("ReadDialog", u".ssd", None))
self.combo_disktype.setItemText(38, QCoreApplication.translate("ReadDialog", u".td0", None)) self.combo_disktype.setItemText(38, QCoreApplication.translate("ReadDialog", u".st", None))
self.combo_disktype.setItemText(39, QCoreApplication.translate("ReadDialog", u".xdf", None)) self.combo_disktype.setItemText(39, QCoreApplication.translate("ReadDialog", u".td0", None))
self.combo_disktype.setItemText(40, QCoreApplication.translate("ReadDialog", u".xdf", None))
self.cb_format.setText(QCoreApplication.translate("ReadDialog", u"Format", None)) self.cb_format.setText(QCoreApplication.translate("ReadDialog", u"Format", None))
self.combo_format.setItemText(0, QCoreApplication.translate("ReadDialog", u"acorn.adfs.160", None)) self.combo_format.setItemText(0, "")
self.combo_format.setItemText(1, QCoreApplication.translate("ReadDialog", u"acorn.adfs.1600", None)) self.combo_format.setItemText(1, QCoreApplication.translate("ReadDialog", u"acorn.adfs.160", None))
self.combo_format.setItemText(2, QCoreApplication.translate("ReadDialog", u"acorn.adfs.320", None)) self.combo_format.setItemText(2, QCoreApplication.translate("ReadDialog", u"acorn.adfs.1600", None))
self.combo_format.setItemText(3, QCoreApplication.translate("ReadDialog", u"acorn.adfs.640", None)) self.combo_format.setItemText(3, QCoreApplication.translate("ReadDialog", u"acorn.adfs.320", None))
self.combo_format.setItemText(4, QCoreApplication.translate("ReadDialog", u"acorn.adfs.800", None)) self.combo_format.setItemText(4, QCoreApplication.translate("ReadDialog", u"acorn.adfs.640", None))
self.combo_format.setItemText(5, QCoreApplication.translate("ReadDialog", u"acorn.dfs.ds", None)) self.combo_format.setItemText(5, QCoreApplication.translate("ReadDialog", u"acorn.adfs.800", None))
self.combo_format.setItemText(6, QCoreApplication.translate("ReadDialog", u"acorn.dfs.ds80", None)) self.combo_format.setItemText(6, QCoreApplication.translate("ReadDialog", u"acorn.dfs.ds", None))
self.combo_format.setItemText(7, QCoreApplication.translate("ReadDialog", u"acorn.dfs.ss", None)) self.combo_format.setItemText(7, QCoreApplication.translate("ReadDialog", u"acorn.dfs.ds80", None))
self.combo_format.setItemText(8, QCoreApplication.translate("ReadDialog", u"acorn.dfs.ss80", None)) self.combo_format.setItemText(8, QCoreApplication.translate("ReadDialog", u"acorn.dfs.ss", None))
self.combo_format.setItemText(9, QCoreApplication.translate("ReadDialog", u"akai.1600", None)) self.combo_format.setItemText(9, QCoreApplication.translate("ReadDialog", u"acorn.dfs.ss80", None))
self.combo_format.setItemText(10, QCoreApplication.translate("ReadDialog", u"akai.800", None)) self.combo_format.setItemText(10, QCoreApplication.translate("ReadDialog", u"akai.1600", None))
self.combo_format.setItemText(11, QCoreApplication.translate("ReadDialog", u"amiga.amigados", None)) self.combo_format.setItemText(11, QCoreApplication.translate("ReadDialog", u"akai.800", None))
self.combo_format.setItemText(12, QCoreApplication.translate("ReadDialog", u"amiga.amigados_hd", None)) self.combo_format.setItemText(12, QCoreApplication.translate("ReadDialog", u"amiga.amigados", None))
self.combo_format.setItemText(13, QCoreApplication.translate("ReadDialog", u"apple2.appledos.140", None)) self.combo_format.setItemText(13, QCoreApplication.translate("ReadDialog", u"amiga.amigados_hd", None))
self.combo_format.setItemText(14, QCoreApplication.translate("ReadDialog", u"apple2.nofs.140", None)) self.combo_format.setItemText(14, QCoreApplication.translate("ReadDialog", u"apple2.appledos.140", None))
self.combo_format.setItemText(15, QCoreApplication.translate("ReadDialog", u"apple2.prodos.140", None)) self.combo_format.setItemText(15, QCoreApplication.translate("ReadDialog", u"apple2.nofs.140", None))
self.combo_format.setItemText(16, QCoreApplication.translate("ReadDialog", u"atari.90", None)) self.combo_format.setItemText(16, QCoreApplication.translate("ReadDialog", u"apple2.prodos.140", None))
self.combo_format.setItemText(17, QCoreApplication.translate("ReadDialog", u"atarist.360", None)) self.combo_format.setItemText(17, QCoreApplication.translate("ReadDialog", u"atari.90", None))
self.combo_format.setItemText(18, QCoreApplication.translate("ReadDialog", u"atarist.400", None)) self.combo_format.setItemText(18, QCoreApplication.translate("ReadDialog", u"atarist.360", None))
self.combo_format.setItemText(19, QCoreApplication.translate("ReadDialog", u"atarist.440", None)) self.combo_format.setItemText(19, QCoreApplication.translate("ReadDialog", u"atarist.400", None))
self.combo_format.setItemText(20, QCoreApplication.translate("ReadDialog", u"atarist.720", None)) self.combo_format.setItemText(20, QCoreApplication.translate("ReadDialog", u"atarist.440", None))
self.combo_format.setItemText(21, QCoreApplication.translate("ReadDialog", u"atarist.800", None)) self.combo_format.setItemText(21, QCoreApplication.translate("ReadDialog", u"atarist.720", None))
self.combo_format.setItemText(22, QCoreApplication.translate("ReadDialog", u"atarist.880", None)) self.combo_format.setItemText(22, QCoreApplication.translate("ReadDialog", u"atarist.800", None))
self.combo_format.setItemText(23, QCoreApplication.translate("ReadDialog", u"coco.decb", None)) self.combo_format.setItemText(23, QCoreApplication.translate("ReadDialog", u"atarist.880", None))
self.combo_format.setItemText(24, QCoreApplication.translate("ReadDialog", u"coco.decb.40t", None)) self.combo_format.setItemText(24, QCoreApplication.translate("ReadDialog", u"coco.decb", None))
self.combo_format.setItemText(25, QCoreApplication.translate("ReadDialog", u"coco.os9.40ds", None)) self.combo_format.setItemText(25, QCoreApplication.translate("ReadDialog", u"coco.decb.40t", None))
self.combo_format.setItemText(26, QCoreApplication.translate("ReadDialog", u"coco.os9.40ss", None)) self.combo_format.setItemText(26, QCoreApplication.translate("ReadDialog", u"coco.os9.40ds", None))
self.combo_format.setItemText(27, QCoreApplication.translate("ReadDialog", u"coco.os9.80ds", None)) self.combo_format.setItemText(27, QCoreApplication.translate("ReadDialog", u"coco.os9.40ss", None))
self.combo_format.setItemText(28, QCoreApplication.translate("ReadDialog", u"coco.os9.80ss", None)) self.combo_format.setItemText(28, QCoreApplication.translate("ReadDialog", u"coco.os9.80ds", None))
self.combo_format.setItemText(29, QCoreApplication.translate("ReadDialog", u"commodore.1541", None)) self.combo_format.setItemText(29, QCoreApplication.translate("ReadDialog", u"coco.os9.80ss", None))
self.combo_format.setItemText(30, QCoreApplication.translate("ReadDialog", u"commodore.1571", None)) self.combo_format.setItemText(30, QCoreApplication.translate("ReadDialog", u"commodore.1541", None))
self.combo_format.setItemText(31, QCoreApplication.translate("ReadDialog", u"commodore.1581", None)) self.combo_format.setItemText(31, QCoreApplication.translate("ReadDialog", u"commodore.1571", None))
self.combo_format.setItemText(32, QCoreApplication.translate("ReadDialog", u"commodore.cmd.fd2000.dd", None)) self.combo_format.setItemText(32, QCoreApplication.translate("ReadDialog", u"commodore.1581", None))
self.combo_format.setItemText(33, QCoreApplication.translate("ReadDialog", u"commodore.cmd.fd2000.hd", None)) self.combo_format.setItemText(33, QCoreApplication.translate("ReadDialog", u"commodore.cmd.fd2000.dd", None))
self.combo_format.setItemText(34, QCoreApplication.translate("ReadDialog", u"commodore.cmd.fd4000.ed", None)) self.combo_format.setItemText(34, QCoreApplication.translate("ReadDialog", u"commodore.cmd.fd2000.hd", None))
self.combo_format.setItemText(35, QCoreApplication.translate("ReadDialog", u"dec.rx01", None)) self.combo_format.setItemText(35, QCoreApplication.translate("ReadDialog", u"commodore.cmd.fd4000.ed", None))
self.combo_format.setItemText(36, QCoreApplication.translate("ReadDialog", u"dec.rx02", None)) self.combo_format.setItemText(36, QCoreApplication.translate("ReadDialog", u"dec.rx01", None))
self.combo_format.setItemText(37, QCoreApplication.translate("ReadDialog", u"dragon.40ds", None)) self.combo_format.setItemText(37, QCoreApplication.translate("ReadDialog", u"dec.rx02", None))
self.combo_format.setItemText(38, QCoreApplication.translate("ReadDialog", u"dragon.40ss", None)) self.combo_format.setItemText(38, QCoreApplication.translate("ReadDialog", u"dragon.40ds", None))
self.combo_format.setItemText(39, QCoreApplication.translate("ReadDialog", u"dragon.80ds", None)) self.combo_format.setItemText(39, QCoreApplication.translate("ReadDialog", u"dragon.40ss", None))
self.combo_format.setItemText(40, QCoreApplication.translate("ReadDialog", u"dragon.80ss", None)) self.combo_format.setItemText(40, QCoreApplication.translate("ReadDialog", u"dragon.80ds", None))
self.combo_format.setItemText(41, QCoreApplication.translate("ReadDialog", u"ensoniq.1600", None)) self.combo_format.setItemText(41, QCoreApplication.translate("ReadDialog", u"dragon.80ss", None))
self.combo_format.setItemText(42, QCoreApplication.translate("ReadDialog", u"ensoniq.800", None)) self.combo_format.setItemText(42, QCoreApplication.translate("ReadDialog", u"ensoniq.1600", None))
self.combo_format.setItemText(43, QCoreApplication.translate("ReadDialog", u"ensoniq.mirage", None)) self.combo_format.setItemText(43, QCoreApplication.translate("ReadDialog", u"ensoniq.800", None))
self.combo_format.setItemText(44, QCoreApplication.translate("ReadDialog", u"epson.qx10.320", None)) self.combo_format.setItemText(44, QCoreApplication.translate("ReadDialog", u"ensoniq.mirage", None))
self.combo_format.setItemText(45, QCoreApplication.translate("ReadDialog", u"epson.qx10.396", None)) self.combo_format.setItemText(45, QCoreApplication.translate("ReadDialog", u"epson.qx10.320", None))
self.combo_format.setItemText(46, QCoreApplication.translate("ReadDialog", u"epson.qx10.399", None)) self.combo_format.setItemText(46, QCoreApplication.translate("ReadDialog", u"epson.qx10.396", None))
self.combo_format.setItemText(47, QCoreApplication.translate("ReadDialog", u"epson.qx10.400", None)) self.combo_format.setItemText(47, QCoreApplication.translate("ReadDialog", u"epson.qx10.399", None))
self.combo_format.setItemText(48, QCoreApplication.translate("ReadDialog", u"epson.qx10.booter", None)) self.combo_format.setItemText(48, QCoreApplication.translate("ReadDialog", u"epson.qx10.400", None))
self.combo_format.setItemText(49, QCoreApplication.translate("ReadDialog", u"epson.qx10.logo", None)) self.combo_format.setItemText(49, QCoreApplication.translate("ReadDialog", u"epson.qx10.booter", None))
self.combo_format.setItemText(50, QCoreApplication.translate("ReadDialog", u"gem.1600", None)) self.combo_format.setItemText(50, QCoreApplication.translate("ReadDialog", u"epson.qx10.logo", None))
self.combo_format.setItemText(51, QCoreApplication.translate("ReadDialog", u"hp.mmfm.9885", None)) self.combo_format.setItemText(51, QCoreApplication.translate("ReadDialog", u"gem.1600", None))
self.combo_format.setItemText(52, QCoreApplication.translate("ReadDialog", u"hp.mmfm.9895", None)) self.combo_format.setItemText(52, QCoreApplication.translate("ReadDialog", u"hp.mmfm.9885", None))
self.combo_format.setItemText(53, QCoreApplication.translate("ReadDialog", u"ibm.1200", None)) self.combo_format.setItemText(53, QCoreApplication.translate("ReadDialog", u"hp.mmfm.9895", None))
self.combo_format.setItemText(54, QCoreApplication.translate("ReadDialog", u"ibm.1440", None)) self.combo_format.setItemText(54, QCoreApplication.translate("ReadDialog", u"ibm.1200", None))
self.combo_format.setItemText(55, QCoreApplication.translate("ReadDialog", u"ibm.160", None)) self.combo_format.setItemText(55, QCoreApplication.translate("ReadDialog", u"ibm.1440", None))
self.combo_format.setItemText(56, QCoreApplication.translate("ReadDialog", u"ibm.1680", None)) self.combo_format.setItemText(56, QCoreApplication.translate("ReadDialog", u"ibm.160", None))
self.combo_format.setItemText(57, QCoreApplication.translate("ReadDialog", u"ibm.180", None)) self.combo_format.setItemText(57, QCoreApplication.translate("ReadDialog", u"ibm.1680", None))
self.combo_format.setItemText(58, QCoreApplication.translate("ReadDialog", u"ibm.2880", None)) self.combo_format.setItemText(58, QCoreApplication.translate("ReadDialog", u"ibm.180", None))
self.combo_format.setItemText(59, QCoreApplication.translate("ReadDialog", u"ibm.320", None)) self.combo_format.setItemText(59, QCoreApplication.translate("ReadDialog", u"ibm.2880", None))
self.combo_format.setItemText(60, QCoreApplication.translate("ReadDialog", u"ibm.360", None)) self.combo_format.setItemText(60, QCoreApplication.translate("ReadDialog", u"ibm.320", None))
self.combo_format.setItemText(61, QCoreApplication.translate("ReadDialog", u"ibm.720", None)) self.combo_format.setItemText(61, QCoreApplication.translate("ReadDialog", u"ibm.360", None))
self.combo_format.setItemText(62, QCoreApplication.translate("ReadDialog", u"ibm.800", None)) self.combo_format.setItemText(62, QCoreApplication.translate("ReadDialog", u"ibm.720", None))
self.combo_format.setItemText(63, QCoreApplication.translate("ReadDialog", u"ibm.dmf", None)) self.combo_format.setItemText(63, QCoreApplication.translate("ReadDialog", u"ibm.800", None))
self.combo_format.setItemText(64, QCoreApplication.translate("ReadDialog", u"ibm.scan", None)) self.combo_format.setItemText(64, QCoreApplication.translate("ReadDialog", u"ibm.dmf", None))
self.combo_format.setItemText(65, QCoreApplication.translate("ReadDialog", u"mac.400", None)) self.combo_format.setItemText(65, QCoreApplication.translate("ReadDialog", u"ibm.scan", None))
self.combo_format.setItemText(66, QCoreApplication.translate("ReadDialog", u"mac.800", None)) self.combo_format.setItemText(66, QCoreApplication.translate("ReadDialog", u"mac.400", None))
self.combo_format.setItemText(67, QCoreApplication.translate("ReadDialog", u"micropolis.100tpi.ds", None)) self.combo_format.setItemText(67, QCoreApplication.translate("ReadDialog", u"mac.800", None))
self.combo_format.setItemText(68, QCoreApplication.translate("ReadDialog", u"micropolis.100tpi.ds.275", None)) self.combo_format.setItemText(68, QCoreApplication.translate("ReadDialog", u"micropolis.100tpi.ds", None))
self.combo_format.setItemText(69, QCoreApplication.translate("ReadDialog", u"micropolis.100tpi.ss", None)) self.combo_format.setItemText(69, QCoreApplication.translate("ReadDialog", u"micropolis.100tpi.ds.275", None))
self.combo_format.setItemText(70, QCoreApplication.translate("ReadDialog", u"micropolis.100tpi.ss.275", None)) self.combo_format.setItemText(70, QCoreApplication.translate("ReadDialog", u"micropolis.100tpi.ss", None))
self.combo_format.setItemText(71, QCoreApplication.translate("ReadDialog", u"micropolis.48tpi.ds", None)) self.combo_format.setItemText(71, QCoreApplication.translate("ReadDialog", u"micropolis.100tpi.ss.275", None))
self.combo_format.setItemText(72, QCoreApplication.translate("ReadDialog", u"micropolis.48tpi.ds.275", None)) self.combo_format.setItemText(72, QCoreApplication.translate("ReadDialog", u"micropolis.48tpi.ds", None))
self.combo_format.setItemText(73, QCoreApplication.translate("ReadDialog", u"micropolis.48tpi.ss", None)) self.combo_format.setItemText(73, QCoreApplication.translate("ReadDialog", u"micropolis.48tpi.ds.275", None))
self.combo_format.setItemText(74, QCoreApplication.translate("ReadDialog", u"micropolis.48tpi.ss.275", None)) self.combo_format.setItemText(74, QCoreApplication.translate("ReadDialog", u"micropolis.48tpi.ss", None))
self.combo_format.setItemText(75, QCoreApplication.translate("ReadDialog", u"mm1.os9.80dshd_32", None)) self.combo_format.setItemText(75, QCoreApplication.translate("ReadDialog", u"micropolis.48tpi.ss.275", None))
self.combo_format.setItemText(76, QCoreApplication.translate("ReadDialog", u"mm1.os9.80dshd_33", None)) self.combo_format.setItemText(76, QCoreApplication.translate("ReadDialog", u"mm1.os9.80dshd_32", None))
self.combo_format.setItemText(77, QCoreApplication.translate("ReadDialog", u"mm1.os9.80dshd_36", None)) self.combo_format.setItemText(77, QCoreApplication.translate("ReadDialog", u"mm1.os9.80dshd_33", None))
self.combo_format.setItemText(78, QCoreApplication.translate("ReadDialog", u"mm1.os9.80dshd_37", None)) self.combo_format.setItemText(78, QCoreApplication.translate("ReadDialog", u"mm1.os9.80dshd_36", None))
self.combo_format.setItemText(79, QCoreApplication.translate("ReadDialog", u"msx.1d", None)) self.combo_format.setItemText(79, QCoreApplication.translate("ReadDialog", u"mm1.os9.80dshd_37", None))
self.combo_format.setItemText(80, QCoreApplication.translate("ReadDialog", u"msx.1dd", None)) self.combo_format.setItemText(80, QCoreApplication.translate("ReadDialog", u"msx.1d", None))
self.combo_format.setItemText(81, QCoreApplication.translate("ReadDialog", u"msx.2d", None)) self.combo_format.setItemText(81, QCoreApplication.translate("ReadDialog", u"msx.1dd", None))
self.combo_format.setItemText(82, QCoreApplication.translate("ReadDialog", u"msx.2dd", None)) self.combo_format.setItemText(82, QCoreApplication.translate("ReadDialog", u"msx.2d", None))
self.combo_format.setItemText(83, QCoreApplication.translate("ReadDialog", u"northstar.fm.ds", None)) self.combo_format.setItemText(83, QCoreApplication.translate("ReadDialog", u"msx.2dd", None))
self.combo_format.setItemText(84, QCoreApplication.translate("ReadDialog", u"northstar.fm.ss", None)) self.combo_format.setItemText(84, QCoreApplication.translate("ReadDialog", u"northstar.fm.ds", None))
self.combo_format.setItemText(85, QCoreApplication.translate("ReadDialog", u"northstar.mfm.ds", None)) self.combo_format.setItemText(85, QCoreApplication.translate("ReadDialog", u"northstar.fm.ss", None))
self.combo_format.setItemText(86, QCoreApplication.translate("ReadDialog", u"northstar.mfm.ss", None)) self.combo_format.setItemText(86, QCoreApplication.translate("ReadDialog", u"northstar.mfm.ds", None))
self.combo_format.setItemText(87, QCoreApplication.translate("ReadDialog", u"occ1.dd", None)) self.combo_format.setItemText(87, QCoreApplication.translate("ReadDialog", u"northstar.mfm.ss", None))
self.combo_format.setItemText(88, QCoreApplication.translate("ReadDialog", u"occ1.sd", None)) self.combo_format.setItemText(88, QCoreApplication.translate("ReadDialog", u"occ1.dd", None))
self.combo_format.setItemText(89, QCoreApplication.translate("ReadDialog", u"olivetti.m20", None)) self.combo_format.setItemText(89, QCoreApplication.translate("ReadDialog", u"occ1.sd", None))
self.combo_format.setItemText(90, QCoreApplication.translate("ReadDialog", u"pc98.2d", None)) self.combo_format.setItemText(90, QCoreApplication.translate("ReadDialog", u"olivetti.m20", None))
self.combo_format.setItemText(91, QCoreApplication.translate("ReadDialog", u"pc98.2dd", None)) self.combo_format.setItemText(91, QCoreApplication.translate("ReadDialog", u"pc98.2d", None))
self.combo_format.setItemText(92, QCoreApplication.translate("ReadDialog", u"pc98.2hd", None)) self.combo_format.setItemText(92, QCoreApplication.translate("ReadDialog", u"pc98.2dd", None))
self.combo_format.setItemText(93, QCoreApplication.translate("ReadDialog", u"pc98.2hs", None)) self.combo_format.setItemText(93, QCoreApplication.translate("ReadDialog", u"pc98.2hd", None))
self.combo_format.setItemText(94, QCoreApplication.translate("ReadDialog", u"pc98.n88basic.hd", None)) self.combo_format.setItemText(94, QCoreApplication.translate("ReadDialog", u"pc98.2hs", None))
self.combo_format.setItemText(95, QCoreApplication.translate("ReadDialog", u"raw.125", None)) self.combo_format.setItemText(95, QCoreApplication.translate("ReadDialog", u"pc98.n88basic.hd", None))
self.combo_format.setItemText(96, QCoreApplication.translate("ReadDialog", u"raw.250", None)) self.combo_format.setItemText(96, QCoreApplication.translate("ReadDialog", u"raw.125", None))
self.combo_format.setItemText(97, QCoreApplication.translate("ReadDialog", u"raw.500", None)) self.combo_format.setItemText(97, QCoreApplication.translate("ReadDialog", u"raw.250", None))
self.combo_format.setItemText(98, QCoreApplication.translate("ReadDialog", u"sci.prophet", None)) self.combo_format.setItemText(98, QCoreApplication.translate("ReadDialog", u"raw.500", None))
self.combo_format.setItemText(99, QCoreApplication.translate("ReadDialog", u"sega.sf7000", None)) self.combo_format.setItemText(99, QCoreApplication.translate("ReadDialog", u"sci.prophet", None))
self.combo_format.setItemText(100, QCoreApplication.translate("ReadDialog", u"thomson.1s160", None)) self.combo_format.setItemText(100, QCoreApplication.translate("ReadDialog", u"sega.sf7000", None))
self.combo_format.setItemText(101, QCoreApplication.translate("ReadDialog", u"thomson.1s320", None)) self.combo_format.setItemText(101, QCoreApplication.translate("ReadDialog", u"thomson.1s160", None))
self.combo_format.setItemText(102, QCoreApplication.translate("ReadDialog", u"thomson.1s80", None)) self.combo_format.setItemText(102, QCoreApplication.translate("ReadDialog", u"thomson.1s320", None))
self.combo_format.setItemText(103, QCoreApplication.translate("ReadDialog", u"thomson.2s160", None)) self.combo_format.setItemText(103, QCoreApplication.translate("ReadDialog", u"thomson.1s80", None))
self.combo_format.setItemText(104, QCoreApplication.translate("ReadDialog", u"thomson.2s320", None)) self.combo_format.setItemText(104, QCoreApplication.translate("ReadDialog", u"thomson.2s160", None))
self.combo_format.setItemText(105, QCoreApplication.translate("ReadDialog", u"tsc.flex.dsdd", None)) self.combo_format.setItemText(105, QCoreApplication.translate("ReadDialog", u"thomson.2s320", None))
self.combo_format.setItemText(106, QCoreApplication.translate("ReadDialog", u"tsc.flex.ssdd", None)) self.combo_format.setItemText(106, QCoreApplication.translate("ReadDialog", u"tsc.flex.dsdd", None))
self.combo_format.setItemText(107, QCoreApplication.translate("ReadDialog", u"zx.3dos.ds80", None)) self.combo_format.setItemText(107, QCoreApplication.translate("ReadDialog", u"tsc.flex.ssdd", None))
self.combo_format.setItemText(108, QCoreApplication.translate("ReadDialog", u"zx.3dos.ss40", None)) self.combo_format.setItemText(108, QCoreApplication.translate("ReadDialog", u"zx.3dos.ds80", None))
self.combo_format.setItemText(109, QCoreApplication.translate("ReadDialog", u"zx.d80.ds80", None)) self.combo_format.setItemText(109, QCoreApplication.translate("ReadDialog", u"zx.3dos.ss40", None))
self.combo_format.setItemText(110, QCoreApplication.translate("ReadDialog", u"zx.fdd3000.ds80", None)) self.combo_format.setItemText(110, QCoreApplication.translate("ReadDialog", u"zx.d80.ds80", None))
self.combo_format.setItemText(111, QCoreApplication.translate("ReadDialog", u"zx.fdd3000.ss40", None)) self.combo_format.setItemText(111, QCoreApplication.translate("ReadDialog", u"zx.fdd3000.ds80", None))
self.combo_format.setItemText(112, QCoreApplication.translate("ReadDialog", u"zx.kempston.ds80", None)) self.combo_format.setItemText(112, QCoreApplication.translate("ReadDialog", u"zx.fdd3000.ss40", None))
self.combo_format.setItemText(113, QCoreApplication.translate("ReadDialog", u"zx.kempston.ss40", None)) self.combo_format.setItemText(113, QCoreApplication.translate("ReadDialog", u"zx.kempston.ds80", None))
self.combo_format.setItemText(114, QCoreApplication.translate("ReadDialog", u"zx.opus.ds80", None)) self.combo_format.setItemText(114, QCoreApplication.translate("ReadDialog", u"zx.kempston.ss40", None))
self.combo_format.setItemText(115, QCoreApplication.translate("ReadDialog", u"zx.opus.ss40", None)) self.combo_format.setItemText(115, QCoreApplication.translate("ReadDialog", u"zx.opus.ds80", None))
self.combo_format.setItemText(116, QCoreApplication.translate("ReadDialog", u"zx.plusd.ds80", None)) self.combo_format.setItemText(116, QCoreApplication.translate("ReadDialog", u"zx.opus.ss40", None))
self.combo_format.setItemText(117, QCoreApplication.translate("ReadDialog", u"zx.quorum.ds80", None)) self.combo_format.setItemText(117, QCoreApplication.translate("ReadDialog", u"zx.plusd.ds80", None))
self.combo_format.setItemText(118, QCoreApplication.translate("ReadDialog", u"zx.rocky.ds80", None)) self.combo_format.setItemText(118, QCoreApplication.translate("ReadDialog", u"zx.quorum.ds80", None))
self.combo_format.setItemText(119, QCoreApplication.translate("ReadDialog", u"zx.rocky.ss40", None)) self.combo_format.setItemText(119, QCoreApplication.translate("ReadDialog", u"zx.rocky.ds80", None))
self.combo_format.setItemText(120, QCoreApplication.translate("ReadDialog", u"zx.trdos.ds80", None)) self.combo_format.setItemText(120, QCoreApplication.translate("ReadDialog", u"zx.rocky.ss40", None))
self.combo_format.setItemText(121, QCoreApplication.translate("ReadDialog", u"zx.turbodrive.ds40", None)) self.combo_format.setItemText(121, QCoreApplication.translate("ReadDialog", u"zx.trdos.ds80", None))
self.combo_format.setItemText(122, QCoreApplication.translate("ReadDialog", u"zx.turbodrive.ds80", None)) self.combo_format.setItemText(122, QCoreApplication.translate("ReadDialog", u"zx.turbodrive.ds40", None))
self.combo_format.setItemText(123, QCoreApplication.translate("ReadDialog", u"zx.watford.ds80", None)) self.combo_format.setItemText(123, QCoreApplication.translate("ReadDialog", u"zx.turbodrive.ds80", None))
self.combo_format.setItemText(124, QCoreApplication.translate("ReadDialog", u"zx.watford.ss40", None)) self.combo_format.setItemText(124, QCoreApplication.translate("ReadDialog", u"zx.watford.ds80", None))
self.combo_format.setItemText(125, QCoreApplication.translate("ReadDialog", u"zx.watford.ss40", None))
self.label_8.setText(QCoreApplication.translate("ReadDialog", u"File Path", None)) self.label_8.setText(QCoreApplication.translate("ReadDialog", u"File Path", None))
self.btn_path_select.setText("") self.btn_path_select.setText("")
self.label_7.setText(QCoreApplication.translate("ReadDialog", u"Filename", None)) self.label_7.setText(QCoreApplication.translate("ReadDialog", u"Filename", None))
self.btn_file_select.setText("") self.btn_file_select.setText("")
self.groupBox_4.setTitle(QCoreApplication.translate("ReadDialog", u"Command Line", None)) self.groupBox_4.setTitle(QCoreApplication.translate("ReadDialog", u"Command Line", None))
self.te_command_line.setPlainText(QCoreApplication.translate("ReadDialog", u"gw.exe read --device=COM3 \"C:\\Users\\Rainer\\Downloads\\GreaseweazleGUI-v2.127\\mydisk.scp\"", None)) self.te_command_line.setPlainText("")
self.groupBox_5.setTitle("") self.groupBox_5.setTitle("")
self.te_console.setHtml(QCoreApplication.translate("ReadDialog", u"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" self.te_console.setHtml(QCoreApplication.translate("ReadDialog", u"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><meta charset=\"utf-8\" /><style type=\"text/css\">\n" "<html><head><meta name=\"qrichtext\" content=\"1\" /><meta charset=\"utf-8\" /><style type=\"text/css\">\n"
@ -935,8 +958,9 @@ class Ui_ReadDialog(object):
"li.unchecked::marker { content: \"\\2610\"; }\n" "li.unchecked::marker { content: \"\\2610\"; }\n"
"li.checked::marker { content: \"\\2612\"; }\n" "li.checked::marker { content: \"\\2612\"; }\n"
"</style></head><body style=\" font-family:'Fira Sans'; font-size:10pt; font-weight:400; font-style:normal;\">\n" "</style></head><body style=\" font-family:'Fira Sans'; font-size:10pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:'Segoe UI'; font-size:9pt;\">Using CMD Console mode</span></p></body></html>", None)) "<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>", None))
self.btn_launch.setText(QCoreApplication.translate("ReadDialog", u"Launch", None)) self.btn_launch.setText(QCoreApplication.translate("ReadDialog", u"Launch", None))
self.btn_abort.setText(QCoreApplication.translate("ReadDialog", u"Abort", None))
self.btn_back.setText(QCoreApplication.translate("ReadDialog", u"Back", None)) self.btn_back.setText(QCoreApplication.translate("ReadDialog", u"Back", None))
# retranslateUi # retranslateUi