mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-05-15 02:12:29 +12:00
MainEditor getting smarter
This commit is contained in:
parent
37810a7108
commit
7a7f102490
|
@ -360,20 +360,18 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
|||
self.makeConnections()
|
||||
|
||||
# Load settings
|
||||
for i in settings.openIndexes:
|
||||
idx = self.mdlOutline.indexFromPath(i)
|
||||
self.mainEditor.setCurrentModelIndex(idx, newTab = True)
|
||||
self.generateViewMenu()
|
||||
self.mainEditor.sldCorkSizeFactor.setValue(settings.corkSizeFactor)
|
||||
self.actSpellcheck.setChecked(settings.spellcheck)
|
||||
self.toggleSpellcheck(settings.spellcheck)
|
||||
self.updateMenuDict()
|
||||
self.setDictionary()
|
||||
self.treeRedacOutline.setCurrentIndex(
|
||||
self.mdlOutline.indexFromPath(settings.lastIndex))
|
||||
|
||||
self.mainEditor.setFolderView(settings.folderView)
|
||||
if settings.folderView == "text":
|
||||
self.mainEditor.btnRedacFolderText.setChecked(True)
|
||||
elif settings.folderView == "cork":
|
||||
self.mainEditor.btnRedacFolderCork.setChecked(True)
|
||||
elif settings.folderView == "outline":
|
||||
self.mainEditor.btnRedacFolderOutline.setChecked(True)
|
||||
self.mainEditor.updateFolderViewButtons(settings.folderView)
|
||||
self.tabMain.setCurrentIndex(settings.lastTab)
|
||||
self.mainEditor.updateCorkBackground()
|
||||
|
||||
|
@ -455,12 +453,11 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
|||
settings.lastTab = self.tabMain.currentIndex()
|
||||
|
||||
if self.currentProject:
|
||||
# Remembering the current item
|
||||
if len(self.treeRedacOutline.selectedIndexes()) == 0:
|
||||
sel = QModelIndex()
|
||||
else:
|
||||
sel = self.treeRedacOutline.currentIndex()
|
||||
settings.lastIndex = self.mdlOutline.pathToIndex(sel)
|
||||
# Remembering the current items
|
||||
sel = []
|
||||
for i in range(self.mainEditor.tab.count()):
|
||||
sel.append(self.mdlOutline.pathToIndex(self.mainEditor.tab.widget(i).currentIndex))
|
||||
settings.openIndexes = sel
|
||||
|
||||
# Save data from models
|
||||
if self.currentProject and settings.saveOnQuit:
|
||||
|
@ -756,9 +753,10 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
|||
self.outlineItemEditor.selectionChanged(self.treePlanOutline), AUC)
|
||||
self.treePlanOutline.clicked.connect(lambda:
|
||||
self.outlineItemEditor.selectionChanged(self.treePlanOutline), AUC)
|
||||
|
||||
self.treeRedacOutline.setSelectionModel(self.treePlanOutline
|
||||
.selectionModel())
|
||||
|
||||
# Sync selection
|
||||
#self.treeRedacOutline.setSelectionModel(self.treePlanOutline
|
||||
#.selectionModel())
|
||||
|
||||
self.treeRedacOutline.selectionModel().selectionChanged.connect(
|
||||
lambda: self.redacMetadata.selectionChanged(self.treeRedacOutline), AUC)
|
||||
|
@ -767,7 +765,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
|||
|
||||
#self.treeRedacOutline.selectionModel().currentChanged.connect(self.redacEditor.setCurrentModelIndex)
|
||||
self.treeRedacOutline.selectionModel().selectionChanged.connect(self.mainEditor.selectionChanged, AUC)
|
||||
self.treeRedacOutline.selectionModel().currentChanged.connect(self.mainEditor.setCurrentModelIndex, AUC)
|
||||
#self.treeRedacOutline.doubleClicked.connect(self.mainEditor.setCurrentModelIndex, AUC)
|
||||
#self.treeRedacOutline.selectionModel().currentChanged.connect(self.mainEditor.setCurrentModelIndex, AUC)
|
||||
|
||||
#self.treeRedacOutline.selectionModel().selectionChanged.connect(self.outlineSelectionChanged, AUC)
|
||||
#self.treeRedacOutline.selectionModel().selectionChanged.connect(self.outlineSelectionChanged, AUC)
|
||||
|
@ -936,11 +935,11 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
|||
for i in enchant.list_dicts():
|
||||
a = QAction(str(i[0]), self)
|
||||
a.setCheckable(True)
|
||||
a.triggered.connect(self.setDictionary, AUC)
|
||||
if settings.dict is None:
|
||||
settings.dict = enchant.get_default_language()
|
||||
if str(i[0]) == settings.dict:
|
||||
a.setChecked(True)
|
||||
a.triggered.connect(self.setDictionary, AUC)
|
||||
self.menuDictGroup.addAction(a)
|
||||
self.menuDict.addAction(a)
|
||||
|
||||
|
@ -950,7 +949,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
|||
|
||||
for i in self.menuDictGroup.actions():
|
||||
if i.isChecked():
|
||||
self.dictChanged.emit(i.text().replace("&", ""))
|
||||
#self.dictChanged.emit(i.text().replace("&", ""))
|
||||
settings.dict = i.text().replace("&", "")
|
||||
|
||||
# Find all textEditView from self, and toggle spellcheck
|
||||
|
@ -963,9 +962,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
|||
|
||||
def toggleSpellcheck(self, val):
|
||||
settings.spellcheck = val
|
||||
self.mainEditor.toggleSpellcheck(val)
|
||||
self.redacMetadata.toggleSpellcheck(val)
|
||||
self.outlineItemEditor.toggleSpellcheck(val)
|
||||
#self.mainEditor.toggleSpellcheck(val)
|
||||
#self.redacMetadata.toggleSpellcheck(val)
|
||||
#self.outlineItemEditor.toggleSpellcheck(val)
|
||||
|
||||
# Find all textEditView from self, and toggle spellcheck
|
||||
for w in self.findChildren(textEditView, QRegExp(".*"),
|
||||
|
|
|
@ -68,7 +68,7 @@ def openReference(ref):
|
|||
index = mw.mdlOutline.getIndexByID(_ref)
|
||||
|
||||
if index.isValid():
|
||||
mw.treeRedacOutline.setCurrentIndex(index)
|
||||
mw.mainEditor.setCurrentModelIndex(index, newTab=True)
|
||||
return True
|
||||
else:
|
||||
print("Ref not found")
|
||||
|
|
|
@ -32,7 +32,7 @@ dict = None
|
|||
corkSizeFactor = 100
|
||||
folderView = "cork"
|
||||
lastTab = 0
|
||||
lastIndex = ""
|
||||
openIndexes = [""]
|
||||
autoSave = False
|
||||
autoSaveDelay = 5
|
||||
autoSaveNoChanges = True
|
||||
|
@ -61,7 +61,7 @@ textEditor = {
|
|||
|
||||
def save(filename=None):
|
||||
|
||||
global spellcheck, dict, corkSliderFactor, viewSettings, corkSizeFactor, folderView, lastTab, lastIndex, \
|
||||
global spellcheck, dict, corkSliderFactor, viewSettings, corkSizeFactor, folderView, lastTab, openIndexes, \
|
||||
autoSave, autoSaveDelay, saveOnQuit, autoSaveNoChanges, autoSaveNoChangesDelay, outlineViewColumns, \
|
||||
corkBackground, fullScreenTheme, defaultTextType, textEditor
|
||||
|
||||
|
@ -72,7 +72,7 @@ def save(filename=None):
|
|||
"corkSizeFactor": corkSizeFactor,
|
||||
"folderView": folderView,
|
||||
"lastTab": lastTab,
|
||||
"lastIndex": lastIndex,
|
||||
"openIndexes": openIndexes,
|
||||
"autoSave":autoSave,
|
||||
"autoSaveDelay":autoSaveDelay,
|
||||
"saveOnQuit":saveOnQuit,
|
||||
|
@ -139,9 +139,9 @@ def load(string, fromString=False):
|
|||
global lastTab
|
||||
lastTab = allSettings["lastTab"]
|
||||
|
||||
if "lastIndex" in allSettings:
|
||||
global lastIndex
|
||||
lastIndex = allSettings["lastIndex"]
|
||||
if "openIndexes" in allSettings:
|
||||
global openIndexes
|
||||
openIndexes = allSettings["openIndexes"]
|
||||
|
||||
if "autoSave" in allSettings:
|
||||
global autoSave
|
||||
|
|
|
@ -27,6 +27,7 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
|
|||
self.currentDict = ""
|
||||
self.spellcheck = True
|
||||
self.folderView = "cork"
|
||||
self.mw = mainWindow()
|
||||
|
||||
#def setModel(self, model):
|
||||
#self._model = model
|
||||
|
@ -58,27 +59,32 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
|
|||
if r.isValid():
|
||||
count = r.internalPointer().childCount()
|
||||
else:
|
||||
count = self._model.rootItem.childCount()
|
||||
count = self.mw.mdlOutline.rootItem.childCount()
|
||||
|
||||
for c in range(count):
|
||||
self.corkView.itemDelegate().sizeHintChanged.emit(r.child(c, 0))
|
||||
|
||||
def setView(self):
|
||||
index = mainWindow().treeRedacOutline.currentIndex()
|
||||
#index = mainWindow().treeRedacOutline.currentIndex()
|
||||
|
||||
# Couting the number of other selected items
|
||||
sel = []
|
||||
for i in mainWindow().treeRedacOutline.selectionModel().selection().indexes():
|
||||
if i.column() != 0: continue
|
||||
if i not in sel: sel.append(i)
|
||||
## Couting the number of other selected items
|
||||
#sel = []
|
||||
#for i in mainWindow().treeRedacOutline.selectionModel().selection().indexes():
|
||||
#if i.column() != 0: continue
|
||||
#if i not in sel: sel.append(i)
|
||||
|
||||
if len(sel) != 0:
|
||||
item = index.internalPointer()
|
||||
else:
|
||||
index = QModelIndex()
|
||||
item = self._model.rootItem
|
||||
#if len(sel) != 0:
|
||||
#item = index.internalPointer()
|
||||
#else:
|
||||
#index = QModelIndex()
|
||||
#item = self.mw.mdlOutline.rootItem
|
||||
|
||||
self.currentIndex = index
|
||||
#self.currentIndex = index
|
||||
|
||||
if self.currentIndex.isValid():
|
||||
item = self.currentIndex.internalPointer()
|
||||
else:
|
||||
item = self.mw.mdlOutline.rootItem
|
||||
|
||||
def addTitle(itm):
|
||||
edt = textEditView(self, html="<h{l}>{t}</h{l}>".format(l=min(itm.level()+1, 5), t=itm.title()), autoResize=True)
|
||||
|
@ -96,7 +102,7 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
|
|||
edt = textEditView(self,
|
||||
index=itm.index(),
|
||||
spellcheck=self.spellcheck,
|
||||
dict=self.currentDict,
|
||||
dict=settings.dict,
|
||||
highlighting=True,
|
||||
autoResize=True)
|
||||
edt.setFrameShape(QFrame.NoFrame)
|
||||
|
@ -123,23 +129,23 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
|
|||
l.addItem(QSpacerItem(10, 1000, QSizePolicy.Minimum, QSizePolicy.Expanding))
|
||||
|
||||
# Display multiple selected items
|
||||
if len(sel) > 1 and False: # Buggy and not very useful, skip
|
||||
self.stack.setCurrentIndex(1)
|
||||
w = QWidget()
|
||||
l = QVBoxLayout(w)
|
||||
self.txtEdits = []
|
||||
for idx in sel:
|
||||
sItem = idx.internalPointer()
|
||||
addTitle(sItem)
|
||||
if sItem.isFolder():
|
||||
addChildren(sItem)
|
||||
else:
|
||||
addText(sItem)
|
||||
addLine()
|
||||
addSpacer()
|
||||
self.scroll.setWidget(w)
|
||||
#if len(sel) > 1 and False: # Buggy and not very useful, skip
|
||||
#self.stack.setCurrentIndex(1)
|
||||
#w = QWidget()
|
||||
#l = QVBoxLayout(w)
|
||||
#self.txtEdits = []
|
||||
#for idx in sel:
|
||||
#sItem = idx.internalPointer()
|
||||
#addTitle(sItem)
|
||||
#if sItem.isFolder():
|
||||
#addChildren(sItem)
|
||||
#else:
|
||||
#addText(sItem)
|
||||
#addLine()
|
||||
#addSpacer()
|
||||
#self.scroll.setWidget(w)
|
||||
|
||||
elif item and item.isFolder() and self.folderView == "text":
|
||||
if item and item.isFolder() and self.folderView == "text":
|
||||
self.stack.setCurrentIndex(1)
|
||||
|
||||
w = QWidget()
|
||||
|
@ -148,7 +154,7 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
|
|||
|
||||
self.txtEdits = []
|
||||
|
||||
if item != self._model.rootItem:
|
||||
if item != self.mw.mdlOutline.rootItem:
|
||||
addTitle(item)
|
||||
|
||||
addChildren(item)
|
||||
|
@ -157,8 +163,8 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
|
|||
|
||||
elif item and item.isFolder() and self.folderView == "cork":
|
||||
self.stack.setCurrentIndex(2)
|
||||
self.corkView.setModel(self._model)
|
||||
self.corkView.setRootIndex(index)
|
||||
self.corkView.setModel(self.mw.mdlOutline)
|
||||
self.corkView.setRootIndex(self.currentIndex)
|
||||
self.corkView.selectionModel().selectionChanged.connect(
|
||||
lambda: mainWindow().redacMetadata.selectionChanged(self.corkView), AUC)
|
||||
self.corkView.clicked.connect(
|
||||
|
@ -169,8 +175,8 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
|
|||
self.outlineView.setModelPersos(mainWindow().mdlPersos)
|
||||
self.outlineView.setModelLabels(mainWindow().mdlLabels)
|
||||
self.outlineView.setModelStatus(mainWindow().mdlStatus)
|
||||
self.outlineView.setModel(self._model)
|
||||
self.outlineView.setRootIndex(index)
|
||||
self.outlineView.setModel(self.mw.mdlOutline)
|
||||
self.outlineView.setRootIndex(self.currentIndex)
|
||||
self.outlineView.selectionModel().selectionChanged.connect(
|
||||
lambda: mainWindow().redacMetadata.selectionChanged(self.outlineView), AUC)
|
||||
self.outlineView.clicked.connect(
|
||||
|
@ -181,7 +187,7 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
|
|||
self.stack.setCurrentIndex(0) # Single text item
|
||||
|
||||
try:
|
||||
self._model.dataChanged.connect(self.modelDataChanged, AUC)
|
||||
self.mw.mdlOutline.dataChanged.connect(self.modelDataChanged, AUC)
|
||||
except TypeError:
|
||||
pass
|
||||
|
||||
|
@ -191,7 +197,7 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
|
|||
def setCurrentModelIndex(self, index=None):
|
||||
if index.isValid():
|
||||
self.currentIndex = index
|
||||
self._model = index.model()
|
||||
#self._model = index.model()
|
||||
else:
|
||||
self.currentIndex = QModelIndex()
|
||||
|
||||
|
@ -206,11 +212,11 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
|
|||
def updateStatusBar(self):
|
||||
# Update progress
|
||||
#if self.currentIndex and self.currentIndex.isValid():
|
||||
if self._model:
|
||||
mw = mainWindow()
|
||||
if not mw: return
|
||||
|
||||
mw.mainEditor.updateStats(self.currentIndex)
|
||||
#if self._model:
|
||||
mw = mainWindow()
|
||||
if not mw: return
|
||||
|
||||
mw.mainEditor.updateStats(self.currentIndex)
|
||||
|
||||
def toggleSpellcheck(self, v):
|
||||
self.spellcheck = v
|
||||
|
|
|
@ -12,6 +12,7 @@ class mainEditor(QWidget, Ui_mainEditor):
|
|||
def __init__(self, parent=None):
|
||||
QWidget.__init__(self, parent)
|
||||
self.setupUi(self)
|
||||
self._updating = False
|
||||
|
||||
self.mw = mainWindow()
|
||||
self.tab.tabCloseRequested.connect(self.closeTab)
|
||||
|
@ -41,21 +42,36 @@ class mainEditor(QWidget, Ui_mainEditor):
|
|||
return self.tab.currentWidget()
|
||||
|
||||
def tabChanged(self, index):
|
||||
#FIXME: Update UI
|
||||
pass
|
||||
if self.currentEditor():
|
||||
index = self.currentEditor().currentIndex
|
||||
view = self.currentEditor().folderView
|
||||
self.updateFolderViewButtons(view)
|
||||
else:
|
||||
index = QModelIndex()
|
||||
|
||||
self._updating = True
|
||||
self.mw.treeRedacOutline.setCurrentIndex(index)
|
||||
self._updating = False
|
||||
|
||||
def closeTab(self, index):
|
||||
#FIXME: submit data if textedit?
|
||||
self.tab.removeTab(index)
|
||||
|
||||
def allTabs(self):
|
||||
return [self.tab.widget(i) for i in range(self.tab.count())]
|
||||
|
||||
###############################################################################
|
||||
# SELECTION AND UPDATES
|
||||
###############################################################################
|
||||
|
||||
def selectionChanged(self):
|
||||
if self._updating:
|
||||
return
|
||||
|
||||
if len(self.mw.treeRedacOutline.selectionModel().
|
||||
selection().indexes()) == 0:
|
||||
hidden = False
|
||||
idx = QModelIndex()
|
||||
else:
|
||||
idx = self.mw.treeRedacOutline.currentIndex()
|
||||
if idx.isValid():
|
||||
|
@ -69,21 +85,36 @@ class mainEditor(QWidget, Ui_mainEditor):
|
|||
self.sldCorkSizeFactor.setHidden(hidden)
|
||||
self.btnRedacFullscreen.setVisible(hidden)
|
||||
|
||||
#FIXME
|
||||
#self.redacEditor.setView
|
||||
self.setCurrentModelIndex(idx)
|
||||
|
||||
def openIndexes(self, indexes, newTab=False):
|
||||
for i in indexes:
|
||||
self.setCurrentModelIndex(i, newTab)
|
||||
|
||||
def setCurrentModelIndex(self, index, newTab=False):
|
||||
|
||||
if not index.isValid():
|
||||
return
|
||||
title = self.tr("Root")
|
||||
else:
|
||||
title = index.internalPointer().title()
|
||||
|
||||
item = index.internalPointer()
|
||||
# Checking if tab is already openned
|
||||
for w in self.allTabs():
|
||||
if w.currentIndex == index:
|
||||
self.tab.setCurrentWidget(w)
|
||||
return
|
||||
|
||||
editor = editorWidget(self)
|
||||
editor.setCurrentModelIndex(index)
|
||||
self.tab.addTab(editor, item.title())
|
||||
self.tab.setCurrentIndex(self.tab.count() - 1)
|
||||
if qApp.keyboardModifiers() & Qt.ControlModifier:
|
||||
newTab = True
|
||||
|
||||
if newTab or not self.tab.count():
|
||||
editor = editorWidget(self)
|
||||
editor.setCurrentModelIndex(index)
|
||||
self.tab.addTab(editor, title)
|
||||
self.tab.setCurrentIndex(self.tab.count() - 1)
|
||||
else:
|
||||
self.currentEditor().setCurrentModelIndex(index)
|
||||
self.tab.setTabText(self.tab.currentIndex(), title)
|
||||
|
||||
#FIXME: check if tab is already open
|
||||
|
||||
|
@ -94,15 +125,22 @@ class mainEditor(QWidget, Ui_mainEditor):
|
|||
# UI
|
||||
###############################################################################
|
||||
|
||||
def updateFolderViewButtons(self, view):
|
||||
if view == "text":
|
||||
self.btnRedacFolderText.setChecked(True)
|
||||
elif view == "cork":
|
||||
self.btnRedacFolderCork.setChecked(True)
|
||||
elif view == "outline":
|
||||
self.btnRedacFolderOutline.setChecked(True)
|
||||
|
||||
def updateStats(self, index=None):
|
||||
if index:
|
||||
item = index.internalPointer()
|
||||
else:
|
||||
item = self._model.rootItem
|
||||
item = self.mw.mdlOutline.rootItem
|
||||
|
||||
if not item:
|
||||
item = self._model.rootItem
|
||||
item = self.mw.mdlOutline.rootItem
|
||||
|
||||
wc = item.data(Outline.wordCount.value)
|
||||
goal = item.data(Outline.goal.value)
|
||||
|
@ -167,12 +205,12 @@ class mainEditor(QWidget, Ui_mainEditor):
|
|||
###############################################################################
|
||||
|
||||
def setDict(self, dict):
|
||||
pass
|
||||
#FIXME
|
||||
print(dict)
|
||||
for w in self.allTabs():
|
||||
w.setDict(dict)
|
||||
|
||||
def toggleSpellcheck(self, val):
|
||||
pass
|
||||
#FIXME
|
||||
#self.redacEditor.toggleSpellcheck(val)
|
||||
for w in self.allTabs():
|
||||
w.toggleSpellcheck(val)
|
||||
|
||||
|
|
@ -789,6 +789,7 @@ class Ui_MainWindow(object):
|
|||
self.verticalLayout_30.setContentsMargins(0, 0, 0, 0)
|
||||
self.verticalLayout_30.setObjectName("verticalLayout_30")
|
||||
self.treeRedacOutline = treeView(self.treeRedacWidget)
|
||||
self.treeRedacOutline.setEditTriggers(QtWidgets.QAbstractItemView.EditKeyPressed)
|
||||
self.treeRedacOutline.setObjectName("treeRedacOutline")
|
||||
self.verticalLayout_30.addWidget(self.treeRedacOutline)
|
||||
self.horizontalLayout_31 = QtWidgets.QHBoxLayout()
|
||||
|
@ -1032,7 +1033,7 @@ class Ui_MainWindow(object):
|
|||
|
||||
self.retranslateUi(MainWindow)
|
||||
self.stack.setCurrentIndex(1)
|
||||
self.tabMain.setCurrentIndex(2)
|
||||
self.tabMain.setCurrentIndex(6)
|
||||
self.tabSummary.setCurrentIndex(0)
|
||||
self.tabPersos.setCurrentIndex(3)
|
||||
self.tabPlot.setCurrentIndex(0)
|
||||
|
@ -1169,14 +1170,14 @@ class Ui_MainWindow(object):
|
|||
self.actSettings.setShortcut(_translate("MainWindow", "F8"))
|
||||
self.actCloseProject.setText(_translate("MainWindow", "Close project"))
|
||||
|
||||
from ui.views.persoTreeView import persoTreeView
|
||||
from ui.views.textEditView import textEditView
|
||||
from ui.sldImportance import sldImportance
|
||||
from ui.views.metadataView import metadataView
|
||||
from ui.editors.mainEditor import mainEditor
|
||||
from ui.views.basicItemView import basicItemView
|
||||
from ui.views.outlineView import outlineView
|
||||
from ui.views.lineEditView import lineEditView
|
||||
from ui.welcome import welcome
|
||||
from ui.views.plotTreeView import plotTreeView
|
||||
from ui.views.textEditView import textEditView
|
||||
from ui.views.basicItemView import basicItemView
|
||||
from ui.editors.mainEditor import mainEditor
|
||||
from ui.views.metadataView import metadataView
|
||||
from ui.views.outlineView import outlineView
|
||||
from ui.views.persoTreeView import persoTreeView
|
||||
from ui.views.treeView import treeView
|
||||
from ui.views.lineEditView import lineEditView
|
||||
from ui.sldImportance import sldImportance
|
||||
|
|
|
@ -109,7 +109,7 @@
|
|||
<item>
|
||||
<widget class="QTabWidget" name="tabMain">
|
||||
<property name="currentIndex">
|
||||
<number>2</number>
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="documentMode">
|
||||
<bool>true</bool>
|
||||
|
@ -1520,7 +1520,11 @@
|
|||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="treeView" name="treeRedacOutline"/>
|
||||
<widget class="treeView" name="treeRedacOutline">
|
||||
<property name="editTriggers">
|
||||
<set>QAbstractItemView::EditKeyPressed</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_31">
|
||||
|
|
|
@ -35,7 +35,7 @@ class textEditView(QTextEdit):
|
|||
self._fromTheme = False
|
||||
|
||||
self.spellcheck = spellcheck
|
||||
self.currentDict = dict
|
||||
self.currentDict = dict if dict else settings.dict
|
||||
self.highlighter = None
|
||||
self._autoResize = autoResize
|
||||
self._defaultBlockFormat = QTextBlockFormat()
|
||||
|
@ -75,9 +75,9 @@ class textEditView(QTextEdit):
|
|||
else:
|
||||
self.spellcheck = False
|
||||
|
||||
#if self._highlighting and not self.highlighter:
|
||||
#self.highlighter = t2tHighlighter(self)
|
||||
#self.highlighter.setDefaultBlockFormat(self._defaultBlockFormat)
|
||||
if self._highlighting and not self.highlighter:
|
||||
self.highlighter = t2tHighlighter(self)
|
||||
self.highlighter.setDefaultBlockFormat(self._defaultBlockFormat)
|
||||
|
||||
def setModel(self, model):
|
||||
self._model = model
|
||||
|
|
|
@ -17,6 +17,7 @@ class treeView(QTreeView, dndView, outlineBasics):
|
|||
QTreeView.__init__(self, parent)
|
||||
dndView.__init__(self, parent)
|
||||
outlineBasics.__init__(self, parent)
|
||||
self._indexesToOpen = None
|
||||
|
||||
def setModel(self, model):
|
||||
QTreeView.setModel(self, model)
|
||||
|
@ -33,7 +34,29 @@ class treeView(QTreeView, dndView, outlineBasics):
|
|||
menu = outlineBasics.makePopupMenu(self)
|
||||
first = menu.actions()[0]
|
||||
|
||||
# Open item in new tab
|
||||
sel = self.selectedIndexes()
|
||||
pos = self.viewport().mapFromGlobal(QCursor.pos())
|
||||
mouseIndex = self.indexAt(pos)
|
||||
|
||||
if mouseIndex.isValid():
|
||||
mouseTitle = mouseIndex.internalPointer().title()
|
||||
else:
|
||||
mouseTitle = self.tr("Root")
|
||||
|
||||
if mouseIndex in sel and len(sel) > 1:
|
||||
actionTitle = self.tr("Open {} items in new tabs").format(len(sel))
|
||||
self._indexesToOpen = sel
|
||||
else:
|
||||
actionTitle = self.tr("Open {} in a new tab").format(mouseTitle)
|
||||
self._indexesToOpen = [mouseIndex]
|
||||
|
||||
self.actNewTab = QAction(actionTitle, menu)
|
||||
self.actNewTab.triggered.connect(self.openNewTab)
|
||||
menu.insertAction(first, self.actNewTab)
|
||||
menu.insertSeparator(first)
|
||||
|
||||
# Expand /collapse item
|
||||
if len(self.selectedIndexes()) != 0:
|
||||
index = self.currentIndex()
|
||||
item = index.internalPointer()
|
||||
|
@ -46,7 +69,8 @@ class treeView(QTreeView, dndView, outlineBasics):
|
|||
menu.insertAction(first, self.actCollapse)
|
||||
|
||||
menu.insertSeparator(first)
|
||||
|
||||
|
||||
# Expand /collapse all
|
||||
self.actExpandAll = QAction(self.tr("Expand All"), menu)
|
||||
self.actExpandAll.triggered.connect(self.expandAll)
|
||||
menu.insertAction(first, self.actExpandAll)
|
||||
|
@ -59,6 +83,9 @@ class treeView(QTreeView, dndView, outlineBasics):
|
|||
|
||||
return menu
|
||||
|
||||
def openNewTab(self):
|
||||
mainWindow().mainEditor.openIndexes(self._indexesToOpen, newTab=True)
|
||||
|
||||
def expandCurrentIndex(self, index=None):
|
||||
if index is None or type(index) == bool:
|
||||
index = self.currentIndex()
|
||||
|
@ -81,6 +108,14 @@ class treeView(QTreeView, dndView, outlineBasics):
|
|||
dndView.dragMoveEvent(self, event)
|
||||
QTreeView.dragMoveEvent(self, event)
|
||||
|
||||
def mousePressEvent(self, event):
|
||||
if event.button() == Qt.RightButton:
|
||||
# Capture mouse press so that selection doesn't change
|
||||
# on right click
|
||||
pass
|
||||
else:
|
||||
QTreeView.mousePressEvent(self, event)
|
||||
|
||||
def mouseReleaseEvent(self, event):
|
||||
QTreeView.mouseReleaseEvent(self, event)
|
||||
outlineBasics.mouseReleaseEvent(self, event)
|
Loading…
Reference in a new issue