From d5d094862d4894abb9a3616122e488f34d85bfa9 Mon Sep 17 00:00:00 2001 From: "giantpune@gmail.com" Date: Tue, 4 Jan 2011 02:40:25 +0000 Subject: [PATCH] * adding icons and adjusting layouts for example programs * adjust U8 class for changed round-up macro. still needs to be verified --- .gitattributes | 4 ++++ WiiQt/u8.cpp | 36 +++++++++++++++--------------- nandExtract/icon.png | Bin 0 -> 5140 bytes nandExtract/main.cpp | 1 + nandExtract/nandwindow.cpp | 1 + nandExtract/rc.qrc | 1 + nand_dump/icon.png | Bin 0 -> 7905 bytes nand_dump/main.cpp | 2 ++ nand_dump/mainwindow.cpp | 22 +++++++++++++++++- nand_dump/nand.pro | 3 +++ nand_dump/rc.qrc | 5 +++++ ohneschwanzenegger/icon.png | Bin 0 -> 5343 bytes ohneschwanzenegger/main.cpp | 3 ++- ohneschwanzenegger/mainwindow.cpp | 16 +++++++++++++ ohneschwanzenegger/rc.qrc | 1 + 15 files changed, 75 insertions(+), 20 deletions(-) create mode 100644 nandExtract/icon.png create mode 100755 nand_dump/icon.png create mode 100644 nand_dump/rc.qrc create mode 100644 ohneschwanzenegger/icon.png diff --git a/.gitattributes b/.gitattributes index 05cce83..7a3cea3 100644 --- a/.gitattributes +++ b/.gitattributes @@ -63,6 +63,7 @@ nandExtract/boot2infodialog.h -text nandExtract/boot2infodialog.ui -text nandExtract/green.png -text nandExtract/grey.png -text +nandExtract/icon.png -text nandExtract/main.cpp -text nandExtract/nandExtract.pro -text nandExtract/nandthread.cpp -text @@ -73,12 +74,15 @@ nandExtract/nandwindow.ui -text nandExtract/pink.png -text nandExtract/rc.qrc -text nandExtract/readmii.txt -text +nand_dump/icon.png -text nand_dump/main.cpp -text nand_dump/mainwindow.cpp -text nand_dump/mainwindow.h -text nand_dump/mainwindow.ui -text nand_dump/nand.pro -text +nand_dump/rc.qrc -text nand_dump/readmii.txt -text +ohneschwanzenegger/icon.png -text ohneschwanzenegger/main.cpp -text ohneschwanzenegger/mainwindow.cpp -text ohneschwanzenegger/mainwindow.h -text diff --git a/WiiQt/u8.cpp b/WiiQt/u8.cpp index 2dd5bdd..e681400 100644 --- a/WiiQt/u8.cpp +++ b/WiiQt/u8.cpp @@ -155,11 +155,11 @@ bool U8::RenameEntry( const QString &path, const QString &newName ) quint32 nFstSize = fstSize + difference; int dataAdjustment = 0; - if( RU( U8_HEADER_ALIGNMENT, nFstSize ) < RU( U8_HEADER_ALIGNMENT, fstSize ) ) - dataAdjustment = - RU( U8_HEADER_ALIGNMENT, fstSize - nFstSize ); + if( RU( nFstSize, U8_HEADER_ALIGNMENT ) < RU( fstSize, U8_HEADER_ALIGNMENT ) ) + dataAdjustment = - RU( ( fstSize - nFstSize ), U8_HEADER_ALIGNMENT ); - else if( RU( U8_HEADER_ALIGNMENT, nFstSize ) > RU( U8_HEADER_ALIGNMENT, fstSize ) ) - dataAdjustment = RU( U8_HEADER_ALIGNMENT, nFstSize - fstSize ); + else if( RU( nFstSize, U8_HEADER_ALIGNMENT ) > RU( fstSize, U8_HEADER_ALIGNMENT ) ) + dataAdjustment = RU( ( nFstSize - fstSize ), U8_HEADER_ALIGNMENT ); qDebug() << "old size:" << hex << oldNameLen\ << "new size:" << hex << newNameLen\ @@ -235,7 +235,7 @@ bool U8::RenameEntry( const QString &path, const QString &newName ) t = qFromBigEndian( fstSize ); buf.write( (const char*)&t, 4 ); - data_offset = RU( U8_HEADER_ALIGNMENT, 0x20 + fstSize ); + data_offset = RU( ( 0x20 + fstSize ), U8_HEADER_ALIGNMENT ); t = qFromBigEndian( data_offset ); buf.write( (const char*)&t, 4 ); buf.close(); @@ -248,7 +248,7 @@ bool U8::RenameEntry( const QString &path, const QString &newName ) } data.append( nPayload );//add the actual file data - padding = RU( 0x20, data.size() ) - data.size();//pad the entire thing to 0x20 bytes TOTO: should probably already be done, and this step is not really necessary + padding = RU( data.size(), 0x20 ) - data.size();//pad the entire thing to 0x20 bytes TOTO: should probably already be done, and this step is not really necessary if( padding ) { data.append( QByteArray( padding, '\0' ) ); @@ -325,8 +325,8 @@ bool U8::ReplaceEntry( const QString &path, const QByteArray &nba, bool autoComp } } - quint32 newSizePadded = RU( 0x20, newData.size() ); - quint32 oldSizePadded = RU( 0x20, qFromBigEndian( fst[ entryToReplace ].FileLength ) ); + quint32 newSizePadded = RU( newData.size(), 0x20 ); + quint32 oldSizePadded = RU( qFromBigEndian( fst[ entryToReplace ].FileLength ), 0x20 ); int difference = newSizePadded - oldSizePadded; data.remove( qFromBigEndian( fst[ entryToReplace ].FileOffset ), oldSizePadded ); @@ -514,10 +514,10 @@ bool U8::RemoveEntry( const QString &path ) { ne->Type = 0; ne->FileOffset = \ - qFromBigEndian( (quint32)( 0x20 + RU( U8_HEADER_ALIGNMENT, nFstSize ) + nPayload.size() ) ); + qFromBigEndian( (quint32)( 0x20 + RU( nFstSize, U8_HEADER_ALIGNMENT ) + nPayload.size() ) ); ne->FileLength = e->FileLength; nPayload.append( data.mid( qFromBigEndian( e->FileOffset ), qFromBigEndian( e->FileLength ) ) ); - int padding = RU( 0x20, nPayload.size() ) - nPayload.size();//pad to 0x20 bytes between files + int padding = RU( nPayload.size(), 0x20 ) - nPayload.size();//pad to 0x20 bytes between files if( padding ) { nPayload.append( QByteArray( padding, '\0' ) ); @@ -552,7 +552,7 @@ bool U8::RemoveEntry( const QString &path ) t = qFromBigEndian( fstSize ); buf.write( (const char*)&t, 4 ); - data_offset = RU( U8_HEADER_ALIGNMENT, 0x20 + fstSize ); + data_offset = RU( ( 0x20 + fstSize ), U8_HEADER_ALIGNMENT ); t = qFromBigEndian( data_offset ); buf.write( (const char*)&t, 4 ); buf.close(); @@ -565,7 +565,7 @@ bool U8::RemoveEntry( const QString &path ) } data.append( nPayload );//add the actual file data - padding = RU( 0x20, data.size() ) - data.size();//pad the entire thing to 0x20 bytes TOTO: should probably already be done, and this step is not really necessary + padding = RU( data.size(), 0x20 ) - data.size();//pad the entire thing to 0x20 bytes TOTO: should probably already be done, and this step is not really necessary if( padding ) { data.append( QByteArray( padding, '\0' ) ); @@ -714,9 +714,9 @@ int U8::AddEntry( const QString &path, int type, const QByteArray &newData ) ne->Type = 0; ne->FileLength = qFromBigEndian( (quint32)newData.size() ); ne->FileOffset =\ - qFromBigEndian( (quint32)( 0x20 + RU( U8_HEADER_ALIGNMENT, nFstSize ) + nPayload.size() ) ); + qFromBigEndian( (quint32)( 0x20 + RU( nFstSize, U8_HEADER_ALIGNMENT ) + nPayload.size() ) ); nPayload.append( newData ); - int padding = RU( 0x20, nPayload.size() ) - nPayload.size();//pad to 0x20 bytes between files + int padding = RU( nPayload.size(), 0x20 ) - nPayload.size();//pad to 0x20 bytes between files if( padding ) { nPayload.append( QByteArray( padding, '\0' ) ); @@ -758,10 +758,10 @@ int U8::AddEntry( const QString &path, int type, const QByteArray &newData ) { ne->Type = 0; ne->FileOffset = \ - qFromBigEndian( (quint32)( 0x20 + RU( U8_HEADER_ALIGNMENT, nFstSize ) + nPayload.size() ) ); + qFromBigEndian( (quint32)( 0x20 + RU( nFstSize, U8_HEADER_ALIGNMENT ) + nPayload.size() ) ); ne->FileLength = e->FileLength; nPayload.append( data.mid( qFromBigEndian( e->FileOffset ), qFromBigEndian( e->FileLength ) ) ); - int padding = RU( 0x20, nPayload.size() ) - nPayload.size();//pad to 0x20 bytes between files + int padding = RU( nPayload.size(), 0x20 ) - nPayload.size();//pad to 0x20 bytes between files if( padding ) { nPayload.append( QByteArray( padding, '\0' ) ); @@ -792,7 +792,7 @@ int U8::AddEntry( const QString &path, int type, const QByteArray &newData ) t = qFromBigEndian( fstSize ); buf.write( (const char*)&t, 4 ); - data_offset = RU( U8_HEADER_ALIGNMENT, 0x20 + fstSize ); + data_offset = RU( ( 0x20 + fstSize ), U8_HEADER_ALIGNMENT ); t = qFromBigEndian( data_offset ); buf.write( (const char*)&t, 4 ); buf.close(); @@ -805,7 +805,7 @@ int U8::AddEntry( const QString &path, int type, const QByteArray &newData ) } data.append( nPayload );//add the actual file data - padding = RU( 0x20, data.size() ) - data.size();//pad the entire thing to 0x20 bytes TOTO: should probably already be done, and this step is not really necessary + padding = RU( data.size(), 0x20 ) - data.size();//pad the entire thing to 0x20 bytes TOTO: should probably already be done, and this step is not really necessary if( padding ) { data.append( QByteArray( padding, '\0' ) ); diff --git a/nandExtract/icon.png b/nandExtract/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..11dc892f3d710f1ec209fe0ed9f3c466f7cbefbe GIT binary patch literal 5140 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 this ); + ui->mainToolBar->setVisible( false ); //setup the block map SetUpBlockMap(); diff --git a/nandExtract/rc.qrc b/nandExtract/rc.qrc index a654d98..bdbb33c 100644 --- a/nandExtract/rc.qrc +++ b/nandExtract/rc.qrc @@ -5,5 +5,6 @@ grey.png pink.png black.png + icon.png diff --git a/nand_dump/icon.png b/nand_dump/icon.png new file mode 100755 index 0000000000000000000000000000000000000000..9103c505a90599dee547c6e7da12e4a457a219e4 GIT binary patch literal 7905 zcmWky2Q(aA8y?YC--zf$*=W&;y1EUkw~ZboSS6zOE;=EI-iaPPdM`mD>ITs}5uZ+U z{`u#enLB6B%$@hX<$0gyMrmm%kr2`n0sugQR94ghN0I-Z5Ipc2i?CY+2LdN$LstMG zdi4Jj3&_Z#1^_}$TLlFzEgMHSM^_t1CnltV0+W-AqqXf@D**7C%hpBf>F!WUoiClr zt40QWQgzgM3}Modj|rkkVB=yYfT~0?=g&UY?sM1c2$0 zRiq+dBME#Ndl`)Y4EO;GYt?>n;5QGzkJPtT25Ops?olXF9RMK)__ZU$H~}1Az%)(pRYAA8Ku@LD!CPSBh+ty~k2Ai$J})E3D3a?>5IOoMZuD)h%G+j+?KZ zHb@dL$lHYh>HT@CRzyFRND%sZVJlwgritkOh5^IUk9^%? zz(ujHP3|10m=Sv-Si}+~pUC;`>EylT+A{Yww)FCIpvF!b%Qu0i)btJZKUH?9fm`?5 zIRG5DIrjYGfM5sNyk8yjyg!h+Rmyt`1X&{!odMvLB8*q>N4?A-1OOECg1Kts=uUg6 zxx4Y`dvF(eh;Gb9Lgiuoz4B0bLdzg}7jw=pA@UsIBQ*?M=6t_o8HBsFZNihBNO^lv z&7@LJWLFlDoF0z$U;-SuA;=>O=DA3$*U<*7aS*EXunXoMWgPMt7}NJi3T+nEgy+fv zI?;MeC}oCYDVGQ05hgEM6C{TK!H}Eqb|ryN!FAeFzla+YT1rJ}LthjSja#}2WW-bE zWsbXirIm^m$=@EYupyg^msS|$@BTxLFVz2*pLd{7zE+HzAnDC;Ez1|;iUHc1mtU~k zqR!ro)q3KP2P3)(L~uOinJgIPlnvAjG=3|WGSS0?AI=eo5@3gF_p-Ajm8yPaYkhdx zPyJd@Ai_YIn{}Ez{t+M4H&UTr6h-_mbca1~mhn)(|CUjGH6VED5P!3g? zp|e<;ulMkIypeomexpvcc0}nTVfPI2k@u8H)uPIRWDKnhmCdVYf$)v`oM$>pwSEs2J(_ms~2KD$w1$NW6)5+2uQ3hO% zTz-!eeh?4<>*pJJ(l3+XtA4-q6&0aWmVKRD`<+KksL&9hvp> z;A%^|WoV0$Dlf|yR}fMW(y!M!`D87Fzn#dAu+34DdJ+)5L~+2m#z|K!tkxo6 zWny2RlA2;rpZ|lzLE|w6MP^wEw zoK^9b+ZWO0w<&sdy(`&I%jtX-l%wWYvgF;deMRrjcdK{na8+`qL~MXpPYlDGCmyAS ze|zri2xs6MoIlc5Fzu67D6&YlNL>w0XqkW)PQCc>f-Kf{z+@e^?l9mmP{@YI#>}Rw z{#SiJLr1-(n6p??O;T-eD}D#{b)C$_^je zU<^9;TWG!U(J*JfZMJSEMhQ)YZgG8o5*ZVv8ZykAD$ScoH?TO=v7zF2=4`s^GkKPs zS)bXvS2|z4FS2jDAF+`8Q#hA1$56<1yl+ThMSF8XhA20g-+uW^fTn_GFuGxzmG2E- zf_~*pO;eF)`MJdbmGnPpm)v#fb-3t~;F6))PtoqCp{8NYKF1uhuw{in)_co)pZf`* zB<#JttNy4gLs*t{0G$8zx@l_8rwmCQCn|9z}vKHp9o zO&GN$4buwvGd+%Pv1Jj{7eLG&77?Z&E)(YzX+S$6kow$nVnM-mS@B9SMR6$;Eubl0 z&7<<1OS+ub4n8N^D%>hFz-w*zbIKsw0QpvxUYwV!O61+!&gGlElZdtKHKKK2sx-bK zQz!5I(caUr63Q}Oa&CzfS+z(Fu}_C`P_9zS*r&&jJfFr9diOH)qFMMRL?$ACE0}OG zY8)$bsrw}Um(c#)8}?18hW6qr zMb5L4y`S|z=0A#N9pv8ck@u3XCN>s@tLpPG7;JTXu@kR@JA2O)u0O_o7XA|N3%ohH zk;`F9vtmy_wJM;4%}3on_*Ku3ke&uC`&}Xw;bxfs?!wHTsipy+;c|n;Rd_a?^y8@L zDvEik)W?CpITpM&=^`9|bfqtR`dU`e-(optJ!!qOwZxNSOqx=jx|K@$j%0T3E6MW9 zuX|_z5c7PgBOLQ>?;90b3cKLV?N%kRsuH>`yK>Sj=3!o7kuGZT~0y z-_*Qu`}wW(_s)3~7D|1}ddlh=d0l@lQx#RdbCGiGU|Ol+;Ji18J&Apb&q~@j)ADPI zVNyy@Cw}_bt`h0slg_*B15X|j5fapgtbsLFCq?g#opXZab4C)0IgeQ1FRS>NCmsxF z20lCajN^4ln9mn9`fk4&UA7~0JZOcwtxh8DW40yRB}Yw;o86A<<~JYdH|u9qOPD$Qb^8my zOTuUlwq>&veI2u9IkzlJ0S^ z(@t*Q2=UB=e3R*ovW_|c_&f!Gp!Wc9c@K^|0N~CK0DsK^Kq3tQs2mf`zP$hd3Sy+9 zoSxTQzmaz=YTNyO(ck+z)4MM=0$uNhSFiqa1s9U`EsjJa*~xgW)jfmbgS;}TL3^Xz zuCfuiP^vN28pB$FtW;F_xG*H9*h6rzhhf+yD96$|3TIIn6YEW)b4da7e{n(f*=iV49EEa6Xv0t_Toj5q zy5J*>AZDG~f|>;q(tiS9KEG|<_I4B+c%_FriHD^e_;-F{xs=UkqEHEWb%7z#IK8kI{jf!3GN-r8$Oa)ZvartXwzTWNc zze^Vg=ZNm6e$NqoV}UCd#67GlvP!^}+b%;_|=xYhp`2eI%kA>KKX;rXVH==v8eBW+b^y2A*L`0*t_@l9Jc7 zHB>c~*TThx{LF{Jf?6Jh`qLVxQWTPt!>Ct*qKH8Z)x~l|%k~%SN(5Hh(kg0OqDQlA zBP=csnwA5uS)WMOuqws*)fsT#y$ zCo*xmB^o{MrlsZ4qoW$1hOPdzk`6krcr&uGvrpJHFd@m`bzWK%lajtRHwUt_v(00B zPT-LR5OvH-D{mr9P9*c&w-~CumlbCla}D-S?uLRHBt8C1N>|&;OtD&=SYGDy&WR9< z0|ivA)% z?z+2j06HxUr;G3I0>mK?`kjeQXT(J;4F~2OyFQ?E{VCC7IS4eGz46^*bc6kjJVrRK zgP-^z;voehm?Ihz0z?3b{_eVCeSO_bGjW5AipS`)PtM?MoC<&3oA$$ABCnmIR4C%% z^cTbTpoj7dxLJr5loR`H&1T$T$PkWbF;4!0Eq+d`qr=s{i=+5JVxW05#kj_GTf@!6 zqxS?pRQGfCB}Uk!*(u*4V=I@KnAq>0itxY9RI{aI0ii%M4oV5)K3VE;zfGXK(E)yY ziV<^O!#Tc$H@=+>`9LQcA^@hB_z1?=Fy&!5Gdra^Ml2kRUn1-f9*;g65nb+I>hRUB zm>S1m-bXO{K!~V#H(&@XyNrR+EODX9`T4fS>goep&W}~EyPwu^%dn_UCcYJUcF{TZ zoFkg0xhm$s|G?MlWJGjgVj>vyllgE84_q>oz%Zo+M>#RnP!$)U4aLD4@eT_PnkT~O-zaVZUR%o5 z5Ok~nSmX$8Ft4w!u4=4?Dc#)M@@C(@9?Ove|G!?OJp1UW_NT{IyAy><2RGy0qzn>Y zLk0fPVE8}q6N40&_oz>=E&Lron!yaVT2RDTY|_}UJgI`3U+}4&=u9yWGyD7n=Ul$8d=?!C)+J=`<-K%AbGp3hSf9o zEDUMH00x7}#90wNz6^ne3E9ROKIr3j`ZLa~rlyu>RLPP$Y;kvUsf9YD_4{nd8_m-G zZ_a+)9fZ7N?#XRr7h%|gmsKVNgU(xGv@TcL6s!L?_s<^=^q4{fsm1nacKc`a0Xrnb zX_wBiz1GLvd_@cx0w3>61>W7yOKY21(rdy)LL19jf7yXSzLQ+zk zQwym*3?e9d5SZ)Tb=(}$f=XQ+-C}XI<~Se*bjLl*&PIqJU4PVKLVLVumkgt>ntqi0?kn=B3HwN!jN9)i=N`65PNgAw+%*F z3|52A5>jKk!tU6s{}BSR)JoJeG{M}%{OXTds|pRcU9wp!S>%c%SR!<)XXL8FRAL`w zPcaMAl2j$x)-ij6Wey)xkj{;$+8wg4=O@Mnv8i;*4!n0&fyegldoBg|o=sW}#|Ph*{`hE&W&u zQ{~ddg&6f4deQRoUjA6|-v!(s$zcB>6GQjrn@$h~-G#GZh3DE7`Ll12?X|k~rWKWc zxm|UV8K&fya}5j*YFEB&8I6W^le0A%?^yv%LIW@Row+||Bndb)%|mg5MI#iyed4*I zUyWgm!})i)ox9E8?o+BT3X6MldU|TU*y?@=CyNzW!Wyq1_xwJESt~Cm9IjirmhOsx zU?CGB0nkravj5=KU|;U#-`LToz^!~4b1jKNl_hmpQ!506psgtZh=KW6Fx?WjB# zRg8!@&g-$SGI|uaod*huFq@14eK^m`DNR8jVGv~ybz)Vz$V}+-8TXbwY=DyeBS?ah zEZO+&a1v_7gS8DGT0?GZe}X`X%3-E7Oj&K^CGHD?4IR=y={zty>3|5B%q#p+f~H0K zNsm4G_=BHVp}ER8EFV20gd!H;LDAr*zz7P&ro$s5NYVvFSlyz1J}BhH_-UD2Q1=R} zt7%Rh&DmFj_;4I%(=-nW2|72m_0zU4;OO1hfW^^^_p1JAbO2j$XQwnsOqd{E>BYlo zl*te!C=OG)!>d{1*`W|7MLDP}c@Pv76n+6^DL~WAc|Z6Y3mP0)<bzVeTR#rdQJ9E6&2tcOSTgM$IDQ6BOiU+q;5iRFh7#hL2 zJX_yUhadXqCaV;20??RmYnmYIx3RL}SHb8HI*av9kR-xZ-y*)Gdw^_qmB{RO*xByP zNn)|RaY|TK6)*hX?>Bz33K#0@(Rp(G&ZbmyP!Mt7?U~GEuOHLAu~1SPdzGyhkMULVJvYp2NOdU9~)b$V%~}j-@nLprN>WKE7s;t{dY3a4N}QhNB+4FoyQT1 z+KM8Xh>lkg4)cC#YuD2BgRALJxr^p$To}n@Zul9!R5;pYpkAYN>`q_?HJy+P7M z7ewx+?Y4rCKxPh#2Y)cO>A0E_&yt&{_+G((C}DSWbZDli6fNiG3uh6fSURuPQq-=Y~O4x8=)9Q-Sl3aAg zzbM3-alceA^TSBEo>`mK8uX`jo)+1QJg`-iHB=$Tn>iED;Tc{_mRGlBOOmUf-AL|B z#L3xZPWm2uc6N4qm~mtr7`QC@T;bewSpgb;XiBC`{kOq(L(s6_B6My;ZEJ2%gnlsC z%Fu}(KW@F73>#+d`j*VrRD!8IQur2ME{Goj^Kg6ZdN_S2jp&XKQ)9KGk(f>ZCBK*4hHV6O2) zR1|^q<3{e7H~i5oU*{b@4R6*K4W|U`W*pJoele)M;Ty}9Y3dS@%EnBkckr3cfVHdW zJP>6@%YaQjz?ox{WgT9}(Gw%}uBj_;`5X(!w?BnW9f_Mw`0o&y)27u56z{p8n0mkz0BGiks5;^4JR2 z%<@}t+tSg}aLc%9=PvpMMDZlW>gYhryJ_A*O;fYanLaiy4pb!|z$PRlh;R8e3RpdR z`Na!;I6W0_CbgDQeb>iezwc!U9)}~kB`+U96}30^`hWkXUVhjDmk#beX|chV1Liz* zP>-tuzok4(Ew#A%u{bD@rd~*9I zK6n0pq06+{spqGqV7s5CVX?P3r~$^@aRHF{Nk~XARS5M__3<}PfA*D-z>{-T5X94) zwxC{HyQbookRU{8Z>0eNDX8(L^P3o;hCqEzpdGM|VlNr=te+ zSnj;dFB(q$5U}CO$Opf_S(XMhm6`X!jjtg_7?&&R>))7yNSBsa5Zx^6XUVdlfxnq4 zU$>N%ajL1S_nhB~N0>oU1E{sa+t5;nAdd*a?rfRcdiwR8Zaq5cIR_=yu16@iHPHz z-^G60{#C{1GkyBDcjz)k|I-OyP_p0ed`PP1a}deYp_SXChp2qN`-#H7EkFm=>^A5iI^No9EjwVhRKDXk(sS+@cmG0nq(oUDd1XuLfg8S7e zjS%EP&$zpC{TJj3IWm!HBxPdigN?+np36>g@_CqCHz;$m!F*v=P2s*Apz3Vi-89>& z?Oa`5{UCGELl%Ixv-^9l(IxrI`Rdd*0fq&9oqZW<{db2dnc53*w=yaJY z7|MYE*6YDtoC?z3Q;>J=fjP7HYs0d{YQA153a7PLLG+YUS9B@i>CT_EZ!wzHhWFoh e1Aboy;sez@oIdE2GdQ@12p|y}idFLFA^!t0vjlqp literal 0 HcmV?d00001 diff --git a/nand_dump/main.cpp b/nand_dump/main.cpp index 9ae175b..55b3dbd 100644 --- a/nand_dump/main.cpp +++ b/nand_dump/main.cpp @@ -3,7 +3,9 @@ int main(int argc, char *argv[]) { + Q_INIT_RESOURCE( rc ); QApplication a(argc, argv); + QApplication::setWindowIcon( QIcon( ":/icon.png" ) ); MainWindow w; w.show(); diff --git a/nand_dump/mainwindow.cpp b/nand_dump/mainwindow.cpp index 918af73..d550e40 100644 --- a/nand_dump/mainwindow.cpp +++ b/nand_dump/mainwindow.cpp @@ -8,7 +8,27 @@ MainWindow::MainWindow( QWidget *parent ) : QMainWindow( parent ), ui( new Ui::MainWindow ), nus ( this ) { - ui->setupUi(this); + ui->setupUi(this); + ui->mainToolBar->setVisible( false );//hide toolbar for now + + //resize buttons to be same size + QFontMetrics fm( fontMetrics() ); + int max = fm.width( ui->pushButton_CachePathBrowse->text() ); + max = MAX( max, fm.width( ui->pushButton_decFolder->text() ) ); + max = MAX( max, fm.width( ui->pushButton_GetTitle->text() ) ); + max = MAX( max, fm.width( ui->pushButton_nandPath->text() ) ); + max = MAX( max, fm.width( ui->pushButton_wad->text() ) ); + + max += 15; + ui->pushButton_CachePathBrowse->setMinimumWidth( max ); + ui->pushButton_decFolder->setMinimumWidth( max ); + ui->pushButton_GetTitle->setMinimumWidth( max ); + ui->pushButton_nandPath->setMinimumWidth( max ); + ui->pushButton_wad->setMinimumWidth( max ); + + + + Wad::SetGlobalCert( QByteArray( (const char*)&certs_dat, CERTS_DAT_SIZE ) ); //connect to the nus object so we can respond to what it is saying with pretty stuff in the gui diff --git a/nand_dump/nand.pro b/nand_dump/nand.pro index b47abf0..bc83c8e 100644 --- a/nand_dump/nand.pro +++ b/nand_dump/nand.pro @@ -37,3 +37,6 @@ HEADERS += mainwindow.h \ FORMS += mainwindow.ui \ ../WiiQt/settingtxtdialog.ui + +RESOURCES += \ + rc.qrc diff --git a/nand_dump/rc.qrc b/nand_dump/rc.qrc new file mode 100644 index 0000000..619648d --- /dev/null +++ b/nand_dump/rc.qrc @@ -0,0 +1,5 @@ + + + icon.png + + diff --git a/ohneschwanzenegger/icon.png b/ohneschwanzenegger/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..95539ced00316dc992a05ff1e88f9e2e0b142175 GIT binary patch literal 5343 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 literal 0 HcmV?d00001 diff --git a/ohneschwanzenegger/main.cpp b/ohneschwanzenegger/main.cpp index 9b7c5df..1b8762f 100644 --- a/ohneschwanzenegger/main.cpp +++ b/ohneschwanzenegger/main.cpp @@ -4,7 +4,8 @@ int main(int argc, char *argv[]) { Q_INIT_RESOURCE( rc ); - QApplication a(argc, argv); + QApplication a( argc, argv ); + QApplication::setWindowIcon( QIcon( ":/icon.png" ) ); MainWindow w; w.show(); diff --git a/ohneschwanzenegger/mainwindow.cpp b/ohneschwanzenegger/mainwindow.cpp index af3a73b..86f5813 100644 --- a/ohneschwanzenegger/mainwindow.cpp +++ b/ohneschwanzenegger/mainwindow.cpp @@ -24,6 +24,22 @@ MainWindow::MainWindow( QWidget *parent ) : QMainWindow( parent ), ui( new Ui::M uidDirty = false; sharedDirty = false; nandDirty = false; + + ui->mainToolBar->setVisible( false );//hide toolbar for now + + //resize buttons to be same size + QFontMetrics fm( fontMetrics() ); + int max = fm.width( ui->pushButton_CachePathBrowse->text() ); + max = MAX( max, fm.width( ui->pushButton_GetTitle->text() ) ); + 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 ); + Wad::SetGlobalCert( QByteArray( (const char*)&certs_dat, CERTS_DAT_SIZE ) ); //connect to the nus object so we can respond to what it is saying with pretty stuff in the gui diff --git a/ohneschwanzenegger/rc.qrc b/ohneschwanzenegger/rc.qrc index 835d340..806b1a5 100644 --- a/ohneschwanzenegger/rc.qrc +++ b/ohneschwanzenegger/rc.qrc @@ -1,5 +1,6 @@ testlog.txt + icon.png