Skip to content

Commit

Permalink
Merge pull request #561 from vkbo/issue560_window_title
Browse files Browse the repository at this point in the history
Issue #560: Window Title
  • Loading branch information
vkbo committed Jan 15, 2021
2 parents d63da05 + ecb9e92 commit e7e2176
Show file tree
Hide file tree
Showing 6 changed files with 90 additions and 58 deletions.
1 change: 0 additions & 1 deletion nw/assets/themes/gui/default_dark/theme.conf
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ link = 44, 152, 247
linkvisited = 44, 152, 247

[GUI]
treewordcount = 197, 200, 198
statusnone = 150, 152, 150
statussaved = 39, 135, 78
statusunsaved = 138, 32, 32
8 changes: 3 additions & 5 deletions nw/gui/theme.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,11 +76,10 @@ def __init__(self, theParent):
self.themeLicenseUrl = ""

## GUI
self.treeWCount = [0, 0, 0]
self.statNone = [120, 120, 120]
self.statUnsaved = [120, 120, 40]
self.statSaved = [40, 120, 0]
self.helpText = [0, 0, 0]
self.statUnsaved = [200, 15, 39]
self.statSaved = [2, 133, 37]
self.helpText = [0, 0, 0]

# Loaded Syntax Settings

Expand Down Expand Up @@ -309,7 +308,6 @@ def loadTheme(self):
## GUI
cnfSec = "GUI"
if confParser.has_section(cnfSec):
self.treeWCount = self._loadColour(confParser, cnfSec, "treewordcount")
self.statNone = self._loadColour(confParser, cnfSec, "statusnone")
self.statUnsaved = self._loadColour(confParser, cnfSec, "statusunsaved")
self.statSaved = self._loadColour(confParser, cnfSec, "statussaved")
Expand Down
30 changes: 19 additions & 11 deletions nw/guimain.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ def __init__(self):

# Prepare Main Window
self.resize(*self.mainConf.getWinSize())
self._setWindowTitle()
self._updateWindowTitle()
self.setWindowIcon(QIcon(self.mainConf.appIcon))

# Build the GUI
Expand Down Expand Up @@ -258,10 +258,13 @@ def clearGUI(self):

# Work Area
self.docEditor.clearEditor()
self.docEditor.setDictionaries()
self.closeDocViewer()
self.projMeta.clearDetails()

# General
self.statusBar.clearStatus()
self._updateWindowTitle()

return True

Expand All @@ -280,11 +283,12 @@ def newProject(self, projData=None):
"""Create new project via the new project wizard.
"""
if self.hasProject:
self.makeAlert(
"Please close the current project before making a new one.",
nwAlert.ERROR
)
return False
if not self.closeProject():
self.makeAlert(
"Cannot create new project when another project is open.",
nwAlert.ERROR
)
return False

if projData is None:
projData = self.showNewProjectDialog()
Expand All @@ -309,8 +313,13 @@ def newProject(self, projData=None):
self.rebuildTree()
self.saveProject()
self.hasProject = True
self.statusBar.setRefTime(self.theProject.projOpened)
self.docEditor.setDictionaries()
self.rebuildIndex(beQuiet=True)
self.statusBar.setRefTime(self.theProject.projOpened)
self.statusBar.setProjectStatus(True)
self.statusBar.setDocumentStatus(None)
self.statusBar.setStatus("New project created ...")
self._updateWindowTitle(self.theProject.projName)
else:
self.theProject.clearProject()
return False
Expand Down Expand Up @@ -357,7 +366,6 @@ def closeProject(self, isYes=False):
self.closeDocument()
self.docViewer.clearNavHistory()
self.projView.closeOutline()
self.projMeta.clearDetails()
self.theProject.closeProject()
self.theIndex.clearIndex()
self.clearGUI()
Expand Down Expand Up @@ -429,7 +437,7 @@ def openProject(self, projFile):
self.theIndex.loadIndex()

# Update GUI
self._setWindowTitle(self.theProject.projName)
self._updateWindowTitle(self.theProject.projName)
self.rebuildTree()
self.docEditor.setDictionaries()
self.docEditor.setSpellCheck(self.theProject.spellCheck)
Expand Down Expand Up @@ -899,7 +907,7 @@ def showProjectSettingsDialog(self):
if dlgProj.result() == QDialog.Accepted:
logger.debug("Applying new project settings")
self.docEditor.setDictionaries()
self._setWindowTitle(self.theProject.projName)
self._updateWindowTitle(self.theProject.projName)

return

Expand Down Expand Up @@ -1208,7 +1216,7 @@ def _connectMenuActions(self):

return True

def _setWindowTitle(self, projName=None):
def _updateWindowTitle(self, projName=None):
"""Set the window title and add the project's working title.
"""
winTitle = self.mainConf.appName
Expand Down
84 changes: 44 additions & 40 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import os

from dummy import DummyMain
from tools import cleanProject

sys.path.insert(1, os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir)))

