Helpviewer/Bookmarks/BookmarksManager.py

changeset 1713
56fdde8a2441
parent 1626
a77c8ea8582c
child 1729
66b9dc45f2bd
--- a/Helpviewer/Bookmarks/BookmarksManager.py	Sat Mar 17 13:03:30 2012 +0100
+++ b/Helpviewer/Bookmarks/BookmarksManager.py	Sun Mar 18 10:07:28 2012 +0100
@@ -11,8 +11,7 @@
 
 from PyQt4.QtCore import pyqtSignal, Qt, QT_TRANSLATE_NOOP, QObject, QFile, QByteArray, \
     QBuffer, QIODevice, QXmlStreamReader, QDate, QFileInfo, QUrl
-from PyQt4.QtGui import QUndoStack, QUndoCommand, QApplication
-from PyQt4.QtWebKit import QWebPage
+from PyQt4.QtGui import QUndoStack, QUndoCommand, QApplication, QDialog
 
 from E5Gui import E5MessageBox, E5FileDialog
 
@@ -21,6 +20,7 @@
 from .DefaultBookmarks import DefaultBookmarks
 from .XbelReader import XbelReader
 from .XbelWriter import XbelWriter
+from .BookmarksImportDialog import BookmarksImportDialog
 
 from Utilities.AutoSaver import AutoSaver
 import Utilities
@@ -33,61 +33,6 @@
 StartMenu = 1
 StartToolBar = 2
 
-##########################################################################################
-
-extract_js = r"""
-function walk() {
-    var parent = arguments[0];
-    var indent = arguments[1];
-
-    var result = "";
-    var children = parent.childNodes;
-    var folderName = "";
-    var folded = "";
-    for (var i = 0; i < children.length; i++) {
-        var object = children.item(i);
-        if (object.nodeName == "HR") {
-            result += indent + "<separator/>\n";
-        }
-        if (object.nodeName == "H3") {
-            folderName = object.innerHTML;
-            folded = object.folded;
-            if (object.folded == undefined)
-                folded = "false";
-            else
-                folded = "true";
-        }
-        if (object.nodeName == "A") {
-            result += indent + "<bookmark href=\"" + encodeURI(object.href).replace(/&/g, '&amp;') + "\">\n";
-            result += indent + indent + "<title>" + object.innerHTML + "</title>\n";
-            result += indent + "</bookmark>\n";
-        }
-
-        var currentIndent = indent;
-        if (object.nodeName == "DL" && folderName != "") {
-            result += indent + "<folder folded=\"" + folded + "\">\n";
-            indent += "    ";
-            result += indent + "<title>" + folderName + "</title>\n";
-        }
-        result += walk(object, indent);
-        if (object.nodeName == "DL" && folderName != "") {
-            result += currentIndent + "</folder>\n";
-        }
-    }
-    return result;
-}
-
-var xbel = walk(document, "    ");
-
-if (xbel != "") {
-    xbel = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE xbel>\n<xbel version=\"1.0\">\n" + xbel + "</xbel>\n";
-}
-
-xbel;
-"""
-
-##########################################################################################
-
 
 class BookmarksManager(QObject):
     """
@@ -132,7 +77,8 @@
         self.__bookmarksModel = None
         self.__commands = QUndoStack()
     
-    def getFileName(self):
+    @classmethod
+    def getFileName(cls):
         """
         Public method to get the file name of the bookmark file.
         
@@ -359,54 +305,11 @@
         """
         Public method to import bookmarks.
         """
-        supportedFormats = [
-            self.trUtf8("XBEL bookmarks") + " (*.xbel *.xml)",
-            self.trUtf8("HTML Netscape bookmarks") + " (*.html *.htm)"
-        ]
-        
-        fileName = E5FileDialog.getOpenFileName(
-            None,
-            self.trUtf8("Import Bookmarks"),
-            "",
-            ";;".join(supportedFormats))
-        if not fileName:
-            return
-        
-        reader = XbelReader()
-        importRootNode = None
-        if fileName.endswith(".html"):
-            inFile = QFile(fileName)
-            inFile.open(QIODevice.ReadOnly)
-            if inFile.openMode == QIODevice.NotOpen:
-                E5MessageBox.warning(None,
-                    self.trUtf8("Import Bookmarks"),
-                    self.trUtf8("""Error opening bookmarks file <b>{0}</b>.""")\
-                        .format(fileName))
-                return
-            
-            webpage = QWebPage()
-            webpage.mainFrame().setHtml(inFile.readAll())
-            result = webpage.mainFrame().evaluateJavaScript(extract_js)
-            buffer_ = QBuffer(result)
-            buffer_.open(QIODevice.ReadOnly)
-            importRootNode = reader.read(buffer_)
-        else:
-            importRootNode = reader.read(fileName)
-        
-        if reader.error() != QXmlStreamReader.NoError:
-            E5MessageBox.warning(None,
-                self.trUtf8("Import Bookmarks"),
-                self.trUtf8("""Error when importing bookmarks on"""
-                            """ line {0}, column [1}:\n{2}""")\
-                    .format(reader.lineNumber(),
-                            reader.columnNumber(),
-                            reader.errorString()))
-            return
-        
-        importRootNode.setType(BookmarkNode.Folder)
-        importRootNode.title = self.trUtf8("Imported {0}")\
-            .format(QDate.currentDate().toString(Qt.SystemLocaleShortDate))
-        self.addBookmark(self.menu(), importRootNode)
+        dlg = BookmarksImportDialog()
+        if dlg.exec_() == QDialog.Accepted:
+            importRootNode = dlg.getImportedBookmarks()
+            if importRootNode is not None:
+                self.addBookmark(self.menu(), importRootNode)
     
     def exportBookmarks(self):
         """

eric ide

mercurial