Fixes 213: Program Crash on Import with images

This commit is contained in:
Olivier Keshavjee 2017-11-14 08:24:43 +01:00
parent 67fa7548bc
commit 5207eddfbb
2 changed files with 26 additions and 10 deletions

View file

@ -27,6 +27,7 @@ class abstractImporter:
engine = "Internal" engine = "Internal"
def __init__(self): def __init__(self):
self.settingsList = [] # Keep the name of the settings in order
self.settings = {} self.settings = {}
def startImport(self, filePath, parentItem, settingsWidget): def startImport(self, filePath, parentItem, settingsWidget):
@ -73,6 +74,7 @@ class abstractImporter:
def addSetting(self, name, type, label, widget=None, default=None, def addSetting(self, name, type, label, widget=None, default=None,
tooltip=None, min=None, max=None, vals=None, suffix=""): tooltip=None, min=None, max=None, vals=None, suffix=""):
self.settingsList.append(name)
self.settings[name] = self.setting(name, type, label, widget, default, self.settings[name] = self.setting(name, type, label, widget, default,
tooltip, min, max, vals, suffix) tooltip, min, max, vals, suffix)
@ -84,6 +86,15 @@ class abstractImporter:
if name in self.settings: if name in self.settings:
return self.settings[name] 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: class setting:
""" """

View file

@ -24,7 +24,7 @@ class folderImporter(abstractImporter):
Imports from a folder. Imports from a folder.
""" """
ext = self.getSetting("ext").value() 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() sorting = self.getSetting("sortItems").value()
@ -42,11 +42,16 @@ class folderImporter(abstractImporter):
def addFile(f): def addFile(f):
fName, fExt = os.path.splitext(f) fName, fExt = os.path.splitext(f)
if fExt in ext: if fExt.lower() in ext:
child = outlineItem(title=fName, _type="md", parent=item) try:
with open(os.path.join(dirpath, f), "r") as fr: with open(os.path.join(dirpath, f), "r") as fr:
child._data[Outline.text] = fr.read() content = fr.read()
items.append(child) 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): def addFolder(d):
child = outlineItem(title=d, parent=item) child = outlineItem(title=d, parent=item)
@ -93,10 +98,11 @@ class folderImporter(abstractImporter):
#group = cls.addPage(widget, "Folder import") #group = cls.addPage(widget, "Folder import")
self.addSetting("info", "label", 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 directory structure. Folders are added as folders, and
plaintext documents within (you chose which ones by extension) plaintext documents within (you chose which ones by extension)
are added as scene.<br/>&nbsp;""")) are added as scene.</p>
<p>Only text files are supported (not images, binary or others).</p>"""))
self.addSetting("ext", "text", self.addSetting("ext", "text",
qApp.translate("Import", "Include only those extensions:"), qApp.translate("Import", "Include only those extensions:"),
@ -111,8 +117,7 @@ class folderImporter(abstractImporter):
qApp.translate("Import", "Import folder then files"), qApp.translate("Import", "Import folder then files"),
default=True), default=True),
for s in self.settings: self.addSettingsTo(group)
self.settings[s].widget(group)
return widget return widget