mirror of
https://github.com/mbusb/multibootusb
synced 2024-11-01 15:40:16 +00:00
Merge pull request #145 from alindt/fixes
Disable and enable ui when action in progress. Reduce CPU usage.
This commit is contained in:
commit
f4734bd931
@ -308,6 +308,21 @@ Are you SURE you want to enable it?",
|
||||
self.ui.label_persistence.setVisible(False)
|
||||
self.ui.slider_persistence.setVisible(False)
|
||||
|
||||
def ui_disable_controls(self):
|
||||
self.ui.combo_drives.setEnabled(False)
|
||||
self.ui.checkbox_all_drives.setEnabled(False)
|
||||
self.ui.button_detect_drives.setEnabled(False)
|
||||
self.ui.button_browse_image.setEnabled(False)
|
||||
self.ui.image_path.setEnabled(False)
|
||||
self.ui.tabWidget.setEnabled(False)
|
||||
|
||||
def ui_enable_controls(self):
|
||||
self.ui.combo_drives.setEnabled(True)
|
||||
self.ui.checkbox_all_drives.setEnabled(True)
|
||||
self.ui.button_detect_drives.setEnabled(True)
|
||||
self.ui.button_browse_image.setEnabled(True)
|
||||
self.ui.image_path.setEnabled(True)
|
||||
self.ui.tabWidget.setEnabled(True)
|
||||
|
||||
def update_slider_text(self):
|
||||
slide_value = self.ui.slider_persistence.value() * 1024 * 1024
|
||||
@ -332,12 +347,16 @@ Are you SURE you want to enable it?",
|
||||
log(iso_name(config.image_path) + ' has been successfully installed.')
|
||||
QtWidgets.QMessageBox.information(self, 'Finished...', iso_name(config.image_path) + ' has been successfully installed.')
|
||||
config.process_exist = None
|
||||
self.ui_enable_controls()
|
||||
|
||||
def onInstall_syslinuxClick(self):
|
||||
"""
|
||||
Function to install syslinux/extlinux on selected USB disk.
|
||||
:return:
|
||||
"""
|
||||
|
||||
self.ui_disable_controls()
|
||||
|
||||
if platform.system() == "Linux" or platform.system() == "Windows":
|
||||
|
||||
if self.ui.install_sys_all.isChecked() or self.ui.install_sys_only.isChecked():
|
||||
@ -359,6 +378,8 @@ Are you SURE you want to enable it?",
|
||||
QtWidgets.QMessageBox.information(self, 'No selection...',
|
||||
'Please select one of the option from above.')
|
||||
|
||||
self.ui_enable_controls()
|
||||
|
||||
def onedit_syslinux(self):
|
||||
"""
|
||||
Function to edit main syslinux.cfg file.
|
||||
@ -403,9 +424,13 @@ Are you SURE you want to enable it?",
|
||||
Triggers a function to uninstall a selected distro.
|
||||
:return:
|
||||
"""
|
||||
|
||||
self.ui_disable_controls()
|
||||
|
||||
if self.ui.installed_distros.currentItem() is None:
|
||||
log("Please select a distro from the list.")
|
||||
QtWidgets.QMessageBox.information(self, 'No selection.', 'Please select a distro from the list.')
|
||||
self.ui_enable_controls()
|
||||
else:
|
||||
config.uninstall_distro_dir_name = str(self.ui.installed_distros.currentItem().text()).strip()
|
||||
reply = QtWidgets.QMessageBox.question(self, "Review selection...",
|
||||
@ -418,6 +443,7 @@ Are you SURE you want to enable it?",
|
||||
log("Distro install directory not found. Just updating syslinux.cfg file.")
|
||||
update_sys_cfg_file()
|
||||
#self.uninstall.update_sys_cfg_file()
|
||||
self.ui_enable_controls()
|
||||
else:
|
||||
self.progress_thread_uninstall.start()
|
||||
|
||||
@ -434,6 +460,7 @@ Are you SURE you want to enable it?",
|
||||
self.ui.statusbar.showMessage("Status: Idle")
|
||||
QtWidgets.QMessageBox.information(self, 'Uninstall Complete...',
|
||||
config.uninstall_distro_dir_name + ' has been successfully removed.')
|
||||
self.ui_enable_controls()
|
||||
|
||||
def onCreateClick(self):
|
||||
"""
|
||||
@ -442,22 +469,29 @@ Are you SURE you want to enable it?",
|
||||
:param iso_link: LineEdit text as selected ISO link.
|
||||
:return:
|
||||
"""
|
||||
|
||||
self.ui_disable_controls()
|
||||
|
||||
if not config.usb_disk:
|
||||
log("ERROR: No USB device found.")
|
||||
QtWidgets.QMessageBox.information(self, "No Device...",
|
||||
"No USB device found.\n\nInsert USB and use Refresh USB button to detect USB.")
|
||||
self.ui_enable_controls()
|
||||
elif not config.image_path:
|
||||
log("No ISO selected.")
|
||||
QtWidgets.QMessageBox.information(self, "No ISO...", "No ISO found.\n\nPlease select an ISO.")
|
||||
self.ui_enable_controls()
|
||||
elif usb.details(config.usb_disk)['mount_point'] == 'No_Mount':
|
||||
log("ERROR: USB disk is not mounted.")
|
||||
QtWidgets.QMessageBox.information(self, "No Mount...", "USB disk is not mounted.\n"
|
||||
"Please mount USB disk and press refresh USB button.")
|
||||
self.ui_enable_controls()
|
||||
elif platform.system() == 'Linux' and config.usb_disk[-1].isdigit() is False:
|
||||
gen.log('Selected USB is a disk. Please select a disk partition from the drop down list')
|
||||
QtWidgets.QMessageBox.information(self, 'No Partition...!', 'USB disk selected doesn\'t contain a partition.\n'
|
||||
gen.log('Selected USB is a disk. Please select a disk partition from the drop down list')
|
||||
QtWidgets.QMessageBox.information(self, 'No Partition...!', 'USB disk selected doesn\'t contain a partition.\n'
|
||||
'Please select the partition (ending '
|
||||
'with a digit eg. /dev/sdb1)\nfrom the drop down list.')
|
||||
self.ui_enable_controls()
|
||||
else:
|
||||
# clean_iso_cfg_ext_dir(os.path.join(multibootusb_host_dir(), "iso_cfg_ext_dir")) # Need to be cleaned.
|
||||
# extract_cfg_file(config.image_path) # Extract files from ISO
|
||||
@ -476,7 +510,7 @@ Are you SURE you want to enable it?",
|
||||
log("MultiBoot Install: ISO file: " + iso_name(config.image_path))
|
||||
|
||||
if os.path.exists(config.image_path):
|
||||
self.ui.image_path.clear()
|
||||
# self.ui.image_path.clear()
|
||||
if config.distro:
|
||||
log("MultiBoot Install: Distro type detected: " + config.distro)
|
||||
copy_mbusb_dir_usb(config.usb_disk)
|
||||
@ -487,6 +521,7 @@ Are you SURE you want to enable it?",
|
||||
if install_size >= disk_usage(config.usb_mount).free:
|
||||
log("ERROR: Not enough space available on " + config.usb_disk)
|
||||
QtWidgets.QMessageBox.information(self, "No Space.", "No space available on " + config.usb_disk)
|
||||
self.ui_enable_controls()
|
||||
else:
|
||||
reply = QtWidgets.QMessageBox.question(self, 'Review selection...',
|
||||
'Selected USB disk: %s\n' % config.usb_disk +
|
||||
@ -503,11 +538,13 @@ Are you SURE you want to enable it?",
|
||||
else:
|
||||
QtWidgets.QMessageBox.information(self, 'Already exists...',
|
||||
os.path.basename(config.image_path) + ' is already installed.')
|
||||
self.ui_enable_controls()
|
||||
else:
|
||||
QtWidgets.QMessageBox.information(self, 'No support...',
|
||||
'Sorry.\n' + os.path.basename(config.image_path) +
|
||||
' is not supported at the moment.\n'
|
||||
'Please email this issue to feedback.multibootusb@gmail.com')
|
||||
self.ui_enable_controls()
|
||||
|
||||
# Added to refresh usb disk remaining size after distro installation
|
||||
# self.update_gui_usb_info()
|
||||
@ -519,11 +556,6 @@ Are you SURE you want to enable it?",
|
||||
"""
|
||||
self.ui.progressbar.setValue(0)
|
||||
self.ui.statusbar.showMessage("Status: Idle")
|
||||
self.ui.combo_drives.setEnabled(True)
|
||||
self.ui.button_browse_image.setEnabled(True)
|
||||
# self.ui.pushbtn_imager_refreshusb.setEnabled(True)
|
||||
# self.ui.imager_bootable.setText("Bootable ISO: ")
|
||||
# self.ui.imager_iso_size.setText("Image Size: ")
|
||||
config.process_exist = None
|
||||
|
||||
msgBox = QtWidgets.QMessageBox()
|
||||
@ -533,6 +565,8 @@ Are you SURE you want to enable it?",
|
||||
msgBox.setIcon(QtWidgets.QMessageBox.Information)
|
||||
msgBox.exec()
|
||||
|
||||
self.ui_enable_controls()
|
||||
|
||||
def dd_start(self):
|
||||
"""
|
||||
Function to block the widgets under ISO Imager tab...
|
||||
@ -555,10 +589,14 @@ Are you SURE you want to enable it?",
|
||||
QtWidgets.QMessageBox.information(self, 'Failed!', 'Failed writing image.')
|
||||
|
||||
def dd_write(self):
|
||||
self.ui_disable_controls()
|
||||
|
||||
if not config.usb_disk:
|
||||
QtWidgets.QMessageBox.information(self, 'No USB...', 'Please Insert USB disk and rerun multibootusb.')
|
||||
self.ui_enable_controls()
|
||||
elif not config.image_path:
|
||||
QtWidgets.QMessageBox.information(self, 'No ISO...', 'Please select an ISO.')
|
||||
self.ui_enable_controls()
|
||||
else:
|
||||
imager = Imager()
|
||||
if platform.system() == 'Linux' and config.usb_disk[-1].isdigit() is True:
|
||||
@ -566,12 +604,14 @@ Are you SURE you want to enable it?",
|
||||
QtWidgets.QMessageBox.information(self, 'Wrong Disk...!', 'Disk selected is a partition.\nISO is to '
|
||||
'be written to whole disk for proper functioning'
|
||||
'.\n\nPlease select the disk from the drop down list.')
|
||||
self.ui_enable_controls()
|
||||
else:
|
||||
usb_disk_size = int(imager.imager_usb_detail(config.usb_disk, partition=0).total_size)
|
||||
self.iso_size = os.path.getsize(config.image_path)
|
||||
if self.iso_size >= usb_disk_size:
|
||||
QtWidgets.QMessageBox.information(self, "No enough space on disk.", os.path.basename(config.image_path) +
|
||||
" size is larger than the size of " + config.usb_disk)
|
||||
self.ui_enable_controls()
|
||||
#elif gen.process_exist('explorer.exe') is not False:
|
||||
# # Check if windows explorer is running and inform user to close it.
|
||||
# QtWidgets.QMessageBox.information(self, "Windows Explorer", "Windows Explorer is running\n"
|
||||
@ -646,6 +686,7 @@ class GuiInstallProgress(QtCore.QThread):
|
||||
if not self.thread.isFinished() and config.percentage == 100:
|
||||
config.status_text = "Status: Please wait..."
|
||||
self.status.emit("Status: Please wait...")
|
||||
time.sleep(0.1)
|
||||
|
||||
self.update.emit(100)
|
||||
self.update.emit(0)
|
||||
@ -678,11 +719,14 @@ class GuiUninstallProgress(QtCore.QThread):
|
||||
|
||||
def run(self):
|
||||
self.thread.start()
|
||||
|
||||
while self.thread.isRunning():
|
||||
self.update.emit(config.percentage)
|
||||
self.status.emit(config.status_text)
|
||||
if not self.thread.isFinished() and config.percentage == 100:
|
||||
config.status_text = "Please wait..."
|
||||
time.sleep(0.1)
|
||||
|
||||
self.update.emit(100)
|
||||
self.update.emit(0)
|
||||
config.percentage = 0
|
||||
@ -724,6 +768,7 @@ class DD_Progress(QtCore.QThread):
|
||||
if not self.thread.isFinished() and config.percentage == 100:
|
||||
config.imager_status_text = ""
|
||||
self.status.emit("Please wait...")
|
||||
time.sleep(0.1)
|
||||
|
||||
self.update.emit(100)
|
||||
self.update.emit(0)
|
||||
|
Loading…
Reference in New Issue
Block a user