Skip to content

Commit

Permalink
Merge pull request #286 from vkbo/fixes
Browse files Browse the repository at this point in the history
Fixes for Dev Branch
  • Loading branch information
vkbo committed Jun 5, 2020
2 parents a051e77 + 213889e commit 4987413
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 10 deletions.
64 changes: 57 additions & 7 deletions nw/core/project.py
Expand Up @@ -2015,10 +2015,43 @@ def __init__(self, theProject):

self.mainConf = nw.CONFIG
self.theProject = theProject
self.theState = {}
self.stringOpt = ()
self.boolOpt = ()
self.intOpt = ()

self.theState = {}
self.validMap = {
"GuiSession": set([
"widthCol0",
"widthCol1",
"widthCol2",
"sortCol",
"sortOrder",
"hideZeros",
"hideNegative",
]),
"GuiDocSplit": set([
"spLevel",
]),
"GuiBuildNovel": set([
"winWidth",
"winHeight",
"addNovel",
"addNotes",
"ignoreFlag",
"justifyText",
"excludeBody",
"textFont",
"textSize",
"noStyling",
"incSynopsis",
"incComments",
"incKeywords",
"incBodyText",
]),
"GuiOutline": set([
"headerOrder",
"columnWidth",
"columnHidden",
])
}

return

Expand All @@ -2045,8 +2078,14 @@ def loadSettings(self):
logger.error("Failed to load GUI options file")
logger.error(str(e))
return False
for anOpt in theState:
self.theState[anOpt] = theState[anOpt]

# Filter out unused variables
for aGroup in theState:
if aGroup in self.validMap:
self.theState[aGroup] = {}
for anOpt in theState[aGroup]:
if anOpt in self.validMap[aGroup]:
self.theState[aGroup][anOpt] = theState[aGroup][anOpt]

return True

Expand Down Expand Up @@ -2076,9 +2115,19 @@ def saveSettings(self):
def setValue(self, setGroup, setName, setValue):
"""Saves a value, with a given group and name.
"""
if not setGroup in self.validMap:
logger.error("Unknown option group '%s'" % setGroup)
return False

if not setName in self.validMap[setGroup]:
logger.error("Unknown option name '%s'" % setName)
return False

if not setGroup in self.theState:
self.theState[setGroup] = {}

self.theState[setGroup][setName] = setValue

return True

##
Expand Down Expand Up @@ -2106,7 +2155,8 @@ def getString(self, getGroup, getName, defaultValue):
if getName in self.theState[getGroup]:
try:
return str(self.theState[getGroup][getName])
except:
except Exception as e:
logger.warning(str(e))
return defaultValue
return defaultValue

Expand Down
4 changes: 2 additions & 2 deletions nw/gui/mainmenu.py
Expand Up @@ -233,14 +233,14 @@ def _buildProjectMenu(self):
self.projMenu.addSeparator()

# Project > Edit
self.aEditItem = QAction("&Edit Item", self)
self.aEditItem = QAction("&Edit Project Item", self)
self.aEditItem.setStatusTip("Change item settings")
self.aEditItem.setShortcuts(["Ctrl+E", "F2"])
self.aEditItem.triggered.connect(self.theParent.editItem)
self.projMenu.addAction(self.aEditItem)

# Project > Delete
self.aDeleteItem = QAction("&Delete Item", self)
self.aDeleteItem = QAction("&Delete Project Item", self)
self.aDeleteItem.setStatusTip("Delete selected item")
self.aDeleteItem.setShortcut("Ctrl+Del")
self.aDeleteItem.triggered.connect(lambda : self.theParent.treeView.deleteItem(None))
Expand Down
28 changes: 27 additions & 1 deletion nw/gui/projtree.py
Expand Up @@ -836,7 +836,15 @@ def __init__(self, theTree):
self.theTree = theTree
self.theItem = None

self.editItem = QAction("Edit Item", self)
self.openItem = QAction("Open Document", self)
self.openItem.triggered.connect(self._doOpenItem)
self.addAction(self.openItem)

self.viewItem = QAction("View Document", self)
self.viewItem.triggered.connect(self._doViewItem)
self.addAction(self.viewItem)

self.editItem = QAction("Edit Project Item", self)
self.editItem.triggered.connect(self._doEditItem)
self.addAction(self.editItem)

Expand Down Expand Up @@ -876,13 +884,17 @@ def filterActions(self, theItem):
isFile = theItem.itemType == nwItemType.FILE
isOrph = isFile and theItem.parHandle is None

showOpen = isFile
showView = isFile
showEdit = not isTrash and not isOrph
showExport = isFile and not inTrash and not isOrph
showNewFile = not isTrash and not inTrash and not isOrph
showNewFolder = not isTrash and not inTrash and not isOrph
showDelete = not isTrash
showEmpty = isTrash

self.openItem.setVisible(showOpen)
self.viewItem.setVisible(showView)
self.editItem.setVisible(showEdit)
self.toggleExp.setVisible(showExport)
self.newFile.setVisible(showNewFile)
Expand All @@ -896,6 +908,20 @@ def filterActions(self, theItem):
# Slots
##

def _doOpenItem(self):
"""Forward the open document call to the main GUI window.
"""
if self.theItem is not None:
self.theTree.theParent.openDocument(self.theItem.itemHandle)
return

def _doViewItem(self):
"""Forward the view document call to the main GUI window.
"""
if self.theItem is not None:
self.theTree.theParent.viewDocument(self.theItem.itemHandle)
return

def _doEditItem(self):
"""Forward the edit item call to the main GUI window.
"""
Expand Down

0 comments on commit 4987413

Please sign in to comment.