From 7dd6cd041c09768b37477c9bc1e37ffb15f6efc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alin=20Tr=C4=83istaru?= Date: Tue, 4 Apr 2017 15:22:01 +0300 Subject: [PATCH 1/4] GUI cleanup and minor fixes --- scripts/gui/multibootusb.ui | 1022 ++++++++++++++++++++------------ scripts/gui/ui_multibootusb.py | 588 ++++++++++-------- scripts/imager.py | 27 +- scripts/mbusb_gui.py | 136 +++-- 4 files changed, 1095 insertions(+), 678 deletions(-) diff --git a/scripts/gui/multibootusb.ui b/scripts/gui/multibootusb.ui index 62fc9a3..e966dbc 100644 --- a/scripts/gui/multibootusb.ui +++ b/scripts/gui/multibootusb.ui @@ -6,7 +6,7 @@ 0 0 - 644 + 717 516 @@ -16,92 +16,229 @@ + + true + 0 + + true + MultiBootUSB + + 0 + + + 0 + + + 0 + + + 0 + - - - - 0 MB + + 5 + + + 5 + + + 5 + + + 5 + + + + + USB Details - - - - - - - - Detect - - - - - - Detect Drives - - - - - - - - - - - - - - - 0 + + Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing + + + false + + + false + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + Drive: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + + Vendor: + + + + + + + + + + + + + + Model: + + + + + + + QFrame::NoFrame + + + Size: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Mount: + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - Create + Quit - - + + + + Qt::Vertical + + + + 20 + 40 + + + - - + + - <html><head/><body><p align="center"><span style=" font-weight:600;">Step 1</span></p></body></html> + Browse ISO + + + false + + + false - - + + + + QFrame::StyledPanel + + + QFrame::Sunken + + + QListView::Fixed + + + + + + + false + + + true + + + font-weight: 600 + - <html><head/><body><p align="center"><span style=" font-weight:600;">Step 2</span></p></body></html> + Persistence - - + + + + + - Close + Detect Drives - - + + - <html><head/><body><p align="center"><span style=" font-weight:600;">Step 3</span></p></body></html> + Uninstall Distro - + + + + false @@ -118,100 +255,69 @@ QSlider::TicksBothSides - - 0 - - - - - Uninstall (Optional) + + + + Qt::Horizontal - - - - - - - Uninstall Distro - - - - - - - - - - + + + 40 + 20 + + + - - - - USB Details + + + + All Drives - - - - - Drive :: - - - - - - - Vendor :: - - - - - - - Model:: - - - - - - - Size :: - - - - - - - Mount :: - - - - - - + + + + false + - Browse ISO + 0 MB - - + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + - <html><head/><body><p><span style=" font-weight:600;">Persistence</span></p></body></html> + Install - - - - All Drives + + + + 0 + + + false - + @@ -229,7 +335,7 @@ QFrame::Plain - + Status: Idle Qt::AutoText @@ -239,109 +345,239 @@ + + + + font-weight: 600; margin-top:15 + + + Step 1 :: Select drive + + + + + + + font-weight: 600; margin-top:15 + + + Step 2 :: Select ISO + + + 0 + + + + + + + font-weight: 600; margin-top:15 + + + Step 3 :: Install distro + + + + + true + - ISO Imager + Write Image to USB + + 0 + + + 0 + + + 0 + + + 0 + - - - - Imager - + + 5 + + + 5 + + + 5 + + + 5 + + + + + 5 + + + 5 + + + 5 + + + 5 + - - + + - -------------- USB details ------------------- + Select image - - - - + - + - Refresh USB + Browse image... - + + + + - Disk Label :: + Bootable ISO - + - Disk Size + Image Size - - - Disk Label :: + + + Qt::Vertical - + + + 20 + 40 + + + - - + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + - ------------------------------ ISO details ---------------------------------- + Select USB Drive - + - + + + + - Browse ISO + Refresh USB - - - - - - Bootable ISO + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - + + + + Disk Type: + + + + + + + Disk Size: + + + + + + + Disk Label: + + + + + + + + + + + + + + + + + + + + + + + + + - - - ISO Size + + + Qt::Vertical - + + + 20 + 40 + + + - - - - - - - Imager Progress - - @@ -351,26 +587,12 @@ - + Status: Idle - - - - Write/Create - - - - - - - Close - - - @@ -385,18 +607,45 @@ + + + + Write Image + + + + + + + Quit + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + - Syslinux + Install Syslinux @@ -412,14 +661,28 @@ - + + + + Install only syslinu&x (existing configurations will not be altered). + + + + + + + Install syslinux and copy all re&quired files. + + + + Install - + Qt::Horizontal @@ -432,26 +695,25 @@ - - - - Install syslinux and copy all required files. - - - - - - - Install only syslinux (existing configurations will not be altred). - - - - + + + + Qt::Vertical + + + + 20 + 40 + + + + + Edit syslinux.cfg @@ -459,14 +721,21 @@ - + Edit - + + + + <html><head/><body><p align="justify">Edit syslinux.cfg file directly using the default editor of your system. </p><p align="justify">Be <span style=" font-weight:600; color:#ff0000;">CAREFUL</span> while editing syslinux.cfg!</p></body></html> + + + + Qt::Horizontal @@ -479,96 +748,89 @@ - - - - <html><head/><body><p align="justify">Using this option user can edit syslinux.cfg file directly. It directly uses </p><p align="justify">default editor of host system. Be careful while editing syslinux.cfg file.</p></body></html> - - - + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 20 + + + + - QEMU + Boot ISO/USB - Boot ISO + Boot ISO :: Test bootable ISOs without reboot - - - - 2048 MB - - - - - - - 1024 MB - - - - - - - 256 MB + + + + Qt::Vertical - - - - - - Browse ISO + + + 20 + 40 + - + - - - - <html><head/><body><p>Best way to test your downloaded ISOs. </p></body></html> + + + + Qt::Horizontal - - - - - - 512 MB + + + 40 + 20 + - + - + Boot ISO - - + + - 768 MB + Browse ISO - + - - + + Qt::Vertical @@ -580,161 +842,140 @@ - + - Choose desired RAM and click on Boot ISO button. + Choose RAM size: - - - - Qt::Vertical + + + + &256 MB - - - 20 - 40 - + + + + + + &512 MB - + - - - - Qt::Vertical + + + + &768 MB - - - 20 - 40 - + + + + + + &1024 MB - + + + + + + 204&8 MB + + - - - - Qt::Vertical - - - - 20 - 40 - - - - + + + - Boot USB + Boot USB :: Test bootable USB drive without reboot - - + + - 768 MB + 20&48 MB - - - - 256 MB + + + + Qt::Horizontal - + + + 40 + 20 + + + - - - - <html><head/><body><p align="justify">Use this option if you want to check USB installation without reboot.</p></body></html> + + + + Qt::Vertical - + + + 20 + 40 + + + - - + + - 1024 MB + Boot USB - - + + - Choose desired RAM and click on Boot USB button. + 25&6 MB - - + + - 512 MB + 7&68 MB - - + + - Boot USB + Choose RAM size: - - + + - 2048 MB + 5&12 MB - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Vertical - - - - 20 - 40 - + + + + 1&024 MB - + @@ -743,6 +984,19 @@ + + + + Qt::Vertical + + + + 20 + 40 + + + + @@ -800,7 +1054,7 @@ - <html><head/><body><p align="center">An advanced bootable usb creator with option to install/uninstall </p><p align="center">multiple distros. This software is written in python and pyqt. </p><p align="center">Copyright 2010-2016 Sundar</p><p align="center"><span style=" font-weight:600; text-decoration: underline;">Author(s)</span>: Sundar, Ian Bruce, Lee</p><p align="center"><span style=" font-weight:600; text-decoration: underline;">Licence:</span> GPL version 2 or later</p><p align="center"><span style=" font-weight:600; text-decoration: underline;">Home page</span>: <a href=" http://multibootusb.org"><span style=" text-decoration: underline; color:#0000ff;">http://multibootusb.org</span></a></p><p align="center"><span style=" font-weight:600; text-decoration: underline;">Help/Email:</span> feedback.multibootusb@gmail.com</p><p align="center"><span style=" font-weight:600; text-decoration: underline;">Source Code:</span><span style=" font-weight:600;"/><a href="https://github.com/mbusb/multibootusb"><span style=" text-decoration: underline; color:#0000ff;">https://github.com/mbusb/multibootusb</span></a></p><p><br/></p></body></html> + <html><head/><body><p align="center">An advanced bootable usb creator with option to install/uninstall multiple distros.</p><p align="center">This software is written in python and pyqt. </p><p align="center">Copyright 2010-2016 Sundar</p><p align="center"><span style=" font-weight:600;">Author(s)</span>: Sundar, Ian Bruce, Lee</p><p align="center"><span style=" font-weight:600;">Licence</span>: GPL version 2 or later</p><p align="center"><span style=" font-weight:600;">Home page</span>: <a href=" http://multibootusb.org"><span style=" text-decoration: underline; color:#0000ff;">http://multibootusb.org</span></a></p><p align="center"><span style=" font-weight:600;">Help/Email</span>: feedback.multibootusb@gmail.com</p><p align="center"><span style=" font-weight:600;">Source Code</span>: <a href="https://github.com/mbusb/multibootusb"><span style=" text-decoration: underline; color:#0000ff;">https://github.com/mbusb/multibootusb</span></a></p><p><br/></p></body></html> @@ -825,6 +1079,40 @@ + + comboBox + detect_usb + lineEdit + slider_persistence + uninstall + listWidget + close + comboBox_2 + pushButton + pushbtn_imager_refreshusb + lineEdit_3 + imager_write + imager_close + install_sys_only + install_sys_all + install_syslinux + edit_syslinux + lineEdit_2 + browse_iso_qemu + ram_iso_256 + ram_iso_512 + ram_iso_768 + ram_iso_1024 + ram_iso_2048 + boot_iso_qemu + ram_usb_256 + ram_usb_512 + ram_usb_768 + ram_usb_1024 + ram_usb_2048 + boot_usb_qemu + tabWidget + diff --git a/scripts/gui/ui_multibootusb.py b/scripts/gui/ui_multibootusb.py index d5c8913..2daf7ed 100644 --- a/scripts/gui/ui_multibootusb.py +++ b/scripts/gui/ui_multibootusb.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file 'scripts\gui\multibootusb.ui' +# Form implementation generated from reading ui file 'gui/multibootusb.ui' # -# Created by: PyQt5 UI code generator 5.6 +# Created by: PyQt5 UI code generator 5.5.1 # # WARNING! All changes made in this file will be lost! @@ -11,154 +11,168 @@ from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") - Dialog.resize(644, 516) + Dialog.resize(717, 516) self.horizontalLayout = QtWidgets.QHBoxLayout(Dialog) self.horizontalLayout.setObjectName("horizontalLayout") self.tabWidget = QtWidgets.QTabWidget(Dialog) + self.tabWidget.setEnabled(True) self.tabWidget.setObjectName("tabWidget") self.tab_3 = QtWidgets.QWidget() + self.tab_3.setEnabled(True) self.tab_3.setObjectName("tab_3") self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.tab_3) self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.gridLayout = QtWidgets.QGridLayout() + self.gridLayout.setContentsMargins(5, 5, 5, 5) self.gridLayout.setObjectName("gridLayout") - self.label_persistence_value = QtWidgets.QLabel(self.tab_3) - self.label_persistence_value.setObjectName("label_persistence_value") - self.gridLayout.addWidget(self.label_persistence_value, 5, 2, 1, 1) - self.verticalLayout_11 = QtWidgets.QVBoxLayout() - self.verticalLayout_11.setObjectName("verticalLayout_11") - self.groupBox_11 = QtWidgets.QGroupBox(self.tab_3) - self.groupBox_11.setObjectName("groupBox_11") - self.horizontalLayout_8 = QtWidgets.QHBoxLayout(self.groupBox_11) - self.horizontalLayout_8.setObjectName("horizontalLayout_8") - self.detect_usb = QtWidgets.QPushButton(self.groupBox_11) - self.detect_usb.setObjectName("detect_usb") - self.horizontalLayout_8.addWidget(self.detect_usb) - self.verticalLayout_11.addWidget(self.groupBox_11) - self.gridLayout.addLayout(self.verticalLayout_11, 1, 3, 1, 2) - self.listWidget = QtWidgets.QListWidget(self.tab_3) - self.listWidget.setObjectName("listWidget") - self.gridLayout.addWidget(self.listWidget, 0, 0, 4, 3) - self.progressBar = QtWidgets.QProgressBar(self.tab_3) - self.progressBar.setProperty("value", 0) - self.progressBar.setObjectName("progressBar") - self.gridLayout.addWidget(self.progressBar, 7, 0, 1, 6) - self.create = QtWidgets.QPushButton(self.tab_3) - self.create.setObjectName("create") - self.gridLayout.addWidget(self.create, 5, 4, 1, 1) - self.comboBox = QtWidgets.QComboBox(self.tab_3) - self.comboBox.setObjectName("comboBox") - self.gridLayout.addWidget(self.comboBox, 0, 3, 1, 1) - self.labelstep1 = QtWidgets.QLabel(self.tab_3) - self.labelstep1.setObjectName("labelstep1") - self.gridLayout.addWidget(self.labelstep1, 0, 5, 1, 1) - self.labelstep2 = QtWidgets.QLabel(self.tab_3) - self.labelstep2.setObjectName("labelstep2") - self.gridLayout.addWidget(self.labelstep2, 4, 5, 1, 1) - self.close = QtWidgets.QPushButton(self.tab_3) - self.close.setObjectName("close") - self.gridLayout.addWidget(self.close, 5, 3, 1, 1) - self.labelstep3 = QtWidgets.QLabel(self.tab_3) - self.labelstep3.setObjectName("labelstep3") - self.gridLayout.addWidget(self.labelstep3, 5, 5, 1, 1) - self.slider_persistence = QtWidgets.QSlider(self.tab_3) - self.slider_persistence.setEnabled(False) - self.slider_persistence.setAutoFillBackground(False) - self.slider_persistence.setOrientation(QtCore.Qt.Horizontal) - self.slider_persistence.setTickPosition(QtWidgets.QSlider.TicksBothSides) - self.slider_persistence.setTickInterval(0) - self.slider_persistence.setObjectName("slider_persistence") - self.gridLayout.addWidget(self.slider_persistence, 5, 1, 1, 1) - self.groupBox = QtWidgets.QGroupBox(self.tab_3) - self.groupBox.setObjectName("groupBox") - self.verticalLayout = QtWidgets.QVBoxLayout(self.groupBox) - self.verticalLayout.setObjectName("verticalLayout") - self.gridLayout_5 = QtWidgets.QGridLayout() - self.gridLayout_5.setObjectName("gridLayout_5") - self.uninstall = QtWidgets.QPushButton(self.groupBox) - self.uninstall.setObjectName("uninstall") - self.gridLayout_5.addWidget(self.uninstall, 0, 0, 1, 1) - self.verticalLayout.addLayout(self.gridLayout_5) - self.gridLayout.addWidget(self.groupBox, 3, 3, 1, 2) - self.lineEdit = QtWidgets.QLineEdit(self.tab_3) - self.lineEdit.setObjectName("lineEdit") - self.gridLayout.addWidget(self.lineEdit, 4, 0, 1, 4) self.groupBox_6 = QtWidgets.QGroupBox(self.tab_3) + self.groupBox_6.setAlignment(QtCore.Qt.AlignBottom|QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing) + self.groupBox_6.setFlat(False) + self.groupBox_6.setCheckable(False) self.groupBox_6.setObjectName("groupBox_6") - self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.groupBox_6) - self.verticalLayout_5.setObjectName("verticalLayout_5") + self.formLayout = QtWidgets.QFormLayout(self.groupBox_6) + self.formLayout.setLabelAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.formLayout.setObjectName("formLayout") + self.label_usb_dev = QtWidgets.QLabel(self.groupBox_6) + self.label_usb_dev.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_usb_dev.setObjectName("label_usb_dev") + self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label_usb_dev) self.usb_dev = QtWidgets.QLabel(self.groupBox_6) + self.usb_dev.setText("") self.usb_dev.setObjectName("usb_dev") - self.verticalLayout_5.addWidget(self.usb_dev) + self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.usb_dev) + self.label_usb_vendor = QtWidgets.QLabel(self.groupBox_6) + self.label_usb_vendor.setObjectName("label_usb_vendor") + self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_usb_vendor) self.usb_vendor = QtWidgets.QLabel(self.groupBox_6) + self.usb_vendor.setText("") self.usb_vendor.setObjectName("usb_vendor") - self.verticalLayout_5.addWidget(self.usb_vendor) + self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.usb_vendor) + self.label_usb_model = QtWidgets.QLabel(self.groupBox_6) + self.label_usb_model.setObjectName("label_usb_model") + self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_usb_model) + self.label_usb_size = QtWidgets.QLabel(self.groupBox_6) + self.label_usb_size.setFrameShape(QtWidgets.QFrame.NoFrame) + self.label_usb_size.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_usb_size.setObjectName("label_usb_size") + self.formLayout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.label_usb_size) + self.label_usb_mount = QtWidgets.QLabel(self.groupBox_6) + self.label_usb_mount.setObjectName("label_usb_mount") + self.formLayout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.label_usb_mount) self.usb_model = QtWidgets.QLabel(self.groupBox_6) + self.usb_model.setText("") self.usb_model.setObjectName("usb_model") - self.verticalLayout_5.addWidget(self.usb_model) + self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.usb_model) self.usb_size = QtWidgets.QLabel(self.groupBox_6) + self.usb_size.setText("") self.usb_size.setObjectName("usb_size") - self.verticalLayout_5.addWidget(self.usb_size) + self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.usb_size) self.usb_mount = QtWidgets.QLabel(self.groupBox_6) + self.usb_mount.setText("") self.usb_mount.setObjectName("usb_mount") - self.verticalLayout_5.addWidget(self.usb_mount) - self.gridLayout.addWidget(self.groupBox_6, 2, 3, 1, 3) + self.formLayout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.usb_mount) + self.gridLayout.addWidget(self.groupBox_6, 2, 0, 1, 5) + self.close = QtWidgets.QPushButton(self.tab_3) + self.close.setObjectName("close") + self.gridLayout.addWidget(self.close, 9, 6, 1, 1) + spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem, 8, 0, 1, 1) self.browse_iso = QtWidgets.QPushButton(self.tab_3) + self.browse_iso.setCheckable(False) + self.browse_iso.setFlat(False) self.browse_iso.setObjectName("browse_iso") self.gridLayout.addWidget(self.browse_iso, 4, 4, 1, 1) + self.listWidget = QtWidgets.QListWidget(self.tab_3) + self.listWidget.setFrameShape(QtWidgets.QFrame.StyledPanel) + self.listWidget.setFrameShadow(QtWidgets.QFrame.Sunken) + self.listWidget.setResizeMode(QtWidgets.QListView.Fixed) + self.listWidget.setObjectName("listWidget") + self.gridLayout.addWidget(self.listWidget, 1, 5, 8, 2) self.label_persistence = QtWidgets.QLabel(self.tab_3) + self.label_persistence.setEnabled(False) + self.label_persistence.setMouseTracking(True) + self.label_persistence.setStyleSheet("font-weight: 600") self.label_persistence.setObjectName("label_persistence") - self.gridLayout.addWidget(self.label_persistence, 5, 0, 1, 1) + self.gridLayout.addWidget(self.label_persistence, 6, 0, 1, 1) + self.lineEdit = QtWidgets.QLineEdit(self.tab_3) + self.lineEdit.setObjectName("lineEdit") + self.gridLayout.addWidget(self.lineEdit, 4, 0, 1, 4) + self.detect_usb = QtWidgets.QPushButton(self.tab_3) + self.detect_usb.setObjectName("detect_usb") + self.gridLayout.addWidget(self.detect_usb, 1, 2, 1, 2) + self.uninstall = QtWidgets.QPushButton(self.tab_3) + self.uninstall.setObjectName("uninstall") + self.gridLayout.addWidget(self.uninstall, 0, 5, 1, 2) + self.comboBox = QtWidgets.QComboBox(self.tab_3) + self.comboBox.setObjectName("comboBox") + self.gridLayout.addWidget(self.comboBox, 1, 0, 1, 2) + self.slider_persistence = QtWidgets.QSlider(self.tab_3) + self.slider_persistence.setEnabled(False) + self.slider_persistence.setAutoFillBackground(False) + self.slider_persistence.setOrientation(QtCore.Qt.Horizontal) + self.slider_persistence.setTickPosition(QtWidgets.QSlider.TicksBothSides) + self.slider_persistence.setObjectName("slider_persistence") + self.gridLayout.addWidget(self.slider_persistence, 6, 1, 1, 3) + spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.gridLayout.addItem(spacerItem1, 8, 2, 1, 2) self.checkBox_all_drives = QtWidgets.QCheckBox(self.tab_3) self.checkBox_all_drives.setObjectName("checkBox_all_drives") - self.gridLayout.addWidget(self.checkBox_all_drives, 0, 4, 1, 1) + self.gridLayout.addWidget(self.checkBox_all_drives, 1, 4, 1, 1) + self.label_persistence_value = QtWidgets.QLabel(self.tab_3) + self.label_persistence_value.setEnabled(False) + self.label_persistence_value.setObjectName("label_persistence_value") + self.gridLayout.addWidget(self.label_persistence_value, 6, 4, 1, 1) + spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.gridLayout.addItem(spacerItem2, 8, 1, 1, 1) + self.create = QtWidgets.QPushButton(self.tab_3) + self.create.setObjectName("create") + self.gridLayout.addWidget(self.create, 7, 4, 1, 1) + self.progressBar = QtWidgets.QProgressBar(self.tab_3) + self.progressBar.setProperty("value", 0) + self.progressBar.setInvertedAppearance(False) + self.progressBar.setObjectName("progressBar") + self.gridLayout.addWidget(self.progressBar, 7, 0, 1, 4) self.status = QtWidgets.QLabel(self.tab_3) self.status.setMinimumSize(QtCore.QSize(0, 0)) self.status.setAcceptDrops(False) self.status.setAutoFillBackground(False) self.status.setFrameShadow(QtWidgets.QFrame.Plain) - self.status.setText("") self.status.setTextFormat(QtCore.Qt.AutoText) self.status.setScaledContents(False) self.status.setObjectName("status") - self.gridLayout.addWidget(self.status, 6, 0, 1, 6) + self.gridLayout.addWidget(self.status, 9, 0, 1, 6) + self.labelstep1 = QtWidgets.QLabel(self.tab_3) + self.labelstep1.setStyleSheet("font-weight: 600; margin-top:15") + self.labelstep1.setObjectName("labelstep1") + self.gridLayout.addWidget(self.labelstep1, 0, 0, 1, 5) + self.labelstep2 = QtWidgets.QLabel(self.tab_3) + self.labelstep2.setStyleSheet("font-weight: 600; margin-top:15") + self.labelstep2.setObjectName("labelstep2") + self.gridLayout.addWidget(self.labelstep2, 3, 0, 1, 5) + self.labelstep3 = QtWidgets.QLabel(self.tab_3) + self.labelstep3.setStyleSheet("font-weight: 600; margin-top:15") + self.labelstep3.setObjectName("labelstep3") + self.gridLayout.addWidget(self.labelstep3, 5, 0, 1, 5) self.horizontalLayout_2.addLayout(self.gridLayout) self.tabWidget.addTab(self.tab_3, "") self.imager = QtWidgets.QWidget() + self.imager.setEnabled(True) self.imager.setObjectName("imager") self.horizontalLayout_7 = QtWidgets.QHBoxLayout(self.imager) self.horizontalLayout_7.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_7.setObjectName("horizontalLayout_7") self.gridLayout_9 = QtWidgets.QGridLayout() + self.gridLayout_9.setContentsMargins(5, 5, 5, 5) self.gridLayout_9.setObjectName("gridLayout_9") - self.groupBox_7 = QtWidgets.QGroupBox(self.imager) - self.groupBox_7.setObjectName("groupBox_7") - self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.groupBox_7) + self.widget_7 = QtWidgets.QWidget(self.imager) + self.widget_7.setObjectName("widget_7") + self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.widget_7) + self.verticalLayout_6.setContentsMargins(5, 5, 5, 5) self.verticalLayout_6.setObjectName("verticalLayout_6") self.gridLayout_11 = QtWidgets.QGridLayout() self.gridLayout_11.setObjectName("gridLayout_11") - self.groupBox_9 = QtWidgets.QGroupBox(self.groupBox_7) - self.groupBox_9.setObjectName("groupBox_9") - self.verticalLayout_8 = QtWidgets.QVBoxLayout(self.groupBox_9) - self.verticalLayout_8.setObjectName("verticalLayout_8") - self.comboBox_2 = QtWidgets.QComboBox(self.groupBox_9) - self.comboBox_2.setObjectName("comboBox_2") - self.verticalLayout_8.addWidget(self.comboBox_2) - self.pushbtn_imager_refreshusb = QtWidgets.QPushButton(self.groupBox_9) - self.pushbtn_imager_refreshusb.setObjectName("pushbtn_imager_refreshusb") - self.verticalLayout_8.addWidget(self.pushbtn_imager_refreshusb) - self.imager_disk_label = QtWidgets.QLabel(self.groupBox_9) - self.imager_disk_label.setObjectName("imager_disk_label") - self.verticalLayout_8.addWidget(self.imager_disk_label) - self.imager_total_size = QtWidgets.QLabel(self.groupBox_9) - self.imager_total_size.setObjectName("imager_total_size") - self.verticalLayout_8.addWidget(self.imager_total_size) - self.imager_uuid = QtWidgets.QLabel(self.groupBox_9) - self.imager_uuid.setObjectName("imager_uuid") - self.verticalLayout_8.addWidget(self.imager_uuid) - self.gridLayout_11.addWidget(self.groupBox_9, 0, 0, 1, 1) - self.groupBox_10 = QtWidgets.QGroupBox(self.groupBox_7) + self.groupBox_10 = QtWidgets.QGroupBox(self.widget_7) self.groupBox_10.setObjectName("groupBox_10") self.verticalLayout_9 = QtWidgets.QVBoxLayout(self.groupBox_10) self.verticalLayout_9.setObjectName("verticalLayout_9") @@ -174,45 +188,83 @@ class Ui_Dialog(object): self.imager_iso_size = QtWidgets.QLabel(self.groupBox_10) self.imager_iso_size.setObjectName("imager_iso_size") self.verticalLayout_9.addWidget(self.imager_iso_size) + spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_9.addItem(spacerItem3) self.gridLayout_11.addWidget(self.groupBox_10, 0, 1, 1, 1) + spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.gridLayout_11.addItem(spacerItem4, 1, 0, 1, 1) + self.groupBox_9 = QtWidgets.QGroupBox(self.widget_7) + self.groupBox_9.setStyleSheet("") + self.groupBox_9.setObjectName("groupBox_9") + self.verticalLayout_8 = QtWidgets.QVBoxLayout(self.groupBox_9) + self.verticalLayout_8.setObjectName("verticalLayout_8") + self.comboBox_2 = QtWidgets.QComboBox(self.groupBox_9) + self.comboBox_2.setObjectName("comboBox_2") + self.verticalLayout_8.addWidget(self.comboBox_2) + self.pushbtn_imager_refreshusb = QtWidgets.QPushButton(self.groupBox_9) + self.pushbtn_imager_refreshusb.setObjectName("pushbtn_imager_refreshusb") + self.verticalLayout_8.addWidget(self.pushbtn_imager_refreshusb) + self.formLayout_3 = QtWidgets.QFormLayout() + self.formLayout_3.setLabelAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.formLayout_3.setObjectName("formLayout_3") + self.label_imager_disk_label = QtWidgets.QLabel(self.groupBox_9) + self.label_imager_disk_label.setObjectName("label_imager_disk_label") + self.formLayout_3.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label_imager_disk_label) + self.label_imager_total_size = QtWidgets.QLabel(self.groupBox_9) + self.label_imager_total_size.setObjectName("label_imager_total_size") + self.formLayout_3.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_imager_total_size) + self.label_imager_uuid = QtWidgets.QLabel(self.groupBox_9) + self.label_imager_uuid.setObjectName("label_imager_uuid") + self.formLayout_3.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_imager_uuid) + self.imager_disk_label = QtWidgets.QLabel(self.groupBox_9) + self.imager_disk_label.setText("") + self.imager_disk_label.setObjectName("imager_disk_label") + self.formLayout_3.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.imager_disk_label) + self.imager_total_size = QtWidgets.QLabel(self.groupBox_9) + self.imager_total_size.setText("") + self.imager_total_size.setObjectName("imager_total_size") + self.formLayout_3.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.imager_total_size) + self.imager_uuid = QtWidgets.QLabel(self.groupBox_9) + self.imager_uuid.setText("") + self.imager_uuid.setObjectName("imager_uuid") + self.formLayout_3.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.imager_uuid) + self.verticalLayout_8.addLayout(self.formLayout_3) + spacerItem5 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_8.addItem(spacerItem5) + self.gridLayout_11.addWidget(self.groupBox_9, 0, 0, 1, 1) self.verticalLayout_6.addLayout(self.gridLayout_11) - self.gridLayout_9.addWidget(self.groupBox_7, 1, 0, 1, 1) - self.groupBox_8 = QtWidgets.QGroupBox(self.imager) - self.groupBox_8.setObjectName("groupBox_8") - self.verticalLayout_7 = QtWidgets.QVBoxLayout(self.groupBox_8) - self.verticalLayout_7.setObjectName("verticalLayout_7") - self.imager_label_status = QtWidgets.QLabel(self.groupBox_8) + self.imager_label_status = QtWidgets.QLabel(self.widget_7) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.imager_label_status.sizePolicy().hasHeightForWidth()) self.imager_label_status.setSizePolicy(sizePolicy) - self.imager_label_status.setText("") self.imager_label_status.setObjectName("imager_label_status") - self.verticalLayout_7.addWidget(self.imager_label_status) + self.verticalLayout_6.addWidget(self.imager_label_status) self.gridLayout_12 = QtWidgets.QGridLayout() self.gridLayout_12.setObjectName("gridLayout_12") - self.imager_write = QtWidgets.QPushButton(self.groupBox_8) - self.imager_write.setObjectName("imager_write") - self.gridLayout_12.addWidget(self.imager_write, 2, 2, 1, 1) - self.imager_close = QtWidgets.QPushButton(self.groupBox_8) - self.imager_close.setObjectName("imager_close") - self.gridLayout_12.addWidget(self.imager_close, 2, 1, 1, 1) - self.label_10 = QtWidgets.QLabel(self.groupBox_8) + self.label_10 = QtWidgets.QLabel(self.widget_7) self.label_10.setObjectName("label_10") self.gridLayout_12.addWidget(self.label_10, 1, 0, 1, 3) - self.imager_progressbar = QtWidgets.QProgressBar(self.groupBox_8) + self.imager_progressbar = QtWidgets.QProgressBar(self.widget_7) self.imager_progressbar.setProperty("value", 0) self.imager_progressbar.setObjectName("imager_progressbar") self.gridLayout_12.addWidget(self.imager_progressbar, 0, 0, 1, 3) - self.verticalLayout_7.addLayout(self.gridLayout_12) - self.gridLayout_9.addWidget(self.groupBox_8, 2, 0, 1, 1) + self.imager_write = QtWidgets.QPushButton(self.widget_7) + self.imager_write.setObjectName("imager_write") + self.gridLayout_12.addWidget(self.imager_write, 2, 2, 1, 1) + self.verticalLayout_6.addLayout(self.gridLayout_12) + self.gridLayout_9.addWidget(self.widget_7, 0, 0, 1, 2) + self.imager_close = QtWidgets.QPushButton(self.imager) + self.imager_close.setObjectName("imager_close") + self.gridLayout_9.addWidget(self.imager_close, 1, 1, 1, 1) + spacerItem6 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.gridLayout_9.addItem(spacerItem6, 1, 0, 1, 1) self.horizontalLayout_7.addLayout(self.gridLayout_9) self.tabWidget.addTab(self.imager, "") self.syslinux_ab = QtWidgets.QWidget() self.syslinux_ab.setObjectName("syslinux_ab") self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.syslinux_ab) - self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.gridLayout_2 = QtWidgets.QGridLayout() self.gridLayout_2.setObjectName("gridLayout_2") @@ -223,19 +275,21 @@ class Ui_Dialog(object): self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.gridLayout_3 = QtWidgets.QGridLayout() self.gridLayout_3.setObjectName("gridLayout_3") - self.install_syslinux = QtWidgets.QPushButton(self.groupBox_2) - self.install_syslinux.setObjectName("install_syslinux") - self.gridLayout_3.addWidget(self.install_syslinux, 2, 1, 1, 1) - spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) - self.gridLayout_3.addItem(spacerItem, 2, 0, 1, 1) - self.install_sys_all = QtWidgets.QRadioButton(self.groupBox_2) - self.install_sys_all.setObjectName("install_sys_all") - self.gridLayout_3.addWidget(self.install_sys_all, 1, 0, 1, 2) self.install_sys_only = QtWidgets.QRadioButton(self.groupBox_2) self.install_sys_only.setObjectName("install_sys_only") - self.gridLayout_3.addWidget(self.install_sys_only, 0, 0, 1, 2) + self.gridLayout_3.addWidget(self.install_sys_only, 0, 0, 1, 1) + self.install_sys_all = QtWidgets.QRadioButton(self.groupBox_2) + self.install_sys_all.setObjectName("install_sys_all") + self.gridLayout_3.addWidget(self.install_sys_all, 1, 0, 1, 1) + self.install_syslinux = QtWidgets.QPushButton(self.groupBox_2) + self.install_syslinux.setObjectName("install_syslinux") + self.gridLayout_3.addWidget(self.install_syslinux, 0, 2, 2, 1) + spacerItem7 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.gridLayout_3.addItem(spacerItem7, 0, 1, 2, 1) self.horizontalLayout_4.addLayout(self.gridLayout_3) self.gridLayout_2.addWidget(self.groupBox_2, 0, 0, 1, 1) + spacerItem8 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout_2.addItem(spacerItem8, 3, 0, 1, 1) self.groupBox_3 = QtWidgets.QGroupBox(self.syslinux_ab) self.groupBox_3.setObjectName("groupBox_3") self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.groupBox_3) @@ -244,20 +298,21 @@ class Ui_Dialog(object): self.gridLayout_4.setObjectName("gridLayout_4") self.edit_syslinux = QtWidgets.QPushButton(self.groupBox_3) self.edit_syslinux.setObjectName("edit_syslinux") - self.gridLayout_4.addWidget(self.edit_syslinux, 1, 1, 1, 1) - spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) - self.gridLayout_4.addItem(spacerItem1, 1, 0, 1, 1) + self.gridLayout_4.addWidget(self.edit_syslinux, 0, 2, 1, 1) self.label_2 = QtWidgets.QLabel(self.groupBox_3) self.label_2.setObjectName("label_2") - self.gridLayout_4.addWidget(self.label_2, 0, 0, 1, 2) + self.gridLayout_4.addWidget(self.label_2, 0, 0, 1, 1) + spacerItem9 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.gridLayout_4.addItem(spacerItem9, 0, 1, 1, 1) self.horizontalLayout_5.addLayout(self.gridLayout_4) - self.gridLayout_2.addWidget(self.groupBox_3, 1, 0, 1, 1) + self.gridLayout_2.addWidget(self.groupBox_3, 2, 0, 1, 1) + spacerItem10 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) + self.gridLayout_2.addItem(spacerItem10, 1, 0, 1, 1) self.horizontalLayout_3.addLayout(self.gridLayout_2) self.tabWidget.addTab(self.syslinux_ab, "") self.tab = QtWidgets.QWidget() self.tab.setObjectName("tab") self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.tab) - self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) self.verticalLayout_2.setObjectName("verticalLayout_2") self.groupBox_5 = QtWidgets.QGroupBox(self.tab) self.groupBox_5.setObjectName("groupBox_5") @@ -265,106 +320,98 @@ class Ui_Dialog(object): self.verticalLayout_3.setObjectName("verticalLayout_3") self.gridLayout_7 = QtWidgets.QGridLayout() self.gridLayout_7.setObjectName("gridLayout_7") - self.ram_iso_2048 = QtWidgets.QRadioButton(self.groupBox_5) - self.ram_iso_2048.setObjectName("ram_iso_2048") - self.gridLayout_7.addWidget(self.ram_iso_2048, 4, 4, 1, 1) - self.ram_iso_1024 = QtWidgets.QRadioButton(self.groupBox_5) - self.ram_iso_1024.setObjectName("ram_iso_1024") - self.gridLayout_7.addWidget(self.ram_iso_1024, 4, 3, 1, 1) - self.ram_iso_256 = QtWidgets.QRadioButton(self.groupBox_5) - self.ram_iso_256.setObjectName("ram_iso_256") - self.gridLayout_7.addWidget(self.ram_iso_256, 4, 0, 1, 1) - self.browse_iso_qemu = QtWidgets.QPushButton(self.groupBox_5) - self.browse_iso_qemu.setObjectName("browse_iso_qemu") - self.gridLayout_7.addWidget(self.browse_iso_qemu, 2, 4, 1, 1) - self.label_7 = QtWidgets.QLabel(self.groupBox_5) - self.label_7.setObjectName("label_7") - self.gridLayout_7.addWidget(self.label_7, 0, 0, 1, 5) - self.ram_iso_512 = QtWidgets.QRadioButton(self.groupBox_5) - self.ram_iso_512.setObjectName("ram_iso_512") - self.gridLayout_7.addWidget(self.ram_iso_512, 4, 1, 1, 1) + spacerItem11 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout_7.addItem(spacerItem11, 3, 0, 1, 1) + spacerItem12 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.gridLayout_7.addItem(spacerItem12, 1, 6, 1, 1) self.boot_iso_qemu = QtWidgets.QPushButton(self.groupBox_5) self.boot_iso_qemu.setObjectName("boot_iso_qemu") - self.gridLayout_7.addWidget(self.boot_iso_qemu, 6, 4, 1, 1) - self.ram_iso_768 = QtWidgets.QRadioButton(self.groupBox_5) - self.ram_iso_768.setObjectName("ram_iso_768") - self.gridLayout_7.addWidget(self.ram_iso_768, 4, 2, 1, 1) + self.gridLayout_7.addWidget(self.boot_iso_qemu, 3, 6, 1, 1) + self.browse_iso_qemu = QtWidgets.QPushButton(self.groupBox_5) + self.browse_iso_qemu.setObjectName("browse_iso_qemu") + self.gridLayout_7.addWidget(self.browse_iso_qemu, 0, 6, 1, 1) self.lineEdit_2 = QtWidgets.QLineEdit(self.groupBox_5) self.lineEdit_2.setObjectName("lineEdit_2") - self.gridLayout_7.addWidget(self.lineEdit_2, 2, 0, 1, 4) - spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.gridLayout_7.addItem(spacerItem2, 3, 1, 1, 1) + self.gridLayout_7.addWidget(self.lineEdit_2, 0, 0, 1, 6) + spacerItem13 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout_7.addItem(spacerItem13, 2, 6, 1, 1) self.label_3 = QtWidgets.QLabel(self.groupBox_5) self.label_3.setObjectName("label_3") - self.gridLayout_7.addWidget(self.label_3, 6, 0, 1, 4) - spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.gridLayout_7.addItem(spacerItem3, 5, 0, 1, 1) - spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.gridLayout_7.addItem(spacerItem4, 1, 0, 1, 1) + self.gridLayout_7.addWidget(self.label_3, 2, 0, 1, 1) + self.ram_iso_256 = QtWidgets.QRadioButton(self.groupBox_5) + self.ram_iso_256.setObjectName("ram_iso_256") + self.gridLayout_7.addWidget(self.ram_iso_256, 2, 1, 1, 1) + self.ram_iso_512 = QtWidgets.QRadioButton(self.groupBox_5) + self.ram_iso_512.setObjectName("ram_iso_512") + self.gridLayout_7.addWidget(self.ram_iso_512, 2, 2, 1, 1) + self.ram_iso_768 = QtWidgets.QRadioButton(self.groupBox_5) + self.ram_iso_768.setObjectName("ram_iso_768") + self.gridLayout_7.addWidget(self.ram_iso_768, 2, 3, 1, 1) + self.ram_iso_1024 = QtWidgets.QRadioButton(self.groupBox_5) + self.ram_iso_1024.setObjectName("ram_iso_1024") + self.gridLayout_7.addWidget(self.ram_iso_1024, 2, 4, 1, 1) + self.ram_iso_2048 = QtWidgets.QRadioButton(self.groupBox_5) + self.ram_iso_2048.setObjectName("ram_iso_2048") + self.gridLayout_7.addWidget(self.ram_iso_2048, 2, 5, 1, 1) self.verticalLayout_3.addLayout(self.gridLayout_7) self.verticalLayout_2.addWidget(self.groupBox_5) - spacerItem5 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.verticalLayout_2.addItem(spacerItem5) self.gridLayout_6 = QtWidgets.QGridLayout() self.gridLayout_6.setObjectName("gridLayout_6") self.groupBox_4 = QtWidgets.QGroupBox(self.tab) + self.groupBox_4.setStyleSheet("") self.groupBox_4.setObjectName("groupBox_4") self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.groupBox_4) self.verticalLayout_4.setObjectName("verticalLayout_4") self.gridLayout_8 = QtWidgets.QGridLayout() self.gridLayout_8.setObjectName("gridLayout_8") - self.ram_usb_768 = QtWidgets.QRadioButton(self.groupBox_4) - self.ram_usb_768.setObjectName("ram_usb_768") - self.gridLayout_8.addWidget(self.ram_usb_768, 2, 2, 1, 1) + self.ram_usb_2048 = QtWidgets.QRadioButton(self.groupBox_4) + self.ram_usb_2048.setObjectName("ram_usb_2048") + self.gridLayout_8.addWidget(self.ram_usb_2048, 0, 5, 1, 1) + spacerItem14 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.gridLayout_8.addItem(spacerItem14, 0, 6, 1, 1) + spacerItem15 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout_8.addItem(spacerItem15, 1, 0, 1, 1) + self.boot_usb_qemu = QtWidgets.QPushButton(self.groupBox_4) + self.boot_usb_qemu.setObjectName("boot_usb_qemu") + self.gridLayout_8.addWidget(self.boot_usb_qemu, 1, 6, 1, 1) self.ram_usb_256 = QtWidgets.QRadioButton(self.groupBox_4) self.ram_usb_256.setObjectName("ram_usb_256") - self.gridLayout_8.addWidget(self.ram_usb_256, 2, 0, 1, 1) - self.label_6 = QtWidgets.QLabel(self.groupBox_4) - self.label_6.setObjectName("label_6") - self.gridLayout_8.addWidget(self.label_6, 0, 0, 1, 5) - self.ram_usb_1024 = QtWidgets.QRadioButton(self.groupBox_4) - self.ram_usb_1024.setObjectName("ram_usb_1024") - self.gridLayout_8.addWidget(self.ram_usb_1024, 2, 3, 1, 1) + self.gridLayout_8.addWidget(self.ram_usb_256, 0, 1, 1, 1) + self.ram_usb_768 = QtWidgets.QRadioButton(self.groupBox_4) + self.ram_usb_768.setObjectName("ram_usb_768") + self.gridLayout_8.addWidget(self.ram_usb_768, 0, 3, 1, 1) self.label_4 = QtWidgets.QLabel(self.groupBox_4) self.label_4.setObjectName("label_4") - self.gridLayout_8.addWidget(self.label_4, 4, 0, 1, 4) + self.gridLayout_8.addWidget(self.label_4, 0, 0, 1, 1) self.ram_usb_512 = QtWidgets.QRadioButton(self.groupBox_4) self.ram_usb_512.setObjectName("ram_usb_512") - self.gridLayout_8.addWidget(self.ram_usb_512, 2, 1, 1, 1) - self.boot_usb_qemu = QtWidgets.QPushButton(self.groupBox_4) - self.boot_usb_qemu.setObjectName("boot_usb_qemu") - self.gridLayout_8.addWidget(self.boot_usb_qemu, 4, 4, 1, 1) - self.ram_usb_2048 = QtWidgets.QRadioButton(self.groupBox_4) - self.ram_usb_2048.setObjectName("ram_usb_2048") - self.gridLayout_8.addWidget(self.ram_usb_2048, 2, 4, 1, 1) - spacerItem6 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.gridLayout_8.addItem(spacerItem6, 1, 1, 1, 1) - spacerItem7 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.gridLayout_8.addItem(spacerItem7, 3, 2, 1, 1) - spacerItem8 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.gridLayout_8.addItem(spacerItem8, 5, 0, 1, 1) + self.gridLayout_8.addWidget(self.ram_usb_512, 0, 2, 1, 1) + self.ram_usb_1024 = QtWidgets.QRadioButton(self.groupBox_4) + self.ram_usb_1024.setObjectName("ram_usb_1024") + self.gridLayout_8.addWidget(self.ram_usb_1024, 0, 4, 1, 1) self.verticalLayout_4.addLayout(self.gridLayout_8) self.gridLayout_6.addWidget(self.groupBox_4, 0, 0, 1, 1) self.verticalLayout_2.addLayout(self.gridLayout_6) + spacerItem16 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_2.addItem(spacerItem16) self.tabWidget.addTab(self.tab, "") self.tab_2 = QtWidgets.QWidget() self.tab_2.setObjectName("tab_2") self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.tab_2) - self.horizontalLayout_6.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_6.setObjectName("horizontalLayout_6") self.gridLayout_10 = QtWidgets.QGridLayout() self.gridLayout_10.setObjectName("gridLayout_10") - spacerItem9 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) - self.gridLayout_10.addItem(spacerItem9, 0, 1, 1, 1) - spacerItem10 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) - self.gridLayout_10.addItem(spacerItem10, 1, 0, 1, 1) - spacerItem11 = QtWidgets.QSpacerItem(20, 30, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) - self.gridLayout_10.addItem(spacerItem11, 2, 1, 1, 1) + spacerItem17 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + self.gridLayout_10.addItem(spacerItem17, 0, 1, 1, 1) + spacerItem18 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.gridLayout_10.addItem(spacerItem18, 1, 0, 1, 1) + spacerItem19 = QtWidgets.QSpacerItem(20, 30, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + self.gridLayout_10.addItem(spacerItem19, 2, 1, 1, 1) self.label_5 = QtWidgets.QLabel(self.tab_2) self.label_5.setObjectName("label_5") self.gridLayout_10.addWidget(self.label_5, 1, 1, 1, 1) - spacerItem12 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) - self.gridLayout_10.addItem(spacerItem12, 1, 2, 1, 1) + spacerItem20 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.gridLayout_10.addItem(spacerItem20, 1, 2, 1, 1) self.horizontalLayout_6.addLayout(self.gridLayout_10) self.tabWidget.addTab(self.tab_2, "") self.horizontalLayout.addWidget(self.tabWidget) @@ -372,84 +419,101 @@ class Ui_Dialog(object): self.retranslateUi(Dialog) self.tabWidget.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(Dialog) + Dialog.setTabOrder(self.comboBox, self.detect_usb) + Dialog.setTabOrder(self.detect_usb, self.lineEdit) + Dialog.setTabOrder(self.lineEdit, self.slider_persistence) + Dialog.setTabOrder(self.slider_persistence, self.uninstall) + Dialog.setTabOrder(self.uninstall, self.listWidget) + Dialog.setTabOrder(self.listWidget, self.close) + Dialog.setTabOrder(self.close, self.comboBox_2) + Dialog.setTabOrder(self.comboBox_2, self.pushButton) + Dialog.setTabOrder(self.pushButton, self.pushbtn_imager_refreshusb) + Dialog.setTabOrder(self.pushbtn_imager_refreshusb, self.lineEdit_3) + Dialog.setTabOrder(self.lineEdit_3, self.imager_write) + Dialog.setTabOrder(self.imager_write, self.imager_close) + Dialog.setTabOrder(self.imager_close, self.install_sys_only) + Dialog.setTabOrder(self.install_sys_only, self.install_sys_all) + Dialog.setTabOrder(self.install_sys_all, self.install_syslinux) + Dialog.setTabOrder(self.install_syslinux, self.edit_syslinux) + Dialog.setTabOrder(self.edit_syslinux, self.lineEdit_2) + Dialog.setTabOrder(self.lineEdit_2, self.browse_iso_qemu) + Dialog.setTabOrder(self.browse_iso_qemu, self.ram_iso_256) + Dialog.setTabOrder(self.ram_iso_256, self.ram_iso_512) + Dialog.setTabOrder(self.ram_iso_512, self.ram_iso_768) + Dialog.setTabOrder(self.ram_iso_768, self.ram_iso_1024) + Dialog.setTabOrder(self.ram_iso_1024, self.ram_iso_2048) + Dialog.setTabOrder(self.ram_iso_2048, self.boot_iso_qemu) + Dialog.setTabOrder(self.boot_iso_qemu, self.ram_usb_256) + Dialog.setTabOrder(self.ram_usb_256, self.ram_usb_512) + Dialog.setTabOrder(self.ram_usb_512, self.ram_usb_768) + Dialog.setTabOrder(self.ram_usb_768, self.ram_usb_1024) + Dialog.setTabOrder(self.ram_usb_1024, self.ram_usb_2048) + Dialog.setTabOrder(self.ram_usb_2048, self.boot_usb_qemu) + Dialog.setTabOrder(self.boot_usb_qemu, self.tabWidget) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "multibootusb")) - self.label_persistence_value.setText(_translate("Dialog", "0 MB")) - self.groupBox_11.setTitle(_translate("Dialog", "Detect")) - self.detect_usb.setText(_translate("Dialog", "Detect Drives")) - self.create.setText(_translate("Dialog", "Create")) - self.labelstep1.setText(_translate("Dialog", "

Step 1

")) - self.labelstep2.setText(_translate("Dialog", "

Step 2

")) - self.close.setText(_translate("Dialog", "Close")) - self.labelstep3.setText(_translate("Dialog", "

Step 3

")) - self.slider_persistence.setToolTip(_translate("Dialog", "Choose Persistence size. Not all distros supports persistence...")) - self.groupBox.setTitle(_translate("Dialog", "Uninstall (Optional)")) - self.uninstall.setText(_translate("Dialog", "Uninstall Distro")) self.groupBox_6.setTitle(_translate("Dialog", "USB Details")) - self.usb_dev.setText(_translate("Dialog", "Drive ::")) - self.usb_vendor.setText(_translate("Dialog", "Vendor ::")) - self.usb_model.setText(_translate("Dialog", "Model::")) - self.usb_size.setText(_translate("Dialog", "Size ::")) - self.usb_mount.setText(_translate("Dialog", "Mount ::")) + self.label_usb_dev.setText(_translate("Dialog", "Drive:")) + self.label_usb_vendor.setText(_translate("Dialog", "Vendor:")) + self.label_usb_model.setText(_translate("Dialog", "Model:")) + self.label_usb_size.setText(_translate("Dialog", "Size:")) + self.label_usb_mount.setText(_translate("Dialog", "Mount:")) + self.close.setText(_translate("Dialog", "Quit")) self.browse_iso.setText(_translate("Dialog", "Browse ISO")) - self.label_persistence.setText(_translate("Dialog", "

Persistence

")) + self.label_persistence.setText(_translate("Dialog", "Persistence")) + self.detect_usb.setText(_translate("Dialog", "Detect Drives")) + self.uninstall.setText(_translate("Dialog", "Uninstall Distro")) + self.slider_persistence.setToolTip(_translate("Dialog", "Choose Persistence size. Not all distros supports persistence...")) self.checkBox_all_drives.setText(_translate("Dialog", "All Drives")) + self.label_persistence_value.setText(_translate("Dialog", "0 MB")) + self.create.setText(_translate("Dialog", "Install")) + self.status.setText(_translate("Dialog", "Status: Idle")) + self.labelstep1.setText(_translate("Dialog", "Step 1 :: Select drive")) + self.labelstep2.setText(_translate("Dialog", "Step 2 :: Select ISO")) + self.labelstep3.setText(_translate("Dialog", "Step 3 :: Install distro")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("Dialog", "MultiBootUSB")) - self.groupBox_7.setTitle(_translate("Dialog", "Imager")) - self.groupBox_9.setTitle(_translate("Dialog", "-------------- USB details -------------------")) - self.pushbtn_imager_refreshusb.setText(_translate("Dialog", "Refresh USB")) - self.imager_disk_label.setText(_translate("Dialog", "Disk Label ::")) - self.imager_total_size.setText(_translate("Dialog", "Disk Size")) - self.imager_uuid.setText(_translate("Dialog", "Disk Label ::")) - self.groupBox_10.setTitle(_translate("Dialog", "------------------------------ ISO details ----------------------------------")) - self.pushButton.setText(_translate("Dialog", "Browse ISO")) + self.groupBox_10.setTitle(_translate("Dialog", "Select image")) + self.pushButton.setText(_translate("Dialog", "Browse image...")) self.imager_bootable.setText(_translate("Dialog", "Bootable ISO")) - self.imager_iso_size.setText(_translate("Dialog", "ISO Size")) - self.groupBox_8.setTitle(_translate("Dialog", "Imager Progress")) - self.imager_write.setText(_translate("Dialog", "Write/Create")) - self.imager_close.setText(_translate("Dialog", "Close")) + self.imager_iso_size.setText(_translate("Dialog", "Image Size")) + self.groupBox_9.setTitle(_translate("Dialog", "Select USB Drive")) + self.pushbtn_imager_refreshusb.setText(_translate("Dialog", "Refresh USB")) + self.label_imager_disk_label.setText(_translate("Dialog", "Disk Type:")) + self.label_imager_total_size.setText(_translate("Dialog", "Disk Size:")) + self.label_imager_uuid.setText(_translate("Dialog", "Disk Label:")) + self.imager_label_status.setText(_translate("Dialog", "Status: Idle")) self.label_10.setText(_translate("Dialog", "

