GUI improvement and bug fix.

1. Place the push button under imager tab to its original place
2. Extract additional files from ISO for proper booting of wifislax
3. PEP improvements
pull/359/head
Sundar 6 years ago
parent fe02cea56d
commit 57c30ea587

@ -102,7 +102,7 @@ Example for installing multiple distros without user intervention:
Windows:
python3 multibootusb -c -y -i ../../favourite.iso,../../other-distro.iso -t G:
Example for writing ISO image to target USB disk (will destroy data on USB disk):
Linux:
@ -217,6 +217,7 @@ def main():
running_from()
start_gui()
if __name__ == '__main__':
try:
main()

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>629</width>
<height>605</height>
<width>747</width>
<height>609</height>
</rect>
</property>
<property name="sizePolicy">
@ -23,16 +23,7 @@
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<layout class="QVBoxLayout" name="verticalLayout_5">
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<property name="margin">
<number>5</number>
</property>
<item>
@ -318,30 +309,12 @@
<string>MultiBootUSB</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<property name="margin">
<number>0</number>
</property>
<item>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<property name="margin">
<number>5</number>
</property>
<item row="0" column="3">
@ -457,33 +430,35 @@
<string>Write Image to disk</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<property name="margin">
<number>0</number>
</property>
<item>
<layout class="QGridLayout" name="gridLayout_9">
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<property name="margin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<item row="3" column="2">
<item row="2" column="1">
<widget class="QPushButton" name="button_write_image_to_disk">
<property name="text">
<string>Write image to USB</string>
</property>
</widget>
</item>
<item row="4" column="1">
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="5" column="2">
<spacer name="horizontalSpacer_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
@ -496,32 +471,16 @@
</property>
</spacer>
</item>
<item row="3" column="1">
<widget class="QPushButton" name="button_write_image_to_disk">
<property name="text">
<string>Write image to USB</string>
</property>
</widget>
</item>
<item row="3" column="3" colspan="2">
<item row="5" column="3" colspan="2">
<widget class="QWidget" name="widget_7" native="true">
<layout class="QVBoxLayout" name="verticalLayout_6">
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<property name="margin">
<number>5</number>
</property>
</layout>
</widget>
</item>
<item row="3" column="0">
<item row="5" column="0">
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
@ -534,7 +493,7 @@
</property>
</spacer>
</item>
<item row="4" column="1">
<item row="6" column="1">
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
@ -567,20 +526,7 @@
</property>
</spacer>
</item>
<item row="2" column="1">
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="0" colspan="3">
<item row="3" column="1">
<widget class="QLabel" name="label_waning">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;justify&quot;&gt;&lt;span style=&quot; font-weight:600; color:#ff0000;&quot;&gt;WARNING&lt;/span&gt; : Any bootable USB made using&lt;span style=&quot; font-weight:600;&quot;&gt; ISO Imager will destroy all data &lt;/span&gt;on the selected USB disk. &lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;Use it at your own risk. Developers are not responsile for loss of any data.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
@ -1014,7 +960,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>629</width>
<width>747</width>
<height>21</height>
</rect>
</property>

