⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 config.cpp

📁 Trolltech公司发布的基于C++图形开发环境
💻 CPP
字号:
/************************************************************************ Copyright (C) 2000 Trolltech AS.  All rights reserved.**** This file is part of Qt Designer.**** This file may be distributed and/or modified under the terms of the** GNU General Public License version 2 as published by the Free Software** Foundation and appearing in the file LICENSE.GPL included in the** packaging of this file.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.**** See http://www.trolltech.com/gpl/ for GPL licensing information.**** Contact info@trolltech.com if any conditions of this licensing are** not clear to you.************************************************************************/#include "config.h"#include <qfile.h>#include <qfileinfo.h>#include <qtextstream.h>Config::Config( const QString &fn )    : filename( fn ){    git = groups.end();    read();}Config::~Config(){    write();}void Config::setGroup( const QString &gname ){    QMap< QString, ConfigGroup>::Iterator it = groups.find( gname );    if ( it == groups.end() ) {	ConfigGroup *grp = new ConfigGroup;	git = groups.insert( gname, *grp );	return;    }    git = it;}void Config::writeEntry( const QString &key, const QString &value ){    if ( git == groups.end() ) {	qWarning( "no group set" );	return;    }    ( *git ).insert( key, value );}void Config::writeEntry( const QString &key, int num ){    QString s;    s.setNum( num );    writeEntry( key, s );}#ifdef Q_HAS_BOOL_TYPEvoid Config::writeEntry( const QString &key, bool b ){    QString s;    s.setNum( ( int )b );    writeEntry( key, s );}#endifvoid Config::writeEntry( const QString &key, const QStringList &lst, const QChar &sep ){    QString s;    QStringList::ConstIterator it = lst.begin();    for ( ; it != lst.end(); ++it )	s += *it + sep;    writeEntry( key, s );}QString Config::readEntry( const QString &key, const QString &deflt ){    if ( git == groups.end() ) {	//qWarning( "no group set" );	return deflt;    }    ConfigGroup::Iterator it = ( *git ).find( key );    if ( it != ( *git ).end() )	return *it;    else	return deflt;}int Config::readNumEntry( const QString &key, int deflt ){    QString s = readEntry( key );    if ( s.isEmpty() )	return deflt;    else	return s.toInt();}bool Config::readBoolEntry( const QString &key, bool deflt ){    QString s = readEntry( key );    if ( s.isEmpty() )	return deflt;    else	return (bool)s.toInt();}QStringList Config::readListEntry( const QString &key, const QChar &sep ){    QString s = readEntry( key );    if ( s.isEmpty() )	return QStringList();    else	return QStringList::split( sep, s );}void Config::clearGroup(){    if ( git == groups.end() ) {	qWarning( "no group set" );	return;    }    ( *git ).clear();}void Config::write( const QString &fn ){    if ( !fn.isEmpty() )	filename = fn;    QFile f( filename );    if ( !f.open( IO_WriteOnly ) ) {	qWarning( "could not open for writing `%s'", filename.latin1() );	git = groups.end();	return;    }    QTextStream s( &f );    QMap< QString, ConfigGroup >::Iterator g_it = groups.begin();    for ( ; g_it != groups.end(); ++g_it ) {	s << "[" << g_it.key() << "]" << "\n";	ConfigGroup::Iterator e_it = ( *g_it ).begin();	for ( ; e_it != ( *g_it ).end(); ++e_it )	    s << e_it.key() << " = " << *e_it << "\n";    }    f.close();}void Config::read(){    if ( !QFileInfo( filename ).exists() ) {// 	qWarning( "`%s' doesn't exist", filename.latin1() );	git = groups.end();	return;    }    QFile f( filename );    if ( !f.open( IO_ReadOnly ) ) {	qWarning( "could not open for reading `%s'", filename.latin1() );	git = groups.end();	return;    }    QTextStream s( &f );    QString line;    while ( !s.atEnd() ) {	line = s.readLine();	parse( line );    }    f.close();}void Config::parse( const QString &l ){    QString line = l.stripWhiteSpace();    if ( line[ 0 ] == QChar( '[' ) ) {	QString gname = line;	gname = gname.remove( 0, 1 );	if ( gname[ (int)gname.length() - 1 ] == QChar( ']' ) )	    gname = gname.remove( gname.length() - 1, 1 );	ConfigGroup *grp = new ConfigGroup;	git = groups.insert( gname, *grp );    } else {	if ( git == groups.end() ) {	    qWarning( "line `%s' out of group", line.latin1() );	    return;	}	QStringList lst = QStringList::split( '=', line );	if ( lst.count() != 2 && line.find( '=' ) == -1 ) {	    qWarning( "corrupted line `%s' in group `%s'",		      line.latin1(), git.key().latin1() );	    return;	}	( *git ).insert( lst[ 0 ].stripWhiteSpace(), lst[ 1 ].stripWhiteSpace() );    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -