Added code to extend the status and importance colour lists

This commit is contained in:
Veronica K. B. Olsen
2019-05-19 17:00:05 +02:00
parent 0b98723b25
commit 37ec8e6280
2 changed files with 147 additions and 6 deletions
+139 -6
View File
@@ -15,11 +15,13 @@ import nw
from os import path
from PyQt5.QtWidgets import (
QDialog, QHBoxLayout, QVBoxLayout, QGroupBox, QFormLayout, QLineEdit, QPlainTextEdit,
QPushButton, QWidget, QTabWidget, QDialogButtonBox
)
from PyQt5.QtGui import QIcon, QPixmap, QColor
from PyQt5.QtSvg import QSvgWidget
from PyQt5.QtWidgets import (
QDialog, QHBoxLayout, QVBoxLayout, QFormLayout, QLineEdit, QPlainTextEdit, QLabel,
QWidget, QTabWidget, QDialogButtonBox, QListWidget, QListWidgetItem, QPushButton,
QColorDialog
)
logger = logging.getLogger(__name__)
@@ -43,9 +45,13 @@ class GuiProjectEditor(QDialog):
self.svgGradient.setFixedWidth(80)
self.tabMain = GuiProjectEditMain(self.theParent, self.theProject)
self.tabStatus = GuiProjectEditStatus(self.theParent, self.theProject.statusCols)
self.tabImport = GuiProjectEditStatus(self.theParent, self.theProject.importCols)
self.tabWidget = QTabWidget()
self.tabWidget.addTab(self.tabMain,"Settings")
self.tabWidget.addTab(self.tabMain, "Settings")
self.tabWidget.addTab(self.tabStatus,"Status")
self.tabWidget.addTab(self.tabImport,"Importance")
self.setLayout(self.outerBox)
self.outerBox.addWidget(self.svgGradient)
@@ -66,14 +72,21 @@ class GuiProjectEditor(QDialog):
def _doSave(self):
logger.verbose("ProjectEditor save button clicked")
projName = self.tabMain.editName.text()
bookTitle = self.tabMain.editTitle.text()
bookAuthors = self.tabMain.editAuthors.toPlainText()
self.theProject.setProjectName(projName)
self.theProject.setBookTitle(bookTitle)
self.theProject.setBookAuthors(bookAuthors)
self.theProject.setProjectChanged(True)
statusCol = self.tabStatus.getNewList()
importCol = self.tabImport.getNewList()
self.theProject.setStatusColours(statusCol)
self.theProject.setImportColours(importCol)
self.close()
return
def _doClose(self):
@@ -111,3 +124,123 @@ class GuiProjectEditMain(QWidget):
return
# END Class GuiProjectEditMain
class GuiProjectEditStatus(QWidget):
def __init__(self, theParent, colList):
QWidget.__init__(self, theParent)
self.theParent = theParent
self.colList = colList.copy()
self.colChanged = False
self.mainBox = QHBoxLayout()
self.mainForm = QVBoxLayout()
self.listBox = QListWidget()
self.listBox.itemSelectionChanged.connect(self._selectedItem)
for iName, iR, iG, iB in self.colList:
self._addItem(iName, iR, iG, iB)
self.editName = QLineEdit()
self.newButton = QPushButton("New")
self.delButton = QPushButton("Delete")
self.saveButton = QPushButton("Save")
self.colPixmap = QPixmap(16,16)
self.colPixmap.fill(QColor(120,120,120))
self.colButton = QPushButton(QIcon(self.colPixmap),"Colour")
self.colButton.setIconSize(self.colPixmap.rect().size())
self.newButton.clicked.connect(self._newItem)
self.saveButton.clicked.connect(self._saveItem)
self.colButton.clicked.connect(self._selectColour)
self.mainForm.addWidget(self.newButton)
self.mainForm.addWidget(self.delButton)
self.mainForm.addStretch(1)
self.mainForm.addWidget(QLabel("<b>Name</b>"))
self.mainForm.addWidget(self.editName)
self.mainForm.addWidget(self.colButton)
self.mainForm.addStretch(1)
self.mainForm.addWidget(self.saveButton)
self.mainBox.addWidget(self.listBox)
self.mainBox.addLayout(self.mainForm)
self.setLayout(self.mainBox)
return
def getNewList(self):
if self.colChanged:
newList = []
for n in range(self.listBox.count()):
nItem = self.listBox.item(n)
nName = nItem.text()
nImg = nItem.icon().pixmap(16,16).toImage()
nCol = QColor(nImg.pixel(7,7))
newList.append((nName,nCol.red(),nCol.green(),nCol.blue()))
return newList
return self.colList
##
# User Actions
##
def _selectColour(self):
logger.verbose("Item colour button clicked")
selImg = self.colButton.icon().pixmap(16,16).toImage()
selCol = QColor(selImg.pixel(7,7))
newCol = QColorDialog.getColor(selCol, self, "Select Colour", QColorDialog.DontUseNativeDialog)
if newCol:
colPixmap = QPixmap(16,16)
colPixmap.fill(newCol)
self.colButton.setIcon(QIcon(colPixmap))
self.colButton.setIconSize(colPixmap.rect().size())
return
def _newItem(self):
self._addItem("New Item", 0, 0, 0)
return
def _saveItem(self):
logger.verbose("Item save button clicked")
selItem = self._getSelectedItem()
if selItem is not None:
selItem.setText(self.editName.text().strip())
selItem.setIcon(self.colButton.icon())
self.colChanged = True
return
def _addItem(self, iName, iR, iG, iB):
logger.verbose("New item button clicked")
newIcon = QPixmap(16,16)
newIcon.fill(QColor(iR,iG,iB))
newItem = QListWidgetItem()
newItem.setText(iName)
newItem.setIcon(QIcon(newIcon))
self.listBox.addItem(newItem)
return
def _selectedItem(self):
logger.verbose("Item selected")
selItem = self._getSelectedItem()
if selItem is not None:
self.editName.setText(selItem.text())
self.colButton.setIcon(selItem.icon())
return
##
# Internal Functions
##
def _getSelectedItem(self):
selItem = self.listBox.selectedItems()
if len(selItem) == 0:
return None
if isinstance(selItem[0], QListWidgetItem):
return selItem[0]
return None
# END Class GuiProjectEditStatus
+8
View File
@@ -353,6 +353,14 @@ class NWProject():
self.setProjectChanged(True)
return True
def setStatusColours(self, newCols):
self.setProjectChanged(True)
return
def setImportColours(self, newCols):
self.setProjectChanged(True)
return
def setProjectChanged(self, bValue):
self.projChanged = bValue
self.theParent.setProjectStatus(self.projChanged)