Project class should not contain any GUI elements. Status icons moved to main GUI class.

This commit is contained in:
Veronica K. B. Olsen
2019-05-12 14:08:52 +02:00
parent edab608c3b
commit f1d30ae253
4 changed files with 34 additions and 30 deletions
+3 -2
View File
@@ -35,6 +35,7 @@ class GuiDocDetails(QFrame):
logger.debug("Initialising DocDetails ...") logger.debug("Initialising DocDetails ...")
self.mainConf = nw.CONFIG self.mainConf = nw.CONFIG
self.debugGUI = self.mainConf.debugGUI self.debugGUI = self.mainConf.debugGUI
self.theParent = theParent
self.theProject = theProject self.theProject = theProject
self.mainBox = QGridLayout(self) self.mainBox = QGridLayout(self)
@@ -70,11 +71,11 @@ class GuiDocDetails(QFrame):
colTwo = [""]*4 colTwo = [""]*4
else: else:
itemStatus = nwItem.itemStatus itemStatus = nwItem.itemStatus
if itemStatus < 0 or itemStatus >= len(self.theProject.statusLabels): if itemStatus < 0 or itemStatus >= len(self.theParent.statusLabels):
itemStatus = 0 itemStatus = 0
colTwo = [ colTwo = [
nwItem.itemName, nwItem.itemName,
self.theProject.statusLabels[itemStatus], self.theParent.statusLabels[itemStatus],
nwLabels.CLASS_NAME[nwItem.itemClass], nwLabels.CLASS_NAME[nwItem.itemClass],
nwLabels.LAYOUT_NAME[nwItem.itemLayout], nwLabels.LAYOUT_NAME[nwItem.itemLayout],
] ]
+2 -2
View File
@@ -252,12 +252,12 @@ class GuiDocTree(QTreeWidget):
if nwItem.itemType == nwItemType.FILE: if nwItem.itemType == nwItemType.FILE:
tStatus += "."+nwLabels.LAYOUT_FLAG[nwItem.itemLayout] tStatus += "."+nwLabels.LAYOUT_FLAG[nwItem.itemLayout]
nStatus = nwItem.itemStatus nStatus = nwItem.itemStatus
if nStatus < 0 or nStatus >= len(self.theProject.statusIcons): if nStatus < 0 or nStatus >= len(self.theParent.statusIcons):
nStatus = 0 nStatus = 0
trItem.setText(self.C_NAME,tName) trItem.setText(self.C_NAME,tName)
trItem.setText(self.C_FLAGS,tStatus) trItem.setText(self.C_FLAGS,tStatus)
trItem.setIcon(self.C_FLAGS,self.theProject.statusIcons[nStatus]) trItem.setIcon(self.C_FLAGS,self.theParent.statusIcons[nStatus])
return return
+24 -2
View File
@@ -15,7 +15,7 @@ import nw
from os import path from os import path
from PyQt5.QtWidgets import QWidget, QMainWindow, QVBoxLayout, QFrame, QSplitter, QFileDialog, QStackedWidget, QShortcut, QMessageBox from PyQt5.QtWidgets import QWidget, QMainWindow, QVBoxLayout, QFrame, QSplitter, QFileDialog, QStackedWidget, QShortcut, QMessageBox
from PyQt5.QtGui import QIcon from PyQt5.QtGui import QIcon, QPixmap, QColor
from PyQt5.QtCore import Qt, QTimer from PyQt5.QtCore import Qt, QTimer
from nw.gui.doctree import GuiDocTree from nw.gui.doctree import GuiDocTree
@@ -57,6 +57,10 @@ class GuiMain(QMainWindow):
self.mainMenu = GuiMainMenu(self, self.theProject) self.mainMenu = GuiMainMenu(self, self.theProject)
self.statusBar = GuiMainStatus(self) self.statusBar = GuiMainStatus(self)
# Minor Gui Elements
self.statusIcons = []
self.statusLabels = []
# Assemble Main Window # Assemble Main Window
self.stackPane = QStackedWidget() self.stackPane = QStackedWidget()
self.stackNone = self.stackPane.addWidget(QWidget()) self.stackNone = self.stackPane.addWidget(QWidget())
@@ -82,7 +86,7 @@ class GuiMain(QMainWindow):
self.treeView.itemSelectionChanged.connect(self._treeSingleClick) self.treeView.itemSelectionChanged.connect(self._treeSingleClick)
self.treeView.itemDoubleClicked.connect(self._treeDoubleClick) self.treeView.itemDoubleClicked.connect(self._treeDoubleClick)
self.treeView.buildTree() self.treeView.buildTree()
QShortcut(Qt.Key_Return, self.treeView, context=Qt.WidgetShortcut, activated=self._treeKeyPressReturn) self._makeStatusIcons()
# Set Main Window Elements # Set Main Window Elements
self.setMenuBar(self.mainMenu) self.setMenuBar(self.mainMenu)
@@ -106,6 +110,13 @@ class GuiMain(QMainWindow):
self.asDocTimer.timeout.connect(self._autoSaveDocument) self.asDocTimer.timeout.connect(self._autoSaveDocument)
self.asDocTimer.start() self.asDocTimer.start()
# Keyboard Shortcuts
QShortcut(Qt.Key_Return, self.treeView, context=Qt.WidgetShortcut, activated=self._treeKeyPressReturn)
# Forward Functions
self.setStatus = self.statusBar.setStatus
self.setProjectStatus = self.statusBar.setProjectStatus
if self.mainConf.showGUI: if self.mainConf.showGUI:
self.show() self.show()
@@ -162,6 +173,7 @@ class GuiMain(QMainWindow):
self.treeView.buildTree() self.treeView.buildTree()
self.mainMenu.updateRecentProjects() self.mainMenu.updateRecentProjects()
self._setWindowTitle(self.theProject.projName) self._setWindowTitle(self.theProject.projName)
self._makeStatusIcons()
return True return True
def saveProject(self): def saveProject(self):
@@ -340,6 +352,16 @@ class GuiMain(QMainWindow):
return False return False
return True return True
def _makeStatusIcons(self):
self.statusIcons = []
self.statusLabels = []
for sLabel, sR, sG, sB in self.theProject.statusCols:
theIcon = QPixmap(32,32)
theIcon.fill(QColor(sR,sG,sB))
self.statusIcons.append(QIcon(theIcon))
self.statusLabels.append(sLabel)
return
## ##
# Events # Events
## ##
+5 -24
View File
@@ -19,8 +19,6 @@ from hashlib import sha256
from datetime import datetime from datetime import datetime
from time import time from time import time
from PyQt5.QtGui import QIcon, QPixmap, QColor
from nw.enum import nwItemType, nwItemClass, nwItemLayout from nw.enum import nwItemType, nwItemClass, nwItemLayout
from nw.project.item import NWItem from nw.project.item import NWItem
@@ -31,8 +29,8 @@ class NWProject():
def __init__(self, theParent): def __init__(self, theParent):
# Internal # Internal
self.mainConf = nw.CONFIG
self.theParent = theParent self.theParent = theParent
self.mainConf = self.theParent.mainConf
self.projChanged = None self.projChanged = None
# Project Settings # Project Settings
@@ -46,8 +44,6 @@ class NWProject():
self.bookTitle = None self.bookTitle = None
self.bookAuthors = None self.bookAuthors = None
self.statusCols = None self.statusCols = None
self.statusIcons = None
self.statusLabels = None
self.clearProject() self.clearProject()
@@ -108,7 +104,7 @@ class NWProject():
hChapt = self.newFolder("New Chapter", nwItemClass.NOVEL, hNovel) hChapt = self.newFolder("New Chapter", nwItemClass.NOVEL, hNovel)
hScene = self.newFile("New Scene", nwItemClass.NOVEL, hChapt) hScene = self.newFile("New Scene", nwItemClass.NOVEL, hChapt)
return return True
def clearProject(self): def clearProject(self):
@@ -124,16 +120,12 @@ class NWProject():
self.projName = "" self.projName = ""
self.bookTitle = "" self.bookTitle = ""
self.bookAuthors = [] self.bookAuthors = []
self.statusCols = [ self.statusCols = [
("New", 100,100,100), ("New", 100,100,100),
("Note", 200, 50, 0), ("Note", 200, 50, 0),
("Draft", 200,150, 0), ("Draft", 200,150, 0),
("Finished", 50,200, 0), ("Finished", 50,200, 0),
] ]
self.statusIcons = []
self.statusLabels = []
self._makeStatusIcons()
return return
@@ -195,9 +187,8 @@ class NWProject():
nwItem.setFromTag(xValue.tag,xValue.text) nwItem.setFromTag(xValue.tag,xValue.text)
self._appendItem(tHandle,pHandle,nwItem) self._appendItem(tHandle,pHandle,nwItem)
self._makeStatusIcons()
self.mainConf.setRecent(self.projPath) self.mainConf.setRecent(self.projPath)
self.theParent.statusBar.setStatus("Opened Project: %s" % self.projName) self.theParent.setStatus("Opened Project: %s" % self.projName)
self._scanProjectFolder() self._scanProjectFolder()
self.setProjectChanged(False) self.setProjectChanged(False)
@@ -258,7 +249,7 @@ class NWProject():
return False return False
self.mainConf.setRecent(self.projPath) self.mainConf.setRecent(self.projPath)
self.theParent.statusBar.setStatus("Saved Project: %s" % self.projName) self.theParent.setStatus("Saved Project: %s" % self.projName)
self.setProjectChanged(False) self.setProjectChanged(False)
return True return True
@@ -301,7 +292,7 @@ class NWProject():
def setProjectChanged(self, bValue): def setProjectChanged(self, bValue):
self.projChanged = bValue self.projChanged = bValue
self.theParent.statusBar.setProjectStatus(self.projChanged) self.theParent.setProjectStatus(self.projChanged)
return return
## ##
@@ -411,16 +402,6 @@ class NWProject():
return return
def _makeStatusIcons(self):
self.statusIcons = []
self.statusLabels = []
for sLabel, sR, sG, sB in self.statusCols:
theIcon = QPixmap(32,32)
theIcon.fill(QColor(sR,sG,sB))
self.statusIcons.append(QIcon(theIcon))
self.statusLabels.append(sLabel)
return
def _makeHandle(self, addSeed=""): def _makeHandle(self, addSeed=""):
newSeed = str(time()) + addSeed newSeed = str(time()) + addSeed
logger.verbose("Generating handle with seed '%s'" % newSeed) logger.verbose("Generating handle with seed '%s'" % newSeed)