aboutsummaryrefslogtreecommitdiffstats
path: root/examples/xml/dombookmarks
diff options
context:
space:
mode:
authorDouglas Soares de Andrade <douglas@archlinux.org>2009-08-19 15:10:28 -0300
committerDouglas Soares de Andrade <douglas@archlinux.org>2009-08-19 15:10:28 -0300
commitd4e4c7fdf71ab52083e49ffdea1b7daeff6c8d8d (patch)
tree2285c0be0a319e7d463948fcf637ae0ed1e1bb15 /examples/xml/dombookmarks
parent704bf0e5e6ed9b2b8a3dcbf8c5ad2648d33f4d3f (diff)
Adding the pyqt ported examples (replacing xmon examples because most of then did not work here)
Diffstat (limited to 'examples/xml/dombookmarks')
-rwxr-xr-xexamples/xml/dombookmarks/dombookmarks.py149
1 files changed, 72 insertions, 77 deletions
diff --git a/examples/xml/dombookmarks/dombookmarks.py b/examples/xml/dombookmarks/dombookmarks.py
index a2c976a..d05e075 100755
--- a/examples/xml/dombookmarks/dombookmarks.py
+++ b/examples/xml/dombookmarks/dombookmarks.py
@@ -1,91 +1,94 @@
#!/usr/bin/env python
-"""PyQt4 port of the xml/dombookmarks example from Qt v4.x"""
+"""PySide port of the xml/dombookmarks example from Qt v4.x"""
-from PyQt4 import QtCore, QtGui, QtXml
+import sys
+from PySide import QtCore, QtGui, QtXml
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
- super(MainWindow, self).__init__(parent)
-
+ QtGui.QMainWindow.__init__(self, parent)
+
self.xbelTree = XbelTree()
self.setCentralWidget(self.xbelTree)
-
+
self.createActions()
self.createMenus()
-
+
self.statusBar().showMessage(self.tr("Ready"))
-
+
self.setWindowTitle(self.tr("DOM Bookmarks"))
self.resize(480, 320)
def open(self):
- fileName = QtGui.QFileDialog.getOpenFileName(self,
- self.tr("Open Bookmark File"), QtCore.QDir.currentPath(),
- self.tr("XBEL Files (*.xbel *.xml)"))
-
+ fileName = QtGui.QFileDialog.getOpenFileName(self, self.tr("Open Bookmark File"),
+ QtCore.QDir.currentPath(),
+ self.tr("XBEL Files (*.xbel *.xml)"))
if fileName.isEmpty():
return
-
+
inFile = QtCore.QFile(fileName)
if not inFile.open(QtCore.QFile.ReadOnly | QtCore.QFile.Text):
- QtGui.QMessageBox.warning(self, self.tr("DOM Bookmarks"),
- self.tr("Cannot read file %1:\n%2.").arg(fileName).arg(inFile.errorString()))
+ QtGui.QMessageBox.warning(self, self.tr("SAX Bookmarks"),
+ self.tr("Cannot read file %1:\n%2.")
+ .arg(fileName)
+ .arg(inFile.errorString()))
return
if self.xbelTree.read(inFile):
self.statusBar().showMessage(self.tr("File loaded"), 2000)
def saveAs(self):
- fileName = QtGui.QFileDialog.getSaveFileName(self,
- self.tr("Save Bookmark File"), QtCore.QDir.currentPath(),
- self.tr("XBEL Files (*.xbel *.xml)"))
-
+ fileName = QtGui.QFileDialog.getSaveFileName(self, self.tr("Save Bookmark File"),
+ QtCore.QDir.currentPath(),
+ self.tr("XBEL Files (*.xbel *.xml)"))
if fileName.isEmpty():
return
-
+
outFile = QtCore.QFile(fileName)
if not outFile.open(QtCore.QFile.WriteOnly | QtCore.QFile.Text):
- QtGui.QMessageBox.warning(self, self.tr("DOM Bookmarks"),
- self.tr("Cannot write file %1:\n%2.").arg(fileName).arg(outFile.errorString()))
+ QtGui.QMessageBox.warning(self, self.tr("SAX Bookmarks"),
+ self.tr("Cannot write file %1:\n%2.")
+ .arg(fileName)
+ .arg(outFile.errorString()))
return
if self.xbelTree.write(outFile):
self.statusBar().showMessage(self.tr("File saved"), 2000)
def about(self):
- QtGui.QMessageBox.about(self, self.tr("About DOM Bookmarks"),
- self.tr("The <b>DOM Bookmarks</b> example demonstrates how to use "
- "Qt's DOM classes to read and write XML documents."))
+ QtGui.QMessageBox.about(self, self.tr("About DOM Bookmarks"), self.tr(
+ "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 = QtGui.QAction(self.tr("&Open..."), self)
self.openAct.setShortcut(self.tr("Ctrl+O"))
- self.openAct.triggered.connect(self.open)
-
+ self.connect(self.openAct, QtCore.SIGNAL("triggered()"), self.open)
+
self.saveAsAct = QtGui.QAction(self.tr("&Save As..."), self)
self.saveAsAct.setShortcut(self.tr("Ctrl+S"))
- self.saveAsAct.triggered.connect(self.saveAs)
-
+ self.connect(self.saveAsAct, QtCore.SIGNAL("triggered()"), self.saveAs)
+
self.exitAct = QtGui.QAction(self.tr("E&xit"), self)
self.exitAct.setShortcut(self.tr("Ctrl+Q"))
- self.exitAct.triggered.connect(self.close)
-
+ self.connect(self.exitAct, QtCore.SIGNAL("triggered()"), self, QtCore.SLOT("close()"))
+
self.aboutAct = QtGui.QAction(self.tr("&About"), self)
- self.aboutAct.triggered.connect(self.about)
-
+ self.connect(self.aboutAct, QtCore.SIGNAL("triggered()"), self.about)
+
self.aboutQtAct = QtGui.QAction(self.tr("About &Qt"), self)
- self.aboutQtAct.triggered.connect(QtGui.qApp.aboutQt)
+ self.connect(self.aboutQtAct, QtCore.SIGNAL("triggered()"), QtGui.qApp, QtCore.SLOT("aboutQt()"))
def createMenus(self):
self.fileMenu = self.menuBar().addMenu(self.tr("&File"))
self.fileMenu.addAction(self.openAct)
self.fileMenu.addAction(self.saveAsAct)
self.fileMenu.addAction(self.exitAct)
-
+
self.menuBar().addSeparator()
-
+
self.helpMenu = self.menuBar().addMenu(self.tr("&Help"))
self.helpMenu.addAction(self.aboutAct)
self.helpMenu.addAction(self.aboutQtAct)
@@ -93,81 +96,77 @@ class MainWindow(QtGui.QMainWindow):
class XbelTree(QtGui.QTreeWidget):
def __init__(self, parent=None):
- super(XbelTree, self).__init__(parent)
+ QtGui.QTreeWidget.__init__(self, parent)
labels = QtCore.QStringList()
labels << self.tr("Title") << self.tr("Location")
-
+
self.header().setResizeMode(QtGui.QHeaderView.Stretch)
self.setHeaderLabels(labels)
-
+
self.domDocument = QtXml.QDomDocument()
-
+
self.domElementForItem = {}
-
+
self.folderIcon = QtGui.QIcon()
self.bookmarkIcon = QtGui.QIcon()
-
+
self.folderIcon.addPixmap(self.style().standardPixmap(QtGui.QStyle.SP_DirClosedIcon),
- QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.folderIcon.addPixmap(self.style().standardPixmap(QtGui.QStyle.SP_DirOpenIcon),
- QtGui.QIcon.Normal, QtGui.QIcon.On)
+ QtGui.QIcon.Normal, QtGui.QIcon.On)
self.bookmarkIcon.addPixmap(self.style().standardPixmap(QtGui.QStyle.SP_FileIcon))
def read(self, device):
ok, errorStr, errorLine, errorColumn = self.domDocument.setContent(device, True)
if not ok:
- QtGui.QMessageBox.information(self.window(),
- self.tr("DOM Bookmarks"),
- self.tr("Parse error at line %1, column %2:\n%3").arg(errorLine).arg(errorColumn).arg(errorStr))
+ QtGui.QMessageBox.information(self.window(), self.tr("DOM Bookmarks"),
+ self.tr("Parse error at line %1, column %2:\n%3")
+ .arg(errorLine).arg(errorColumn).arg(errorStr))
return False
root = self.domDocument.documentElement()
if root.tagName() != "xbel":
- QtGui.QMessageBox.information(self.window(),
- self.tr("DOM Bookmarks"),
- self.tr("The file is not an XBEL file."))
+ QtGui.QMessageBox.information(self.window(), self.tr("DOM Bookmarks"),
+ self.tr("The file is not an XBEL file."))
return False
elif root.hasAttribute("version") and root.attribute("version") != "1.0":
- QtGui.QMessageBox.information(self.window(),
- self.tr("DOM Bookmarks"),
- self.tr("The file is not an XBEL version 1.0 file."))
+ QtGui.QMessageBox.information(self.window(), self.tr("DOM Bookmarks"),
+ self.tr("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:
- pass
+ self.disconnect(self, QtCore.SIGNAL("itemChanged(QTreeWidgetItem *, int)"),
+ self.updateDomElement)
child = root.firstChildElement("folder")
while not child.isNull():
self.parseFolderElement(child)
child = child.nextSiblingElement("folder")
- self.itemChanged.connect(self.updateDomElement)
-
+ self.connect(self, QtCore.SIGNAL("itemChanged(QTreeWidgetItem *, int)"),
+ self.updateDomElement)
+
return True
def write(self, device):
indentSize = 4
-
+
out = QtCore.QTextStream(device)
self.domDocument.save(out, indentSize)
return True
def updateDomElement(self, item, column):
- element = self.domElementForItem.get(id(item))
+ element = self.domElementForItem.get(item)
if not element.isNull():
if column == 0:
oldTitleElement = element.firstChildElement("title")
newTitleElement = self.domDocument.createElement("title")
-
+
newTitleText = self.domDocument.createTextNode(item.text(0))
newTitleElement.appendChild(newTitleText)
-
+
element.replaceChild(newTitleElement, oldTitleElement)
else:
if element.tagName() == "bookmark":
@@ -175,29 +174,29 @@ class XbelTree(QtGui.QTreeWidget):
def parseFolderElement(self, element, parentItem=None):
item = self.createItem(element, parentItem)
-
+
title = element.firstChildElement("title").text()
if title.isEmpty():
title = QtCore.QObject.tr("Folder")
-
+
item.setFlags(item.flags() | QtCore.Qt.ItemIsEditable)
item.setIcon(0, self.folderIcon)
item.setText(0, title)
-
+
folded = (element.attribute("folded") != "no")
self.setItemExpanded(item, not folded)
-
+
child = element.firstChildElement()
while not child.isNull():
if child.tagName() == "folder":
self.parseFolderElement(child, item)
elif child.tagName() == "bookmark":
childItem = self.createItem(child, item)
-
+
title = child.firstChildElement("title").text()
if title.isEmpty():
title = QtCore.QObject.tr("Folder")
-
+
childItem.setFlags(item.flags() | QtCore.Qt.ItemIsEditable)
childItem.setIcon(0, self.bookmarkIcon)
childItem.setText(0, title)
@@ -206,27 +205,23 @@ class XbelTree(QtGui.QTreeWidget):
childItem = self.createItem(child, item)
childItem.setFlags(item.flags() & ~(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEditable))
childItem.setText(0, QtCore.QString(30 * "\xB7"))
-
+
child = child.nextSiblingElement()
def createItem(self, element, parentItem=None):
item = QtGui.QTreeWidgetItem()
-
+
if parentItem is not None:
item = QtGui.QTreeWidgetItem(parentItem)
else:
item = QtGui.QTreeWidgetItem(self)
-
- self.domElementForItem[id(item)] = element
+
+ self.domElementForItem[item] = element
return item
if __name__ == '__main__':
-
- import sys
-
app = QtGui.QApplication(sys.argv)
mainWin = MainWindow()
mainWin.show()
- mainWin.open()
sys.exit(app.exec_())