WARNING : Any bootable USB made using ISO Imager will destroy all data on the selected USB disk.

Use it at your own risk. Developers are not responsile for loss of any data.

")) - self.tabWidget.setTabText(self.tabWidget.indexOf(self.imager), _translate("Dialog", "ISO Imager")) + self.imager_write.setText(_translate("Dialog", "Write Image")) + self.imager_close.setText(_translate("Dialog", "Quit")) + self.tabWidget.setTabText(self.tabWidget.indexOf(self.imager), _translate("Dialog", "Write Image to USB")) self.groupBox_2.setTitle(_translate("Dialog", "Install Syslinux")) + self.install_sys_only.setText(_translate("Dialog", "Install only syslinu&x (existing configurations will not be altered).")) + self.install_sys_all.setText(_translate("Dialog", "Install syslinux and copy all re&quired files.")) self.install_syslinux.setText(_translate("Dialog", "Install")) - self.install_sys_all.setText(_translate("Dialog", "Install syslinux and copy all required files.")) - self.install_sys_only.setText(_translate("Dialog", "Install only syslinux (existing configurations will not be altred).")) self.groupBox_3.setTitle(_translate("Dialog", "Edit syslinux.cfg")) self.edit_syslinux.setText(_translate("Dialog", "Edit")) - self.label_2.setText(_translate("Dialog", "

