diff options
Diffstat (limited to 'examples/xml')
-rw-r--r-- | examples/xml/dombookmarks/doc/dombookmarks.png | bin | 0 -> 35779 bytes | |||
-rw-r--r-- | examples/xml/dombookmarks/doc/dombookmarks.rst | 12 | ||||
-rw-r--r-- | examples/xml/dombookmarks/dombookmarks.py | 277 | ||||
-rw-r--r-- | examples/xml/dombookmarks/dombookmarks.pyproject | 3 | ||||
-rw-r--r-- | examples/xml/dombookmarks/frank.xbel | 230 | ||||
-rw-r--r-- | examples/xml/dombookmarks/jennifer.xbel | 84 |
6 files changed, 163 insertions, 443 deletions
diff --git a/examples/xml/dombookmarks/doc/dombookmarks.png b/examples/xml/dombookmarks/doc/dombookmarks.png Binary files differnew file mode 100644 index 000000000..6a500238a --- /dev/null +++ b/examples/xml/dombookmarks/doc/dombookmarks.png diff --git a/examples/xml/dombookmarks/doc/dombookmarks.rst b/examples/xml/dombookmarks/doc/dombookmarks.rst new file mode 100644 index 000000000..558cd0fbb --- /dev/null +++ b/examples/xml/dombookmarks/doc/dombookmarks.rst @@ -0,0 +1,12 @@ +DOM Bookmarks Example +===================== + +Provides a reader for XML Bookmark Exchange Language files. + +The DOM Bookmarks example provides a reader for XML Bookmark Exchange Language +(XBEL) files that uses Qt's DOM-based XML API to read and parse the files. The +SAX Bookmarks example provides an alternative way to read this type of file. + +.. image:: dombookmarks.png + :width: 400 + :alt: DOM Bookmark Screenshot diff --git a/examples/xml/dombookmarks/dombookmarks.py b/examples/xml/dombookmarks/dombookmarks.py index 9a0168fde..a35aeb0f2 100644 --- a/examples/xml/dombookmarks/dombookmarks.py +++ b/examples/xml/dombookmarks/dombookmarks.py @@ -1,59 +1,27 @@ +# Copyright (C) 2013 Riverbank Computing Limited. +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause -############################################################################# -## -## Copyright (C) 2013 Riverbank Computing Limited. -## Copyright (C) 2016 The Qt Company Ltd. -## Contact: http://www.qt.io/licensing/ -## -## This file is part of the Qt for Python examples of the Qt Toolkit. -## -## $QT_BEGIN_LICENSE:BSD$ -## You may use this file under the terms of the BSD license as follows: -## -## "Redistribution and use in source and binary forms, with or without -## modification, are permitted provided that the following conditions are -## met: -## * Redistributions of source code must retain the above copyright -## notice, this list of conditions and the following disclaimer. -## * Redistributions in binary form must reproduce the above copyright -## notice, this list of conditions and the following disclaimer in -## the documentation and/or other materials provided with the -## distribution. -## * Neither the name of The Qt Company Ltd nor the names of its -## contributors may be used to endorse or promote products derived -## from this software without specific prior written permission. -## -## -## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -## -## $QT_END_LICENSE$ -## -############################################################################# - -"""PySide2 port of the xml/dombookmarks example from Qt v5.x""" - -from PySide2 import QtCore, QtGui, QtWidgets, QtXml - - -class MainWindow(QtWidgets.QMainWindow): +"""PySide6 port of the xml/dombookmarks example from Qt v5.x""" + +import sys + +from PySide6.QtCore import QDir, QFile, Qt, QTextStream +from PySide6.QtGui import QAction, QIcon, QKeySequence +from PySide6.QtWidgets import (QApplication, QFileDialog, QHeaderView, + QMainWindow, QMessageBox, QStyle, QTreeWidget, + QTreeWidgetItem) +from PySide6.QtXml import QDomDocument + + +class MainWindow(QMainWindow): def __init__(self, parent=None): - super(MainWindow, self).__init__(parent) + super().__init__(parent) - self.xbelTree = XbelTree() - self.setCentralWidget(self.xbelTree) + self._xbel_tree = XbelTree() + self.setCentralWidget(self._xbel_tree) - self.createActions() - self.createMenus() + self.create_menus() self.statusBar().showMessage("Ready") @@ -61,202 +29,193 @@ class MainWindow(QtWidgets.QMainWindow): self.resize(480, 320) def open(self): - fileName = QtWidgets.QFileDialog.getOpenFileName(self, - "Open Bookmark File", QtCore.QDir.currentPath(), - "XBEL Files (*.xbel *.xml)")[0] + file_name = QFileDialog.getOpenFileName(self, + "Open Bookmark File", QDir.currentPath(), + "XBEL Files (*.xbel *.xml)")[0] - if not fileName: + if not file_name: return - inFile = QtCore.QFile(fileName) - if not inFile.open(QtCore.QFile.ReadOnly | QtCore.QFile.Text): - QtWidgets.QMessageBox.warning(self, "DOM Bookmarks", - "Cannot read file %s:\n%s." % (fileName, inFile.errorString())) + in_file = QFile(file_name) + if not in_file.open(QFile.ReadOnly | QFile.Text): + reason = in_file.errorString() + QMessageBox.warning(self, "DOM Bookmarks", + f"Cannot read file {file_name}:\n{reason}.") return - if self.xbelTree.read(inFile): + if self._xbel_tree.read(in_file): self.statusBar().showMessage("File loaded", 2000) - def saveAs(self): - fileName = QtWidgets.QFileDialog.getSaveFileName(self, - "Save Bookmark File", QtCore.QDir.currentPath(), - "XBEL Files (*.xbel *.xml)")[0] + def save_as(self): + file_name = QFileDialog.getSaveFileName(self, + "Save Bookmark File", QDir.currentPath(), + "XBEL Files (*.xbel *.xml)")[0] - if not fileName: + if not file_name: return - outFile = QtCore.QFile(fileName) - if not outFile.open(QtCore.QFile.WriteOnly | QtCore.QFile.Text): - QtWidgets.QMessageBox.warning(self, "DOM Bookmarks", - "Cannot write file %s:\n%s." % (fileName, outFile.errorString())) + out_file = QFile(file_name) + if not out_file.open(QFile.WriteOnly | QFile.Text): + reason = out_file.errorString() + QMessageBox.warning(self, "DOM Bookmarks", + f"Cannot write file {file_name}:\n{reason}.") return - if self.xbelTree.write(outFile): + if self._xbel_tree.write(out_file): self.statusBar().showMessage("File saved", 2000) def about(self): - QtWidgets.QMessageBox.about(self, "About DOM Bookmarks", - "The <b>DOM Bookmarks</b> example demonstrates how to use Qt's " - "DOM classes to read and write XML documents.") - - def createActions(self): - self.openAct = QtWidgets.QAction("&Open...", self, shortcut="Ctrl+O", - triggered=self.open) - - self.saveAsAct = QtWidgets.QAction("&Save As...", self, shortcut="Ctrl+S", - triggered=self.saveAs) - - self.exitAct = QtWidgets.QAction("E&xit", self, shortcut="Ctrl+Q", - triggered=self.close) - - self.aboutAct = QtWidgets.QAction("&About", self, triggered=self.about) - - self.aboutQtAct = QtWidgets.QAction("About &Qt", self, - triggered=QtWidgets.qApp.aboutQt) - - def createMenus(self): - self.fileMenu = self.menuBar().addMenu("&File") - self.fileMenu.addAction(self.openAct) - self.fileMenu.addAction(self.saveAsAct) - self.fileMenu.addAction(self.exitAct) + QMessageBox.about(self, "About DOM Bookmarks", + "The <b>DOM Bookmarks</b> example demonstrates how to use Qt's " + "DOM classes to read and write XML documents.") + + def create_menus(self): + self._file_menu = self.menuBar().addMenu("&File") + self._file_menu.addAction(QAction("&Open...", self, + shortcut=QKeySequence( + Qt.CTRL | Qt.Key_O), triggered=self.open)) + self._file_menu.addAction(QAction("&Save As...", self, + shortcut=QKeySequence( + Qt.CTRL | Qt.Key_S), triggered=self.save_as)) + self._file_menu.addAction(QAction("E&xit", self, + shortcut=QKeySequence( + Qt.CTRL | Qt.Key_Q), triggered=self.close)) self.menuBar().addSeparator() - self.helpMenu = self.menuBar().addMenu("&Help") - self.helpMenu.addAction(self.aboutAct) - self.helpMenu.addAction(self.aboutQtAct) + self._help_menu = self.menuBar().addMenu("&Help") + self._help_menu.addAction(QAction("&About", self, triggered=self.about)) + self._help_menu.addAction(QAction("About &Qt", self, triggered=qApp.aboutQt)) # noqa: F821 -class XbelTree(QtWidgets.QTreeWidget): +class XbelTree(QTreeWidget): def __init__(self, parent=None): - super(XbelTree, self).__init__(parent) + super().__init__(parent) - self.header().setSectionResizeMode(QtWidgets.QHeaderView.Stretch) + self.header().setSectionResizeMode(QHeaderView.Stretch) self.setHeaderLabels(("Title", "Location")) - self.domDocument = QtXml.QDomDocument() + self._dom_document = QDomDocument() - self.domElementForItem = {} + self._dom_element_for_item = {} - self.folderIcon = QtGui.QIcon() - self.bookmarkIcon = QtGui.QIcon() + self._folder_icon = QIcon() + self._bookmark_icon = QIcon() - self.folderIcon.addPixmap(self.style().standardPixmap(QtWidgets.QStyle.SP_DirClosedIcon), - QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.folderIcon.addPixmap(self.style().standardPixmap(QtWidgets.QStyle.SP_DirOpenIcon), - QtGui.QIcon.Normal, QtGui.QIcon.On) - self.bookmarkIcon.addPixmap(self.style().standardPixmap(QtWidgets.QStyle.SP_FileIcon)) + self._folder_icon.addPixmap(self.style().standardPixmap(QStyle.SP_DirClosedIcon), + QIcon.Normal, QIcon.Off) + self._folder_icon.addPixmap(self.style().standardPixmap(QStyle.SP_DirOpenIcon), + QIcon.Normal, QIcon.On) + self._bookmark_icon.addPixmap(self.style().standardPixmap(QStyle.SP_FileIcon)) def read(self, device): - ok, errorStr, errorLine, errorColumn = self.domDocument.setContent(device, True) + ok, errorStr, errorLine, errorColumn = self._dom_document.setContent(device, True) if not ok: - QtWidgets.QMessageBox.information(self.window(), "DOM Bookmarks", - "Parse error at line %d, column %d:\n%s" % (errorLine, errorColumn, errorStr)) + QMessageBox.information(self.window(), "DOM Bookmarks", + f"Parse error at line {errorLine}, " + f"column {errorColumn}:\n{errorStr}") return False - root = self.domDocument.documentElement() + root = self._dom_document.documentElement() if root.tagName() != 'xbel': - QtWidgets.QMessageBox.information(self.window(), "DOM Bookmarks", - "The file is not an XBEL file.") + QMessageBox.information(self.window(), "DOM Bookmarks", + "The file is not an XBEL file.") return False elif root.hasAttribute('version') and root.attribute('version') != '1.0': - QtWidgets.QMessageBox.information(self.window(), "DOM Bookmarks", - "The file is not an XBEL version 1.0 file.") + QMessageBox.information(self.window(), "DOM Bookmarks", + "The file is not an XBEL version 1.0 file.") return False self.clear() # It might not be connected. try: - self.itemChanged.disconnect(self.updateDomElement) - except: + self.itemChanged.disconnect(self.update_dom_element) + except RuntimeError: pass child = root.firstChildElement('folder') while not child.isNull(): - self.parseFolderElement(child) + self.parse_folder_element(child) child = child.nextSiblingElement('folder') - self.itemChanged.connect(self.updateDomElement) + self.itemChanged.connect(self.update_dom_element) return True def write(self, device): - indentSize = 4 + INDENT_SIZE = 4 - out = QtCore.QTextStream(device) - self.domDocument.save(out, indentSize) + out = QTextStream(device) + self._dom_document.save(out, INDENT_SIZE) return True - def updateDomElement(self, item, column): - element = self.domElementForItem.get(id(item)) + def update_dom_element(self, item, column): + element = self._dom_element_for_item.get(id(item)) if not element.isNull(): if column == 0: - oldTitleElement = element.firstChildElement('title') - newTitleElement = self.domDocument.createElement('title') + old_title_element = element.firstChildElement('title') + new_title_element = self._dom_document.createElement('title') - newTitleText = self.domDocument.createTextNode(item.text(0)) - newTitleElement.appendChild(newTitleText) + new_title_text = self._dom_document.createTextNode(item.text(0)) + new_title_element.appendChild(new_title_text) - element.replaceChild(newTitleElement, oldTitleElement) + element.replaceChild(new_title_element, old_title_element) else: if element.tagName() == 'bookmark': element.setAttribute('href', item.text(1)) - def parseFolderElement(self, element, parentItem=None): - item = self.createItem(element, parentItem) + def parse_folder_element(self, element, parentItem=None): + item = self.create_item(element, parentItem) title = element.firstChildElement('title').text() if not title: title = "Folder" - item.setFlags(item.flags() | QtCore.Qt.ItemIsEditable) - item.setIcon(0, self.folderIcon) + item.setFlags(item.flags() | Qt.ItemIsEditable) + item.setIcon(0, self._folder_icon) item.setText(0, title) folded = (element.attribute('folded') != 'no') - self.setItemExpanded(item, not folded) + item.setExpanded(not folded) child = element.firstChildElement() while not child.isNull(): if child.tagName() == 'folder': - self.parseFolderElement(child, item) + self.parse_folder_element(child, item) elif child.tagName() == 'bookmark': - childItem = self.createItem(child, item) + child_item = self.create_item(child, item) title = child.firstChildElement('title').text() if not title: title = "Folder" - childItem.setFlags(item.flags() | QtCore.Qt.ItemIsEditable) - childItem.setIcon(0, self.bookmarkIcon) - childItem.setText(0, title) - childItem.setText(1, child.attribute('href')) + child_item.setFlags(item.flags() | Qt.ItemIsEditable) + child_item.setIcon(0, self._bookmark_icon) + child_item.setText(0, title) + child_item.setText(1, child.attribute('href')) elif child.tagName() == 'separator': - childItem = self.createItem(child, item) - childItem.setFlags(item.flags() & ~(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEditable)) - childItem.setText(0, 30 * "\xb7") + child_item = self.create_item(child, item) + child_item.setFlags(item.flags() & ~(Qt.ItemIsSelectable | Qt.ItemIsEditable)) + child_item.setText(0, 30 * "\xb7") child = child.nextSiblingElement() - def createItem(self, element, parentItem=None): - item = QtWidgets.QTreeWidgetItem() + def create_item(self, element, parentItem=None): + item = QTreeWidgetItem() if parentItem is not None: - item = QtWidgets.QTreeWidgetItem(parentItem) + item = QTreeWidgetItem(parentItem) else: - item = QtWidgets.QTreeWidgetItem(self) + item = QTreeWidgetItem(self) - self.domElementForItem[id(item)] = element + self._dom_element_for_item[id(item)] = element return item if __name__ == '__main__': - - import sys - - app = QtWidgets.QApplication(sys.argv) - mainWin = MainWindow() - mainWin.show() - mainWin.open() - sys.exit(app.exec_()) + app = QApplication(sys.argv) + main_win = MainWindow() + main_win.show() + main_win.open() + sys.exit(app.exec()) diff --git a/examples/xml/dombookmarks/dombookmarks.pyproject b/examples/xml/dombookmarks/dombookmarks.pyproject new file mode 100644 index 000000000..0a0b203a6 --- /dev/null +++ b/examples/xml/dombookmarks/dombookmarks.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["jennifer.xbel", "dombookmarks.py"] +} diff --git a/examples/xml/dombookmarks/frank.xbel b/examples/xml/dombookmarks/frank.xbel deleted file mode 100644 index f498a5e04..000000000 --- a/examples/xml/dombookmarks/frank.xbel +++ /dev/null @@ -1,230 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE xbel> -<xbel version="1.0"> - <folder folded="yes"> - <title>Literate Programming</title> - <bookmark href="http://www.vivtek.com/litprog.html"> - <title>Synopsis of Literate Programming</title> - </bookmark> - <bookmark href="http://vasc.ri.cmu.edu/old_help/Programming/Literate/literate.html"> - <title>Literate Programming: Propaganda and Tools</title> - </bookmark> - <bookmark href="http://www.isy.liu.se/%7Eturbell/litprog/"> - <title>Literate Programming by Henrik Turbell</title> - </bookmark> - <bookmark href="http://www.desy.de/user/projects/LitProg.html"> - <title>Literate Programming Library</title> - </bookmark> - <bookmark href="http://www.loria.fr/services/tex/english/litte.html"> - <title>Literate Programming Basics</title> - </bookmark> - <bookmark href="http://ei.cs.vt.edu/%7Ecs5014/courseNotes/4.LiterateProgramming/literate_prog.html"> - <title>Literate Programming Overview</title> - </bookmark> - <bookmark href="http://www.perl.com/pub/a/tchrist/litprog.html"> - <title>POD is not Literate Programming</title> - </bookmark> - <bookmark href="http://www.cornellcollege.edu/%7Eltabak/publications/articles/swsafety.html"> - <title>Computers That We Can Count On</title> - </bookmark> - <bookmark href="http://www.cs.auc.dk/%7Enormark/litpro/issues-and-problems.html"> - <title>Literate Programming - Issues and Problems</title> - </bookmark> - <bookmark href="http://c2.com/cgi/wiki?LiterateProgramming"> - <title>Literate Programming - Wiki Pages</title> - </bookmark> - <bookmark href="http://developers.slashdot.org/developers/02/05/19/2216233.shtml"> - <title>What is well-commented code?</title> - </bookmark> - <bookmark href="http://liinwww.ira.uka.de/bibliography/SE/litprog.html"> - <title>Bibliography on literate programming - A searchable bibliography</title> - </bookmark> - <bookmark href="http://www2.umassd.edu/SWPI/ProcessBibliography/bib-codereading.html"> - <title>Program comprehension and code reading bibliography</title> - </bookmark> - <bookmark href="http://www.cs.auc.dk/%7Enormark/elucidative-programming/"> - <title>Elucidative Programming</title> - </bookmark> - <bookmark href="http://www.msu.edu/%7Epfaffben/avl/index.html"> - <title>AVL Trees (TexiWeb)</title> - </bookmark> - <bookmark href="http://literate-programming.wikiverse.org/"> - <title>Literate Programming on Wikiverse</title> - </bookmark> - <bookmark href="http://www.pbrt.org/"> - <title>Physically Based Rendering: From Theory to Implementation</title> - </bookmark> - </folder> - <folder folded="no"> - <title>Useful C++ Links</title> - <folder folded="no"> - <title>STL</title> - <bookmark href="http://www.sgi.com/tech/stl/table_of_contents.html"> - <title>STL Reference Documentation</title> - </bookmark> - <bookmark href="http://www.yrl.co.uk/~phil/stl/stl.htmlx"> - <title>STL Tutorial</title> - </bookmark> - <bookmark href="http://www.cppreference.com/cpp_stl.html"> - <title>STL Reference</title> - </bookmark> - </folder> - <folder folded="no"> - <title>Qt</title> - <bookmark href="http://doc.trolltech.com/2.3/"> - <title>Qt 2.3 Reference</title> - </bookmark> - <bookmark href="http://doc.trolltech.com/3.3/"> - <title>Qt 3.3 Reference</title> - </bookmark> - <bookmark href="http://doc.trolltech.com/4.0/"> - <title>Qt 4.0 Reference</title> - </bookmark> - <bookmark href="http://www.trolltech.com/"> - <title>Trolltech Home Page</title> - </bookmark> - </folder> - <folder folded="yes"> - <title>IOStreams</title> - <bookmark href="http://www.cplusplus.com/ref/iostream/index.html"> - <title>IO Stream Library</title> - </bookmark> - <bookmark href="http://courses.cs.vt.edu/~cs2604/fall01/binio.html"> - <title>Binary I/O</title> - </bookmark> - <bookmark href="http://www.parashift.com/c++-faq-lite/input-output.html"> - <title>I/O Stream FAQ</title> - </bookmark> - </folder> - <folder folded="yes"> - <title>gdb</title> - <bookmark href="http://www.cs.princeton.edu/~benjasik/gdb/gdbtut.html"> - <title>GDB Tutorial</title> - </bookmark> - <bookmark href="http://www.gnu.org/manual/gdb-4.17/html_mono/gdb.html"> - <title>Debugging with GDB</title> - </bookmark> - <bookmark href="http://www.cs.washington.edu/orgs/acm/tutorials/dev-in-unix/gdb-refcard.pdf"> - <title>GDB Quick Reference Page (PDF) (Handy)</title> - </bookmark> - </folder> - <folder folded="yes"> - <title>Classes and Constructors</title> - <bookmark href="http://www.parashift.com/c++-faq-lite/ctors.html"> - <title>Constructor FAQ</title> - </bookmark> - <bookmark href="http://www.juicystudio.com/tutorial/cpp/index.html"> - <title>Organizing Classes</title> - </bookmark> - </folder> - </folder> - <folder folded="yes"> - <title>Software Documentation or System Documentation</title> - <bookmark href="http://www.martinfowler.com/distributedComputing/thud.html"> - <title>The Almighty Thud</title> - </bookmark> - <bookmark href="http://msdn.microsoft.com/library/techart/cfr.htm"> - <title>Microsoft Coding Techniques and Programming Practices</title> - </bookmark> - <bookmark href="http://www.bearcave.com/software/prog_docs.html"> - <title>Software and Documentation</title> - </bookmark> - <bookmark href="http://c2.com/cgi/wiki?TheSourceCodeIsTheDesign"> - <title>The Source Code is the Design</title> - </bookmark> - <bookmark href="http://www.bleading-edge.com/Publications/C++Journal/Cpjour2.htm"> - <title>What is Software Design?</title> - </bookmark> - <bookmark href="http://www.mindprod.com/unmain.html"> - <title>How To Write Unmaintainable Code</title> - </bookmark> - <bookmark href="http://www.idinews.com/selfDoc.html"> - <title>Self Documenting Program Code Remains a Distant Goal</title> - </bookmark> - <bookmark href="http://www.sdmagazine.com/documents/s=730/sdm0106m/0106m.htm"> - <title>Place Tab A in Slot B</title> - </bookmark> - <bookmark href="http://www.holub.com/class/uml/uml.html"> - <title>UML Reference Card</title> - </bookmark> - </folder> - <folder folded="yes"> - <title>TeX Resources</title> - <bookmark href="http://www.tug.org/"> - <title>The TeX User's Group</title> - </bookmark> - <bookmark href="http://www.miktex.org/"> - <title>MikTeX website</title> - </bookmark> - <bookmark href="http://cm.bell-labs.com/who/hobby/MetaPost.html"> - <title>MetaPost website</title> - </bookmark> - <bookmark href="http://pauillac.inria.fr/%7Emaranget/hevea/"> - <title>HEVEA is a quite complete and fast LATEX to HTML translator</title> - </bookmark> - </folder> - <folder folded="no"> - <title>Portable Document Format (PDF)</title> - <bookmark href="http://www.adobe.com/"> - <title>Adobe - The postscript and PDF standards</title> - </bookmark> - <bookmark href="http://partners.adobe.com/asn/developer/technotes/acrobatpdf.html"> - <title>Reference Manual Portable Document Format</title> - </bookmark> - <bookmark href="http://partners.adobe.com/asn/developer/acrosdk/main.html"> - <title>Adobe Acrobat Software Development Kit</title> - </bookmark> - </folder> - <folder folded="yes"> - <title>Literature Sites</title> - <bookmark href="http://www.cc.columbia.edu/cu/libraries/subjects/speccol.html"> - <title>Guide to Special Collections (Columbia University)</title> - </bookmark> - <bookmark href="http://www.ipl.org/ref/litcrit/"> - <title>Literary Criticism on the Web from the Internet Public Library</title> - </bookmark> - <bookmark href="http://www.victorianweb.org/"> - <title>Victorian Web.</title> - </bookmark> - <bookmark href="http://vos.ucsb.edu/"> - <title>Voice of the Shuttle.</title> - </bookmark> - <bookmark href="http://www.modjourn.brown.edu/"> - <title>Modernist Journals Project</title> - </bookmark> - <bookmark href="http://www.poetspath.com"> - <title>Museum of American Poetics</title> - </bookmark> - <bookmark href="http://www.english.uiuc.edu/maps/"> - <title>Modern American Poetry</title> - </bookmark> - <bookmark href="http://www.findarticles.com/"> - <title>FindArticles.com</title> - </bookmark> - <bookmark href="http://www.literaryhistory.com"> - <title>Literary History</title> - </bookmark> - <bookmark href="http://www.litencyc.com/LitEncycFrame.htm"> - <title>Literary Encyclopedia</title> - </bookmark> - <separator/> - <bookmark href="http://texts.cdlib.org/ucpress/"> - <title>The University of California Press</title> - </bookmark> - <bookmark href="http://www.letrs.indiana.edu/web/w/wright2/"> - <title>Wright American Fiction, 1851-1875</title> - </bookmark> - <bookmark href="http://docsouth.unc.edu/"> - <title>Documenting the American South: Beginnings to 1920</title> - </bookmark> - <bookmark href="http://etext.lib.virginia.edu/eng-on.html"> - <title>Electronic Text Center at the University of Virginia</title> - </bookmark> - <bookmark href="http://digital.nypl.org/schomburg/writers_aa19/"> - <title>The Schomburg Center for Research in Black Culture</title> - </bookmark> - <bookmark href="http://www.infomotions.com/alex2/"> - <title>Alex Catalog of Electronic Texts.</title> - </bookmark> - </folder> -</xbel> diff --git a/examples/xml/dombookmarks/jennifer.xbel b/examples/xml/dombookmarks/jennifer.xbel index 1f7810b94..d50423683 100644 --- a/examples/xml/dombookmarks/jennifer.xbel +++ b/examples/xml/dombookmarks/jennifer.xbel @@ -3,91 +3,67 @@ <xbel version="1.0"> <folder folded="no"> <title>Qt Resources</title> + <bookmark href="https://www.qt.io/"> + <title>Qt home page</title> + </bookmark> + <bookmark href="https://www.qt.io/contact-us/partners"> + <title>Qt Partners</title> + </bookmark> + <bookmark href="https://www.qt.io/qt-professional-services"> + <title>Professional Services</title> + </bookmark> + <bookmark href="https://doc.qt.io/"> + <title>Qt Documentation</title> + </bookmark> <folder folded="yes"> - <title>Trolltech Partners</title> - <bookmark href="http://partners.trolltech.com/partners/training.html"> - <title>Training Partners</title> - </bookmark> - <bookmark href="http://partners.trolltech.com/partners/service.html"> - <title>Consultants and System Integrators</title> - </bookmark> - <bookmark href="http://partners.trolltech.com/partners/tech.html"> - <title>Technology Partners</title> + <title>Community Resources</title> + <bookmark href="https://contribute.qt-project.org"> + <title>The Qt Project</title> </bookmark> - <bookmark href="http://partners.trolltech.com/partners/resellers.html"> - <title>Value Added Resellers (VARs)</title> + <bookmark href="https://www.qtcentre.org/content/"> + <title>Qt Centre</title> </bookmark> - </folder> - <folder folded="yes"> - <title>Community Resources</title> - <bookmark href="http://www.qtforum.org/"> - <title>QtForum.org</title> + <bookmark href="https://forum.qt.io/"> + <title>Forum.Qt.org</title> </bookmark> - <bookmark href="http://www.digitalfanatics.org/projects/qt_tutorial/"> + <bookmark href="https://digitalfanatics.org/projects/qt_tutorial/"> <title>The Independent Qt Tutorial</title> </bookmark> - <bookmark href="http://prog.qt.free.fr/"> - <title>French PROG.Qt</title> - </bookmark> - <bookmark href="http://www.qtforum.de/"> + <bookmark href="https://www.qtforum.de/"> <title>German Qt Forum</title> </bookmark> - <bookmark href="http://www.korone.net/"> + <bookmark href="https://www.qt-dev.com/"> <title>Korean Qt Community Site</title> </bookmark> - <bookmark href="http://prog.org.ru/forum/forum_14.html"> + <bookmark href="http://www.prog.org.ru/"> <title>Russian Qt Forum</title> </bookmark> - <bookmark href="http://qt4.digitalfanatics.org/"> - <title>Digitalfanatics: The QT 4 Resource Center</title> - </bookmark> - <bookmark href="http://www.qtquestions.org/"> - <title>QtQuestions</title> - </bookmark> </folder> - <bookmark href="http://doc.trolltech.com/qq/"> - <title>Qt Quarterly</title> - </bookmark> - <bookmark href="http://www.trolltech.com/"> - <title>Trolltech's home page</title> - </bookmark> - <bookmark href="http://doc.trolltech.com/4.0/"> - <title>Qt 4.0 documentation</title> - </bookmark> - <bookmark href="http://www.trolltech.com/developer/faqs/"> - <title>Frequently Asked Questions</title> - </bookmark> </folder> <folder folded="no"> <title>Online Dictionaries</title> - <bookmark href="http://www.dictionary.com/"> + <bookmark href="https://www.dictionary.com/"> <title>Dictionary.com</title> </bookmark> - <bookmark href="http://www.m-w.com/"> + <bookmark href="https://www.merriam-webster.com/"> <title>Merriam-Webster Online</title> </bookmark> - <bookmark href="http://dictionary.cambridge.org/"> + <bookmark href="https://dictionary.cambridge.org/"> <title>Cambridge Dictionaries Online</title> </bookmark> - <bookmark href="http://www.onelook.com/"> + <bookmark href="https://www.onelook.com/"> <title>OneLook Dictionary Search</title> </bookmark> <separator/> - <bookmark href="www.iee.et.tu-dresden.de/"> - <title>The New English-German Dictionary</title> - </bookmark> - <bookmark href="http://dict.tu-chemnitz.de/"> - <title>TU Chemnitz German-English Dictionary</title> + <bookmark href="https://dict.tu-chemnitz.de/"> + <title>BEOLINGUS, a service of TU Chemnitz</title> </bookmark> <separator/> <bookmark href="http://atilf.atilf.fr/tlf.htm"> <title>Trésor de la Langue Française informatisé</title> </bookmark> - <bookmark href="http://dictionnaires.atilf.fr/dictionnaires/ACADEMIE/"> + <bookmark href="https://www.dictionnaire-academie.fr/"> <title>Dictionnaire de l'Académie Française</title> </bookmark> - <bookmark href="http://elsap1.unicaen.fr/cgi-bin/cherches.cgi"> - <title>Dictionnaire des synonymes</title> - </bookmark> </folder> </xbel> |