diff --git a/icons.py b/icons.py new file mode 100644 index 0000000..681be37 --- /dev/null +++ b/icons.py @@ -0,0 +1,31 @@ +import sys + +from PySide6.QtWidgets import QApplication, QGridLayout, QPushButton, QStyle, QWidget + + +class Window(QWidget): + def __init__(self): + super().__init__() + + icons = sorted( + [attr for attr in dir(QStyle.StandardPixmap) if attr.startswith("SP_")] + ) + layout = QGridLayout() + + for n, name in enumerate(icons): + btn = QPushButton(name) + + pixmapi = getattr(QStyle, name) + icon = self.style().standardIcon(pixmapi) + btn.setIcon(icon) + layout.addWidget(btn, n // 4, n % 4) + + self.setLayout(layout) + + +app = QApplication(sys.argv) + +w = Window() +w.show() + +app.exec() diff --git a/main.py b/main.py index 6b912d5..24aa6ee 100644 --- a/main.py +++ b/main.py @@ -9,9 +9,11 @@ from PySide6.QtWidgets import ( QVBoxLayout, QHBoxLayout, QLabel, + QFileDialog, ) 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 @@ -21,6 +23,8 @@ class MainWindow(QtWidgets.QMainWindow): def __init__(self): super().__init__() + self.settings = {} + # Create an instance of the UI class self.ui = Ui_MainWindow() # Call its setupUi method, passing in the current window (self) @@ -54,8 +58,25 @@ class MainWindow(QtWidgets.QMainWindow): @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.exec() - + self.settings = read_disk_window.get_settings() + self.save_settings("settings.json") + + def load_settings(self, file_name): + if file_name: + if os.path.exists(file_name): + with open(file_name, '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: + json.dump(self.settings, f, indent=2) + if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) diff --git a/readdisk.py b/readdisk.py index 590dae3..43b7164 100644 --- a/readdisk.py +++ b/readdisk.py @@ -1,8 +1,7 @@ -import sys -from PySide6.QtWidgets import QApplication, QDialog, QButtonGroup +import sys, os, subprocess +from PySide6.QtWidgets import QApplication, QDialog, QButtonGroup, QFileDialog, QMessageBox from PySide6.QtCore import Slot from PySide6.QtGui import QIntValidator - # Import the generated UI class from the ui_form.py file from ui_read_disk import Ui_ReadDialog @@ -23,16 +22,52 @@ class ReadDiskWindow(QDialog): self.pin2_setting_group.addButton(self.ui.rb_pin2_low, 2) # --- Connect Signals to Slots --- - self.ui.cb_fake_index.toggled.connect(self.on_fake_index_toggled) - self.on_fake_index_toggled(self.ui.cb_fake_index.isChecked()) - - self.ui.le_double_step.setValidator(QIntValidator(0, 9)) - self.ui.le_revs.setValidator(QIntValidator(0, 999999)) - self.ui.le_bitrate.setValidator(QIntValidator(0, 999999)) - self.ui.le_retries.setValidator(QIntValidator(0, 999999)) - self.ui.le_fake_index.setValidator(QIntValidator(0, 999999)) - self.ui.le_period.setValidator(QIntValidator(0, 999999)) - self.ui.le_phase.setValidator(QIntValidator(0, 999999)) + 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) + self.ui.cb_drive_select.toggled.connect(self.on_update_settings) + self.ui.cb_pllspec.toggled.connect(self.on_update_settings) + self.ui.cb_retries.toggled.connect(self.on_update_settings) + self.ui.cb_head_sets.toggled.connect(self.on_update_settings) + self.ui.cb_head_swap.toggled.connect(self.on_update_settings) + self.ui.cb_ss_legacy.toggled.connect(self.on_update_settings) + self.ui.cb_cylinder_sets.toggled.connect(self.on_update_settings) + self.ui.cb_rev_track_data.toggled.connect(self.on_update_settings) + self.ui.cb_hard_sectors.toggled.connect(self.on_update_settings) + self.ui.cb_no_clobber.toggled.connect(self.on_update_settings) + self.ui.cb_raw.toggled.connect(self.on_update_settings) + self.ui.cb_pin2.toggled.connect(self.on_update_settings) + self.ui.rb_pin2_high.toggled.connect(self.on_update_settings) + self.ui.rb_pin2_low.toggled.connect(self.on_update_settings) + self.ui.cb_flippy.toggled.connect(self.on_update_settings) + self.ui.rb_panasonic.toggled.connect(self.on_update_settings) + self.ui.rb_teac.toggled.connect(self.on_update_settings) + self.ui.cb_adjust_speed.toggled.connect(self.on_update_settings) + self.ui.combo_drive_select.currentIndexChanged.connect(self.on_update_settings) + self.ui.combo_fake_index.currentIndexChanged.connect(self.on_update_settings) + self.ui.combo_adjust_speed.currentIndexChanged.connect(self.on_update_settings) + self.ui.combo_disktype.currentIndexChanged.connect(self.on_update_settings) + self.ui.combo_format.currentIndexChanged.connect(self.on_update_settings) + self.ui.le_fake_index.textChanged.connect(self.on_update_settings) + self.ui.le_lowpass.textChanged.connect(self.on_update_settings) + self.ui.le_period.textChanged.connect(self.on_update_settings) + self.ui.le_phase.textChanged.connect(self.on_update_settings) + self.ui.le_bitrate.textChanged.connect(self.on_update_settings) + self.ui.le_revs.textChanged.connect(self.on_update_settings) + self.ui.le_double_step.textChanged.connect(self.on_update_settings) + self.ui.le_retries.textChanged.connect(self.on_update_settings) + self.ui.le_head_sets.textChanged.connect(self.on_update_settings) + self.ui.le_cylinder_sets.textChanged.connect(self.on_update_settings) + self.ui.le_adjust_speed.textChanged.connect(self.on_update_settings) + self.ui.le_suffix.textChanged.connect(self.on_update_settings) + self.ui.le_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.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) @@ -40,59 +75,277 @@ class ReadDiskWindow(QDialog): self.ui.btn_launch.clicked.connect(self.on_launch) self.ui.btn_back.clicked.connect(self.reject) - @Slot(bool) - def on_fake_index_toggled(self, checked): - """Enables or disables the Fake Index widgets.""" - self.ui.le_fake_index.setEnabled(checked) - self.ui.combo_fake_index.setEnabled(checked) + # Initialize command attribute + self.command = "" + + def calc_suffix(self, inc: int) -> None: + # Increments or decrements 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): + self.calc_suffix(1) + + @Slot() + def on_btn_suffix_dec_clicked(self): + 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 == "": + 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("") + self.ui.combo_disktype.setCurrentText(extension) + self.on_update_settings() + + @Slot() + def on_btn_path_select_clicked(self): + path = QFileDialog.getExistingDirectory(self, "Select Folder") + self.ui.le_filepath.setText(path) + self.on_update_settings() @Slot() def on_launch(self): - filename = "my_disk" - tracks = "" - - if self.ui.cb_double_step.isChecked(): - tracks = "step=" + self.ui.le_double_step.text() - - 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_retries.isChecked(): - retries = " --retries=" + self.ui.le_retries.text() - - if self.ui.cb_fake_index.isChecked(): - 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=" + self.ui.le_phase.text() - - if tracks != "": - tracks = " --tracks=" + tracks - - if bitrate != "": - filename = filename + "::" + bitrate - - command = "gw read " + tracks + revs + drive + fake_index + pll + retries + ' "' + filename + '"' - - self.ui.te_command_line.setPlainText(command) + 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}") + 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 = { - "filename": self.ui.le_filename.text(), + "fileprefix": self.ui.le_fileprefix.text(), + "filepath": self.ui.le_filepath.text(), "double_step_enabled": self.ui.cb_double_step.isChecked(), "double_step_value": self.ui.le_double_step.text(), "fake_index_enabled": self.ui.cb_fake_index.isChecked(), "fake_index_value": self.ui.le_fake_index.text(), - # Add all other settings here... + "fake_index_unit": self.ui.combo_fake_index.currentText(), + "bitrate_enabled": self.ui.cb_bitrate.isChecked(), + "bitrate_value": self.ui.le_bitrate.text(), + "revs_enabled": self.ui.cb_revs.isChecked(), + "revs_value": self.ui.le_revs.text(), + "drive_select_enabled": self.ui.cb_drive_select.isChecked(), + "drive_select_value": self.ui.combo_drive_select.currentText(), + "retries_enabled": self.ui.cb_retries.isChecked(), + "retries_value": self.ui.le_retries.text(), + "pllspec_enabled": self.ui.cb_pllspec.isChecked(), + "pll_period": self.ui.le_period.text(), + "pll_phase": self.ui.le_phase.text(), + "pll_lowpass": self.ui.le_lowpass.text(), + "head_sets_enabled": self.ui.cb_head_sets.isChecked(), + "head_sets_value": self.ui.le_head_sets.text(), + "head_swap_enabled": self.ui.cb_head_swap.isChecked(), + "ss_legacy_enabled": self.ui.cb_ss_legacy.isChecked(), + "cylinder_sets_enabled": self.ui.cb_cylinder_sets.isChecked(), + "cylinder_sets_value": self.ui.le_cylinder_sets.text(), + "rev_track_data_enabled": self.ui.cb_rev_track_data.isChecked(), + "hard_sectors_enabled": self.ui.cb_hard_sectors.isChecked(), + "no_clobber_enabled": self.ui.cb_no_clobber.isChecked(), + "raw_enabled": self.ui.cb_raw.isChecked(), + "pin2_enabled": self.ui.cb_pin2.isChecked(), + "pin2_high": self.ui.rb_pin2_high.isChecked(), + "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(),'"' + + "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(), + "suffix_value": self.ui.le_suffix.text(), + "inc_enabled": self.ui.cb_inc.isChecked(), + "format_enabled": self.ui.cb_format.isChecked(), + "format_value": self.ui.combo_format.currentText(), + "disktype_value": self.ui.combo_disktype.currentText(), } - return settings \ No newline at end of file + + return settings + + def set_settings(self, settings): + 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)) + self.ui.le_double_step.setText(settings.get("double_step_value", "")) + self.ui.cb_fake_index.setChecked(settings.get("fake_index_enabled", False)) + self.ui.le_fake_index.setText(settings.get("fake_index_value", "")) + self.ui.combo_fake_index.setCurrentText(settings.get("fake_index_unit", "")) + self.ui.cb_bitrate.setChecked(settings.get("bitrate_enabled", False)) + self.ui.le_bitrate.setText(settings.get("bitrate_value", "")) + self.ui.cb_revs.setChecked(settings.get("revs_enabled", False)) + self.ui.le_revs.setText(settings.get("revs_value", "")) + self.ui.cb_drive_select.setChecked(settings.get("drive_select_enabled", False)) + self.ui.combo_drive_select.setCurrentText(settings.get("drive_select_value", "")) + self.ui.cb_retries.setChecked(settings.get("retries_enabled", False)) + self.ui.le_retries.setText(settings.get("retries_value", "")) + self.ui.cb_pllspec.setChecked(settings.get("pllspec_enabled", False)) + self.ui.le_period.setText(settings.get("pll_period", "")) + self.ui.le_phase.setText(settings.get("pll_phase", "")) + self.ui.le_lowpass.setText(settings.get("pll_lowpass", "")) + self.ui.cb_head_sets.setChecked(settings.get("head_sets_enabled", False)) + self.ui.le_head_sets.setText(settings.get("head_sets_value", "")) + self.ui.cb_head_swap.setChecked(settings.get("head_swap_enabled", False)) + self.ui.cb_ss_legacy.setChecked(settings.get("ss_legacy_enabled", False)) + self.ui.cb_cylinder_sets.setChecked(settings.get("cylinder_sets_enabled", False)) + self.ui.le_cylinder_sets.setText(settings.get("cylinder_sets_value", "")) + self.ui.cb_rev_track_data.setChecked(settings.get("rev_track_data_enabled", False)) + self.ui.cb_hard_sectors.setChecked(settings.get("hard_sectors_enabled", False)) + self.ui.cb_no_clobber.setChecked(settings.get("no_clobber_enabled", False)) + self.ui.cb_raw.setChecked(settings.get("raw_enabled", False)) + self.ui.cb_pin2.setChecked(settings.get("pin2_enabled", False)) + self.ui.rb_pin2_high.setChecked(settings.get("pin2_high", False)) + self.ui.rb_pin2_low.setChecked(settings.get("pin2_low", False)) + self.ui.cb_flippy.setChecked(settings.get("flippy_enabled", False)) + self.ui.rb_panasonic.setChecked(settings.get("flippy_panasonic", False)) + self.ui.rb_teac.setChecked(settings.get("flippy_teac", False)) + self.ui.cb_adjust_speed.setChecked(settings.get("adjust_speed_enabled", False)) + self.ui.le_adjust_speed.setText(settings.get("adjust_speed_value", "")) + self.ui.combo_adjust_speed.setCurrentText(settings.get("adjust_speed_unit", "")) + self.ui.le_suffix.setText(settings.get("suffix_value", "")) + self.ui.cb_inc.setChecked(settings.get("inc_enabled", False)) + self.ui.cb_format.setChecked(settings.get("format_enabled", False)) + 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 + + def on_update_settings(self, *args, **kwargs): + fileprefix = self.ui.le_fileprefix.text() + drive = "" + bitrate = "" + legacy_ss = "" + revs = "" + retries = "" + fake_index = "" + 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" + + 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 + + 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 = [ + item for item in [ + "gw", "read", tracks, revs, drive, densel, + adjust_speed, no_clobber, raw, reverse, + hard_sectors, fake_index, pll, retries, filename + ] if item + ] + + self.ui.le_filename.setText(generated_filename) + self.ui.te_command_line.setPlainText(" ".join(self.command)) diff --git a/settings.json b/settings.json new file mode 100644 index 0000000..52de9da --- /dev/null +++ b/settings.json @@ -0,0 +1,45 @@ +{ + "fileprefix": "Test", + "filepath": "/home/arkay/Emulation/Disks/Test", + "double_step_enabled": true, + "double_step_value": "1", + "fake_index_enabled": true, + "fake_index_value": "300", + "fake_index_unit": "rpm", + "bitrate_enabled": true, + "bitrate_value": "250", + "revs_enabled": true, + "revs_value": "3", + "drive_select_enabled": true, + "drive_select_value": "B", + "retries_enabled": true, + "retries_value": "3", + "pllspec_enabled": true, + "pll_period": "5", + "pll_phase": "60", + "pll_lowpass": "", + "head_sets_enabled": true, + "head_sets_value": "0-1", + "head_swap_enabled": true, + "ss_legacy_enabled": true, + "cylinder_sets_enabled": true, + "cylinder_sets_value": "0-34,35-79", + "rev_track_data_enabled": true, + "hard_sectors_enabled": true, + "no_clobber_enabled": true, + "raw_enabled": true, + "pin2_enabled": true, + "pin2_high": false, + "pin2_low": true, + "flippy_enabled": true, + "flippy_panasonic": false, + "flippy_teac": true, + "\"adjust_speed_enabled": true, + "adjust_speed_value": "300", + "adjust_speed_unit": "rpm", + "suffix_value": "1", + "inc_enabled": true, + "format_enabled": false, + "format_value": "acorn.adfs.160", + "disktype_value": ".adf" +} \ No newline at end of file diff --git a/ui/designer.sh b/ui/designer.sh new file mode 100755 index 0000000..1643abe --- /dev/null +++ b/ui/designer.sh @@ -0,0 +1,2 @@ +#!/bin/sh +pyside6-designer 2>1 >/dev/null & diff --git a/ui/readdisk.ui b/ui/readdisk.ui index 3a7965a..a7d088c 100644 --- a/ui/readdisk.ui +++ b/ui/readdisk.ui @@ -7,7 +7,7 @@ 0 0 685 - 652 + 710 @@ -92,9 +92,6 @@ - - false - Fake index pulses at SPEED @@ -240,9 +237,6 @@ - - false - Head steps between cylinders @@ -363,7 +357,7 @@ - + @@ -391,7 +385,7 @@ - + @@ -428,7 +422,38 @@ - + + + + + + + + + rpm + + + + + ms + + + + + us + + + + + ns + + + + + scp + + + @@ -471,81 +496,994 @@ - + + + + File Prefix + + + + + + + mydisk + + + + - Suffix: + Suffix + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - - - - DiskType: - - - - - - - - - - Format: - - - - + + + 4 + - >>>> + + + + + + + false - <<<< + + + + + + + false + + + + + + + Auto Inc. - - + + - Inc++ + Disk Type - - - - mydisk.scp - - - - - - - Filename: - - - - - + + - UNSPECIFIED FORMAT + .a2r + + + + + .adf + + + + + .ads + + + + + .adm + + + + + .adl + + + + + .ctr + + + + + .d1m + + + + + .d2m + + + + + .d4m + + + + + .d64 + + + + + .d71 + + + + + .d81 + + + + + .d88 + + + + + .dcp + + + + + .dim + + + + + .dmk + + + + + .do + + + + + .dsd + + + + + .dsk + + + + + .edsk + + + + + .fd + + + + + .fdi + + + + + .hdm + + + + + .hfe + + + + + .ima + + + + + .img + + + + + .imd + + + + + .ipf + + + + + .mgt + + + + + .msa + + + + + .nfd + + + + + .nsi + + + + + .po + + + + + .raw + + + + + .sf7 + + + + + .scp + + + + + .ssd + + + + + .st + + + + + .td0 + + + + + .xdf + + + + Format + + + + + + + + acorn.adfs.160 + + + + + acorn.adfs.1600 + + + + + acorn.adfs.320 + + + + + acorn.adfs.640 + + + + + acorn.adfs.800 + + + + + acorn.dfs.ds + + + + + acorn.dfs.ds80 + + + + + acorn.dfs.ss + + + + + acorn.dfs.ss80 + + + + + akai.1600 + + + + + akai.800 + + + + + amiga.amigados + + + + + amiga.amigados_hd + + + + + apple2.appledos.140 + + + + + apple2.nofs.140 + + + + + apple2.prodos.140 + + + + + atari.90 + + + + + atarist.360 + + + + + atarist.400 + + + + + atarist.440 + + + + + atarist.720 + + + + + atarist.800 + + + + + atarist.880 + + + + + coco.decb + + + + + coco.decb.40t + + + + + coco.os9.40ds + + + + + coco.os9.40ss + + + + + coco.os9.80ds + + + + + coco.os9.80ss + + + + + commodore.1541 + + + + + commodore.1571 + + + + + commodore.1581 + + + + + commodore.cmd.fd2000.dd + + + + + commodore.cmd.fd2000.hd + + + + + commodore.cmd.fd4000.ed + + + + + dec.rx01 + + + + + dec.rx02 + + + + + dragon.40ds + + + + + dragon.40ss + + + + + dragon.80ds + + + + + dragon.80ss + + + + + ensoniq.1600 + + + + + ensoniq.800 + + + + + ensoniq.mirage + + + + + epson.qx10.320 + + + + + epson.qx10.396 + + + + + epson.qx10.399 + + + + + epson.qx10.400 + + + + + epson.qx10.booter + + + + + epson.qx10.logo + + + + + gem.1600 + + + + + hp.mmfm.9885 + + + + + hp.mmfm.9895 + + + + + ibm.1200 + + + + + ibm.1440 + + + + + ibm.160 + + + + + ibm.1680 + + + + + ibm.180 + + + + + ibm.2880 + + + + + ibm.320 + + + + + ibm.360 + + + + + ibm.720 + + + + + ibm.800 + + + + + ibm.dmf + + + + + ibm.scan + + + + + mac.400 + + + + + mac.800 + + + + + micropolis.100tpi.ds + + + + + micropolis.100tpi.ds.275 + + + + + micropolis.100tpi.ss + + + + + micropolis.100tpi.ss.275 + + + + + micropolis.48tpi.ds + + + + + micropolis.48tpi.ds.275 + + + + + micropolis.48tpi.ss + + + + + micropolis.48tpi.ss.275 + + + + + mm1.os9.80dshd_32 + + + + + mm1.os9.80dshd_33 + + + + + mm1.os9.80dshd_36 + + + + + mm1.os9.80dshd_37 + + + + + msx.1d + + + + + msx.1dd + + + + + msx.2d + + + + + msx.2dd + + + + + northstar.fm.ds + + + + + northstar.fm.ss + + + + + northstar.mfm.ds + + + + + northstar.mfm.ss + + + + + occ1.dd + + + + + occ1.sd + + + + + olivetti.m20 + + + + + pc98.2d + + + + + pc98.2dd + + + + + pc98.2hd + + + + + pc98.2hs + + + + + pc98.n88basic.hd + + + + + raw.125 + + + + + raw.250 + + + + + raw.500 + + + + + sci.prophet + + + + + sega.sf7000 + + + + + thomson.1s160 + + + + + thomson.1s320 + + + + + thomson.1s80 + + + + + thomson.2s160 + + + + + thomson.2s320 + + + + + tsc.flex.dsdd + + + + + tsc.flex.ssdd + + + + + zx.3dos.ds80 + + + + + zx.3dos.ss40 + + + + + zx.d80.ds80 + + + + + zx.fdd3000.ds80 + + + + + zx.fdd3000.ss40 + + + + + zx.kempston.ds80 + + + + + zx.kempston.ss40 + + + + + zx.opus.ds80 + + + + + zx.opus.ss40 + + + + + zx.plusd.ds80 + + + + + zx.quorum.ds80 + + + + + zx.rocky.ds80 + + + + + zx.rocky.ss40 + + + + + zx.trdos.ds80 + + + + + zx.turbodrive.ds40 + + + + + zx.turbodrive.ds80 + + + + + zx.watford.ds80 + + + + + zx.watford.ss40 + + + + + + + + File Path + + + + + + + + + true + + + + + + + + 0 + 0 + + + + + + + + + + false + + + + + + + + + Filename + + + + + + + + + true + + + + + + + + 0 + 0 + + + + + + + + + + false + + + + + @@ -606,25 +1544,14 @@ li.checked::marker { content: "\2612"; } - - - - Select Folder - - - - - - - Select File - - - Launch + + false + diff --git a/ui/readdisk.ui.1 b/ui/readdisk.ui.1 index 2b3c7c3..a523375 100644 --- a/ui/readdisk.ui.1 +++ b/ui/readdisk.ui.1 @@ -1,18 +1,21 @@ - Form - + ReadDialog + 0 0 - 660 - 622 + 685 + 652 Read From Disk + + true + @@ -29,161 +32,155 @@ - - - - - - 300 - - - Qt::AlignmentFlag::AlignCenter - - - - - - - - - - + + + + HFE kbit/s + - Retries + Bitrate - Double-Step [0-9] + Head steps - Revs to read per track - - - - - - - 250 - - - Qt::AlignmentFlag::AlignCenter - - - - - - - 2 - - - Qt::AlignmentFlag::AlignCenter + Revisions - - - A + + + Drive to read - - Qt::AlignmentFlag::AlignCenter - - - - - - - Bitrate (HFE kbit/s) - - - - - - - 3 - - - Qt::AlignmentFlag::AlignCenter - - - - - - - PLLSPEC Period: - - - - - - - No Clobber - - - - - - - F7 Drive Select (AB012) - - - - - - - 3 - - - Qt::AlignmentFlag::AlignCenter - - - - - - - 5.25 Set Pin 2 - - - - - - - Raw - - - - - - - - High + + A + + + + + B + + + + + 0 + + + + + 1 + + + + + 2 + + + + + + + + + + false - - true + + Fake index pulses at SPEED + + + 300 + + + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter - + + + + + + + + + rpm + + + + + ms + + + + + us + + + + + ns + + + + + scp + + + + + + + + + + - Low + Lowpass + + + + + + + Filter flux periods shorter than USEC + + + + Drive select + + + + + + + Period + + + + + Period adjustment as percentage of phase error + 5 @@ -198,6 +195,9 @@ + + Phase adjustment as percentage of phase error + 60 @@ -205,6 +205,75 @@ + + + + HFE kbit/s + + + 250 + + + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter + + + + + + + PLLSPEC + + + + + + + Number of revolutions to read per track + + + 3 + + + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter + + + + + + + false + + + Head steps between cylinders + + + 1 + + + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter + + + + + + + Retries + + + + + + + Number of retries per seek-retry + + + 3 + + + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter + + + @@ -237,13 +306,6 @@ - - - - 0-34,35-79 - - - @@ -272,67 +334,134 @@ - - - - - + + + + 0-34,35-79 + + + + + + + No Clobber + + + + + + + Raw + + + + + + + 5.25 Set Pin 2 + + + + + + + + + High + + + false + + + + + + + Low + + + + + + Flippy offset - - - - Panasonic - - - true - - + + + + + + Panasonic + + + true + + + + + + + Teac + + + + - - - - Teac - - - - - - - Qt::Orientation::Horizontal - - - - 40 - 20 - - - - - - - - - + Adjust-Speed - - - - 300 - - - - - + + + + + + 300 + + + + + + + + + + + + + rpm + + + + + ms + + + + + us + + + + + ns + + + + + scp + + + + + @@ -349,6 +478,19 @@ + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + @@ -375,7 +517,18 @@ - + + + + 1 + + + + + 2 + + + @@ -445,13 +598,10 @@ - - + + gw.exe read --device=COM3 "C:\Users\Rainer\Downloads\GreaseweazleGUI-v2.127\mydisk.scp" - - true - diff --git a/ui_read_disk.py b/ui_read_disk.py index dd0c231..e6a729e 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(660, 652) + ReadDialog.resize(685, 710) ReadDialog.setModal(True) self.verticalLayout_5 = QVBoxLayout(ReadDialog) self.verticalLayout_5.setObjectName(u"verticalLayout_5") @@ -69,7 +69,6 @@ class Ui_ReadDialog(object): self.horizontalLayout_8.setObjectName(u"horizontalLayout_8") self.le_fake_index = QLineEdit(self.groupBox_2) self.le_fake_index.setObjectName(u"le_fake_index") - self.le_fake_index.setAcceptDrops(False) self.le_fake_index.setAlignment(Qt.AlignmentFlag.AlignLeading|Qt.AlignmentFlag.AlignLeft|Qt.AlignmentFlag.AlignVCenter) self.horizontalLayout_8.addWidget(self.le_fake_index) @@ -152,7 +151,6 @@ class Ui_ReadDialog(object): self.le_double_step = QLineEdit(self.groupBox_2) self.le_double_step.setObjectName(u"le_double_step") - self.le_double_step.setAcceptDrops(False) self.le_double_step.setAlignment(Qt.AlignmentFlag.AlignLeading|Qt.AlignmentFlag.AlignLeft|Qt.AlignmentFlag.AlignVCenter) self.gridLayout_2.addWidget(self.le_double_step, 0, 1, 1, 1) @@ -227,79 +225,85 @@ class Ui_ReadDialog(object): self.gridLayout_3.addWidget(self.cb_raw, 4, 1, 1, 1) - - self.verticalLayout_2.addLayout(self.gridLayout_3) - - self.horizontalLayout_10 = QHBoxLayout() - self.horizontalLayout_10.setObjectName(u"horizontalLayout_10") self.cb_pin2 = QCheckBox(self.groupBox_3) self.cb_pin2.setObjectName(u"cb_pin2") - self.horizontalLayout_10.addWidget(self.cb_pin2) + self.gridLayout_3.addWidget(self.cb_pin2, 5, 0, 1, 1) + self.horizontalLayout_5 = QHBoxLayout() + self.horizontalLayout_5.setObjectName(u"horizontalLayout_5") self.rb_pin2_high = QRadioButton(self.groupBox_3) self.rb_pin2_high.setObjectName(u"rb_pin2_high") - self.rb_pin2_high.setChecked(True) + self.rb_pin2_high.setChecked(False) - self.horizontalLayout_10.addWidget(self.rb_pin2_high) + self.horizontalLayout_5.addWidget(self.rb_pin2_high) self.rb_pin2_low = QRadioButton(self.groupBox_3) self.rb_pin2_low.setObjectName(u"rb_pin2_low") - self.horizontalLayout_10.addWidget(self.rb_pin2_low) + self.horizontalLayout_5.addWidget(self.rb_pin2_low) - self.verticalLayout_2.addLayout(self.horizontalLayout_10) + self.gridLayout_3.addLayout(self.horizontalLayout_5, 5, 1, 1, 1) - self.horizontalLayout_4 = QHBoxLayout() - self.horizontalLayout_4.setObjectName(u"horizontalLayout_4") self.cb_flippy = QCheckBox(self.groupBox_3) self.cb_flippy.setObjectName(u"cb_flippy") - self.horizontalLayout_4.addWidget(self.cb_flippy) + self.gridLayout_3.addWidget(self.cb_flippy, 6, 0, 1, 1) + self.horizontalLayout_10 = QHBoxLayout() + self.horizontalLayout_10.setObjectName(u"horizontalLayout_10") self.rb_panasonic = QRadioButton(self.groupBox_3) self.rb_panasonic.setObjectName(u"rb_panasonic") self.rb_panasonic.setChecked(True) - self.horizontalLayout_4.addWidget(self.rb_panasonic) + self.horizontalLayout_10.addWidget(self.rb_panasonic) self.rb_teac = QRadioButton(self.groupBox_3) self.rb_teac.setObjectName(u"rb_teac") - self.horizontalLayout_4.addWidget(self.rb_teac) - - self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum) - - self.horizontalLayout_4.addItem(self.horizontalSpacer_2) + self.horizontalLayout_10.addWidget(self.rb_teac) - self.verticalLayout_2.addLayout(self.horizontalLayout_4) + self.gridLayout_3.addLayout(self.horizontalLayout_10, 6, 1, 1, 1) - self.horizontalLayout_5 = QHBoxLayout() - self.horizontalLayout_5.setObjectName(u"horizontalLayout_5") self.cb_adjust_speed = QCheckBox(self.groupBox_3) self.cb_adjust_speed.setObjectName(u"cb_adjust_speed") - self.horizontalLayout_5.addWidget(self.cb_adjust_speed) + self.gridLayout_3.addWidget(self.cb_adjust_speed, 7, 0, 1, 1) + self.horizontalLayout_4 = QHBoxLayout() + self.horizontalLayout_4.setObjectName(u"horizontalLayout_4") self.le_adjust_speed = QLineEdit(self.groupBox_3) self.le_adjust_speed.setObjectName(u"le_adjust_speed") - self.horizontalLayout_5.addWidget(self.le_adjust_speed) + self.horizontalLayout_4.addWidget(self.le_adjust_speed) self.combo_adjust_speed = QComboBox(self.groupBox_3) + self.combo_adjust_speed.addItem("") + self.combo_adjust_speed.addItem("") + self.combo_adjust_speed.addItem("") + self.combo_adjust_speed.addItem("") + self.combo_adjust_speed.addItem("") + self.combo_adjust_speed.addItem("") self.combo_adjust_speed.setObjectName(u"combo_adjust_speed") - self.horizontalLayout_5.addWidget(self.combo_adjust_speed) + self.horizontalLayout_4.addWidget(self.combo_adjust_speed) - self.verticalLayout_2.addLayout(self.horizontalLayout_5) + self.gridLayout_3.addLayout(self.horizontalLayout_4, 7, 1, 1, 1) + + + self.verticalLayout_2.addLayout(self.gridLayout_3) self.verticalSpacer = QSpacerItem(20, 10, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding) self.verticalLayout_2.addItem(self.verticalSpacer) + self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum) + + self.verticalLayout_2.addItem(self.horizontalSpacer_2) + self.horizontalLayout_3.addWidget(self.groupBox_3) @@ -310,10 +314,53 @@ class Ui_ReadDialog(object): self.groupBox.setObjectName(u"groupBox") self.gridLayout = QGridLayout(self.groupBox) self.gridLayout.setObjectName(u"gridLayout") + self.label_2 = QLabel(self.groupBox) + self.label_2.setObjectName(u"label_2") + + self.gridLayout.addWidget(self.label_2, 0, 0, 1, 1) + + self.le_fileprefix = QLineEdit(self.groupBox) + self.le_fileprefix.setObjectName(u"le_fileprefix") + + self.gridLayout.addWidget(self.le_fileprefix, 0, 1, 1, 1) + self.label_3 = QLabel(self.groupBox) self.label_3.setObjectName(u"label_3") + self.label_3.setAlignment(Qt.AlignmentFlag.AlignRight|Qt.AlignmentFlag.AlignTrailing|Qt.AlignmentFlag.AlignVCenter) - self.gridLayout.addWidget(self.label_3, 0, 3, 1, 1) + self.gridLayout.addWidget(self.label_3, 0, 2, 1, 1) + + self.horizontalLayout_6 = QHBoxLayout() + self.horizontalLayout_6.setSpacing(4) + self.horizontalLayout_6.setObjectName(u"horizontalLayout_6") + self.le_suffix = QLineEdit(self.groupBox) + self.le_suffix.setObjectName(u"le_suffix") + + self.horizontalLayout_6.addWidget(self.le_suffix) + + self.btn_suffix_inc = QPushButton(self.groupBox) + self.btn_suffix_inc.setObjectName(u"btn_suffix_inc") + icon = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.GoUp)) + self.btn_suffix_inc.setIcon(icon) + self.btn_suffix_inc.setAutoDefault(False) + + self.horizontalLayout_6.addWidget(self.btn_suffix_inc) + + self.btn_suffix_dec = QPushButton(self.groupBox) + self.btn_suffix_dec.setObjectName(u"btn_suffix_dec") + icon1 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.GoDown)) + self.btn_suffix_dec.setIcon(icon1) + self.btn_suffix_dec.setAutoDefault(False) + + self.horizontalLayout_6.addWidget(self.btn_suffix_dec) + + self.cb_inc = QCheckBox(self.groupBox) + self.cb_inc.setObjectName(u"cb_inc") + + self.horizontalLayout_6.addWidget(self.cb_inc) + + + self.gridLayout.addLayout(self.horizontalLayout_6, 0, 3, 1, 1) self.label_4 = QLabel(self.groupBox) self.label_4.setObjectName(u"label_4") @@ -321,6 +368,46 @@ class Ui_ReadDialog(object): self.gridLayout.addWidget(self.label_4, 1, 0, 1, 1) self.combo_disktype = QComboBox(self.groupBox) + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") + self.combo_disktype.addItem("") self.combo_disktype.setObjectName(u"combo_disktype") self.gridLayout.addWidget(self.combo_disktype, 1, 1, 1, 1) @@ -330,46 +417,184 @@ class Ui_ReadDialog(object): self.gridLayout.addWidget(self.cb_format, 1, 2, 1, 1) - self.horizontalLayout_6 = QHBoxLayout() - self.horizontalLayout_6.setObjectName(u"horizontalLayout_6") - self.le_suffix = QLineEdit(self.groupBox) - self.le_suffix.setObjectName(u"le_suffix") - - self.horizontalLayout_6.addWidget(self.le_suffix) - - self.btn_suffix_inc = QPushButton(self.groupBox) - self.btn_suffix_inc.setObjectName(u"btn_suffix_inc") - - self.horizontalLayout_6.addWidget(self.btn_suffix_inc) - - self.btn_suffix_dec = QPushButton(self.groupBox) - self.btn_suffix_dec.setObjectName(u"btn_suffix_dec") - - self.horizontalLayout_6.addWidget(self.btn_suffix_dec) - - - self.gridLayout.addLayout(self.horizontalLayout_6, 0, 4, 1, 1) - - self.cb_inc = QCheckBox(self.groupBox) - self.cb_inc.setObjectName(u"cb_inc") - - self.gridLayout.addWidget(self.cb_inc, 0, 2, 1, 1) - - self.le_filename = QLineEdit(self.groupBox) - self.le_filename.setObjectName(u"le_filename") - - self.gridLayout.addWidget(self.le_filename, 0, 1, 1, 1) - - self.label_2 = QLabel(self.groupBox) - self.label_2.setObjectName(u"label_2") - - self.gridLayout.addWidget(self.label_2, 0, 0, 1, 1) - self.combo_format = QComboBox(self.groupBox) self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") + self.combo_format.addItem("") self.combo_format.setObjectName(u"combo_format") - self.gridLayout.addWidget(self.combo_format, 1, 3, 1, 2) + self.gridLayout.addWidget(self.combo_format, 1, 3, 1, 1) + + self.label_8 = QLabel(self.groupBox) + self.label_8.setObjectName(u"label_8") + + self.gridLayout.addWidget(self.label_8, 2, 0, 1, 1) + + self.horizontalLayout = QHBoxLayout() + self.horizontalLayout.setObjectName(u"horizontalLayout") + self.le_filepath = QLineEdit(self.groupBox) + self.le_filepath.setObjectName(u"le_filepath") + self.le_filepath.setReadOnly(True) + + self.horizontalLayout.addWidget(self.le_filepath) + + self.btn_path_select = QPushButton(self.groupBox) + self.btn_path_select.setObjectName(u"btn_path_select") + self.btn_path_select.setMinimumSize(QSize(0, 0)) + icon2 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.FolderOpen)) + self.btn_path_select.setIcon(icon2) + self.btn_path_select.setAutoDefault(False) + + self.horizontalLayout.addWidget(self.btn_path_select) + + + self.gridLayout.addLayout(self.horizontalLayout, 2, 1, 1, 3) + + self.label_7 = QLabel(self.groupBox) + self.label_7.setObjectName(u"label_7") + + self.gridLayout.addWidget(self.label_7, 3, 0, 1, 1) + + self.horizontalLayout_1 = QHBoxLayout() + self.horizontalLayout_1.setObjectName(u"horizontalLayout_1") + self.le_filename = QLineEdit(self.groupBox) + self.le_filename.setObjectName(u"le_filename") + self.le_filename.setReadOnly(True) + + self.horizontalLayout_1.addWidget(self.le_filename) + + self.btn_file_select = QPushButton(self.groupBox) + self.btn_file_select.setObjectName(u"btn_file_select") + self.btn_file_select.setMinimumSize(QSize(0, 0)) + self.btn_file_select.setIcon(icon2) + self.btn_file_select.setAutoDefault(False) + + self.horizontalLayout_1.addWidget(self.btn_file_select) + + + self.gridLayout.addLayout(self.horizontalLayout_1, 3, 1, 1, 3) self.verticalLayout_5.addWidget(self.groupBox) @@ -405,16 +630,6 @@ class Ui_ReadDialog(object): self.horizontalLayout_7.addItem(self.horizontalSpacer) - self.btn_select_folder = QPushButton(ReadDialog) - self.btn_select_folder.setObjectName(u"btn_select_folder") - - self.horizontalLayout_7.addWidget(self.btn_select_folder) - - self.btn_select_file = QPushButton(ReadDialog) - self.btn_select_file.setObjectName(u"btn_select_file") - - self.horizontalLayout_7.addWidget(self.btn_select_file) - self.btn_launch = QPushButton(ReadDialog) self.btn_launch.setObjectName(u"btn_launch") @@ -435,6 +650,9 @@ class Ui_ReadDialog(object): self.retranslateUi(ReadDialog) + self.btn_launch.setDefault(False) + + QMetaObject.connectSlotsByName(ReadDialog) # setupUi @@ -520,17 +738,193 @@ class Ui_ReadDialog(object): self.rb_teac.setText(QCoreApplication.translate("ReadDialog", u"Teac", None)) self.cb_adjust_speed.setText(QCoreApplication.translate("ReadDialog", u"Adjust-Speed", None)) self.le_adjust_speed.setText(QCoreApplication.translate("ReadDialog", u"300", None)) - self.groupBox.setTitle("") - self.label_3.setText(QCoreApplication.translate("ReadDialog", u"Suffix:", None)) - self.label_4.setText(QCoreApplication.translate("ReadDialog", u"DiskType:", None)) - self.cb_format.setText(QCoreApplication.translate("ReadDialog", u"Format:", None)) - self.btn_suffix_inc.setText(QCoreApplication.translate("ReadDialog", u">>>>", None)) - self.btn_suffix_dec.setText(QCoreApplication.translate("ReadDialog", u"<<<<", None)) - self.cb_inc.setText(QCoreApplication.translate("ReadDialog", u"Inc++", None)) - self.le_filename.setText(QCoreApplication.translate("ReadDialog", u"mydisk.scp", None)) - self.label_2.setText(QCoreApplication.translate("ReadDialog", u"Filename:", None)) - self.combo_format.setItemText(0, QCoreApplication.translate("ReadDialog", u"UNSPECIFIED FORMAT", None)) + self.combo_adjust_speed.setItemText(0, "") + self.combo_adjust_speed.setItemText(1, QCoreApplication.translate("ReadDialog", u"rpm", None)) + self.combo_adjust_speed.setItemText(2, QCoreApplication.translate("ReadDialog", u"ms", None)) + self.combo_adjust_speed.setItemText(3, QCoreApplication.translate("ReadDialog", u"us", None)) + self.combo_adjust_speed.setItemText(4, QCoreApplication.translate("ReadDialog", u"ns", None)) + self.combo_adjust_speed.setItemText(5, QCoreApplication.translate("ReadDialog", u"scp", None)) + self.groupBox.setTitle("") + self.label_2.setText(QCoreApplication.translate("ReadDialog", u"File Prefix", None)) + self.le_fileprefix.setText(QCoreApplication.translate("ReadDialog", u"mydisk", None)) + self.label_3.setText(QCoreApplication.translate("ReadDialog", u"Suffix", None)) + self.btn_suffix_inc.setText("") + 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.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.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.groupBox_5.setTitle("") @@ -542,8 +936,6 @@ class Ui_ReadDialog(object): "li.checked::marker { content: \"\\2612\"; }\n" "\n" "

Using CMD Console mode

", None)) - self.btn_select_folder.setText(QCoreApplication.translate("ReadDialog", u"Select Folder", None)) - self.btn_select_file.setText(QCoreApplication.translate("ReadDialog", u"Select File", None)) self.btn_launch.setText(QCoreApplication.translate("ReadDialog", u"Launch", None)) self.btn_back.setText(QCoreApplication.translate("ReadDialog", u"Back", None)) # retranslateUi