diff --git a/floppyemu/__init__.py b/floppyemu/__init__.py
--- a/floppyemu/__init__.py
+++ b/floppyemu/__init__.py
@@ -20,15 +20,21 @@ def get_or_create_empty_image(index, tem
return filename
-def format_images(device, indexes, temp_path, size=1440):
+def format_images(device, indexes, temp_path, size=1440, callback=None):
for ipair in indexes:
if isinstance(ipair, int):
image = get_or_create_empty_image(ipair, temp_path, size)
write_image(device, image, ipair)
+ os.remove(image)
+ if callback:
+ callback(indexes, ipair)
else:
for i in range(ipair[0], ipair[1]):
image = get_or_create_empty_image(i, temp_path, size)
write_image(device, image, i)
+ os.remove(image)
+ if callback:
+ callback(ipair, i)
def write_image(device, path, index=0):
diff --git a/forms/format_dlgs.py b/forms/format_dlgs.py
--- a/forms/format_dlgs.py
+++ b/forms/format_dlgs.py
@@ -1,4 +1,5 @@
from PyQt5 import QtWidgets
+from PyQt5.QtWidgets import QApplication
from floppyemu import format_images
from ui import format_dialog, format_one_dialog
@@ -21,15 +22,25 @@ class FormatManyDialog(QtWidgets.QDialog
def accept(self):
try:
if self.rb_size_720.isChecked():
- format_images(self.__device, ((self.sb_from.value(), self.sb_to.value() + 1),), self.__temp_path, 720)
+ size = 720
elif self.rb_size_1440.isChecked():
- format_images(self.__device, ((self.sb_from.value(), self.sb_to.value() + 1),), self.__temp_path, 1440)
+ size = 1440
else:
QtWidgets.QMessageBox.critical(
self, 'Error',
'Please choose image size before proceeding'
)
return
+
+ self.rb_size_720.setDisabled(True)
+ self.rb_size_1440.setDisabled(True)
+ self.sb_from.setDisabled(True)
+ self.sb_to.setDisabled(True)
+ self.buttonBox.setDisabled(True)
+ format_images(
+ self.__device, ((self.sb_from.value(), self.sb_to.value() + 1),), self.__temp_path, size,
+ self.__update_progress
+ )
except PermissionError:
QtWidgets.QMessageBox.critical(
self, 'Permission error',
@@ -40,6 +51,11 @@ class FormatManyDialog(QtWidgets.QDialog
super().accept()
+ def __update_progress(self, indices, index):
+ self.progressBar.setMaximum(indices[1] - indices[0])
+ self.progressBar.setValue(index - indices[0])
+ QApplication.instance().processEvents()
+
class FormatOneDialog(QtWidgets.QDialog, format_one_dialog.Ui_Dialog):
def __init__(self, index, device, temp_path, parent=None):
diff --git a/ui/format_dialog.py b/ui/format_dialog.py
--- a/ui/format_dialog.py
+++ b/ui/format_dialog.py
@@ -11,7 +11,7 @@ from PyQt5 import QtCore, QtGui, QtWidge
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
- Dialog.resize(400, 96)
+ Dialog.resize(400, 119)
self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setSpacing(0)
@@ -19,16 +19,16 @@ class Ui_Dialog(object):
self.gridLayout = QtWidgets.QGridLayout()
self.gridLayout.setObjectName("gridLayout")
self.sb_to = QtWidgets.QSpinBox(Dialog)
+ self.sb_to.setMaximum(999)
self.sb_to.setObjectName("sb_to")
- self.sb_to.setMaximum(999)
self.gridLayout.addWidget(self.sb_to, 1, 1, 1, 1)
self.label_2 = QtWidgets.QLabel(Dialog)
self.label_2.setMaximumSize(QtCore.QSize(16777215, 16))
self.label_2.setObjectName("label_2")
self.gridLayout.addWidget(self.label_2, 0, 1, 1, 1)
self.sb_from = QtWidgets.QSpinBox(Dialog)
+ self.sb_from.setMaximum(999)
self.sb_from.setObjectName("sb_from")
- self.sb_from.setMaximum(999)
self.gridLayout.addWidget(self.sb_from, 1, 0, 1, 1)
self.label = QtWidgets.QLabel(Dialog)
self.label.setMaximumSize(QtCore.QSize(16777215, 16))
@@ -42,6 +42,11 @@ class Ui_Dialog(object):
self.rb_size_1440.setObjectName("rb_size_1440")
self.gridLayout.addWidget(self.rb_size_1440, 2, 1, 1, 1)
self.verticalLayout.addLayout(self.gridLayout)
+ self.progressBar = QtWidgets.QProgressBar(Dialog)
+ self.progressBar.setMaximum(50)
+ self.progressBar.setProperty("value", 0)
+ self.progressBar.setObjectName("progressBar")
+ self.verticalLayout.addWidget(self.progressBar)
self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
diff --git a/ui/format_dialog.ui b/ui/format_dialog.ui
--- a/ui/format_dialog.ui
+++ b/ui/format_dialog.ui
@@ -7,7 +7,7 @@
0
0
400
- 96
+ 119
@@ -52,7 +52,11 @@
-
-
+
+
+ 999
+
+
-
@@ -87,6 +91,16 @@
-
+
+
+ 50
+
+
+ 0
+
+
+
+ -
Qt::Horizontal