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 + + + + + @@ -260,7 +381,7 @@ 0 0 - 543 + 486 21 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)) +"


", 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)) # retranslateUi