@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'gui/multibootusb.ui'
# Form implementation generated from reading ui file 'multibootusb.ui'
#
# Created by: PyQt5 UI code generator 5.5.1
# Created by: PyQt5 UI code generator 5.7
#
# WARNING! All changes made in this file will be lost!
@ -11,7 +11,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(629, 605)
MainWindow.resize(747, 609)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
@ -216,37 +216,38 @@ class Ui_MainWindow(object):
self.gridLayout_9 = QtWidgets.QGridLayout()
self.gridLayout_9.setContentsMargins(5, 5, 5, 5)
self.gridLayout_9.setObjectName("gridLayout_9")
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout_9.addItem(spacerItem, 3, 2, 1, 1)
self.button_write_image_to_disk = QtWidgets.QPushButton(self.tab_imager)
self.button_write_image_to_disk.setObjectName("button_write_image_to_disk")
self.gridLayout_9.addWidget(self.button_write_image_to_disk, 3, 1, 1, 1)
self.gridLayout_9.addWidget(self.button_write_image_to_disk, 2, 1, 1, 1)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout_9.addItem(spacerItem, 4, 1, 1, 1)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout_9.addItem(spacerItem1, 5, 2, 1, 1)
self.widget_7 = QtWidgets.QWidget(self.tab_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_9.addWidget(self.widget_7, 3, 3, 1, 2)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout_9.addItem(spacerItem1, 3, 0, 1, 1)
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout_9.addItem(spacerItem2, 4, 1, 1, 1)
self.gridLayout_9.addWidget(self.widget_7, 5, 3, 1, 2)
spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout_9.addItem(spacerItem2, 5, 0, 1, 1)
spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout_9.addItem(spacerItem3, 6, 1, 1, 1)
self.label_6 = QtWidgets.QLabel(self.tab_imager)
self.label_6.setObjectName("label_6")
self.gridLayout_9.addWidget(self.label_6, 1, 1, 1, 1)
spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout_9.addItem(spacerItem3, 0, 1, 1, 1)
spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout_9.addItem(spacerItem4, 2, 1, 1, 1)
self.gridLayout_9.addItem(spacerItem4, 0, 1, 1, 1)
self.label_waning = QtWidgets.QLabel(self.tab_imager)
self.label_waning.setWordWrap(False)
self.label_waning.setObjectName("label_waning")
self.gridLayout_9.addWidget(self.label_waning, 3, 0, 1, 3)
self.gridLayout_9.addWidget(self.label_waning, 3, 1, 1, 1)
self.horizontalLayout_7.addLayout(self.gridLayout_9)
self.tabWidget.addTab(self.tab_imager, "")
self.tab_syslinux = QtWidgets.QWidget()
self.tab_syslinux.setObjectName("tab_syslinux")
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.tab_syslinux)
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")
@ -295,6 +296,7 @@ class Ui_MainWindow(object):
self.tab_testboot = QtWidgets.QWidget()
self.tab_testboot.setObjectName("tab_testboot")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.tab_testboot)
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.gridLayout_6 = QtWidgets.QGridLayout()
self.gridLayout_6.setContentsMargins(-1, 10, -1, -1)
@ -369,6 +371,7 @@ class Ui_MainWindow(object):
self.tab_fsck.setEnabled(True)
self.tab_fsck.setObjectName("tab_fsck")
self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.tab_fsck)
self.horizontalLayout_6.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
spacerItem14 = QtWidgets.QSpacerItem(242, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_6.addItem(spacerItem14)
@ -389,7 +392,7 @@ class Ui_MainWindow(object):
self.verticalLayout_7.addWidget(self.progressbar)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 629, 19))
self.menubar.setGeometry(QtCore.QRect(0, 0, 747, 21))
self.menubar.setNativeMenuBar(True)
self.menubar.setObjectName("menubar")
self.menuFile = QtWidgets.QMenu(self.menubar)
@ -480,3 +483,13 @@ class Ui_MainWindow(object):
self.action_Quit.setText(_translate("MainWindow", "&Quit"))
self.action_About.setText(_translate("MainWindow", "&About"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())

@ -80,7 +80,7 @@ def install_distro():
elif config.distro in ["salix-live", 'wifislax']:
# iso.iso_extract_file(config.image_path, install_dir, "boot")
iso.iso_extract_file(config.image_path, install_dir,
['*syslinux', '*menus', '*vmlinuz', '*initrd*',
['*syslinux', '*isolinux', '*system_tools', '*menus', '*vmlinuz', '*initrd*',
'EFI'])
iso.iso_extract_file(config.image_path, usb_mount,
['*modules', '*packages', '*optional',

@ -416,25 +416,31 @@ def gpt_device(dev_name):
gen.log('Device ' + dev_name + ' is a GPT disk...')
return True
def unmount(usb_disk):
UDISKS.unmount(usb_disk)
class RemountError(Exception):
def __init__(self, caught_exception, *args, **kw):
super(RemountError, self).__init__(*args, **kw)
self.caught_exception = caught_exception
def __str__(self):
return "%s due to '%s'" % (
self.__class__.__name__, self.caught_exception)
class UnmountError(RemountError):
def __init__(self, *args, **kw):
super(UnmountError, self).__init__(*args, **kw)
class MountError(RemountError):
def __init__(self, *args, **kw):
super(MountError, self).__init__(*args, **kw)
class UnmountedContext:
def __init__(self, usb_disk, exit_callback):
self.usb_disk = usb_disk
@ -472,7 +478,7 @@ class UnmountedContext:
if not self.is_relevant:
return
os.sync() # This should not be strictly necessary
time.sleep(1) # Yikes, mount always fails without this sleep().
time.sleep(1) # Yikes, mount always fails without this sleep().
try:
mount_point = UDISKS.mount(self.usb_disk)
config.add_remounted(self.usb_disk)

Loading…
Cancel
Save