Made multi-selection of characters a bit more intuitive

This commit is contained in:
tntscreed 2023-03-05 15:04:56 +01:00
parent fc86ed5df6
commit d55e88599d

View file

@ -9,7 +9,7 @@ from PyQt5.QtCore import (pyqtSignal, QSignalMapper, QTimer, QSettings, Qt, QPoi
QRegExp, QUrl, QSize, QModelIndex) QRegExp, QUrl, QSize, QModelIndex)
from PyQt5.QtGui import QStandardItemModel, QIcon, QColor from PyQt5.QtGui import QStandardItemModel, QIcon, QColor
from PyQt5.QtWidgets import QMainWindow, QHeaderView, qApp, QMenu, QActionGroup, QAction, QStyle, QListWidgetItem, \ 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 import settings
from manuskript.enums import Character, PlotStep, Plot, World, Outline from manuskript.enums import Character, PlotStep, Plot, World, Outline
@ -299,25 +299,27 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def handleCharacterSelectionChanged(self): def handleCharacterSelectionChanged(self):
selectedCharacters = self.lstCharacters.currentCharacters() selectedCharacters = self.lstCharacters.currentCharacters()
characterSelectionIsEmpty = True characterSelectionIsEmpty = not any(selectedCharacters)
for c in selectedCharacters:
if c is not None:
characterSelectionIsEmpty = False
if characterSelectionIsEmpty: if characterSelectionIsEmpty:
self.tabPersos.setEnabled(False) self.tabPersos.setEnabled(False)
elif len(selectedCharacters)>1: return
self.tabPersos.setEnabled(False) cList = list(filter(None, self.lstCharacters.currentCharacters()))
else: character = cList[0]
self.tabPersos.setEnabled(True) self.changeCurrentCharacter(character)
self.changeCurrentCharacter()
def changeCurrentCharacter(self, trash=None): # TODO: Transform this check to still enable tabPersos,
c = self.lstCharacters.currentCharacter() # but only the parts that should be editable with multi-selection
if c is None: if len(selectedCharacters) > 1:
self.tabPersos.setEnabled(False)
return
self.tabPersos.setEnabled(True)
def changeCurrentCharacter(self, character, trash=None):
if character is None:
return return
index = c.index() index = character.index()
for w in [ for w in [
self.txtPersoName, self.txtPersoName,
@ -334,13 +336,13 @@ class MainWindow(QMainWindow, Ui_MainWindow):
w.setCurrentModelIndex(index) w.setCurrentModelIndex(index)
# Button color # Button color
self.updateCharacterColor(c.ID()) self.updateCharacterColor(character.ID())
# Slider importance # Slider importance
self.updateCharacterImportance(c.ID()) self.updateCharacterImportance(character.ID())
# POV state # POV state
self.updateCharacterPOVState(c.ID()) self.updateCharacterPOVState(character.ID())
# Character Infos # Character Infos
self.tblPersoInfos.setRootIndex(index) self.tblPersoInfos.setRootIndex(index)
@ -348,6 +350,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
if self.mdlCharacter.rowCount(index): if self.mdlCharacter.rowCount(index):
self.updatePersoInfoView() self.updatePersoInfoView()
def updatePersoInfoView(self): def updatePersoInfoView(self):
self.tblPersoInfos.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeToContents) self.tblPersoInfos.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeToContents)
self.tblPersoInfos.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch) self.tblPersoInfos.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch)