diff --git a/ohneschwanzenegger/mainwindow.cpp b/ohneschwanzenegger/mainwindow.cpp index 9fb4757..bca893c 100644 --- a/ohneschwanzenegger/mainwindow.cpp +++ b/ohneschwanzenegger/mainwindow.cpp @@ -35,11 +35,11 @@ MainWindow::MainWindow( QWidget *parent ) : QMainWindow( parent ), ui( new Ui::M max = MAX( max, fm.width( ui->pushButton_initNand->text() ) ); max = MAX( max, fm.width( ui->pushButton_nandPath->text() ) ); - max += 15; - ui->pushButton_CachePathBrowse->setMinimumWidth( max ); - ui->pushButton_GetTitle->setMinimumWidth( max ); - ui->pushButton_initNand->setMinimumWidth( max ); - ui->pushButton_nandPath->setMinimumWidth( max ); + max += 20; + ui->pushButton_CachePathBrowse->setFixedWidth( max ); + ui->pushButton_GetTitle->setFixedWidth( max ); + ui->pushButton_initNand->setFixedWidth( max ); + ui->pushButton_nandPath->setFixedWidth( max ); Wad::SetGlobalCert( QByteArray( (const char*)&certs_dat, CERTS_DAT_SIZE ) ); @@ -117,9 +117,9 @@ void MainWindow::GetError( const QString &message, const NusJob &job ) QString str = tr( "Error getting title from NUS: %1" ).arg( message ); QString j = QString( "NusJob( %1, %2, %3, %4 )
" ) - .arg( job.tid, 16, 16, QChar( '0' ) ) - .arg( job.version ).arg( job.decrypt ? "decrypted" : "encrypted" ) - .arg( dataStuff ); + .arg( job.tid, 16, 16, QChar( '0' ) ) + .arg( job.version ).arg( job.decrypt ? "decrypted" : "encrypted" ) + .arg( dataStuff ); ui->plainTextEdit_log->appendHtml( str ); @@ -299,7 +299,7 @@ void MainWindow::on_actionSetting_txt_triggered() { quint16 r = CreateIfNeeded( "/title/00000001/00000002/data/setting.txt", 0x1000, 1, NAND_FILE, NAND_READ, NAND_READ, NAND_READ ); if( !r || !nand.SetData( r, ba ) - || !nand.WriteMetaData() ) + || !nand.WriteMetaData() ) { ShowMessage( tr( "Error writing setting.txt" ) ); } @@ -371,11 +371,11 @@ void MainWindow::on_actionNew_nand_from_keys_triggered() //these titles should be in order ( not really functional, but to emulate better how the wii comes from the factory ) if( !nand.CreateEntry( "/title/00000001", 0, 0, NAND_DIR, NAND_RW, NAND_RW, NAND_READ ) - || !nand.CreateEntry( "/title/00000001/00000004", 0, 0, NAND_DIR, NAND_RW, NAND_RW, NAND_READ ) - || !nand.CreateEntry( "/title/00000001/00000009", 0, 0, NAND_DIR, NAND_RW, NAND_RW, NAND_READ ) - || !nand.CreateEntry( "/title/00000001/00000002", 0, 0, NAND_DIR, NAND_RW, NAND_RW, NAND_READ ) - || !nand.CreateEntry( "/title/00000001/00000100", 0, 0, NAND_DIR, NAND_RW, NAND_RW, NAND_READ ) - || !nand.CreateEntry( "/title/00000001/00000101", 0, 0, NAND_DIR, NAND_RW, NAND_RW, NAND_READ ) ) + || !nand.CreateEntry( "/title/00000001/00000004", 0, 0, NAND_DIR, NAND_RW, NAND_RW, NAND_READ ) + || !nand.CreateEntry( "/title/00000001/00000009", 0, 0, NAND_DIR, NAND_RW, NAND_RW, NAND_READ ) + || !nand.CreateEntry( "/title/00000001/00000002", 0, 0, NAND_DIR, NAND_RW, NAND_RW, NAND_READ ) + || !nand.CreateEntry( "/title/00000001/00000100", 0, 0, NAND_DIR, NAND_RW, NAND_RW, NAND_READ ) + || !nand.CreateEntry( "/title/00000001/00000101", 0, 0, NAND_DIR, NAND_RW, NAND_RW, NAND_READ ) ) { ShowMessage( "Error creating title subdirs<\b>" ); return; @@ -385,7 +385,7 @@ void MainWindow::on_actionNew_nand_from_keys_triggered() //add some factory test logs and whatnot quint32 _uid = uid.GetUid( NAND_TEST_OWNER, true ); if( !nand.CreateEntry( "/shared2/test", _uid, NAND_TEST_GROUP, NAND_DIR, NAND_RW, NAND_RW, NAND_RW ) - || !nand.CreateEntry( "/shared2/sys", _uid, NAND_TEST_GROUP, NAND_DIR, NAND_RW, NAND_RW, NAND_RW ) ) + || !nand.CreateEntry( "/shared2/sys", _uid, NAND_TEST_GROUP, NAND_DIR, NAND_RW, NAND_RW, NAND_RW ) ) { ShowMessage( "Error creating folder for testlog<\b>" ); return; @@ -774,7 +774,7 @@ bool MainWindow::InstallNUSItem( NusJob job ) //UpdateTree(); return true; error: - ShowMessage( "Error installing title " + title + " to nand" ); + ShowMessage( "Error installing title " + title + " to nand" ); return false; } @@ -782,9 +782,9 @@ bool MainWindow::InstallNUSItem( NusJob job ) void MainWindow::on_actionAbout_triggered() { QString txt = tr( "This is an example program from WiiQt. It is designed to write titles to a nand.bin and even create one from scratch." - "

IT SHOULD ONLY BE USED BY PEOPLE THAT KNOW HOW TO VERIFY THE FILES IT PRODUCES. AND HAVE A WAY TO FIX A BRICKED WII SHOULD THIS PROGRAM HAVE BUGS" - "

YOU HAVE BEEN WARNED" - "
giantpune" ); + "

IT SHOULD ONLY BE USED BY PEOPLE THAT KNOW HOW TO VERIFY THE FILES IT PRODUCES. AND HAVE A WAY TO FIX A BRICKED WII SHOULD THIS PROGRAM HAVE BUGS" + "

YOU HAVE BEEN WARNED" + "
giantpune" ); QMessageBox::critical( this, tr( "svn r%1" ).arg( CleanSvnStr( SVN_REV_STR ) ), txt ); } @@ -916,12 +916,12 @@ void MainWindow::on_actionWrite_meta_entries_triggered() void MainWindow::WriteTestLog() { if( ( !nandInited && !InitNand( ui->lineEdit_nandPath->text() ) ) - || ItemFromPath( "/shared2/test/testlog.txt" ) ) //already exists + || ItemFromPath( "/shared2/test/testlog.txt" ) ) //already exists return; quint32 _uid = uid.GetUid( NAND_TEST_OWNER, true ); if( !CreateIfNeeded( "/shared2/test", _uid, NAND_TEST_GROUP, NAND_DIR, NAND_RW, NAND_RW, NAND_RW ) - || !CreateIfNeeded( "/shared2/sys", _uid, NAND_TEST_GROUP, NAND_DIR, NAND_RW, NAND_RW, NAND_RW ) ) + || !CreateIfNeeded( "/shared2/sys", _uid, NAND_TEST_GROUP, NAND_DIR, NAND_RW, NAND_RW, NAND_RW ) ) { ShowMessage( "Error creating folder for testlog<\b>" ); return; @@ -947,8 +947,8 @@ void MainWindow::on_actionFormat_triggered() if( nand.FilePath().isEmpty() ) return; if( QMessageBox::warning( this, tr( "Format" ), \ - tr( "You are about to format
%1.

This cannot be undone. Are you sure you want to do it?" ).arg( nand.FilePath() ),\ - QMessageBox::Yes | QMessageBox::No, QMessageBox::No ) != QMessageBox::Yes ) + tr( "You are about to format
%1.

This cannot be undone. Are you sure you want to do it?" ).arg( nand.FilePath() ),\ + QMessageBox::Yes | QMessageBox::No, QMessageBox::No ) != QMessageBox::Yes ) return; ShowMessage( "Formatting nand..." ); @@ -960,13 +960,13 @@ void MainWindow::on_actionFormat_triggered() //add folders to root if( !nand.CreateEntry( "/sys", 0, 0, NAND_DIR, NAND_RW, NAND_RW, 0 ) - || !nand.CreateEntry( "/ticket", 0, 0, NAND_DIR, NAND_RW, NAND_RW, 0 ) - || !nand.CreateEntry( "/title", 0, 0, NAND_DIR, NAND_RW, NAND_RW, NAND_READ ) - || !nand.CreateEntry( "/shared1", 0, 0, NAND_DIR, NAND_RW, NAND_RW, 0 ) - || !nand.CreateEntry( "/shared2", 0, 0, NAND_DIR, NAND_RW, NAND_RW, NAND_RW ) - || !nand.CreateEntry( "/import", 0, 0, NAND_DIR, NAND_RW, NAND_RW, 0 ) - || !nand.CreateEntry( "/meta", 0x1000, 1, NAND_DIR, NAND_RW, NAND_RW, NAND_RW ) - || !nand.CreateEntry( "/tmp", 0, 0, NAND_DIR, NAND_RW, NAND_RW, NAND_RW ) ) + || !nand.CreateEntry( "/ticket", 0, 0, NAND_DIR, NAND_RW, NAND_RW, 0 ) + || !nand.CreateEntry( "/title", 0, 0, NAND_DIR, NAND_RW, NAND_RW, NAND_READ ) + || !nand.CreateEntry( "/shared1", 0, 0, NAND_DIR, NAND_RW, NAND_RW, 0 ) + || !nand.CreateEntry( "/shared2", 0, 0, NAND_DIR, NAND_RW, NAND_RW, NAND_RW ) + || !nand.CreateEntry( "/import", 0, 0, NAND_DIR, NAND_RW, NAND_RW, 0 ) + || !nand.CreateEntry( "/meta", 0x1000, 1, NAND_DIR, NAND_RW, NAND_RW, NAND_RW ) + || !nand.CreateEntry( "/tmp", 0, 0, NAND_DIR, NAND_RW, NAND_RW, NAND_RW ) ) { ShowMessage( "Error! Can't create base folders in the new nand." ); return; @@ -996,9 +996,9 @@ void MainWindow::on_actionFormat_triggered() quint32 lower = ( tid & 0xffffffff ); //qDebug() << hex << i << QString( "%1" ).arg( tid, 16, 16, QChar( '0' ) ) << upper << lower << QChar( ( lower >> 24 ) & 0xff ) << ( lower & 0xffffff00 ); if( ( upper == 0x10001 && ( ( lower >> 24 ) & 0xff ) != 0x48 ) || //a channel, not starting with 'H' - lower == 0x48415858 || //original HBC - tid == 0x100000000ull || //bannerbomb -> ATD ( or any other program that uses the SU tid ) - ( upper == 0x10000 && ( ( lower & 0xffffff00 ) == 0x555000 ) ) ) //a disc update partition + lower == 0x48415858 || //original HBC + tid == 0x100000000ull || //bannerbomb -> ATD ( or any other program that uses the SU tid ) + ( upper == 0x10000 && ( ( lower & 0xffffff00 ) == 0x555000 ) ) ) //a disc update partition break; titles++; } @@ -1032,3 +1032,16 @@ void MainWindow::on_actionFormat_triggered() WriteTestLog(); ShowMessage( "Done!" ); } + +// respond to keyboard events +void MainWindow::keyPressEvent( QKeyEvent *event ) +{ + if( event->key() == Qt::Key_Return ) + { + on_pushButton_GetTitle_clicked(); + event->accept(); + return; + } + + event->ignore(); +} diff --git a/ohneschwanzenegger/mainwindow.h b/ohneschwanzenegger/mainwindow.h index 379e6bb..fc2dbb0 100644 --- a/ohneschwanzenegger/mainwindow.h +++ b/ohneschwanzenegger/mainwindow.h @@ -55,6 +55,8 @@ private: QByteArray GenMeta( const QString &desc, quint64 tid, quint16 version ); void WriteTestLog(); +protected: + void keyPressEvent( QKeyEvent* event ); public slots: //slots for getting info from the NUS downloader