2017-04-01 11:20:13 +00:00
2017-03-29 10:18:37 +00:00
# include "mainwindow.h"
# include "newfiledialog.h"
2017-04-01 11:20:13 +00:00
# include "optionsdialog.h"
2017-03-29 10:18:37 +00:00
# include <QApplication>
2017-04-01 11:20:13 +00:00
# include <QCommandLineParser>
2017-03-30 21:48:36 +00:00
# include <QTextCodec>
2017-03-31 01:45:59 +00:00
# include <QMessageBox>
2017-03-29 10:18:37 +00:00
int main ( int argc , char * argv [ ] )
{
QApplication a ( argc , argv ) ;
2017-04-03 00:18:09 +00:00
a . setOrganizationName ( " iaito " ) ;
a . setApplicationName ( " iaito " ) ;
2017-03-29 10:18:37 +00:00
a . setApplicationVersion ( APP_VERSION ) ;
2017-03-30 21:48:36 +00:00
// Set QString codec to UTF-8
QTextCodec : : setCodecForLocale ( QTextCodec : : codecForName ( " UTF-8 " ) ) ;
# if QT_VERSION < QT_VERSION_CHECK(5,0,0)
QTextCodec : : setCodecForCStrings ( QTextCodec : : codecForName ( " UTF-8 " ) ) ;
QTextCodec : : setCodecForTr ( QTextCodec : : codecForName ( " UTF-8 " ) ) ;
# endif
2017-04-01 11:20:13 +00:00
QCommandLineParser cmdParser ;
cmdParser . setApplicationDescription ( " A Qt and C++ GUI for radare2 reverse engineering framework " ) ;
cmdParser . addHelpOption ( ) ;
cmdParser . addVersionOption ( ) ;
cmdParser . addPositionalArgument ( " filename " , QCoreApplication : : translate ( " main " , " Filename to open. " ) ) ;
cmdParser . process ( a ) ;
QStringList args = cmdParser . positionalArguments ( ) ;
2017-03-31 01:45:59 +00:00
// Check r2 version
QString r2version = r_core_version ( ) ;
QString localVersion = " " R2_GITTAP ;
2017-04-09 19:55:06 +00:00
if ( r2version ! = localVersion )
2017-03-31 01:45:59 +00:00
{
QMessageBox msg ;
msg . setIcon ( QMessageBox : : Critical ) ;
msg . setWindowIcon ( QIcon ( " :/new/prefix1/img/logo-small.png " ) ) ;
msg . setStandardButtons ( QMessageBox : : Yes | QMessageBox : : No ) ;
msg . setWindowTitle ( " Version mismatch! " ) ;
msg . setText ( QString ( " The version used to compile iaito (%1) does not match the binary version of radare2 (%2). This could result in unexpected behaviour. Are you sure you want to continue? " ) . arg ( localVersion , r2version ) ) ;
2017-04-09 19:55:06 +00:00
if ( msg . exec ( ) = = QMessageBox : : No )
2017-03-31 01:45:59 +00:00
return 1 ;
}
2017-04-09 19:55:06 +00:00
if ( args . empty ( ) )
2017-04-01 11:20:13 +00:00
{
NewFileDialog * n = new NewFileDialog ( ) ;
n - > setAttribute ( Qt : : WA_DeleteOnClose ) ;
2017-04-01 11:33:16 +00:00
n - > show ( ) ;
2017-04-01 11:20:13 +00:00
}
else // filename specified as positional argument
{
OptionsDialog * o = new OptionsDialog ( args [ 0 ] ) ;
o - > setAttribute ( Qt : : WA_DeleteOnClose ) ;
2017-04-01 11:33:16 +00:00
o - > show ( ) ;
2017-04-01 11:20:13 +00:00
}
2017-03-29 10:18:37 +00:00
return a . exec ( ) ;
}