📄 main.cpp
字号:
/************************************************************************ Copyright (C) 2000 Trolltech AS. All rights reserved.**** This file is part of Qt GUI 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 <qapplication.h>#include <private/qpluginmanager_p.h>#include <qstringlist.h>#include <qdir.h>#include <stdio.h>#include "filterinterface.h"#include <qfileinfo.h>class Conv2ui {public: Conv2ui(); ~Conv2ui(); bool reinit(); bool convert( const QString & filename, const QDir & dest ); QStringList featureList();private: QString getTag( const QString & filename ); QString absName( const QString & filename ); QPluginManager<ImportFilterInterface> * importFiltersManager;};Conv2ui::Conv2ui() : importFiltersManager( 0 ){ reinit();}Conv2ui::~Conv2ui(){ if ( importFiltersManager ) delete importFiltersManager;}bool Conv2ui::reinit(){ if ( importFiltersManager ) delete importFiltersManager; importFiltersManager = new QPluginManager<ImportFilterInterface>( IID_ImportFilter, QApplication::libraryPaths(), "/designer"); return !!importFiltersManager;}bool Conv2ui::convert( const QString & filename, const QDir & dest ){ if ( !importFiltersManager ) { qWarning( "Conv2ui: no QPluginManager was found" ); return FALSE; } if ( !QFile::exists( absName( filename ) ) ) { qWarning( "Conv2ui: can not find file %s", filename.latin1() ); return FALSE; } QString tag = getTag( filename ); QStringList lst = importFiltersManager->featureList(); for ( QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) { ImportFilterInterface * interface = 0; importFiltersManager->queryInterface( *it, &interface ); if ( !interface ) continue; if ( (*it).contains( tag, FALSE ) ) { // Make sure we output the files in the destination dir QString absfile = absName( filename ); QString current = QDir::currentDirPath(); QDir::setCurrent( dest.absPath() ); interface->import( *it, absfile ); // resulting files go into the current dir QDir::setCurrent( current ); } interface->release(); } return TRUE;}QStringList Conv2ui::featureList(){ if ( !importFiltersManager ) { return 0; } return importFiltersManager->featureList();}QString Conv2ui::getTag( const QString & filename ){ QFileInfo info( filename ); return info.extension();}QString Conv2ui::absName( const QString & filename ){ QString absFileName = QDir::isRelativePath( filename ) ? QDir::currentDirPath() + QDir::separator() + filename : filename; return absFileName;}void printHelpMessage( QStringList & formats ){ printf( "Usage: conv2ui [options] <file> <destination directory>\n\n" ); printf( "Options:\n"); printf( "\t-help\t\tDisplay this information\n" ); printf( "\t-silent\t\tDon't write any messages\n"); printf( "\t-version\tDisplay version of conv2ui\n"); printf( "Supported file formats:\n" ); for ( QStringList::Iterator it = formats.begin(); it != formats.end(); ++it ) printf( "\t%s\n", (*it).latin1() );}void printVersion(){ printf( "Qt user interface file converter for Qt version %s\n", QT_VERSION_STR );}int main( int argc, char ** argv ){ Conv2ui conv; bool help = TRUE; bool silent = FALSE; bool version = FALSE; bool unrecognized = FALSE; // parse options int argi = 1; while ( argi < argc && argv[argi][0] == '-' ) { int i = 1; while ( argv[argi][i] != '\0' ) { if ( argv[argi][i] == 's' ) { silent = TRUE; break; } else if ( argv[argi][i] == 'h' ) { help = TRUE; break; } else if ( argv[argi][i] == 'v' ) { version = TRUE; silent = TRUE; break; } else { unrecognized = TRUE; } i++; } argi++; } // get source file QString src; if ( argv[argi] ) { src = argv[argi++]; } // get destination directory QDir dst; if ( argv[argi] ) { dst.setPath( argv[argi++] ); help = FALSE; } if ( !silent ) { printf( "Qt user interface file converter.\n" ); if ( unrecognized ) { printf( "conv2ui: Unrecognized option\n" ); } } if ( version ) { printVersion(); return 0; } else if ( help ) { QStringList formats = conv.featureList(); printHelpMessage( formats ); return 0; } // do the magic if ( conv.convert( src, dst ) ) return 0; return -1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -