From d55e88599de18ec37c161765c41e93121d11ca27 Mon Sep 17 00:00:00 2001 From: tntscreed Date: Sun, 5 Mar 2023 15:04:56 +0100 Subject: [PATCH] Made multi-selection of characters a bit more intuitive --- manuskript/mainWindow.py | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/manuskript/mainWindow.py b/manuskript/mainWindow.py index c8edea6..cd2ceb7 100644 --- a/manuskript/mainWindow.py +++ b/manuskript/mainWindow.py @@ -9,7 +9,7 @@ from PyQt5.QtCore import (pyqtSignal, QSignalMapper, QTimer, QSettings, Qt, QPoi QRegExp, QUrl, QSize, QModelIndex) from PyQt5.QtGui import QStandardItemModel, QIcon, QColor from PyQt5.QtWidgets import QMainWindow, QHeaderView, qApp, QMenu, QActionGroup, QAction, QStyle, QListWidgetItem, \ - QLabel, QDockWidget, QWidget, QMessageBox, QLineEdit + QLabel, QDockWidget, QWidget, QMessageBox, QLineEdit, QTextEdit from manuskript import settings from manuskript.enums import Character, PlotStep, Plot, World, Outline @@ -299,25 +299,27 @@ class MainWindow(QMainWindow, Ui_MainWindow): def handleCharacterSelectionChanged(self): selectedCharacters = self.lstCharacters.currentCharacters() - characterSelectionIsEmpty = True - for c in selectedCharacters: - if c is not None: - characterSelectionIsEmpty = False - + characterSelectionIsEmpty = not any(selectedCharacters) if characterSelectionIsEmpty: self.tabPersos.setEnabled(False) - elif len(selectedCharacters)>1: - self.tabPersos.setEnabled(False) - else: - self.tabPersos.setEnabled(True) - self.changeCurrentCharacter() + return + cList = list(filter(None, self.lstCharacters.currentCharacters())) + character = cList[0] + self.changeCurrentCharacter(character) - def changeCurrentCharacter(self, trash=None): - c = self.lstCharacters.currentCharacter() - if c is None: + # TODO: Transform this check to still enable tabPersos, + # but only the parts that should be editable with multi-selection + if len(selectedCharacters) > 1: + self.tabPersos.setEnabled(False) + return + self.tabPersos.setEnabled(True) + + def changeCurrentCharacter(self, character, trash=None): + + if character is None: return - index = c.index() + index = character.index() for w in [ self.txtPersoName, @@ -334,13 +336,13 @@ class MainWindow(QMainWindow, Ui_MainWindow): w.setCurrentModelIndex(index) # Button color - self.updateCharacterColor(c.ID()) + self.updateCharacterColor(character.ID()) # Slider importance - self.updateCharacterImportance(c.ID()) + self.updateCharacterImportance(character.ID()) # POV state - self.updateCharacterPOVState(c.ID()) + self.updateCharacterPOVState(character.ID()) # Character Infos self.tblPersoInfos.setRootIndex(index) @@ -348,6 +350,7 @@ class MainWindow(QMainWindow, Ui_MainWindow): if self.mdlCharacter.rowCount(index): self.updatePersoInfoView() + def updatePersoInfoView(self): self.tblPersoInfos.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeToContents) self.tblPersoInfos.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch)