class XbelTree
Constants
- IndentSize
Public Class Methods
new(parent = nil)
click to toggle source
Calls superclass method
# File examples/xml/dombookmarks/xbeltree.rb, line 34 def initialize(parent = nil) super(parent) labels = [] labels << tr("Title") << tr("Location") header().resizeMode = Qt::HeaderView::Stretch setHeaderLabels(labels) @folderIcon = Qt::Icon.new @folderIcon.addPixmap(style().standardPixmap(Qt::Style::SP_DirClosedIcon), Qt::Icon::Normal, Qt::Icon::Off) @folderIcon.addPixmap(style().standardPixmap(Qt::Style::SP_DirOpenIcon), Qt::Icon::Normal, Qt::Icon::On) @bookmarkIcon = Qt::Icon.new @bookmarkIcon.addPixmap(style().standardPixmap(Qt::Style::SP_FileIcon)) @domElementForItem = {} @domDocument = Qt::DomDocument.new end
Public Instance Methods
createItem(element, parentItem)
click to toggle source
# File examples/xml/dombookmarks/xbeltree.rb, line 163 def createItem(element, parentItem) if !parentItem.nil? item = Qt::TreeWidgetItem.new(parentItem, Qt::TreeWidgetItem::Type) else item = Qt::TreeWidgetItem.new(self) end @domElementForItem[item] = element return item end
parseFolderElement(element, parentItem = nil)
click to toggle source
# File examples/xml/dombookmarks/xbeltree.rb, line 122 def parseFolderElement(element, parentItem = nil) item = createItem(element, parentItem) title = element.firstChildElement("title").text() if title.nil? title = Qt::Object.tr("Folder") end item.flags = item.flags | Qt::ItemIsEditable.to_i item.setIcon(0, @folderIcon) item.setText(0, title) folded = (element.attribute("folded") != "no") setItemExpanded(item, !folded) child = element.firstChildElement() while !child.null? if child.tagName() == "folder" parseFolderElement(child, item) elsif child.tagName() == "bookmark" childItem = createItem(child, item) title = child.firstChildElement("title").text() if title.empty? title = Qt::Object.tr("Folder") end childItem.flags = item.flags | Qt::ItemIsEditable.to_i childItem.setIcon(0, @bookmarkIcon) childItem.setText(0, title) childItem.setText(1, child.attribute("href")) elsif child.tagName() == "separator" childItem = createItem(child, item) childItem.flags = item.flags & ~(Qt::ItemIsSelectable.to_i | Qt::ItemIsEditable.to_i) # childItem.setText(0, Qt::String(30, 0xB7)) childItem.setText(0, "..............................") end child = child.nextSiblingElement() end end
read(device)
click to toggle source
# File examples/xml/dombookmarks/xbeltree.rb, line 54 def read(device) errorStr = "" errorLine = Qt::Integer.new errorColumn = Qt::Integer.new if !@domDocument.setContent(device, true, errorStr, errorLine, errorColumn) Qt::MessageBox.information(window(), tr("DOM Bookmarks"), tr("Parse error at line %d, column %d:\n%s" % [errorLine, errorColumn, errorStr])) return false end root = @domDocument.documentElement() if root.tagName() != "xbel" Qt::MessageBox.information(window(), tr("DOM Bookmarks"), tr("The file is not an XBEL file.")) return false elsif root.hasAttribute("version") && root.attribute("version") != "1.0" Qt::MessageBox.information(window(), tr("DOM Bookmarks"), tr("The file is not an XBEL version 1.0 " "file.")) return false end clear() disconnect(self, SIGNAL('itemChanged(QTreeWidgetItem *, int)'), self, SLOT('updateDomElement(QTreeWidgetItem *, int)')) child = root.firstChildElement("folder") while !child.null? parseFolderElement(child) child = child.nextSiblingElement("folder") end connect(self, SIGNAL('itemChanged(QTreeWidgetItem *, int)'), self, SLOT('updateDomElement(QTreeWidgetItem *, int)')) return true end
updateDomElement(item, column)
click to toggle source
# File examples/xml/dombookmarks/xbeltree.rb, line 103 def updateDomElement(item, column) element = @domElementForItem[item] if !element.nil? if column == 0 oldTitleElement = element.firstChildElement("title") newTitleElement = @domDocument.createElement("title") newTitleText = @domDocument.createTextNode(item.text(0)) newTitleElement.appendChild(newTitleText) element.replaceChild(newTitleElement, oldTitleElement) else if element.tagName == "bookmark" element.setAttribute("href", item.text(1)) end end end end
write(device)
click to toggle source
# File examples/xml/dombookmarks/xbeltree.rb, line 97 def write(device) outf = Qt::TextStream.new(device) @domDocument.save(outf, IndentSize) return true end