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 ...")
self.mainConf = nw.CONFIG
self.debugGUI = self.mainConf.debugGUI
self.theParent = theParent
self.theProject = theProject
self.mainBox = QGridLayout(self)
@@ -70,11 +71,11 @@ class GuiDocDetails(QFrame):
colTwo = [""]*4
else:
itemStatus = nwItem.itemStatus
if itemStatus < 0 or itemStatus >= len(self.theProject.statusLabels):
if itemStatus < 0 or itemStatus >= len(self.theParent.statusLabels):
itemStatus = 0
colTwo = [
nwItem.itemName,
self.theProject.statusLabels[itemStatus],
self.theParent.statusLabels[itemStatus],
nwLabels.CLASS_NAME[nwItem.itemClass],
nwLabels.LAYOUT_NAME[nwItem.itemLayout],
]
+2 -2
View File
@@ -252,12 +252,12 @@ class GuiDocTree(QTreeWidget):
if nwItem.itemType == nwItemType.FILE:
tStatus += "."+nwLabels.LAYOUT_FLAG[nwItem.itemLayout]
nStatus = nwItem.itemStatus
if nStatus < 0 or nStatus >= len(self.theProject.statusIcons):
if nStatus < 0 or nStatus >= len(self.theParent.statusIcons):
nStatus = 0
trItem.setText(self.C_NAME,tName)
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
+24 -2
View File
@@ -15,7 +15,7 @@ import nw
from os import path
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 nw.gui.doctree import GuiDocTree
@@ -57,6 +57,10 @@ class GuiMain(QMainWindow):
self.mainMenu = GuiMainMenu(self, self.theProject)
self.statusBar = GuiMainStatus(self)
# Minor Gui Elements
self.statusIcons = []
self.statusLabels = []
# Assemble Main Window
self.stackPane = QStackedWidget()
self.stackNone = self.stackPane.addWidget(QWidget())
@@ -82,7 +86,7 @@ class GuiMain(QMainWindow):
self.treeView.itemSelectionChanged.connect(self._treeSingleClick)
self.treeView.itemDoubleClicked.connect(self._treeDoubleClick)
self.treeView.buildTree()
QShortcut(Qt.Key_Return, self.treeView, context=Qt.WidgetShortcut, activated=self._treeKeyPressReturn)
self._makeStatusIcons()
# Set Main Window Elements
self.setMenuBar(self.mainMenu)
@@ -106,6 +110,13 @@ class GuiMain(QMainWindow):
self.asDocTimer.timeout.connect(self._autoSaveDocument)
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:
self.show()
@@ -162,6 +173,7 @@ class GuiMain(QMainWindow):
self.treeView.buildTree()
self.mainMenu.updateRecentProjects()
self._setWindowTitle(self.theProject.projName)
self._makeStatusIcons()
return True
def saveProject(self):
@@ -340,6 +352,16 @@ class GuiMain(QMainWindow):
return False
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
##
+5 -24
View File
@@ -19,8 +19,6 @@ from hashlib import sha256
from datetime import datetime
from time import time
from PyQt5.QtGui import QIcon, QPixmap, QColor
from nw.enum import nwItemType, nwItemClass, nwItemLayout
from nw.project.item import NWItem
@@ -31,8 +29,8 @@ class NWProject():
def __init__(self, theParent):
# Internal
self.mainConf = nw.CONFIG
self.theParent = theParent
self.mainConf = self.theParent.mainConf
self.projChanged = None
# Project Settings
@@ -46,8 +44,6 @@ class NWProject():
self.bookTitle = None
self.bookAuthors = None
self.statusCols = None
self.statusIcons = None
self.statusLabels = None
self.clearProject()
@@ -108,7 +104,7 @@ class NWProject():
hChapt = self.newFolder("New Chapter", nwItemClass.NOVEL, hNovel)
hScene = self.newFile("New Scene", nwItemClass.NOVEL, hChapt)
return
return True
def clearProject(self):
@@ -124,16 +120,12 @@ class NWProject():
self.projName = ""
self.bookTitle = ""
self.bookAuthors = []
self.statusCols = [
("New", 100,100,100),
("Note", 200, 50, 0),
("Draft", 200,150, 0),
("Finished", 50,200, 0),
]
self.statusIcons = []
self.statusLabels = []
self._makeStatusIcons()
return
@@ -195,9 +187,8 @@ class NWProject():
nwItem.setFromTag(xValue.tag,xValue.text)
self._appendItem(tHandle,pHandle,nwItem)
self._makeStatusIcons()
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.setProjectChanged(False)
@@ -258,7 +249,7 @@ class NWProject():
return False
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)
return True
@@ -301,7 +292,7 @@ class NWProject():
def setProjectChanged(self, bValue):
self.projChanged = bValue
self.theParent.statusBar.setProjectStatus(self.projChanged)
self.theParent.setProjectStatus(self.projChanged)
return
##
@@ -411,16 +402,6 @@ class NWProject():
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=""):
newSeed = str(time()) + addSeed
logger.verbose("Generating handle with seed '%s'" % newSeed)