Skip to content

Commit 4d2fc9b

Browse files
authored
Merge branch 'dev' into ref/network_window
2 parents 7a023f2 + eb18055 commit 4d2fc9b

7 files changed

Lines changed: 122 additions & 135 deletions

File tree

‎BlocksScreen/lib/files.py‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ def __init__(
5454

5555
@property
5656
def file_list(self):
57+
"""Get the current list of files"""
5758
return self.files
5859

5960
def handle_message_received(self, method: str, data, params: dict) -> None:
@@ -80,6 +81,19 @@ def handle_message_received(self, method: str, data, params: dict) -> None:
8081
self.on_file_list[list].emit(self.files)
8182
self.on_dirs[list].emit(self.directories)
8283

84+
@QtCore.pyqtSlot(str, str, name="on_request_delete_file")
85+
def on_request_delete_file(self, filename: str, directory: str = "gcodes") -> None:
86+
"""Requests deletion of a file
87+
88+
Args:
89+
filename (str): file to delete
90+
directory (str): root directory where the file is located
91+
"""
92+
if not directory:
93+
self.ws.api.delete_file(filename)
94+
return
95+
self.ws.api.delete_file(filename, directory) # Use the root directory 'gcodes'
96+
8397
@QtCore.pyqtSlot(str, name="on_request_fileinfo")
8498
def on_request_fileinfo(self, filename: str) -> None:
8599
"""Requests metadata for a file

‎BlocksScreen/lib/moonrakerComm.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,7 @@ def get_gcode_thumbnail(self, filename_dir: str):
544544
def delete_file(self, filename: str, root_dir: str = "gcodes"):
545545
"""Request file deletion"""
546546
filepath = f"{root_dir}/{filename}"
547+
filepath = f"gcodes/{root_dir}/{filename}" if root_dir != "gcodes" else filepath
547548
return self._ws.send_request(
548549
method="server.files.delete_file",
549550
params={"path": filepath},

‎BlocksScreen/lib/panels/printTab.py‎

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,6 @@ def __init__(
126126
self.file_data.on_file_list.connect(self.filesPage_widget.on_file_list)
127127
self.jobStatusPage_widget = JobStatusWidget(self)
128128
self.addWidget(self.jobStatusPage_widget)
129-
130129
self.confirmPage_widget.on_accept.connect(
131130
self.jobStatusPage_widget.on_print_start
132131
)
@@ -167,19 +166,15 @@ def __init__(
167166
self.printer.print_stats_update[str, float].connect(
168167
self.jobStatusPage_widget.on_print_stats_update
169168
)
170-
171169
self.printer.print_stats_update[str, str].connect(self.on_print_stats_update)
172170
self.printer.print_stats_update[str, dict].connect(self.on_print_stats_update)
173171
self.printer.print_stats_update[str, float].connect(self.on_print_stats_update)
174-
175172
self.printer.gcode_move_update[str, list].connect(
176173
self.jobStatusPage_widget.on_gcode_move_update
177174
)
178-
179175
self.babystepPage = BabystepPage(self)
180176
self.babystepPage.request_back.connect(self.back_button)
181177
self.addWidget(self.babystepPage)
182-
183178
self.tune_page = TuneWidget(self)
184179
self.addWidget(self.tune_page)
185180
self.jobStatusPage_widget.tune_clicked.connect(
@@ -225,10 +220,8 @@ def __init__(
225220
self.tune_page.request_sensorsPage.connect(
226221
lambda: self.change_page(self.indexOf(self.sensorsPanel))
227222
)
228-
229223
self.sensorsPanel = SensorsWindow(self)
230224
self.addWidget(self.sensorsPanel)
231-
232225
self.printer.request_object_subscription_signal.connect(
233226
self.sensorsPanel.handle_available_fil_sensors
234227
)
@@ -245,11 +238,8 @@ def __init__(
245238
partial(self.change_page, self.indexOf(self.filesPage_widget))
246239
)
247240
self.babystepPage.run_gcode.connect(self.ws.api.run_gcode)
248-
249241
self.run_gcode_signal.connect(self.ws.api.run_gcode)
250-
251242
self.confirmPage_widget.on_delete.connect(self.delete_file)
252-
253243
self.change_page(self.indexOf(self.print_page)) # force set the initial page
254244

255245
@QtCore.pyqtSlot(str, dict, name="on_print_stats_update")
@@ -301,21 +291,22 @@ def on_slidePage_request(
301291
self.sliderPage.set_slider_maximum(max_value)
302292
self.change_page(self.indexOf(self.sliderPage))
303293

304-
def delete_file(self, direcotry: str, name: str):
305-
"""Handle Delete file button clicked"""
306-
self.directory: str = direcotry
307-
self.filename: str = name
294+
@QtCore.pyqtSlot(str, str, name="delete_file")
295+
@QtCore.pyqtSlot(str, name="delete_file")
296+
def delete_file(self, filename: str, directory: str = "gcodes") -> None:
297+
"""Handle Delete file signal, shows confirmation dialog"""
308298
self.dialogPage.set_message("Are you sure you want to delete this file?")
309-
self.dialogPage.button_clicked.connect(self.on_dialog_button_clicked)
310-
self.dialogPage.show()
299+
self.dialogPage.accepted.connect(
300+
lambda: self._on_delete_file_confirmed(filename, directory)
301+
)
302+
self.dialogPage.open()
311303

312-
def on_dialog_button_clicked(self, button_name: str) -> None:
313-
"""Handle dialog button clicks"""
314-
if button_name == "Confirm":
315-
self.ws.api.delete_file(self.filename, self.directory)
316-
self.dialogPage.hide()
317-
else:
318-
self.dialogPage.hide()
304+
def _on_delete_file_confirmed(self, filename: str, directory: str) -> None:
305+
"""Handle confirmed file deletion after user accepted the dialog"""
306+
self.file_data.on_request_delete_file(filename, directory)
307+
self.request_back.emit()
308+
self.filesPage_widget.reset_dir()
309+
self.dialogPage.disconnect()
319310

320311
def paintEvent(self, a0: QtGui.QPaintEvent) -> None:
321312
"""Widget painting"""
@@ -349,6 +340,7 @@ def handle_cancel_print(self) -> None:
349340
self.ws.api.cancel_print()
350341
self.on_cancel_print.emit()
351342
self.loadscreen.show()
343+
self.loadscreen.setModal(True)
352344
self.loadscreen.set_status_message("Cancelling print...\nPlease wait")
353345

354346
def change_page(self, index: int) -> None:

‎BlocksScreen/lib/panels/widgets/confirmPage.py‎

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,42 @@
1+
import os
12
import typing
23

4+
import helper_methods
35
from lib.utils.blocks_button import BlocksCustomButton
6+
from lib.utils.blocks_frame import BlocksCustomFrame
47
from lib.utils.blocks_label import BlocksLabel
58
from lib.utils.icon_button import IconButton
6-
from lib.utils.blocks_frame import BlocksCustomFrame
79
from PyQt6 import QtCore, QtGui, QtWidgets
810

9-
import helper_methods
10-
11-
12-
import os
13-
1411

1512
class ConfirmWidget(QtWidgets.QWidget):
1613
on_accept: typing.ClassVar[QtCore.pyqtSignal] = QtCore.pyqtSignal(
1714
str, list, name="on_accept"
1815
)
19-
on_reject: typing.ClassVar[QtCore.pyqtSignal] = QtCore.pyqtSignal(name="on_reject")
20-
16+
request_back: typing.ClassVar[QtCore.pyqtSignal] = QtCore.pyqtSignal(
17+
name="request-back"
18+
)
2119
on_delete: typing.ClassVar[QtCore.pyqtSignal] = QtCore.pyqtSignal(
22-
str, str, name="on_delete"
20+
str, str, name="delete_file"
2321
)
2422

2523
def __init__(self, parent) -> None:
2624
super().__init__(parent)
27-
self.setupUI()
25+
self._setupUI()
2826
self.setMouseTracking(True)
2927
self.setAttribute(QtCore.Qt.WidgetAttribute.WA_AcceptTouchEvents, True)
3028
self.thumbnail: QtGui.QImage = QtGui.QImage()
3129
self._thumbnails: typing.List = []
32-
self.directory = ""
30+
self.directory = "gcodes"
3331
self.filename = ""
3432
self.confirm_button.clicked.connect(
3533
lambda: self.on_accept.emit(
3634
str(os.path.join(self.directory, self.filename)), self._thumbnails
3735
)
3836
)
39-
self.back_btn.clicked.connect(self.on_reject.emit)
40-
self.reject_button.clicked.connect(
41-
lambda: self.on_delete.emit(self.directory, self.filename)
37+
self.back_btn.clicked.connect(self.request_back.emit)
38+
self.delete_file_button.clicked.connect(
39+
lambda: self.on_delete.emit(self.filename, self.directory)
4240
)
4341

4442
@QtCore.pyqtSlot(str, dict, name="on_show_widget")
@@ -152,7 +150,7 @@ def showEvent(self, a0: QtGui.QShowEvent) -> None:
152150
self.cf_thumbnail.close()
153151
return super().showEvent(a0)
154152

155-
def setupUI(self) -> None:
153+
def _setupUI(self) -> None:
156154
"""Setup widget ui"""
157155
sizePolicy = QtWidgets.QSizePolicy(
158156
QtWidgets.QSizePolicy.Policy.MinimumExpanding,
@@ -263,18 +261,18 @@ def setupUI(self) -> None:
263261
self.confirm_button, 0, QtCore.Qt.AlignmentFlag.AlignCenter
264262
)
265263

266-
self.reject_button = BlocksCustomButton(parent=self.info_frame)
267-
self.reject_button.setMinimumSize(QtCore.QSize(250, 70))
268-
self.reject_button.setMaximumSize(QtCore.QSize(250, 70))
269-
self.reject_button.setFont(font)
270-
self.reject_button.setFlat(True)
271-
self.reject_button.setProperty(
264+
self.delete_file_button = BlocksCustomButton(parent=self.info_frame)
265+
self.delete_file_button.setMinimumSize(QtCore.QSize(250, 70))
266+
self.delete_file_button.setMaximumSize(QtCore.QSize(250, 70))
267+
self.delete_file_button.setFont(font)
268+
self.delete_file_button.setFlat(True)
269+
self.delete_file_button.setProperty(
272270
"icon_pixmap", QtGui.QPixmap(":/ui/media/btn_icons/garbage-icon.svg")
273271
)
274-
self.reject_button.setText("Delete")
272+
self.delete_file_button.setText("Delete")
275273
# 2. Align buttons to the right
276274
self.cf_confirm_layout.addWidget(
277-
self.reject_button, 0, QtCore.Qt.AlignmentFlag.AlignCenter
275+
self.delete_file_button, 0, QtCore.Qt.AlignmentFlag.AlignCenter
278276
)
279277

280278
self.info_layout.addLayout(self.cf_confirm_layout)

0 commit comments

Comments
 (0)