From b340c1e64d23f2c4b7e724c5a1e3f12a3991a759 Mon Sep 17 00:00:00 2001 From: "ivan@ivanholmes.co.uk" Date: Sun, 18 Apr 2021 21:27:40 +0100 Subject: [PATCH] fix crash on add block with no sections --- gui.py | 48 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 13 deletions(-) diff --git a/gui.py b/gui.py index a0b2736..ed53da6 100755 --- a/gui.py +++ b/gui.py @@ -181,6 +181,9 @@ class DocumentWindow(QMainWindow): self.window.sectionTableView.clicked.connect(self.sectionClickedAction) self.window.blockTableView.clicked.connect(self.blockClickedAction) + # Set the tab widget to Overview tab + self.window.tabWidget.setCurrentIndex(0) + def UIInitDocument(self): """ Fills the window's fields with the values from its document. @@ -755,19 +758,21 @@ class DocumentWindow(QMainWindow): """ Update the block list by reading the table. """ - - blockTableList = [] - for i in range(self.window.blockTableView.model.rowCount()): - blockLength = float( - self.window.blockTableView.model.item(i, 1).text()) - blockChord = self.chordDict[(self.window.blockTableView.model.item( - i, 0).text() if self.window.blockTableView.model.item(i, 0).text() else "None")] - blockNotes = self.window.blockTableView.model.item(i, 2).text( - ) if self.window.blockTableView.model.item(i, 2).text() else None - blockTableList.append( - Block(blockLength, chord=blockChord, notes=blockNotes)) - - section.blockList = blockTableList + if section is None: + BlockMustHaveSectionWarningMessageBox().exec() + else: + blockTableList = [] + for i in range(self.window.blockTableView.model.rowCount()): + blockLength = float( + self.window.blockTableView.model.item(i, 1).text()) + blockChord = self.chordDict[(self.window.blockTableView.model.item( + i, 0).text() if self.window.blockTableView.model.item(i, 0).text() else "None")] + blockNotes = self.window.blockTableView.model.item(i, 2).text( + ) if self.window.blockTableView.model.item(i, 2).text() else None + blockTableList.append( + Block(blockLength, chord=blockChord, notes=blockNotes)) + + section.blockList = blockTableList def updateDocument(self): """ @@ -947,6 +952,23 @@ class SectionNameWarningMessageBox(QMessageBox): self.setDefaultButton(QMessageBox.Ok) +class BlockMustHaveSectionWarningMessageBox(QMessageBox): + """ + Message box to warn the user that a block must belong to a section + """ + + def __init__(self): + super().__init__() + + self.setIcon(QMessageBox.Warning) + self.setWindowTitle("No sections found") + self.setText("Each block must belong to a section, but no sections have yet been created.") + self.setInformativeText( + "Please create a section before adding blocks.") + self.setStandardButtons(QMessageBox.Ok) + self.setDefaultButton(QMessageBox.Ok) + + class VoicingWarningMessageBox(QMessageBox): """ Message box to warn the user that the voicing entered could not be parsed