6 """ |
6 """ |
7 Module implementing the bookmarks manager. |
7 Module implementing the bookmarks manager. |
8 """ |
8 """ |
9 |
9 |
10 import os |
10 import os |
|
11 import tempfile |
11 |
12 |
12 from PyQt4.QtCore import pyqtSignal, Qt, QT_TRANSLATE_NOOP, QObject, QFile, QByteArray, \ |
13 from PyQt4.QtCore import pyqtSignal, Qt, QT_TRANSLATE_NOOP, QObject, QFile, QByteArray, \ |
13 QBuffer, QIODevice, QXmlStreamReader, QDate, QFileInfo, QUrl |
14 QBuffer, QIODevice, QXmlStreamReader, QDate, QFileInfo, QUrl |
14 from PyQt4.QtGui import QUndoStack, QUndoCommand, QApplication |
15 from PyQt4.QtGui import QUndoStack, QUndoCommand, QApplication |
15 from PyQt4.QtWebKit import QWebPage |
16 from PyQt4.QtWebKit import QWebPage |
345 return |
346 return |
346 |
347 |
347 reader = XbelReader() |
348 reader = XbelReader() |
348 importRootNode = None |
349 importRootNode = None |
349 if fileName.endswith(".html"): |
350 if fileName.endswith(".html"): |
350 inFile = QFile(fileName) |
351 try: |
351 inFile.open(QIODevice.ReadOnly) |
352 f = open(fileName, "r") |
352 if inFile.openMode == QIODevice.NotOpen: |
353 contents = f.read() |
|
354 f.close() |
|
355 except IOError: |
353 E5MessageBox.warning(None, |
356 E5MessageBox.warning(None, |
354 self.trUtf8("Import Bookmarks"), |
357 self.trUtf8("Import Bookmarks"), |
355 self.trUtf8("""Error opening bookmarks file <b>{0}</b>.""")\ |
358 self.trUtf8("""Error opening bookmarks file <b>{0}</b>.""")\ |
356 .format(fileName)) |
359 .format(fileName)) |
357 return |
360 return |
358 |
361 |
359 webpage = QWebPage() |
362 webpage = QWebPage() |
360 webpage.mainFrame().setHtml(inFile.readAll()) |
363 webpage.mainFrame().setHtml(contents) |
361 result = webpage.mainFrame().evaluateJavaScript(extract_js) |
364 result = webpage.mainFrame().evaluateJavaScript(extract_js) |
362 buffer_ = QBuffer(result) |
365 |
363 buffer_.open(QIODevice.ReadOnly) |
366 fd, name = tempfile.mkstemp(text=True) |
364 importRootNode = reader.read(buffer_) |
367 f = os.fdopen(fd, "w") |
|
368 f.write(result) |
|
369 f.close() |
|
370 importRootNode = reader.read(name) |
|
371 os.remove(name) |
365 else: |
372 else: |
366 importRootNode = reader.read(fileName) |
373 importRootNode = reader.read(fileName) |
367 |
374 |
368 if reader.error() != QXmlStreamReader.NoError: |
375 if reader.error() != QXmlStreamReader.NoError: |
369 E5MessageBox.warning(None, |
376 E5MessageBox.warning(None, |
370 self.trUtf8("Import Bookmarks"), |
377 self.trUtf8("Import Bookmarks"), |
371 self.trUtf8("""Error when importing bookmarks on""" |
378 self.trUtf8("""Error when importing bookmarks on""" |
372 """ line {0}, column [1}:\n{2}""")\ |
379 """ line {0}, column {1}:\n{2}""")\ |
373 .format(reader.lineNumber(), |
380 .format(reader.lineNumber(), |
374 reader.columnNumber(), |
381 reader.columnNumber(), |
375 reader.errorString())) |
382 reader.errorString())) |
376 return |
383 return |
377 |
384 |