Using this option user can edit syslinux.cfg file directly. It directly uses

default editor of host system. Be careful while editing syslinux.cfg file.

")) - self.tabWidget.setTabText(self.tabWidget.indexOf(self.syslinux_ab), _translate("Dialog", "Syslinux")) - self.groupBox_5.setTitle(_translate("Dialog", "Boot ISO")) - self.ram_iso_2048.setText(_translate("Dialog", "2048 MB")) - self.ram_iso_1024.setText(_translate("Dialog", "1024 MB")) - self.ram_iso_256.setText(_translate("Dialog", "256 MB")) - self.browse_iso_qemu.setText(_translate("Dialog", "Browse ISO")) - self.label_7.setText(_translate("Dialog", "

Best way to test your downloaded ISOs.

")) - self.ram_iso_512.setText(_translate("Dialog", "512 MB")) + self.label_2.setText(_translate("Dialog", "

Edit syslinux.cfg file directly using the default editor of your system.

Be CAREFUL while editing syslinux.cfg!

")) + self.tabWidget.setTabText(self.tabWidget.indexOf(self.syslinux_ab), _translate("Dialog", "Install Syslinux")) + self.groupBox_5.setTitle(_translate("Dialog", "Boot ISO :: Test bootable ISOs without reboot")) self.boot_iso_qemu.setText(_translate("Dialog", "Boot ISO")) - self.ram_iso_768.setText(_translate("Dialog", "768 MB")) - self.label_3.setText(_translate("Dialog", "Choose desired RAM and click on Boot ISO button.")) - self.groupBox_4.setTitle(_translate("Dialog", "Boot USB")) - self.ram_usb_768.setText(_translate("Dialog", "768 MB")) - self.ram_usb_256.setText(_translate("Dialog", "256 MB")) - self.label_6.setText(_translate("Dialog", "

