// create and fill "recent" section at first void PanelKMenu::createRecentMenuItems() { RecentlyLaunchedApps::self().init(); RecentlyLaunchedApps::self().m_nNumMenuItems = 0; QStringList RecentApps; RecentlyLaunchedApps::self().getRecentApps(RecentApps); if (RecentApps.count() > 0) { bool bSeparator = KickerSettings::showMenuTitles(); int nId = serviceMenuEndId() + 1; int nIndex = KickerSettings::showMenuTitles() ? 1 : 0; for (QList<QString>::iterator it = RecentApps.fromLast(); /*nop*/; --it) { KService::Ptr s = KService::serviceByDesktopPath(*it); if (!s) { RecentlyLaunchedApps::self().removeItem(*it); } else { if (bSeparator) { bSeparator = false; /* FIXME: no more titles! int id = insertTitle( RecentlyLaunchedApps::self().caption(), serviceMenuEndId(), 0); setItemEnabled( id, false ); */ addSeparator(); } insertMenuItem(s, nId++, nIndex); RecentlyLaunchedApps::self().m_nNumMenuItems++; } if (it == RecentApps.begin()) { break; } } if (!KickerSettings::showMenuTitles()) { insertSeparator(RecentlyLaunchedApps::self().m_nNumMenuItems); } } }
void QSettingsSysPrivate::searchPath( HKEY &scope, QString &path, REGSAM access, bool global, bool readonly ) { const HKEY scopes[ 2 ] = { HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE }; for ( QStringList::Iterator it = searchPaths.fromLast(); it != searchPaths.end(); --it ) { QString search_key; HKEY res_key; if ( ( *it ).length() ) search_key = "Software\\" + ( *it ); if ( path.length() ) search_key += "\\" + path; search_key = search_key.replace( QRegExp( "(\\\\)+" ), "\\" ); /* Now try to open this key */ int i = global ? 1 : 0; for ( i ; i < 2; i++ ) { long ret; if ( readonly ) ret = QT_WA_INLINE( RegOpenKeyExW( scopes[ i ], ( LPCTSTR ) search_key.ucs2(), 0, access, &res_key ), RegOpenKeyExA( scopes[ i ], ( LPCSTR ) search_key.latin1(), 0, access, &res_key ) ); else ret = QT_WA_INLINE( RegCreateKeyExW( scopes[ i ], ( LPCTSTR ) search_key.ucs2(), 0, NULL, REG_OPTION_NON_VOLATILE, access, NULL, &res_key , NULL ), RegCreateKeyExA( scopes[ i ], ( LPCSTR ) search_key.latin1(), 0, NULL, REG_OPTION_NON_VOLATILE, access, NULL, &res_key , NULL ) ); /* key found :) */ if ( ret == ERROR_SUCCESS ) { RegCloseKey( res_key ); scope = scopes[ i ]; path = search_key; return ; } } } /* No key found -> use first path */ scope = global ? scopes[ 1 ] : scopes[ 0 ]; QString new_path = searchPaths.last(); if ( new_path.length() && path.length() ) new_path += "\\"; new_path += path; while ( new_path[ 0 ] == '\\' ) new_path.remove( 0, 1 ); path = new_path; }
void KRecentDirs::add(const QString &fileClass, const QString &directory) { QString key = fileClass; QStringList result; KConfig *config = recentdirs_readList(key, result, false); // make sure the dir is first in history result.remove(directory); result.prepend(directory); while(result.count() > MAX_DIR_HISTORY) result.remove(result.fromLast()); config->writePathEntry(key, result); recentdirs_done(config); }
/*! Attention: this function has to be in sync with Resource::saveProperty() and DomTool::elementToVariant. If you change one, change all. */ QString Uic::setObjectProperty( const QString& objClass, const QString& obj, const QString &prop, const QDomElement &e, bool stdset ) { QString v; if ( e.tagName() == "rect" ) { QDomElement n3 = e.firstChild().toElement(); int x = 0, y = 0, w = 0, h = 0; while ( !n3.isNull() ) { if ( n3.tagName() == "x" ) x = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "y" ) y = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "width" ) w = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "height" ) h = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } v = "QRect( %1, %2, %3, %4 )"; v = v.arg(x).arg(y).arg(w).arg(h); } else if ( e.tagName() == "point" ) { QDomElement n3 = e.firstChild().toElement(); int x = 0, y = 0; while ( !n3.isNull() ) { if ( n3.tagName() == "x" ) x = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "y" ) y = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } v = "QPoint( %1, %2 )"; v = v.arg(x).arg(y); } else if ( e.tagName() == "size" ) { QDomElement n3 = e.firstChild().toElement(); int w = 0, h = 0; while ( !n3.isNull() ) { if ( n3.tagName() == "width" ) w = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "height" ) h = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } v = "QSize( %1, %2 )"; v = v.arg(w).arg(h); } else if ( e.tagName() == "color" ) { QDomElement n3 = e.firstChild().toElement(); int r = 0, g = 0, b = 0; while ( !n3.isNull() ) { if ( n3.tagName() == "red" ) r = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "green" ) g = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "blue" ) b = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } v = "QColor( %1, %2, %3 )"; v = v.arg(r).arg(g).arg(b); } else if ( e.tagName() == "font" ) { QDomElement n3 = e.firstChild().toElement(); QString attrname = e.parentNode().toElement().attribute( "name", "font" ); QString fontname; if ( !obj.isEmpty() ) { fontname = registerObject( obj + "_" + attrname ); out << indent << "QFont " << fontname << "( " << obj << "->font() );" << endl; } else { fontname = registerObject( "f" ); out << indent << "QFont " << fontname << "( font() );" << endl; } while ( !n3.isNull() ) { if ( n3.tagName() == "family" ) out << indent << fontname << ".setFamily( \"" << n3.firstChild().toText().data() << "\" );" << endl; else if ( n3.tagName() == "pointsize" ) out << indent << fontname << ".setPointSize( " << n3.firstChild().toText().data() << " );" << endl; else if ( n3.tagName() == "bold" ) out << indent << fontname << ".setBold( " << mkBool( n3.firstChild().toText().data() ) << " );" << endl; else if ( n3.tagName() == "italic" ) out << indent << fontname << ".setItalic( " << mkBool( n3.firstChild().toText().data() ) << " );" << endl; else if ( n3.tagName() == "underline" ) out << indent << fontname << ".setUnderline( " << mkBool( n3.firstChild().toText().data() ) << " );" << endl; else if ( n3.tagName() == "strikeout" ) out << indent << fontname << ".setStrikeOut( " << mkBool( n3.firstChild().toText().data() ) << " );" << endl; n3 = n3.nextSibling().toElement(); } if ( prop == "font" ) { if ( !obj.isEmpty() ) out << indent << obj << "->setFont( " << fontname << " ); " << endl; else out << indent << "setFont( " << fontname << " ); " << endl; } else { v = fontname; } } else if ( e.tagName() == "string" ) { QString txt = e.firstChild().toText().data(); QString com = getComment( e.parentNode() ); if ( prop == "toolTip" && objClass != "QAction" && objClass != "QActionGroup" ) { if ( !obj.isEmpty() ) trout << indent << "QToolTip::add( " << obj << ", " << trcall( txt, com ) << " );" << endl; else trout << indent << "QToolTip::add( this, " << trcall( txt, com ) << " );" << endl; } else if ( prop == "whatsThis" && objClass != "QAction" && objClass != "QActionGroup" ) { if ( !obj.isEmpty() ) trout << indent << "QWhatsThis::add( " << obj << ", " << trcall( txt, com ) << " );" << endl; else trout << indent << "QWhatsThis::add( this, " << trcall( txt, com ) << " );" << endl; } else { v = trcall( txt, com ); } } else if ( e.tagName() == "cstring" ) { v = "\"%1\""; v = v.arg( e.firstChild().toText().data() ); } else if ( e.tagName() == "number" ) { v = "%1"; v = v.arg( e.firstChild().toText().data() ); } else if ( e.tagName() == "bool" ) { if ( stdset ) v = "%1"; else v = "QVariant( %1, 0 )"; v = v.arg( mkBool( e.firstChild().toText().data() ) ); } else if ( e.tagName() == "pixmap" ) { v = e.firstChild().toText().data(); if ( !pixmapLoaderFunction.isEmpty() ) { v.prepend( pixmapLoaderFunction + "( " + QString( externPixmaps ? "\"" : "" ) ); v.append( QString( externPixmaps ? "\"" : "" ) + " )" ); } } else if ( e.tagName() == "iconset" ) { v = "QIconSet( %1 )"; QString s = e.firstChild().toText().data(); if ( !pixmapLoaderFunction.isEmpty() ) { s.prepend( pixmapLoaderFunction + "( " + QString( externPixmaps ? "\"" : "" ) ); s.append( QString( externPixmaps ? "\"" : "" ) + " )" ); } v = v.arg( s ); } else if ( e.tagName() == "image" ) { v = e.firstChild().toText().data() + ".convertToImage()"; } else if ( e.tagName() == "enum" ) { if ( stdset ) v = "%1::%2"; else v = "\"%1\""; QString oc = objClass; QString ev = e.firstChild().toText().data(); if ( oc == "QListView" && ev == "Manual" ) // #### workaround, rename QListView::Manual in 4.0 oc = "QScrollView"; if ( stdset ) v = v.arg( oc ).arg( ev ); else v = v.arg( ev ); } else if ( e.tagName() == "set" ) { QString keys( e.firstChild().toText().data() ); QStringList lst = QStringList::split( '|', keys ); v = "int( "; QStringList::Iterator it = lst.begin(); while ( it != lst.end() ) { v += objClass + "::" + *it; if ( it != lst.fromLast() ) v += " | "; ++it; } v += " )"; } else if ( e.tagName() == "sizepolicy" ) { QDomElement n3 = e.firstChild().toElement(); QSizePolicy sp; while ( !n3.isNull() ) { if ( n3.tagName() == "hsizetype" ) sp.setHorData( (QSizePolicy::SizeType)n3.firstChild().toText().data().toInt() ); else if ( n3.tagName() == "vsizetype" ) sp.setVerData( (QSizePolicy::SizeType)n3.firstChild().toText().data().toInt() ); else if ( n3.tagName() == "horstretch" ) sp.setHorStretch( n3.firstChild().toText().data().toInt() ); else if ( n3.tagName() == "verstretch" ) sp.setVerStretch( n3.firstChild().toText().data().toInt() ); n3 = n3.nextSibling().toElement(); } QString tmp; if ( !obj.isEmpty() ) tmp = obj + "->"; v = "QSizePolicy( (QSizePolicy::SizeType)%1, (QSizePolicy::SizeType)%2, %3, %4, " + tmp + "sizePolicy().hasHeightForWidth() )"; v = v.arg( (int)sp.horData() ).arg( (int)sp.verData() ).arg( sp.horStretch() ).arg( sp.verStretch() ); } else if ( e.tagName() == "palette" ) { QPalette pal; bool no_pixmaps = e.elementsByTagName( "pixmap" ).count() == 0; QDomElement n; if ( no_pixmaps ) { n = e.firstChild().toElement(); while ( !n.isNull() ) { QColorGroup cg; if ( n.tagName() == "active" ) { cg = loadColorGroup( n ); pal.setActive( cg ); } else if ( n.tagName() == "inactive" ) { cg = loadColorGroup( n ); pal.setInactive( cg ); } else if ( n.tagName() == "disabled" ) { cg = loadColorGroup( n ); pal.setDisabled( cg ); } n = n.nextSibling().toElement(); } } if ( no_pixmaps && pal == QPalette( pal.active().button(), pal.active().background() ) ) { v = "QPalette( QColor( %1, %2, %3 ), QColor( %1, %2, %3 ) )"; v = v.arg( pal.active().button().red() ).arg( pal.active().button().green() ).arg( pal.active().button().blue() ); v = v.arg( pal.active().background().red() ).arg( pal.active().background().green() ).arg( pal.active().background().blue() ); } else { QString palette = "pal"; if ( !pal_used ) { out << indent << "QPalette " << palette << ";" << endl; pal_used = TRUE; } QString cg = "cg"; if ( !cg_used ) { out << indent << "QColorGroup " << cg << ";" << endl; cg_used = TRUE; } n = e.firstChild().toElement(); while ( !n.isNull() && n.tagName() != "active" ) n = n.nextSibling().toElement(); createColorGroupImpl( cg, n ); out << indent << palette << ".setActive( " << cg << " );" << endl; n = e.firstChild().toElement(); while ( !n.isNull() && n.tagName() != "inactive" ) n = n.nextSibling().toElement(); createColorGroupImpl( cg, n ); out << indent << palette << ".setInactive( " << cg << " );" << endl; n = e.firstChild().toElement(); while ( !n.isNull() && n.tagName() != "disabled" ) n = n.nextSibling().toElement(); createColorGroupImpl( cg, n ); out << indent << palette << ".setDisabled( " << cg << " );" << endl; v = palette; } } else if ( e.tagName() == "cursor" ) { v = "QCursor( %1 )"; v = v.arg( e.firstChild().toText().data() ); } else if ( e.tagName() == "date" ) { QDomElement n3 = e.firstChild().toElement(); int y, m, d; y = m = d = 0; while ( !n3.isNull() ) { if ( n3.tagName() == "year" ) y = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "month" ) m = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "day" ) d = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } v = "QDate( %1, %2, %3 )"; v = v.arg(y).arg(m).arg(d); } else if ( e.tagName() == "time" ) { QDomElement n3 = e.firstChild().toElement(); int h, m, s; h = m = s = 0; while ( !n3.isNull() ) { if ( n3.tagName() == "hour" ) h = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "minute" ) m = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "second" ) s = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } v = "QTime( %1, %2, %3 )"; v = v.arg(h).arg(m).arg(s); } else if ( e.tagName() == "datetime" ) { QDomElement n3 = e.firstChild().toElement(); int h, mi, s, y, mo, d; h = mi = s = y = mo = d = 0; while ( !n3.isNull() ) { if ( n3.tagName() == "hour" ) h = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "minute" ) mi = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "second" ) s = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "year" ) y = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "month" ) mo = n3.firstChild().toText().data().toInt(); else if ( n3.tagName() == "day" ) d = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } v = "QDateTime( QDate( %1, %2, %3 ), QTime( %4, %5, %6 ) )"; v = v.arg(y).arg(mo).arg(d).arg(h).arg(mi).arg(s); } else if ( e.tagName() == "stringlist" ) { QStringList l; QDomElement n3 = e.firstChild().toElement(); QString listname = "l"; if ( !obj.isEmpty() ) { listname = obj + "_stringlist"; listname = registerObject( listname ); out << indent << "QStringList " << listname << ";" << endl; } else { listname = registerObject( listname ); out << indent << "QStringList " << listname << ";" << endl; } while ( !n3.isNull() ) { if ( n3.tagName() == "string" ) out << indent << listname << " << \"" << n3.firstChild().toText().data().simplifyWhiteSpace() << "\";" << endl; n3 = n3.nextSibling().toElement(); } v = listname; } return v; }
static void parse( MetaTranslator *tor, const char *initialContext, const char *defaultContext ) { QMap<QCString, QCString> qualifiedContexts; QStringList namespaces; QCString context; QCString text; QCString com; QCString functionContext = initialContext; QCString prefix; bool utf8 = FALSE; bool missing_Q_OBJECT = FALSE; yyTok = getToken(); while ( yyTok != Tok_Eof ) { switch ( yyTok ) { case Tok_class: /* Partial support for inlined functions. */ yyTok = getToken(); if ( yyBraceDepth == (int) namespaces.count() && yyParenDepth == 0 ) { do { /* This code should execute only once, but we play safe with impure definitions such as 'class Q_EXPORT QMessageBox', in which case 'QMessageBox' is the class name, not 'Q_EXPORT'. */ functionContext = yyIdent; yyTok = getToken(); } while ( yyTok == Tok_Ident ); while ( yyTok == Tok_Gulbrandsen ) { yyTok = getToken(); functionContext += "::"; functionContext += yyIdent; yyTok = getToken(); } if ( yyTok == Tok_Colon ) { missing_Q_OBJECT = TRUE; } else { functionContext = defaultContext; } } break; case Tok_namespace: yyTok = getToken(); if ( yyTok == Tok_Ident ) { QCString ns = yyIdent; yyTok = getToken(); if ( yyTok == Tok_LeftBrace && yyBraceDepth == (int) namespaces.count() + 1 ) namespaces.append( QString(ns) ); } break; case Tok_tr: case Tok_trUtf8: utf8 = ( yyTok == Tok_trUtf8 ); yyTok = getToken(); if ( match(Tok_LeftParen) && matchString(&text) ) { com = ""; if ( match(Tok_RightParen) || (match(Tok_Comma) && matchString(&com) && match(Tok_RightParen)) ) { if ( prefix.isNull() ) { context = functionContext; if ( !namespaces.isEmpty() ) context.prepend( (namespaces.join(QString("::")) + QString("::")).latin1() ); } else { context = prefix; } prefix = (const char *) 0; if ( qualifiedContexts.contains(context) ) context = qualifiedContexts[context]; tor->insert( MetaTranslatorMessage(context, text, com, QString::null, utf8) ); if ( lacks_Q_OBJECT.contains(context) ) { qWarning( "%s:%d: Class '%s' lacks Q_OBJECT macro", (const char *) yyFileName, yyLineNo, (const char *) context ); lacks_Q_OBJECT.remove( context ); } else { needs_Q_OBJECT.insert( context, 0 ); } } } break; case Tok_translate: utf8 = FALSE; yyTok = getToken(); if ( match(Tok_LeftParen) && matchString(&context) && match(Tok_Comma) && matchString(&text) ) { com = ""; if ( match(Tok_RightParen) || (match(Tok_Comma) && matchString(&com) && (match(Tok_RightParen) || match(Tok_Comma) && matchEncoding(&utf8) && match(Tok_RightParen))) ) tor->insert( MetaTranslatorMessage(context, text, com, QString::null, utf8) ); } break; case Tok_Q_OBJECT: missing_Q_OBJECT = FALSE; yyTok = getToken(); break; case Tok_Ident: if ( !prefix.isNull() ) prefix += "::"; prefix += yyIdent; yyTok = getToken(); if ( yyTok != Tok_Gulbrandsen ) prefix = (const char *) 0; break; case Tok_Comment: com = yyComment; com = com.simplifyWhiteSpace(); if ( com.left(sizeof(MagicComment) - 1) == MagicComment ) { com.remove( 0, sizeof(MagicComment) - 1 ); int k = com.find( ' ' ); if ( k == -1 ) { context = com; } else { context = com.left( k ); com.remove( 0, k + 1 ); tor->insert( MetaTranslatorMessage(context, "", com, QString::null, FALSE) ); } /* Provide a backdoor for people using "using namespace". See the manual for details. */ k = 0; while ( (k = context.find("::", k)) != -1 ) { qualifiedContexts.insert( context.mid(k + 2), context ); k++; } } yyTok = getToken(); break; case Tok_Arrow: yyTok = getToken(); if ( yyTok == Tok_tr || yyTok == Tok_trUtf8 ) qWarning( "%s:%d: Cannot invoke tr() like this", (const char *) yyFileName, yyLineNo ); break; case Tok_Gulbrandsen: // at top level? if ( yyBraceDepth == (int) namespaces.count() && yyParenDepth == 0 ) functionContext = prefix; yyTok = getToken(); break; case Tok_RightBrace: case Tok_Semicolon: if ( yyBraceDepth >= 0 && yyBraceDepth + 1 == (int) namespaces.count() ) namespaces.remove( namespaces.fromLast() ); if ( yyBraceDepth == (int) namespaces.count() ) { if ( missing_Q_OBJECT ) { if ( needs_Q_OBJECT.contains(functionContext) ) { qWarning( "%s:%d: Class '%s' lacks Q_OBJECT macro", (const char *) yyFileName, yyLineNo, (const char *) functionContext ); } else { lacks_Q_OBJECT.insert( functionContext, 0 ); } } functionContext = defaultContext; missing_Q_OBJECT = FALSE; } yyTok = getToken(); break; default: yyTok = getToken(); } } if ( yyBraceDepth != 0 ) fprintf( stderr, "%s:%d: Unbalanced braces in C++ code (or abuse of the C++" " preprocessor)\n", (const char *)yyFileName, yyBraceLineNo ); else if ( yyParenDepth != 0 ) fprintf( stderr, "%s:%d: Unbalanced parentheses in C++ code (or abuse of the C++" " preprocessor)\n", (const char *)yyFileName, yyParenLineNo ); }
void PanelKMenu::updateRecent() { if (!RecentlyLaunchedApps::self().m_bNeedToUpdate) { return; } RecentlyLaunchedApps::self().m_bNeedToUpdate = false; int nId = serviceMenuEndId() + 1; // remove previous items if (RecentlyLaunchedApps::self().m_nNumMenuItems > 0) { // -1 --> menu title int i = KickerSettings::showMenuTitles() ? -1 : 0; for (; i < RecentlyLaunchedApps::self().m_nNumMenuItems; i++) { removeItem(nId + i); entryMap_.remove(nId + i); } RecentlyLaunchedApps::self().m_nNumMenuItems = 0; if (!KickerSettings::showMenuTitles()) { removeItemAt(0); } } // insert new items QStringList RecentApps; RecentlyLaunchedApps::self().getRecentApps(RecentApps); if (RecentApps.count() > 0) { bool bNeedSeparator = KickerSettings::showMenuTitles(); for (QList<QString>::iterator it = RecentApps.fromLast(); /*nop*/; --it) { KService::Ptr s = KService::serviceByDesktopPath(*it); if (!s) { RecentlyLaunchedApps::self().removeItem(*it); } else { if (bNeedSeparator) { bNeedSeparator = false; addSeparator(); /* FIXME: no more titles! int id = insertTitle( RecentlyLaunchedApps::self().caption(), nId - 1, 0); setItemEnabled( id, false ); */ } insertMenuItem(s, nId++, KickerSettings::showMenuTitles() ? 1 : 0); RecentlyLaunchedApps::self().m_nNumMenuItems++; } if (it == RecentApps.begin()) break; } if (!KickerSettings::showMenuTitles()) { insertSeparator(RecentlyLaunchedApps::self().m_nNumMenuItems); } } }
/** * Create the amarok gui from the xml file. */ void PlaylistWindow::createGUI() { setUpdatesEnabled( false ); m_toolbar->clear(); //KActions don't unplug themselves when the widget that is plugged is deleted! //we need to unplug to detect if the menu is plugged in App::applySettings() //TODO report to bugs.kde.org //we unplug after clear as otherwise it crashes! dunno why.. KActionPtrList actions = actionCollection()->actions(); for( KActionPtrList::Iterator it = actions.begin(), end = actions.end(); it != end; ++it ) { (*it)->unplug( m_toolbar ); } KXMLGUIBuilder builder( this ); KXMLGUIFactory factory( &builder, this ); //build Toolbar, plug actions factory.addClient( this ); //TEXT ON RIGHT HACK //KToolBarButtons have independent settings for their appearance. //KToolBarButton::modeChange() causes that button to set its mode to that of its parent KToolBar //KToolBar::setIconText() calls modeChange() for children, unless 2nd param is false QStringList list; list << "toolbutton_playlist_add" // << "toolbutton_playlist_clear" // << "toolbutton_playlist_shuffle" // << "toolbutton_playlist_show" << "toolbutton_burn_menu" << "toolbutton_amarok_menu"; m_toolbar->setIconText( KToolBar::IconTextRight, false ); //we want some buttons to have text on right const QStringList::ConstIterator end = list.constEnd(); const QStringList::ConstIterator last = list.fromLast(); for( QStringList::ConstIterator it = list.constBegin(); it != end; ++it ) { KToolBarButton* const button = static_cast<KToolBarButton*>( m_toolbar->child( (*it).latin1() ) ); if ( it == last ) { //if the user has no PlayerWindow, he MUST have the menu action plugged //NOTE this is not saved to the local XMLFile, which is what the user will want if ( !AmarokConfig::showPlayerWindow() && !AmarokConfig::showMenuBar() && !button ) actionCollection()->action( "amarok_menu" )->plug( m_toolbar ); } if ( button ) { button->modeChange(); button->setFocusPolicy( QWidget::NoFocus ); } } if ( AmarokConfig::showMenuBar() ) { if ( actionCollection()->action( "amarok_menu" )->isPlugged() ) actionCollection()->action( "amarok_menu" )->unplugAll(); } m_toolbar->setIconText( KToolBar::IconOnly, false ); //default appearance conserveMemory(); setUpdatesEnabled( true ); }
bool KConfigINIBackEnd::parseConfigFiles() { // Check if we can write to the local file. mConfigState = KConfigBase::ReadOnly; if(!mLocalFileName.isEmpty() && !pConfig->isReadOnly()) { if(checkAccess(mLocalFileName, W_OK)) { mConfigState = KConfigBase::ReadWrite; } else { // Create the containing dir, maybe it wasn't there KURL path; path.setPath(mLocalFileName); QString dir = path.directory(); KStandardDirs::makeDir(dir); if(checkAccess(mLocalFileName, W_OK)) { mConfigState = KConfigBase::ReadWrite; } } QFileInfo info(mLocalFileName); d->localLastModified = info.lastModified(); d->localLastSize = info.size(); } // Parse all desired files from the least to the most specific. bFileImmutable = false; // Parse the general config files if(useKDEGlobals) { QStringList kdercs = KGlobal::dirs()->findAllResources("config", QString::fromLatin1("kdeglobals")); QString etc_kderc = QString::fromLatin1("/etc/kderc"); if(checkAccess(etc_kderc, R_OK)) kdercs += etc_kderc; kdercs += KGlobal::dirs()->findAllResources("config", QString::fromLatin1("system.kdeglobals")); QStringList::ConstIterator it; for(it = kdercs.fromLast(); it != kdercs.end(); --it) { QFile aConfigFile(*it); if(!aConfigFile.open(IO_ReadOnly)) continue; parseSingleConfigFile(aConfigFile, 0L, true, (*it != mGlobalFileName)); aConfigFile.close(); if(bFileImmutable) break; } } bool bReadFile = !mfileName.isEmpty(); while(bReadFile) { bReadFile = false; QString bootLanguage; if(useKDEGlobals && localeString.isEmpty() && !KGlobal::_locale) { // Boot strap language bootLanguage = KLocale::_initLanguage(pConfig); setLocaleString(bootLanguage.utf8()); } bFileImmutable = false; QStringList list; if(!QDir::isRelativePath(mfileName)) list << mfileName; else list = KGlobal::dirs()->findAllResources(resType, mfileName); QStringList::ConstIterator it; for(it = list.fromLast(); it != list.end(); --it) { QFile aConfigFile(*it); // we can already be sure that this file exists bool bIsLocal = (*it == mLocalFileName); if(aConfigFile.open(IO_ReadOnly)) { parseSingleConfigFile(aConfigFile, 0L, false, !bIsLocal); aConfigFile.close(); if(bFileImmutable) break; } } if(KGlobal::dirs()->isRestrictedResource(resType, mfileName)) bFileImmutable = true; QString currentLanguage; if(!bootLanguage.isEmpty()) { currentLanguage = KLocale::_initLanguage(pConfig); // If the file changed the language, we need to read the file again // with the new language setting. if(bootLanguage != currentLanguage) { bReadFile = true; setLocaleString(currentLanguage.utf8()); } } } if(bFileImmutable) mConfigState = KConfigBase::ReadOnly; return true; }
// Return the call tip for a function. QStringList QsciAPIs::callTips(const QStringList &context, int commas, QsciScintilla::CallTipsStyle style, QValueList<int> &shifts) { QString path; QStringList new_context = positionOrigin(context, path); QStringList wseps = lexer()->autoCompletionWordSeparators(); QStringList cts; if (origin_len > 0) { QStringList::const_iterator it = origin; QString prev; // Work out the length of the context. const QString &wsep = wseps.first(); QStringList strip = QStringList::split(wsep, path); strip.remove(strip.fromLast()); int ctstart = strip.join(wsep).length(); if (ctstart) ctstart += wsep.length(); int shift; if (style == QsciScintilla::CallTipsContext) { shift = ctstart; ctstart = 0; } else shift = 0; // Make sure we only look at the functions we are interested in. path.append('('); while (it != prep->raw_apis.end() && (*it).startsWith(path)) { QString w = (*it).mid(ctstart); if (w != prev && enoughCommas(w, commas)) { shifts << shift; cts << w; prev = w; } ++it; } } else { const QString &fname = new_context[new_context.count() - 2]; // Find everywhere the function name appears in the APIs. const WordIndexList *wil = wordIndexOf(fname); if (wil) for (int i = 0; i < wil->count(); ++i) { const WordIndex &wi = (*wil)[i]; QStringList awords = prep->apiWords(wi.first, wseps, true); // Check the word is the function name and not part of any // context. if (wi.second != awords.count() - 1) continue; const QString &api = prep->raw_apis[wi.first]; int tail = api.find('('); if (tail < 0) continue; if (!enoughCommas(api, commas)) continue; if (style == QsciScintilla::CallTipsNoContext) { shifts << 0; cts << (fname + api.mid(tail)); } else { shifts << tail - fname.length(); cts << api; } } } return cts; }
/*! Creates a declaration (header file) for the form given in \a e \sa createFormImpl(), createObjectDecl() */ void Uic::createFormDecl( const QDomElement &e ) { QDomElement n; QDomNodeList nl; int i; QString objClass = getClassName( e ); if ( objClass.isEmpty() ) return; QString objName = getObjectName( e ); QStringList typeDefs; QMap<QString, CustomInclude> customWidgetIncludes; QString imageMembers; /* We are generating a few QImage members that are not strictly necessary in some cases. Ideally, we would use requiredImage, which is computed elsewhere, to keep the generated .h and .cpp files synchronized. */ // at first the images QMap<QString, int> customWidgets; QStringList forwardDecl; QStringList forwardDecl2; QString exportMacro; for ( n = e; !n.isNull(); n = n.nextSibling().toElement() ) { if ( n.tagName() == "images" ) { nl = n.elementsByTagName( "image" ); for ( i = 0; i < (int) nl.length(); i++ ) { QString img = registerObject( nl.item(i).toElement().attribute("name") ); registerObject( img ); imageMembers += QString( " QPixmap %1;\n" ).arg( img ); } } else if ( n.tagName() == "customwidgets" ) { QDomElement n2 = n.firstChild().toElement(); while ( !n2.isNull() ) { if ( n2.tagName() == "customwidget" ) { QDomElement n3 = n2.firstChild().toElement(); QString cl; WidgetDatabaseRecord *r = new WidgetDatabaseRecord; while ( !n3.isNull() ) { if ( n3.tagName() == "class" ) { cl = n3.firstChild().toText().data(); if ( !nofwd ) forwardDecl << cl; customWidgets.insert( cl, 0 ); r->name = cl; } else if ( n3.tagName() == "header" ) { CustomInclude ci; ci.header = n3.firstChild().toText().data(); ci.location = n3.attribute( "location", "global" ); r->includeFile = ci.header; customWidgetIncludes.insert( cl, ci ); } WidgetDatabase::append( r ); n3 = n3.nextSibling().toElement(); } } n2 = n2.nextSibling().toElement(); } } } // register the object and unify its name objName = registerObject( objName ); QString protector = objName.upper() + "_H"; protector.replace( "::", "_" ); out << "#ifndef " << protector << endl; out << "#define " << protector << endl; out << endl; out << "#include <qvariant.h>" << endl; // for broken HP-UX compilers if ( !imageMembers.isEmpty() ) out << "#include <qpixmap.h>" << endl; QStringList globalIncludes, localIncludes; int wid = WidgetDatabase::idFromClassName( objClass ); { QMap<QString, CustomInclude>::Iterator it = customWidgetIncludes.find( objClass ); if ( it != customWidgetIncludes.end() ) { if ( ( *it ).location == "global" ) globalIncludes += (*it).header; else localIncludes += (*it).header; } else { globalIncludes += WidgetDatabase::includeFile( wid ); } } nl = e.parentNode().toElement().elementsByTagName( "include" ); for ( i = 0; i < (int) nl.length(); i++ ) { QDomElement n2 = nl.item(i).toElement(); QString s = n2.firstChild().toText().data(); if ( n2.attribute( "impldecl", "in implementation" ) == "in declaration" && n2.attribute( "location" ) != "local" ) { if ( s.right( 5 ) == ".ui.h" ) continue; globalIncludes += s; } } for ( i = 0; i < (int) nl.length(); i++ ) { QDomElement n2 = nl.item(i).toElement(); QString s = n2.firstChild().toText().data(); if ( n2.attribute( "impldecl", "in implementation" ) == "in declaration" && n2.attribute( "location" ) == "local" &&!globalIncludes.contains( s ) ) { if ( s.right( 5 ) == ".ui.h" ) continue; localIncludes += s; } } QStringList::Iterator it; globalIncludes = unique( globalIncludes ); for ( it = globalIncludes.begin(); it != globalIncludes.end(); ++it ) { if ( !(*it).isEmpty() ) out << "#include <" << *it << ">" << endl; } localIncludes = unique( localIncludes ); for ( it = localIncludes.begin(); it != localIncludes.end(); ++it ) { if ( !(*it).isEmpty() ) out << "#include \"" << *it << "\"" << endl; } out << endl; // forward declarations for child widgets and layouts out << "class QVBoxLayout;" << endl; out << "class QHBoxLayout;" << endl; out << "class QGridLayout;" << endl; out << "class QSpacerItem;" << endl; if ( objClass == "QMainWindow" ) { out << "class QAction;" << endl; out << "class QActionGroup;" << endl; out << "class QToolBar;" << endl; out << "class QPopupMenu;" << endl; } bool dbForm = FALSE; registerDatabases( e ); dbConnections = unique( dbConnections ); if ( dbConnections.count() ) forwardDecl += "QSqlDatabase"; if ( dbCursors.count() ) forwardDecl += "QSqlCursor"; if ( dbForms[ "(default)" ].count() ) dbForm = TRUE; bool subDbForms = FALSE; for ( it = dbConnections.begin(); it != dbConnections.end(); ++it ) { if ( !(*it).isEmpty() && (*it) != "(default)" ) { if ( dbForms[ (*it) ].count() ) { subDbForms = TRUE; break; } } } if ( dbForm || subDbForms ) forwardDecl += "QSqlForm"; for ( it = tags.begin(); it != tags.end(); ++it ) { nl = e.parentNode().toElement().elementsByTagName( *it ); for ( i = 1; i < (int) nl.length(); i++ ) { // begin at 1, 0 is the toplevel widget QString s = getClassName( nl.item(i).toElement() ); if ( s == "QLayoutWidget" ) continue; // hide qlayoutwidgets if ( s == "Line" ) s = "QFrame"; if ( !(nofwd && customWidgets.contains(s)) ) forwardDecl += s; if ( s.mid( 1 ) == "ListBox" || s.mid( 1 ) == "ListView" || s.mid( 1 ) == "IconView" ) forwardDecl += "Q" + s.mid( 1 ) + "Item"; if ( s == "QDataTable" ) { // other convenience classes which are used in QDataTable signals, and thus should be forward-declared by uic for us forwardDecl += "QSqlRecord"; } } } // some typedefs, maybe typeDefs = unique( typeDefs ); for ( it = typeDefs.begin(); it != typeDefs.end(); ++it ) { if ( !(*it).isEmpty() ) out << "typedef " << *it << ";" << endl; } nl = e.parentNode().toElement().elementsByTagName( "forward" ); for ( i = 0; i < (int) nl.length(); i++ ) forwardDecl2 << nl.item(i).toElement().firstChild().toText().data(); nl = e.parentNode().toElement().elementsByTagName( "include" ); for ( i = 0; i < (int) nl.length(); i++ ) { QDomElement n2 = nl.item(i).toElement(); QString s = n2.firstChild().toText().data(); if ( n2.attribute( "impldecl", "in implementation" ) == "in declaration" && n2.attribute( "location" ) != "local" ) globalIncludes += s; } for ( i = 0; i < (int) nl.length(); i++ ) { QDomElement n2 = nl.item(i).toElement(); QString s = n2.firstChild().toText().data(); if ( n2.attribute( "impldecl", "in implementation" ) == "in declaration" && n2.attribute( "location" ) == "local" &&!globalIncludes.contains( s ) ) localIncludes += s; } nl = e.parentNode().toElement().elementsByTagName( "exportmacro" ); if ( nl.length() == 1 ) exportMacro = nl.item( 0 ).firstChild().toText().data(); forwardDecl = unique( forwardDecl ); for ( it = forwardDecl.begin(); it != forwardDecl.end(); ++it ) { if ( !(*it).isEmpty() && (*it) != objClass ) { QString forwardName = *it; QStringList forwardNamespaces = QStringList::split( "::", forwardName ); forwardName = forwardNamespaces.last(); forwardNamespaces.remove( forwardNamespaces.fromLast() ); QStringList::ConstIterator ns = forwardNamespaces.begin(); while ( ns != forwardNamespaces.end() ) { out << "namespace " << *ns << " {" << endl; ++ns; } out << "class " << forwardName << ";" << endl; for ( int i = 0; i < (int) forwardNamespaces.count(); i++ ) out << "}" << endl; } } for ( it = forwardDecl2.begin(); it != forwardDecl2.end(); ++it ) { QString fd = *it; fd = fd.stripWhiteSpace(); if ( !fd.endsWith( ";" ) ) fd += ";"; out << fd << endl; } out << endl; QStringList::ConstIterator ns = namespaces.begin(); while ( ns != namespaces.end() ) { out << "namespace " << *ns << " {" << endl; ++ns; } out << "class "; if ( !exportMacro.isEmpty() ) out << exportMacro << " "; out << bareNameOfClass << " : public " << objClass << endl << "{" << endl; /* qmake ignore Q_OBJECT */ out << " Q_OBJECT" << endl; out << endl; out << "public:" << endl; // constructor if ( objClass == "QDialog" || objClass == "QWizard" ) { out << " " << bareNameOfClass << "( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );" << endl; } else if ( objClass == "QWidget" ) { out << " " << bareNameOfClass << "( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );" << endl; } else if ( objClass == "QMainWindow" ) { out << " " << bareNameOfClass << "( QWidget* parent = 0, const char* name = 0, WFlags fl = WType_TopLevel );" << endl; isMainWindow = TRUE; } else { out << " " << bareNameOfClass << "( QWidget* parent = 0, const char* name = 0 );" << endl; } // destructor out << " ~" << bareNameOfClass << "();" << endl; out << endl; // children bool needPolish = FALSE; nl = e.parentNode().toElement().elementsByTagName( "widget" ); for ( i = 1; i < (int) nl.length(); i++ ) { // start at 1, 0 is the toplevel widget n = nl.item(i).toElement(); createObjectDecl( n ); QString t = n.tagName(); if ( t == "vbox" || t == "hbox" || t == "grid" ) createSpacerDecl( n ); QString s = getClassName( n ); if ( s == "QDataTable" || s == "QDataBrowser" ) { if ( isFrameworkCodeGenerated( n ) ) needPolish = TRUE; } } // actions, toolbars, menus for ( n = e; !n.isNull(); n = n.nextSibling().toElement() ) { if ( n.tagName() == "actions" ) { for ( QDomElement a = n.firstChild().toElement(); !a.isNull(); a = a.nextSibling().toElement() ) createActionDecl( a ); } else if ( n.tagName() == "toolbars" ) { for ( QDomElement a = n.firstChild().toElement(); !a.isNull(); a = a.nextSibling().toElement() ) createToolbarDecl( a ); } else if ( n.tagName() == "menubar" ) { out << " " << "QMenuBar *" << getObjectName( n ) << ";" << endl; for ( QDomElement a = n.firstChild().toElement(); !a.isNull(); a = a.nextSibling().toElement() ) createMenuBarDecl( a ); } } out << endl; // database connections dbConnections = unique( dbConnections ); bool hadOutput = FALSE; for ( it = dbConnections.begin(); it != dbConnections.end(); ++it ) { if ( !(*it).isEmpty() ) { // only need pointers to non-default connections if ( (*it) != "(default)" && !(*it).isEmpty() ) { out << indent << "QSqlDatabase* " << *it << "Connection;" << endl; hadOutput = TRUE; } } } if ( hadOutput ) out << endl; QStringList publicSlots, protectedSlots, privateSlots; QStringList publicSlotTypes, protectedSlotTypes, privateSlotTypes; QStringList publicSlotSpecifier, protectedSlotSpecifier, privateSlotSpecifier; nl = e.parentNode().toElement().elementsByTagName( "slot" ); for ( i = 0; i < (int) nl.length(); i++ ) { n = nl.item(i).toElement(); if ( n.parentNode().toElement().tagName() != "slots" && n.parentNode().toElement().tagName() != "connections" ) continue; if ( n.attribute( "language", "C++" ) != "C++" ) continue; QString returnType = n.attribute( "returnType", "void" ); QString functionName = n.firstChild().toText().data().stripWhiteSpace(); if ( functionName.endsWith( ";" ) ) functionName = functionName.left( functionName.length() - 1 ); QString specifier = n.attribute( "specifier" ); QString access = n.attribute( "access" ); if ( access == "protected" ) { protectedSlots += functionName; protectedSlotTypes += returnType; protectedSlotSpecifier += specifier; } else if ( access == "private" ) { privateSlots += functionName; privateSlotTypes += returnType; privateSlotSpecifier += specifier; } else { publicSlots += functionName; publicSlotTypes += returnType; publicSlotSpecifier += specifier; } } QStringList publicFuncts, protectedFuncts, privateFuncts; QStringList publicFunctRetTyp, protectedFunctRetTyp, privateFunctRetTyp; QStringList publicFunctSpec, protectedFunctSpec, privateFunctSpec; nl = e.parentNode().toElement().elementsByTagName( "function" ); for ( i = 0; i < (int) nl.length(); i++ ) { n = nl.item( i ).toElement(); if ( n.parentNode().toElement().tagName() != "functions" ) continue; if ( n.attribute( "language", "C++" ) != "C++" ) continue; QString returnType = n.attribute( "returnType", "void" ); QString functionName = n.firstChild().toText().data().stripWhiteSpace(); if ( functionName.endsWith( ";" ) ) functionName = functionName.left( functionName.length() - 1 ); QString specifier = n.attribute( "specifier" ); QString access = n.attribute( "access" ); if ( access == "protected" ) { protectedFuncts += functionName; protectedFunctRetTyp += returnType; protectedFunctSpec += specifier; } else if ( access == "private" ) { privateFuncts += functionName; privateFunctRetTyp += returnType; privateFunctSpec += specifier; } else { publicFuncts += functionName; publicFunctRetTyp += returnType; publicFunctSpec += specifier; } } QStringList publicVars, protectedVars, privateVars; nl = e.parentNode().toElement().elementsByTagName( "variable" ); for ( i = 0; i < (int)nl.length(); i++ ) { n = nl.item( i ).toElement(); // Because of compatibility the next lines have to be commented out. // Someday it should be uncommented. //if ( n.parentNode().toElement().tagName() != "variables" ) // continue; QString access = n.attribute( "access", "protected" ); QString var = n.firstChild().toText().data().stripWhiteSpace(); if ( !var.endsWith( ";" ) ) var += ";"; if ( access == "public" ) publicVars += var; else if ( access == "private" ) privateVars += var; else protectedVars += var; } if ( !publicVars.isEmpty() ) { for ( it = publicVars.begin(); it != publicVars.end(); ++it ) out << indent << *it << endl; out << endl; } if ( !publicFuncts.isEmpty() ) writeFunctionsDecl( publicFuncts, publicFunctRetTyp, publicFunctSpec ); if ( needPolish || !publicSlots.isEmpty() ) { out << "public slots:" << endl; if ( needPolish ) { out << indent << "virtual void polish();" << endl; out << endl; } if ( !publicSlots.isEmpty() ) writeFunctionsDecl( publicSlots, publicSlotTypes, publicSlotSpecifier ); } // find signals QStringList extraSignals; nl = e.parentNode().toElement().elementsByTagName( "signal" ); for ( i = 0; i < (int) nl.length(); i++ ) { n = nl.item( i ).toElement(); if ( n.parentNode().toElement().tagName() != "signals" && n.parentNode().toElement().tagName() != "connections" ) continue; if ( n.attribute( "language", "C++" ) != "C++" ) continue; QString sigName = n.firstChild().toText().data().stripWhiteSpace(); if ( sigName.endsWith( ";" ) ) sigName = sigName.left( sigName.length() - 1 ); extraSignals += sigName; } // create signals if ( !extraSignals.isEmpty() ) { out << "signals:" << endl; for ( it = extraSignals.begin(); it != extraSignals.end(); ++it ) out << " void " << (*it) << ";" << endl; out << endl; } out << "protected:" << endl; if ( !protectedVars.isEmpty() ) { for ( it = protectedVars.begin(); it != protectedVars.end(); ++it ) out << indent << *it << endl; out << endl; } if ( !protectedFuncts.isEmpty() ) writeFunctionsDecl( protectedFuncts, protectedFunctRetTyp, protectedFunctSpec ); // child layouts registerLayouts( e ); out << endl; #if QT_VERSION >= 0x030900 #error Make languageChange() a virtual protected non-slot member of QWidget #endif out << "protected slots:" << endl; out << " virtual void languageChange();" << endl; if ( !protectedSlots.isEmpty() ) { out << endl; writeFunctionsDecl( protectedSlots, protectedSlotTypes, protectedSlotSpecifier ); } out << endl; // create all private stuff if ( !privateFuncts.isEmpty() || !privateVars.isEmpty() || !imageMembers.isEmpty() ) { out << "private:" << endl; if ( !privateVars.isEmpty() ) { for ( it = privateVars.begin(); it != privateVars.end(); ++it ) out << indent << *it << endl; out << endl; } if ( !imageMembers.isEmpty() ) { out << imageMembers; out << endl; } if ( !privateFuncts.isEmpty() ) writeFunctionsDecl( privateFuncts, privateFunctRetTyp, privateFunctSpec ); } if ( !privateSlots.isEmpty() ) { out << "private slots:" << endl; writeFunctionsDecl( privateSlots, privateSlotTypes, privateSlotSpecifier ); } out << "};" << endl; for ( i = 0; i < (int) namespaces.count(); i++ ) out << "}" << endl; out << endl; out << "#endif // " << protector << endl; }
void Main::loadFeatures(const QString& filename) { QFile file(filename); if ( !file.open(IO_ReadOnly) ) { QMessageBox::warning(this,"Warning", "Cannot open file " + filename); return; } QTextStream s(&file); QRegExp qt_no_xxx("QT_NO_[A-Z_0-9]*"); QStringList sections; #if 1 QString line = s.readLine(); QString feature, lab, sec; QStringList deps, seealso; QMap<QString,QStringList> sectioncontents; while (!s.atEnd()) { if ( line.length() <= 1 ) { if ( !feature.isEmpty() ) { dependencies[feature] = deps; for (QStringList::ConstIterator it = deps.begin(); it!=deps.end(); ++it) rdependencies[*it].append(feature); label[feature] = lab; links[feature] = seealso; section[feature] = sec; sectioncontents[sec].append(feature); choices.append(feature); } else { qDebug("Unparsed text"); } feature = lab = sec = QString::null; deps.clear(); seealso.clear(); line = s.readLine(); continue; } QString nextline = s.readLine(); while ( nextline[0] == ' ' ) { line += nextline; nextline = s.readLine(); } int colon = line.find(':'); if ( colon < 0 ) { qDebug("Cannot parse: %s",line.ascii()); } else { QString tag = line.left(colon); QString value = line.mid(colon+1).stripWhiteSpace(); if ( tag == "Feature" ) feature = value; else if ( tag == "Requires" ) deps = QStringList::split(QChar(' '),value); else if ( tag == "Name" ) lab = value; else if ( tag == "Section" ) sec = value; else if ( tag == "SeeAlso" ) seealso = QStringList::split(QChar(' '),value); } line = nextline; } sections = keys(sectioncontents); #else QString sec; QString lab; QString doc; bool on = FALSE; bool docmode = FALSE; QStringList deps; do { QString line = s.readLine(); line.replace(QRegExp("# *define"),"#define"); QStringList token = QStringList::split(QChar(' '),line); if ( on ) { if ( docmode ) { if ( token[0] == "*/" ) docmode = FALSE; else if ( lab.isEmpty() ) lab = line.stripWhiteSpace(); else doc += line.simplifyWhiteSpace() + "\n"; } else if ( token[0] == "//#define" || token[0] == "#define" ) { dependencies[token[1]] = deps; for (QStringList::ConstIterator it = deps.begin(); it!=deps.end(); ++it) rdependencies[*it].append(token[1]); section[token[1]] = sec; documentation[token[1]] = doc; label[token[1]] = lab; choices.append(token[1]); doc = ""; lab = ""; } else if ( token[0] == "/*!" ) { docmode = TRUE; } else if ( token[0] == "//" ) { token.remove(token.begin()); sec = token.join(" "); sections.append(sec); } else if ( token[0] == "#if" ) { Q_ASSERT(deps.isEmpty()); for (int i=1; i<(int)token.count(); i++) { if ( token[i][0] == 'd' ) { int index; int len; index = qt_no_xxx.match(token[i],0,&len); if ( index >= 0 ) { QString d = token[i].mid(index,len); deps.append(d); } } } } else if ( token[0] == "#endif" ) { deps.clear(); } else if ( token[0].isEmpty() ) { } else { qDebug("Cannot parse: %s",token.join(" ").ascii()); } } else if ( token[0] == "#include" ) { on = TRUE; } } while (!s.atEnd()); #endif lv->clear(); sections.sort(); // ##### QListView default sort order is reverse of insertion order for (QStringList::Iterator se = sections.fromLast(); se != sections.end(); --se) { sectionitem[*se] = new QListViewItem(lv,*se); } for (QStringList::Iterator ch = choices.begin(); ch != choices.end(); ++ch) { createItem(*ch); } #ifdef FIXED_LAYOUT lv->setFixedWidth(lv->sizeHint().width()); #endif }
static void parse( MetaTranslator *tor, const char *initialContext, const char *defaultContext ) { QMap<QCString, QCString> qualifiedContexts; QStringList namespaces; QCString context; QCString ext; QCString text; QCString comment; QCString functionContext = initialContext; QCString prefix; bool utf8 = FALSE; yyTok = getToken(); while ( yyTok != Tok_Eof ) { switch ( yyTok ) { case Tok_i18n: utf8 = FALSE; yyTok = getToken(); if ( match( Tok_LeftParen ) && ( matchString( &context ) || matchSString( &context ) ) && match( Tok_Comma ) && ( matchString( &text ) || matchSString( &text ) ) ) { if ( ( match( Tok_Comma ) && ( matchString( &comment ) || matchSString( &comment ) ) && match( Tok_RightParen ) ) == false ) { comment = ""; } tor->insert( MetaTranslatorMessage( context, text, comment, QString::null, utf8 ) ); } // else // qDebug( " --- token failed ------------" ); break; case Tok_x18n: utf8 = FALSE; yyTok = getToken(); if ( match( Tok_LeftParen ) && ( matchString( &ext ) || matchSString( &ext ) ) && match( Tok_Comma ) && ( matchString( &context ) || matchSString( &context ) ) && match( Tok_Comma ) && ( matchString( &text ) || matchSString( &text ) ) ) { if ( ( match( Tok_Comma ) && ( matchString( &comment ) || matchSString( &comment ) ) && match( Tok_RightParen ) ) == false ) { comment = ""; } tor->insert( MetaTranslatorMessage( context, text, comment, QString::null, utf8 ) ); } // else // qDebug( " --- token failed ------------" ); break; case Tok_Ident: if ( !prefix.isNull() ) prefix += "::"; prefix += yyIdent; yyTok = getToken(); if ( yyTok != Tok_Gulbrandsen ) prefix = (const char *) 0; break; case Tok_Comment: comment = yyComment; comment = comment.simplifyWhiteSpace(); yyTok = getToken(); break; case Tok_Gulbrandsen: // at top level? if ( yyBraceDepth == (int) namespaces.count() && yyParenDepth == 0 ) functionContext = prefix; yyTok = getToken(); break; case Tok_RightBrace: case Tok_Semicolon: if ( yyBraceDepth >= 0 && yyBraceDepth + 1 == (int) namespaces.count() ) namespaces.remove( namespaces.fromLast() ); if ( yyBraceDepth == (int) namespaces.count() ) { functionContext = defaultContext; } yyTok = getToken(); break; default: yyTok = getToken(); } } // if ( yyBraceDepth != 0 ) // qWarning( "%s: Unbalanced braces in PHP code", (const char *) yyFileName ); // if ( yyParenDepth != 0 ) // qWarning( "%s: Unbalanced parentheses in PHP code", (const char *) yyFileName ); }
// copy current artcle for back compatible use only // for new coder please use getArticle static PyObject *qterm_copyArticle(PyObject *, PyObject *args) { long lp; if (!PyArg_ParseTuple(args, "l", &lp)) return NULL; Window *pWin=(Window*)lp; QStringList strList; QString strArticle; while(1) { // check it there is duplicated string // it starts from the end in the range of one screen height // so this is a non-greedy match QString strTemp = pWin->stripWhitespace( pWin->m_pBuffer->screen(0)->getText()); int i=0; int start=0; for(QStringList::Iterator it=strList.fromLast(); it!=strList.begin(), i < pWin->m_pBuffer->line()-1; // not exceeeding the last screen --it, i++) { if(*it!=strTemp) continue; QStringList::Iterator it2 = it; bool dup=true; // match more to see if its duplicated for(int j=0; j<=i; j++, it2++) { QString str1 = pWin->stripWhitespace( pWin->m_pBuffer->screen(j)->getText()); if(*it2!=str1) { dup = false; break; } } if(dup) { // set the start point start = i+1; break; } } // add new lines for(i=start;i<pWin->m_pBuffer->line()-1;i++) strList+=pWin->stripWhitespace( pWin->m_pBuffer->screen(i)->getText()); // the end of article if( pWin->m_pBuffer->screen( pWin->m_pBuffer->line()-1)->getText().find("%") == -1 ) break; // continue pWin->m_pTelnet->write(" ", 1); if(!pWin->m_wcWaiting.wait(10000)) // timeout break; } #if defined(_OS_WIN32_) || defined(Q_OS_WIN32) strArticle = strList.join("\r\n"); #else strArticle = strList.join("\n"); #endif PyObject *py_text = PyString_FromString(strArticle.toLocal8Bit); Py_INCREF(py_text); return py_text; }