diff --git a/gw.sh b/gw.sh
new file mode 100755
index 0000000..5d448a8
--- /dev/null
+++ b/gw.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+gw $*
diff --git a/live_output.py b/live_output.py
new file mode 100644
index 0000000..ac0cd20
--- /dev/null
+++ b/live_output.py
@@ -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}")
diff --git a/main.py b/main.py
index 24aa6ee..1cde450 100644
--- a/main.py
+++ b/main.py
@@ -1,4 +1,4 @@
-import sys
+import sys, glob, json, os
from PySide6 import QtWidgets
from PySide6.QtWidgets import (
QApplication,
@@ -10,10 +10,10 @@ from PySide6.QtWidgets import (
QHBoxLayout,
QLabel,
QFileDialog,
+ QInputDialog,
+ QMessageBox,
)
from PySide6.QtCore import Slot
-import json
-import os
from readdisk import ReadDiskWindow
from ui_main_window import Ui_MainWindow
from ui_read_disk import Ui_ReadDialog
@@ -23,7 +23,7 @@ class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
- self.settings = {}
+ self.settings = self.get_defaults()
# Create an instance of the UI class
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_delays, 12)
self.logical_button_group.addButton(self.ui.rb_update_firmware, 13)
+ self.profile = "GWUIDefault"
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.pb_close.clicked.connect(self.close)
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()
def on_execute(self):
read_disk_window = ReadDiskWindow()
- if self.load_settings("settings.json"):
- read_disk_window.set_settings(self.settings)
+ # read_disk_window.set_port(self.ui.combo_port.currentText())
+ read_disk_window.set_settings(self.settings)
read_disk_window.exec()
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):
- if file_name:
- if os.path.exists(file_name):
- with open(file_name, 'r') as f:
+ def load_settings(self, profile_name: str):
+ config_path = self.get_config_path(profile_name)
+ if profile_name:
+ if os.path.exists(config_path):
+ with open(config_path, 'r') as f:
self.settings = json.load(f)
return True
return False
- def save_settings(self, file_name):
- if file_name:
- with open(file_name, 'w') as f:
+ def save_settings(self, profile_name: str):
+ config_path = self.get_config_path(profile_name)
+ if profile_name:
+ with open(config_path, 'w') as f:
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__":
app = QtWidgets.QApplication(sys.argv)
diff --git a/readdisk.py b/readdisk.py
index 43b7164..a3853af 100644
--- a/readdisk.py
+++ b/readdisk.py
@@ -1,6 +1,6 @@
import sys, os, subprocess
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
# Import the generated UI class from the ui_form.py file
from ui_read_disk import Ui_ReadDialog
@@ -16,13 +16,11 @@ class ReadDiskWindow(QDialog):
self.flippy_type_group = QButtonGroup(self)
self.flippy_type_group.addButton(self.ui.rb_panasonic, 1)
self.flippy_type_group.addButton(self.ui.rb_teac, 2)
-
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_low, 2)
# --- 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_double_step.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_suffix.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_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.btn_file_select.clicked.connect(self.on_btn_file_select_clicked)
self.ui.cb_format.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_back.clicked.connect(self.reject)
+ self.ui.btn_path_select.clicked.connect(self.on_btn_path_select_clicked)
# Initialize command attribute
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:
- # Increments or decrements the numeric value in the suffix text field.
+ """Increment or decrement the numeric value in the suffix text field."""
try:
current_value = int(self.ui.le_suffix.text())
current_value = current_value + inc
except ValueError:
current_value = 0
-
self.ui.le_suffix.setText(str(current_value))
@Slot()
- def on_btn_suffix_inc_clicked(self):
+ def on_btn_suffix_inc_clicked(self) -> None:
self.calc_suffix(1)
@Slot()
- def on_btn_suffix_dec_clicked(self):
+ def on_btn_suffix_dec_clicked(self) -> None:
self.calc_suffix(-1)
@Slot()
- def on_btn_file_select_clicked(self):
- file, ok = QFileDialog.getOpenFileName(self, "Select File", self.ui.le_filepath.text())
-
- if file == "":
+ def on_btn_file_select_clicked(self) -> None:
+ file, _ = QFileDialog.getOpenFileName(self, "Select File", self.ui.le_filepath.text())
+ if not file:
return
-
file_path, file_name = os.path.split(file)
name, extension = os.path.splitext(file_name)
-
self.ui.le_filepath.setText(file_path)
self.ui.le_fileprefix.setText(name)
self.ui.le_suffix.setText("")
@@ -113,29 +108,22 @@ class ReadDiskWindow(QDialog):
self.on_update_settings()
@Slot()
- def on_btn_path_select_clicked(self):
+ def on_btn_path_select_clicked(self) -> None:
path = QFileDialog.getExistingDirectory(self, "Select Folder")
- self.ui.le_filepath.setText(path)
- self.on_update_settings()
+ if path:
+ self.ui.le_filepath.setText(path)
+ self.on_update_settings()
@Slot()
- def on_launch(self):
- try:
- completed = subprocess.run(self.command, check=True)
- except FileNotFoundError as e:
- QMessageBox.critical(self, "Error", f"Command not found: {e}")
- except subprocess.CalledProcessError as e:
- QMessageBox.critical(self, "Error", f"Failed to launch command: {e}")
+ def on_cb_fake_index_toggled(self, checked: bool) -> None:
+ """Enables or disables the Fake Index widgets."""
+ self.ui.le_fake_index.setEnabled(checked)
+ self.ui.combo_fake_index.setEnabled(checked)
+ self.on_update_settings()
- if self.ui.cb_inc.isChecked():
- self.calc_suffix(1)
-
- 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 = {
+ def get_settings(self) -> dict:
+ """Gather all settings from the UI into a dictionary."""
+ return {
"fileprefix": self.ui.le_fileprefix.text(),
"filepath": self.ui.le_filepath.text(),
"double_step_enabled": self.ui.cb_double_step.isChecked(),
@@ -170,7 +158,7 @@ class ReadDiskWindow(QDialog):
"pin2_low": self.ui.rb_pin2_low.isChecked(),
"flippy_enabled": self.ui.cb_flippy.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_value": self.ui.le_adjust_speed.text(),
"adjust_speed_unit": self.ui.combo_adjust_speed.currentText(),
@@ -181,9 +169,8 @@ class ReadDiskWindow(QDialog):
"disktype_value": self.ui.combo_disktype.currentText(),
}
- return settings
-
- def set_settings(self, settings):
+ def set_settings(self, settings: dict) -> None:
+ """Apply a settings dictionary to the UI."""
self.ui.le_fileprefix.setText(settings.get("fileprefix", ""))
self.ui.le_filepath.setText(settings.get("filepath", ""))
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_disktype.setCurrentText(settings.get("disktype_value", ""))
# 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()
- drive = ""
- bitrate = ""
- legacy_ss = ""
- revs = ""
- retries = ""
- fake_index = ""
+ drive = f"--drive={self.ui.combo_drive_select.currentText()}" if self.ui.cb_drive_select.isChecked() else ""
+ bitrate = f"::bitrate={self.ui.le_bitrate.text()}" if self.ui.cb_bitrate.isChecked() else ""
+ legacy_ss = "::legacy_ss" if self.ui.cb_ss_legacy.isChecked() else ""
+ revs = f"--revs={self.ui.le_revs.text()}" if self.ui.cb_revs.isChecked() else ""
+ retries = f"--retries={self.ui.le_retries.text()}" if self.ui.cb_retries.isChecked() else ""
+ 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 = ""
- 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():
- pll = "--pll=period=" + self.ui.le_period.text() + ":phase=m" + self.ui.le_phase.text()
-
- if self.ui.le_lowpass.text() != "":
- pll = pll + ":lowpass=" + self.ui.le_lowpass.text()
-
- # --tracks combines multiple settings into a single argument
- if self.ui.cb_double_step.isChecked():
- tracks = "step=" + self.ui.le_double_step.text()
-
- 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"
-
+ pll = f"--pll=period={self.ui.le_period.text()}:phase={self.ui.le_phase.text()}"
+ if self.ui.le_lowpass.text():
+ pll += f":lowpass={self.ui.le_lowpass.text()}"
+ tracks = self._build_tracks()
+ reverse = "--reverse" if self.ui.cb_rev_track_data.isChecked() else ""
+ hard_sectors = "--hard-sectors" if self.ui.cb_hard_sectors.isChecked() else ""
+ no_clobber = "--no-clobber" if self.ui.cb_no_clobber.isChecked() else ""
+ densel = ""
if self.ui.cb_pin2.isChecked():
- if self.ui.rb_pin2_high.isChecked():
- densel = "--densel H"
- else:
- densel = "--densel L"
-
- 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
-
+ densel = "--densel H" if self.ui.rb_pin2_high.isChecked() else "--densel L"
+ raw = "--raw" if self.ui.cb_raw.isChecked() 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 ""
+ suffix = f"-{self.ui.le_suffix.text()}" if self.ui.le_suffix.text() else ""
filepath = self.ui.le_filepath.text()
-
disktype = self.ui.combo_disktype.currentText()
- generated_filename = fileprefix + suffix + disktype
- filename = os.path.join(filepath, generated_filename) + bitrate + legacy_ss
-
- self.command = [
+ format = f"--format={self.ui.combo_format.currentText()}" if self.ui.combo_format.currentText() else ""
+ generated_filename = f"{fileprefix}{suffix}{disktype}"
+ filename = os.path.join(filepath, generated_filename) + legacy_ss + bitrate
+ device = f"--device={self.device}" if self.device and self.device != "Auto" else ""
+ command = [
item for item in [
- "gw", "read", tracks, revs, drive, densel,
- adjust_speed, no_clobber, raw, reverse,
+ "./gw.sh", "read", tracks, revs, device, drive, densel,
+ format, adjust_speed, no_clobber, raw, reverse,
hard_sectors, fake_index, pll, retries, filename
] 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.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)
diff --git a/screenshots/banner2.jpg b/screenshots/banner2.jpg
new file mode 100644
index 0000000..5c72dd2
Binary files /dev/null and b/screenshots/banner2.jpg differ
diff --git a/settings.json.old b/settings.json.old
new file mode 100644
index 0000000..b2ad31b
--- /dev/null
+++ b/settings.json.old
@@ -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"
+}
\ No newline at end of file
diff --git a/ui/1 b/ui/1
new file mode 100644
index 0000000..9e47290
--- /dev/null
+++ b/ui/1
@@ -0,0 +1,2 @@
+qt.pysideplugin: Environment variable PYSIDE_DESIGNER_PLUGINS is not set, bailing out.
+qt.pysideplugin: No instance of QPyDesignerCustomWidgetCollection was found.
diff --git a/ui/mainwindow.ui b/ui/mainwindow.ui
index bb9ffbe..e9e8d3e 100644
--- a/ui/mainwindow.ui
+++ b/ui/mainwindow.ui
@@ -6,8 +6,8 @@
0
0
- 543
- 544
+ 486
+ 373
@@ -205,7 +205,7 @@
-
-
+
0
@@ -213,23 +213,115 @@
- USB Serial Ports
+
-
-
-
-
-
- QListView::ResizeMode::Adjust
+
+
-
+
+
+ Profile
- -
-
+
-
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ Available Ports
+
+
-
+
+ Auto
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Refresh
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
- Refresh
+ USB Serial Port
+ -
+
+
-
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Add new profile
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Delete profile
+
+
+
+
+
+
+
+
+
+
+
@@ -237,22 +329,51 @@
-
-
-
- Execute
+
+
+ Qt::Orientation::Vertical
-
-
- -
-
-
- Close
+
+
+ 20
+ 10
+
-
+
+ -
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ Execute
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Close
+
+
+
+
+
diff --git a/ui/readdisk.ui b/ui/readdisk.ui
index a7d088c..05cba24 100644
--- a/ui/readdisk.ui
+++ b/ui/readdisk.ui
@@ -6,8 +6,8 @@
0
0
- 685
- 710
+ 743
+ 832
@@ -572,6 +572,11 @@
-
+
-
+
+
+
+
-
.a2r
@@ -783,6 +788,11 @@
-
+
-
+
+
+
+
-
acorn.adfs.160
@@ -1489,6 +1499,12 @@
-
+
+
+ 0
+ 0
+
+
Command Line
@@ -1496,7 +1512,7 @@
-
- gw.exe read --device=COM3 "C:\Users\Rainer\Downloads\GreaseweazleGUI-v2.127\mydisk.scp"
+
@@ -1511,6 +1527,15 @@
-
+
+
+ 0
+ 0
+
+
+
+ false
+
true
@@ -1522,7 +1547,7 @@ hr { height: 1px; border-width: 0; }
li.unchecked::marker { content: "\2610"; }
li.checked::marker { content: "\2612"; }
</style></head><body style=" font-family:'Fira Sans'; font-size:10pt; font-weight:400; font-style:normal;">
-<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>
+<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>
@@ -1549,16 +1574,32 @@ li.checked::marker { content: "\2612"; }
Launch
+
+ false
+
false
+ -
+
+
+ false
+
+
+ Abort
+
+
+
-
Back
+
+ false
+
-
diff --git a/ui_main_window.py b/ui_main_window.py
index aa6ffc2..ad575f8 100644
--- a/ui_main_window.py
+++ b/ui_main_window.py
@@ -16,16 +16,16 @@ from PySide6.QtGui import (QAction, QBrush, QColor, QConicalGradient,
QIcon, QImage, QKeySequence, QLinearGradient,
QPainter, QPalette, QPixmap, QRadialGradient,
QTransform)
-from PySide6.QtWidgets import (QApplication, QGroupBox, QHBoxLayout, QListView,
- QMainWindow, QMenu, QMenuBar, QPushButton,
- QRadioButton, QSizePolicy, QSpacerItem, QStatusBar,
- QVBoxLayout, QWidget)
+from PySide6.QtWidgets import (QApplication, QComboBox, QGridLayout, QGroupBox,
+ QHBoxLayout, QLabel, QMainWindow, QMenu,
+ QMenuBar, QPushButton, QRadioButton, QSizePolicy,
+ QSpacerItem, QStatusBar, QVBoxLayout, QWidget)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
if not MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow")
- MainWindow.resize(543, 544)
+ MainWindow.resize(486, 373)
sizePolicy = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
@@ -152,51 +152,126 @@ class Ui_MainWindow(object):
self.verticalLayout_4.addWidget(self.gb_actions)
- self.gb_serial = QGroupBox(self.central_widget)
- self.gb_serial.setObjectName(u"gb_serial")
+ self.gb_profile = QGroupBox(self.central_widget)
+ self.gb_profile.setObjectName(u"gb_profile")
sizePolicy2 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Preferred)
sizePolicy2.setHorizontalStretch(0)
sizePolicy2.setVerticalStretch(0)
- sizePolicy2.setHeightForWidth(self.gb_serial.sizePolicy().hasHeightForWidth())
- self.gb_serial.setSizePolicy(sizePolicy2)
- self.horizontalLayout_2 = QHBoxLayout(self.gb_serial)
+ sizePolicy2.setHeightForWidth(self.gb_profile.sizePolicy().hasHeightForWidth())
+ self.gb_profile.setSizePolicy(sizePolicy2)
+ 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.list_view = QListView(self.gb_serial)
- self.list_view.setObjectName(u"list_view")
- self.list_view.setResizeMode(QListView.ResizeMode.Adjust)
+ self.combo_port = QComboBox(self.gb_profile)
+ self.combo_port.addItem("")
+ 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")
+ 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.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.setObjectName(u"widget")
self.horizontalLayout_3 = QHBoxLayout(self.widget)
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
- self.pb_execute = QPushButton(self.widget)
- self.pb_execute.setObjectName(u"pb_execute")
+ self.verticalSpacer = QSpacerItem(20, 10, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
- self.horizontalLayout_3.addWidget(self.pb_execute)
-
- self.pb_close = QPushButton(self.widget)
- self.pb_close.setObjectName(u"pb_close")
-
- self.horizontalLayout_3.addWidget(self.pb_close)
+ self.horizontalLayout_3.addItem(self.verticalSpacer)
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)
self.menu_bar = QMenuBar(MainWindow)
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.setObjectName(u"menu_file")
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_delays.setText(QCoreApplication.translate("MainWindow", u"Set Delays", 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.pb_refresh_ports.setText(QCoreApplication.translate("MainWindow", u"Refresh", None))
+ self.gb_profile.setTitle("")
+ 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_close.setText(QCoreApplication.translate("MainWindow", u"Close", None))
self.menu_file.setTitle(QCoreApplication.translate("MainWindow", u"File", None))
diff --git a/ui_read_disk.py b/ui_read_disk.py
index e6a729e..8e37f10 100644
--- a/ui_read_disk.py
+++ b/ui_read_disk.py
@@ -25,7 +25,7 @@ class Ui_ReadDialog(object):
def setupUi(self, ReadDialog):
if not ReadDialog.objectName():
ReadDialog.setObjectName(u"ReadDialog")
- ReadDialog.resize(685, 710)
+ ReadDialog.resize(743, 832)
ReadDialog.setModal(True)
self.verticalLayout_5 = QVBoxLayout(ReadDialog)
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.setObjectName(u"combo_disktype")
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.setObjectName(u"combo_format")
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.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.setObjectName(u"verticalLayout")
self.te_command_line = QPlainTextEdit(self.groupBox_4)
@@ -617,6 +624,12 @@ class Ui_ReadDialog(object):
self.verticalLayout_3.setObjectName(u"verticalLayout_3")
self.te_console = QTextEdit(self.groupBox_5)
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.verticalLayout_3.addWidget(self.te_console)
@@ -632,11 +645,19 @@ class Ui_ReadDialog(object):
self.btn_launch = QPushButton(ReadDialog)
self.btn_launch.setObjectName(u"btn_launch")
+ self.btn_launch.setAutoDefault(False)
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.setObjectName(u"btn_back")
+ self.btn_back.setAutoDefault(False)
self.horizontalLayout_7.addWidget(self.btn_back)
@@ -753,180 +774,182 @@ class Ui_ReadDialog(object):
self.btn_suffix_dec.setText("")
self.cb_inc.setText(QCoreApplication.translate("ReadDialog", u"Auto Inc.", 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(1, QCoreApplication.translate("ReadDialog", u".adf", None))
- self.combo_disktype.setItemText(2, QCoreApplication.translate("ReadDialog", u".ads", None))
- self.combo_disktype.setItemText(3, QCoreApplication.translate("ReadDialog", u".adm", None))
- self.combo_disktype.setItemText(4, QCoreApplication.translate("ReadDialog", u".adl", None))
- self.combo_disktype.setItemText(5, QCoreApplication.translate("ReadDialog", u".ctr", None))
- self.combo_disktype.setItemText(6, QCoreApplication.translate("ReadDialog", u".d1m", None))
- self.combo_disktype.setItemText(7, QCoreApplication.translate("ReadDialog", u".d2m", None))
- self.combo_disktype.setItemText(8, QCoreApplication.translate("ReadDialog", u".d4m", None))
- self.combo_disktype.setItemText(9, QCoreApplication.translate("ReadDialog", u".d64", None))
- self.combo_disktype.setItemText(10, QCoreApplication.translate("ReadDialog", u".d71", None))
- self.combo_disktype.setItemText(11, QCoreApplication.translate("ReadDialog", u".d81", None))
- self.combo_disktype.setItemText(12, QCoreApplication.translate("ReadDialog", u".d88", None))
- self.combo_disktype.setItemText(13, QCoreApplication.translate("ReadDialog", u".dcp", None))
- self.combo_disktype.setItemText(14, QCoreApplication.translate("ReadDialog", u".dim", None))
- self.combo_disktype.setItemText(15, QCoreApplication.translate("ReadDialog", u".dmk", None))
- self.combo_disktype.setItemText(16, QCoreApplication.translate("ReadDialog", u".do", None))
- self.combo_disktype.setItemText(17, QCoreApplication.translate("ReadDialog", u".dsd", None))
- self.combo_disktype.setItemText(18, QCoreApplication.translate("ReadDialog", u".dsk", None))
- self.combo_disktype.setItemText(19, QCoreApplication.translate("ReadDialog", u".edsk", None))
- self.combo_disktype.setItemText(20, QCoreApplication.translate("ReadDialog", u".fd", None))
- self.combo_disktype.setItemText(21, QCoreApplication.translate("ReadDialog", u".fdi", None))
- self.combo_disktype.setItemText(22, QCoreApplication.translate("ReadDialog", u".hdm", None))
- self.combo_disktype.setItemText(23, QCoreApplication.translate("ReadDialog", u".hfe", None))
- self.combo_disktype.setItemText(24, QCoreApplication.translate("ReadDialog", u".ima", None))
- self.combo_disktype.setItemText(25, QCoreApplication.translate("ReadDialog", u".img", None))
- self.combo_disktype.setItemText(26, QCoreApplication.translate("ReadDialog", u".imd", None))
- self.combo_disktype.setItemText(27, QCoreApplication.translate("ReadDialog", u".ipf", None))
- self.combo_disktype.setItemText(28, QCoreApplication.translate("ReadDialog", u".mgt", None))
- self.combo_disktype.setItemText(29, QCoreApplication.translate("ReadDialog", u".msa", None))
- self.combo_disktype.setItemText(30, QCoreApplication.translate("ReadDialog", u".nfd", None))
- self.combo_disktype.setItemText(31, QCoreApplication.translate("ReadDialog", u".nsi", None))
- self.combo_disktype.setItemText(32, QCoreApplication.translate("ReadDialog", u".po", None))
- self.combo_disktype.setItemText(33, QCoreApplication.translate("ReadDialog", u".raw", None))
- self.combo_disktype.setItemText(34, QCoreApplication.translate("ReadDialog", u".sf7", None))
- self.combo_disktype.setItemText(35, QCoreApplication.translate("ReadDialog", u".scp", None))
- self.combo_disktype.setItemText(36, QCoreApplication.translate("ReadDialog", u".ssd", None))
- self.combo_disktype.setItemText(37, QCoreApplication.translate("ReadDialog", u".st", None))
- self.combo_disktype.setItemText(38, QCoreApplication.translate("ReadDialog", u".td0", None))
- self.combo_disktype.setItemText(39, QCoreApplication.translate("ReadDialog", u".xdf", None))
+ self.combo_disktype.setItemText(0, "")
+ self.combo_disktype.setItemText(1, QCoreApplication.translate("ReadDialog", u".a2r", None))
+ self.combo_disktype.setItemText(2, QCoreApplication.translate("ReadDialog", u".adf", None))
+ self.combo_disktype.setItemText(3, QCoreApplication.translate("ReadDialog", u".ads", None))
+ self.combo_disktype.setItemText(4, QCoreApplication.translate("ReadDialog", u".adm", None))
+ self.combo_disktype.setItemText(5, QCoreApplication.translate("ReadDialog", u".adl", None))
+ self.combo_disktype.setItemText(6, QCoreApplication.translate("ReadDialog", u".ctr", None))
+ self.combo_disktype.setItemText(7, QCoreApplication.translate("ReadDialog", u".d1m", None))
+ self.combo_disktype.setItemText(8, QCoreApplication.translate("ReadDialog", u".d2m", None))
+ self.combo_disktype.setItemText(9, QCoreApplication.translate("ReadDialog", u".d4m", None))
+ self.combo_disktype.setItemText(10, QCoreApplication.translate("ReadDialog", u".d64", None))
+ self.combo_disktype.setItemText(11, QCoreApplication.translate("ReadDialog", u".d71", None))
+ self.combo_disktype.setItemText(12, QCoreApplication.translate("ReadDialog", u".d81", None))
+ self.combo_disktype.setItemText(13, QCoreApplication.translate("ReadDialog", u".d88", None))
+ self.combo_disktype.setItemText(14, QCoreApplication.translate("ReadDialog", u".dcp", None))
+ self.combo_disktype.setItemText(15, QCoreApplication.translate("ReadDialog", u".dim", None))
+ self.combo_disktype.setItemText(16, QCoreApplication.translate("ReadDialog", u".dmk", None))
+ self.combo_disktype.setItemText(17, QCoreApplication.translate("ReadDialog", u".do", None))
+ self.combo_disktype.setItemText(18, QCoreApplication.translate("ReadDialog", u".dsd", None))
+ self.combo_disktype.setItemText(19, QCoreApplication.translate("ReadDialog", u".dsk", None))
+ self.combo_disktype.setItemText(20, QCoreApplication.translate("ReadDialog", u".edsk", None))
+ self.combo_disktype.setItemText(21, QCoreApplication.translate("ReadDialog", u".fd", None))
+ self.combo_disktype.setItemText(22, QCoreApplication.translate("ReadDialog", u".fdi", None))
+ self.combo_disktype.setItemText(23, QCoreApplication.translate("ReadDialog", u".hdm", None))
+ self.combo_disktype.setItemText(24, QCoreApplication.translate("ReadDialog", u".hfe", None))
+ self.combo_disktype.setItemText(25, QCoreApplication.translate("ReadDialog", u".ima", None))
+ self.combo_disktype.setItemText(26, QCoreApplication.translate("ReadDialog", u".img", None))
+ self.combo_disktype.setItemText(27, QCoreApplication.translate("ReadDialog", u".imd", None))
+ self.combo_disktype.setItemText(28, QCoreApplication.translate("ReadDialog", u".ipf", None))
+ self.combo_disktype.setItemText(29, QCoreApplication.translate("ReadDialog", u".mgt", None))
+ self.combo_disktype.setItemText(30, QCoreApplication.translate("ReadDialog", u".msa", None))
+ self.combo_disktype.setItemText(31, QCoreApplication.translate("ReadDialog", u".nfd", None))
+ self.combo_disktype.setItemText(32, QCoreApplication.translate("ReadDialog", u".nsi", None))
+ self.combo_disktype.setItemText(33, QCoreApplication.translate("ReadDialog", u".po", None))
+ self.combo_disktype.setItemText(34, QCoreApplication.translate("ReadDialog", u".raw", None))
+ self.combo_disktype.setItemText(35, QCoreApplication.translate("ReadDialog", u".sf7", None))
+ self.combo_disktype.setItemText(36, QCoreApplication.translate("ReadDialog", u".scp", None))
+ self.combo_disktype.setItemText(37, QCoreApplication.translate("ReadDialog", u".ssd", None))
+ self.combo_disktype.setItemText(38, QCoreApplication.translate("ReadDialog", u".st", 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.combo_format.setItemText(0, QCoreApplication.translate("ReadDialog", u"acorn.adfs.160", None))
- self.combo_format.setItemText(1, QCoreApplication.translate("ReadDialog", u"acorn.adfs.1600", None))
- self.combo_format.setItemText(2, QCoreApplication.translate("ReadDialog", u"acorn.adfs.320", None))
- self.combo_format.setItemText(3, QCoreApplication.translate("ReadDialog", u"acorn.adfs.640", None))
- self.combo_format.setItemText(4, QCoreApplication.translate("ReadDialog", u"acorn.adfs.800", None))
- self.combo_format.setItemText(5, QCoreApplication.translate("ReadDialog", u"acorn.dfs.ds", None))
- self.combo_format.setItemText(6, QCoreApplication.translate("ReadDialog", u"acorn.dfs.ds80", None))
- self.combo_format.setItemText(7, QCoreApplication.translate("ReadDialog", u"acorn.dfs.ss", None))
- self.combo_format.setItemText(8, QCoreApplication.translate("ReadDialog", u"acorn.dfs.ss80", None))
- self.combo_format.setItemText(9, QCoreApplication.translate("ReadDialog", u"akai.1600", None))
- self.combo_format.setItemText(10, QCoreApplication.translate("ReadDialog", u"akai.800", None))
- self.combo_format.setItemText(11, QCoreApplication.translate("ReadDialog", u"amiga.amigados", None))
- self.combo_format.setItemText(12, QCoreApplication.translate("ReadDialog", u"amiga.amigados_hd", None))
- self.combo_format.setItemText(13, QCoreApplication.translate("ReadDialog", u"apple2.appledos.140", None))
- self.combo_format.setItemText(14, QCoreApplication.translate("ReadDialog", u"apple2.nofs.140", None))
- self.combo_format.setItemText(15, QCoreApplication.translate("ReadDialog", u"apple2.prodos.140", None))
- self.combo_format.setItemText(16, QCoreApplication.translate("ReadDialog", u"atari.90", None))
- self.combo_format.setItemText(17, QCoreApplication.translate("ReadDialog", u"atarist.360", None))
- self.combo_format.setItemText(18, QCoreApplication.translate("ReadDialog", u"atarist.400", None))
- self.combo_format.setItemText(19, QCoreApplication.translate("ReadDialog", u"atarist.440", None))
- self.combo_format.setItemText(20, QCoreApplication.translate("ReadDialog", u"atarist.720", None))
- self.combo_format.setItemText(21, QCoreApplication.translate("ReadDialog", u"atarist.800", None))
- self.combo_format.setItemText(22, QCoreApplication.translate("ReadDialog", u"atarist.880", None))
- self.combo_format.setItemText(23, QCoreApplication.translate("ReadDialog", u"coco.decb", None))
- self.combo_format.setItemText(24, QCoreApplication.translate("ReadDialog", u"coco.decb.40t", None))
- self.combo_format.setItemText(25, QCoreApplication.translate("ReadDialog", u"coco.os9.40ds", None))
- self.combo_format.setItemText(26, QCoreApplication.translate("ReadDialog", u"coco.os9.40ss", None))
- self.combo_format.setItemText(27, QCoreApplication.translate("ReadDialog", u"coco.os9.80ds", None))
- self.combo_format.setItemText(28, QCoreApplication.translate("ReadDialog", u"coco.os9.80ss", None))
- self.combo_format.setItemText(29, QCoreApplication.translate("ReadDialog", u"commodore.1541", None))
- self.combo_format.setItemText(30, QCoreApplication.translate("ReadDialog", u"commodore.1571", None))
- self.combo_format.setItemText(31, QCoreApplication.translate("ReadDialog", u"commodore.1581", None))
- self.combo_format.setItemText(32, QCoreApplication.translate("ReadDialog", u"commodore.cmd.fd2000.dd", None))
- self.combo_format.setItemText(33, QCoreApplication.translate("ReadDialog", u"commodore.cmd.fd2000.hd", None))
- self.combo_format.setItemText(34, QCoreApplication.translate("ReadDialog", u"commodore.cmd.fd4000.ed", None))
- self.combo_format.setItemText(35, QCoreApplication.translate("ReadDialog", u"dec.rx01", None))
- self.combo_format.setItemText(36, QCoreApplication.translate("ReadDialog", u"dec.rx02", None))
- self.combo_format.setItemText(37, QCoreApplication.translate("ReadDialog", u"dragon.40ds", None))
- self.combo_format.setItemText(38, QCoreApplication.translate("ReadDialog", u"dragon.40ss", None))
- self.combo_format.setItemText(39, QCoreApplication.translate("ReadDialog", u"dragon.80ds", None))
- self.combo_format.setItemText(40, QCoreApplication.translate("ReadDialog", u"dragon.80ss", None))
- self.combo_format.setItemText(41, QCoreApplication.translate("ReadDialog", u"ensoniq.1600", None))
- self.combo_format.setItemText(42, QCoreApplication.translate("ReadDialog", u"ensoniq.800", None))
- self.combo_format.setItemText(43, QCoreApplication.translate("ReadDialog", u"ensoniq.mirage", None))
- self.combo_format.setItemText(44, QCoreApplication.translate("ReadDialog", u"epson.qx10.320", None))
- self.combo_format.setItemText(45, QCoreApplication.translate("ReadDialog", u"epson.qx10.396", None))
- self.combo_format.setItemText(46, QCoreApplication.translate("ReadDialog", u"epson.qx10.399", None))
- self.combo_format.setItemText(47, QCoreApplication.translate("ReadDialog", u"epson.qx10.400", None))
- self.combo_format.setItemText(48, QCoreApplication.translate("ReadDialog", u"epson.qx10.booter", None))
- self.combo_format.setItemText(49, QCoreApplication.translate("ReadDialog", u"epson.qx10.logo", None))
- self.combo_format.setItemText(50, QCoreApplication.translate("ReadDialog", u"gem.1600", None))
- self.combo_format.setItemText(51, QCoreApplication.translate("ReadDialog", u"hp.mmfm.9885", None))
- self.combo_format.setItemText(52, QCoreApplication.translate("ReadDialog", u"hp.mmfm.9895", None))
- self.combo_format.setItemText(53, QCoreApplication.translate("ReadDialog", u"ibm.1200", None))
- self.combo_format.setItemText(54, QCoreApplication.translate("ReadDialog", u"ibm.1440", None))
- self.combo_format.setItemText(55, QCoreApplication.translate("ReadDialog", u"ibm.160", None))
- self.combo_format.setItemText(56, QCoreApplication.translate("ReadDialog", u"ibm.1680", None))
- self.combo_format.setItemText(57, QCoreApplication.translate("ReadDialog", u"ibm.180", None))
- self.combo_format.setItemText(58, QCoreApplication.translate("ReadDialog", u"ibm.2880", None))
- self.combo_format.setItemText(59, QCoreApplication.translate("ReadDialog", u"ibm.320", None))
- self.combo_format.setItemText(60, QCoreApplication.translate("ReadDialog", u"ibm.360", None))
- self.combo_format.setItemText(61, QCoreApplication.translate("ReadDialog", u"ibm.720", None))
- self.combo_format.setItemText(62, QCoreApplication.translate("ReadDialog", u"ibm.800", None))
- self.combo_format.setItemText(63, QCoreApplication.translate("ReadDialog", u"ibm.dmf", None))
- self.combo_format.setItemText(64, QCoreApplication.translate("ReadDialog", u"ibm.scan", None))
- self.combo_format.setItemText(65, QCoreApplication.translate("ReadDialog", u"mac.400", None))
- self.combo_format.setItemText(66, QCoreApplication.translate("ReadDialog", u"mac.800", None))
- self.combo_format.setItemText(67, QCoreApplication.translate("ReadDialog", u"micropolis.100tpi.ds", None))
- self.combo_format.setItemText(68, QCoreApplication.translate("ReadDialog", u"micropolis.100tpi.ds.275", None))
- self.combo_format.setItemText(69, QCoreApplication.translate("ReadDialog", u"micropolis.100tpi.ss", None))
- self.combo_format.setItemText(70, QCoreApplication.translate("ReadDialog", u"micropolis.100tpi.ss.275", None))
- self.combo_format.setItemText(71, QCoreApplication.translate("ReadDialog", u"micropolis.48tpi.ds", None))
- self.combo_format.setItemText(72, QCoreApplication.translate("ReadDialog", u"micropolis.48tpi.ds.275", None))
- self.combo_format.setItemText(73, QCoreApplication.translate("ReadDialog", u"micropolis.48tpi.ss", None))
- self.combo_format.setItemText(74, QCoreApplication.translate("ReadDialog", u"micropolis.48tpi.ss.275", None))
- self.combo_format.setItemText(75, QCoreApplication.translate("ReadDialog", u"mm1.os9.80dshd_32", None))
- self.combo_format.setItemText(76, QCoreApplication.translate("ReadDialog", u"mm1.os9.80dshd_33", None))
- self.combo_format.setItemText(77, QCoreApplication.translate("ReadDialog", u"mm1.os9.80dshd_36", None))
- self.combo_format.setItemText(78, QCoreApplication.translate("ReadDialog", u"mm1.os9.80dshd_37", None))
- self.combo_format.setItemText(79, QCoreApplication.translate("ReadDialog", u"msx.1d", None))
- self.combo_format.setItemText(80, QCoreApplication.translate("ReadDialog", u"msx.1dd", None))
- self.combo_format.setItemText(81, QCoreApplication.translate("ReadDialog", u"msx.2d", None))
- self.combo_format.setItemText(82, QCoreApplication.translate("ReadDialog", u"msx.2dd", None))
- self.combo_format.setItemText(83, QCoreApplication.translate("ReadDialog", u"northstar.fm.ds", None))
- self.combo_format.setItemText(84, QCoreApplication.translate("ReadDialog", u"northstar.fm.ss", None))
- self.combo_format.setItemText(85, QCoreApplication.translate("ReadDialog", u"northstar.mfm.ds", None))
- self.combo_format.setItemText(86, QCoreApplication.translate("ReadDialog", u"northstar.mfm.ss", None))
- self.combo_format.setItemText(87, QCoreApplication.translate("ReadDialog", u"occ1.dd", None))
- self.combo_format.setItemText(88, QCoreApplication.translate("ReadDialog", u"occ1.sd", None))
- self.combo_format.setItemText(89, QCoreApplication.translate("ReadDialog", u"olivetti.m20", None))
- self.combo_format.setItemText(90, QCoreApplication.translate("ReadDialog", u"pc98.2d", None))
- self.combo_format.setItemText(91, QCoreApplication.translate("ReadDialog", u"pc98.2dd", None))
- self.combo_format.setItemText(92, QCoreApplication.translate("ReadDialog", u"pc98.2hd", None))
- self.combo_format.setItemText(93, QCoreApplication.translate("ReadDialog", u"pc98.2hs", None))
- self.combo_format.setItemText(94, QCoreApplication.translate("ReadDialog", u"pc98.n88basic.hd", None))
- self.combo_format.setItemText(95, QCoreApplication.translate("ReadDialog", u"raw.125", None))
- self.combo_format.setItemText(96, QCoreApplication.translate("ReadDialog", u"raw.250", None))
- self.combo_format.setItemText(97, QCoreApplication.translate("ReadDialog", u"raw.500", None))
- self.combo_format.setItemText(98, QCoreApplication.translate("ReadDialog", u"sci.prophet", None))
- self.combo_format.setItemText(99, QCoreApplication.translate("ReadDialog", u"sega.sf7000", None))
- self.combo_format.setItemText(100, QCoreApplication.translate("ReadDialog", u"thomson.1s160", None))
- self.combo_format.setItemText(101, QCoreApplication.translate("ReadDialog", u"thomson.1s320", None))
- self.combo_format.setItemText(102, QCoreApplication.translate("ReadDialog", u"thomson.1s80", None))
- self.combo_format.setItemText(103, QCoreApplication.translate("ReadDialog", u"thomson.2s160", None))
- self.combo_format.setItemText(104, QCoreApplication.translate("ReadDialog", u"thomson.2s320", None))
- self.combo_format.setItemText(105, QCoreApplication.translate("ReadDialog", u"tsc.flex.dsdd", None))
- self.combo_format.setItemText(106, QCoreApplication.translate("ReadDialog", u"tsc.flex.ssdd", None))
- self.combo_format.setItemText(107, QCoreApplication.translate("ReadDialog", u"zx.3dos.ds80", None))
- self.combo_format.setItemText(108, QCoreApplication.translate("ReadDialog", u"zx.3dos.ss40", None))
- self.combo_format.setItemText(109, QCoreApplication.translate("ReadDialog", u"zx.d80.ds80", None))
- self.combo_format.setItemText(110, QCoreApplication.translate("ReadDialog", u"zx.fdd3000.ds80", None))
- self.combo_format.setItemText(111, QCoreApplication.translate("ReadDialog", u"zx.fdd3000.ss40", None))
- self.combo_format.setItemText(112, QCoreApplication.translate("ReadDialog", u"zx.kempston.ds80", None))
- self.combo_format.setItemText(113, QCoreApplication.translate("ReadDialog", u"zx.kempston.ss40", None))
- self.combo_format.setItemText(114, QCoreApplication.translate("ReadDialog", u"zx.opus.ds80", None))
- self.combo_format.setItemText(115, QCoreApplication.translate("ReadDialog", u"zx.opus.ss40", None))
- self.combo_format.setItemText(116, QCoreApplication.translate("ReadDialog", u"zx.plusd.ds80", None))
- self.combo_format.setItemText(117, QCoreApplication.translate("ReadDialog", u"zx.quorum.ds80", None))
- self.combo_format.setItemText(118, QCoreApplication.translate("ReadDialog", u"zx.rocky.ds80", None))
- self.combo_format.setItemText(119, QCoreApplication.translate("ReadDialog", u"zx.rocky.ss40", None))
- self.combo_format.setItemText(120, QCoreApplication.translate("ReadDialog", u"zx.trdos.ds80", None))
- self.combo_format.setItemText(121, QCoreApplication.translate("ReadDialog", u"zx.turbodrive.ds40", None))
- self.combo_format.setItemText(122, QCoreApplication.translate("ReadDialog", u"zx.turbodrive.ds80", None))
- self.combo_format.setItemText(123, QCoreApplication.translate("ReadDialog", u"zx.watford.ds80", None))
- self.combo_format.setItemText(124, QCoreApplication.translate("ReadDialog", u"zx.watford.ss40", None))
+ self.combo_format.setItemText(0, "")
+ self.combo_format.setItemText(1, QCoreApplication.translate("ReadDialog", u"acorn.adfs.160", 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.320", None))
+ self.combo_format.setItemText(4, QCoreApplication.translate("ReadDialog", u"acorn.adfs.640", 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.ds", 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.ss", None))
+ self.combo_format.setItemText(9, QCoreApplication.translate("ReadDialog", u"acorn.dfs.ss80", None))
+ self.combo_format.setItemText(10, QCoreApplication.translate("ReadDialog", u"akai.1600", None))
+ self.combo_format.setItemText(11, QCoreApplication.translate("ReadDialog", u"akai.800", None))
+ self.combo_format.setItemText(12, QCoreApplication.translate("ReadDialog", u"amiga.amigados", None))
+ self.combo_format.setItemText(13, QCoreApplication.translate("ReadDialog", u"amiga.amigados_hd", None))
+ self.combo_format.setItemText(14, QCoreApplication.translate("ReadDialog", u"apple2.appledos.140", None))
+ self.combo_format.setItemText(15, QCoreApplication.translate("ReadDialog", u"apple2.nofs.140", None))
+ self.combo_format.setItemText(16, QCoreApplication.translate("ReadDialog", u"apple2.prodos.140", None))
+ self.combo_format.setItemText(17, QCoreApplication.translate("ReadDialog", u"atari.90", None))
+ self.combo_format.setItemText(18, QCoreApplication.translate("ReadDialog", u"atarist.360", None))
+ self.combo_format.setItemText(19, QCoreApplication.translate("ReadDialog", u"atarist.400", None))
+ self.combo_format.setItemText(20, QCoreApplication.translate("ReadDialog", u"atarist.440", None))
+ self.combo_format.setItemText(21, QCoreApplication.translate("ReadDialog", u"atarist.720", None))
+ self.combo_format.setItemText(22, QCoreApplication.translate("ReadDialog", u"atarist.800", None))
+ self.combo_format.setItemText(23, QCoreApplication.translate("ReadDialog", u"atarist.880", None))
+ self.combo_format.setItemText(24, QCoreApplication.translate("ReadDialog", u"coco.decb", 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.40ds", 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.80ds", None))
+ self.combo_format.setItemText(29, QCoreApplication.translate("ReadDialog", u"coco.os9.80ss", None))
+ self.combo_format.setItemText(30, QCoreApplication.translate("ReadDialog", u"commodore.1541", None))
+ self.combo_format.setItemText(31, QCoreApplication.translate("ReadDialog", u"commodore.1571", 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.dd", None))
+ self.combo_format.setItemText(34, QCoreApplication.translate("ReadDialog", u"commodore.cmd.fd2000.hd", 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.rx01", None))
+ self.combo_format.setItemText(37, QCoreApplication.translate("ReadDialog", u"dec.rx02", None))
+ self.combo_format.setItemText(38, QCoreApplication.translate("ReadDialog", u"dragon.40ds", None))
+ self.combo_format.setItemText(39, QCoreApplication.translate("ReadDialog", u"dragon.40ss", None))
+ self.combo_format.setItemText(40, QCoreApplication.translate("ReadDialog", u"dragon.80ds", None))
+ self.combo_format.setItemText(41, QCoreApplication.translate("ReadDialog", u"dragon.80ss", None))
+ self.combo_format.setItemText(42, QCoreApplication.translate("ReadDialog", u"ensoniq.1600", None))
+ self.combo_format.setItemText(43, QCoreApplication.translate("ReadDialog", u"ensoniq.800", None))
+ self.combo_format.setItemText(44, QCoreApplication.translate("ReadDialog", u"ensoniq.mirage", 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.396", 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.400", None))
+ self.combo_format.setItemText(49, QCoreApplication.translate("ReadDialog", u"epson.qx10.booter", None))
+ self.combo_format.setItemText(50, QCoreApplication.translate("ReadDialog", u"epson.qx10.logo", None))
+ self.combo_format.setItemText(51, QCoreApplication.translate("ReadDialog", u"gem.1600", None))
+ self.combo_format.setItemText(52, QCoreApplication.translate("ReadDialog", u"hp.mmfm.9885", None))
+ self.combo_format.setItemText(53, QCoreApplication.translate("ReadDialog", u"hp.mmfm.9895", None))
+ self.combo_format.setItemText(54, QCoreApplication.translate("ReadDialog", u"ibm.1200", None))
+ self.combo_format.setItemText(55, QCoreApplication.translate("ReadDialog", u"ibm.1440", None))
+ self.combo_format.setItemText(56, QCoreApplication.translate("ReadDialog", u"ibm.160", None))
+ self.combo_format.setItemText(57, QCoreApplication.translate("ReadDialog", u"ibm.1680", None))
+ self.combo_format.setItemText(58, QCoreApplication.translate("ReadDialog", u"ibm.180", None))
+ self.combo_format.setItemText(59, QCoreApplication.translate("ReadDialog", u"ibm.2880", None))
+ self.combo_format.setItemText(60, QCoreApplication.translate("ReadDialog", u"ibm.320", None))
+ self.combo_format.setItemText(61, QCoreApplication.translate("ReadDialog", u"ibm.360", None))
+ self.combo_format.setItemText(62, QCoreApplication.translate("ReadDialog", u"ibm.720", None))
+ self.combo_format.setItemText(63, QCoreApplication.translate("ReadDialog", u"ibm.800", None))
+ self.combo_format.setItemText(64, QCoreApplication.translate("ReadDialog", u"ibm.dmf", None))
+ self.combo_format.setItemText(65, QCoreApplication.translate("ReadDialog", u"ibm.scan", None))
+ self.combo_format.setItemText(66, QCoreApplication.translate("ReadDialog", u"mac.400", 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", 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", 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", 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", 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_32", 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_36", 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.1d", None))
+ self.combo_format.setItemText(81, QCoreApplication.translate("ReadDialog", u"msx.1dd", None))
+ self.combo_format.setItemText(82, QCoreApplication.translate("ReadDialog", u"msx.2d", None))
+ self.combo_format.setItemText(83, QCoreApplication.translate("ReadDialog", u"msx.2dd", None))
+ self.combo_format.setItemText(84, QCoreApplication.translate("ReadDialog", u"northstar.fm.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.ds", None))
+ self.combo_format.setItemText(87, QCoreApplication.translate("ReadDialog", u"northstar.mfm.ss", None))
+ self.combo_format.setItemText(88, QCoreApplication.translate("ReadDialog", u"occ1.dd", None))
+ self.combo_format.setItemText(89, QCoreApplication.translate("ReadDialog", u"occ1.sd", None))
+ self.combo_format.setItemText(90, QCoreApplication.translate("ReadDialog", u"olivetti.m20", None))
+ self.combo_format.setItemText(91, QCoreApplication.translate("ReadDialog", u"pc98.2d", None))
+ self.combo_format.setItemText(92, QCoreApplication.translate("ReadDialog", u"pc98.2dd", None))
+ self.combo_format.setItemText(93, QCoreApplication.translate("ReadDialog", u"pc98.2hd", None))
+ self.combo_format.setItemText(94, QCoreApplication.translate("ReadDialog", u"pc98.2hs", None))
+ self.combo_format.setItemText(95, QCoreApplication.translate("ReadDialog", u"pc98.n88basic.hd", None))
+ self.combo_format.setItemText(96, QCoreApplication.translate("ReadDialog", u"raw.125", None))
+ self.combo_format.setItemText(97, QCoreApplication.translate("ReadDialog", u"raw.250", None))
+ self.combo_format.setItemText(98, QCoreApplication.translate("ReadDialog", u"raw.500", None))
+ self.combo_format.setItemText(99, QCoreApplication.translate("ReadDialog", u"sci.prophet", None))
+ self.combo_format.setItemText(100, QCoreApplication.translate("ReadDialog", u"sega.sf7000", None))
+ self.combo_format.setItemText(101, QCoreApplication.translate("ReadDialog", u"thomson.1s160", None))
+ self.combo_format.setItemText(102, QCoreApplication.translate("ReadDialog", u"thomson.1s320", None))
+ self.combo_format.setItemText(103, QCoreApplication.translate("ReadDialog", u"thomson.1s80", None))
+ self.combo_format.setItemText(104, QCoreApplication.translate("ReadDialog", u"thomson.2s160", None))
+ self.combo_format.setItemText(105, QCoreApplication.translate("ReadDialog", u"thomson.2s320", None))
+ self.combo_format.setItemText(106, QCoreApplication.translate("ReadDialog", u"tsc.flex.dsdd", 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.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.d80.ds80", None))
+ self.combo_format.setItemText(111, QCoreApplication.translate("ReadDialog", u"zx.fdd3000.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.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.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.plusd.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.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.trdos.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.turbodrive.ds80", 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.btn_path_select.setText("")
self.label_7.setText(QCoreApplication.translate("ReadDialog", u"Filename", None))
self.btn_file_select.setText("")
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.te_console.setHtml(QCoreApplication.translate("ReadDialog", u"\n"
"\n"
-"
Using CMD Console mode
", None))
+"