Changeset - d1a9a47788f8
[Not reviewed]
default
0 4 0
Silverwing - 4 years ago 2020-06-22 21:55:45

Progress bar for mass formatting
4 files changed with 49 insertions and 8 deletions:
0 comments (0 inline, 0 general)
floppyemu/__init__.py
Show inline comments
 
@@ -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):
forms/format_dlgs.py
Show inline comments
 
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):
ui/format_dialog.py
Show inline comments
 
@@ -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)
ui/format_dialog.ui
Show inline comments
 
@@ -7,7 +7,7 @@
 
    <x>0</x>
 
    <y>0</y>
 
    <width>400</width>
 
    <height>96</height>
 
    <height>119</height>
 
   </rect>
 
  </property>
 
  <property name="windowTitle">
 
@@ -52,7 +52,11 @@
 
      </widget>
 
     </item>
 
     <item row="1" column="0">
 
      <widget class="QSpinBox" name="sb_from"/>
 
      <widget class="QSpinBox" name="sb_from">
 
       <property name="maximum">
 
        <number>999</number>
 
       </property>
 
      </widget>
 
     </item>
 
     <item row="0" column="0">
 
      <widget class="QLabel" name="label">
 
@@ -87,6 +91,16 @@
 
    </layout>
 
   </item>
 
   <item>
 
    <widget class="QProgressBar" name="progressBar">
 
     <property name="maximum">
 
      <number>50</number>
 
     </property>
 
     <property name="value">
 
      <number>0</number>
 
     </property>
 
    </widget>
 
   </item>
 
   <item>
 
    <widget class="QDialogButtonBox" name="buttonBox">
 
     <property name="orientation">
 
      <enum>Qt::Horizontal</enum>
0 comments (0 inline, 0 general)