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 ed864eab1e
2 changed files with 26 additions and 10 deletions

View file

@ -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:
"""

View file

@ -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/>&nbsp;"""))
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