Use this option if you want to check USB installation without reboot.

")) - self.ram_usb_1024.setText(_translate("Dialog", "1024 MB")) - self.label_4.setText(_translate("Dialog", "Choose desired RAM and click on Boot USB button.")) - self.ram_usb_512.setText(_translate("Dialog", "512 MB")) + self.browse_iso_qemu.setText(_translate("Dialog", "Browse ISO")) + self.label_3.setText(_translate("Dialog", "Choose RAM size:")) + self.ram_iso_256.setText(_translate("Dialog", "&256 MB")) + self.ram_iso_512.setText(_translate("Dialog", "&512 MB")) + self.ram_iso_768.setText(_translate("Dialog", "&768 MB")) + self.ram_iso_1024.setText(_translate("Dialog", "&1024 MB")) + self.ram_iso_2048.setText(_translate("Dialog", "204&8 MB")) + self.groupBox_4.setTitle(_translate("Dialog", "Boot USB :: Test bootable USB drive without reboot")) + self.ram_usb_2048.setText(_translate("Dialog", "20&48 MB")) self.boot_usb_qemu.setText(_translate("Dialog", "Boot USB")) - self.ram_usb_2048.setText(_translate("Dialog", "2048 MB")) - self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("Dialog", "QEMU")) - self.label_5.setText(_translate("Dialog", "

An advanced bootable usb creator with option to install/uninstall

multiple distros. This software is written in python and pyqt.

Copyright 2010-2016 Sundar

Author(s): Sundar, Ian Bruce, Lee

Licence: GPL version 2 or later

Home page: http://multibootusb.org

Help/Email: feedback.multibootusb@gmail.com

Source Code:https://github.com/mbusb/multibootusb


")) + self.ram_usb_256.setText(_translate("Dialog", "25&6 MB")) + self.ram_usb_768.setText(_translate("Dialog", "7&68 MB")) + self.label_4.setText(_translate("Dialog", "Choose RAM size:")) + self.ram_usb_512.setText(_translate("Dialog", "5&12 MB")) + self.ram_usb_1024.setText(_translate("Dialog", "1&024 MB")) + self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("Dialog", "Boot ISO/USB")) + self.label_5.setText(_translate("Dialog", "

An advanced bootable usb creator with option to install/uninstall multiple distros.

This software is written in python and pyqt.

Copyright 2010-2016 Sundar

Author(s): Sundar, Ian Bruce, Lee

Licence: GPL version 2 or later

Home page: http://multibootusb.org

Help/Email: feedback.multibootusb@gmail.com

Source Code: https://github.com/mbusb/multibootusb


