View mode working

This commit is contained in:
Olivier Keshavjee 2016-03-24 13:42:47 +01:00
parent ccaa302616
commit 7bb52c80a5
8 changed files with 189 additions and 77 deletions

View file

@ -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()))
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())

View file

@ -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
###############################################################################

View file

@ -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"]

View file

@ -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 [

View file

@ -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 = []

View file

@ -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

View file

@ -124,7 +124,7 @@
<enum>QTabWidget::Rounded</enum>
</property>
<property name="currentIndex">
<number>2</number>
<number>4</number>
</property>
<property name="documentMode">
<bool>true</bool>
@ -1979,7 +1979,7 @@
<x>0</x>
<y>0</y>
<width>1112</width>
<height>20</height>
<height>30</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">
@ -2006,14 +2006,6 @@
<addaction name="separator"/>
<addaction name="actQuit"/>
</widget>
<widget class="QMenu" name="menuMode">
<property name="title">
<string>&amp;Mode</string>
</property>
<addaction name="actModeNorma"/>
<addaction name="actModeSimple"/>
<addaction name="actModeFractal"/>
</widget>
<widget class="QMenu" name="menuHelp">
<property name="title">
<string>Help</string>
@ -2039,10 +2031,19 @@
<property name="title">
<string>&amp;View</string>
</property>
<widget class="QMenu" name="menuMode">
<property name="title">
<string>&amp;Mode</string>
</property>
<addaction name="actModeSimple"/>
<addaction name="actModeFiction"/>
<addaction name="actModeSnowflake"/>
</widget>
<addaction name="menuMode"/>
<addaction name="separator"/>
</widget>
<addaction name="menuFile"/>
<addaction name="menuEdit"/>
<addaction name="menuMode"/>
<addaction name="menuView"/>
<addaction name="menuTools"/>
<addaction name="menuHelp"/>
@ -2266,31 +2267,31 @@ QListView::item:hover {
<string>Tree</string>
</property>
</action>
<action name="actModeNorma">
<action name="actModeSimple">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="text">
<string>&amp;Normal</string>
</property>
</action>
<action name="actModeSimple">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>&amp;Simple</string>
</property>
</action>
<action name="actModeFractal">
<action name="actModeFiction">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>&amp;Fractal</string>
<string>&amp;Fiction</string>
</property>
</action>
<action name="actModeSnowflake">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>&amp;Snowflake</string>
</property>
</action>
<action name="actViewCork">
@ -2338,6 +2339,11 @@ QListView::item:hover {
<string>&amp;Frequency Analyzer</string>
</property>
</action>
<action name="actionTest">
<property name="text">
<string>test</string>
</property>
</action>
</widget>
<customwidgets>
<customwidget>

View file

@ -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: