diff --git a/manuskript/mainWindow.py b/manuskript/mainWindow.py index 6a01d1bb..f72bd8b5 100644 --- a/manuskript/mainWindow.py +++ b/manuskript/mainWindow.py @@ -383,6 +383,9 @@ class MainWindow(QMainWindow, Ui_MainWindow): def openIndex(self, index): self.treeRedacOutline.setCurrentIndex(index) + def openIndexes(self, indexes, newTab=True): + self.mainEditor.openIndexes(indexes, newTab=True) + ############################################################################### # LOAD AND SAVE ############################################################################### diff --git a/manuskript/ui/importers/importer.py b/manuskript/ui/importers/importer.py index 4aaad994..72152f36 100644 --- a/manuskript/ui/importers/importer.py +++ b/manuskript/ui/importers/importer.py @@ -12,6 +12,7 @@ from manuskript.ui.importers.importer_ui import Ui_importer from manuskript.ui.importers.generalSettings import generalSettings from manuskript.ui import style from manuskript import importer +from manuskript.models.outlineModel import outlineModel class importerDialog(QWidget, Ui_importer): @@ -157,4 +158,4 @@ class importerDialog(QWidget, Ui_importer): def preview(self): # TODO - pass + previewModel = outlineModel(self) diff --git a/manuskript/ui/importers/importer_ui.py b/manuskript/ui/importers/importer_ui.py index 7d393291..44afddc1 100644 --- a/manuskript/ui/importers/importer_ui.py +++ b/manuskript/ui/importers/importer_ui.py @@ -80,6 +80,10 @@ class Ui_importer(object): self.splitter_2 = QtWidgets.QSplitter(self.grpPreview) self.splitter_2.setOrientation(QtCore.Qt.Horizontal) self.splitter_2.setObjectName("splitter_2") + self.tree = treeView(self.splitter_2) + self.tree.setObjectName("tree") + self.editor = mainEditor(self.splitter_2) + self.editor.setObjectName("editor") self.verticalLayout_2.addWidget(self.splitter_2) self.verticalLayout.addWidget(self.splitter) @@ -97,3 +101,5 @@ class Ui_importer(object): self.grpSettings.setTitle(_translate("importer", "Settings")) self.grpPreview.setTitle(_translate("importer", "Preview")) +from manuskript.ui.editors.mainEditor import mainEditor +from manuskript.ui.views.treeView import treeView diff --git a/manuskript/ui/importers/importer_ui.ui b/manuskript/ui/importers/importer_ui.ui index 404db62e..afb053e9 100644 --- a/manuskript/ui/importers/importer_ui.ui +++ b/manuskript/ui/importers/importer_ui.ui @@ -178,6 +178,8 @@ Qt::Horizontal + + @@ -186,6 +188,19 @@ + + + treeView + QTreeView +
manuskript.ui.views.treeView.h
+
+ + mainEditor + QWidget +
manuskript.ui.editors.mainEditor.h
+ 1 +
+
diff --git a/manuskript/ui/views/outlineBasics.py b/manuskript/ui/views/outlineBasics.py index 8c21a8ec..7b12f794 100644 --- a/manuskript/ui/views/outlineBasics.py +++ b/manuskript/ui/views/outlineBasics.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # --!-- coding: utf8 --!-- from PyQt5.QtCore import Qt, QSignalMapper, QSize -from PyQt5.QtGui import QIcon +from PyQt5.QtGui import QIcon, QCursor from PyQt5.QtWidgets import QAbstractItemView, qApp, QMenu, QAction from PyQt5.QtWidgets import QListWidget, QWidgetAction, QListWidgetItem, QLineEdit @@ -14,7 +14,7 @@ from manuskript.models.outlineModel import outlineItem class outlineBasics(QAbstractItemView): def __init__(self, parent=None): - pass + self._indexesToOpen = None def getSelection(self): sel = [] @@ -39,11 +39,44 @@ class outlineBasics(QAbstractItemView): menu = QMenu(self) - # Open items - self.actOpen = QAction(QIcon.fromTheme("go-right"), qApp.translate("outlineBasics", "Open Item"), menu) + # Get index under cursor + pos = self.viewport().mapFromGlobal(QCursor.pos()) + mouseIndex = self.indexAt(pos) + + # Get index's title + if mouseIndex.isValid(): + title = mouseIndex.internalPointer().title() + + elif self.rootIndex().parent().isValid(): + # mouseIndex is the background of an item, so we check the parent + mouseIndex = self.rootIndex().parent() + title = mouseIndex.internalPointer().title() + + else: + title = self.tr("Root") + + if len(title) > 25: + title = title[:25] + "…" + + # Open Item action + self.actOpen = QAction(QIcon.fromTheme("go-right"), + qApp.translate("outlineBasics", "Open {}".format(title)), + menu) self.actOpen.triggered.connect(self.openItem) menu.addAction(self.actOpen) + # Open item(s) in new tab + 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(title) + self._indexesToOpen = [mouseIndex] + + self.actNewTab = QAction(QIcon.fromTheme("go-right"), actionTitle, menu) + self.actNewTab.triggered.connect(self.openItemsInNewTabs) + menu.addAction(self.actNewTab) + menu.addSeparator() # Rename / add / remove items @@ -185,7 +218,6 @@ class outlineBasics(QAbstractItemView): self.actAddText.setEnabled(False) if len(sel) == 0: - self.actOpen.setEnabled(False) self.actCopy.setEnabled(False) self.actCut.setEnabled(False) self.actRename.setEnabled(False) @@ -201,10 +233,15 @@ class outlineBasics(QAbstractItemView): return menu def openItem(self): - idx = self.currentIndex() + #idx = self.currentIndex() + idx = self._indexesToOpen[0] from manuskript.functions import MW MW.openIndex(idx) + def openItemsInNewTabs(self): + from manuskript.functions import MW + MW.openIndexes(self._indexesToOpen) + def rename(self): if len(self.getSelection()) == 1: index = self.currentIndex() diff --git a/manuskript/ui/views/treeView.py b/manuskript/ui/views/treeView.py index 53a063f7..4e28d1c9 100644 --- a/manuskript/ui/views/treeView.py +++ b/manuskript/ui/views/treeView.py @@ -31,30 +31,13 @@ class treeView(QTreeView, dndView, outlineBasics): def makePopupMenu(self): menu = outlineBasics.makePopupMenu(self) - first = menu.actions()[0] + first = menu.actions()[3] # Open item in new tab - sel = self.selectedIndexes() + #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 mouseIndex.isValid(): # index = self.currentIndex() @@ -83,9 +66,6 @@ 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._indexesToOpen[0] # self.currentIndex()