mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-05-14 01:42:28 +12:00
Fixes #213: Program Crash on Import with images
This commit is contained in:
parent
67fa7548bc
commit
ed864eab1e
|
@ -27,6 +27,7 @@ class abstractImporter:
|
|||
engine = "Internal"
|
||||
|
||||
def __init__(self):
|
||||
self.settingsList = [] # Keep the name of the settings in order
|
||||
self.settings = {}
|
||||
|
||||
def startImport(self, filePath, parentItem, settingsWidget):
|
||||
|
@ -73,6 +74,7 @@ class abstractImporter:
|
|||
def addSetting(self, name, type, label, widget=None, default=None,
|
||||
tooltip=None, min=None, max=None, vals=None, suffix=""):
|
||||
|
||||
self.settingsList.append(name)
|
||||
self.settings[name] = self.setting(name, type, label, widget, default,
|
||||
tooltip, min, max, vals, suffix)
|
||||
|
||||
|
@ -84,6 +86,15 @@ class abstractImporter:
|
|||
if name in self.settings:
|
||||
return self.settings[name]
|
||||
|
||||
def addSettingsTo(self, widget):
|
||||
"""
|
||||
Adds all the settings to the given widget. Assume that the settings
|
||||
have not been called yet, so calling `.widget()` will create their
|
||||
widgets.
|
||||
"""
|
||||
for name in self.settingsList:
|
||||
self.settings[name].widget(widget)
|
||||
|
||||
|
||||
class setting:
|
||||
"""
|
||||
|
|
|
@ -24,7 +24,7 @@ class folderImporter(abstractImporter):
|
|||
Imports from a folder.
|
||||
"""
|
||||
ext = self.getSetting("ext").value()
|
||||
ext = [e.strip().replace("*", "") for e in ext.split(",")]
|
||||
ext = [e.strip().replace("*", "").lower() for e in ext.split(",")]
|
||||
|
||||
sorting = self.getSetting("sortItems").value()
|
||||
|
||||
|
@ -42,11 +42,16 @@ class folderImporter(abstractImporter):
|
|||
|
||||
def addFile(f):
|
||||
fName, fExt = os.path.splitext(f)
|
||||
if fExt in ext:
|
||||
child = outlineItem(title=fName, _type="md", parent=item)
|
||||
with open(os.path.join(dirpath, f), "r") as fr:
|
||||
child._data[Outline.text] = fr.read()
|
||||
items.append(child)
|
||||
if fExt.lower() in ext:
|
||||
try:
|
||||
with open(os.path.join(dirpath, f), "r") as fr:
|
||||
content = fr.read()
|
||||
child = outlineItem(title=fName, _type="md", parent=item)
|
||||
child._data[Outline.text] = content
|
||||
items.append(child)
|
||||
except UnicodeDecodeError:
|
||||
# Probably not a text file
|
||||
pass
|
||||
|
||||
def addFolder(d):
|
||||
child = outlineItem(title=d, parent=item)
|
||||
|
@ -93,10 +98,11 @@ class folderImporter(abstractImporter):
|
|||
#group = cls.addPage(widget, "Folder import")
|
||||
|
||||
self.addSetting("info", "label",
|
||||
qApp.translate("Import", """<b>Info:</b> Imports a whole
|
||||
qApp.translate("Import", """<p><b>Info:</b> Imports a whole
|
||||
directory structure. Folders are added as folders, and
|
||||
plaintext documents within (you chose which ones by extension)
|
||||
are added as scene.<br/> """))
|
||||
are added as scene.</p>
|
||||
<p>Only text files are supported (not images, binary or others).</p>"""))
|
||||
|
||||
self.addSetting("ext", "text",
|
||||
qApp.translate("Import", "Include only those extensions:"),
|
||||
|
@ -111,8 +117,7 @@ class folderImporter(abstractImporter):
|
|||
qApp.translate("Import", "Import folder then files"),
|
||||
default=True),
|
||||
|
||||
for s in self.settings:
|
||||
self.settings[s].widget(group)
|
||||
self.addSettingsTo(group)
|
||||
|
||||
return widget
|
||||
|
||||
|
|
Loading…
Reference in a new issue