Esempio n. 1
0
 def loadContent(self):
     
     logger.debug("GUI: Loading character tree content")
     
     # Store currently selected item
     selHandle = None
     listModel, pathList = self.treeSelect.get_selected_rows()
     for pathItem in pathList:
         listIter  = listModel.get_iter(pathItem)
         selHandle = listModel.get_value(listIter,self.COL_HANDLE)
     
     # Make unselectable and clear
     self.treeSelect.set_mode(Gtk.SelectionMode.NONE)
     self.listStore.clear()
     
     for treeHandle in self.theBook.theTree.treeOrder:
         
         treeItem   = self.theBook.getItem(treeHandle)
         
         itemHandle = treeItem["handle"]
         itemParent = treeItem["parent"]
         
         itemName   = treeItem["entry"].itemName
         itemClass  = treeItem["entry"].itemClass
         itemLevel  = treeItem["entry"].itemLevel
         itemType   = treeItem["entry"].itemType
         
         if not itemClass == "CONTAINER": continue
         if not itemLevel == "ITEM":      continue
         if not itemType  == "CHAR":      continue
         
         logger.vverbose("GUI: Adding %s '%s'" % (itemLevel,itemName))
         
         itemImportance = treeItem["entry"].itemImportance
         itemRole       = treeItem["entry"].itemRole
         itemComment    = treeItem["entry"].itemComment
         
         tmpIter = self.listStore.append([
             encodeString(itemName),
             itemImportance,
             encodeString(itemRole),
             encodeString(itemComment),
             itemHandle
         ])
         self.iterMap[itemHandle] = tmpIter
     
     self.treeSelect.set_mode(Gtk.SelectionMode.SINGLE)
     
     # Restore selected item state
     if selHandle is not None:
         newIter = self.getIter(selHandle)
         self.treeSelect.select_iter(newIter)
     
     return
Esempio n. 2
0
    def openBook(self, bookPath, openRecent=False):

        if openRecent:
            bookPath = self.mainConf.getLastBook()
            logger.info("BookOpen: Opening last book project from %s" %
                        bookPath)
            if path.isfile(bookPath):
                self.theBook.openBook(bookPath)
            else:
                logger.info("BookOpen: Project file not found")
                self.theBook.createBook()
        else:
            if path.isfile(bookPath):
                logger.info("BookOpen: Opening book project from %s" %
                            bookPath)
                self.theBook.openBook(bookPath)
            else:
                logger.info("BookOpen: Project file not found")

        self.winMain.treeLeft.loadContent()
        self.bookPage.treeChapters.loadContent()
        self.charPage.treeChars.loadContent()
        self.plotPage.treePlots.loadContent()
        self.timeLine.loadContent()

        bookTitle = self.theBook.bookTitle
        bookAuthors = ", ".join(self.theBook.bookAuthors)
        winTitle = "%s – novelWriter v%s" % (bookTitle, nw.__version__)

        self.winMain.set_title(winTitle)
        self.bookPage.entryBookTitle.set_text(encodeString(bookTitle))
        self.bookPage.entryBookAuthor.set_text(encodeString(bookAuthors))

        self.mainConf.setLastBook(bookPath)

        return
Esempio n. 3
0
    def onChapterToggle(self, guiObject, itemPath, itemTag):

        srcTree = self.bookPage.treeChapters
        handleCol = srcTree.COL_HANDLE

        if itemTag == "compile": srcColumn = srcTree.COL_COMPILE

        itemHandle = srcTree.listStore[itemPath][handleCol]
        currState = srcTree.listStore[itemPath][srcColumn]
        self.theBook.updateItem(itemHandle, itemTag, not currState)
        parsedValue = self.theBook.getItem(itemHandle)["entry"].getFromTag(
            itemTag)
        srcTree.listStore[itemPath][srcColumn] = encodeString(parsedValue)
        self.winMain.treeLeft.loadContent()

        return
