From d6f7186fc839992139035366b4d186f11d83ed77 Mon Sep 17 00:00:00 2001 From: cygnusx Date: Mon, 27 Dec 2021 16:26:53 +0100 Subject: [PATCH] Added option to dump GPT and check all partitions. Progress bar is not fully displaying 100% ok yet though.. --- mtkclient/gui/readFlashPartitions.py | 21 ++++++++ mtkclient/gui/readpart_gui.py | 34 +++++++++---- mtkclient/gui/readpart_gui.ui | 72 ++++++++++++++++++++-------- 3 files changed, 97 insertions(+), 30 deletions(-) diff --git a/mtkclient/gui/readFlashPartitions.py b/mtkclient/gui/readFlashPartitions.py index ee815c2..ed0fd7b 100644 --- a/mtkclient/gui/readFlashPartitions.py +++ b/mtkclient/gui/readFlashPartitions.py @@ -51,6 +51,15 @@ class ReadFlashWindow(QDialog): def dumpPartDone(self): self.sendToLogSignal.emit("dump done!") + def selectAll(self): + if self.ui.SelectAllCheckbox.isChecked(): + for partition in self.partitionCheckboxes: + self.partitionCheckboxes[partition]['box'].setChecked(True); + else: + for partition in self.partitionCheckboxes: + self.partitionCheckboxes[partition]['box'].setChecked(False); + + def dumpPartition(self): self.ui.startBtn.setEnabled(False) self.dumpFolder = str(QFileDialog.getExistingDirectory(self, "Select output directory")) @@ -94,6 +103,17 @@ class ReadFlashWindow(QDialog): self.da_handler.handle_da_cmds(self.mtkClass, "r", variables) self.dumpStatus["allPartitions"][partition]['done'] = True # MtkTool.cmd_stage(mtkClass, None, None, None, False) + if self.ui.DumpGPTCheckbox.isChecked(): + #also dump the GPT + variables = mock.Mock() + variables.directory = self.dumpFolder + variables.parttype = None + self.dumpStatus["allPartitions"]["GPT"] = {}; + self.dumpStatus["allPartitions"]["GPT"]['size'] = 17; + self.dumpStatus["currentPartition"] = "GPT" + self.da_handler.close = self.dumpPartDone # Ignore the normally used sys.exit + self.da_handler.handle_da_cmds(self.mtkClass, "gpt", variables) + self.dumpStatus["allPartitions"]["GPT"]['done'] = True self.dumpStatus["done"] = True thread.wait() @@ -137,5 +157,6 @@ class ReadFlashWindow(QDialog): partitionListWidgetVBox.addWidget(self.partitionCheckboxes[partition.name]['box']) self.ui.startBtn.clicked.connect(self.dumpPartition) + self.ui.SelectAllCheckbox.clicked.connect(self.selectAll); self.ui.closeBtn.clicked.connect(self.close) self.show() diff --git a/mtkclient/gui/readpart_gui.py b/mtkclient/gui/readpart_gui.py index c698127..17267c2 100644 --- a/mtkclient/gui/readpart_gui.py +++ b/mtkclient/gui/readpart_gui.py @@ -22,30 +22,43 @@ class Ui_partitionListWidget(object): self.gridLayout.setSpacing(0) self.gridLayout.setObjectName(u"gridLayout") self.gridLayout.setContentsMargins(-1, 8, -1, 8) + self.verticalSpacer_3 = QSpacerItem(20, 5, QSizePolicy.Minimum, QSizePolicy.Fixed) + + self.gridLayout.addItem(self.verticalSpacer_3, 1, 0, 1, 1) + + self.verticalSpacer_4 = QSpacerItem(20, 10, QSizePolicy.Minimum, QSizePolicy.Fixed) + + self.gridLayout.addItem(self.verticalSpacer_4, 6, 0, 1, 1) + + self.DumpGPTCheckbox = QCheckBox(partitionListWidget) + self.DumpGPTCheckbox.setObjectName(u"DumpGPTCheckbox") + + self.gridLayout.addWidget(self.DumpGPTCheckbox, 5, 0, 1, 1) + self.verticalSpacer = QSpacerItem(20, 10, QSizePolicy.Minimum, QSizePolicy.Fixed) self.gridLayout.addItem(self.verticalSpacer, 3, 0, 1, 1) self.verticalSpacer_2 = QSpacerItem(20, 10, QSizePolicy.Minimum, QSizePolicy.Fixed) - self.gridLayout.addItem(self.verticalSpacer_2, 8, 0, 1, 1) + self.gridLayout.addItem(self.verticalSpacer_2, 11, 0, 1, 1) self.partProgressText = QLabel(partitionListWidget) self.partProgressText.setObjectName(u"partProgressText") - self.gridLayout.addWidget(self.partProgressText, 4, 0, 1, 1) + self.gridLayout.addWidget(self.partProgressText, 7, 0, 1, 1) self.partProgress = QProgressBar(partitionListWidget) self.partProgress.setObjectName(u"partProgress") self.partProgress.setValue(0) - self.gridLayout.addWidget(self.partProgress, 5, 0, 1, 1) + self.gridLayout.addWidget(self.partProgress, 8, 0, 1, 1) self.fullProgress = QProgressBar(partitionListWidget) self.fullProgress.setObjectName(u"fullProgress") self.fullProgress.setValue(0) - self.gridLayout.addWidget(self.fullProgress, 7, 0, 1, 1) + self.gridLayout.addWidget(self.fullProgress, 10, 0, 1, 1) self.partitionList = QScrollArea(partitionListWidget) self.partitionList.setObjectName(u"partitionList") @@ -55,7 +68,7 @@ class Ui_partitionListWidget(object): self.partitionList.setWidgetResizable(True) self.scrollAreaWidgetContents = QWidget() self.scrollAreaWidgetContents.setObjectName(u"scrollAreaWidgetContents") - self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 376, 436)) + self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 376, 394)) self.partitionList.setWidget(self.scrollAreaWidgetContents) self.gridLayout.addWidget(self.partitionList, 2, 0, 1, 1) @@ -63,7 +76,7 @@ class Ui_partitionListWidget(object): self.fullProgressText = QLabel(partitionListWidget) self.fullProgressText.setObjectName(u"fullProgressText") - self.gridLayout.addWidget(self.fullProgressText, 6, 0, 1, 1) + self.gridLayout.addWidget(self.fullProgressText, 9, 0, 1, 1) self.horizontalLayout = QHBoxLayout() self.horizontalLayout.setObjectName(u"horizontalLayout") @@ -82,7 +95,7 @@ class Ui_partitionListWidget(object): self.horizontalLayout.addWidget(self.closeBtn) - self.gridLayout.addLayout(self.horizontalLayout, 9, 0, 1, 1) + self.gridLayout.addLayout(self.horizontalLayout, 12, 0, 1, 1) self.title = QLabel(partitionListWidget) self.title.setObjectName(u"title") @@ -90,9 +103,10 @@ class Ui_partitionListWidget(object): self.gridLayout.addWidget(self.title, 0, 0, 1, 1) - self.verticalSpacer_3 = QSpacerItem(20, 5, QSizePolicy.Minimum, QSizePolicy.Fixed) + self.SelectAllCheckbox = QCheckBox(partitionListWidget) + self.SelectAllCheckbox.setObjectName(u"SelectAllCheckbox") - self.gridLayout.addItem(self.verticalSpacer_3, 1, 0, 1, 1) + self.gridLayout.addWidget(self.SelectAllCheckbox, 4, 0, 1, 1) self.retranslateUi(partitionListWidget) @@ -102,10 +116,12 @@ class Ui_partitionListWidget(object): def retranslateUi(self, partitionListWidget): partitionListWidget.setWindowTitle(QCoreApplication.translate("partitionListWidget", u"Read partition(s)", None)) + self.DumpGPTCheckbox.setText(QCoreApplication.translate("partitionListWidget", u"Dump GPT", None)) self.partProgressText.setText(QCoreApplication.translate("partitionListWidget", u"Ready to start...", None)) self.fullProgressText.setText("") self.startBtn.setText(QCoreApplication.translate("partitionListWidget", u"Start", None)) self.closeBtn.setText(QCoreApplication.translate("partitionListWidget", u"Close", None)) self.title.setText(QCoreApplication.translate("partitionListWidget", u"Select partitions to read", None)) + self.SelectAllCheckbox.setText(QCoreApplication.translate("partitionListWidget", u"Select all", None)) # retranslateUi diff --git a/mtkclient/gui/readpart_gui.ui b/mtkclient/gui/readpart_gui.ui index f9c9965..40f0470 100644 --- a/mtkclient/gui/readpart_gui.ui +++ b/mtkclient/gui/readpart_gui.ui @@ -23,6 +23,45 @@ 0 + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 5 + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 10 + + + + + + + + Dump GPT + + + @@ -39,7 +78,7 @@ - + Qt::Vertical @@ -55,21 +94,21 @@ - + Ready to start... - + 0 - + 0 @@ -96,20 +135,20 @@ 0 0 376 - 436 + 394 - + - + @@ -150,21 +189,12 @@ - - - - Qt::Vertical + + + + Select all - - QSizePolicy::Fixed - - - - 20 - 5 - - - +