diff --git a/manuskript/ui/editors/editorWidget.py b/manuskript/ui/editors/editorWidget.py
index 75abb568..60ee4008 100644
--- a/manuskript/ui/editors/editorWidget.py
+++ b/manuskript/ui/editors/editorWidget.py
@@ -55,6 +55,8 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
self.mw = mainWindow()
self._tabWidget = None # set by mainEditor on creation
+ self._model = None
+
# def setModel(self, model):
# self._model = model
# self.setView()
@@ -83,8 +85,10 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
if r.isValid():
count = r.internalPointer().childCount()
+ elif self._model:
+ count = self._model.rootItem.childCount()
else:
- count = self.mw.mdlOutline.rootItem.childCount()
+ count = 0
for c in range(count):
self.corkView.itemDelegate().sizeHintChanged.emit(r.child(c, 0))
@@ -102,8 +106,10 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
if self.currentIndex.isValid():
item = self.currentIndex.internalPointer()
+ elif self._model:
+ item = self._model.rootItem
else:
- item = self.mw.mdlOutline.rootItem
+ return
i = self._tabWidget.indexOf(self)
self._tabWidget.setTabText(i, item.title())
@@ -202,7 +208,7 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
self.txtEdits = []
- if item != self.mw.mdlOutline.rootItem:
+ if item != self._model.rootItem:
addTitle(item)
addChildren(item)
@@ -211,7 +217,7 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
elif item and item.isFolder() and self.folderView == "cork":
self.stack.setCurrentIndex(2)
- self.corkView.setModel(self.mw.mdlOutline)
+ self.corkView.setModel(self._model)
self.corkView.setRootIndex(self.currentIndex)
try:
self.corkView.selectionModel().selectionChanged.connect(mainWindow().redacMetadata.selectionChanged, AUC)
@@ -225,7 +231,7 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
self.outlineView.setModelCharacters(mainWindow().mdlCharacter)
self.outlineView.setModelLabels(mainWindow().mdlLabels)
self.outlineView.setModelStatus(mainWindow().mdlStatus)
- self.outlineView.setModel(self.mw.mdlOutline)
+ self.outlineView.setModel(self._model)
self.outlineView.setRootIndex(self.currentIndex)
try:
@@ -242,9 +248,9 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
self.txtRedacText.setCurrentModelIndex(QModelIndex())
try:
- self.mw.mdlOutline.dataChanged.connect(self.modelDataChanged, AUC)
- self.mw.mdlOutline.rowsInserted.connect(self.updateIndexFromID, AUC)
- self.mw.mdlOutline.rowsRemoved.connect(self.updateIndexFromID, AUC)
+ self._model.dataChanged.connect(self.modelDataChanged, AUC)
+ self._model.rowsInserted.connect(self.updateIndexFromID, AUC)
+ self._model.rowsRemoved.connect(self.updateIndexFromID, AUC)
#self.mw.mdlOutline.rowsAboutToBeRemoved.connect(self.rowsAboutToBeRemoved, AUC)
except TypeError:
pass
@@ -254,8 +260,8 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
def setCurrentModelIndex(self, index=None):
if index.isValid():
self.currentIndex = index
- self.currentID = self.mw.mdlOutline.ID(index)
- # self._model = index.model()
+ self._model = index.model()
+ self.currentID = self._model.ID(index)
else:
self.currentIndex = QModelIndex()
self.currentID = None
@@ -267,7 +273,7 @@ class editorWidget(QWidget, Ui_editorWidget_ui):
Index might have changed (through drag an drop), so we keep current
item's ID and update index. Item might have been deleted too.
"""
- idx = self.mw.mdlOutline.getIndexByID(self.currentID)
+ idx = self._model.getIndexByID(self.currentID)
# If we have an ID but the ID does not exist, it has been deleted
if self.currentID and idx == QModelIndex():
diff --git a/manuskript/ui/importers/generalSettings.py b/manuskript/ui/importers/generalSettings.py
index 7dd96fc0..17d7bcd6 100644
--- a/manuskript/ui/importers/generalSettings.py
+++ b/manuskript/ui/importers/generalSettings.py
@@ -3,7 +3,7 @@
import json
import os
-from PyQt5.QtCore import Qt, QSize, QSortFilterProxyModel
+from PyQt5.QtCore import Qt, QSize, QSortFilterProxyModel, QModelIndex
from PyQt5.QtGui import QIcon, QFontMetrics, QFont
from PyQt5.QtWidgets import QWidget, QTableWidgetItem, QListWidgetItem, QTreeView
@@ -30,8 +30,6 @@ class generalSettings(QWidget, Ui_generalSettings):
self.treeGeneralParent.setCurrentIndex(self.getParentIndex())
self.chkGeneralParent.toggled.connect(self.treeGeneralParent.setVisible)
self.treeGeneralParent.hide()
- self.treeGeneralParent.selectionModel().currentChanged.connect(
- lambda: print(self.treeGeneralParent.currentIndex().row()))
def getParentIndex(self):
"""
@@ -44,3 +42,20 @@ class generalSettings(QWidget, Ui_generalSettings):
idx = self.mw.treeRedacOutline.currentIndex()
return idx
+ def importUnderID(self):
+ """
+ Returns the ID of the item selected in treeGeneralParent, if checked.
+ """
+ if self.chkGeneralParent.isChecked():
+ idx = self.treeGeneralParent.currentIndex()
+ # We used a filter proxy model, so we have to map back to source
+ # to get an index from mdlOutline
+ idx = self.treeGeneralParent.model().mapToSource(idx)
+ if idx.isValid():
+ return idx.internalPointer().ID()
+
+ return "0" # 0 is root's ID
+
+ def trimLongTitles(self):
+ return self.chkGeneralTrimTitles.isChecked()
+
diff --git a/manuskript/ui/importers/generalSettings_ui.py b/manuskript/ui/importers/generalSettings_ui.py
index 0faed4cd..a07c172d 100644
--- a/manuskript/ui/importers/generalSettings_ui.py
+++ b/manuskript/ui/importers/generalSettings_ui.py
@@ -11,7 +11,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_generalSettings(object):
def setupUi(self, generalSettings):
generalSettings.setObjectName("generalSettings")
- generalSettings.resize(289, 396)
+ generalSettings.resize(267, 401)
self.verticalLayout_2 = QtWidgets.QVBoxLayout(generalSettings)
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_2.setSpacing(10)
@@ -28,30 +28,30 @@ class Ui_generalSettings(object):
"}")
self.toolBox.setObjectName("toolBox")
self.general = QtWidgets.QWidget()
- self.general.setGeometry(QtCore.QRect(0, 0, 289, 373))
+ self.general.setGeometry(QtCore.QRect(0, 0, 267, 378))
self.general.setObjectName("general")
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.general)
- self.verticalLayout_5.setContentsMargins(0, 0, 0, 0)
+ self.verticalLayout_5.setContentsMargins(6, 6, 6, 6)
self.verticalLayout_5.setObjectName("verticalLayout_5")
self.formLayout_4 = QtWidgets.QFormLayout()
self.formLayout_4.setRowWrapPolicy(QtWidgets.QFormLayout.WrapLongRows)
self.formLayout_4.setObjectName("formLayout_4")
- self.chkGeneralParent = QtWidgets.QCheckBox(self.general)
- self.chkGeneralParent.setObjectName("chkGeneralParent")
- self.formLayout_4.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.chkGeneralParent)
self.chkGeneralSplitScenes = QtWidgets.QCheckBox(self.general)
self.chkGeneralSplitScenes.setObjectName("chkGeneralSplitScenes")
- self.formLayout_4.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.chkGeneralSplitScenes)
+ self.formLayout_4.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.chkGeneralSplitScenes)
self.txtGeneralSplitScenes = QtWidgets.QLineEdit(self.general)
self.txtGeneralSplitScenes.setObjectName("txtGeneralSplitScenes")
- self.formLayout_4.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.txtGeneralSplitScenes)
+ self.formLayout_4.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.txtGeneralSplitScenes)
+ self.chkGeneralTrimTitles = QtWidgets.QCheckBox(self.general)
+ self.chkGeneralTrimTitles.setObjectName("chkGeneralTrimTitles")
+ self.formLayout_4.setWidget(3, QtWidgets.QFormLayout.SpanningRole, self.chkGeneralTrimTitles)
self.treeGeneralParent = QtWidgets.QTreeView(self.general)
self.treeGeneralParent.setHeaderHidden(True)
self.treeGeneralParent.setObjectName("treeGeneralParent")
- self.formLayout_4.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.treeGeneralParent)
- self.chkGeneralTrimTitles = QtWidgets.QCheckBox(self.general)
- self.chkGeneralTrimTitles.setObjectName("chkGeneralTrimTitles")
- self.formLayout_4.setWidget(2, QtWidgets.QFormLayout.SpanningRole, self.chkGeneralTrimTitles)
+ self.formLayout_4.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.treeGeneralParent)
+ self.chkGeneralParent = QtWidgets.QCheckBox(self.general)
+ self.chkGeneralParent.setObjectName("chkGeneralParent")
+ self.formLayout_4.setWidget(0, QtWidgets.QFormLayout.SpanningRole, self.chkGeneralParent)
self.verticalLayout_5.addLayout(self.formLayout_4)
self.toolBox.addItem(self.general, "")
self.verticalLayout_2.addWidget(self.toolBox)
@@ -64,8 +64,8 @@ class Ui_generalSettings(object):
def retranslateUi(self, generalSettings):
_translate = QtCore.QCoreApplication.translate
generalSettings.setWindowTitle(_translate("generalSettings", "Form"))
- self.chkGeneralParent.setText(_translate("generalSettings", "Import under:"))
self.chkGeneralSplitScenes.setText(_translate("generalSettings", "Split scenes at:"))
self.chkGeneralTrimTitles.setText(_translate("generalSettings", "Trim long titles (> 32 chars)"))
+ self.chkGeneralParent.setText(_translate("generalSettings", "Import under:"))
self.toolBox.setItemText(self.toolBox.indexOf(self.general), _translate("generalSettings", "General"))
diff --git a/manuskript/ui/importers/generalSettings_ui.ui b/manuskript/ui/importers/generalSettings_ui.ui
index 45fe6efd..4bc2c4ad 100644
--- a/manuskript/ui/importers/generalSettings_ui.ui
+++ b/manuskript/ui/importers/generalSettings_ui.ui
@@ -6,8 +6,8 @@
0
0
- 289
- 396
+ 267
+ 401
@@ -53,47 +53,59 @@ QToolBox::tab:selected, QToolBox::tab:hover{
0
0
- 289
- 373
+ 267
+ 378
General
+
+ 6
+
+
+ 6
+
+
+ 6
+
+
+ 6
+
-
QFormLayout::WrapLongRows
-
-
-
-
- Import under:
-
-
-
- -
+
-
Split scenes at:
- -
+
-
- -
+
-
+
+
+ Trim long titles (> 32 chars)
+
+
+
+ -
true
- -
-
+
-
+
- Trim long titles (> 32 chars)
+ Import under:
diff --git a/manuskript/ui/importers/importer.py b/manuskript/ui/importers/importer.py
index ea527c4e..721d0458 100644
--- a/manuskript/ui/importers/importer.py
+++ b/manuskript/ui/importers/importer.py
@@ -3,7 +3,7 @@
import json
import os
-from PyQt5.QtCore import Qt
+from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtGui import QBrush, QColor, QIcon
from PyQt5.QtWidgets import QWidget, QFileDialog
@@ -13,6 +13,7 @@ from manuskript.ui.importers.generalSettings import generalSettings
from manuskript.ui import style
from manuskript import importer
from manuskript.models.outlineModel import outlineModel
+from manuskript.enums import Outline
class importerDialog(QWidget, Ui_importer):
@@ -35,6 +36,8 @@ class importerDialog(QWidget, Ui_importer):
self.mw = mw
self.fileName = ""
self.setStyleSheet(style.mainWindowSS())
+ self.tree.setStyleSheet("QTreeView{background:transparent;}")
+ self.editor.setStyleSheet("QWidget{background:transparent;}")
# Register importFormats:
self.importers = importer.importers
@@ -49,7 +52,11 @@ class importerDialog(QWidget, Ui_importer):
self.cmbImporters.currentTextChanged.connect(self.updateSettings)
#self.setFileName("")
- self.setFileName("/home/olivier/Dropbox/Documents/Travail/Geekeries/Python/PyCharmProjects/manuskript/test-projects/IMPORTS/End Plan 2.opml")
+ QTimer.singleShot(50, lambda:
+ self.cmbImporters.setCurrentText("OPML"))
+ QTimer.singleShot(50, lambda:
+ self.setFileName("/home/olivier/Dropbox/Documents/Travail/Geekeries/Python/PyCharmProjects/manuskript/test-projects/IMPORTS/End Plan 2.opml")
+ )
############################################################################
# Combobox / Formats
@@ -134,8 +141,13 @@ class importerDialog(QWidget, Ui_importer):
F = self.currentFormat()
self.settingsWidget = generalSettings()
self.setGroupWidget(self.grpSettings, self.settingsWidget)
+ self.grpSettings.setMinimumWidth(200)
#TODO: custom format widget
+ #toolBox = self.settingsWidget.toolBox
+ #w = QWidget()
+ #toolBox.insertItem(toolBox.count(), w, "Pandoc")
+ #See pandoc's abstractPlainText
def setGroupWidget(self, group, widget):
"""
@@ -163,19 +175,40 @@ class importerDialog(QWidget, Ui_importer):
# Temporary outlineModel
previewModel = outlineModel(self)
+ previewModel.loadFromXML(
+ self.mw.mdlOutline.saveToXML(),
+ fromString=True)
+
+ # Parent item
+ ID = self.settingsWidget.importUnderID()
+ parentItem = previewModel.getItemByID(ID)
# Calling the importer in a temporary model
items = F.startImport(self.fileName,
- previewModel.rootItem,
+ parentItem,
self.settingsWidget)
# Do transformations
- # TODO
+ # ------------------
+
+ # Trim long titles
+ if self.settingsWidget.trimLongTitles():
+ def trim(item):
+ if len(item.title()) > 32:
+ item.setData(Outline.title.value, item.title()[:32])
+ for c in item.children():
+ trim(c)
+ for i in items:
+ trim(i)
if items:
self.tree.setModel(previewModel)
for i in range(1, previewModel.columnCount()):
self.tree.hideColumn(i)
+ self.tree.selectionModel().currentChanged.connect(self.editor.setCurrentModelIndex)
+ self.previewSplitter.setStretchFactor(0, 10)
+ self.previewSplitter.setStretchFactor(1, 40)
+
def startImport(self):
pass
diff --git a/manuskript/ui/importers/importer_ui.py b/manuskript/ui/importers/importer_ui.py
index 67f49db2..d23c8e4e 100644
--- a/manuskript/ui/importers/importer_ui.py
+++ b/manuskript/ui/importers/importer_ui.py
@@ -11,7 +11,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_importer(object):
def setupUi(self, importer):
importer.setObjectName("importer")
- importer.resize(694, 489)
+ importer.resize(867, 560)
self.verticalLayout = QtWidgets.QVBoxLayout(importer)
self.verticalLayout.setObjectName("verticalLayout")
self.horizontalLayout = QtWidgets.QHBoxLayout()
@@ -64,6 +64,7 @@ class Ui_importer(object):
self.verticalLayout.addLayout(self.horizontalLayout)
self.splitter = QtWidgets.QSplitter(importer)
self.splitter.setOrientation(QtCore.Qt.Horizontal)
+ self.splitter.setChildrenCollapsible(False)
self.splitter.setObjectName("splitter")
self.grpSettings = QtWidgets.QGroupBox(self.splitter)
self.grpSettings.setObjectName("grpSettings")
@@ -77,16 +78,16 @@ class Ui_importer(object):
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_2.setSpacing(0)
self.verticalLayout_2.setObjectName("verticalLayout_2")
- self.splitter_2 = QtWidgets.QSplitter(self.grpPreview)
- self.splitter_2.setOrientation(QtCore.Qt.Horizontal)
- self.splitter_2.setObjectName("splitter_2")
- self.tree = QtWidgets.QTreeView(self.splitter_2)
+ self.previewSplitter = QtWidgets.QSplitter(self.grpPreview)
+ self.previewSplitter.setOrientation(QtCore.Qt.Horizontal)
+ self.previewSplitter.setObjectName("previewSplitter")
+ self.tree = QtWidgets.QTreeView(self.previewSplitter)
self.tree.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
self.tree.setHeaderHidden(True)
self.tree.setObjectName("tree")
- self.editor = mainEditor(self.splitter_2)
+ self.editor = editorWidget(self.previewSplitter)
self.editor.setObjectName("editor")
- self.verticalLayout_2.addWidget(self.splitter_2)
+ self.verticalLayout_2.addWidget(self.previewSplitter)
self.verticalLayout.addWidget(self.splitter)
self.retranslateUi(importer)
@@ -103,4 +104,4 @@ 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.editors.editorWidget import editorWidget
diff --git a/manuskript/ui/importers/importer_ui.ui b/manuskript/ui/importers/importer_ui.ui
index 0281cd06..a7f2f907 100644
--- a/manuskript/ui/importers/importer_ui.ui
+++ b/manuskript/ui/importers/importer_ui.ui
@@ -6,8 +6,8 @@
0
0
- 694
- 489
+ 867
+ 560
@@ -131,6 +131,9 @@
Qt::Horizontal
+
+ false
+
Settings
@@ -174,7 +177,7 @@
0
-
-
+
Qt::Horizontal
@@ -186,7 +189,7 @@
true
-
+
@@ -197,9 +200,9 @@
- mainEditor
+ editorWidget
QWidget
- manuskript.ui.editors.mainEditor.h
+ manuskript.ui.editors.editorWidget.h
1