")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("Dialog", "About")) - -if __name__ == "__main__": - import sys - app = QtWidgets.QApplication(sys.argv) - Dialog = QtWidgets.QDialog() - ui = Ui_Dialog() - ui.setupUi(Dialog) - Dialog.show() - sys.exit(app.exec_()) - diff --git a/scripts/imager.py b/scripts/imager.py index 0d3e006..ba65949 100644 --- a/scripts/imager.py +++ b/scripts/imager.py @@ -115,33 +115,32 @@ class Imager(QtWidgets.QDialog, Ui_Dialog): :return: """ log("Testing ISO...") + self.ui.imager_bootable.setVisible(True) if iso.is_bootable(config.imager_iso_link) is True: - self.ui.imager_bootable.setText("Bootable ISO :: Yes") + self.ui.imager_bootable.setText("Bootable ISO: Yes") log("ISO is bootable.") else: - self.ui.imager_bootable.setText("Bootable ISO :: No") + self.ui.imager_bootable.setText("Bootable ISO: No") log("ISO is not bootable.") if os.path.exists(config.imager_iso_link): - log("Path " + config.imager_iso_link + " is exist...") + log("Path " + config.imager_iso_link + " exists...") self.iso_size = str(round(os.path.getsize(config.imager_iso_link) / 1024 / 1024)) - self.ui.imager_iso_size.setText("ISO Size :: " + self.iso_size + " MB") + self.ui.imager_iso_size.setVisible(True) + self.ui.imager_iso_size.setText("ISO Size: " + self.iso_size + " MB") log("ISO Size is " + self.iso_size + " MB") def onImagerComboChange(self): config.imager_usb_disk = str(self.ui.comboBox_2.currentText()) if bool(config.imager_usb_disk): - self.ui.imager_disk_label.setText("Disk Type :: " + self.imager_usb_detail(config.imager_usb_disk, - partition=0).usb_type) - self.ui.imager_total_size.setText("Disk Size :: " + usb.bytes2human(int(self.imager_usb_detail - (config.imager_usb_disk, - partition=0).total_size))) + self.ui.imager_disk_label.setText(self.imager_usb_detail(config.imager_usb_disk, partition=0).usb_type) + self.ui.imager_total_size.setText(usb.bytes2human(int(self.imager_usb_detail(config.imager_usb_disk, partition=0).total_size))) + if platform.system() == "Linux": - self.ui.imager_uuid.setText("Disk Model :: " + str(self.imager_usb_detail(config.imager_usb_disk, - partition=0).model)) + self.ui.label_imager_uuid.setText("Disk Model:") + self.ui.imager_uuid.setText(str(self.imager_usb_detail(config.imager_usb_disk, partition=0).model)) else: - self.ui.imager_uuid.setText("Disk Label :: " + self.imager_usb_detail(config.imager_usb_disk, - partition=0).model) + self.ui.imager_uuid.setText(self.imager_usb_detail(config.imager_usb_disk, partition=0).model) def imager_list_usb(self, partition=1): """ @@ -190,7 +189,7 @@ class Imager(QtWidgets.QDialog, Ui_Dialog): if not total_size: total_size = "Unknown" usb_type = "Removable" - model = subprocess.check_output("lsblk -in -f -o MODEL " + usb_disk, shell=True).decode() + model = subprocess.check_output("lsblk -in -f -o MODEL " + usb_disk, shell=True).decode().strip() if not model: model = "Unknown" else: diff --git a/scripts/mbusb_gui.py b/scripts/mbusb_gui.py index 2b9db7d..6e279b9 100644 --- a/scripts/mbusb_gui.py +++ b/scripts/mbusb_gui.py @@ -39,6 +39,23 @@ class AppGui(qemu.Qemu, Imager, QtWidgets.QDialog, Ui_Dialog): self.ui = Ui_Dialog() self.ui.setupUi(self) + self.ui.tabWidget.setCurrentIndex(0) + self.ui.label_persistence_value.setVisible(False) + self.ui.label_persistence.setVisible(False) + self.ui.slider_persistence.setVisible(False) + + self.ui.label_imager_disk_label.setVisible(False) + self.ui.label_imager_total_size.setVisible(False) + self.ui.label_imager_uuid.setVisible(False) + self.ui.label_usb_dev.setVisible(False) + self.ui.label_usb_vendor.setVisible(False) + self.ui.label_usb_model.setVisible(False) + self.ui.label_usb_size.setVisible(False) + self.ui.label_usb_mount.setVisible(False) + + self.ui.imager_bootable.setVisible(False) + self.ui.imager_iso_size.setVisible(False) + # Main Tab self.ui.checkBox_all_drives.clicked.connect(self.add_device) self.ui.detect_usb.clicked.connect(self.onRefereshClick) @@ -131,21 +148,51 @@ class AppGui(qemu.Qemu, Imager, QtWidgets.QDialog, Ui_Dialog): """ self.ui.comboBox.clear() self.ui.comboBox_2.clear() + self.ui.imager_disk_label.clear() + self.ui.label_imager_disk_label.setVisible(False) + self.ui.imager_total_size.clear() + self.ui.label_imager_total_size.setVisible(False) + self.ui.imager_uuid.clear() + self.ui.label_imager_uuid.setVisible(False) + self.ui.usb_dev.clear() + self.ui.label_usb_dev.setVisible(False) + self.ui.usb_vendor.clear() + self.ui.label_usb_vendor.setVisible(False) + self.ui.usb_model.clear() + self.ui.label_usb_model.setVisible(False) + self.ui.usb_size.clear() + self.ui.label_usb_size.setVisible(False) + self.ui.usb_mount.clear() + self.ui.label_usb_mount.setVisible(False) + self.add_device() def update_gui_oncombobox(self, usb_disk): self.usb_details = usb.details(usb_disk) config.usb_mount = self.usb_details['mount_point'] - self.ui.usb_dev.setText("Drive :: " + usb_disk) + self.ui.usb_dev.setText(usb_disk) + + self.ui.label_imager_disk_label.setVisible(True) + self.ui.label_imager_total_size.setVisible(True) + self.ui.label_imager_uuid.setVisible(True) + self.ui.label_usb_dev.setVisible(True) + self.ui.label_usb_vendor.setVisible(True) + self.ui.label_usb_model.setVisible(True) + self.ui.label_usb_size.setVisible(True) + self.ui.label_usb_mount.setVisible(True) + # self.label.setFont(QtGui.QFont("Times",weight=QtGui.QFont.Bold)) if platform.system() == 'Windows': - self.ui.usb_vendor.setText("FileSystem :: " + self.usb_details['file_system']) - self.ui.usb_model.setText("Label :: " + self.usb_details['label']) + self.ui.label_usb_vendor.setText("FileSystem:") + self.ui.usb_vendor.setText(self.usb_details['file_system']) + + self.ui.label_usb_model.setText("Label: ") + self.ui.usb_model.setText(self.usb_details['label']) else: - self.ui.usb_vendor.setText("Vendor :: " + self.usb_details['vendor']) - self.ui.usb_model.setText("Model :: " + self.usb_details['model']) - self.ui.usb_size.setText("Total Size :: " + str(usb.bytes2human(self.usb_details['size_total']))) - self.ui.usb_mount.setText("Mount :: " + self.usb_details['mount_point']) + self.ui.usb_vendor.setText(self.usb_details['vendor']) + self.ui.usb_model.setText(self.usb_details['model']) + self.ui.usb_size.setText(str(usb.bytes2human(self.usb_details['size_total']))) + self.ui.usb_mount.setText(self.usb_details['mount_point']) self.update_list_box(usb_disk) @@ -184,6 +231,11 @@ class AppGui(qemu.Qemu, Imager, QtWidgets.QDialog, Ui_Dialog): per_availability = persistence.persistence_distro(config.distro, config.usb_disk, config.iso_link)[0] per_max_size = persistence.persistence_distro(config.distro, config.usb_disk, config.iso_link)[1] if per_availability is not None: + self.ui.label_persistence_value.setVisible(True) + self.ui.label_persistence.setVisible(True) + self.ui.slider_persistence.setVisible(True) + self.ui.label_persistence_value.setEnabled(True) + self.ui.label_persistence.setEnabled(True) self.ui.slider_persistence.setEnabled(True) self.ui.slider_persistence.setTickInterval(10) self.ui.slider_persistence.setSingleStep(10) @@ -192,6 +244,12 @@ class AppGui(qemu.Qemu, Imager, QtWidgets.QDialog, Ui_Dialog): self.ui.slider_persistence.setMaximum(ui_per_max_size) log('Persistence Max Size: ' + str(bytes2human(per_max_size))) else: + self.ui.label_persistence_value.setEnabled(False) + self.ui.label_persistence.setEnabled(False) + self.ui.slider_persistence.setEnabled(False) + self.ui.label_persistence_value.setVisible(False) + self.ui.label_persistence.setVisible(False) + self.ui.slider_persistence.setVisible(False) log('Persistence is not available for ' + iso_name(config.iso_link)) else: log("File not selected...") @@ -206,15 +264,15 @@ class AppGui(qemu.Qemu, Imager, QtWidgets.QDialog, Ui_Dialog): Function to install syslinux on distro directory and on selected USB disks. :return: """ - self.ui.status.setText(str("Installing Syslinux...")) + self.ui.status.setText(str("Status: Installing Syslinux...")) syslinux_distro_dir(config.usb_disk, config.iso_link, config.distro) syslinux_default(config.usb_disk) update_distro_cfg_files(config.iso_link, config.usb_disk, config.distro, config.persistence) self.update_list_box(config.usb_disk) if sys.platform.startswith("linux"): - self.ui.status.setText("Sync is in progress...") + self.ui.status.setText("Status: Sync is in progress...") os.system('sync') - self.ui.status.clear() + self.ui.status.setText("Status: Idle") QtWidgets.QMessageBox.information(self, 'Finished...', iso_name(config.iso_link) + ' has been successfully installed.') config.process_exist = None @@ -295,7 +353,7 @@ class AppGui(qemu.Qemu, Imager, QtWidgets.QDialog, Ui_Dialog): config.uninstall_distro_dir_name = str(self.ui.listWidget.currentItem().text()).strip() reply = QtWidgets.QMessageBox.question(self, "Review selection...", "Are you sure to uninstall " + config.uninstall_distro_dir_name, - QtWidgets.QMessageBox.Yes, QtWidgets.QMessageBox.No) + QtWidgets.QMessageBox.Yes|QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.No) if reply == QtWidgets.QMessageBox.Yes: @@ -314,9 +372,9 @@ class AppGui(qemu.Qemu, Imager, QtWidgets.QDialog, Ui_Dialog): update_sys_cfg_file() self.update_list_box(config.usb_mount) if sys.platform.startswith("linux"): - self.ui.status.setText("Sync is in progress...") + self.ui.status.setText("Status: Sync in progress...") os.system('sync') - self.ui.status.clear() + self.ui.status.setText("Status: Idle") QtWidgets.QMessageBox.information(self, 'Uninstall Complete...', config.uninstall_distro_dir_name + ' has been successfully removed.') @@ -358,22 +416,22 @@ class AppGui(qemu.Qemu, Imager, QtWidgets.QDialog, Ui_Dialog): if os.path.exists(config.iso_link): self.ui.lineEdit.clear() if config.distro: - log("Distro type detected is " + config.distro) + log("Distro type detected: " + config.distro) copy_mbusb_dir_usb(config.usb_disk) if not os.path.exists(os.path.join(config.usb_mount, "multibootusb", iso_basename(config.iso_link))): config.persistence = self.ui.slider_persistence.value() * 1024 * 1024 install_size = iso_size(config.iso_link) + config.persistence - log("Persistence choosen is " + str(config.persistence) + " MB") + log("Persistence chosen is " + str(config.persistence) + " MB") if install_size >= disk_usage(config.usb_mount).free: QtWidgets.QMessageBox.information(self, "No Space.", "No space available on " + config.usb_disk) else: reply = QtWidgets.QMessageBox.question(self, 'Review selection...', - 'Selected USB disk:: %s\n' % config.usb_disk + - 'USB mount point:: %s\n' % config.usb_mount + - 'Selected distro:: %s\n\n' % iso_name(config.iso_link) + - 'Would you like to proceed for installation?', - QtWidgets.QMessageBox.Yes, QtWidgets.QMessageBox.No) + 'Selected USB disk: %s\n' % config.usb_disk + + 'USB mount point: %s\n' % config.usb_mount + + 'Selected distro: %s\n\n' % iso_name(config.iso_link) + + 'Proceed with installation?', + QtWidgets.QMessageBox.Yes|QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.No) if reply == QtWidgets.QMessageBox.Yes: self.ui.slider_persistence.setEnabled(False) @@ -381,7 +439,7 @@ class AppGui(qemu.Qemu, Imager, QtWidgets.QDialog, Ui_Dialog): self.progress_thread_install.start() else: - QtWidgets.QMessageBox.information(self, 'Already Exist...', + QtWidgets.QMessageBox.information(self, 'Already exists...', os.path.basename(config.iso_link) + ' is already installed.') else: QtWidgets.QMessageBox.information(self, 'No support...', @@ -398,14 +456,21 @@ class AppGui(qemu.Qemu, Imager, QtWidgets.QDialog, Ui_Dialog): :return: """ self.ui.imager_progressbar.setValue(0) - self.ui.imager_label_status.clear() + self.ui.imager_label_status.setText("Status: Idle") self.ui.comboBox_2.setEnabled(True) self.ui.pushButton.setEnabled(True) - self.ui.imager_bootable.setText("Bootable ISO :: ") - self.ui.imager_iso_size.setText("ISO Size :: ") + self.ui.imager_write.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 - QtWidgets.QMessageBox.information(self, 'Finished...', 'ISO has been written to USB disk.\nPlease reboot your ' - 'system to boot from USB.') + + msgBox = QtWidgets.QMessageBox() + msgBox.setText("Image succesfully written to USB disk.") + msgBox.setInformativeText("Reboot to boot from USB or test it from Boot ISO/USB tab."); + msgBox.setStandardButtons(QtWidgets.QMessageBox.Ok) + msgBox.setIcon(QtWidgets.QMessageBox.Information) + msgBox.exec() def dd_start(self): """ @@ -418,8 +483,9 @@ class AppGui(qemu.Qemu, Imager, QtWidgets.QDialog, Ui_Dialog): self.ui.pushButton.setEnabled(False) self.ui.comboBox_2.setEnabled(False) self.ui.pushbtn_imager_refreshusb.setEnabled(False) - status_text = ("Writing " + os.path.basename(config.imager_iso_link) + "" + " to " + "" + - config.imager_usb_disk_selected + "") + self.ui.imager_write.setEnabled(False) + status_text = ("Status: Writing " + os.path.basename(config.imager_iso_link) + "" + " to " + "" + + config.imager_usb_disk + "") self.ui.imager_label_status.setText(status_text) def dd_quit(self): @@ -427,7 +493,7 @@ class AppGui(qemu.Qemu, Imager, QtWidgets.QDialog, Ui_Dialog): self.ui.imager_label_status.clear() self.ui.comboBox_2.setEnabled(True) self.ui.pushButton.setEnabled(True) - QtWidgets.QMessageBox.information(self, 'Failed!', 'Writing ISO failed.') + QtWidgets.QMessageBox.information(self, 'Failed!', 'Failed writing image.') def dd_write(self): if not config.imager_usb_disk: @@ -438,15 +504,15 @@ class AppGui(qemu.Qemu, Imager, QtWidgets.QDialog, Ui_Dialog): usb_disk_size = int(self.imager_usb_detail(config.imager_usb_disk, partition=0).total_size) self.iso_size = os.path.getsize(config.imager_iso_link) if self.iso_size >= usb_disk_size: - QtWidgets.QMessageBox.information(self, "No Space.", os.path.basename(config.imager_iso_link) + + QtWidgets.QMessageBox.information(self, "No enough space on disk.", os.path.basename(config.imager_iso_link) + " size is larger than the size of " + config.imager_usb_disk) else: reply = QtWidgets.QMessageBox.question \ - (self, 'Review selection...', - 'Selected USB disk:: %s\n' % config.imager_usb_disk + - 'Selected distro:: %s\n\n' % os.path.basename(config.imager_iso_link) + - 'Would you like to proceed for installation?', - QtWidgets.QMessageBox.Yes, QtWidgets.QMessageBox.No) + (self, 'Review selection', + 'Selected disk: %s\n' % config.imager_usb_disk + + 'Selected image: %s\n\n' % os.path.basename(config.imager_iso_link) + + 'Proceed with writing image to disk?', + QtWidgets.QMessageBox.Yes|QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.No) if reply == QtWidgets.QMessageBox.Yes: self.dd_start() From 5266992ac416edb1216fafceef0aec94249a3293 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alin=20Tr=C4=83istaru?= Date: Wed, 5 Apr 2017 13:33:00 +0300 Subject: [PATCH 2/4] use dd sync writes --- scripts/imager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/imager.py b/scripts/imager.py index ba65949..0ecd621 100644 --- a/scripts/imager.py +++ b/scripts/imager.py @@ -32,12 +32,12 @@ def dd_linux(): in_file_size = float(os.path.getsize(config.imager_iso_link)) output = "of=" + config.imager_usb_disk os.system("umount " + config.imager_usb_disk + "1") - command = ['dd', input, output, "bs=1M"] + command = ['dd', input, output, "bs=1M", "oflag=sync"] log("Executing ==> " + " ".join(command)) dd_process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=False) pbar = progressbar.ProgressBar(maxval=100).start() # bar = progressbar.ProgressBar(redirect_stdout=True) while dd_process.poll() is None: - time.sleep(.1) # If this time delay is not given, the Popen does not execute the actual command + time.sleep(1) # If this time delay is not given, the Popen does not execute the actual command dd_process.send_signal(signal.SIGUSR1) dd_process.stderr.flush() while True: From 349dca6f224093a9f14ba320e15baea431ff0411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alin=20Tr=C4=83istaru?= Date: Thu, 6 Apr 2017 11:58:04 +0300 Subject: [PATCH 3/4] fixed typos --- scripts/_7zip.py | 6 +++--- scripts/gen.py | 4 ++-- scripts/imager.py | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/_7zip.py b/scripts/_7zip.py index 0a8715c..f4d2672 100644 --- a/scripts/_7zip.py +++ b/scripts/_7zip.py @@ -51,14 +51,14 @@ def extract_iso(src, dst, pattern=None, suppress_out=True): # gen.log('Executing', _cmd) _7zip_process = subprocess.Popen(_cmd, universal_newlines=True, stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE, shell=True) - config.status_text = 'Extracting ' + os.path.basename(src) + config.status_text = 'Status: Extracting ' + os.path.basename(src).strip() while True: line = _7zip_process.stdout.readline() # gen.log(line) if line.startswith('- '): - config.status_text = 'Extracting ' + line[2:] + config.status_text = 'Status: Extracting ' + line[2:].strip() elif platform.system() == 'Linux': # line.startswith('Extracting'): # Under Linux it prints directly all the process (may be due to version diff). - config.status_text = line + config.status_text = 'Status: ' + line.strip() if line == '' and _7zip_process.poll() != None: break diff --git a/scripts/gen.py b/scripts/gen.py index 461821c..6f4d544 100644 --- a/scripts/gen.py +++ b/scripts/gen.py @@ -84,7 +84,7 @@ def print_version(): Simple log the version number of the multibootusb application :return: """ - log('multibootusb version : ', mbusb_version()) + log('multibootusb version: ', mbusb_version()) def quote(text): @@ -203,7 +203,7 @@ def copy_mbusb_dir_usb(usb_disk): except: return False else: - log('multibootus directory already exist. Not copying.') + log('multibootusb directory already exists. Not copying.') def read_input_yes(): diff --git a/scripts/imager.py b/scripts/imager.py index 0ecd621..44f4f5e 100644 --- a/scripts/imager.py +++ b/scripts/imager.py @@ -50,7 +50,7 @@ def dd_linux(): break if dd_process.poll() is not None: - log("Executing ==> sync") + log("\nExecuting ==> sync") os.system("sync") log("ISO has been written to USB disk...") return From 71496955cbba133cff7df6734f963f98e988ca66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alin=20Tr=C4=83istaru?= Date: Thu, 6 Apr 2017 12:00:11 +0300 Subject: [PATCH 4/4] tweak log progressbar --- scripts/imager.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/scripts/imager.py b/scripts/imager.py index 44f4f5e..6414db6 100644 --- a/scripts/imager.py +++ b/scripts/imager.py @@ -35,7 +35,18 @@ def dd_linux(): command = ['dd', input, output, "bs=1M", "oflag=sync"] log("Executing ==> " + " ".join(command)) dd_process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=False) - pbar = progressbar.ProgressBar(maxval=100).start() # bar = progressbar.ProgressBar(redirect_stdout=True) + + # bar = progressbar.ProgressBar(redirect_stdout=True) + pbar = progressbar.ProgressBar( + maxval=100, + widgets=[ + ' ', + progressbar.widgets.Bar(marker='=', left='[', right=']'), + ' ', + progressbar.widgets.Percentage() + ] + ).start() + while dd_process.poll() is None: time.sleep(1) # If this time delay is not given, the Popen does not execute the actual command dd_process.send_signal(signal.SIGUSR1)