void XbelReader::readFolder(BookmarkNode *parent) { Q_ASSERT(isStartElement() && name() == QLatin1String("folder")); BookmarkNode *folder = new BookmarkNode(BookmarkNode::Folder, parent); folder->expanded = (attributes().value(QLatin1String("folded")) == QLatin1String("no")); while (!atEnd()) { readNext(); if (isEndElement()) break; if (isStartElement()) { if (name() == QLatin1String("title")) readTitle(folder); else if (name() == QLatin1String("desc")) readDescription(folder); else if (name() == QLatin1String("folder")) readFolder(folder); else if (name() == QLatin1String("bookmark")) readBookmarkNode(folder); else if (name() == QLatin1String("separator")) readSeparator(folder); else skipUnknownElement(); } } }
void XbelReader::readFolder(QTreeWidgetItem *item) { Q_ASSERT(isStartElement() && name() == "folder"); QTreeWidgetItem *folder = createChildItem(item); bool folded = (attributes().value("folded") != "no"); treeWidget->setItemExpanded(folder, !folded); while (!atEnd()) { readNext(); if (isEndElement()) break; if (isStartElement()) { if (name() == "title") readTitle(folder); else if (name() == "folder") readFolder(folder); else if (name() == "bookmark") readBookmark(folder); else if (name() == "separator") readSeparator(folder); else readUnknownElement(); } } }
//! [3] void XbelReader::readXBEL() { Q_ASSERT(xml.isStartElement() && xml.name() == "xbel"); while (xml.readNextStartElement()) { if (xml.name() == "folder") readFolder(0); else if (xml.name() == "bookmark") readBookmark(0); else if (xml.name() == "separator") readSeparator(0); else xml.skipCurrentElement(); } }
void XbelReader::readXBEL(BookmarkNode *parent) { Q_ASSERT(isStartElement() && name() == QLatin1String("xbel")); while (readNextStartElement()) { if (name() == QLatin1String("folder")) readFolder(parent); else if (name() == QLatin1String("bookmark")) readBookmarkNode(parent); else if (name() == QLatin1String("separator")) readSeparator(parent); else skipCurrentElement(); } }
void XbelReader::readFolder(QTreeWidgetItem *item) { Q_ASSERT(xml.isStartElement() && xml.name() == "folder"); QTreeWidgetItem *folder = createChildItem(item); bool folded = (xml.attributes().value("folded") != "no"); treeWidget->setItemExpanded(folder, !folded); while (xml.readNextStartElement()) { if (xml.name() == "title") readTitle(folder); else if (xml.name() == "folder") readFolder(folder); else if (xml.name() == "bookmark") readBookmark(folder); else if (xml.name() == "separator") readSeparator(folder); else xml.skipCurrentElement(); } }
void XbelReader::readXBEL(BookmarkNode *parent) { Q_ASSERT(isStartElement() && name() == QLatin1String("xbel")); while (!atEnd()) { readNext(); if (isEndElement()) break; if (isStartElement()) { if (name() == QLatin1String("folder")) readFolder(parent); else if (name() == QLatin1String("bookmark")) readBookmarkNode(parent); else if (name() == QLatin1String("separator")) readSeparator(parent); else skipUnknownElement(); } } }
//! [3] void XbelReader::readXBEL() { Q_ASSERT(isStartElement() && name() == "xbel"); while (!atEnd()) { readNext(); if (isEndElement()) break; if (isStartElement()) { if (name() == "folder") readFolder(0); else if (name() == "bookmark") readBookmark(0); else if (name() == "separator") readSeparator(0); else readUnknownElement(); } } }
bool WRL1BASE::ReadNode( WRLPROC& proc, WRL1NODE* aParent, WRL1NODE** aNode ) { // This function reads a node and stores a pointer to it in aNode. // A value 'true' is returned if a node is successfully read or, // if the node is not supported, successfully discarded. Callers // must always check the value of aNode when the function returns // 'true' since it will be NULL if the node type is not supported. if( NULL != aNode ) *aNode = NULL; if( NULL == aParent ) { #ifdef DEBUG_VRML1 do { std::ostringstream ostr; ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n"; ostr << " * [BUG] invalid parent pointer (NULL)"; wxLogTrace( MASK_VRML, "%s\n", ostr.str().c_str() ); } while( 0 ); #endif return false; } std::string glob; WRL1NODES ntype; if( !proc.ReadName( glob ) ) { #if defined( DEBUG_VRML1 ) && ( DEBUG_VRML1 > 1 ) if( !proc.eof() ) { std::ostringstream ostr; ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n"; ostr << proc.GetError(); wxLogTrace( MASK_VRML, "%s\n", ostr.str().c_str() ); } #endif return false; } // Process node name: // the names encountered at this point should be one of the // built-in node names or one of: // DEF, USE if( !glob.compare( "USE" ) ) { if( !implementUse( proc, aParent, aNode ) ) { #if defined( DEBUG_VRML1 ) && ( DEBUG_VRML1 > 1 ) do { std::ostringstream ostr; ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n"; ostr << proc.GetError(); wxLogTrace( MASK_VRML, "%s\n", ostr.str().c_str() ); } while( 0 ); #endif return false; } return true; } if( !glob.compare( "DEF" ) ) { if( !implementDef( proc, aParent, aNode ) ) { #if defined( DEBUG_VRML1 ) && ( DEBUG_VRML1 > 1 ) do { std::ostringstream ostr; ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n"; ostr << proc.GetError(); wxLogTrace( MASK_VRML, "%s\n", ostr.str().c_str() ); } while( 0 ); #endif return false; } return true; } ntype = getNodeTypeID( glob ); size_t line = 0; size_t column = 0; proc.GetFilePosData( line, column ); #if defined( DEBUG_VRML1 ) && ( DEBUG_VRML1 > 2 ) do { std::ostringstream ostr; ostr << " * [INFO] Processing node '" << glob << "' ID: " << ntype; wxLogTrace( MASK_VRML, "%s\n", ostr.str().c_str() ); } while( 0 ); #endif switch( ntype ) { case WRL1_GROUP: if( !readGroup( proc, aParent, aNode ) ) return false; break; case WRL1_SEPARATOR: if( !readSeparator( proc, aParent, aNode ) ) return false; break; case WRL1_SWITCH: if( !readSwitch( proc, aParent, aNode ) ) return false; break; case WRL1_MATERIAL: if( !readMaterial( proc, aParent, aNode ) ) return false; break; case WRL1_MATERIALBINDING: if( !readMatBinding( proc, aParent, aNode ) ) return false; break; case WRL1_COORDINATE3: if( !readCoords( proc, aParent, aNode ) ) return false; break; case WRL1_INDEXEDFACESET: if( !readFaceSet( proc, aParent, aNode ) ) return false; break; case WRL1_TRANSFORM: case WRL1_TRANSLATION: case WRL1_ROTATION: case WRL1_SCALE: if( !readTransform( proc, aParent, aNode ) ) return false; break; case WRL1_SHAPEHINTS: if( !readShapeHints( proc, aParent, aNode ) ) return false; break; // // items not implemented or for optional future implementation: // default: proc.GetFilePosData( line, column ); if( !proc.DiscardNode() ) { #if defined( DEBUG_VRML1 ) && ( DEBUG_VRML1 > 1 ) do { std::ostringstream ostr; ostr << proc.GetError() << "\n"; ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n"; ostr << " * [INFO] could not discard node at line " << line; ostr << ", column " << column; wxLogTrace( MASK_VRML, "%s\n", ostr.str().c_str() ); } while( 0 ); #endif return false; } #if defined( DEBUG_VRML1 ) && ( DEBUG_VRML1 > 1 ) else { std::ostringstream ostr; ostr << " * [INFO] discarded node '" << glob << "' at line "; ostr << line << ", col " << column << " (currently unsupported)"; wxLogTrace( MASK_VRML, "%s\n", ostr.str().c_str() ); } #endif break; } return true; }