Expand Down Expand Up @@ -129,56 +130,59 @@ def nwGUI(qtbot, fncDir):
def nwMinimal(tmpDir):
"""A minimal novelWriter example project.
"""
testDir = os.path.dirname(__file__)
minimalStore = os.path.join(testDir, "minimal")
minimalDir = os.path.join(tmpDir, "minimal")
if os.path.isdir(minimalDir):
shutil.rmtree(minimalDir)
shutil.copytree(minimalStore, minimalDir)
cacheDir = os.path.join(minimalDir, "cache")
if os.path.isdir(cacheDir):
shutil.rmtree(cacheDir)
metaDir = os.path.join(minimalDir, "meta")
if os.path.isdir(metaDir):
shutil.rmtree(metaDir)
yield minimalDir
if os.path.isdir(minimalDir):
shutil.rmtree(minimalDir)
tstDir = os.path.dirname(__file__)
srcDir = os.path.join(tstDir, "minimal")
dstDir = os.path.join(tmpDir, "minimal")
if os.path.isdir(dstDir):
shutil.rmtree(dstDir)

shutil.copytree(srcDir, dstDir)
cleanProject(dstDir)

yield dstDir

if os.path.isdir(dstDir):
shutil.rmtree(dstDir)

return

@pytest.fixture(scope="function")
def nwLipsum(tmpDir):
"""A medium sized novelWriter example project with a lot of Lorem
Ipsum dummy text.
"""
testDir = os.path.dirname(__file__)
lipsumStore = os.path.join(testDir, "lipsum")
lipsumDir = os.path.join(tmpDir, "lipsum")
if os.path.isdir(lipsumDir):
shutil.rmtree(lipsumDir)
shutil.copytree(lipsumStore, lipsumDir)
cacheDir = os.path.join(lipsumDir, "cache")
if os.path.isdir(cacheDir):
shutil.rmtree(cacheDir)
metaDir = os.path.join(lipsumDir, "meta")
if os.path.isdir(metaDir):
shutil.rmtree(metaDir)
yield lipsumDir
if os.path.isdir(lipsumDir):
shutil.rmtree(lipsumDir)
tstDir = os.path.dirname(__file__)
srcDir = os.path.join(tstDir, "lipsum")
dstDir = os.path.join(tmpDir, "lipsum")
if os.path.isdir(dstDir):
shutil.rmtree(dstDir)

shutil.copytree(srcDir, dstDir)
cleanProject(dstDir)

yield dstDir

if os.path.isdir(dstDir):
shutil.rmtree(dstDir)

return

@pytest.fixture(scope="function")
def nwOldProj(tmpDir):
"""A minimal movelWriter project using the old folder structure.
"""A minimal movelWriter project using the old folder structure used
for storage versions < 1.2.
"""
testDir = os.path.dirname(__file__)
oldProjStore = os.path.join(testDir, "oldproj")
oldProjDir = os.path.join(tmpDir, "oldproj")
if os.path.isdir(oldProjDir):
shutil.rmtree(oldProjDir)
shutil.copytree(oldProjStore, oldProjDir)
yield oldProjDir
if os.path.isdir(oldProjDir):
shutil.rmtree(oldProjDir)
tstDir = os.path.dirname(__file__)
srcDir = os.path.join(tstDir, "oldproj")
dstDir = os.path.join(tmpDir, "oldproj")
if os.path.isdir(dstDir):
shutil.rmtree(dstDir)

shutil.copytree(srcDir, dstDir)

yield dstDir

if os.path.isdir(dstDir):
shutil.rmtree(dstDir)

return
1 change: 0 additions & 1 deletion tests/test_gui_theme.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@ def testGuiTheme_Main(qtbot, monkeypatch, nwMinimal, tmpDir):
assert thePalette.link().color() == QColor(44, 152, 247)
assert thePalette.linkVisited().color() == QColor(44, 152, 247)

assert nwGUI.theTheme.treeWCount == [197, 200, 198]
assert nwGUI.theTheme.statNone == [150, 152, 150]
assert nwGUI.theTheme.statSaved == [39, 135, 78]
assert nwGUI.theTheme.statUnsaved == [138, 32, 32]
Expand Down
24 changes: 24 additions & 0 deletions tests/tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
"""novelWriter Test Tools
"""

import os
import shutil

from itertools import chain

from PyQt5.QtWidgets import qApp
Expand Down Expand Up @@ -82,3 +85,24 @@ def writeFile(fileName, fileData):
"""
with open(fileName, mode="w", encoding="utf8") as outFile:
outFile.write(fileData)

def cleanProject(projPath):
"""Delete all generated files in a project.
"""
cacheDir = os.path.join(projPath, "cache")
if os.path.isdir(cacheDir):
shutil.rmtree(cacheDir)

metaDir = os.path.join(projPath, "meta")
if os.path.isdir(metaDir):
shutil.rmtree(metaDir)

bakFile = os.path.join(projPath, "nwProject.bak")
if os.path.isfile(bakFile):
os.unlink(bakFile)

tocFile = os.path.join(projPath, "ToC.txt")
if os.path.isfile(tocFile):
os.unlink(tocFile)

return

0 comments on commit e7e2176

Please sign in to comment.