1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
=begin
**
** Copyright (C) 2004-2005 Trolltech AS. All rights reserved.
**
** This file is part of the example classes of the Qt Toolkit.
**
** This file may be used under the terms of the GNU General Public
** License version 2.0 as published by the Free Software Foundation
** and appearing in the file LICENSE.GPL included in the packaging of
** this file. Please review the following information to ensure GNU
** General Public Licensing requirements will be met:
** http://www.trolltech.com/products/qt/opensource.html
**
** If you are unsure which license is appropriate for your use, please
** review the following information:
** http://www.trolltech.com/products/qt/licensing.html or contact the
** sales department at sales@trolltech.com.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** Translated to QtRuby by Richard Dale
=end
require 'xbelgenerator.rb'
class XbelHandler < Qt::XmlDefaultHandler
def initialize(treeWidget)
super()
@treeWidget = treeWidget
@item = nil
@metXbelTag = false
@currentText = ""
style = @treeWidget.style()
@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))
end
def startElement(namespaceURI, localName, qName, attributes)
if !@metXbelTag && qName != "xbel"
@errorStr = Qt::Object.tr("The file is not an XBEL file.")
return false
end
if qName == "xbel"
version = attributes.value("version")
if !version.empty? && version != "1.0"
@errorStr = Qt::Object.tr("The file is not an XBEL version 1.0 file.")
return false
end
@metXbelTag = true
elsif qName == "folder"
@item = createChildItem(qName)
@item.flags = @item.flags | Qt::ItemIsEditable.to_i
@item.setIcon(0, @folderIcon)
@item.setText(0, Qt::Object.tr("Folder"))
folded = (attributes.value("folded") != "no")
@treeWidget.setItemExpanded(@item, !folded)
elsif qName == "bookmark"
@item = createChildItem(qName)
@item.flags = @item.flags | Qt::ItemIsEditable.to_i
@item.setIcon(0, @bookmarkIcon)
@item.setText(0, Qt::Object.tr("Unknown title"))
@item.setText(1, attributes.value("href"))
elsif qName == "separator"
@item = createChildItem(qName)
@item.flags = @item.flags & ~Qt::ItemIsSelectable.to_i
# @item.setText(0, Qt::String(30, 0xB7))
@item.setText(0, "..............................")
end
@currentText = ""
return true
end
def endElement(namespaceURI, localName, qName)
if qName == "title"
if !@item.nil?
@item.setText(0, @currentText)
end
elsif qName == "folder" || qName == "bookmark" ||
qName == "separator"
@item = @item.parent()
end
return true
end
def characters(str)
@currentText += str
return true
end
def fatalError(exception)
Qt::MessageBox.information(@treeWidget.window(), Qt::Object.tr("SAX Bookmarks"),
Qt::Object::tr("Parse error at line %s, column %s:\n%s" %
[exception.lineNumber, exception.columnNumber,exception.message]))
return false
end
def errorString()
return @errorStr
end
def createChildItem(tagName)
if !@item.nil?
childItem = Qt::TreeWidgetItem.new(@item, Qt::TreeWidgetItem::Type)
else
childItem = Qt::TreeWidgetItem.new(@treeWidget)
end
childItem.setData(0, Qt::UserRole, Qt::Variant.new(tagName))
return childItem
end
end
|