Esempio n. 4
0
    def onPlotEdit(self, guiObject, itemPath, editText, itemTag):

        srcTree = self.plotPage.treePlots
        handleCol = srcTree.COL_HANDLE

        if itemTag == "name": srcColumn = srcTree.COL_TITLE
        if itemTag == "importance": srcColumn = srcTree.COL_IMPORTANCE
        if itemTag == "comment": srcColumn = srcTree.COL_COMMENT

        itemHandle = srcTree.listStore[itemPath][handleCol]
        self.theBook.updateItem(itemHandle, itemTag, editText)
        parsedValue = self.theBook.getItem(itemHandle)["entry"].getFromTag(
            itemTag)
        srcTree.listStore[itemPath][srcColumn] = encodeString(parsedValue)
        self.winMain.treeLeft.loadContent()

        return
Esempio n. 5
0
    def onChapterEdit(self, guiObject, itemPath, editText, itemTag):

        srcTree = self.bookPage.treeChapters
        handleCol = srcTree.COL_HANDLE

        if itemTag == "subtype": srcColumn = srcTree.COL_TYPE
        if itemTag == "number": srcColumn = srcTree.COL_NUMBER
        if itemTag == "name": srcColumn = srcTree.COL_TITLE
        if itemTag == "comment": srcColumn = srcTree.COL_COMMENT

        itemHandle = srcTree.listStore[itemPath][handleCol]
        self.theBook.updateItem(itemHandle, itemTag, editText)
        parsedValue = self.theBook.getItem(itemHandle)["entry"].getFromTag(
            itemTag)
        srcTree.listStore[itemPath][srcColumn] = encodeString(parsedValue)
        self.winMain.treeLeft.loadContent()

        return
Esempio n. 6
0
    def loadContent(self):

        logger.debug("GUI: Loading main tree content")

        # Store currently selected item
        selHandle = None
        listModel, pathList = self.treeSelect.get_selected_rows()
        for pathItem in pathList:
            listIter = listModel.get_iter(pathItem)
            selHandle = listModel.get_value(listIter, self.COL_HANDLE)

        # Make unselectable and clear
        self.treeSelect.set_mode(Gtk.SelectionMode.NONE)
        self.treeStore.clear()

        for treeHandle in self.theBook.theTree.treeOrder:

            treeItem = self.theBook.getItem(treeHandle)

            itemHandle = treeItem["handle"]
            itemParent = treeItem["parent"]

            itemName = treeItem["entry"].itemName
            itemLevel = treeItem["entry"].itemLevel
            itemClass = treeItem["entry"].itemClass

            logger.vverbose("GUI: Adding %s '%s'" % (itemLevel, itemName))

            wordCount = treeItem["entry"].metaWordCount

            if itemParent is None:
                parIter = None
            else:
                if itemParent in self.iterMap:
                    parIter = self.iterMap[itemParent]
                else:
                    logger.error("Item encountered before its parent")
                    parIter = None

            if itemClass == BookItem.CLS_CONT:
                itemTitle = "<b>%s</b>" % itemName
            else:
                itemTitle = itemName

            if itemLevel == BookItem.LEV_FILE:
                if wordCount is None:
                    wordCount = "<i>0</i>"
                else:
                    wordCount = "<i>%s</i>" % str(wordCount)
            else:
                wordCount = None

            tmpIter = self.treeStore.append(parIter, [
                encodeString(itemTitle), "0", wordCount,
                encodeString(itemName), itemHandle
            ])
            self.iterMap[itemHandle] = tmpIter

        # Expand all nodes, and reactivate
        # TODO: Should restore previous expanded state, or update tree rater than repopulate
        self.expand_all()
        self.treeSelect.set_mode(Gtk.SelectionMode.SINGLE)

        # Restore selected item state
        if selHandle is not None:
            newIter = self.getIter(selHandle)
            self.treeSelect.select_iter(newIter)

        return