diff --git a/manuskript/functions.py b/manuskript/functions.py
index fa8cffd8..948d9fc3 100644
--- a/manuskript/functions.py
+++ b/manuskript/functions.py
@@ -4,7 +4,7 @@
import os
from random import *
-from PyQt5.QtCore import Qt, QRect, QStandardPaths, QObject
+from PyQt5.QtCore import Qt, QRect, QStandardPaths, QObject, QRegExp
# Used to detect multiple connections
from PyQt5.QtGui import QBrush, QIcon, QPainter
@@ -18,27 +18,32 @@ from manuskript.enums import Outline
AUC = Qt.AutoConnection | Qt.UniqueConnection
MW = None
+
def wordCount(text):
return len(text.strip().replace(" ", "\n").split("\n")) if text else 0
+
def toInt(text):
if text:
return int(text)
else:
return 0
-
+
+
def toFloat(text):
if text:
return float(text)
else:
return 0.
-
+
+
def toString(text):
if text in [None, "None"]:
return ""
else:
return str(text)
-
+
+
def drawProgress(painter, rect, progress, radius=0):
painter.setPen(Qt.NoPen)
painter.setBrush(QColor("#dddddd"))
@@ -49,7 +54,8 @@ def drawProgress(painter, rect, progress, radius=0):
r2 = QRect(rect)
r2.setWidth(r2.width() * min(progress, 1))
painter.drawRoundedRect(r2, radius, radius)
-
+
+
def colorFromProgress(progress):
progress = toFloat(progress)
c1 = QColor(Qt.red)
@@ -65,7 +71,8 @@ def colorFromProgress(progress):
return c4
else:
return c3
-
+
+
def mainWindow():
global MW
if not MW:
@@ -77,6 +84,7 @@ def mainWindow():
else:
return MW
+
def iconColor(icon):
"""Returns a QRgb from a QIcon, assuming its all the same color"""
px = icon.pixmap(5, 5)
@@ -85,14 +93,17 @@ def iconColor(icon):
else:
return QColor(Qt.transparent)
+
def iconFromColor(color):
px = QPixmap(32, 32)
px.fill(color)
return QIcon(px)
+
def iconFromColorString(string):
return iconFromColor(QColor(string))
+
def randomColor(mix=None):
"""Generates a random color. If mix (QColor) is given, mixes the random color and mix."""
r = randint(0, 255)
@@ -106,6 +117,7 @@ def randomColor(mix=None):
return QColor(r, g, b)
+
def mixColors(col1, col2, f=.5):
f2 = 1-f
r = col1.red() * f + col2.red() * f2
@@ -113,6 +125,7 @@ def mixColors(col1, col2, f=.5):
b = col1.blue() * f + col2.blue() * f2
return QColor(r, g, b)
+
def outlineItemColors(item):
"""Takes an OutlineItem and returns a dict of colors."""
colors = {}
@@ -144,7 +157,8 @@ def outlineItemColors(item):
colors["Compile"] = QColor(Qt.black)
return colors
-
+
+
def colorifyPixmap(pixmap, color):
# FIXME: ugly
p = QPainter(pixmap)
@@ -152,12 +166,14 @@ def colorifyPixmap(pixmap, color):
p.fillRect(pixmap.rect(), color)
return pixmap
+
def appPath(suffix=None):
p = os.path.realpath(os.path.join(os.path.split(__file__)[0], ".."))
if suffix:
p = os.path.join(p, suffix)
return p
+
def writablePath(suffix=None):
if hasattr(QStandardPaths, "AppLocalDataLocation"):
p = QStandardPaths.writableLocation(QStandardPaths.AppLocalDataLocation)
@@ -170,6 +186,7 @@ def writablePath(suffix=None):
os.makedirs(p)
return p
+
def allPaths(suffix=None):
paths = []
# src directory
@@ -178,6 +195,7 @@ def allPaths(suffix=None):
paths.append(writablePath(suffix))
return paths
+
def lightBlue():
"""
A light blue used in several places in manuskript.
@@ -185,8 +203,19 @@ def lightBlue():
"""
return QColor(Qt.blue).lighter(190)
+
def totalObjects():
return len(mainWindow().findChildren(QObject))
+
def printObjects():
- print("Objects:", str(totalObjects()))
\ No newline at end of file
+ print("Objects:", str(totalObjects()))
+
+
+def findWidgetsOfClass(cls):
+ """
+ Returns all widgets, children of MainWindow, whose class is cls.
+ @param cls: a class
+ @return: list of QWidgets
+ """
+ return mainWindow().findChildren(cls, QRegExp())
diff --git a/manuskript/mainWindow.py b/manuskript/mainWindow.py
index 13b4cd97..f92c73eb 100644
--- a/manuskript/mainWindow.py
+++ b/manuskript/mainWindow.py
@@ -9,8 +9,8 @@ from PyQt5.QtWidgets import QMainWindow, QHeaderView, qApp, QMenu, QActionGroup,
QLabel
from manuskript import settings
-from manuskript.enums import Character, PlotStep, Plot, World
-from manuskript.functions import AUC, wordCount, appPath
+from manuskript.enums import Character, PlotStep, Plot, World, Outline
+from manuskript.functions import AUC, wordCount, appPath, findWidgetsOfClass
from manuskript import loadSave
from manuskript.models.characterModel import characterModel
from manuskript.models.outlineModel import outlineModel
@@ -93,8 +93,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# Main Menu
for i in [self.actSave, self.actSaveAs, self.actCloseProject,
- self.menuEdit, self.menuMode, self.menuView, self.menuTools,
- self.menuHelp]:
+ self.menuEdit, self.menuView, self.menuTools, self.menuHelp]:
i.setEnabled(False)
self.actOpen.triggered.connect(self.welcome.openFile)
@@ -109,6 +108,14 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.actToolFrequency.triggered.connect(self.frequencyAnalyzer)
self.generateViewMenu()
+ self.actModeGroup = QActionGroup(self)
+ self.actModeSimple.setActionGroup(self.actModeGroup)
+ self.actModeFiction.setActionGroup(self.actModeGroup)
+ self.actModeSnowflake.setActionGroup(self.actModeGroup)
+ self.actModeSimple.triggered.connect(self.setViewModeSimple)
+ self.actModeFiction.triggered.connect(self.setViewModeFiction)
+ self.actModeSnowflake.setEnabled(False)
+
self.makeUIConnections()
# self.loadProject(os.path.join(appPath(), "test_project.zip"))
@@ -322,6 +329,10 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# We force to emit even if it opens on the current tab
self.tabMain.currentChanged.emit(settings.lastTab)
self.mainEditor.updateCorkBackground()
+ if settings.viewMode == "simple":
+ self.setViewModeSimple()
+ else:
+ self.setViewModeFiction()
# Set autosave
self.saveTimer = QTimer()
@@ -349,8 +360,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# UI
for i in [self.actSave, self.actSaveAs, self.actCloseProject,
- self.menuEdit, self.menuMode, self.menuView, self.menuTools,
- self.menuHelp]:
+ self.menuEdit, self.menuView, self.menuTools, self.menuHelp]:
i.setEnabled(True)
# FIXME: set Window's name: project name
@@ -379,8 +389,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# UI
for i in [self.actSave, self.actSaveAs, self.actCloseProject,
- self.menuEdit, self.menuMode, self.menuView, self.menuTools,
- self.menuHelp]:
+ self.menuEdit, self.menuView, self.menuTools, self.menuHelp]:
i.setEnabled(False)
# Reload recent files
@@ -979,6 +988,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
}
self.menuView.clear()
+ self.menuView.addMenu(self.menuMode)
+ self.menuView.addSeparator()
# print("Generating menus with", settings.viewSettings)
@@ -1014,6 +1025,48 @@ class MainWindow(QMainWindow, Ui_MainWindow):
if item == "Tree":
self.treeRedacOutline.viewport().update()
+ ###############################################################################
+ # VIEW MODES
+ ###############################################################################
+
+ def setViewModeSimple(self):
+ settings.viewMode = "simple"
+ self.tabMain.setCurrentIndex(self.TabRedac)
+ self.viewModeFictionVisibilitySwitch(False)
+ self.actModeSimple.setChecked(True)
+
+ def setViewModeFiction(self):
+ settings.viewMode = "fiction"
+ self.viewModeFictionVisibilitySwitch(True)
+ self.actModeFiction.setChecked(True)
+
+ def viewModeFictionVisibilitySwitch(self, val):
+ """
+ Swtiches the visibility of some UI components useful for fiction only
+ @param val: sets visibility to val
+ """
+
+ # Menu navigation & boutton in toolbar
+ self.toolbar.setDockVisibility(self.dckNavigation, val)
+
+ # POV in metadatas
+ from manuskript.ui.views.propertiesView import propertiesView
+ for w in findWidgetsOfClass(propertiesView):
+ w.lblPOV.setVisible(val)
+ w.cmbPOV.setVisible(val)
+
+ # POV in outline view
+ if Outline.POV.value in settings.outlineViewColumns:
+ settings.outlineViewColumns.remove(Outline.POV.value)
+
+ from manuskript.ui.views.outlineView import outlineView
+ for w in findWidgetsOfClass(outlineView):
+ w.hideColumns()
+
+ # TODO: clean up all other fiction things in non-fiction view mode
+ # Character in search widget
+ # POV in settings / views
+
###############################################################################
# COMPILE
###############################################################################
diff --git a/manuskript/settings.py b/manuskript/settings.py
index 8086eaef..9bff1208 100644
--- a/manuskript/settings.py
+++ b/manuskript/settings.py
@@ -85,12 +85,14 @@ frequencyAnalyzer = {
"phraseMin": 2,
"phraseMax": 5
}
+
+viewMode = "fiction"
def save(filename=None, protocol=None):
global spellcheck, dict, corkSliderFactor, viewSettings, corkSizeFactor, folderView, lastTab, openIndexes, \
autoSave, autoSaveDelay, saveOnQuit, autoSaveNoChanges, autoSaveNoChangesDelay, outlineViewColumns, \
- corkBackground, fullScreenTheme, defaultTextType, textEditor, revisions, frequencyAnalyzer
+ corkBackground, fullScreenTheme, defaultTextType, textEditor, revisions, frequencyAnalyzer, viewMode
allSettings = {
"viewSettings": viewSettings,
@@ -111,7 +113,8 @@ def save(filename=None, protocol=None):
"defaultTextType":defaultTextType,
"textEditor":textEditor,
"revisions":revisions,
- "frequencyAnalyzer": frequencyAnalyzer
+ "frequencyAnalyzer": frequencyAnalyzer,
+ "viewMode": viewMode,
}
#pp=pprint.PrettyPrinter(indent=4, compact=False)
@@ -244,3 +247,7 @@ def load(string, fromString=False, protocol=None):
global frequencyAnalyzer
frequencyAnalyzer = allSettings["frequencyAnalyzer"]
+ if "viewMode" in allSettings:
+ global viewMode
+ viewMode = allSettings["viewMode"]
+
diff --git a/manuskript/settingsWindow.py b/manuskript/settingsWindow.py
index 1a745a2b..5e1bf928 100644
--- a/manuskript/settingsWindow.py
+++ b/manuskript/settingsWindow.py
@@ -11,12 +11,13 @@ from PyQt5.QtWidgets import qApp
# Spell checker support
from manuskript import settings
from manuskript.enums import Outline
-from manuskript.functions import allPaths, iconColor, writablePath, appPath
+from manuskript.functions import allPaths, iconColor, writablePath, appPath, findWidgetsOfClass
from manuskript.functions import mainWindow
from manuskript.ui.editors.themes import createThemePreview
from manuskript.ui.editors.themes import getThemeName
from manuskript.ui.editors.themes import loadThemeDatas
from manuskript.ui.settings_ui import Ui_Settings
+from manuskript.ui.views.outlineView import outlineView
from manuskript.ui.views.textEditView import textEditView
from manuskript.ui.welcome import welcome
@@ -99,6 +100,8 @@ class settingsWindow(QWidget, Ui_Settings):
chk.setChecked(col in settings.outlineViewColumns)
chk.stateChanged.connect(self.outlineColumnsChanged)
+ self.chkOutlinePOV.setVisible(settings.viewMode != "simple") # Hides checkbox if non-fiction view mode
+
for item, what, value in [
(self.rdoTreeItemCount, "InfoFolder", "Count"),
(self.rdoTreeWC, "InfoFolder", "WC"),
@@ -264,6 +267,7 @@ class settingsWindow(QWidget, Ui_Settings):
item, part = self.viewSettingsDatas()[cmb]
element = lst[cmb.currentIndex()]
self.mw.setViewSettings(item, part, element)
+ self.mw.generateViewMenu()
def outlineColumnsData(self):
return {
@@ -287,8 +291,8 @@ class settingsWindow(QWidget, Ui_Settings):
settings.outlineViewColumns.remove(col)
# Update views
- self.mw.redacEditor.outlineView.hideColumns()
- self.mw.treePlanOutline.hideColumns()
+ for w in findWidgetsOfClass(outlineView):
+ w.hideColumns()
def treeViewSettignsChanged(self):
for item, what, value in [
diff --git a/manuskript/ui/collapsibleDockWidgets.py b/manuskript/ui/collapsibleDockWidgets.py
index 5afebf0d..9562b2bd 100644
--- a/manuskript/ui/collapsibleDockWidgets.py
+++ b/manuskript/ui/collapsibleDockWidgets.py
@@ -2,7 +2,7 @@
# --!-- coding: utf8 --!--
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QToolBar, QDockWidget, QAction, QToolButton, QSizePolicy, QStylePainter, \
- QStyleOptionButton, QStyle, QLabel
+ QStyleOptionButton, QStyle
class collapsibleDockWidgets(QToolBar):
@@ -31,6 +31,8 @@ class collapsibleDockWidgets(QToolBar):
# self.setAllowedAreas(self.TRANSPOSED_AREA[self._area])
self.parent().addToolBar(self.TRANSPOSED_AREA[self._area], self)
+ self._dockToButtonAction = {}
+
# Dock widgets
for d in self._dockWidgets():
b = verticalButton(self)
@@ -48,7 +50,8 @@ class collapsibleDockWidgets(QToolBar):
background: lightBlue;
}
""")
- self.addWidget(b)
+ a = self.addWidget(b)
+ self._dockToButtonAction[d] = a
self.addSeparator()
@@ -88,6 +91,10 @@ class collapsibleDockWidgets(QToolBar):
else:
action.setVisible(True)
+ def setDockVisibility(self, dock, val):
+ dock.setVisible(val)
+ self._dockToButtonAction[dock].setVisible(val)
+
def saveState(self):
# We just need to save states of the custom widgets.
state = []
diff --git a/manuskript/ui/mainWindow.py b/manuskript/ui/mainWindow.py
index ed9ab078..1b2a6149 100644
--- a/manuskript/ui/mainWindow.py
+++ b/manuskript/ui/mainWindow.py
@@ -2,8 +2,7 @@
# Form implementation generated from reading ui file 'manuskript/ui/mainWindow.ui'
#
-# Created: Thu Mar 3 18:52:22 2016
-# by: PyQt5 UI code generator 5.2.1
+# Created by: PyQt5 UI code generator 5.4.2
#
# WARNING! All changes made in this file will be lost!
@@ -17,8 +16,8 @@ class Ui_MainWindow(object):
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.centralwidget)
- self.horizontalLayout_2.setSpacing(0)
self.horizontalLayout_2.setContentsMargins(0, 6, 0, 0)
+ self.horizontalLayout_2.setSpacing(0)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.stack = QtWidgets.QStackedWidget(self.centralwidget)
self.stack.setObjectName("stack")
@@ -809,7 +808,6 @@ class Ui_MainWindow(object):
self.layoutWidget = QtWidgets.QWidget(self.splitterOutlineH)
self.layoutWidget.setObjectName("layoutWidget")
self.verticalLayout_14 = QtWidgets.QVBoxLayout(self.layoutWidget)
- self.verticalLayout_14.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_14.setObjectName("verticalLayout_14")
self.splitterOutlineV = QtWidgets.QSplitter(self.layoutWidget)
self.splitterOutlineV.setOrientation(QtCore.Qt.Vertical)
@@ -996,7 +994,7 @@ class Ui_MainWindow(object):
self.horizontalLayout_2.addWidget(self.stack)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
- self.menubar.setGeometry(QtCore.QRect(0, 0, 1112, 20))
+ self.menubar.setGeometry(QtCore.QRect(0, 0, 1112, 30))
self.menubar.setObjectName("menubar")
self.menuFile = QtWidgets.QMenu(self.menubar)
self.menuFile.setObjectName("menuFile")
@@ -1004,8 +1002,6 @@ class Ui_MainWindow(object):
icon = QtGui.QIcon.fromTheme("folder-recent")
self.menuRecents.setIcon(icon)
self.menuRecents.setObjectName("menuRecents")
- self.menuMode = QtWidgets.QMenu(self.menubar)
- self.menuMode.setObjectName("menuMode")
self.menuHelp = QtWidgets.QMenu(self.menubar)
self.menuHelp.setObjectName("menuHelp")
self.menuTools = QtWidgets.QMenu(self.menubar)
@@ -1014,6 +1010,8 @@ class Ui_MainWindow(object):
self.menuEdit.setObjectName("menuEdit")
self.menuView = QtWidgets.QMenu(self.menubar)
self.menuView.setObjectName("menuView")
+ self.menuMode = QtWidgets.QMenu(self.menuView)
+ self.menuMode.setObjectName("menuMode")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
@@ -1113,16 +1111,16 @@ class Ui_MainWindow(object):
self.actStatus.setObjectName("actStatus")
self.actViewTree = QtWidgets.QAction(MainWindow)
self.actViewTree.setObjectName("actViewTree")
- self.actModeNorma = QtWidgets.QAction(MainWindow)
- self.actModeNorma.setCheckable(True)
- self.actModeNorma.setChecked(True)
- self.actModeNorma.setObjectName("actModeNorma")
self.actModeSimple = QtWidgets.QAction(MainWindow)
self.actModeSimple.setCheckable(True)
+ self.actModeSimple.setChecked(True)
self.actModeSimple.setObjectName("actModeSimple")
- self.actModeFractal = QtWidgets.QAction(MainWindow)
- self.actModeFractal.setCheckable(True)
- self.actModeFractal.setObjectName("actModeFractal")
+ self.actModeFiction = QtWidgets.QAction(MainWindow)
+ self.actModeFiction.setCheckable(True)
+ self.actModeFiction.setObjectName("actModeFiction")
+ self.actModeSnowflake = QtWidgets.QAction(MainWindow)
+ self.actModeSnowflake.setCheckable(True)
+ self.actModeSnowflake.setObjectName("actModeSnowflake")
self.actViewCork = QtWidgets.QAction(MainWindow)
self.actViewCork.setObjectName("actViewCork")
self.actViewOutline = QtWidgets.QAction(MainWindow)
@@ -1139,6 +1137,8 @@ class Ui_MainWindow(object):
self.actCompile.setObjectName("actCompile")
self.actToolFrequency = QtWidgets.QAction(MainWindow)
self.actToolFrequency.setObjectName("actToolFrequency")
+ self.actionTest = QtWidgets.QAction(MainWindow)
+ self.actionTest.setObjectName("actionTest")
self.menuFile.addAction(self.actOpen)
self.menuFile.addAction(self.menuRecents.menuAction())
self.menuFile.addAction(self.actSave)
@@ -1148,25 +1148,26 @@ class Ui_MainWindow(object):
self.menuFile.addAction(self.actCompile)
self.menuFile.addSeparator()
self.menuFile.addAction(self.actQuit)
- self.menuMode.addAction(self.actModeNorma)
- self.menuMode.addAction(self.actModeSimple)
- self.menuMode.addAction(self.actModeFractal)
self.menuHelp.addAction(self.actShowHelp)
self.menuTools.addAction(self.actSpellcheck)
self.menuTools.addAction(self.actToolFrequency)
self.menuEdit.addAction(self.actLabels)
self.menuEdit.addAction(self.actStatus)
self.menuEdit.addAction(self.actSettings)
+ self.menuMode.addAction(self.actModeSimple)
+ self.menuMode.addAction(self.actModeFiction)
+ self.menuMode.addAction(self.actModeSnowflake)
+ self.menuView.addAction(self.menuMode.menuAction())
+ self.menuView.addSeparator()
self.menubar.addAction(self.menuFile.menuAction())
self.menubar.addAction(self.menuEdit.menuAction())
- self.menubar.addAction(self.menuMode.menuAction())
self.menubar.addAction(self.menuView.menuAction())
self.menubar.addAction(self.menuTools.menuAction())
self.menubar.addAction(self.menuHelp.menuAction())
self.retranslateUi(MainWindow)
self.stack.setCurrentIndex(1)
- self.tabMain.setCurrentIndex(2)
+ self.tabMain.setCurrentIndex(4)
self.tabSummary.setCurrentIndex(0)
self.tabPersos.setCurrentIndex(0)
self.tabPlot.setCurrentIndex(0)
@@ -1268,11 +1269,11 @@ class Ui_MainWindow(object):
self.tabMain.setTabText(self.tabMain.indexOf(self.lytTabDebug), _translate("MainWindow", "Debug"))
self.menuFile.setTitle(_translate("MainWindow", "Fi&le"))
self.menuRecents.setTitle(_translate("MainWindow", "&Recents"))
- self.menuMode.setTitle(_translate("MainWindow", "&Mode"))
self.menuHelp.setTitle(_translate("MainWindow", "Help"))
self.menuTools.setTitle(_translate("MainWindow", "&Tools"))
self.menuEdit.setTitle(_translate("MainWindow", "E&dit"))
self.menuView.setTitle(_translate("MainWindow", "&View"))
+ self.menuMode.setTitle(_translate("MainWindow", "&Mode"))
self.dckCheatSheet.setWindowTitle(_translate("MainWindow", "&Cheat sheet"))
self.dckSearch.setWindowTitle(_translate("MainWindow", "Sea&rch"))
self.dckNavigation.setWindowTitle(_translate("MainWindow", "&Navigation"))
@@ -1291,9 +1292,9 @@ class Ui_MainWindow(object):
self.actLabels.setText(_translate("MainWindow", "&Labels..."))
self.actStatus.setText(_translate("MainWindow", "&Status..."))
self.actViewTree.setText(_translate("MainWindow", "Tree"))
- self.actModeNorma.setText(_translate("MainWindow", "&Normal"))
self.actModeSimple.setText(_translate("MainWindow", "&Simple"))
- self.actModeFractal.setText(_translate("MainWindow", "&Fractal"))
+ self.actModeFiction.setText(_translate("MainWindow", "&Fiction"))
+ self.actModeSnowflake.setText(_translate("MainWindow", "&Snowflake"))
self.actViewCork.setText(_translate("MainWindow", "Index cards"))
self.actViewOutline.setText(_translate("MainWindow", "Outline"))
self.actSettings.setText(_translate("MainWindow", "S&ettings"))
@@ -1302,19 +1303,20 @@ class Ui_MainWindow(object):
self.actCompile.setText(_translate("MainWindow", "Co&mpile"))
self.actCompile.setShortcut(_translate("MainWindow", "F6"))
self.actToolFrequency.setText(_translate("MainWindow", "&Frequency Analyzer"))
+ self.actionTest.setText(_translate("MainWindow", "test"))
-from manuskript.ui.views.outlineView import outlineView
-from manuskript.ui.views.textEditView import textEditView
-from manuskript.ui.views.basicItemView import basicItemView
-from manuskript.ui.views.plotTreeView import plotTreeView
from manuskript.ui.cheatSheet import cheatSheet
-from manuskript.ui.views.sldImportance import sldImportance
-from manuskript.ui.views.metadataView import metadataView
-from manuskript.ui.views.characterTreeView import characterTreeView
from manuskript.ui.editors.mainEditor import mainEditor
from manuskript.ui.search import search
+from manuskript.ui.views.basicItemView import basicItemView
+from manuskript.ui.views.characterTreeView import characterTreeView
from manuskript.ui.views.lineEditView import lineEditView
-from manuskript.ui.welcome import welcome
-from manuskript.ui.views.treeView import treeView
-from manuskript.ui.views.textEditCompleter import textEditCompleter
+from manuskript.ui.views.metadataView import metadataView
+from manuskript.ui.views.outlineView import outlineView
+from manuskript.ui.views.plotTreeView import plotTreeView
+from manuskript.ui.views.sldImportance import sldImportance
from manuskript.ui.views.storylineView import storylineView
+from manuskript.ui.views.textEditCompleter import textEditCompleter
+from manuskript.ui.views.textEditView import textEditView
+from manuskript.ui.views.treeView import treeView
+from manuskript.ui.welcome import welcome
diff --git a/manuskript/ui/mainWindow.ui b/manuskript/ui/mainWindow.ui
index 9f9e7c6e..f673905c 100644
--- a/manuskript/ui/mainWindow.ui
+++ b/manuskript/ui/mainWindow.ui
@@ -124,7 +124,7 @@
QTabWidget::Rounded
- 2
+ 4
true
@@ -1979,7 +1979,7 @@
0
0
1112
- 20
+ 30
-
-
@@ -2266,31 +2267,31 @@ QListView::item:hover {
Tree
-
+
true
true
-
- &Normal
-
-
-
-
- true
-
&Simple
-
+
true
- &Fractal
+ &Fiction
+
+
+
+
+ true
+
+
+ &Snowflake
@@ -2338,6 +2339,11 @@ QListView::item:hover {
&Frequency Analyzer
+
+
+ test
+
+
diff --git a/manuskript/ui/views/outlineView.py b/manuskript/ui/views/outlineView.py
index 50e44ecc..8c4d4bc1 100644
--- a/manuskript/ui/views/outlineView.py
+++ b/manuskript/ui/views/outlineView.py
@@ -65,6 +65,10 @@ class outlineView(QTreeView, dndView, outlineBasics):
self.header().setSectionResizeMode(Outline.goalPercentage.value, QHeaderView.ResizeToContents)
def hideColumns(self):
+ if not self.model():
+ # outlineView is probably not initialized, because editorWidgets shows index cards or text.
+ return
+
for c in range(self.model().columnCount()):
self.hideColumn(c)
for c in settings.outlineViewColumns: