feat(gui): 新增查看换盘G-code按钮,弹出只读窗口展示内容

This commit is contained in:
2026-07-30 09:01:48 +08:00
parent a9d2a0cbf1
commit bcff3ae264
3 changed files with 46 additions and 22 deletions
+36
View File
@@ -34,6 +34,7 @@ try:
QAbstractItemView,
QCheckBox,
QComboBox,
QDialog,
QFileDialog,
QFormLayout,
QGridLayout,
@@ -512,10 +513,13 @@ class MainWindow(QMainWindow):
self.swap_gcode_combo.setMinimumWidth(240)
self.swap_gcode_combo.setMaximumWidth(440)
self.refresh_button = QPushButton(t("gui.options.refresh"))
self.view_gcode_button = QPushButton(t("gui.options.view_gcode"))
self.open_folder_button = QPushButton(t("gui.options.open_folder"))
self.refresh_button.setFixedWidth(self.refresh_button.sizeHint().width())
self.view_gcode_button.setFixedWidth(self.view_gcode_button.sizeHint().width())
self.open_folder_button.setFixedWidth(self.open_folder_button.sizeHint().width())
self.refresh_button.clicked.connect(self.load_swap_gcode_to_combo)
self.view_gcode_button.clicked.connect(self.view_swap_gcode)
self.open_folder_button.clicked.connect(self.open_swap_gcode_folder)
# 默认份数
@@ -619,6 +623,7 @@ class MainWindow(QMainWindow):
grid.addWidget(self.swap_gcode_combo, 0, 1, 1, 2)
swap_btn_row = QHBoxLayout()
swap_btn_row.addWidget(self.refresh_button)
swap_btn_row.addWidget(self.view_gcode_button)
swap_btn_row.addWidget(self.open_folder_button)
swap_btn_row.addStretch(1)
grid.addLayout(swap_btn_row, 0, 3)
@@ -889,6 +894,35 @@ class MainWindow(QMainWindow):
folder.mkdir(parents=True, exist_ok=True)
self.open_path(folder)
def view_swap_gcode(self) -> None:
"""在弹出的只读窗口中展示当前选中的换盘 G-code 内容。"""
gcode_path = self.swap_gcode_combo.currentData()
if not gcode_path:
return
try:
text = Path(gcode_path).read_text(encoding="utf-8-sig", errors="replace")
except OSError as exc:
QMessageBox.warning(self, t("gui.dialog.warning.title"), str(exc))
return
dialog = QDialog(self)
dialog.setWindowTitle(t("gui.dialog.view_gcode.title") + " - " + Path(gcode_path).name)
dialog.resize(700, 480)
layout = QVBoxLayout(dialog)
editor = QTextEdit()
editor.setReadOnly(True)
font = QFont("Consolas", 10)
editor.setFont(font)
editor.setText(text)
layout.addWidget(editor)
close_btn = QPushButton(t("gui.button.close"))
close_btn.clicked.connect(dialog.close)
btn_row = QHBoxLayout()
btn_row.addStretch(1)
btn_row.addWidget(close_btn)
layout.addLayout(btn_row)
dialog.exec()
def open_patch_config(self) -> None:
"""打开 G-code 补丁配置文件。"""
path = default_patch_config_path()
@@ -1490,9 +1524,11 @@ class MainWindow(QMainWindow):
self.options_group.setTitle(t("gui.options.group.title"))
self.refresh_button.setText(t("gui.options.refresh"))
self.open_folder_button.setText(t("gui.options.open_folder"))
self.view_gcode_button.setText(t("gui.options.view_gcode"))
# 重新计算按钮宽度以适应翻译后的文本长度
self.refresh_button.setFixedWidth(self.refresh_button.sizeHint().width())
self.open_folder_button.setFixedWidth(self.open_folder_button.sizeHint().width())
self.view_gcode_button.setFixedWidth(self.view_gcode_button.sizeHint().width())
self.bed_cooldown_check.setText(t("gui.options.bed_cooldown"))
self.eject_wait_check.setText(t("gui.options.eject_wait"))
self.show_plate_number_check.setText(t("gui.options.plate_number"))