Temporarily removing code for opening tar files. I'm going to add this later after I figure out a better way to handle this logic.
Former-commit-id: b91c824b15b380c8ce8987e31dc42ad75b44ffca
This commit is contained in:
parent
9e5cddea50
commit
efc9310da4
@ -30,7 +30,6 @@ import update
|
||||
class MainWindowReader(QtGui.QMainWindow, gen.reader_ui.Ui_MainWindowReader):
|
||||
class State:
|
||||
def __init__(self):
|
||||
self.archiveIndex = None
|
||||
self.filename = unicode()
|
||||
self.kanjiDefs = list()
|
||||
self.scanPosition = 0
|
||||
@ -47,13 +46,13 @@ class MainWindowReader(QtGui.QMainWindow, gen.reader_ui.Ui_MainWindowReader):
|
||||
self.textContent.mousePressEvent = self.onContentMousePress
|
||||
self.dockAnki.setEnabled(anki is not None)
|
||||
|
||||
self.addedFacts = list()
|
||||
self.facts = list()
|
||||
self.anki = anki
|
||||
self.closed = closed
|
||||
self.language = language
|
||||
self.preferences = preferences
|
||||
self.state = self.State()
|
||||
self.updateFinder = update.UpdateFinder()
|
||||
self.updater = update.UpdateFinder()
|
||||
self.zoom = 0
|
||||
|
||||
self.applyPreferences()
|
||||
@ -61,7 +60,7 @@ class MainWindowReader(QtGui.QMainWindow, gen.reader_ui.Ui_MainWindowReader):
|
||||
self.updateVocabDefs()
|
||||
self.updateKanjiDefs()
|
||||
|
||||
if filename:
|
||||
if filename is not None:
|
||||
self.openFile(filename)
|
||||
elif self.preferences['loadRecentFile']:
|
||||
filenames = self.preferences.recentFiles()
|
||||
@ -87,10 +86,10 @@ class MainWindowReader(QtGui.QMainWindow, gen.reader_ui.Ui_MainWindowReader):
|
||||
self.textKanjiSearch.returnPressed.connect(self.onKanjiDefSearchReturn)
|
||||
self.textVocabDefs.anchorClicked.connect(self.onVocabDefsAnchorClicked)
|
||||
self.textVocabSearch.returnPressed.connect(self.onVocabDefSearchReturn)
|
||||
self.updateFinder.updateResult.connect(self.onUpdaterSearchResult)
|
||||
self.updater.updateResult.connect(self.onUpdaterSearchResult)
|
||||
|
||||
if self.preferences['checkForUpdates']:
|
||||
self.updateFinder.start()
|
||||
self.updater.start()
|
||||
|
||||
|
||||
def applyPreferences(self):
|
||||
@ -160,7 +159,7 @@ class MainWindowReader(QtGui.QMainWindow, gen.reader_ui.Ui_MainWindowReader):
|
||||
filename = QtGui.QFileDialog.getOpenFileName(
|
||||
parent=self,
|
||||
caption='Select a file to open',
|
||||
filter='Text files (*.txt);;Archive files (*.bz2 *.gz *.tar *.tgz);;All files (*.*)'
|
||||
filter='Text files (*.txt);;All files (*.*)'
|
||||
)
|
||||
if filename:
|
||||
self.openFile(filename)
|
||||
@ -278,7 +277,7 @@ class MainWindowReader(QtGui.QMainWindow, gen.reader_ui.Ui_MainWindowReader):
|
||||
def onDefinitionDoubleClicked(self, item):
|
||||
if self.anki is not None:
|
||||
row = self.listDefinitions.row(item)
|
||||
self.anki.browseNote(self.addedFacts[row])
|
||||
self.anki.browseNote(self.facts[row])
|
||||
|
||||
|
||||
def onVisibilityChanged(self, visible):
|
||||
@ -308,9 +307,10 @@ class MainWindowReader(QtGui.QMainWindow, gen.reader_ui.Ui_MainWindowReader):
|
||||
|
||||
|
||||
def openFile(self, filename):
|
||||
filename = unicode(filename)
|
||||
try:
|
||||
content = self.openFileByExtension(filename)
|
||||
filename = unicode(filename)
|
||||
with open(filename) as fp:
|
||||
content = fp.read()
|
||||
except IOError:
|
||||
self.setStatus(u'Failed to load file {0}'.format(filename))
|
||||
QtGui.QMessageBox.critical(self, 'Yomichan', 'Cannot open file for read')
|
||||
@ -341,65 +341,6 @@ class MainWindowReader(QtGui.QMainWindow, gen.reader_ui.Ui_MainWindowReader):
|
||||
self.setWindowTitle(u'Yomichan - {0} ({1})'.format(os.path.basename(filename), encoding))
|
||||
|
||||
|
||||
def openFileByExtension(self, filename):
|
||||
self.clearArchiveFiles()
|
||||
|
||||
if tarfile.is_tarfile(filename):
|
||||
with tarfile.open(filename, 'r:*') as tp:
|
||||
files = [f for f in tp.getnames() if tp.getmember(f).isfile()]
|
||||
names = [f.decode('utf-8') for f in files]
|
||||
|
||||
self.updateArchiveFiles(filename, names)
|
||||
|
||||
content = unicode()
|
||||
if len(files) == 1:
|
||||
fp = tp.extractfile(files[0])
|
||||
content = fp.read()
|
||||
fp.close()
|
||||
elif len(files) > 1:
|
||||
index, ok = self.selectFileName(names)
|
||||
if ok:
|
||||
fp = tp.extractfile(files[index])
|
||||
content = fp.read()
|
||||
fp.close()
|
||||
self.state.archiveIndex = index
|
||||
else:
|
||||
self.state.archiveIndex = None
|
||||
with open(filename, 'rb') as fp:
|
||||
content = fp.read()
|
||||
|
||||
return content
|
||||
|
||||
|
||||
def selectFileName(self, names):
|
||||
if self.state.archiveIndex is not None:
|
||||
return self.state.archiveIndex, True
|
||||
|
||||
item, ok = QtGui.QInputDialog.getItem(
|
||||
self,
|
||||
'Yomichan',
|
||||
'Select file to open:',
|
||||
self.formatQStringList(names),
|
||||
current = 0,
|
||||
editable=False
|
||||
)
|
||||
|
||||
index, success = self.getItemIndex(item)
|
||||
return index - 1, ok and success
|
||||
|
||||
|
||||
def getItemIndex(self, item):
|
||||
return item.split('.').first().toInt()
|
||||
|
||||
|
||||
def formatQStringList(self, list):
|
||||
return [self.formatQString(i, x) for i, x in enumerate(list)]
|
||||
|
||||
|
||||
def formatQString(self, index, item):
|
||||
return QtCore.QString(str(index + 1) + '. ').append(QtCore.QString(item))
|
||||
|
||||
|
||||
def closeFile(self):
|
||||
self.setWindowTitle('Yomichan')
|
||||
self.textContent.setPlainText(unicode())
|
||||
@ -451,10 +392,10 @@ class MainWindowReader(QtGui.QMainWindow, gen.reader_ui.Ui_MainWindowReader):
|
||||
if factId is None:
|
||||
return False
|
||||
|
||||
self.addedFacts.append(factId)
|
||||
self.facts.append(factId)
|
||||
self.listDefinitions.addItem(markup['summary'])
|
||||
self.listDefinitions.setCurrentRow(self.listDefinitions.count() - 1)
|
||||
self.setStatus(u'Added fact {0}; {1} new fact(s) total'.format(markup['summary'], len(self.addedFacts)))
|
||||
self.setStatus(u'Added fact {0}; {1} new fact(s) total'.format(markup['summary'], len(self.facts)))
|
||||
|
||||
self.updateVocabDefs()
|
||||
self.updateKanjiDefs()
|
||||
@ -518,28 +459,6 @@ class MainWindowReader(QtGui.QMainWindow, gen.reader_ui.Ui_MainWindowReader):
|
||||
self.textContent.setTextCursor(cursor)
|
||||
|
||||
|
||||
def clearArchiveFiles(self):
|
||||
self.menuOpenArchive.clear()
|
||||
self.menuOpenArchive.setEnabled(False)
|
||||
|
||||
|
||||
def updateArchiveFiles(self, filename, names):
|
||||
self.menuOpenArchive.setEnabled(True)
|
||||
for name in self.formatQStringList(names):
|
||||
index, ok = self.getItemIndex(name)
|
||||
if ok:
|
||||
index = index - 1
|
||||
self.menuOpenArchive.addAction(name, lambda fn=filename, idx=index: self.openFileInArchive(fn, idx))
|
||||
else:
|
||||
self.menuOpenArchive.addAction(name, lambda fn=filename: self.openFile(fn))
|
||||
|
||||
|
||||
def openFileInArchive(self, filename, index):
|
||||
self.state.scanPosition = 0
|
||||
self.state.archiveIndex = index
|
||||
self.openFile(filename)
|
||||
|
||||
|
||||
def clearRecentFiles(self):
|
||||
self.preferences.clearRecentFiles()
|
||||
self.updateRecentFiles()
|
||||
|
Loading…
Reference in New Issue
Block a user