@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
|
||||
"Last-Translator: David Jelinek (djelinek@hotmail.com) \n"
|
||||
"Language-Team: r719 - last version on http://volny.cz/djelinek/_USBLoderGX/czech.lang \n"
|
||||
@ -46,6 +46,9 @@ msgstr "2 (Mladistvý 12+)"
|
||||
msgid "20 min"
|
||||
msgstr "20 minut"
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr "3 (Zralý 16+)"
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr "3 minuty"
|
||||
msgid "30 min"
|
||||
msgstr "30 minut"
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "3D Obaly"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr "Nelze nastavit USB"
|
||||
msgid "Cover Download"
|
||||
msgstr "Stažení obalu"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "Cesta k obalum"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr "Zmena cesty k obalom"
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr ""
|
||||
msgid "Sept"
|
||||
msgstr "Zárí"
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr "Nastavit jako hudbu na pozadí?"
|
||||
|
||||
@ -1193,3 +1199,6 @@ msgstr "z "
|
||||
|
||||
msgid "seconds left"
|
||||
msgstr "sekund zbývá"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "Cesta k obalum"
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
|
||||
"Last-Translator: dorf[dk]\n"
|
||||
"Language-Team: \n"
|
||||
@ -46,6 +46,9 @@ msgstr "2 (Unge teenagere 12+)"
|
||||
msgid "20 min"
|
||||
msgstr "20 min."
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr "3 (Modne teenagere 12+)"
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr "3 min."
|
||||
msgid "30 min"
|
||||
msgstr "30 min."
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "3D-Covers"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr "Kunne ikke sætte USB."
|
||||
msgid "Cover Download"
|
||||
msgstr "Cover-download"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "Sti til covers"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr "Ændringer af sti til covers"
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr "Valgt DOL"
|
||||
msgid "Sept"
|
||||
msgstr "Sept"
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr "Indstil som baggrundsmusik?"
|
||||
|
||||
@ -1194,6 +1200,9 @@ msgstr "af"
|
||||
msgid "seconds left"
|
||||
msgstr "sekunder tilbage"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "Sti til covers"
|
||||
|
||||
#~ msgid "Don't bother the USB Loader GX Team about errors in this file."
|
||||
#~ msgstr "Lad være med at fortælle holdet bag USB Loader GX om fejl i denne fil."
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
|
||||
"Last-Translator: tj_cool\n"
|
||||
"Language-Team: \n"
|
||||
@ -46,6 +46,9 @@ msgstr "2 (Tiener 12+)"
|
||||
msgid "20 min"
|
||||
msgstr "20 min"
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr "3 (Adolescenten 16+)"
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr "3 min"
|
||||
msgid "30 min"
|
||||
msgstr "30 min"
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "3D Hoesjes"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr "Kan USB niet instellen"
|
||||
msgid "Cover Download"
|
||||
msgstr "Download hoesjes"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "Locatie hoesjes"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr "Hoesjesmap wijzigen"
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr ""
|
||||
msgid "Sept"
|
||||
msgstr "Sept"
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr "Instellen als achtergrondmuziek?"
|
||||
|
||||
@ -1194,6 +1200,9 @@ msgstr "van"
|
||||
msgid "seconds left"
|
||||
msgstr "seconden over:"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "Locatie hoesjes"
|
||||
|
||||
#~ msgid "Don't bother the USB Loader GX Team about errors in this file."
|
||||
#~ msgstr "Val het USB loader GX team niet lastig over fouten in dit bestand."
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@ -46,6 +46,9 @@ msgstr ""
|
||||
msgid "20 min"
|
||||
msgstr ""
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr ""
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr ""
|
||||
msgid "30 min"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr ""
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr ""
|
||||
msgid "Cover Download"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr ""
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr ""
|
||||
msgid "Sept"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr ""
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
|
||||
"Last-Translator: c64rmx\n"
|
||||
"Language-Team: \n"
|
||||
@ -46,6 +46,9 @@ msgstr "2 (Teinit 12+)"
|
||||
msgid "20 min"
|
||||
msgstr ""
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr "3 (Teinit 16+)"
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr ""
|
||||
msgid "30 min"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "3D Kannet"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr "USB:tä ei voitu asettaa"
|
||||
msgid "Cover Download"
|
||||
msgstr "Kansien lataus"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "Kansien polku"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr "Kansipolun vaihto"
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr "Valittu DOL"
|
||||
msgid "Sept"
|
||||
msgstr "syys"
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr "Aseta taustamusiikiksi?"
|
||||
|
||||
@ -1194,6 +1200,9 @@ msgstr "josta"
|
||||
msgid "seconds left"
|
||||
msgstr "sekuntia jäljellä"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "Kansien polku"
|
||||
|
||||
#~ msgid "No partitions found"
|
||||
#~ msgstr "Osioita ei löytynyt"
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
|
||||
"Last-Translator: Kin8\n"
|
||||
"Language-Team: Badablek, Amour, ikya, dj_skual & Kin8\n"
|
||||
@ -46,6 +46,9 @@ msgstr "2 (Adolescents 12+)"
|
||||
msgid "20 min"
|
||||
msgstr "20 min."
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr "3 (Matures 16+)"
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr "3 min."
|
||||
msgid "30 min"
|
||||
msgstr "30 min."
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "Jaquettes 3D"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr "Accès USB impossible."
|
||||
msgid "Cover Download"
|
||||
msgstr "Téléchargement Jaquettes"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "Dossier Jaquettes"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr "Dossier des Jaquettes"
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr "Choix du DOL"
|
||||
msgid "Sept"
|
||||
msgstr "Sept"
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr "Utiliser comme fond sonore ?"
|
||||
|
||||
@ -1194,6 +1200,9 @@ msgstr "sur"
|
||||
msgid "seconds left"
|
||||
msgstr "secondes restantes"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "Dossier Jaquettes"
|
||||
|
||||
#~ msgid "You need to start this game one time to create a save file, then exit and start it again."
|
||||
#~ msgstr "Vous devez lancer ce jeu une fois pour créer une sauvegarde, puis éteindre et le lancer à nouveau."
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
|
||||
"Last-Translator: wishmasterf\n"
|
||||
"Language-Team: Snoozer, wishmasterf\n"
|
||||
@ -46,6 +46,9 @@ msgstr "2 (Jugendliche 12+)"
|
||||
msgid "20 min"
|
||||
msgstr "20 min"
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr "3 (Erwachsene 16+)"
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr "3 min"
|
||||
msgid "30 min"
|
||||
msgstr "30 min"
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "3D Cover"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr "Konnte USB nicht setzen."
|
||||
msgid "Cover Download"
|
||||
msgstr "Cover Download"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "Cover Pfad"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr "Cover Pfad ändern"
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr "Ausgewähltes DOL"
|
||||
msgid "Sept"
|
||||
msgstr "Sept"
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr "Als Hintergrundmusik wählen?"
|
||||
|
||||
@ -1194,6 +1200,9 @@ msgstr "von"
|
||||
msgid "seconds left"
|
||||
msgstr "Sekunden verbleiben"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "Cover Pfad"
|
||||
|
||||
#~ msgid "Don't bother the USB Loader GX Team about errors in this file."
|
||||
#~ msgstr "Beschweren Sie sich nicht bei uns über hier angezeigte Fehler."
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
|
||||
"Last-Translator: Tusk\n"
|
||||
"Language-Team: \n"
|
||||
@ -46,6 +46,9 @@ msgstr "2 (Tinédzserek 14+)"
|
||||
msgid "20 min"
|
||||
msgstr ""
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr "3 (Kamaszok 16+)"
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr ""
|
||||
msgid "30 min"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "3D Borítók"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr ""
|
||||
msgid "Cover Download"
|
||||
msgstr "Boritó Letöltés"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "Boritó Útvonala"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr ""
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr ""
|
||||
msgid "Sept"
|
||||
msgstr "Szep"
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr "Beállítod háttérzenének?"
|
||||
|
||||
@ -1194,6 +1200,9 @@ msgstr " "
|
||||
msgid "seconds left"
|
||||
msgstr "hátralévõ másodperc"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "Boritó Útvonala"
|
||||
|
||||
#~ msgid "No partitions found"
|
||||
#~ msgstr "Nem találtam particiót"
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-08-05 10:00+0200\n"
|
||||
"Last-Translator: Cambo \n"
|
||||
"Language-Team: FoxeJoe & Cambo\n"
|
||||
@ -46,6 +46,9 @@ msgstr "2 (Ragazzini 12+)"
|
||||
msgid "20 min"
|
||||
msgstr "20 minuti"
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr "3 (Ragazzi 16+)"
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr "3 minuti"
|
||||
msgid "30 min"
|
||||
msgstr "30 minuti"
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "Copertine 3D"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr "Non è stato possibile impostare la porta USB."
|
||||
msgid "Cover Download"
|
||||
msgstr "Scaricamento Copertine"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "Percorso Copertine"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr "Modifica Percorso Copertine"
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr "File DOL selezionato"
|
||||
msgid "Sept"
|
||||
msgstr "settembre"
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr "Imposto come Musica Sottofondo?"
|
||||
|
||||
@ -1194,6 +1200,9 @@ msgstr "di"
|
||||
msgid "seconds left"
|
||||
msgstr "secondi mancanti"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "Percorso Copertine"
|
||||
|
||||
#~ msgid "Don't bother the USB Loader GX Team about errors in this file."
|
||||
#~ msgstr "Non infastidire il team di sviluppo dell'USB Loader GX per errori in questo file."
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
|
||||
"Last-Translator: hosigumayuugi\n"
|
||||
"Language-Team: \n"
|
||||
@ -46,6 +46,9 @@ msgstr "2 (中学生 12+)"
|
||||
msgid "20 min"
|
||||
msgstr "20分"
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr "3 (高校生 16+)"
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr "3分"
|
||||
msgid "30 min"
|
||||
msgstr "30分"
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "3D カバー"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr "USBをセットできません"
|
||||
msgid "Cover Download"
|
||||
msgstr "カバー ダウンロード"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "カバーパス"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr "カバーパスの変更"
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr "DOLの場所"
|
||||
msgid "Sept"
|
||||
msgstr "9月"
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr "BGMに設定しますか"
|
||||
|
||||
@ -1194,6 +1200,9 @@ msgstr ""
|
||||
msgid "seconds left"
|
||||
msgstr "完了までの秒数"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "カバーパス"
|
||||
|
||||
#~ msgid "Don't bother the USB Loader GX Team about errors in this file."
|
||||
#~ msgstr "GXの開発チームは、このファイルに関するエラーに対応しません。"
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
|
||||
"Last-Translator: nextos@korea.com\n"
|
||||
"Language-Team: \n"
|
||||
@ -46,6 +46,9 @@ msgstr "2 (12세 이상)"
|
||||
msgid "20 min"
|
||||
msgstr "20 분"
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr "3 (16세 이상)"
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr "3 분"
|
||||
msgid "30 min"
|
||||
msgstr "30 분"
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "3D 커버"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr "USB 를 설정할수 없음."
|
||||
msgid "Cover Download"
|
||||
msgstr "표지 다운로드"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "표지 경로"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr "커퍼경로 변경"
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr ""
|
||||
msgid "Sept"
|
||||
msgstr "9월"
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr "벼경음악 설정?"
|
||||
|
||||
@ -1194,6 +1200,9 @@ msgstr "중"
|
||||
msgid "seconds left"
|
||||
msgstr "초 남았습니다"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "표지 경로"
|
||||
|
||||
#~ msgid "Don't bother the USB Loader GX Team about errors in this file."
|
||||
#~ msgstr "이화일의 에러로 USB Loader GX 팀에 연락하지 마세요."
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
|
||||
"Last-Translator: raschi\n"
|
||||
"Language-Team: \n"
|
||||
@ -46,6 +46,9 @@ msgstr "2 (Ungdom 12+)"
|
||||
msgid "20 min"
|
||||
msgstr "20 min"
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr "3 (Ungdom 16+)"
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr "3 min"
|
||||
msgid "30 min"
|
||||
msgstr "30 min"
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "3D cover"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr "Kan ikke velge USB."
|
||||
msgid "Cover Download"
|
||||
msgstr "Cover nedlasting"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "Cover sti"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr "Endre cover sti"
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr "Valgt DOL fil"
|
||||
msgid "Sept"
|
||||
msgstr "Sep"
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr "Bruk som bakgrunnsmusikk?"
|
||||
|
||||
@ -1194,6 +1200,9 @@ msgstr "av"
|
||||
msgid "seconds left"
|
||||
msgstr "sekunder gjenstår"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "Cover sti"
|
||||
|
||||
#~ msgid "Don't bother the USB Loader GX Team about errors in this file."
|
||||
#~ msgstr "Ikke bry USB Loader GX teamet med feil i denne filen."
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
|
||||
"Last-Translator: ziom666 (zadania_prog@vp.pl)\n"
|
||||
"Language-Team: \n"
|
||||
@ -46,6 +46,9 @@ msgstr "2 (mlodziez 12+)"
|
||||
msgid "20 min"
|
||||
msgstr ""
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr "3 (dojrzaly 16+)"
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr ""
|
||||
msgid "30 min"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "Okladki 3D"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr "Nie mozna ustawic USB"
|
||||
msgid "Cover Download"
|
||||
msgstr "Pobierz okladki"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "Sciezka okladek"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr "Zmien Sciezke okladek"
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr ""
|
||||
msgid "Sept"
|
||||
msgstr "Wrzesien"
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr "Ustawic jako muzyke w tle?"
|
||||
|
||||
@ -1194,6 +1200,9 @@ msgstr "z"
|
||||
msgid "seconds left"
|
||||
msgstr "sekund pozostalo"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "Sciezka okladek"
|
||||
|
||||
#~ msgid "Don't bother the USB Loader GX Team about errors in this file."
|
||||
#~ msgstr "Nie informuj team USB Loader GX o bledach w tym pliku."
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-08-11 19:45\n"
|
||||
"Last-Translator: boto12\n"
|
||||
"Language-Team: \n"
|
||||
@ -46,6 +46,9 @@ msgstr "2 (Adolescente 12+)"
|
||||
msgid "20 min"
|
||||
msgstr "20 minutos"
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr "3 (Adulto 16+)"
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr "3 minutos"
|
||||
msgid "30 min"
|
||||
msgstr "30 minutos"
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "Capas 3D"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr "Não foi possível configurar a porta USB."
|
||||
msgid "Cover Download"
|
||||
msgstr "Download de Capas"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "Pasta Capas"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr "Alterar Pasta das Capas"
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr "DOL selecionado"
|
||||
msgid "Sept"
|
||||
msgstr "Set"
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr "Definir como música de fundo?"
|
||||
|
||||
@ -1194,5 +1200,8 @@ msgstr "de"
|
||||
msgid "seconds left"
|
||||
msgstr "segundos restantes"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "Pasta Capas"
|
||||
|
||||
#~ msgid "Don't bother the USB Loader GX Team about errors in this file."
|
||||
#~ msgstr "Não incomode a equipe do USB Loader GX por erros neste arquivo."
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-08-11 12:25\n"
|
||||
"Last-Translator: Sky8000\n"
|
||||
"Language-Team: \n"
|
||||
@ -46,6 +46,9 @@ msgstr "2 (Adolescente 12+)"
|
||||
msgid "20 min"
|
||||
msgstr "20 minutos"
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr "3 (Adulto 16+)"
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr "3 minutos"
|
||||
msgid "30 min"
|
||||
msgstr "30 minutos"
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "Capas 3D"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr "Não foi possível configurar a porta USB."
|
||||
msgid "Cover Download"
|
||||
msgstr "Download de Capas"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "Pasta Capas"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr "Alterar Pasta das Capas"
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr "DOL Seleccionado"
|
||||
msgid "Sept"
|
||||
msgstr "Set"
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr "Definir como música de fundo?"
|
||||
|
||||
@ -1194,6 +1200,9 @@ msgstr "de"
|
||||
msgid "seconds left"
|
||||
msgstr "segundos restantes"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "Pasta Capas"
|
||||
|
||||
#~ msgid "Don't bother the USB Loader GX Team about errors in this file."
|
||||
#~ msgstr "Não incomodes a equipa do USB Loader GX por erros neste ficheiro."
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
|
||||
"Last-Translator: Kir\n"
|
||||
"Language-Team: Kir\n"
|
||||
@ -46,6 +46,9 @@ msgstr "2 (Подростки 12+)"
|
||||
msgid "20 min"
|
||||
msgstr ""
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr "3 (Подростки 16+)"
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr ""
|
||||
msgid "30 min"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "3D Обложки"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr "Не могу настроить USB"
|
||||
msgid "Cover Download"
|
||||
msgstr "Скачать обложку"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "Путь к обложкам"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr "Изменить путь к обложкам"
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr ""
|
||||
msgid "Sept"
|
||||
msgstr "Сен"
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr "установить как фоновую музыку"
|
||||
|
||||
@ -1194,6 +1200,9 @@ msgstr "из"
|
||||
msgid "seconds left"
|
||||
msgstr "секунд осталось"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "Путь к обложкам"
|
||||
|
||||
#~ msgid "Leaving so you can restart..."
|
||||
#~ msgstr "Выхожу для перезапуска..."
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
|
||||
"Last-Translator: knife.hu\n"
|
||||
"Language-Team: \n"
|
||||
@ -46,6 +46,9 @@ msgstr "2 (12岁以上)"
|
||||
msgid "20 min"
|
||||
msgstr "20 分钟"
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr "3 (16岁以上)"
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr "3 分钟"
|
||||
msgid "30 min"
|
||||
msgstr "30 分钟"
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "3D 封面"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr "无法设置 USB."
|
||||
msgid "Cover Download"
|
||||
msgstr "下载封面"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "封面路径"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr "变更封面路径"
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr "已选择 DOL"
|
||||
msgid "Sept"
|
||||
msgstr "九月"
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr "设置成背景音乐?"
|
||||
|
||||
@ -1194,6 +1200,9 @@ msgstr "的"
|
||||
msgid "seconds left"
|
||||
msgstr "剩余秒数"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "封面路径"
|
||||
|
||||
#~ msgid "No partitions found"
|
||||
#~ msgstr "找不到分区"
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
|
||||
"Last-Translator: Penn\n"
|
||||
"Language-Team: \n"
|
||||
@ -46,6 +46,9 @@ msgstr "2 (Adolescente 12+)"
|
||||
msgid "20 min"
|
||||
msgstr "20 min"
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr "3 (Maduro 16+)"
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr "3 min"
|
||||
msgid "30 min"
|
||||
msgstr "30 min"
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "Carátulas 3D"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr "No se pudo configurar USB."
|
||||
msgid "Cover Download"
|
||||
msgstr "Descarga de Carátulas"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "Ruta Carátulas"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr "Cambio ruta Carátulas"
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr ""
|
||||
msgid "Sept"
|
||||
msgstr "Sept"
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr "¿Poner como másica de fondo?"
|
||||
|
||||
@ -1194,6 +1200,9 @@ msgstr "de"
|
||||
msgid "seconds left"
|
||||
msgstr "segundos restantes"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "Ruta Carátulas"
|
||||
|
||||
#~ msgid "Don't bother the USB Loader GX Team about errors in this file."
|
||||
#~ msgstr "No molestes al equipo del USB Loader GX sobre errores en este archivo."
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-08-02 12:20+0200\n"
|
||||
"Last-Translator: Katsurou\n"
|
||||
"Language-Team: Katsurou, pirateX\n"
|
||||
@ -46,6 +46,9 @@ msgstr "2 (Tonåringar 12+)"
|
||||
msgid "20 min"
|
||||
msgstr "20 min"
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr "3 (Mogen 16+)"
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr "3 min"
|
||||
msgid "30 min"
|
||||
msgstr "30 min"
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "3D-Omslag"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr "Kunde inte ställa in USB."
|
||||
msgid "Cover Download"
|
||||
msgstr "Omslagsnedladdning"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "Omslagsmapp"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr "Ändra omslagsmapp"
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr ""
|
||||
msgid "Sept"
|
||||
msgstr "Sept"
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr "Ställ in som bakgrundsmusik?"
|
||||
|
||||
@ -1194,6 +1200,9 @@ msgstr "av"
|
||||
msgid "seconds left"
|
||||
msgstr "sekunder kvar"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "Omslagsmapp"
|
||||
|
||||
#~ msgid "Don't bother the USB Loader GX Team about errors in this file."
|
||||
#~ msgstr "Rapportera inte fel i denna fil till USB Loader GX teamet."
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
|
||||
"Last-Translator: kyogc\n"
|
||||
"Language-Team: \n"
|
||||
@ -46,6 +46,9 @@ msgstr "(青少年 12歲以上)"
|
||||
msgid "20 min"
|
||||
msgstr "20分鐘"
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr "(青年 16歲以上)"
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr "3分鐘"
|
||||
msgid "30 min"
|
||||
msgstr "30分鐘"
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "3D封面"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr "無法設置USB"
|
||||
msgid "Cover Download"
|
||||
msgstr "下載封面"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "封面路徑"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr "變更封面路徑"
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr ""
|
||||
msgid "Sept"
|
||||
msgstr "九月"
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr "設定背景音樂"
|
||||
|
||||
@ -1194,6 +1200,9 @@ msgstr "剩餘空間 總容量"
|
||||
msgid "seconds left"
|
||||
msgstr "剩餘秒數"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "封面路徑"
|
||||
|
||||
#~ msgid "Don't bother the USB Loader GX Team about errors in this file."
|
||||
#~ msgstr "檔案錯誤"
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-09-19 14:00+0700\n"
|
||||
"Last-Translator: Nitro_subzero \n"
|
||||
"Language-Team: Nitro_subzero\n"
|
||||
@ -46,6 +46,9 @@ msgstr "2 (วัยรุ่น 12+)"
|
||||
msgid "20 min"
|
||||
msgstr "20 นาที"
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr "3 (เต็มวัย 16+)"
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr "3 นาที"
|
||||
msgid "30 min"
|
||||
msgstr "30 นาที"
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "หน้าปก 3D"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr "ไม่สามารถตั้งค่า USB ได้"
|
||||
msgid "Cover Download"
|
||||
msgstr "ดาวน์โหลดปก"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "ที่เก็บ ปก"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr "ที่เก็บ ปก ถูกเปลี่ยนแปลง"
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr "DOL ที่เลือก"
|
||||
msgid "Sept"
|
||||
msgstr "กย."
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr "เลือกเป็น Background music?"
|
||||
|
||||
@ -1194,6 +1200,9 @@ msgstr "ของ"
|
||||
msgid "seconds left"
|
||||
msgstr "วินาทีที่เหลือ"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "ที่เก็บ ปก"
|
||||
|
||||
#~ msgid "Don't bother the USB Loader GX Team about errors in this file."
|
||||
#~ msgstr "อย่ารบกวนผู้พัฒนา USB Loader GX ถ้ามีข้อผิดพลาดกับไฟล์นี้ "
|
||||
|
||||
|
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: USB Loader GX\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2009-09-20 04:59+0200\n"
|
||||
"POT-Creation-Date: 2009-09-27 20:15+0200\n"
|
||||
"PO-Revision-Date: 2009-07-18 15:18+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@ -46,6 +46,9 @@ msgstr ""
|
||||
msgid "20 min"
|
||||
msgstr ""
|
||||
|
||||
msgid "2D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3 (Mature 16+)"
|
||||
msgstr ""
|
||||
|
||||
@ -55,6 +58,9 @@ msgstr ""
|
||||
msgid "30 min"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Cover Path"
|
||||
msgstr ""
|
||||
|
||||
msgid "3D Covers"
|
||||
msgstr "3B Kapaklar"
|
||||
|
||||
@ -284,9 +290,6 @@ msgstr ""
|
||||
msgid "Cover Download"
|
||||
msgstr "Kapak Indirme"
|
||||
|
||||
msgid "Cover Path"
|
||||
msgstr "Kapak Yolu"
|
||||
|
||||
msgid "Coverpath Change"
|
||||
msgstr ""
|
||||
|
||||
@ -911,6 +914,9 @@ msgstr ""
|
||||
msgid "Sept"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set Search-Filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set as backgroundmusic?"
|
||||
msgstr ""
|
||||
|
||||
@ -1194,6 +1200,9 @@ msgstr "/"
|
||||
msgid "seconds left"
|
||||
msgstr "saniye kaldi"
|
||||
|
||||
#~ msgid "Cover Path"
|
||||
#~ msgstr "Kapak Yolu"
|
||||
|
||||
#~ msgid "No partitions found"
|
||||
#~ msgstr "Bölüm bulunamadi"
|
||||
|
||||
|
@ -90,8 +90,8 @@ FreeTypeGX::~FreeTypeGX() {
|
||||
*/
|
||||
wchar_t* FreeTypeGX::charToWideChar(char* strChar) {
|
||||
wchar_t *strWChar;
|
||||
strWChar = new wchar_t[strlen(strChar) + 1];
|
||||
|
||||
try {strWChar = new wchar_t[strlen(strChar) + 1];}
|
||||
catch (...) { return 0; }
|
||||
// UTF-8
|
||||
int bt;
|
||||
bt = mbstowcs(strWChar, strChar, strlen(strChar));
|
||||
|
@ -1,289 +0,0 @@
|
||||
/****************************************************************************
|
||||
* USB Loader GX Team
|
||||
* buffer.cpp
|
||||
*
|
||||
* Loading covers in a background thread
|
||||
***************************************************************************/
|
||||
|
||||
#include <gccore.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "libwiigui/gui.h"
|
||||
#include "usbloader/disc.h"
|
||||
#include "settings/cfg.h"
|
||||
#include "buffer.h"
|
||||
#include "main.h"
|
||||
|
||||
#define BUFFERSIZE 9
|
||||
|
||||
extern struct discHdr * gameList;
|
||||
extern u32 gameCnt;
|
||||
|
||||
static lwp_t bufferthread = LWP_THREAD_NULL;
|
||||
static bool BufferHalt = true;
|
||||
static int loading = 0;
|
||||
static int offset = 0;
|
||||
static int direction = 1;
|
||||
static bool changed = false;
|
||||
static bool firstime = true;
|
||||
|
||||
static GuiImageData NoCoverData(nocover_png);
|
||||
static GuiImageData * cover[BUFFERSIZE];
|
||||
static GuiImage * coverImg[BUFFERSIZE];
|
||||
static GuiImage * NoCover[BUFFERSIZE];
|
||||
|
||||
GuiImage * ImageBuffer(int imagenumber) {
|
||||
if ((BUFFERSIZE-1 > imagenumber) && direction >= 0) {
|
||||
return coverImg[imagenumber];
|
||||
}
|
||||
|
||||
if ((0 < imagenumber) && direction < 0) {
|
||||
return coverImg[imagenumber];
|
||||
}
|
||||
|
||||
if (loading == BUFFERSIZE) {
|
||||
return coverImg[imagenumber];
|
||||
}
|
||||
|
||||
return NoCover[imagenumber];
|
||||
}
|
||||
|
||||
void LoadImages() {
|
||||
if (!changed || BufferHalt)
|
||||
return;
|
||||
|
||||
char ID[4];
|
||||
char IDfull[7];
|
||||
char imgPath[200];
|
||||
|
||||
for (u32 i = offset; (int) i < offset+BUFFERSIZE; i++) {
|
||||
|
||||
struct discHdr *header;
|
||||
if (i > gameCnt-1)
|
||||
header = &gameList[i-gameCnt];
|
||||
else
|
||||
header = &gameList[i];
|
||||
|
||||
snprintf (ID,sizeof(ID),"%c%c%c", header->id[0], header->id[1], header->id[2]);
|
||||
snprintf (IDfull,sizeof(IDfull),"%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2],header->id[3], header->id[4], header->id[5]);
|
||||
|
||||
|
||||
snprintf(imgPath, sizeof(imgPath), "%s%s.png", Settings.covers_path, IDfull); //Load full id image
|
||||
|
||||
//firsttime loading images into memory
|
||||
if (firstime) {
|
||||
|
||||
if (coverImg[loading]) {
|
||||
delete coverImg[loading];
|
||||
coverImg[loading] = NULL;
|
||||
}
|
||||
if (cover[loading]) {
|
||||
delete cover[loading];
|
||||
cover[loading] = NULL;
|
||||
}
|
||||
|
||||
cover[loading] = new GuiImageData(imgPath,0);
|
||||
if (!cover[loading]->GetImage()) {
|
||||
delete cover[loading];
|
||||
cover[loading] = NULL;
|
||||
snprintf(imgPath, sizeof(imgPath), "%s%s.png", Settings.covers_path, ID); //Load short id image
|
||||
cover[loading] = new GuiImageData(imgPath, 0);
|
||||
if (!cover[loading]->GetImage()) {
|
||||
delete cover[loading];
|
||||
cover[loading] = NULL;
|
||||
snprintf(imgPath, sizeof(imgPath), "%snoimage.png", CFG.theme_path); //Load no image
|
||||
cover[loading] = new GuiImageData(imgPath, nocover_png);
|
||||
}
|
||||
}
|
||||
coverImg[loading] = new GuiImage(cover[loading]);
|
||||
|
||||
} else {
|
||||
|
||||
if (direction >= 0) {
|
||||
|
||||
if (loading < BUFFERSIZE-1) {
|
||||
|
||||
if (coverImg[loading]) {
|
||||
delete coverImg[loading];
|
||||
coverImg[loading] = NULL;
|
||||
}
|
||||
|
||||
if (loading == 0) {
|
||||
if (cover[loading]) {
|
||||
delete cover[loading];
|
||||
cover[loading] = NULL;
|
||||
}
|
||||
cover[loading] = new GuiImageData(NULL, 0);
|
||||
cover[loading] = cover[loading+1];
|
||||
} else {
|
||||
cover[loading] = cover[loading+1];
|
||||
}
|
||||
|
||||
coverImg[loading] = new GuiImage(cover[loading]);
|
||||
|
||||
} else {
|
||||
|
||||
cover[loading] = new GuiImageData(imgPath,0);
|
||||
if (!cover[loading]->GetImage()) {
|
||||
delete cover[loading];
|
||||
cover[loading] = NULL;
|
||||
snprintf(imgPath, sizeof(imgPath), "%s%s.png", Settings.covers_path, ID); //Load short id image
|
||||
cover[loading] = new GuiImageData(imgPath, 0);
|
||||
if (!cover[loading]->GetImage()) {
|
||||
delete cover[loading];
|
||||
cover[loading] = NULL;
|
||||
snprintf(imgPath, sizeof(imgPath), "%snoimage.png", Settings.covers_path); //Load no image
|
||||
cover[loading] = new GuiImageData(imgPath, nocover_png);
|
||||
}
|
||||
}
|
||||
if (coverImg[loading]) {
|
||||
delete coverImg[loading];
|
||||
coverImg[loading] = NULL;
|
||||
}
|
||||
coverImg[loading] = new GuiImage(cover[loading]);
|
||||
}
|
||||
} else if (direction < 0) {
|
||||
|
||||
if (BUFFERSIZE-loading-1 > 0) {
|
||||
|
||||
if (coverImg[BUFFERSIZE-loading-1]) {
|
||||
delete coverImg[BUFFERSIZE-loading-1];
|
||||
coverImg[BUFFERSIZE-loading-1] = NULL;
|
||||
}
|
||||
|
||||
if (BUFFERSIZE-loading-1 == BUFFERSIZE-1) {
|
||||
if (cover[BUFFERSIZE-loading-1]) {
|
||||
delete cover[BUFFERSIZE-loading-1];
|
||||
cover[BUFFERSIZE-loading-1] = NULL;
|
||||
}
|
||||
cover[BUFFERSIZE-loading-1] = new GuiImageData(NULL, 0);
|
||||
cover[BUFFERSIZE-loading-1] = cover[BUFFERSIZE-loading-1-1];
|
||||
} else {
|
||||
cover[BUFFERSIZE-loading-1] = cover[BUFFERSIZE-loading-1-1];
|
||||
coverImg[BUFFERSIZE-loading-1] = new GuiImage(cover[BUFFERSIZE-loading-1]);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
header = &gameList[offset];
|
||||
|
||||
snprintf (ID,sizeof(ID),"%c%c%c", header->id[0], header->id[1], header->id[2]);
|
||||
snprintf (IDfull,sizeof(IDfull),"%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2],header->id[3], header->id[4], header->id[5]);
|
||||
|
||||
snprintf(imgPath, sizeof(imgPath), "%s%s.png", Settings.covers_path, IDfull); //Load full id image
|
||||
|
||||
cover[0] = new GuiImageData(imgPath,0);
|
||||
if (!cover[0]->GetImage()) {
|
||||
delete cover[0];
|
||||
cover[0] = NULL;
|
||||
snprintf(imgPath, sizeof(imgPath), "%s%s.png", Settings.covers_path, ID); //Load short id image
|
||||
cover[0] = new GuiImageData(imgPath, 0);
|
||||
if (!cover[0]->GetImage()) {
|
||||
delete cover[0];
|
||||
cover[0] = NULL;
|
||||
snprintf(imgPath, sizeof(imgPath), "%snoimage.png", Settings.covers_path); //Load no image
|
||||
cover[0] = new GuiImageData(imgPath, nocover_png);
|
||||
}
|
||||
}
|
||||
if (coverImg[0]) {
|
||||
delete coverImg[0];
|
||||
coverImg[0] = NULL;
|
||||
}
|
||||
coverImg[0] = new GuiImage(cover[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
loading++;
|
||||
}
|
||||
|
||||
loading = BUFFERSIZE;
|
||||
changed = false;
|
||||
firstime = false;
|
||||
}
|
||||
|
||||
void NewOffset(int off, int d) {
|
||||
if (offset == off || loading < BUFFERSIZE)
|
||||
return;
|
||||
|
||||
direction = d;
|
||||
|
||||
offset = off;
|
||||
|
||||
loading = 0;
|
||||
changed = true;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* HaltBuffer
|
||||
***************************************************************************/
|
||||
void HaltBufferThread() {
|
||||
BufferHalt = true;
|
||||
firstime = true;
|
||||
changed = true;
|
||||
loading = 0;
|
||||
offset = 0;
|
||||
direction = 0;
|
||||
|
||||
// wait for thread to finish
|
||||
while (!LWP_ThreadIsSuspended(bufferthread))
|
||||
usleep(100);
|
||||
|
||||
for (int i = 0; i < BUFFERSIZE; i++) {
|
||||
delete cover[i];
|
||||
cover[i] = NULL;
|
||||
delete coverImg[i];
|
||||
coverImg[i] = NULL;
|
||||
delete NoCover[i];
|
||||
NoCover[i] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* ResumeBufferThread
|
||||
***************************************************************************/
|
||||
void ResumeBufferThread(int offset) {
|
||||
BufferHalt = false;
|
||||
firstime = true;
|
||||
changed = true;
|
||||
loading = 0;
|
||||
offset = offset;
|
||||
direction = 0;
|
||||
|
||||
for (u8 i = 0; i < BUFFERSIZE; i++) {
|
||||
if (NoCover[i] != NULL) {
|
||||
delete NoCover[i];
|
||||
NoCover[i] = NULL;
|
||||
}
|
||||
NoCover[i] = new GuiImage(&NoCoverData);
|
||||
}
|
||||
|
||||
LWP_ResumeThread(bufferthread);
|
||||
}
|
||||
|
||||
/*********************************************************************************
|
||||
* Bufferthread
|
||||
*********************************************************************************/
|
||||
static void * bufferinitcallback(void *arg) {
|
||||
while (1) {
|
||||
if (BufferHalt)
|
||||
LWP_SuspendThread(bufferthread);
|
||||
|
||||
LoadImages();
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* InitBufferThread with priority 50
|
||||
***************************************************************************/
|
||||
void InitBufferThread() {
|
||||
LWP_CreateThread(&bufferthread, bufferinitcallback, NULL, NULL, 0, 50);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* ShutdownThread
|
||||
***************************************************************************/
|
||||
void ShutdownBufferThread() {
|
||||
LWP_JoinThread (bufferthread, NULL);
|
||||
bufferthread = LWP_THREAD_NULL;
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
/****************************************************************************
|
||||
* USB Loader GX Team
|
||||
* buffer.cpp
|
||||
*
|
||||
* Loading covers in a background thread
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef _BUFFER_H_
|
||||
#define _BUFFER_H_
|
||||
|
||||
GuiImage * ImageBuffer(int imagenumber);
|
||||
void NewOffset(int off, int d);
|
||||
void InitBufferThread();
|
||||
void ShutdownBufferThread();
|
||||
void ResumeBufferThread(int offset);
|
||||
void HaltBufferThread();
|
||||
|
||||
#endif
|
@ -42,14 +42,14 @@ int CheatMenu(const char * gameID) {
|
||||
GuiTrigger trigB;
|
||||
trigB.SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
|
||||
|
||||
GuiText backBtnTxt(tr("Back") , 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText backBtnTxt(tr("Back") , 22, THEME.prompttext);
|
||||
backBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
|
||||
GuiImage backBtnImg(&btnOutline);
|
||||
GuiButton backBtn(&backBtnImg,&backBtnImg, 2, 3, -140, 400, &trigA, NULL, &btnClick,1);
|
||||
backBtn.SetLabel(&backBtnTxt);
|
||||
backBtn.SetTrigger(&trigB);
|
||||
|
||||
GuiText createBtnTxt(tr("Create") , 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText createBtnTxt(tr("Create") , 22, THEME.prompttext);
|
||||
createBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
|
||||
GuiImage createBtnImg(&btnOutline);
|
||||
GuiButton createBtn(&createBtnImg,&createBtnImg, 2, 3, 160, 400, &trigA, NULL, &btnClick,1);
|
||||
|
@ -173,6 +173,12 @@ extern const u32 keyboard_mediumkey_over_png_size;
|
||||
extern const u8 keyboard_largekey_over_png[];
|
||||
extern const u32 keyboard_largekey_over_png_size;
|
||||
|
||||
extern const u8 keyboard_backspace_over_png[];
|
||||
extern const u32 keyboard_backspace_over_png_size;
|
||||
|
||||
extern const u8 keyboard_clear_over_png[];
|
||||
extern const u32 keyboard_clear_over_png_size;
|
||||
|
||||
extern const u8 menu_button_png[];
|
||||
extern const u32 menu_button_size;
|
||||
|
||||
@ -311,6 +317,9 @@ extern const u32 not_favorite_png_size;
|
||||
extern const u8 favIcon_png[];
|
||||
extern const u32 favIcon_png_size;
|
||||
|
||||
extern const u8 searchIcon_png[];
|
||||
extern const u32 searchIcon_png_size;
|
||||
|
||||
extern const u8 abcIcon_png[];
|
||||
extern const u32 abcIcon_png_size;
|
||||
|
||||
@ -326,23 +335,8 @@ extern const u32 arrangeGrid_png_size;
|
||||
extern const u8 arrangeCarousel_png[];
|
||||
extern const u32 arrangeCarousel_png_size;
|
||||
|
||||
extern const u8 favIcon_gray_png[];
|
||||
extern const u32 favIcon_gray_png_size;
|
||||
|
||||
extern const u8 abcIcon_gray_png[];
|
||||
extern const u32 abcIcon_gray_png_size;
|
||||
|
||||
extern const u8 playCountIcon_gray_png[];
|
||||
extern const u32 playCountIcon_gray_png_size;
|
||||
|
||||
extern const u8 arrangeGrid_gray_png[];
|
||||
extern const u32 arrangeGrid_gray_png_size;
|
||||
|
||||
extern const u8 arrangeList_gray_png[];
|
||||
extern const u32 arrangeList_gray_png_size;
|
||||
|
||||
extern const u8 arrangeCarousel_gray_png[];
|
||||
extern const u32 arrangeCarousel_gray_png_size;
|
||||
extern const u8 searchBar_png[];
|
||||
extern const u32 searchBar_png_png_size;
|
||||
|
||||
extern const u8 settings_title_png[];
|
||||
extern const u32 settings_title_png_size;
|
||||
|
@ -138,7 +138,7 @@ int MenuHomebrewBrowse() {
|
||||
}
|
||||
/*** Buttons ***/
|
||||
|
||||
GuiText backBtnTxt(tr("Back") , 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText backBtnTxt(tr("Back") , 22, THEME.prompttext);
|
||||
backBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
|
||||
GuiImage backBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 813 B |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1016 B |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 892 B |
Before Width: | Height: | Size: 648 B |
Before Width: | Height: | Size: 913 B After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 709 B |
Before Width: | Height: | Size: 983 B |
Before Width: | Height: | Size: 778 B After Width: | Height: | Size: 919 B |
Before Width: | Height: | Size: 664 B |
BIN
source/images/searchIcon.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
@ -476,8 +476,6 @@ private:
|
||||
GuiElement *element;
|
||||
};
|
||||
#define LOCK(e) SimpleLock LOCK(e)
|
||||
//disabled because of problems with FW 4.0
|
||||
//#define LOCK(e)
|
||||
|
||||
//!Allows GuiElements to be grouped together into a "window"
|
||||
class GuiWindow : public GuiElement
|
||||
@ -571,6 +569,8 @@ class GuiImageData
|
||||
//!Gets the image height
|
||||
//!\return image height
|
||||
int GetHeight();
|
||||
//!Sets the image to grayscale
|
||||
void SetGrayscale(void);
|
||||
protected:
|
||||
u8 * data; //!< Image data
|
||||
int height; //!< Height of image
|
||||
@ -651,6 +651,7 @@ class GuiImage : public GuiElement
|
||||
void SetStripe(int s);
|
||||
s32 z;
|
||||
void SetSkew(int XX1, int YY1,int XX2, int YY2,int XX3, int YY3,int XX4, int YY4);
|
||||
void SetSkew(int *skew /* int skew[8] */ );
|
||||
int xx1;
|
||||
int yy1;
|
||||
int xx2;
|
||||
@ -696,6 +697,7 @@ class GuiText : public GuiElement
|
||||
//!\param t Text
|
||||
void SetText(const char * t);
|
||||
void SetTextf(const char *format, ...) __attribute__((format(printf,2,3)));
|
||||
void SetText(const wchar_t * t);
|
||||
//!Sets up preset values to be used by GuiText(t)
|
||||
//!Useful when printing multiple text elements, all with the same attributes set
|
||||
//!\param sz Font size
|
||||
@ -771,7 +773,7 @@ class GuiTooltip : public GuiElement
|
||||
public:
|
||||
//!Constructor
|
||||
//!\param t Text
|
||||
GuiTooltip(const char *t);
|
||||
GuiTooltip(const char *t, int Alpha=255);
|
||||
|
||||
//!Destructor
|
||||
~ GuiTooltip();
|
||||
@ -889,6 +891,7 @@ class GuiButton : public GuiElement
|
||||
//!Deactivate/Activate pointing on Games while B scrolling
|
||||
void ScrollIsOn(int f);
|
||||
void SetSkew(int XX1, int YY1,int XX2, int YY2,int XX3, int YY3,int XX4, int YY4);
|
||||
void SetSkew(int *skew /* int skew[8] */ );
|
||||
protected:
|
||||
GuiImage * image; //!< Button image (default)
|
||||
GuiImage * imageOver; //!< Button image for STATE_SELECTED
|
||||
|
@ -44,6 +44,8 @@ GuiButton::GuiButton(int w, int h)
|
||||
selectable = true;
|
||||
holdable = false;
|
||||
clickable = true;
|
||||
|
||||
time1 = time2 = 0;
|
||||
}
|
||||
|
||||
GuiButton::GuiButton(GuiImage* img, GuiImage* imgOver, int hor, int vert, int x, int y, GuiTrigger* trig, GuiSound* sndOver, GuiSound* sndClick, u8 grow)
|
||||
@ -53,7 +55,7 @@ GuiButton::GuiButton(GuiImage* img, GuiImage* imgOver, int hor, int vert, int x,
|
||||
image = img;
|
||||
image->SetParent(this);
|
||||
imageOver = imgOver;
|
||||
imageOver->SetParent(this);
|
||||
if(imageOver) imageOver->SetParent(this);
|
||||
imageHold = NULL;
|
||||
imageClick = NULL;
|
||||
icon = NULL;
|
||||
@ -87,6 +89,7 @@ GuiButton::GuiButton(GuiImage* img, GuiImage* imgOver, int hor, int vert, int x,
|
||||
effectAmountOver = 4;
|
||||
effectTargetOver = 110;
|
||||
}
|
||||
time1 = time2 = 0;
|
||||
}
|
||||
|
||||
GuiButton::GuiButton(GuiImage* img, GuiImage* imgOver, int hor, int vert, int x, int y, GuiTrigger* trig, GuiSound* sndOver, GuiSound* sndClick, u8 grow, GuiTooltip* tt, int ttx, int tty, int h_align, int v_align)
|
||||
@ -96,7 +99,7 @@ GuiButton::GuiButton(GuiImage* img, GuiImage* imgOver, int hor, int vert, int x,
|
||||
image = img;
|
||||
image->SetParent(this);
|
||||
imageOver = imgOver;
|
||||
imageOver->SetParent(this);
|
||||
if(imageOver) imageOver->SetParent(this);
|
||||
imageHold = NULL;
|
||||
imageClick = NULL;
|
||||
icon = NULL;
|
||||
@ -135,6 +138,8 @@ GuiButton::GuiButton(GuiImage* img, GuiImage* imgOver, int hor, int vert, int x,
|
||||
toolTip->SetParent(this);
|
||||
toolTip->SetAlignment(h_align, v_align);
|
||||
toolTip->SetPosition(ttx,tty);
|
||||
|
||||
time1 = time2 = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -263,7 +268,8 @@ void GuiButton::RemoveSoundClick()
|
||||
}
|
||||
void GuiButton::SetSkew(int XX1, int YY1,int XX2, int YY2,int XX3, int YY3,int XX4, int YY4)
|
||||
{
|
||||
|
||||
if(image)
|
||||
{
|
||||
image->xx1 = XX1;
|
||||
image->yy1 = YY1;
|
||||
image->xx2 = XX2;
|
||||
@ -272,6 +278,13 @@ void GuiButton::SetSkew(int XX1, int YY1,int XX2, int YY2,int XX3, int YY3,int X
|
||||
image->yy3 = YY3;
|
||||
image->xx4 = XX4;
|
||||
image->yy4 = YY4;
|
||||
}
|
||||
}
|
||||
|
||||
void GuiButton::SetSkew(int *skew)
|
||||
{
|
||||
if(image)
|
||||
image->SetSkew(skew);
|
||||
}
|
||||
|
||||
|
||||
@ -308,7 +321,7 @@ void GuiButton::Draw()
|
||||
void GuiButton::DrawTooltip()
|
||||
{
|
||||
LOCK(this);
|
||||
if(state == STATE_SELECTED && toolTip)
|
||||
if(this->IsVisible() && state == STATE_SELECTED && toolTip)
|
||||
{
|
||||
if (time2 == 0)
|
||||
{
|
||||
@ -344,7 +357,7 @@ void GuiButton::ScrollIsOn(int f)
|
||||
void GuiButton::Update(GuiTrigger * t)
|
||||
{
|
||||
LOCK(this);
|
||||
if(state == STATE_CLICKED || state == STATE_DISABLED || !t)
|
||||
if(!this->IsVisible() || state == STATE_CLICKED || state == STATE_DISABLED || !t)
|
||||
return;
|
||||
else if(parentElement && parentElement->GetState() == STATE_DISABLED)
|
||||
return;
|
||||
|
@ -179,17 +179,17 @@ GuiCustomOptionBrowser::GuiCustomOptionBrowser(int w, int h, customOptionList *
|
||||
|
||||
for(int i=0; i < size; i++)
|
||||
{
|
||||
optionTxt[i] = new GuiText(options->GetName(i), 20, (GXColor){THEME.settingsTxt_r, THEME.settingsTxt_g, THEME.settingsTxt_b, 0xff});
|
||||
optionTxt[i] = new GuiText(options->GetName(i), 20, THEME.settingstext);
|
||||
optionTxt[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||
optionTxt[i]->SetPosition(24,0);
|
||||
optionTxt[i]->SetMaxWidth(bgOptionsImg->GetWidth() - (coL2+24), GuiText::DOTTED);
|
||||
|
||||
optionBg[i] = new GuiImage(bgOptionsEntry);
|
||||
|
||||
optionVal[i] = new GuiText(NULL, 20, (GXColor){THEME.settingsTxt_r, THEME.settingsTxt_g, THEME.settingsTxt_b, 0xff});
|
||||
optionVal[i] = new GuiText(NULL, 20, THEME.settingstext);
|
||||
optionVal[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||
|
||||
optionValOver[i] = new GuiText(NULL, 20, (GXColor){THEME.settingsTxt_r, THEME.settingsTxt_g, THEME.settingsTxt_b, 0xff});
|
||||
optionValOver[i] = new GuiText(NULL, 20, THEME.settingstext);
|
||||
optionValOver[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||
|
||||
optionBtn[i] = new GuiButton(width-28,GAMESELECTSIZE);
|
||||
|
@ -13,7 +13,7 @@
|
||||
/**
|
||||
* Constructor for the Object class.
|
||||
*/
|
||||
mutex_t GuiElement::mutex = 0;
|
||||
mutex_t GuiElement::mutex = LWP_MUTEX_NULL;
|
||||
GuiElement::GuiElement()
|
||||
{
|
||||
xoffset = 0;
|
||||
@ -65,7 +65,7 @@ GuiElement::GuiElement()
|
||||
// default alignment - align to top left
|
||||
alignmentVert = ALIGN_TOP;
|
||||
alignmentHor = ALIGN_LEFT;
|
||||
if(mutex == 0) LWP_MutexInit(&mutex, true);
|
||||
if(mutex == LWP_MUTEX_NULL) LWP_MutexInit(&mutex, true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -124,13 +124,13 @@ GuiGameBrowser::GuiGameBrowser(int w, int h, struct discHdr * l, int gameCnt, co
|
||||
|
||||
for(int i=0; i < pagesize; i++)
|
||||
{
|
||||
gameTxt[i] = new GuiText(get_title(&gameList[i]), 20, (GXColor){THEME.gameText_r, THEME.gameText_g, THEME.gameText_b, 0xff});
|
||||
gameTxt[i] = new GuiText(get_title(&gameList[i]), 20, THEME.gametext);
|
||||
gameTxt[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||
gameTxt[i]->SetPosition(24,0);
|
||||
gameTxt[i]->SetMaxWidth(maxTextWidth, GuiText::DOTTED);
|
||||
|
||||
|
||||
gameTxtOver[i] = new GuiText(get_title(&gameList[i]), 20, (GXColor){THEME.gameText_r, THEME.gameText_g, THEME.gameText_b, 0xff});
|
||||
gameTxtOver[i] = new GuiText(get_title(&gameList[i]), 20, THEME.gametext);
|
||||
gameTxtOver[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||
gameTxtOver[i]->SetPosition(24,0);
|
||||
gameTxtOver[i]->SetMaxWidth(maxTextWidth, GuiText::SCROLL);
|
||||
@ -413,7 +413,7 @@ void GuiGameBrowser::Update(GuiTrigger * t)
|
||||
game[selectedItem+1]->SetState(STATE_SELECTED, t->chan);
|
||||
selectedItem++;
|
||||
}
|
||||
scrollbarBoxBtn->Draw();
|
||||
// scrollbarBoxBtn->Draw();
|
||||
usleep(10000 * scrolldelay);
|
||||
}
|
||||
if (!(ButtonsHold() & WPAD_BUTTON_A))
|
||||
@ -436,7 +436,7 @@ void GuiGameBrowser::Update(GuiTrigger * t)
|
||||
game[selectedItem-1]->SetState(STATE_SELECTED, t->chan);
|
||||
selectedItem--;
|
||||
}
|
||||
scrollbarBoxBtn->Draw();
|
||||
// scrollbarBoxBtn->Draw();
|
||||
usleep(10000 * scrolldelay);
|
||||
}
|
||||
if (!(ButtonsHold() & WPAD_BUTTON_A))
|
||||
@ -470,7 +470,7 @@ void GuiGameBrowser::Update(GuiTrigger * t)
|
||||
game[selectedItem-1]->SetState(STATE_SELECTED, t->chan);
|
||||
selectedItem--;
|
||||
}
|
||||
scrollbarBoxBtn->Draw();
|
||||
// scrollbarBoxBtn->Draw();
|
||||
usleep(10000 * scrolldelay);
|
||||
}
|
||||
}
|
||||
@ -491,7 +491,7 @@ void GuiGameBrowser::Update(GuiTrigger * t)
|
||||
game[selectedItem+1]->SetState(STATE_SELECTED, t->chan);
|
||||
selectedItem++;
|
||||
}
|
||||
scrollbarBoxBtn->Draw();
|
||||
// scrollbarBoxBtn->Draw();
|
||||
usleep(10000 * scrolldelay);
|
||||
}
|
||||
}
|
||||
|
@ -7,7 +7,7 @@
|
||||
class GuiGameBrowser : public GuiElement
|
||||
{
|
||||
public:
|
||||
GuiGameBrowser(int w, int h, struct discHdr * l, int gameCnt, const char *themePath, const u8 *imagebg, int selected = 0, int offset = 0);
|
||||
GuiGameBrowser(int w, int h, struct discHdr *l, int gameCnt, const char *themePath, const u8 *imagebg, int selected = 0, int offset = 0);
|
||||
~GuiGameBrowser();
|
||||
int FindMenuItem(int c, int d);
|
||||
int GetClickedOption();
|
||||
|
@ -8,12 +8,13 @@
|
||||
|
||||
#include "gui.h"
|
||||
#include "../wpad.h"
|
||||
#include "../menu.h"
|
||||
|
||||
#include <unistd.h>
|
||||
#include "gui_image_async.h"
|
||||
#include "gui_gamecarousel.h"
|
||||
#include "../settings/cfg.h"
|
||||
#include "../main.h"
|
||||
#include "../buffer.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
@ -27,24 +28,34 @@
|
||||
#define SPEED_STEP 4
|
||||
#define SPEED_LIMIT 250
|
||||
|
||||
static inline int OFFSETLIMIT(int Offset, int gameCnt)
|
||||
{
|
||||
while(Offset < 0) Offset+=gameCnt;
|
||||
return Offset%gameCnt;
|
||||
}
|
||||
#define GetGameIndex(pageEntry, listOffset, gameCnt) OFFSETLIMIT(listOffset+pageEntry, gameCnt)
|
||||
static GuiImageData *GameCarouselLoadCoverImage(void * Arg)
|
||||
{
|
||||
return LoadCoverImage((struct discHdr *)Arg, true, false);
|
||||
}
|
||||
/**
|
||||
* Constructor for the GuiGameCarousel class.
|
||||
*/
|
||||
GuiGameCarousel::GuiGameCarousel(int w, int h, struct discHdr * l, int count, const char *themePath, const u8 *imagebg, int selected, int offset)
|
||||
GuiGameCarousel::GuiGameCarousel(int w, int h, struct discHdr * l, int count, const char *themePath, const u8 *imagebg, int selected, int offset) :
|
||||
noCover(nocover_png)
|
||||
{
|
||||
width = w;
|
||||
height = h;
|
||||
gameCnt = count;
|
||||
gameList = l;
|
||||
pagesize = (gameCnt < PAGESIZE) ? gameCnt : PAGESIZE;
|
||||
pagesize = (gameCnt < 11) ? gameCnt : 11;
|
||||
listOffset = 0;
|
||||
selectable = true;
|
||||
selectedItem = 0;
|
||||
if (selectedItem==0)selectedItem=(pagesize+1)/2;
|
||||
selectedItem = -1;
|
||||
focus = 1; // allow focus
|
||||
firstPic = 0;
|
||||
clickedItem = -1;
|
||||
speed = SHIFT_SPEED;
|
||||
|
||||
speed = 0;
|
||||
char imgPath[100];
|
||||
|
||||
trigA = new GuiTrigger;
|
||||
@ -96,31 +107,65 @@ GuiGameCarousel::GuiGameCarousel(int w, int h, struct discHdr * l, int count, co
|
||||
btnRight->SetTrigger(trigPlus);
|
||||
btnRight->SetEffectGrow();
|
||||
|
||||
ResumeBufferThread(listOffset);
|
||||
|
||||
ttgame = new GuiTooltip(" ");
|
||||
|
||||
gamename = new GuiText(" ", 18, (GXColor) {THEME.info_r, THEME.info_g, THEME.info_b, 255});
|
||||
gamename = new GuiText(" ", 18, THEME.info);
|
||||
gamename->SetParent(this);
|
||||
gamename->SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
gamename->SetPosition(0, 330);
|
||||
gamename->SetMaxWidth(280, GuiText::DOTTED);
|
||||
|
||||
gameIndex = new int[pagesize];
|
||||
game = new GuiButton * [pagesize];
|
||||
gameIndex = new int[pagesize];
|
||||
game = new GuiButton * [pagesize];
|
||||
titleTT = new GuiTooltip * [pagesize];
|
||||
coverImg = new GuiImageAsync * [pagesize];
|
||||
|
||||
for(int i=0; i < pagesize; i++)
|
||||
{
|
||||
//------------------------
|
||||
// Index
|
||||
//------------------------
|
||||
gameIndex[i] = GetGameIndex(i, listOffset, gameCnt);
|
||||
|
||||
//------------------------
|
||||
// Tooltip
|
||||
//------------------------
|
||||
titleTT[i] = new GuiTooltip(get_title(&gameList[gameIndex[i]]), THEME.tooltipAlpha);
|
||||
|
||||
//------------------------
|
||||
// Image
|
||||
//------------------------
|
||||
coverImg[i] = new(std::nothrow) GuiImageAsync(GameCarouselLoadCoverImage, &gameList[gameIndex[i]], sizeof(struct discHdr), &noCover);
|
||||
if(coverImg[i])
|
||||
coverImg[i]->SetWidescreen(CFG.widescreen);
|
||||
|
||||
//------------------------
|
||||
// GameButton
|
||||
//------------------------
|
||||
|
||||
for(int i=0; i < pagesize; i++) {
|
||||
game[i] = new GuiButton(122,244);
|
||||
game[i]->SetParent(this);
|
||||
game[i]->SetAlignment(ALIGN_CENTRE,ALIGN_MIDDLE);
|
||||
game[i]->SetPosition(0,740);
|
||||
game[i]->SetImage(ImageBuffer((listOffset+i) % gameCnt));
|
||||
game[i]->SetImage(coverImg[i]);
|
||||
game[i]->SetScale(SCALE);
|
||||
game[i]->SetRumble(false);
|
||||
game[i]->SetTrigger(trigA);
|
||||
game[i]->SetSoundClick(btnSoundClick);
|
||||
game[i]->SetClickable(true);
|
||||
game[i]->SetEffect(EFFECT_GOROUND, IN_SPEED, 90-(pagesize-2*i-1)*DEG_OFFSET/2, RADIUS, 180, 1, 0, RADIUS);
|
||||
switch((i*3)/pagesize)
|
||||
{
|
||||
case 0:
|
||||
game[i]->SetToolTip(titleTT[i], 122/2, -244/4, ALIGN_LEFT, ALIGN_MIDDLE);
|
||||
break;
|
||||
case 1:
|
||||
game[i]->SetToolTip(titleTT[i], 0, -244/4, ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||
break;
|
||||
case 2:
|
||||
game[i]->SetToolTip(titleTT[i], -122/2, -244/4, ALIGN_RIGHT, ALIGN_MIDDLE);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -130,8 +175,6 @@ GuiGameCarousel::GuiGameCarousel(int w, int h, struct discHdr * l, int count, co
|
||||
*/
|
||||
GuiGameCarousel::~GuiGameCarousel()
|
||||
{
|
||||
HaltBufferThread();
|
||||
|
||||
delete imgRight;
|
||||
delete imgLeft;
|
||||
delete btnLeftImg;
|
||||
@ -146,15 +189,18 @@ GuiGameCarousel::~GuiGameCarousel()
|
||||
delete trigMinus;
|
||||
delete btnSoundClick;
|
||||
delete btnSoundOver;
|
||||
delete ttgame;
|
||||
delete gamename;
|
||||
|
||||
for(int i=0; i<pagesize; i++) {
|
||||
delete coverImg[i];
|
||||
delete titleTT[i];
|
||||
delete game[i];
|
||||
}
|
||||
|
||||
delete [] gameIndex;
|
||||
delete [] coverImg;
|
||||
delete [] game;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -168,7 +214,7 @@ void GuiGameCarousel::SetFocus(int f)
|
||||
for(int i=0; i<pagesize; i++)
|
||||
game[i]->ResetState();
|
||||
|
||||
if(f == 1)
|
||||
if(f == 1 && selectedItem>=0)
|
||||
game[selectedItem]->SetState(STATE_SELECTED);
|
||||
}
|
||||
|
||||
@ -189,22 +235,20 @@ void GuiGameCarousel::ResetState()
|
||||
|
||||
int GuiGameCarousel::GetOffset()
|
||||
{
|
||||
LOCK(this);
|
||||
return listOffset;
|
||||
}
|
||||
|
||||
|
||||
int GuiGameCarousel::GetClickedOption()
|
||||
{
|
||||
LOCK(this);
|
||||
int found = -1;
|
||||
if (clickedItem>=0 && clickedItem<=pagesize){
|
||||
if (game[(clickedItem+1) % pagesize]->GetState()==STATE_SELECTED){
|
||||
found = (clickedItem+listOffset+1) % gameCnt;
|
||||
game[(clickedItem+1) % pagesize]->SetState(STATE_SELECTED);
|
||||
game[clickedItem]->SetState(STATE_SELECTED);
|
||||
} else {
|
||||
game[clickedItem]->SetState(STATE_SELECTED);
|
||||
found= (clickedItem+listOffset) % gameCnt;}
|
||||
clickedItem=-1;
|
||||
if (clickedItem>=0)
|
||||
{
|
||||
game[clickedItem]->SetState(STATE_SELECTED);
|
||||
found = gameIndex[clickedItem];
|
||||
clickedItem=-1;
|
||||
}
|
||||
return found;
|
||||
}
|
||||
@ -212,41 +256,20 @@ int GuiGameCarousel::GetClickedOption()
|
||||
|
||||
int GuiGameCarousel::GetSelectedOption()
|
||||
{
|
||||
LOCK(this);
|
||||
int found = -1;
|
||||
for(int i=pagesize-1; i>-1; i--) {
|
||||
if(game[i]->GetState() == STATE_SELECTED) {
|
||||
for(int i=0; i<pagesize; i++)
|
||||
{
|
||||
if(game[i]->GetState() == STATE_SELECTED)
|
||||
{
|
||||
game[i]->SetState(STATE_SELECTED);
|
||||
found = (listOffset+i) % gameCnt;
|
||||
found = gameIndex[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
return found;
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* FindMenuItem
|
||||
*
|
||||
* Help function to find the next visible menu item on the list
|
||||
***************************************************************************/
|
||||
|
||||
int GuiGameCarousel::FindMenuItem(int currentItem, int direction)
|
||||
{
|
||||
int nextItem = currentItem + direction;
|
||||
|
||||
if(nextItem < 0 || nextItem >= gameCnt)
|
||||
if(gameCnt <= pagesize)
|
||||
return -1;
|
||||
else
|
||||
nextItem = (nextItem < 0) ? nextItem + gameCnt : nextItem - gameCnt;
|
||||
|
||||
if(strlen(get_title(&gameList[nextItem])) > 0)
|
||||
return nextItem;
|
||||
else
|
||||
return FindMenuItem(nextItem, direction);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Draw the button on screen
|
||||
*/
|
||||
@ -256,31 +279,22 @@ void GuiGameCarousel::Draw()
|
||||
if(!this->IsVisible() || !gameCnt)
|
||||
return;
|
||||
|
||||
int next = listOffset;
|
||||
|
||||
for(int i=0; i<pagesize; i++) {
|
||||
if(next >= 0) {
|
||||
game[i]->SetImage(ImageBuffer(i));
|
||||
game[i]->Draw();
|
||||
next = this->FindMenuItem(next, 1);
|
||||
} else break;
|
||||
}
|
||||
for(int i=0; i<pagesize; i++)
|
||||
game[i]->Draw();
|
||||
|
||||
//!Draw tooltip after the Images to have it on top
|
||||
for(int i=0; i<pagesize; i++) {
|
||||
if(next >= 0) {
|
||||
if(Settings.tooltips == TooltipsOn)
|
||||
game[i]->DrawTooltip();
|
||||
next = this->FindMenuItem(next, 1);
|
||||
} else break;
|
||||
}
|
||||
|
||||
gamename->Draw();
|
||||
|
||||
if(gameCnt > pagesize) {
|
||||
if(gameCnt > 6)
|
||||
{
|
||||
btnRight->Draw();
|
||||
btnLeft->Draw();
|
||||
}
|
||||
}
|
||||
|
||||
//!Draw tooltip after the Images to have it on top
|
||||
if (focus && Settings.tooltips == TooltipsOn)
|
||||
for(int i=0; i<pagesize; i++)
|
||||
game[i]->DrawTooltip();
|
||||
|
||||
this->UpdateEffects();
|
||||
}
|
||||
@ -292,136 +306,216 @@ void GuiGameCarousel::Update(GuiTrigger * t)
|
||||
if(state == STATE_DISABLED || !t || !gameCnt)
|
||||
return;
|
||||
|
||||
if(!(game[0]->GetEffect() || game[0]->GetEffectOnOver())) {
|
||||
for(int i=0; i<pagesize; i++) {
|
||||
game[i]->SetEffectGrow();
|
||||
}
|
||||
}
|
||||
|
||||
if(speed > SPEED_LIMIT)
|
||||
speed = SPEED_LIMIT;
|
||||
|
||||
btnRight->Update(t);
|
||||
btnLeft->Update(t);
|
||||
|
||||
if(btnRight->GetState() == STATE_CLICKED) {
|
||||
if(Settings.xflip==sysmenu ||Settings.xflip==yes) {
|
||||
NewOffset(listOffset, 1);
|
||||
} else {
|
||||
NewOffset(listOffset, -1);
|
||||
}
|
||||
} else if(btnLeft->GetState() == STATE_CLICKED) {
|
||||
if(Settings.xflip==sysmenu ||Settings.xflip==yes) {
|
||||
NewOffset(listOffset, -1);
|
||||
} else {
|
||||
NewOffset(listOffset, 1);
|
||||
}
|
||||
}
|
||||
|
||||
int next = listOffset;
|
||||
|
||||
for(int i=0; i<pagesize; i++) {
|
||||
if(next >= 0) {
|
||||
if(game[i]->GetState() == STATE_DISABLED) {
|
||||
game[i]->SetVisible(true);
|
||||
game[i]->SetState(STATE_DEFAULT);
|
||||
game[i]->RemoveToolTip();
|
||||
}
|
||||
game[i]->SetEffectOnOver(EFFECT_SCALE, 1, 130);
|
||||
gameIndex[i] = next;
|
||||
next = this->FindMenuItem(next, 1);
|
||||
} else {
|
||||
game[i]->SetVisible(false);
|
||||
game[i]->SetState(STATE_DISABLED);
|
||||
}
|
||||
|
||||
if(focus) {
|
||||
if(i != selectedItem && game[i]->GetState() == STATE_SELECTED)
|
||||
game[i]->ResetState();
|
||||
else if(i == selectedItem && game[i]->GetState() == STATE_DEFAULT)
|
||||
game[selectedItem]->SetState(STATE_SELECTED, t->chan);
|
||||
}
|
||||
game[i]->Update(t);
|
||||
|
||||
if(game[i]->GetState() == STATE_SELECTED) {
|
||||
selectedItem = i;
|
||||
}
|
||||
if(game[i]->GetState() == STATE_CLICKED) {
|
||||
clickedItem = i;
|
||||
}
|
||||
|
||||
if(game[0]->GetEffect() & EFFECT_GOROUND || game[pagesize-1]->GetEffect() & EFFECT_GOROUND)
|
||||
{
|
||||
return; // skip when rotate
|
||||
}
|
||||
|
||||
///Tooltip stuff
|
||||
struct discHdr *header = &gameList[this->GetSelectedOption()];
|
||||
ttgame->SetText(get_title(header));
|
||||
game[selectedItem]->SetToolTip(ttgame, 0, 0);
|
||||
ttgame->SetPosition(0, 20);
|
||||
if(selectedItem < PAGESIZE/2+1)
|
||||
ttgame->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
else
|
||||
ttgame->SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
|
||||
|
||||
///GameText
|
||||
gamename->SetText(get_title(header));
|
||||
|
||||
/// navigation
|
||||
if(!focus || gameCnt <= pagesize || (game[0]->GetEffect() && game[pagesize-1]->GetEffect()))
|
||||
return; // skip navigation
|
||||
|
||||
if (((btnLeft->GetState() == STATE_CLICKED) &&(Settings.xflip!=sysmenu)&&(Settings.xflip!=yes))
|
||||
||((btnRight->GetState() == STATE_CLICKED) &&((Settings.xflip==sysmenu)||(Settings.xflip==yes)))){
|
||||
|
||||
u16 buttons = ButtonsHold();
|
||||
if(!((buttons & WPAD_BUTTON_A) || (buttons & WPAD_BUTTON_MINUS) || t->Left() ||
|
||||
(buttons & WPAD_BUTTON_PLUS) || t->Right())) {
|
||||
btnLeft->ResetState();
|
||||
btnRight->ResetState();
|
||||
speed = SHIFT_SPEED;
|
||||
return;
|
||||
// find selected + clicked
|
||||
int selectedItem_old = selectedItem;
|
||||
selectedItem = -1;
|
||||
clickedItem = -1;
|
||||
for(int i=pagesize-1; i>=0; i--)
|
||||
{
|
||||
game[i]->Update(t);
|
||||
if(game[i]->GetState() == STATE_SELECTED)
|
||||
{
|
||||
selectedItem = i;
|
||||
}
|
||||
if(game[i]->GetState() == STATE_CLICKED)
|
||||
{
|
||||
clickedItem = i;
|
||||
}
|
||||
|
||||
for(int i=0; i<pagesize; i++) {
|
||||
game[i]->StopEffect();
|
||||
}
|
||||
|
||||
listOffset = (listOffset+1 < gameCnt) ? listOffset+1 : 0;
|
||||
firstPic = (firstPic+1 < pagesize) ? firstPic+1 : 0;
|
||||
|
||||
game[pagesize-1]->SetPosition(0, RADIUS);
|
||||
|
||||
|
||||
for (int i=0; i<pagesize; i++) {
|
||||
game[i]->SetEffect(EFFECT_GOROUND, -speed, DEG_OFFSET, RADIUS, 270-(pagesize-2*i-3)*DEG_OFFSET/2, 1, 0, RADIUS);
|
||||
}
|
||||
speed+=SPEED_STEP;
|
||||
}
|
||||
|
||||
else if (((btnRight->GetState() == STATE_CLICKED) &&(Settings.xflip!=sysmenu)&&(Settings.xflip!=yes))
|
||||
||((btnLeft->GetState() == STATE_CLICKED) &&((Settings.xflip==sysmenu)||(Settings.xflip==yes)))){
|
||||
|
||||
u16 buttons = ButtonsHold();
|
||||
if(!((buttons & WPAD_BUTTON_A) || (buttons & WPAD_BUTTON_MINUS) || t->Left() ||
|
||||
(buttons & WPAD_BUTTON_PLUS) || t->Right())) {
|
||||
btnLeft->ResetState();
|
||||
btnRight->ResetState();
|
||||
speed = SHIFT_SPEED;
|
||||
return;
|
||||
/// OnOver-Effect + GameText + Tooltop
|
||||
if(selectedItem_old != selectedItem)
|
||||
{
|
||||
if(selectedItem>=0)
|
||||
{
|
||||
game[selectedItem]->SetEffect(EFFECT_SCALE, 1, 130);
|
||||
char *gameTitle = get_title(&gameList[gameIndex[selectedItem]]);
|
||||
gamename->SetText(gameTitle);
|
||||
}
|
||||
|
||||
for(int i=0; i<pagesize; i++) {
|
||||
game[i]->StopEffect();
|
||||
else
|
||||
gamename->SetText((char*)NULL);
|
||||
if(selectedItem_old>=0)
|
||||
{
|
||||
game[selectedItem_old]->SetEffect(EFFECT_SCALE, -1, 100);
|
||||
game[selectedItem_old]->RemoveToolTip();
|
||||
}
|
||||
listOffset = (listOffset-1 < 0) ? gameCnt-1 : listOffset-1;
|
||||
firstPic = (firstPic-1 < 0) ? pagesize-1 : firstPic-1;
|
||||
|
||||
game[0]->SetPosition(0, RADIUS);
|
||||
|
||||
for(int i=0; i<pagesize; i++) {
|
||||
game[i]->SetEffect(EFFECT_GOROUND, speed, DEG_OFFSET, RADIUS, 270-(pagesize-2*i+1)*DEG_OFFSET/2, 1, 0, RADIUS);
|
||||
}
|
||||
speed+=SPEED_STEP;
|
||||
}
|
||||
// navigation
|
||||
if(focus && gameCnt>6)
|
||||
{
|
||||
|
||||
int newspeed = 0;
|
||||
// Left/Right Navigation
|
||||
if (btnLeft->GetState() == STATE_CLICKED)
|
||||
{
|
||||
WPAD_ScanPads();
|
||||
u16 buttons = 0;
|
||||
for(int i=0; i<4; i++)
|
||||
buttons |= WPAD_ButtonsHeld(i);
|
||||
if(!((buttons & WPAD_BUTTON_A) || (buttons & WPAD_BUTTON_MINUS) || t->Left()))
|
||||
{
|
||||
btnLeft->ResetState();
|
||||
return;
|
||||
}
|
||||
|
||||
if (Settings.xflip==sysmenu || Settings.xflip==yes || Settings.xflip==disk3d)
|
||||
newspeed = SHIFT_SPEED;
|
||||
else
|
||||
newspeed = -SHIFT_SPEED;
|
||||
}
|
||||
else if(btnRight->GetState() == STATE_CLICKED)
|
||||
{
|
||||
WPAD_ScanPads();
|
||||
u16 buttons = 0;
|
||||
for(int i=0; i<4; i++)
|
||||
buttons |= WPAD_ButtonsHeld(i);
|
||||
if(!((buttons & WPAD_BUTTON_A) || (buttons & WPAD_BUTTON_PLUS) || t->Right()))
|
||||
{
|
||||
btnRight->ResetState();
|
||||
return;
|
||||
}
|
||||
if (Settings.xflip==sysmenu ||Settings.xflip==yes || Settings.xflip==disk3d)
|
||||
newspeed = -SHIFT_SPEED;
|
||||
else
|
||||
newspeed = SHIFT_SPEED;
|
||||
}
|
||||
if(newspeed)
|
||||
{
|
||||
if(speed==0)
|
||||
speed = newspeed;
|
||||
else if(speed>0)
|
||||
{
|
||||
if((speed+=SPEED_STEP) > SPEED_LIMIT)
|
||||
speed = SPEED_LIMIT;
|
||||
}
|
||||
else
|
||||
{
|
||||
if((speed-=SPEED_STEP) < -SPEED_LIMIT)
|
||||
speed = -SPEED_LIMIT;
|
||||
}
|
||||
}
|
||||
else
|
||||
speed = 0;
|
||||
|
||||
|
||||
if(speed > 0) // rotate right
|
||||
{
|
||||
GuiButton *tmpButton;
|
||||
GuiTooltip *tmpTT;
|
||||
listOffset = OFFSETLIMIT(listOffset - 1, gameCnt); // set the new listOffset
|
||||
// Save right Button + TollTip and destroy right Image + Image-Data
|
||||
delete coverImg[pagesize-1]; coverImg[pagesize-1] = NULL;game[pagesize-1]->SetImage(NULL);
|
||||
tmpButton = game[pagesize-1];
|
||||
tmpTT = titleTT[pagesize-1];
|
||||
|
||||
// Move all Page-Entries one step right
|
||||
for (int i=pagesize-1; i>=1; i--)
|
||||
{
|
||||
titleTT[i] = titleTT[i-1];
|
||||
coverImg[i] = coverImg[i-1];
|
||||
game[i] = game[i-1];
|
||||
gameIndex[i] = gameIndex[i-1];
|
||||
}
|
||||
// set saved Button & gameIndex to right
|
||||
gameIndex[0] = listOffset;
|
||||
titleTT[0] = tmpTT;
|
||||
titleTT[0] ->SetText(get_title(&gameList[gameIndex[0]]));
|
||||
coverImg[0] = new GuiImageAsync(GameCarouselLoadCoverImage, &gameList[gameIndex[0]], sizeof(struct discHdr), &noCover);
|
||||
coverImg[0] ->SetWidescreen(CFG.widescreen);
|
||||
|
||||
game[0] = tmpButton;
|
||||
game[0] ->SetImage(coverImg[0]);
|
||||
|
||||
|
||||
for(int i=0; i<pagesize; i++)
|
||||
{
|
||||
game[i]->StopEffect();
|
||||
game[i]->ResetState();
|
||||
game[i]->SetEffect(EFFECT_GOROUND, speed, DEG_OFFSET, RADIUS, 270-(pagesize-2*i+1)*DEG_OFFSET/2, 1, 0, RADIUS);
|
||||
game[i]->UpdateEffects(); // rotate one step for liquid scrolling
|
||||
|
||||
// Set Tooltip-Position
|
||||
switch((i*3)/pagesize)
|
||||
{
|
||||
case 0:
|
||||
game[i]->SetToolTip(titleTT[i], 122/4, -244/4, ALIGN_LEFT, ALIGN_MIDDLE);
|
||||
break;
|
||||
case 1:
|
||||
game[i]->SetToolTip(titleTT[i], 0, -244/4, ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||
break;
|
||||
case 2:
|
||||
game[i]->SetToolTip(titleTT[i], -122/4, -244/4, ALIGN_RIGHT, ALIGN_MIDDLE);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(speed < 0) // rotate left
|
||||
{
|
||||
GuiButton *tmpButton;
|
||||
GuiTooltip *tmpTT;
|
||||
listOffset = OFFSETLIMIT(listOffset + 1, gameCnt); // set the new listOffset
|
||||
// Save left Button + TollTip and destroy left Image + Image-Data
|
||||
delete coverImg[0]; coverImg[0] = NULL;game[0]->SetImage(NULL);
|
||||
tmpButton = game[0];
|
||||
tmpTT = titleTT[0];
|
||||
|
||||
// Move all Page-Entries one step left
|
||||
for (int i=0; i<(pagesize-1); i++)
|
||||
{
|
||||
titleTT[i] = titleTT[i+1];
|
||||
coverImg[i] = coverImg[i+1];
|
||||
game[i] = game[i+1];
|
||||
gameIndex[i] = gameIndex[i+1];
|
||||
}
|
||||
// set saved Button & gameIndex to right
|
||||
int ii = pagesize-1;
|
||||
gameIndex[ii] = OFFSETLIMIT(listOffset + ii, gameCnt);
|
||||
titleTT[ii] = tmpTT;
|
||||
titleTT[ii] ->SetText(get_title(&gameList[gameIndex[0]]));
|
||||
coverImg[ii] = new GuiImageAsync(GameCarouselLoadCoverImage, &gameList[gameIndex[ii]], sizeof(struct discHdr), &noCover);
|
||||
coverImg[ii] ->SetWidescreen(CFG.widescreen);
|
||||
|
||||
game[ii] = tmpButton;
|
||||
game[ii] ->SetImage(coverImg[ii]);
|
||||
|
||||
|
||||
for(int i=0; i<pagesize; i++)
|
||||
{
|
||||
game[i]->StopEffect();
|
||||
game[i]->ResetState();
|
||||
game[i]->SetEffect(EFFECT_GOROUND, speed, DEG_OFFSET, RADIUS, 270-(pagesize-2*i-3)*DEG_OFFSET/2, 1, 0, RADIUS);
|
||||
game[i]->UpdateEffects(); // rotate one step for liquid scrolling
|
||||
|
||||
// Set Tooltip-Position
|
||||
switch((i*3)/pagesize)
|
||||
{
|
||||
case 0:
|
||||
game[i]->SetToolTip(titleTT[i], 122/4, -244/4, ALIGN_LEFT, ALIGN_MIDDLE);
|
||||
break;
|
||||
case 1:
|
||||
game[i]->SetToolTip(titleTT[i], 0, -244/4, ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||
break;
|
||||
case 2:
|
||||
game[i]->SetToolTip(titleTT[i], -122/4, -244/4, ALIGN_RIGHT, ALIGN_MIDDLE);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if(updateCB)
|
||||
updateCB(this);
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
#include "gui.h"
|
||||
#include "../usbloader/disc.h"
|
||||
|
||||
class GuiImageAsync;
|
||||
class GuiGameCarousel : public GuiElement
|
||||
{
|
||||
public:
|
||||
@ -20,11 +20,11 @@ class GuiGameCarousel : public GuiElement
|
||||
void Reload(struct discHdr * l, int count);
|
||||
//GuiText * optionVal[PAGESIZE];
|
||||
protected:
|
||||
GuiImageData noCover;
|
||||
int selectedItem;
|
||||
int listOffset;
|
||||
int scrollbaron;
|
||||
int pagesize;
|
||||
int firstPic;
|
||||
int speed;
|
||||
int clickedItem;
|
||||
|
||||
@ -32,10 +32,9 @@ class GuiGameCarousel : public GuiElement
|
||||
int gameCnt;
|
||||
|
||||
int * gameIndex;
|
||||
|
||||
GuiButton ** game;
|
||||
|
||||
GuiTooltip * ttgame;
|
||||
GuiTooltip ** titleTT;
|
||||
GuiImageAsync ** coverImg;
|
||||
|
||||
GuiText * gamename;
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
#include "gui.h"
|
||||
#include "../usbloader/disc.h"
|
||||
|
||||
class GuiImageAsync;
|
||||
class GuiGameGrid : public GuiElement
|
||||
{
|
||||
public:
|
||||
@ -17,32 +17,26 @@ class GuiGameGrid : public GuiElement
|
||||
void Draw();
|
||||
void Update(GuiTrigger * t);
|
||||
int GetOffset();
|
||||
void Reload(struct discHdr * l, int count);
|
||||
void Reload(struct discHdr * l, int count, int Rows, int ListOffset);
|
||||
void ChangeRows(int n);
|
||||
protected:
|
||||
GuiImageData noCover;
|
||||
int selectedItem;
|
||||
int listOffset;
|
||||
int scrollbaron;
|
||||
int pagesize;
|
||||
int firstPic;
|
||||
int speed;
|
||||
int clickedItem;
|
||||
int rows;
|
||||
int drawTTs;
|
||||
|
||||
int goLeft;
|
||||
int goRight;
|
||||
|
||||
struct discHdr * gameList;
|
||||
int gameCnt;
|
||||
|
||||
int * gameIndex;
|
||||
int * bob;
|
||||
|
||||
GuiButton ** game;
|
||||
|
||||
GuiImage ** coverImg;
|
||||
GuiImageData ** cover;
|
||||
GuiTooltip ** titleTT;
|
||||
GuiImageAsync ** coverImg;
|
||||
|
||||
GuiText * debugTxt;
|
||||
|
||||
GuiButton * btnRight;
|
||||
GuiButton * btnLeft;
|
||||
@ -55,9 +49,6 @@ class GuiGameGrid : public GuiElement
|
||||
GuiImageData * imgLeft;
|
||||
GuiImageData * imgRight;
|
||||
|
||||
GuiTooltip * titleTT;
|
||||
|
||||
|
||||
GuiSound * btnSoundOver;
|
||||
GuiSound * btnSoundClick;
|
||||
GuiTrigger * trigA;
|
||||
|
@ -34,9 +34,18 @@ GuiImage::GuiImage()
|
||||
|
||||
GuiImage::GuiImage(GuiImageData * img)
|
||||
{
|
||||
image = img->GetImage();
|
||||
width = img->GetWidth();
|
||||
height = img->GetHeight();
|
||||
if(img)
|
||||
{
|
||||
image = img->GetImage();
|
||||
width = img->GetWidth();
|
||||
height = img->GetHeight();
|
||||
}
|
||||
else
|
||||
{
|
||||
image = NULL;
|
||||
width = 0;
|
||||
height = 0;
|
||||
}
|
||||
imageangle = 0;
|
||||
tile = -1;
|
||||
stripe = 0;
|
||||
@ -111,13 +120,8 @@ GuiImage::GuiImage(int w, int h, GXColor c)
|
||||
DCFlushRange(image, len);
|
||||
}
|
||||
|
||||
GuiImage::GuiImage(GuiImage &srcimage)
|
||||
GuiImage::GuiImage(GuiImage &srcimage) : GuiElement()
|
||||
{
|
||||
if((imgType == IMAGE_COLOR || imgType == IMAGE_COPY) && image) {
|
||||
free(image);
|
||||
image = NULL;
|
||||
}
|
||||
|
||||
width = srcimage.GetWidth();
|
||||
height = srcimage.GetHeight();
|
||||
int len = width * height * 4;
|
||||
@ -141,13 +145,8 @@ GuiImage::GuiImage(GuiImage &srcimage)
|
||||
imgType = IMAGE_COPY;
|
||||
}
|
||||
|
||||
GuiImage::GuiImage(GuiImage *srcimage)
|
||||
GuiImage::GuiImage(GuiImage *srcimage) : GuiElement()
|
||||
{
|
||||
if((imgType == IMAGE_COLOR || imgType == IMAGE_COPY) && image) {
|
||||
free(image);
|
||||
image = NULL;
|
||||
}
|
||||
|
||||
width = srcimage->GetWidth();
|
||||
height = srcimage->GetHeight();
|
||||
int len = width * height * 4;
|
||||
@ -307,7 +306,7 @@ void GuiImage::SetGrayscale(void)
|
||||
|
||||
for(int x = 0; x < width; x++) {
|
||||
for(int y = 0; y < height; y++) {
|
||||
offset = (((y >> 2)<<4)*this->GetWidth()) + ((x >> 2)<<6) + (((y%4 << 2) + x%4 ) << 1);
|
||||
offset = (((y >> 2)<<4)*width) + ((x >> 2)<<6) + (((y%4 << 2) + x%4 ) << 1);
|
||||
color.r = *(image+offset+1);
|
||||
color.g = *(image+offset+32);
|
||||
color.b = *(image+offset+33);
|
||||
@ -331,14 +330,26 @@ void GuiImage::SetStripe(int s)
|
||||
void GuiImage::SetSkew(int XX1, int YY1,int XX2, int YY2,int XX3, int YY3,int XX4, int YY4)
|
||||
{
|
||||
|
||||
xx1 = XX1;
|
||||
yy1 = YY1;
|
||||
xx2 = XX2;
|
||||
yy2 = YY2;
|
||||
xx3 = XX3;
|
||||
yy3 = YY3;
|
||||
xx4 = XX4;
|
||||
yy4 = YY4;
|
||||
xx1 = XX1;
|
||||
yy1 = YY1;
|
||||
xx2 = XX2;
|
||||
yy2 = YY2;
|
||||
xx3 = XX3;
|
||||
yy3 = YY3;
|
||||
xx4 = XX4;
|
||||
yy4 = YY4;
|
||||
}
|
||||
void GuiImage::SetSkew(int *skew)
|
||||
{
|
||||
|
||||
xx1 = *skew++;
|
||||
yy1 = *skew++;
|
||||
xx2 = *skew++;
|
||||
yy2 = *skew++;
|
||||
xx3 = *skew++;
|
||||
yy3 = *skew++;
|
||||
xx4 = *skew++;
|
||||
yy4 = *skew;
|
||||
}
|
||||
|
||||
|
||||
|
196
source/libwiigui/gui_image_async.cpp
Normal file
@ -0,0 +1,196 @@
|
||||
/****************************************************************************
|
||||
* libwiigui
|
||||
*
|
||||
* Tantric 2009
|
||||
*
|
||||
* gui_imagea_sync.cpp
|
||||
*
|
||||
* GUI class definitions
|
||||
***************************************************************************/
|
||||
|
||||
#include "gui.h"
|
||||
//#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include "gui_image_async.h"
|
||||
static mutex_t debugLock = LWP_MUTEX_NULL;
|
||||
|
||||
void debug(int Line, const char* Format, ...)
|
||||
{
|
||||
if(debugLock==0) LWP_MutexInit(&debugLock, false);
|
||||
|
||||
LWP_MutexLock(debugLock);
|
||||
|
||||
FILE *fp = fopen("SD:/debug.txt", "a");
|
||||
if(fp)
|
||||
{
|
||||
char theTime[10];
|
||||
time_t rawtime = time(0); //this fixes code dump caused by the clock
|
||||
struct tm * timeinfo = localtime (&rawtime);
|
||||
strftime(theTime, sizeof(theTime), "%H:%M:%S", timeinfo);
|
||||
char format[10+strlen(Format)+strlen(theTime)];
|
||||
sprintf(format, "%s %i - %s\n", theTime, Line, Format);
|
||||
va_list va;
|
||||
va_start(va, Format);
|
||||
vfprintf(fp, format, va);
|
||||
va_end(va);
|
||||
fclose(fp);
|
||||
}
|
||||
LWP_MutexUnlock(debugLock);
|
||||
}
|
||||
//#define DEBUG(format, ...) debug(__LINE__, format, ##__VA_ARGS__)
|
||||
#define DEBUG(format, ...)
|
||||
|
||||
static void *memdup(const void* src, size_t len)
|
||||
{
|
||||
void *dst = malloc(len);
|
||||
if(dst) memcpy(dst, src, len);
|
||||
return dst;
|
||||
}
|
||||
static std::vector<GuiImageAsync *> List;
|
||||
static u32 ThreadCount = 0;
|
||||
static lwp_t Thread = LWP_THREAD_NULL;
|
||||
static mutex_t ListLock = LWP_MUTEX_NULL;
|
||||
static mutex_t InUseLock = LWP_MUTEX_NULL;
|
||||
static GuiImageAsync *InUse = NULL;
|
||||
static bool Quit = false;
|
||||
static bool CanSleep = true;
|
||||
void *GuiImageAsyncThread(void *arg)
|
||||
{
|
||||
while(!Quit)
|
||||
{
|
||||
LWP_MutexLock(ListLock);
|
||||
if(List.size())
|
||||
{
|
||||
LWP_MutexLock(InUseLock);
|
||||
|
||||
InUse = List.front();
|
||||
List.erase(List.begin());
|
||||
|
||||
LWP_MutexUnlock(ListLock);
|
||||
|
||||
if(InUse)
|
||||
{
|
||||
GuiImageData *data = InUse->callback(InUse->arg);
|
||||
InUse->loadet_imgdata = data;
|
||||
if(InUse->loadet_imgdata && InUse->loadet_imgdata->GetImage())
|
||||
{
|
||||
// InUse->SetImage(InUse->loadet_imgdata); can’t use here. There can occur a deadlock
|
||||
// Sets the image directly without lock. This is not fine, but it prevents a deadlock
|
||||
InUse->image = InUse->loadet_imgdata->GetImage();
|
||||
InUse->width = InUse->loadet_imgdata->GetWidth();
|
||||
InUse->height = InUse->loadet_imgdata->GetHeight();
|
||||
}
|
||||
}
|
||||
InUse = NULL;
|
||||
LWP_MutexUnlock(InUseLock);
|
||||
}
|
||||
else
|
||||
{
|
||||
LWP_MutexUnlock(ListLock);
|
||||
if(!Quit && CanSleep)
|
||||
LWP_SuspendThread(Thread);
|
||||
}
|
||||
CanSleep = true;
|
||||
}
|
||||
Quit = false;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static u32 GuiImageAsyncThreadInit()
|
||||
{
|
||||
if(0 == ThreadCount++)
|
||||
{
|
||||
CanSleep = false;
|
||||
LWP_MutexInit(&ListLock, false);
|
||||
LWP_MutexInit(&InUseLock, false);
|
||||
LWP_CreateThread(&Thread, GuiImageAsyncThread, NULL, NULL, 0, 75);
|
||||
// while(!CanSleep)
|
||||
// usleep(20);
|
||||
}
|
||||
return ThreadCount;
|
||||
}
|
||||
static u32 GuiImageAsyncThreadExit()
|
||||
{
|
||||
if(--ThreadCount == 0)
|
||||
{
|
||||
Quit = true;
|
||||
LWP_ResumeThread(Thread);
|
||||
// while(Quit)
|
||||
// usleep(20);
|
||||
LWP_JoinThread(Thread, NULL);
|
||||
LWP_MutexDestroy(ListLock);
|
||||
LWP_MutexDestroy(InUseLock);
|
||||
Thread = LWP_THREAD_NULL;
|
||||
ListLock = LWP_MUTEX_NULL;
|
||||
InUseLock = LWP_MUTEX_NULL;
|
||||
}
|
||||
return ThreadCount;
|
||||
}
|
||||
|
||||
|
||||
static void GuiImageAsyncThread_AddImage(GuiImageAsync* Image)
|
||||
{
|
||||
LWP_MutexLock(ListLock);
|
||||
List.push_back(Image);
|
||||
LWP_MutexUnlock(ListLock);
|
||||
CanSleep = false;
|
||||
// if(LWP_ThreadIsSuspended(Thread))
|
||||
LWP_ResumeThread(Thread);
|
||||
}
|
||||
static void GuiImageAsyncThread_RemoveImage(GuiImageAsync* Image)
|
||||
{
|
||||
LWP_MutexLock(ListLock);
|
||||
for(std::vector<GuiImageAsync *>::iterator iter=List.begin(); iter != List.end(); iter++)
|
||||
{
|
||||
if(*iter == Image)
|
||||
{
|
||||
List.erase(iter);
|
||||
LWP_MutexUnlock(ListLock);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(InUse == Image)
|
||||
{
|
||||
LWP_MutexLock(InUseLock);
|
||||
LWP_MutexUnlock(InUseLock);
|
||||
}
|
||||
LWP_MutexUnlock(ListLock);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Constructor for the GuiImageAsync class.
|
||||
*/
|
||||
GuiImageData *StdImageLoaderCallback(void *arg)
|
||||
{
|
||||
return new GuiImageData((char*)arg, NULL);
|
||||
}
|
||||
|
||||
GuiImageAsync::GuiImageAsync(const char *Filename, GuiImageData * PreloadImg) :
|
||||
GuiImage(PreloadImg),
|
||||
loadet_imgdata(NULL),
|
||||
callback(StdImageLoaderCallback),
|
||||
arg(strdup(Filename))
|
||||
{
|
||||
GuiImageAsyncThreadInit();
|
||||
GuiImageAsyncThread_AddImage(this);
|
||||
}
|
||||
GuiImageAsync::GuiImageAsync(ImageLoaderCallback Callback, void *Arg, int ArgLen, GuiImageData * PreloadImg) :
|
||||
GuiImage(PreloadImg),
|
||||
loadet_imgdata(NULL),
|
||||
callback(Callback),
|
||||
arg(memdup(Arg, ArgLen))
|
||||
{
|
||||
DEBUG("Constructor %p", this);
|
||||
GuiImageAsyncThreadInit();
|
||||
GuiImageAsyncThread_AddImage(this);
|
||||
}
|
||||
GuiImageAsync::~GuiImageAsync()
|
||||
{
|
||||
GuiImageAsyncThread_RemoveImage(this);
|
||||
GuiImageAsyncThreadExit();
|
||||
DEBUG("Deconstructor %p (loadet_imgdata=%p)", this, loadet_imgdata);
|
||||
if(loadet_imgdata) delete loadet_imgdata;
|
||||
if(arg) free(arg);
|
||||
}
|
||||
|
27
source/libwiigui/gui_image_async.h
Normal file
@ -0,0 +1,27 @@
|
||||
#ifndef _GUIIMAGEASYNC_H_
|
||||
#define _GUIIMAGEASYNC_H_
|
||||
|
||||
#// arg is a pointer created with malloc()
|
||||
// when the image is destroied then will also the arg deleted with free()
|
||||
typedef GuiImageData * (*ImageLoaderCallback)(void *arg);
|
||||
|
||||
class GuiImageAsync : public GuiImage
|
||||
{
|
||||
public:
|
||||
GuiImageAsync(const char *Filename, GuiImageData * PreloadImg);
|
||||
GuiImageAsync(ImageLoaderCallback Callback, void *arg, int arglen, GuiImageData * PreloadImg);
|
||||
~GuiImageAsync();
|
||||
|
||||
private:
|
||||
GuiImageData *loadet_imgdata;
|
||||
friend void loader(GuiImageAsync *InUse);
|
||||
|
||||
friend void Setter(GuiImageAsync *InUse);
|
||||
friend void *GuiImageAsyncThread(void *arg);
|
||||
ImageLoaderCallback callback;
|
||||
void *arg;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /*_GUIIMAGEASYNC_H_*/
|
@ -179,3 +179,23 @@ int GuiImageData::GetHeight()
|
||||
{
|
||||
return height;
|
||||
}
|
||||
void GuiImageData::SetGrayscale(void)
|
||||
{
|
||||
GXColor color;
|
||||
u32 offset, gray;
|
||||
|
||||
for(int x = 0; x < width; x++) {
|
||||
for(int y = 0; y < height; y++) {
|
||||
offset = (((y >> 2)<<4)*width) + ((x >> 2)<<6) + (((y%4 << 2) + x%4 ) << 1);
|
||||
color.r = *(data+offset+1);
|
||||
color.g = *(data+offset+32);
|
||||
color.b = *(data+offset+33);
|
||||
|
||||
gray = (77*color.r + 150*color.g + 28*color.b)/255;
|
||||
|
||||
*(data+offset+1) = gray;
|
||||
*(data+offset+32) = gray;
|
||||
*(data+offset+33) = gray;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
172
source/libwiigui/gui_searchbar.cpp
Normal file
@ -0,0 +1,172 @@
|
||||
#include "gui.h"
|
||||
#include "gui_searchbar.h"
|
||||
|
||||
#include "../wpad.h"
|
||||
#include "../main.h"
|
||||
#include "../settings/cfg.h"
|
||||
#include "../usbloader/getentries.h"
|
||||
|
||||
extern GuiWindow * mainWindow;
|
||||
|
||||
class cSearchButton
|
||||
{
|
||||
public:
|
||||
cSearchButton(wchar_t *Char, GuiImageData *keyImageData, GuiImageData *keyOverImageData, int x, int y, GuiTrigger* trig, GuiSound* sndOver, GuiSound* sndClick)
|
||||
:
|
||||
wchar(*Char),
|
||||
image(keyImageData),
|
||||
imageOver(keyOverImageData),
|
||||
text(NULL, 20, (GXColor){0, 0, 0, 0xff}),
|
||||
button(&image, &imageOver, ALIGN_LEFT, ALIGN_TOP, x, y, trig, sndOver, sndClick, 1)
|
||||
{
|
||||
text.SetText(Char);
|
||||
button.SetLabel(&text);
|
||||
}
|
||||
wchar_t wchar;
|
||||
GuiImage image;
|
||||
GuiImage imageOver;
|
||||
GuiText text;
|
||||
GuiButton button;
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
|
||||
GuiSearchBar::GuiSearchBar(const wchar_t *SearchChars)
|
||||
:
|
||||
inSide(0),
|
||||
text(NULL, 22, (GXColor) {0, 0, 0, 255}),
|
||||
buttons(0),
|
||||
keyImageData(keyboard_key_png),
|
||||
keyOverImageData(keyboard_key_over_png),
|
||||
sndOver(button_over_pcm, button_over_pcm_size, SOUND_PCM, Settings.sfxvolume),
|
||||
sndClick(button_click_pcm, button_click_pcm_size, SOUND_PCM, Settings.sfxvolume)
|
||||
{
|
||||
char imgPath[100];
|
||||
trig.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
|
||||
SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||
|
||||
cnt = wcslen(SearchChars);
|
||||
buttons = new cSearchButton*[cnt];
|
||||
|
||||
wchar_t charstr[2] = {0, 0};
|
||||
int lines = (cnt+9)/10;
|
||||
int buttonsPerLine = (cnt+lines-1)/lines;
|
||||
width = 10+buttonsPerLine*42+10;
|
||||
int x_start=10, x=0, y_start=10+42, y=0;
|
||||
if(width < 200) { x_start += (200-width)>>1; width=200; }
|
||||
for(int i=0; i<cnt; i++, x++)
|
||||
{
|
||||
if(x >= buttonsPerLine) x=0;
|
||||
if(x == 0) y++;
|
||||
charstr[0] = SearchChars[i];
|
||||
buttons[i] = new cSearchButton(charstr, &keyImageData, &keyOverImageData, x_start+x*42, y_start-42+y*42, &trig, &sndOver, &sndClick);
|
||||
this->Append(&(buttons[i]->button));
|
||||
}
|
||||
height = 10+42+y*42+10;
|
||||
|
||||
|
||||
text.SetText(gameFilter);
|
||||
text.SetPosition(10, 15);
|
||||
text.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
text.SetWidescreen(CFG.widescreen);
|
||||
text.SetMaxWidth(width-(10+2*42+10), GuiText::SCROLL);
|
||||
this->Append(&text);
|
||||
|
||||
snprintf(imgPath, sizeof(imgPath), "%skeyboard_backspace_over.png", CFG.theme_path);
|
||||
imgBacspaceBtn = new GuiImageData(imgPath, keyboard_backspace_over_png);
|
||||
BacspaceBtnImg_Over = new GuiImage(imgBacspaceBtn);
|
||||
BacspaceBtnImg = new GuiImage(BacspaceBtnImg_Over); BacspaceBtnImg->SetGrayscale();
|
||||
BacspaceBtn = new GuiButton(BacspaceBtnImg,BacspaceBtnImg_Over, ALIGN_RIGHT, ALIGN_TOP, -52, 10, &trig, &sndOver, &sndClick,1);
|
||||
this->Append(BacspaceBtn);
|
||||
|
||||
snprintf(imgPath, sizeof(imgPath), "%skeyboard_clear_over.png", CFG.theme_path);
|
||||
imgClearBtn = new GuiImageData(imgPath, keyboard_clear_over_png);
|
||||
ClearBtnImg_Over = new GuiImage(imgClearBtn);
|
||||
ClearBtnImg = new GuiImage(ClearBtnImg_Over); ClearBtnImg->SetGrayscale();
|
||||
ClearBtn = new GuiButton(ClearBtnImg,ClearBtnImg_Over, ALIGN_RIGHT, ALIGN_TOP, -10, 10, &trig, &sndOver, &sndClick,1);
|
||||
this->Append(ClearBtn);
|
||||
|
||||
|
||||
// SetPosition(100,100);
|
||||
|
||||
}
|
||||
GuiSearchBar::~GuiSearchBar()
|
||||
{
|
||||
if(buttons)
|
||||
{
|
||||
for(int i=0; i<cnt; i++)
|
||||
delete buttons[i];
|
||||
delete [] buttons;
|
||||
}
|
||||
delete ClearBtn;
|
||||
delete ClearBtnImg;
|
||||
delete ClearBtnImg_Over;
|
||||
delete imgClearBtn;
|
||||
|
||||
delete BacspaceBtn;
|
||||
delete BacspaceBtnImg;
|
||||
delete BacspaceBtnImg_Over;
|
||||
delete imgBacspaceBtn;
|
||||
}
|
||||
void GuiSearchBar::Draw()
|
||||
{
|
||||
Menu_DrawRectangle(this->GetLeft(),this->GetTop(),width, height,(GXColor){0, 0, 0, 0xa0},1);
|
||||
Menu_DrawRectangle(this->GetLeft()+10,this->GetTop()+15,width-(10+2*42+10), 22,(GXColor){255, 255, 255, 255},1);
|
||||
GuiWindow::Draw();
|
||||
}
|
||||
void GuiSearchBar::Update(GuiTrigger * t)
|
||||
{
|
||||
LOCK(this);
|
||||
if(_elements.size() == 0 || (state == STATE_DISABLED && parentElement))
|
||||
return;
|
||||
#ifdef HW_RVL
|
||||
// cursor
|
||||
if(t->wpad.ir.valid && state != STATE_DISABLED)
|
||||
{
|
||||
if(this->IsInside(t->wpad.ir.x, t->wpad.ir.y))
|
||||
{
|
||||
if(inSide == 0)
|
||||
{
|
||||
mainWindow->SetState(STATE_DISABLED);
|
||||
this->SetState(STATE_DEFAULT);
|
||||
}
|
||||
inSide |= 1 << t->chan;
|
||||
}
|
||||
else if(inSide)
|
||||
{
|
||||
inSide &= ~(1 << t->chan);
|
||||
if(inSide == 0)
|
||||
mainWindow->SetState(STATE_DEFAULT);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
GuiWindow::Update(t);
|
||||
}
|
||||
wchar_t GuiSearchBar::GetClicked()
|
||||
{
|
||||
if(buttons)
|
||||
{
|
||||
for(int i=0; i<cnt; i++)
|
||||
{
|
||||
if(buttons[i]->button.GetState() == STATE_CLICKED)
|
||||
{
|
||||
buttons[i]->button.ResetState();
|
||||
return buttons[i]->wchar;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(BacspaceBtn->GetState() == STATE_CLICKED)
|
||||
return 8;
|
||||
if(ClearBtn->GetState() == STATE_CLICKED)
|
||||
return 7;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
private:
|
||||
SearchButtons *buttons;
|
||||
}*/
|
||||
|
||||
|
38
source/libwiigui/gui_searchbar.h
Normal file
@ -0,0 +1,38 @@
|
||||
#include "gui.h"
|
||||
|
||||
|
||||
class cSearchButton;
|
||||
|
||||
|
||||
class GuiSearchBar : public GuiWindow
|
||||
{
|
||||
public:
|
||||
GuiSearchBar(const wchar_t *SearchChars);
|
||||
~GuiSearchBar();
|
||||
void Draw();
|
||||
void Update(GuiTrigger * t);
|
||||
wchar_t GetClicked();
|
||||
private:
|
||||
u16 inSide;
|
||||
|
||||
GuiText text;
|
||||
|
||||
GuiImageData* imgBacspaceBtn;
|
||||
GuiImage* BacspaceBtnImg;
|
||||
GuiImage* BacspaceBtnImg_Over;
|
||||
GuiButton* BacspaceBtn;
|
||||
|
||||
GuiImageData* imgClearBtn;
|
||||
GuiImage* ClearBtnImg;
|
||||
GuiImage* ClearBtnImg_Over;
|
||||
GuiButton* ClearBtn;
|
||||
|
||||
cSearchButton **buttons;
|
||||
int cnt;
|
||||
GuiImageData keyImageData;
|
||||
GuiImageData keyOverImageData;
|
||||
GuiTrigger trig;
|
||||
GuiSound sndOver;
|
||||
GuiSound sndClick;
|
||||
|
||||
};
|
@ -149,6 +149,23 @@ void GuiText::SetTextf(const char *format, ...)
|
||||
}
|
||||
va_end(va);
|
||||
}
|
||||
void GuiText::SetText(const wchar_t * t)
|
||||
{
|
||||
LOCK(this);
|
||||
if(text)
|
||||
delete [] text;
|
||||
text = NULL;
|
||||
|
||||
if(t)
|
||||
{
|
||||
int len = wcslen(t);
|
||||
text = new wchar_t[len+1];
|
||||
if(text) wcscpy(text, t);
|
||||
}
|
||||
scrollPos2 = 0;
|
||||
scrollDelay = 0;
|
||||
}
|
||||
|
||||
|
||||
void GuiText::SetPresets(int sz, GXColor c, int w, int wrap, u16 s, int h, int v)
|
||||
{
|
||||
|
@ -18,7 +18,7 @@ static GuiImageData tooltipRight(tooltip_right_png);
|
||||
/**
|
||||
* Constructor for the GuiTooltip class.
|
||||
*/
|
||||
GuiTooltip::GuiTooltip(const char *t)
|
||||
GuiTooltip::GuiTooltip(const char *t, int Alpha/*=255*/)
|
||||
:
|
||||
leftImage(&tooltipLeft), tileImage(&tooltipTile), rightImage(&tooltipRight)
|
||||
{
|
||||
@ -31,6 +31,7 @@ leftImage(&tooltipLeft), tileImage(&tooltipTile), rightImage(&tooltipRight)
|
||||
tileImage.SetParentAngle(false);
|
||||
rightImage.SetParentAngle(false);
|
||||
SetText(t);
|
||||
SetAlpha(Alpha);
|
||||
}
|
||||
|
||||
/*
|
||||
|
378
source/menu.cpp
@ -16,7 +16,9 @@
|
||||
#include "libwiigui/gui_gamegrid.h"
|
||||
#include "libwiigui/gui_gamecarousel.h"
|
||||
#include "libwiigui/gui_gamebrowser.h"
|
||||
#include "libwiigui/gui_searchbar.h"
|
||||
#include "libwiigui/gui_customoptionbrowser.h"
|
||||
#include "libwiigui/gui_image_async.h"
|
||||
#include "usbloader/usbstorage.h"
|
||||
#include "usbloader/wbfs.h"
|
||||
#include "usbloader/disc.h"
|
||||
@ -44,7 +46,6 @@
|
||||
#include "wpad.h"
|
||||
#include "listfiles.h"
|
||||
#include "fatmounter.h"
|
||||
#include "buffer.h"
|
||||
#include "xml/xml.h"
|
||||
#include "wad/title.h"
|
||||
|
||||
@ -80,8 +81,6 @@ extern FreeTypeGX *fontClock;
|
||||
extern u8 shutdown;
|
||||
extern u8 reset;
|
||||
extern int cntMissFiles;
|
||||
extern struct discHdr * gameList;
|
||||
extern u32 gameCnt;
|
||||
extern s32 gameSelected, gameStart;
|
||||
extern const u8 data1;
|
||||
extern u8 boothomebrew;
|
||||
@ -129,7 +128,7 @@ static void * UpdateGUI (void *arg) {
|
||||
} else {
|
||||
if (!ExitRequested) {
|
||||
mainWindow->Draw();
|
||||
if (Settings.tooltips == TooltipsOn && THEME.showToolTip != 0 && mainWindow->GetState() != STATE_DISABLED)
|
||||
if (Settings.tooltips == TooltipsOn && THEME.show_tooltip != 0 && mainWindow->GetState() != STATE_DISABLED)
|
||||
mainWindow->DrawTooltip();
|
||||
|
||||
#ifdef HW_RVL
|
||||
@ -197,7 +196,6 @@ static void * UpdateGUI (void *arg) {
|
||||
void InitGUIThreads() {
|
||||
LWP_CreateThread(&guithread, UpdateGUI, NULL, NULL, 0, 75);
|
||||
InitProgressThread();
|
||||
InitBufferThread();
|
||||
InitNetworkThread();
|
||||
|
||||
if (Settings.autonetwork)
|
||||
@ -247,9 +245,75 @@ void rockout(int f = 0) {
|
||||
ResumeGui();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* LoadCoverImage
|
||||
***************************************************************************/
|
||||
GuiImageData *LoadCoverImage(struct discHdr *header, bool Prefere3D, bool noCover)
|
||||
{
|
||||
if(!header) return NULL;
|
||||
GuiImageData *Cover = NULL;
|
||||
char ID[4];
|
||||
char IDfull[7];
|
||||
char Path[100];
|
||||
bool flag = Prefere3D;
|
||||
|
||||
|
||||
snprintf(ID, sizeof(ID), "%c%c%c", header->id[0], header->id[1], header->id[2]);
|
||||
snprintf(IDfull, sizeof(IDfull), "%s%c%c%c", ID, header->id[3], header->id[4], header->id[5]);
|
||||
|
||||
for(int i=0; i<2; ++i)
|
||||
{
|
||||
char *coverPath = flag ? Settings.covers_path : Settings.covers2d_path; flag = !flag;
|
||||
//Load full id image
|
||||
snprintf(Path, sizeof(Path), "%s%s.png", coverPath, IDfull);
|
||||
delete Cover; Cover = new(std::nothrow) GuiImageData(Path, NULL);
|
||||
//Load short id image
|
||||
if (!Cover || !Cover->GetImage())
|
||||
{
|
||||
snprintf(Path, sizeof(Path), "%s%s.png", coverPath, ID);
|
||||
delete Cover; Cover = new(std::nothrow) GuiImageData(Path, NULL);
|
||||
}
|
||||
if(Cover && Cover->GetImage())
|
||||
break;
|
||||
}
|
||||
//Load no image
|
||||
if (noCover && (!Cover || !Cover->GetImage()))
|
||||
{
|
||||
flag = Prefere3D;
|
||||
for(int i=0; i<2; ++i)
|
||||
{
|
||||
const char *nocoverPath = (flag ? "%snoimage.png" : "%snoimage2d.png"); flag = !flag;
|
||||
snprintf(Path, sizeof(Path), nocoverPath, CFG.theme_path);
|
||||
delete Cover; Cover = new(std::nothrow) GuiImageData(Path, (Prefere3D ? nocover_png : nocoverFlat_png));
|
||||
if (Cover && Cover->GetImage())
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(Cover && !Cover->GetImage())
|
||||
{
|
||||
delete Cover;
|
||||
Cover = NULL;
|
||||
}
|
||||
return Cover;
|
||||
}
|
||||
/****************************************************************************
|
||||
* MenuDiscList
|
||||
***************************************************************************/
|
||||
GuiButton *Toolbar[7];
|
||||
void DiscListWinUpdateCallback(void * e)
|
||||
{
|
||||
GuiWindow *w = (GuiWindow *)e;
|
||||
for(int i=0; i<7; ++i)
|
||||
{
|
||||
if(Toolbar[i]->GetState() == STATE_SELECTED)
|
||||
{
|
||||
w->Remove(Toolbar[i]);
|
||||
w->Append(Toolbar[i]); // draw the selected Icon allways on top
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int MenuDiscList() {
|
||||
|
||||
@ -268,7 +332,7 @@ int MenuDiscList() {
|
||||
WDVD_GetCoverStatus(&covert);
|
||||
u32 covertOld=covert;
|
||||
|
||||
|
||||
wchar_t searchChar;
|
||||
//SCREENSAVER
|
||||
//WPad_SetIdleTime(300); //needs the time in seconds
|
||||
int check = 0; //to skip the first cycle when wiimote isn't completely connected
|
||||
@ -334,28 +398,36 @@ int MenuDiscList() {
|
||||
|
||||
snprintf(imgPath, sizeof(imgPath), "%sfavIcon.png", CFG.theme_path);
|
||||
GuiImageData imgfavIcon(imgPath, favIcon_png);
|
||||
snprintf(imgPath, sizeof(imgPath), "%sfavIcon_gray.png", CFG.theme_path);
|
||||
GuiImageData imgfavIcon_gray(imgPath, favIcon_gray_png);
|
||||
// snprintf(imgPath, sizeof(imgPath), "%sfavIcon_gray.png", CFG.theme_path);
|
||||
// GuiImageData imgfavIcon_gray(imgPath, favIcon_gray_png);
|
||||
snprintf(imgPath, sizeof(imgPath), "%ssearchIcon.png", CFG.theme_path);
|
||||
GuiImageData imgsearchIcon(imgPath, searchIcon_png);
|
||||
// snprintf(imgPath, sizeof(imgPath), "%ssearchIcon_gray.png", CFG.theme_path);
|
||||
// GuiImageData imgsearchIcon_gray(imgPath, searchIcon_gray_png);
|
||||
snprintf(imgPath, sizeof(imgPath), "%sabcIcon.png", CFG.theme_path);
|
||||
GuiImageData imgabcIcon(imgPath, abcIcon_png);
|
||||
snprintf(imgPath, sizeof(imgPath), "%sabcIcon_gray.png", CFG.theme_path);
|
||||
GuiImageData imgabcIcon_gray(imgPath, abcIcon_gray_png);
|
||||
// snprintf(imgPath, sizeof(imgPath), "%sabcIcon_gray.png", CFG.theme_path);
|
||||
// GuiImageData imgabcIcon_gray(imgPath, abcIcon_gray_png);
|
||||
snprintf(imgPath, sizeof(imgPath), "%splayCountIcon.png", CFG.theme_path);
|
||||
GuiImageData imgplayCountIcon(imgPath, playCountIcon_png);
|
||||
snprintf(imgPath, sizeof(imgPath), "%splayCountIcon_gray.png", CFG.theme_path);
|
||||
GuiImageData imgplayCountIcon_gray(imgPath, playCountIcon_gray_png);
|
||||
// snprintf(imgPath, sizeof(imgPath), "%splayCountIcon_gray.png", CFG.theme_path);
|
||||
// GuiImageData imgplayCountIcon_gray(imgPath, playCountIcon_gray_png);
|
||||
snprintf(imgPath, sizeof(imgPath), "%sarrangeGrid.png", CFG.theme_path);
|
||||
GuiImageData imgarrangeGrid(imgPath, arrangeGrid_png);
|
||||
snprintf(imgPath, sizeof(imgPath), "%sarrangeGrid_gray.png", CFG.theme_path);
|
||||
GuiImageData imgarrangeGrid_gray(imgPath, arrangeGrid_gray_png);
|
||||
// snprintf(imgPath, sizeof(imgPath), "%sarrangeGrid_gray.png", CFG.theme_path);
|
||||
// GuiImageData imgarrangeGrid_gray(imgPath, arrangeGrid_gray_png);
|
||||
snprintf(imgPath, sizeof(imgPath), "%sarrangeList.png", CFG.theme_path);
|
||||
GuiImageData imgarrangeList(imgPath, arrangeList_png);
|
||||
snprintf(imgPath, sizeof(imgPath), "%sarrangeList_gray.png", CFG.theme_path);
|
||||
GuiImageData imgarrangeList_gray(imgPath, arrangeList_gray_png);
|
||||
// snprintf(imgPath, sizeof(imgPath), "%sarrangeList_gray.png", CFG.theme_path);
|
||||
// GuiImageData imgarrangeList_gray(imgPath, arrangeList_gray_png);
|
||||
snprintf(imgPath, sizeof(imgPath), "%sarrangeCarousel.png", CFG.theme_path);
|
||||
GuiImageData imgarrangeCarousel(imgPath, arrangeCarousel_png);
|
||||
snprintf(imgPath, sizeof(imgPath), "%sarrangeCarousel_gray.png", CFG.theme_path);
|
||||
GuiImageData imgarrangeCarousel_gray(imgPath, arrangeCarousel_gray_png);
|
||||
// snprintf(imgPath, sizeof(imgPath), "%sarrangeCarousel_gray.png", CFG.theme_path);
|
||||
// GuiImageData imgarrangeCarousel_gray(imgPath, arrangeCarousel_gray_png);
|
||||
|
||||
snprintf(imgPath, sizeof(imgPath), "%ssearchBar.png", CFG.theme_path);
|
||||
GuiImageData imgsearchBar(imgPath, searchBar_png);
|
||||
|
||||
snprintf(imgPath, sizeof(imgPath), "%sbrowser.png", CFG.theme_path);
|
||||
GuiImageData homebrewImgData(imgPath, browser_png);
|
||||
snprintf(imgPath, sizeof(imgPath), "%sbrowser_over.png", CFG.theme_path);
|
||||
@ -374,17 +446,17 @@ int MenuDiscList() {
|
||||
|
||||
char spaceinfo[30];
|
||||
sprintf(spaceinfo,"%.2fGB %s %.2fGB %s",freespace,tr("of"),(freespace+used),tr("free"));
|
||||
GuiText usedSpaceTxt(spaceinfo, 18, (GXColor) {THEME.info_r, THEME.info_g, THEME.info_b, 255});
|
||||
usedSpaceTxt.SetAlignment(THEME.hddInfoAlign, ALIGN_TOP);
|
||||
usedSpaceTxt.SetPosition(THEME.hddInfo_x, THEME.hddInfo_y);
|
||||
GuiText usedSpaceTxt(spaceinfo, 18, THEME.info);
|
||||
usedSpaceTxt.SetAlignment(THEME.hddinfo_align, ALIGN_TOP);
|
||||
usedSpaceTxt.SetPosition(THEME.hddinfo_x, THEME.hddinfo_y);
|
||||
|
||||
char GamesCnt[15];
|
||||
sprintf(GamesCnt,"%s: %i",tr("Games"), gameCnt);
|
||||
GuiText gamecntTxt(GamesCnt, 18, (GXColor) {THEME.info_r, THEME.info_g, THEME.info_b, 255});
|
||||
GuiText gamecntTxt(GamesCnt, 18, THEME.info);
|
||||
|
||||
GuiButton gamecntBtn(100,18);
|
||||
gamecntBtn.SetAlignment(THEME.gameCntAlign, ALIGN_TOP);
|
||||
gamecntBtn.SetPosition(THEME.gameCnt_x,THEME.gameCnt_y);
|
||||
gamecntBtn.SetAlignment(THEME.gamecount_align, ALIGN_TOP);
|
||||
gamecntBtn.SetPosition(THEME.gamecount_x,THEME.gamecount_y);
|
||||
gamecntBtn.SetLabel(&gamecntTxt);
|
||||
gamecntBtn.SetEffectGrow();
|
||||
gamecntBtn.SetTrigger(&trigA);
|
||||
@ -460,21 +532,35 @@ int MenuDiscList() {
|
||||
favoriteBtnTT.SetWidescreen(CFG.widescreen);
|
||||
favoriteBtnTT.SetAlpha(THEME.tooltipAlpha);
|
||||
GuiImage favoriteBtnImg(&imgfavIcon);
|
||||
GuiImage favoriteBtnImg_g(&imgfavIcon_gray);
|
||||
favoriteBtnImg.SetWidescreen(CFG.widescreen);
|
||||
GuiImage favoriteBtnImg_g(favoriteBtnImg);favoriteBtnImg_g.SetGrayscale();
|
||||
// GuiImage favoriteBtnImg_g(&imgfavIcon_gray);
|
||||
favoriteBtnImg_g.SetWidescreen(CFG.widescreen);
|
||||
GuiButton favoriteBtn(&favoriteBtnImg_g,&favoriteBtnImg_g, 2, 3, THEME.favorite_x, THEME.favorite_y, &trigA, &btnSoundOver, &btnClick,1, &favoriteBtnTT, -15, 52, 0, 3);
|
||||
GuiButton favoriteBtn(&favoriteBtnImg_g,&favoriteBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_favorite_x, THEME.gamelist_favorite_y, &trigA, &btnSoundOver, &btnClick,1, &favoriteBtnTT, -15, 52, 0, 3);
|
||||
favoriteBtn.SetAlpha(180);
|
||||
|
||||
GuiTooltip searchBtnTT(tr("Set Search-Filter"));
|
||||
if (Settings.wsprompt == yes)
|
||||
searchBtnTT.SetWidescreen(CFG.widescreen);
|
||||
searchBtnTT.SetAlpha(THEME.tooltipAlpha);
|
||||
GuiImage searchBtnImg(&imgsearchIcon);
|
||||
searchBtnImg.SetWidescreen(CFG.widescreen);
|
||||
GuiImage searchBtnImg_g(searchBtnImg); searchBtnImg_g.SetGrayscale();
|
||||
// GuiImage searchBtnImg_g(&imgsearchIcon_gray);
|
||||
searchBtnImg_g.SetWidescreen(CFG.widescreen);
|
||||
GuiButton searchBtn(&searchBtnImg_g,&searchBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_search_x, THEME.gamelist_search_y, &trigA, &btnSoundOver, &btnClick,1, &searchBtnTT, -15, 52, 0, 3);
|
||||
searchBtn.SetAlpha(180);
|
||||
|
||||
GuiTooltip abcBtnTT(tr("Sort alphabetically"));
|
||||
if (Settings.wsprompt == yes)
|
||||
abcBtnTT.SetWidescreen(CFG.widescreen);
|
||||
abcBtnTT.SetAlpha(THEME.tooltipAlpha);
|
||||
GuiImage abcBtnImg(&imgabcIcon);
|
||||
abcBtnImg.SetWidescreen(CFG.widescreen);
|
||||
GuiImage abcBtnImg_g(&imgabcIcon_gray);
|
||||
GuiImage abcBtnImg_g(abcBtnImg); abcBtnImg_g.SetGrayscale();
|
||||
// GuiImage abcBtnImg_g(&imgabcIcon_gray);
|
||||
abcBtnImg_g.SetWidescreen(CFG.widescreen);
|
||||
GuiButton abcBtn(&abcBtnImg_g,&abcBtnImg_g, 2, 3, THEME.abc_x, THEME.abc_y, &trigA, &btnSoundOver, &btnClick,1,&abcBtnTT, -15, 52, 0, 3);
|
||||
GuiButton abcBtn(&abcBtnImg_g,&abcBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_abc_x, THEME.gamelist_abc_y, &trigA, &btnSoundOver, &btnClick,1,&abcBtnTT, -15, 52, 0, 3);
|
||||
abcBtn.SetAlpha(180);
|
||||
|
||||
GuiTooltip countBtnTT(tr("Sort order by most played"));
|
||||
@ -483,9 +569,10 @@ int MenuDiscList() {
|
||||
countBtnTT.SetAlpha(THEME.tooltipAlpha);
|
||||
GuiImage countBtnImg(&imgplayCountIcon);
|
||||
countBtnImg.SetWidescreen(CFG.widescreen);
|
||||
GuiImage countBtnImg_g(&imgplayCountIcon_gray);
|
||||
GuiImage countBtnImg_g(countBtnImg); countBtnImg_g.SetGrayscale();
|
||||
// GuiImage countBtnImg_g(&imgplayCountIcon_gray);
|
||||
countBtnImg_g.SetWidescreen(CFG.widescreen);
|
||||
GuiButton countBtn(&countBtnImg_g,&countBtnImg_g, 2, 3, THEME.count_x, THEME.count_y, &trigA, &btnSoundOver, &btnClick,1, &countBtnTT, -15, 52, 0, 3);
|
||||
GuiButton countBtn(&countBtnImg_g,&countBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_count_x, THEME.gamelist_count_y, &trigA, &btnSoundOver, &btnClick,1, &countBtnTT, -15, 52, 0, 3);
|
||||
countBtn.SetAlpha(180);
|
||||
|
||||
GuiTooltip listBtnTT(tr("Display as a list"));
|
||||
@ -494,9 +581,10 @@ int MenuDiscList() {
|
||||
listBtnTT.SetAlpha(THEME.tooltipAlpha);
|
||||
GuiImage listBtnImg(&imgarrangeList);
|
||||
listBtnImg.SetWidescreen(CFG.widescreen);
|
||||
GuiImage listBtnImg_g(&imgarrangeList_gray);
|
||||
GuiImage listBtnImg_g(listBtnImg); listBtnImg_g.SetGrayscale();
|
||||
// GuiImage listBtnImg_g(&imgarrangeList_gray);
|
||||
listBtnImg_g.SetWidescreen(CFG.widescreen);
|
||||
GuiButton listBtn(&listBtnImg_g,&listBtnImg_g, 2, 3, THEME.list_x, THEME.list_y, &trigA, &btnSoundOver, &btnClick,1, &listBtnTT, 15, 52, 1, 3);
|
||||
GuiButton listBtn(&listBtnImg_g,&listBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_list_x, THEME.gamelist_list_y, &trigA, &btnSoundOver, &btnClick,1, &listBtnTT, 15, 52, 1, 3);
|
||||
listBtn.SetAlpha(180);
|
||||
|
||||
GuiTooltip gridBtnTT(tr("Display as a grid"));
|
||||
@ -505,21 +593,23 @@ int MenuDiscList() {
|
||||
gridBtnTT.SetAlpha(THEME.tooltipAlpha);
|
||||
GuiImage gridBtnImg(&imgarrangeGrid);
|
||||
gridBtnImg.SetWidescreen(CFG.widescreen);
|
||||
GuiImage gridBtnImg_g(&imgarrangeGrid_gray);
|
||||
GuiImage gridBtnImg_g(gridBtnImg); gridBtnImg_g.SetGrayscale();
|
||||
// GuiImage gridBtnImg_g(&imgarrangeGrid_gray);
|
||||
gridBtnImg_g.SetWidescreen(CFG.widescreen);
|
||||
GuiButton gridBtn(&gridBtnImg_g,&gridBtnImg_g, 2, 3, THEME.grid_x, THEME.grid_y, &trigA, &btnSoundOver, &btnClick,1, &gridBtnTT, 15, 52, 1, 3);
|
||||
GuiButton gridBtn(&gridBtnImg_g,&gridBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_grid_x, THEME.gamelist_grid_y, &trigA, &btnSoundOver, &btnClick,1, &gridBtnTT, 15, 52, 1, 3);
|
||||
gridBtn.SetAlpha(180);
|
||||
|
||||
GuiTooltip carouselBtnTT(tr("Display as a carousel"));
|
||||
if (Settings.wsprompt == yes)
|
||||
carouselBtnTT.SetWidescreen(CFG.widescreen);
|
||||
carouselBtnTT.SetAlpha(THEME.tooltipAlpha);
|
||||
GuiImage carouselBtnImg(&imgarrangeCarousel);
|
||||
carouselBtnImg.SetWidescreen(CFG.widescreen);
|
||||
GuiImage carouselBtnImg_g(&imgarrangeCarousel_gray);
|
||||
carouselBtnImg_g.SetWidescreen(CFG.widescreen);
|
||||
GuiButton carouselBtn(&carouselBtnImg_g,&carouselBtnImg_g, 2, 3, THEME.carousel_x, THEME.carousel_y, &trigA, &btnSoundOver, &btnClick,1, &carouselBtnTT, 15, 52, 1, 3);
|
||||
carouselBtn.SetAlpha(180);
|
||||
GuiTooltip carouselBtnTT(tr("Display as a carousel"));
|
||||
if (Settings.wsprompt == yes)
|
||||
carouselBtnTT.SetWidescreen(CFG.widescreen);
|
||||
carouselBtnTT.SetAlpha(THEME.tooltipAlpha);
|
||||
GuiImage carouselBtnImg(&imgarrangeCarousel);
|
||||
carouselBtnImg.SetWidescreen(CFG.widescreen);
|
||||
GuiImage carouselBtnImg_g(carouselBtnImg); carouselBtnImg_g.SetGrayscale();
|
||||
// GuiImage carouselBtnImg_g(&imgarrangeCarousel_gray);
|
||||
carouselBtnImg_g.SetWidescreen(CFG.widescreen);
|
||||
GuiButton carouselBtn(&carouselBtnImg_g,&carouselBtnImg_g, ALIGN_LEFT, ALIGN_TOP, THEME.gamelist_carousel_x, THEME.gamelist_carousel_y, &trigA, &btnSoundOver, &btnClick,1, &carouselBtnTT, 15, 52, 1, 3);
|
||||
carouselBtn.SetAlpha(180);
|
||||
|
||||
GuiTooltip homebrewBtnTT(tr("Homebrew Launcher"));
|
||||
if (Settings.wsprompt == yes)
|
||||
@ -529,13 +619,24 @@ int MenuDiscList() {
|
||||
GuiImage homebrewImgOver(&homebrewImgDataOver);
|
||||
homebrewImg.SetWidescreen(CFG.widescreen);
|
||||
homebrewImgOver.SetWidescreen(CFG.widescreen);
|
||||
GuiButton homebrewBtn(&homebrewImg,&homebrewImgOver, 0, 3, THEME.homebrew_x, THEME.homebrew_y, &trigA, &btnSoundOver, &btnClick,1,&homebrewBtnTT,15,-30,1,5);
|
||||
GuiButton homebrewBtn(&homebrewImg,&homebrewImgOver, ALIGN_LEFT, ALIGN_TOP, THEME.homebrew_x, THEME.homebrew_y, &trigA, &btnSoundOver, &btnClick,1,&homebrewBtnTT,15,-30,1,5);
|
||||
|
||||
if (Settings.fave) {
|
||||
favoriteBtn.SetImage(&favoriteBtnImg);
|
||||
favoriteBtn.SetImageOver(&favoriteBtnImg);
|
||||
favoriteBtn.SetAlpha(255);
|
||||
}
|
||||
static bool show_searchwindow = false;
|
||||
if(gameFilter && *gameFilter)
|
||||
{
|
||||
if(show_searchwindow && gameCnt==1)
|
||||
show_searchwindow = false;
|
||||
if(!show_searchwindow)
|
||||
searchBtn.SetEffect(EFFECT_PULSE, 10, 105);
|
||||
searchBtn.SetImage(&searchBtnImg);
|
||||
searchBtn.SetImageOver(&searchBtnImg);
|
||||
searchBtn.SetAlpha(255);
|
||||
}
|
||||
if (Settings.sort==all) {
|
||||
abcBtn.SetImage(&abcBtnImg);
|
||||
abcBtn.SetImageOver(&abcBtnImg);
|
||||
@ -559,38 +660,30 @@ int MenuDiscList() {
|
||||
carouselBtn.SetAlpha(255);
|
||||
}
|
||||
if (Settings.gameDisplay==list) {
|
||||
if (CFG.widescreen) {
|
||||
favoriteBtn.SetPosition(THEME.favorite_x, THEME.favorite_y);
|
||||
abcBtn.SetPosition(THEME.abc_x, THEME.abc_y);
|
||||
countBtn.SetPosition(THEME.count_x, THEME.count_y);
|
||||
listBtn.SetPosition(THEME.list_x, THEME.list_y);
|
||||
gridBtn.SetPosition(THEME.grid_x, THEME.grid_y);
|
||||
carouselBtn.SetPosition(THEME.carousel_x, THEME.carousel_y);
|
||||
} else {
|
||||
favoriteBtn.SetPosition(THEME.favorite_x-20, THEME.favorite_y);
|
||||
abcBtn.SetPosition(THEME.abc_x-12, THEME.abc_y);
|
||||
countBtn.SetPosition(THEME.count_x-4, THEME.count_y);
|
||||
listBtn.SetPosition(THEME.list_x+4, THEME.list_y);
|
||||
gridBtn.SetPosition(THEME.grid_x+12, THEME.grid_y);
|
||||
carouselBtn.SetPosition(THEME.carousel_x+20, THEME.carousel_y);
|
||||
}
|
||||
} else {
|
||||
if (CFG.widescreen) {
|
||||
favoriteBtn.SetPosition(THEME.favorite_x-THEME.sortBarOffset, THEME.favorite_y);
|
||||
abcBtn.SetPosition(THEME.abc_x-THEME.sortBarOffset, THEME.abc_y);
|
||||
countBtn.SetPosition(THEME.count_x-THEME.sortBarOffset, THEME.count_y);
|
||||
listBtn.SetPosition(THEME.list_x-THEME.sortBarOffset, THEME.list_y);
|
||||
gridBtn.SetPosition(THEME.grid_x-THEME.sortBarOffset, THEME.grid_y);
|
||||
carouselBtn.SetPosition(THEME.carousel_x-THEME.sortBarOffset, THEME.carousel_y);
|
||||
} else {
|
||||
favoriteBtn.SetPosition(THEME.favorite_x-20-THEME.sortBarOffset, THEME.favorite_y);
|
||||
abcBtn.SetPosition(THEME.abc_x-12-THEME.sortBarOffset, THEME.abc_y);
|
||||
countBtn.SetPosition(THEME.count_x-4-THEME.sortBarOffset, THEME.count_y);
|
||||
listBtn.SetPosition(THEME.list_x+4-THEME.sortBarOffset, THEME.list_y);
|
||||
gridBtn.SetPosition(THEME.grid_x+12-THEME.sortBarOffset, THEME.grid_y);
|
||||
carouselBtn.SetPosition(THEME.carousel_x+20-THEME.sortBarOffset, THEME.carousel_y);
|
||||
}
|
||||
}
|
||||
favoriteBtn.SetPosition(THEME.gamelist_favorite_x, THEME.gamelist_favorite_y);
|
||||
searchBtn.SetPosition(THEME.gamelist_search_x, THEME.gamelist_search_y);
|
||||
abcBtn.SetPosition(THEME.gamelist_abc_x, THEME.gamelist_abc_y);
|
||||
countBtn.SetPosition(THEME.gamelist_count_x, THEME.gamelist_count_y);
|
||||
listBtn.SetPosition(THEME.gamelist_list_x, THEME.gamelist_list_y);
|
||||
gridBtn.SetPosition(THEME.gamelist_grid_x, THEME.gamelist_grid_y);
|
||||
carouselBtn.SetPosition(THEME.gamelist_carousel_x, THEME.gamelist_carousel_y);
|
||||
} else if(Settings.gameDisplay==grid) {
|
||||
favoriteBtn.SetPosition(THEME.gamegrid_favorite_x, THEME.gamegrid_favorite_y);
|
||||
searchBtn.SetPosition(THEME.gamegrid_search_x, THEME.gamegrid_search_y);
|
||||
abcBtn.SetPosition(THEME.gamegrid_abc_x, THEME.gamegrid_abc_y);
|
||||
countBtn.SetPosition(THEME.gamegrid_count_x, THEME.gamegrid_count_y);
|
||||
listBtn.SetPosition(THEME.gamegrid_list_x, THEME.gamegrid_list_y);
|
||||
gridBtn.SetPosition(THEME.gamegrid_grid_x, THEME.gamegrid_grid_y);
|
||||
carouselBtn.SetPosition(THEME.gamegrid_carousel_x, THEME.gamegrid_carousel_y);
|
||||
} else if(Settings.gameDisplay==carousel) {
|
||||
favoriteBtn.SetPosition(THEME.gamecarousel_favorite_x, THEME.gamecarousel_favorite_y);
|
||||
searchBtn.SetPosition(THEME.gamecarousel_search_x, THEME.gamecarousel_favorite_y);
|
||||
abcBtn.SetPosition(THEME.gamecarousel_abc_x, THEME.gamecarousel_abc_y);
|
||||
countBtn.SetPosition(THEME.gamecarousel_count_x, THEME.gamecarousel_count_y);
|
||||
listBtn.SetPosition(THEME.gamecarousel_list_x, THEME.gamecarousel_list_y);
|
||||
gridBtn.SetPosition(THEME.gamecarousel_grid_x, THEME.gamecarousel_grid_y);
|
||||
carouselBtn.SetPosition(THEME.gamecarousel_carousel_x, THEME.gamecarousel_carousel_y);
|
||||
}
|
||||
|
||||
|
||||
//Downloading Covers
|
||||
@ -600,7 +693,7 @@ int MenuDiscList() {
|
||||
DownloadBtnTT.SetAlpha(THEME.tooltipAlpha);
|
||||
GuiButton DownloadBtn(0,0);
|
||||
DownloadBtn.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
DownloadBtn.SetPosition(THEME.cover_x,THEME.cover_y);
|
||||
DownloadBtn.SetPosition(THEME.covers_x,THEME.covers_y);
|
||||
|
||||
GuiTooltip IDBtnTT(tr("Click to change game ID"));
|
||||
if (Settings.wsprompt == yes)
|
||||
@ -631,8 +724,8 @@ int MenuDiscList() {
|
||||
GuiGameGrid * gameGrid = NULL;
|
||||
GuiGameCarousel * gameCarousel = NULL;
|
||||
if (Settings.gameDisplay==list) {
|
||||
gameBrowser = new GuiGameBrowser(THEME.selection_w, THEME.selection_h, gameList, gameCnt, CFG.theme_path, bg_options_png, startat, offset);
|
||||
gameBrowser->SetPosition(THEME.selection_x, THEME.selection_y);
|
||||
gameBrowser = new GuiGameBrowser(THEME.gamelist_w, THEME.gamelist_h, gameList, gameCnt, CFG.theme_path, bg_options_png, startat, offset);
|
||||
gameBrowser->SetPosition(THEME.gamelist_x, THEME.gamelist_y);
|
||||
gameBrowser->SetAlignment(ALIGN_LEFT, ALIGN_CENTRE);
|
||||
} else if (Settings.gameDisplay==grid) {
|
||||
gameGrid = new GuiGameGrid(THEME.gamegrid_w,THEME.gamegrid_h, gameList, gameCnt, CFG.theme_path, bg_options_png, 0, 0);
|
||||
@ -645,22 +738,22 @@ int MenuDiscList() {
|
||||
gameCarousel->SetAlignment(ALIGN_LEFT, ALIGN_CENTRE);
|
||||
}
|
||||
|
||||
GuiText clockTimeBack("88:88", 40, (GXColor) {THEME.clock_r, THEME.clock_g, THEME.clock_b, 40});
|
||||
clockTimeBack.SetAlignment(THEME.clockAlign, ALIGN_TOP);
|
||||
GuiText clockTimeBack("88:88", 40, (GXColor) {THEME.clock.r, THEME.clock.g, THEME.clock.b, THEME.clock.a/6});
|
||||
clockTimeBack.SetAlignment(THEME.clock_align, ALIGN_TOP);
|
||||
clockTimeBack.SetPosition(THEME.clock_x, THEME.clock_y);
|
||||
clockTimeBack.SetFont(fontClock);
|
||||
GuiText clockTime(theTime, 40, (GXColor) {THEME.clock_r, THEME.clock_g, THEME.clock_b, 240});
|
||||
clockTime.SetAlignment(THEME.clockAlign, ALIGN_TOP);
|
||||
GuiText clockTime(theTime, 40, THEME.clock);
|
||||
clockTime.SetAlignment(THEME.clock_align, ALIGN_TOP);
|
||||
clockTime.SetPosition(THEME.clock_x, THEME.clock_y);
|
||||
clockTime.SetFont(fontClock);
|
||||
|
||||
HaltGui();
|
||||
GuiWindow w(screenwidth, screenheight);
|
||||
|
||||
if (THEME.showHDD == -1 || THEME.showHDD == 1) { //force show hdd info
|
||||
if (THEME.show_hddinfo == -1 || THEME.show_hddinfo == 1) { //force show hdd info
|
||||
w.Append(&usedSpaceTxt);
|
||||
}
|
||||
if (THEME.showGameCnt == -1 || THEME.showGameCnt == 1) { //force show game cnt info
|
||||
if (THEME.show_gamecount == -1 || THEME.show_gamecount == 1) { //force show game cnt info
|
||||
w.Append(&gamecntBtn);
|
||||
}
|
||||
w.Append(&sdcardBtn);
|
||||
@ -672,13 +765,26 @@ int MenuDiscList() {
|
||||
w.Append(&settingsBtn);
|
||||
w.Append(&DownloadBtn);
|
||||
w.Append(&idBtn);
|
||||
|
||||
// Begin Toolbar
|
||||
w.Append(&favoriteBtn);
|
||||
Toolbar[0] = &favoriteBtn;
|
||||
w.Append(&searchBtn);
|
||||
Toolbar[1] = &searchBtn;
|
||||
w.Append(&abcBtn);
|
||||
Toolbar[2] = &abcBtn;
|
||||
w.Append(&countBtn);
|
||||
Toolbar[3] = &countBtn;
|
||||
w.Append(&listBtn);
|
||||
Toolbar[4] = &listBtn;
|
||||
w.Append(&gridBtn);
|
||||
Toolbar[5] = &gridBtn;
|
||||
w.Append(&carouselBtn);
|
||||
if (Settings.godmode == 1)
|
||||
Toolbar[6] = &carouselBtn;
|
||||
w.SetUpdateCallback(DiscListWinUpdateCallback);
|
||||
// End Toolbar
|
||||
|
||||
if (Settings.godmode == 1)
|
||||
w.Append(&homebrewBtn);
|
||||
|
||||
if ((Settings.hddinfo == hr12)||(Settings.hddinfo == hr24)) {
|
||||
@ -697,6 +803,13 @@ int MenuDiscList() {
|
||||
}
|
||||
mainWindow->Append(&w);
|
||||
|
||||
GuiSearchBar *searchBar=NULL;
|
||||
if(show_searchwindow) {
|
||||
searchBar = new GuiSearchBar(gameFilterNextList);
|
||||
if(searchBar)
|
||||
mainWindow->Append(searchBar);
|
||||
}
|
||||
|
||||
ResumeGui();
|
||||
|
||||
while (menu == MENU_NONE) {
|
||||
@ -973,6 +1086,62 @@ int MenuDiscList() {
|
||||
|
||||
}
|
||||
|
||||
else if (searchBtn.GetState() == STATE_CLICKED) {
|
||||
|
||||
show_searchwindow=!show_searchwindow;
|
||||
HaltGui();
|
||||
if(searchBar)
|
||||
{
|
||||
mainWindow->Remove(searchBar);
|
||||
delete searchBar;
|
||||
searchBar = NULL;
|
||||
}
|
||||
if(show_searchwindow)
|
||||
{
|
||||
if(gameFilter && *gameFilter)
|
||||
{
|
||||
searchBtn.StopEffect();
|
||||
searchBtn.SetEffectGrow();
|
||||
}
|
||||
searchBar = new GuiSearchBar(gameFilterNextList);
|
||||
if(searchBar)
|
||||
mainWindow->Append(searchBar);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(gameFilter && *gameFilter)
|
||||
searchBtn.SetEffect(EFFECT_PULSE, 10, 105);
|
||||
}
|
||||
searchBtn.ResetState();
|
||||
ResumeGui();
|
||||
}
|
||||
|
||||
else if (searchBar && (searchChar=searchBar->GetClicked())) {
|
||||
if(searchChar > 27)
|
||||
{
|
||||
int len = gameFilter ? wcslen(gameFilter) : 0;
|
||||
wchar_t newFilter[len+2];
|
||||
if(gameFilter)
|
||||
wcscpy(newFilter, gameFilter);
|
||||
newFilter[len] = searchChar;
|
||||
newFilter[len+1] = 0;
|
||||
|
||||
|
||||
__Menu_GetEntries(0, newFilter);
|
||||
}
|
||||
else if(searchChar == 7) // Clear
|
||||
{
|
||||
__Menu_GetEntries(0, L"");
|
||||
}
|
||||
else if(searchChar == 8) // Backspace
|
||||
{
|
||||
__Menu_GetEntries(0, gameFilterPrev);
|
||||
}
|
||||
|
||||
menu = MENU_DISCLIST;
|
||||
break;
|
||||
}
|
||||
|
||||
else if (abcBtn.GetState() == STATE_CLICKED) {
|
||||
if (Settings.sort != all) {
|
||||
Settings.sort=all;
|
||||
@ -1097,7 +1266,7 @@ int MenuDiscList() {
|
||||
selectedold = selectimg;//update displayed cover, game ID, and region if the selected game changes
|
||||
struct discHdr *header = &gameList[selectimg];
|
||||
snprintf (ID,sizeof(ID),"%c%c%c", header->id[0], header->id[1], header->id[2]);
|
||||
snprintf (IDfull,sizeof(IDfull),"%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2],header->id[3], header->id[4], header->id[5]);
|
||||
snprintf (IDfull,sizeof(IDfull),"%s%c%c%c", ID, header->id[3], header->id[4], header->id[5]);
|
||||
w.Remove(&DownloadBtn);
|
||||
|
||||
if (GameIDTxt) {
|
||||
@ -1144,18 +1313,7 @@ int MenuDiscList() {
|
||||
cover = NULL;
|
||||
}
|
||||
|
||||
snprintf(imgPath, sizeof(imgPath), "%s%s.png", Settings.covers_path, IDfull);
|
||||
cover = new GuiImageData(imgPath,0); //load short id
|
||||
if (!cover->GetImage()) { //if could not load the short id image
|
||||
delete cover;
|
||||
snprintf(imgPath, sizeof(imgPath), "%s%s.png", Settings.covers_path, ID);
|
||||
cover = new GuiImageData(imgPath, 0); //load full id image
|
||||
if (!cover->GetImage()) {
|
||||
delete cover;
|
||||
snprintf(imgPath, sizeof(imgPath), "%snoimage.png", CFG.theme_path);
|
||||
cover = new GuiImageData(imgPath, nocover_png); //load no image
|
||||
}
|
||||
}
|
||||
cover = LoadCoverImage(header);
|
||||
|
||||
if (coverImg) {
|
||||
delete coverImg;
|
||||
@ -1168,7 +1326,7 @@ int MenuDiscList() {
|
||||
w.Append(&DownloadBtn);
|
||||
|
||||
if ((Settings.sinfo == GameID) || (Settings.sinfo == Both)) {
|
||||
GameIDTxt = new GuiText(IDfull, 22, (GXColor) {THEME.info_r, THEME.info_g, THEME.info_b, 255});
|
||||
GameIDTxt = new GuiText(IDfull, 22, THEME.info);
|
||||
GameIDTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
//GameIDTxt->SetPosition(THEME.id_x,THEME.id_y);
|
||||
idBtn.SetEffect(EFFECT_FADE, 20);
|
||||
@ -1177,7 +1335,7 @@ int MenuDiscList() {
|
||||
}
|
||||
|
||||
if ((Settings.sinfo == GameRegion) || (Settings.sinfo == Both)) {
|
||||
GameRegionTxt = new GuiText(gameregion, 22, (GXColor) {THEME.info_r, THEME.info_g, THEME.info_b, 255});
|
||||
GameRegionTxt = new GuiText(gameregion, 22, THEME.info);
|
||||
GameRegionTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
GameRegionTxt->SetPosition(THEME.region_x, THEME.region_y);
|
||||
GameRegionTxt->SetEffect(EFFECT_FADE, 20);
|
||||
@ -1204,7 +1362,13 @@ int MenuDiscList() {
|
||||
}
|
||||
|
||||
if ((gameSelected >= 0) && (gameSelected < (s32)gameCnt)) {
|
||||
rockout();
|
||||
if(searchBar)
|
||||
{
|
||||
HaltGui();
|
||||
mainWindow->Remove(searchBar);
|
||||
ResumeGui();
|
||||
}
|
||||
rockout();
|
||||
struct discHdr *header = &gameList[gameSelected];
|
||||
WBFS_GameSize(header->id, &size);
|
||||
if (strlen(get_title(header)) < (MAX_CHARACTERS + 3)) {
|
||||
@ -1387,6 +1551,12 @@ int MenuDiscList() {
|
||||
|
||||
|
||||
}
|
||||
if(searchBar)
|
||||
{
|
||||
HaltGui();
|
||||
mainWindow->Append(searchBar);
|
||||
ResumeGui();
|
||||
}
|
||||
}
|
||||
// to skip the first call of windowScreensaver at startup when wiimote is not connected
|
||||
if (IsWpadConnected()) {
|
||||
@ -1439,6 +1609,8 @@ int MenuDiscList() {
|
||||
HaltGui();
|
||||
mainWindow->RemoveAll();
|
||||
mainWindow->Append(bgImg);
|
||||
delete searchBar;
|
||||
searchBar = NULL;
|
||||
delete gameBrowser;
|
||||
gameBrowser = NULL;
|
||||
delete gameGrid;
|
||||
|
@ -30,5 +30,7 @@ enum {
|
||||
MENU_HOMEBREWBROWSE,
|
||||
BOOTHOMEBREW
|
||||
};
|
||||
class GuiImageData;
|
||||
GuiImageData *LoadCoverImage(struct discHdr *header, bool Prefere3D=true, bool noCover=true);
|
||||
|
||||
#endif
|
||||
|
@ -163,7 +163,7 @@ int DiscBrowse(struct discHdr * header) {
|
||||
settingsbackgroundbtn.SetPosition(0, 0);
|
||||
settingsbackgroundbtn.SetImage(&settingsbackground);
|
||||
|
||||
GuiText cancelBtnTxt(tr("Back"), 22, (GXColor) { THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText cancelBtnTxt(tr("Back"), 22, THEME.prompttext);
|
||||
cancelBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
|
||||
GuiImage cancelBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
|
@ -155,11 +155,11 @@ static void ProgressWindow(const char *title, const char *msg1, const char *msg2
|
||||
progressbarImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||
progressbarImg.SetPosition(25, 40);
|
||||
|
||||
GuiText titleTxt(title, 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText titleTxt(title, 26, THEME.prompttext);
|
||||
titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
titleTxt.SetPosition(0,60);
|
||||
|
||||
GuiText msg1Txt(msg1, 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255} );
|
||||
GuiText msg1Txt(msg1, 22, THEME.prompttext );
|
||||
msg1Txt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
if (msg2)
|
||||
msg1Txt.SetPosition(0,120);
|
||||
@ -167,28 +167,28 @@ static void ProgressWindow(const char *title, const char *msg1, const char *msg2
|
||||
msg1Txt.SetPosition(0,100);
|
||||
msg1Txt.SetMaxWidth(430, GuiText::DOTTED);
|
||||
|
||||
GuiText msg2Txt(msg2, 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255} );
|
||||
GuiText msg2Txt(msg2, 22, THEME.prompttext );
|
||||
msg2Txt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
msg2Txt.SetPosition(0,125);
|
||||
msg2Txt.SetMaxWidth(430, GuiText::DOTTED);
|
||||
|
||||
GuiText prsTxt("%", 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText prsTxt("%", 22, THEME.prompttext);
|
||||
prsTxt.SetAlignment(ALIGN_RIGHT, ALIGN_MIDDLE);
|
||||
prsTxt.SetPosition(-188,40);
|
||||
|
||||
GuiText timeTxt(NULL, 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText timeTxt(NULL, 22, THEME.prompttext);
|
||||
timeTxt.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
||||
timeTxt.SetPosition(280,-50);
|
||||
|
||||
GuiText sizeTxt(NULL, 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText sizeTxt(NULL, 22, THEME.prompttext);
|
||||
sizeTxt.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
||||
sizeTxt.SetPosition(50, -50);
|
||||
|
||||
GuiText speedTxt(NULL, 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText speedTxt(NULL, 22, THEME.prompttext);
|
||||
speedTxt.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
||||
speedTxt.SetPosition(50, -74);
|
||||
|
||||
GuiText prTxt(NULL, 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText prTxt(NULL, 26, THEME.prompttext);
|
||||
prTxt.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||
prTxt.SetPosition(200, 40);
|
||||
|
||||
|
@ -85,7 +85,7 @@ int OnScreenKeyboard(char * var, u32 maxlen, int min) {
|
||||
GuiTrigger trigB;
|
||||
trigB.SetSimpleTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
|
||||
|
||||
GuiText okBtnTxt(tr("OK"), 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText okBtnTxt(tr("OK"), 22, THEME.prompttext);
|
||||
GuiImage okBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
okBtnTxt.SetWidescreen(CFG.widescreen);
|
||||
@ -93,7 +93,7 @@ int OnScreenKeyboard(char * var, u32 maxlen, int min) {
|
||||
}
|
||||
GuiButton okBtn(&okBtnImg,&okBtnImg, 0, 4, 5, 15, &trigA, &btnSoundOver, &btnClick,1);
|
||||
okBtn.SetLabel(&okBtnTxt);
|
||||
GuiText cancelBtnTxt(tr("Cancel"), 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText cancelBtnTxt(tr("Cancel"), 22, THEME.prompttext);
|
||||
GuiImage cancelBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
cancelBtnTxt.SetWidescreen(CFG.widescreen);
|
||||
@ -458,15 +458,15 @@ WindowPrompt(const char *title, const char *msg, const char *btn1Label,
|
||||
dialogBoxImg.SetWidescreen(CFG.widescreen);
|
||||
}
|
||||
|
||||
GuiText titleTxt(title, 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText titleTxt(title, 26, THEME.prompttext);
|
||||
titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
titleTxt.SetPosition(0,55);
|
||||
GuiText msgTxt(msg, 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msgTxt(msg, 22, THEME.prompttext);
|
||||
msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||
msgTxt.SetPosition(0,-40);
|
||||
msgTxt.SetMaxWidth(430);
|
||||
|
||||
GuiText btn1Txt(btn1Label, 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText btn1Txt(btn1Label, 22, THEME.prompttext);
|
||||
GuiImage btn1Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
btn1Txt.SetWidescreen(CFG.widescreen);
|
||||
@ -477,7 +477,7 @@ WindowPrompt(const char *title, const char *msg, const char *btn1Label,
|
||||
btn1.SetLabel(&btn1Txt);
|
||||
btn1.SetState(STATE_SELECTED);
|
||||
|
||||
GuiText btn2Txt(btn2Label, 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText btn2Txt(btn2Label, 22, THEME.prompttext);
|
||||
GuiImage btn2Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
btn2Txt.SetWidescreen(CFG.widescreen);
|
||||
@ -488,7 +488,7 @@ WindowPrompt(const char *title, const char *msg, const char *btn1Label,
|
||||
if (!btn3Label && !btn4Label)
|
||||
btn2.SetTrigger(&trigB);
|
||||
|
||||
GuiText btn3Txt(btn3Label, 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText btn3Txt(btn3Label, 22, THEME.prompttext);
|
||||
GuiImage btn3Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
btn3Txt.SetWidescreen(CFG.widescreen);
|
||||
@ -499,7 +499,7 @@ WindowPrompt(const char *title, const char *msg, const char *btn1Label,
|
||||
if (!btn4Label)
|
||||
btn3.SetTrigger(&trigB);
|
||||
|
||||
GuiText btn4Txt(btn4Label, 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText btn4Txt(btn4Label, 22, THEME.prompttext);
|
||||
GuiImage btn4Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
btn4Txt.SetWidescreen(CFG.widescreen);
|
||||
@ -1033,7 +1033,7 @@ int GameWindowPrompt() {
|
||||
GuiTooltip nameBtnTT(tr("Rename Game on WBFS"));
|
||||
if (Settings.wsprompt == yes)
|
||||
nameBtnTT.SetWidescreen(CFG.widescreen);
|
||||
GuiText nameTxt("", 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText nameTxt("", 22, THEME.prompttext);
|
||||
if (Settings.wsprompt == yes)
|
||||
nameTxt.SetWidescreen(CFG.widescreen);
|
||||
nameTxt.SetMaxWidth(350, GuiText::SCROLL);
|
||||
@ -1051,7 +1051,7 @@ int GameWindowPrompt() {
|
||||
nameBtn.SetEffectGrow();
|
||||
}
|
||||
|
||||
GuiText sizeTxt(NULL, 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255}); //TODO: get the size here
|
||||
GuiText sizeTxt(NULL, 22, THEME.prompttext); //TODO: get the size here
|
||||
sizeTxt.SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
|
||||
sizeTxt.SetPosition(-60,70);
|
||||
|
||||
@ -1067,7 +1067,7 @@ int GameWindowPrompt() {
|
||||
diskImg2.SetAngle(angle);
|
||||
diskImg2.SetBeta(180);
|
||||
|
||||
GuiText playcntTxt(NULL, 18, (GXColor) {THEME.info_r, THEME.info_g, THEME.info_b, 255});
|
||||
GuiText playcntTxt(NULL, 18, THEME.info);
|
||||
playcntTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||
playcntTxt.SetPosition(-115,45);
|
||||
|
||||
@ -1081,7 +1081,7 @@ int GameWindowPrompt() {
|
||||
btn1.SetTrigger(&trigA);
|
||||
btn1.SetState(STATE_SELECTED);
|
||||
|
||||
GuiText btn2Txt(tr("Back"), 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText btn2Txt(tr("Back"), 22, THEME.prompttext);
|
||||
GuiImage btn2Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
btn2Txt.SetWidescreen(CFG.widescreen);
|
||||
@ -1099,7 +1099,7 @@ int GameWindowPrompt() {
|
||||
btn2.SetLabel(&btn2Txt);
|
||||
btn2.SetTrigger(&trigB);
|
||||
|
||||
GuiText btn3Txt(tr("Settings"), 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText btn3Txt(tr("Settings"), 22, THEME.prompttext);
|
||||
GuiImage btn3Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
btn3Txt.SetWidescreen(CFG.widescreen);
|
||||
@ -1181,6 +1181,8 @@ int GameWindowPrompt() {
|
||||
|
||||
if (diskCover)
|
||||
delete diskCover;
|
||||
|
||||
|
||||
|
||||
snprintf(imgPath,sizeof(imgPath),"%s%s.png", Settings.disc_path, IDFull); //changed to current full id
|
||||
diskCover = new GuiImageData(imgPath,0);
|
||||
@ -1484,15 +1486,15 @@ DiscWait(const char *title, const char *msg, const char *btn1Label, const char *
|
||||
dialogBoxImg.SetWidescreen(CFG.widescreen);
|
||||
}
|
||||
|
||||
GuiText titleTxt(title, 26, (GXColor) { THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText titleTxt(title, 26, THEME.prompttext);
|
||||
titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
titleTxt.SetPosition(0,60);
|
||||
GuiText msgTxt(msg, 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msgTxt(msg, 22, THEME.prompttext);
|
||||
msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||
msgTxt.SetPosition(0,-40);
|
||||
msgTxt.SetMaxWidth(430);
|
||||
|
||||
GuiText btn1Txt(btn1Label, 22, (GXColor) { THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText btn1Txt(btn1Label, 22, THEME.prompttext);
|
||||
GuiImage btn1Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
btn1Txt.SetWidescreen(CFG.widescreen);
|
||||
@ -1512,7 +1514,7 @@ DiscWait(const char *title, const char *msg, const char *btn1Label, const char *
|
||||
btn1.SetTrigger(&trigB);
|
||||
btn1.SetState(STATE_SELECTED);
|
||||
|
||||
GuiText btn2Txt(btn2Label, 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText btn2Txt(btn2Label, 22, THEME.prompttext);
|
||||
GuiImage btn2Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
btn2Txt.SetWidescreen(CFG.widescreen);
|
||||
@ -1533,7 +1535,7 @@ DiscWait(const char *title, const char *msg, const char *btn1Label, const char *
|
||||
}
|
||||
}
|
||||
|
||||
GuiText timerTxt(NULL, 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText timerTxt(NULL, 26, THEME.prompttext);
|
||||
timerTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
timerTxt.SetPosition(0,160);
|
||||
|
||||
@ -1621,7 +1623,7 @@ FormatingPartition(const char *title, partitionEntry *entry) {
|
||||
dialogBoxImg.SetWidescreen(CFG.widescreen);
|
||||
}
|
||||
|
||||
GuiText titleTxt(title, 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText titleTxt(title, 26, THEME.prompttext);
|
||||
titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
titleTxt.SetPosition(0,60);
|
||||
|
||||
@ -1676,12 +1678,12 @@ bool SearchMissingImages(int choice2) {
|
||||
dialogBoxImg.SetWidescreen(CFG.widescreen);
|
||||
}
|
||||
|
||||
GuiText titleTxt(tr("Checking existing artwork"), 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText titleTxt(tr("Checking existing artwork"), 26, THEME.prompttext);
|
||||
titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
titleTxt.SetPosition(0,60);
|
||||
|
||||
char msg[20] = " ";
|
||||
GuiText msgTxt(msg, 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msgTxt(msg, 22, THEME.prompttext);
|
||||
msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||
msgTxt.SetPosition(0,-40);
|
||||
|
||||
@ -1710,16 +1712,18 @@ bool SearchMissingImages(int choice2) {
|
||||
for (i = 0; i < gameCnt && cntMissFiles < 500; i++) {
|
||||
struct discHdr* header = &gameList[i];
|
||||
if (choice2 != 3) {
|
||||
|
||||
char *covers_path = choice2==1 ? Settings.covers2d_path : Settings.covers_path;
|
||||
|
||||
snprintf (filename,sizeof(filename),"%c%c%c.png", header->id[0], header->id[1], header->id[2]);
|
||||
found2 = findfile(filename, Settings.covers_path);
|
||||
found2 = findfile(filename, covers_path);
|
||||
|
||||
snprintf (filename,sizeof(filename),"%c%c%c%c.png", header->id[0], header->id[1], header->id[2], header->id[3]);
|
||||
found3 = findfile(filename, Settings.covers_path);
|
||||
found3 = findfile(filename, covers_path);
|
||||
|
||||
snprintf(filename,sizeof(filename),"%c%c%c%c%c%c.png",header->id[0], header->id[1], header->id[2],
|
||||
header->id[3], header->id[4], header->id[5]); //full id
|
||||
found1 = findfile(filename, Settings.covers_path);
|
||||
found1 = findfile(filename, covers_path);
|
||||
if (!found1 && !found2 && !found3) { //if could not find any image
|
||||
snprintf(missingFiles[cntMissFiles],11,"%s",filename);
|
||||
cntMissFiles++;
|
||||
@ -1787,16 +1791,16 @@ bool NetworkInitPrompt() {
|
||||
dialogBoxImg.SetWidescreen(CFG.widescreen);
|
||||
}
|
||||
|
||||
GuiText titleTxt(tr("Initializing Network"), 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText titleTxt(tr("Initializing Network"), 26, THEME.prompttext);
|
||||
titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
titleTxt.SetPosition(0,60);
|
||||
|
||||
char msg[20] = " ";
|
||||
GuiText msgTxt(msg, 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msgTxt(msg, 22, THEME.prompttext);
|
||||
msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||
msgTxt.SetPosition(0,-40);
|
||||
|
||||
GuiText btn1Txt(tr("Cancel"), 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText btn1Txt(tr("Cancel"), 22, THEME.prompttext);
|
||||
GuiImage btn1Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
btn1Txt.SetWidescreen(CFG.widescreen);
|
||||
@ -1908,23 +1912,23 @@ ProgressDownloadWindow(int choice2) {
|
||||
progressbarImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||
progressbarImg.SetPosition(25, 40);
|
||||
|
||||
GuiText titleTxt(tr("Downloading file"), 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText titleTxt(tr("Downloading file"), 26, THEME.prompttext);
|
||||
titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
titleTxt.SetPosition(0,60);
|
||||
|
||||
GuiText msgTxt(NULL, 20, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msgTxt(NULL, 20, THEME.prompttext);
|
||||
msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
msgTxt.SetPosition(0,130);
|
||||
|
||||
GuiText msg2Txt(NULL, 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msg2Txt(NULL, 26, THEME.prompttext);
|
||||
msg2Txt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
msg2Txt.SetPosition(0,100);
|
||||
|
||||
GuiText prTxt(NULL, 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText prTxt(NULL, 26, THEME.prompttext);
|
||||
prTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||
prTxt.SetPosition(0, 40);
|
||||
|
||||
GuiText btn1Txt(tr("Cancel"), 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText btn1Txt(tr("Cancel"), 22, THEME.prompttext);
|
||||
GuiImage btn1Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
btn1Txt.SetWidescreen(CFG.widescreen);
|
||||
@ -1979,6 +1983,12 @@ ProgressDownloadWindow(int choice2) {
|
||||
cntMissFiles = 0;
|
||||
}
|
||||
}
|
||||
if (stat(Settings.covers2d_path, &st) != 0) {
|
||||
if (subfoldercreate(Settings.covers2d_path) != 1) {
|
||||
WindowPrompt(tr("Error !"),tr("Can't create directory"),tr("OK"));
|
||||
cntMissFiles = 0;
|
||||
}
|
||||
}
|
||||
if (stat(Settings.disc_path,&st) != 0) {
|
||||
if (subfoldercreate(Settings.disc_path) != 1) {
|
||||
WindowPrompt(tr("Error !"),tr("Can't create directory"),tr("OK"));
|
||||
@ -2180,10 +2190,10 @@ ProgressDownloadWindow(int choice2) {
|
||||
//Creates URL depending from which Country the game is
|
||||
switch (missingFiles[i][3]) {
|
||||
case 'J':
|
||||
sprintf(URLFile,"%sJA/%s",server3d,missingFiles[i]);
|
||||
sprintf(URLFile,"%sJA/%s",server2d,missingFiles[i]);
|
||||
break;
|
||||
case 'W':
|
||||
sprintf(URLFile,"%sZH/%s",server3d,missingFiles[i]);
|
||||
sprintf(URLFile,"%sZH/%s",server2d,missingFiles[i]);
|
||||
break;
|
||||
case 'K':
|
||||
sprintf(URLFile,"%sKO/%s",server2d,missingFiles[i]);
|
||||
@ -2205,7 +2215,7 @@ ProgressDownloadWindow(int choice2) {
|
||||
break;
|
||||
}
|
||||
|
||||
sprintf(imgPath,"%s%s", Settings.covers_path, missingFiles[i]);
|
||||
sprintf(imgPath,"%s%s", Settings.covers2d_path, missingFiles[i]);
|
||||
file = downloadfile(URLFile);
|
||||
|
||||
if (!(file.size == 36864 || file.size <= 1024 || file.size == 7386 || file.size <= 1174 || file.size == 4446 || file.data == NULL)) {
|
||||
@ -2248,7 +2258,7 @@ ProgressDownloadWindow(int choice2) {
|
||||
}
|
||||
|
||||
/**Temporary redownloading 1st image because of a fucking corruption bug **/
|
||||
|
||||
#if 0 // is no longer necessary, since libfat is fixed
|
||||
char URLFile[100];
|
||||
struct block file = downloadfile(URLFile);
|
||||
if (choice2 == 2) {
|
||||
@ -2273,7 +2283,7 @@ ProgressDownloadWindow(int choice2) {
|
||||
if (choice2 == 1) {
|
||||
while (tries<serverCnt2d) {
|
||||
sprintf(URLFile,"%s%s",server2d,missingFiles[0]);
|
||||
sprintf(imgPath,"%s%s", Settings.covers_path, missingFiles[0]);
|
||||
sprintf(imgPath,"%s%s", Settings.covers2d_path, missingFiles[0]);
|
||||
file = downloadfile(URLFile);
|
||||
if (!(file.size == 36864 || file.size <= 1024 || file.size <= 1174 || file.size == 7386 || file.size == 4446 || file.data == NULL))break;
|
||||
tries++;
|
||||
@ -2290,7 +2300,7 @@ ProgressDownloadWindow(int choice2) {
|
||||
free(file.data);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
HaltGui();
|
||||
mainWindow->Remove(&promptWindow);
|
||||
mainWindow->SetState(STATE_DEFAULT);
|
||||
@ -2385,24 +2395,24 @@ int ProgressUpdateWindow() {
|
||||
|
||||
char title[50];
|
||||
sprintf(title, "%s", tr("Checking for Updates"));
|
||||
GuiText titleTxt(title, 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText titleTxt(title, 26, THEME.prompttext);
|
||||
titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
titleTxt.SetPosition(0,50);
|
||||
char msg[50];
|
||||
sprintf(msg, "%s", tr("Initializing Network"));
|
||||
GuiText msgTxt(msg, 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msgTxt(msg, 26, THEME.prompttext);
|
||||
msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
msgTxt.SetPosition(0,140);
|
||||
char msg2[50] = " ";
|
||||
GuiText msg2Txt(msg2, 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msg2Txt(msg2, 26, THEME.prompttext);
|
||||
msg2Txt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||
msg2Txt.SetPosition(0, 50);
|
||||
|
||||
GuiText prTxt(NULL, 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText prTxt(NULL, 26, THEME.prompttext);
|
||||
prTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||
prTxt.SetPosition(0, 7);
|
||||
|
||||
GuiText btn1Txt(tr("Cancel"), 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText btn1Txt(tr("Cancel"), 22, THEME.prompttext);
|
||||
GuiImage btn1Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
btn1Txt.SetWidescreen(CFG.widescreen);
|
||||
@ -2720,24 +2730,24 @@ int ProgressUpdateWindow() {
|
||||
|
||||
char title[50];
|
||||
sprintf(title, "%s", tr("Checking for Updates"));
|
||||
GuiText titleTxt(title, 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText titleTxt(title, 26, THEME.prompttext);
|
||||
titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
titleTxt.SetPosition(0,50);
|
||||
char msg[50];
|
||||
sprintf(msg, "%s", tr("Initializing Network"));
|
||||
GuiText msgTxt(msg, 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msgTxt(msg, 26, THEME.prompttext);
|
||||
msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
msgTxt.SetPosition(0,140);
|
||||
char msg2[50] = " ";
|
||||
GuiText msg2Txt(msg2, 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msg2Txt(msg2, 26, THEME.prompttext);
|
||||
msg2Txt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||
msg2Txt.SetPosition(0, 50);
|
||||
|
||||
GuiText prTxt(NULL, 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText prTxt(NULL, 26, THEME.prompttext);
|
||||
prTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||
prTxt.SetPosition(0, 7);
|
||||
|
||||
GuiText btn1Txt(tr("Cancel"), 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText btn1Txt(tr("Cancel"), 22, THEME.prompttext);
|
||||
GuiImage btn1Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
btn1Txt.SetWidescreen(CFG.widescreen);
|
||||
@ -3013,20 +3023,20 @@ int CodeDownload(const char *id) {
|
||||
|
||||
char title[50];
|
||||
sprintf(title, "%s", tr("Code Download"));
|
||||
GuiText titleTxt(title, 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText titleTxt(title, 26, THEME.prompttext);
|
||||
titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
titleTxt.SetPosition(0,50);
|
||||
char msg[50];
|
||||
sprintf(msg, "%s", tr("Initializing Network"));
|
||||
GuiText msgTxt(msg, 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msgTxt(msg, 26, THEME.prompttext);
|
||||
msgTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
msgTxt.SetPosition(0,140);
|
||||
char msg2[50] = " ";
|
||||
GuiText msg2Txt(msg2, 26, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msg2Txt(msg2, 26, THEME.prompttext);
|
||||
msg2Txt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||
msg2Txt.SetPosition(0, 50);
|
||||
|
||||
GuiText btn1Txt(tr("Cancel"), 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText btn1Txt(tr("Cancel"), 22, THEME.prompttext);
|
||||
GuiImage btn1Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
btn1Txt.SetWidescreen(CFG.widescreen);
|
||||
@ -3238,7 +3248,7 @@ HBCWindowPrompt(const char *name, const char *coder, const char *version,
|
||||
|
||||
char tmp[510];
|
||||
|
||||
GuiText nameTxt(name,30 , (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText nameTxt(name,30 , THEME.prompttext);
|
||||
nameTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
nameTxt.SetPosition(0,-15);
|
||||
nameTxt.SetMaxWidth(430, GuiText::SCROLL);
|
||||
@ -3246,27 +3256,27 @@ HBCWindowPrompt(const char *name, const char *coder, const char *version,
|
||||
|
||||
if (strcmp(coder,""))
|
||||
snprintf(tmp, sizeof(tmp), tr("Coded by: %s"),coder);
|
||||
GuiText coderTxt(tmp, 16, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255} );
|
||||
GuiText coderTxt(tmp, 16, THEME.prompttext );
|
||||
coderTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
coderTxt.SetPosition(180,30);
|
||||
coderTxt.SetMaxWidth(280);
|
||||
|
||||
if (strcmp(version,""))
|
||||
snprintf(tmp, sizeof(tmp), tr("Version: %s"),version);
|
||||
GuiText versionTxt(tmp,16 , (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText versionTxt(tmp,16 , THEME.prompttext);
|
||||
versionTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
versionTxt.SetPosition(40,65);
|
||||
versionTxt.SetMaxWidth(430);
|
||||
|
||||
//if (release_date)
|
||||
//snprintf(tmp, sizeof(tmp), tr("Released: %s"),release_date);
|
||||
GuiText release_dateTxt(release_date,16 , (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText release_dateTxt(release_date,16 , THEME.prompttext);
|
||||
release_dateTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
release_dateTxt.SetPosition(40,85);
|
||||
release_dateTxt.SetMaxWidth(430);
|
||||
|
||||
int pagesize = 6;
|
||||
GuiText long_descriptionTxt(long_description, 20, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText long_descriptionTxt(long_description, 20, THEME.prompttext);
|
||||
long_descriptionTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
long_descriptionTxt.SetPosition(46,117);
|
||||
long_descriptionTxt.SetMaxWidth(360);
|
||||
@ -3294,11 +3304,11 @@ HBCWindowPrompt(const char *name, const char *coder, const char *version,
|
||||
snprintf(filesizeCH, sizeof(filesizeCH), "%s MB",temp2);
|
||||
|
||||
}
|
||||
GuiText filesizeTxt(filesizeCH, 16, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText filesizeTxt(filesizeCH, 16, THEME.prompttext);
|
||||
filesizeTxt.SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
|
||||
filesizeTxt.SetPosition(-40,12);
|
||||
|
||||
GuiText btn1Txt(tr("Load"), 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText btn1Txt(tr("Load"), 22, THEME.prompttext);
|
||||
GuiImage btn1Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
btn1Txt.SetWidescreen(CFG.widescreen);
|
||||
@ -3309,7 +3319,7 @@ HBCWindowPrompt(const char *name, const char *coder, const char *version,
|
||||
btn1.SetLabel(&btn1Txt);
|
||||
btn1.SetState(STATE_SELECTED);
|
||||
|
||||
GuiText btn2Txt(tr("Back"), 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText btn2Txt(tr("Back"), 22, THEME.prompttext);
|
||||
GuiImage btn2Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
btn2Txt.SetWidescreen(CFG.widescreen);
|
||||
|
@ -247,7 +247,7 @@ int TitleBrowser(u32 type) {
|
||||
settingsbackgroundbtn.SetPosition(0, 0);
|
||||
settingsbackgroundbtn.SetImage(&settingsbackground);
|
||||
|
||||
GuiText cancelBtnTxt(tr("Back"), 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText cancelBtnTxt(tr("Back"), 22, THEME.prompttext);
|
||||
cancelBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
|
||||
GuiImage cancelBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
|
@ -319,7 +319,7 @@ main:
|
||||
usbBtn.SetTrigger(&trigA);
|
||||
usbBtn.SetEffectGrow();
|
||||
|
||||
GuiText okBtnTxt(tr("Ok"), 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText okBtnTxt(tr("Ok"), 22, THEME.prompttext);
|
||||
GuiImage okBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
okBtnTxt.SetWidescreen(CFG.widescreen);
|
||||
|
@ -115,7 +115,7 @@ int MenuSettings() {
|
||||
|
||||
GuiImage settingsbackground(&settingsbg);
|
||||
|
||||
GuiText backBtnTxt(tr("Back") , 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText backBtnTxt(tr("Back") , 22, THEME.prompttext);
|
||||
backBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
|
||||
GuiImage backBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
@ -1172,16 +1172,17 @@ int MenuSettings() {
|
||||
titleTxt.SetText(tr("Custom Paths"));
|
||||
exit = false;
|
||||
for (int i = 0; i <= MAXOPTIONS; i++) options2.SetName(i, NULL);
|
||||
if (Settings.godmode)
|
||||
options2.SetName(0, "%s", tr("Cover Path"));
|
||||
options2.SetName(1, "%s", tr("Discimage Path"));
|
||||
options2.SetName(2, "%s", tr("ThemePath"));
|
||||
options2.SetName(3, "%s", tr("XMLPath"));
|
||||
options2.SetName(4, "%s", tr("Updatepath"));
|
||||
options2.SetName(5, "%s", tr("Cheatcodes Path"));
|
||||
options2.SetName(6, "%s", tr("TXTCheatcodes Path"));
|
||||
options2.SetName(7, "%s", tr("Dol Path"));
|
||||
options2.SetName(8, "%s", tr("Homebrew Apps Path"));
|
||||
// if (Settings.godmode)
|
||||
options2.SetName(0, "%s", tr("3D Cover Path"));
|
||||
options2.SetName(1, "%s", tr("2D Cover Path"));
|
||||
options2.SetName(2, "%s", tr("Discimage Path"));
|
||||
options2.SetName(3, "%s", tr("ThemePath"));
|
||||
options2.SetName(4, "%s", tr("XMLPath"));
|
||||
options2.SetName(5, "%s", tr("Updatepath"));
|
||||
options2.SetName(6, "%s", tr("Cheatcodes Path"));
|
||||
options2.SetName(7, "%s", tr("TXTCheatcodes Path"));
|
||||
options2.SetName(8, "%s", tr("Dol Path"));
|
||||
options2.SetName(9, "%s", tr("Homebrew Apps Path"));
|
||||
for (int i = 0; i <= MAXOPTIONS; i++) options2.SetValue(i, NULL);
|
||||
w.Append(&optionBrowser2);
|
||||
optionBrowser2.SetClickable(true);
|
||||
@ -1197,14 +1198,15 @@ int MenuSettings() {
|
||||
VIDEO_WaitVSync ();
|
||||
|
||||
options2.SetValue(0, "%s", Settings.covers_path);
|
||||
options2.SetValue(1, "%s", Settings.disc_path);
|
||||
options2.SetValue(2, "%s", CFG.theme_path);
|
||||
options2.SetValue(3, "%s", Settings.titlestxt_path);
|
||||
options2.SetValue(4, "%s", Settings.update_path);
|
||||
options2.SetValue(5, "%s", Settings.Cheatcodespath);
|
||||
options2.SetValue(6, "%s", Settings.TxtCheatcodespath);
|
||||
options2.SetValue(7, "%s", Settings.dolpath);
|
||||
options2.SetValue(8, "%s", Settings.homebrewapps_path);
|
||||
options2.SetValue(1, "%s", Settings.covers2d_path);
|
||||
options2.SetValue(2, "%s", Settings.disc_path);
|
||||
options2.SetValue(3, "%s", CFG.theme_path);
|
||||
options2.SetValue(4, "%s", Settings.titlestxt_path);
|
||||
options2.SetValue(5, "%s", Settings.update_path);
|
||||
options2.SetValue(6, "%s", Settings.Cheatcodespath);
|
||||
options2.SetValue(7, "%s", Settings.TxtCheatcodespath);
|
||||
options2.SetValue(8, "%s", Settings.dolpath);
|
||||
options2.SetValue(9, "%s", Settings.homebrewapps_path);
|
||||
|
||||
if (backBtn.GetState() == STATE_CLICKED) {
|
||||
backBtn.ResetState();
|
||||
@ -1249,7 +1251,7 @@ int MenuSettings() {
|
||||
w.Remove(&backBtn);
|
||||
char entered[43] = "";
|
||||
strncpy(entered, Settings.covers_path, sizeof(entered));
|
||||
titleTxt.SetText(tr("Cover Path"));
|
||||
titleTxt.SetText(tr("3D Cover Path"));
|
||||
int result = BrowseDevice(entered);
|
||||
//int result = OnScreenKeyboard(entered,43,0);
|
||||
titleTxt.SetText(tr("Custom Paths"));
|
||||
@ -1270,7 +1272,34 @@ int MenuSettings() {
|
||||
WindowPrompt(tr("Coverpath Change"),tr("Console should be unlocked to modify it."),tr("OK"));
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case 1:
|
||||
if ( Settings.godmode == 1) {
|
||||
w.Remove(&optionBrowser2);
|
||||
w.Remove(&backBtn);
|
||||
char entered[43] = "";
|
||||
strncpy(entered, Settings.covers2d_path, sizeof(entered));
|
||||
titleTxt.SetText(tr("2D Cover Path"));
|
||||
int result = BrowseDevice(entered);
|
||||
//int result = OnScreenKeyboard(entered,43,0);
|
||||
titleTxt.SetText(tr("Custom Paths"));
|
||||
w.Append(&optionBrowser2);
|
||||
w.Append(&backBtn);
|
||||
if ( result == 1 ) {
|
||||
int len = (strlen(entered)-1);
|
||||
if (entered[len] !='/')
|
||||
strncat (entered, "/", 1);
|
||||
strncpy(Settings.covers2d_path, entered, sizeof(Settings.covers2d_path));
|
||||
WindowPrompt(tr("Coverpath Changed"),0,tr("OK"));
|
||||
// if(!isSdInserted()) {
|
||||
if (!isInserted(bootDevice)) {
|
||||
WindowPrompt(tr("No SD-Card inserted!"), tr("Insert an SD-Card to save."), tr("OK"));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
WindowPrompt(tr("Coverpath Change"),tr("Console should be unlocked to modify it."),tr("OK"));
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if ( Settings.godmode == 1) {
|
||||
w.Remove(&optionBrowser2);
|
||||
w.Remove(&backBtn);
|
||||
@ -1297,7 +1326,7 @@ int MenuSettings() {
|
||||
WindowPrompt(tr("Discpath change"),tr("Console should be unlocked to modify it."),tr("OK"));
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
if ( Settings.godmode == 1) {
|
||||
w.Remove(&optionBrowser2);
|
||||
w.Remove(&backBtn);
|
||||
@ -1355,7 +1384,7 @@ int MenuSettings() {
|
||||
WindowPrompt(tr("Themepath change"),tr("Console should be unlocked to modify it."),tr("OK"));
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
if ( Settings.godmode == 1) {
|
||||
w.Remove(&optionBrowser2);
|
||||
w.Remove(&backBtn);
|
||||
@ -1387,7 +1416,7 @@ int MenuSettings() {
|
||||
WindowPrompt(tr("XMLPath change"),tr("Console should be unlocked to modify it."),tr("OK"));
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
if ( Settings.godmode == 1) {
|
||||
w.Remove(&optionBrowser2);
|
||||
w.Remove(&backBtn);
|
||||
@ -1409,7 +1438,7 @@ int MenuSettings() {
|
||||
} else
|
||||
WindowPrompt(0,tr("Console should be unlocked to modify it."),tr("OK"));
|
||||
break;
|
||||
case 5:
|
||||
case 6:
|
||||
if ( Settings.godmode == 1) {
|
||||
w.Remove(&optionBrowser2);
|
||||
w.Remove(&backBtn);
|
||||
@ -1431,7 +1460,7 @@ int MenuSettings() {
|
||||
} else
|
||||
WindowPrompt(0,tr("Console should be unlocked to modify it."),tr("OK"));
|
||||
break;
|
||||
case 6:
|
||||
case 7:
|
||||
if ( Settings.godmode == 1) {
|
||||
w.Remove(&optionBrowser2);
|
||||
w.Remove(&backBtn);
|
||||
@ -1453,7 +1482,7 @@ int MenuSettings() {
|
||||
} else
|
||||
WindowPrompt(0,tr("Console should be unlocked to modify it."),tr("OK"));
|
||||
break;
|
||||
case 7:
|
||||
case 8:
|
||||
if ( Settings.godmode == 1) {
|
||||
w.Remove(&optionBrowser2);
|
||||
w.Remove(&backBtn);
|
||||
@ -1480,7 +1509,7 @@ int MenuSettings() {
|
||||
WindowPrompt(tr("Dolpath change"),tr("Console should be unlocked to modify it."),tr("OK"));
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
case 9:
|
||||
if ( Settings.godmode == 1) {
|
||||
w.Remove(&optionBrowser2);
|
||||
w.Remove(&backBtn);
|
||||
@ -1785,7 +1814,7 @@ int GameSettings(struct discHdr * header) {
|
||||
|
||||
GuiImage settingsbackground(&settingsbg);
|
||||
|
||||
GuiText backBtnTxt(tr("Back") , 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText backBtnTxt(tr("Back") , 22, THEME.prompttext);
|
||||
backBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
|
||||
GuiImage backBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
@ -1799,7 +1828,7 @@ int GameSettings(struct discHdr * header) {
|
||||
GuiButton homo(1,1);
|
||||
homo.SetTrigger(&trigHome);
|
||||
|
||||
GuiText saveBtnTxt(tr("Save"), 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText saveBtnTxt(tr("Save"), 22, THEME.prompttext);
|
||||
saveBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
|
||||
GuiImage saveBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
|
@ -81,7 +81,7 @@ bool MenuOGG() {
|
||||
oggmenubackground.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
oggmenubackground.SetPosition(0, 0);
|
||||
|
||||
GuiText backBtnTxt(tr("Back") , 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText backBtnTxt(tr("Back") , 22, THEME.prompttext);
|
||||
backBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
|
||||
GuiImage backBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
@ -99,7 +99,7 @@ bool MenuOGG() {
|
||||
backBtn.SetTrigger(&trigB);
|
||||
backBtn.SetEffectGrow();
|
||||
|
||||
GuiText defaultBtnTxt(tr("Default") , 22, (GXColor) { THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText defaultBtnTxt(tr("Default") , 22, THEME.prompttext);
|
||||
defaultBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
|
||||
GuiImage defaultBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
@ -363,7 +363,7 @@ int MenuLanguageSelect() {
|
||||
oggmenubackground.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
oggmenubackground.SetPosition(0, 0);
|
||||
|
||||
GuiText backBtnTxt(tr("Back") , 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText backBtnTxt(tr("Back") , 22, THEME.prompttext);
|
||||
backBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
|
||||
GuiImage backBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
@ -381,7 +381,7 @@ int MenuLanguageSelect() {
|
||||
backBtn.SetTrigger(&trigB);
|
||||
backBtn.SetEffectGrow();
|
||||
|
||||
GuiText defaultBtnTxt(tr("Default") , 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText defaultBtnTxt(tr("Default") , 22, THEME.prompttext);
|
||||
defaultBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
|
||||
GuiImage defaultBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
@ -398,7 +398,7 @@ int MenuLanguageSelect() {
|
||||
defaultBtn.SetTrigger(&trigA);
|
||||
defaultBtn.SetEffectGrow();
|
||||
|
||||
GuiText updateBtnTxt(tr("Update Files") , 22, (GXColor) {THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText updateBtnTxt(tr("Update Files") , 22, THEME.prompttext);
|
||||
updateBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
|
||||
GuiImage updateBtnImg(&btnOutline);
|
||||
if (Settings.wsprompt == yes) {
|
||||
|
@ -192,6 +192,7 @@ void CFG_Default(int widescreen) { // -1 = non forced Mode
|
||||
|
||||
if (widescreen == -1) {
|
||||
snprintf(Settings.covers_path, sizeof(Settings.covers_path), "%s/images/", bootDevice); //default image path
|
||||
snprintf(Settings.covers2d_path, sizeof(Settings.covers2d_path), "%s/images/2D/", bootDevice); //default image path
|
||||
snprintf(Settings.disc_path, sizeof(Settings.disc_path), "%s/images/disc/", bootDevice);
|
||||
snprintf(Settings.titlestxt_path, sizeof(Settings.titlestxt_path), "%s/config/", bootDevice);//default path for disc images
|
||||
char * empty = "";
|
||||
@ -205,94 +206,114 @@ void CFG_Default(int widescreen) { // -1 = non forced Mode
|
||||
snprintf(Settings.TxtCheatcodespath, sizeof(Settings.TxtCheatcodespath), "%s/txtcodes/", bootDevice);
|
||||
snprintf(Settings.dolpath, sizeof(Settings.dolpath), "%s/", bootDevice);
|
||||
sprintf(Settings.ogg_path, "notset");
|
||||
}
|
||||
//always set Theme defaults
|
||||
//all alignments are left top here
|
||||
THEME.gamelist_x = 200;
|
||||
THEME.gamelist_y = 49;//40;
|
||||
THEME.gamelist_w = 396;
|
||||
THEME.gamelist_h = 280;
|
||||
THEME.gamegrid_w = 640;
|
||||
THEME.gamegrid_h = 400;
|
||||
THEME.gamegrid_x = 0;
|
||||
THEME.gamegrid_y = 20;
|
||||
THEME.gamecarousel_w = 640;
|
||||
THEME.gamecarousel_h = 400;
|
||||
THEME.gamecarousel_x = 0;
|
||||
THEME.gamecarousel_y = -20;
|
||||
|
||||
THEME.covers_x = 26;
|
||||
THEME.covers_y = 58;
|
||||
|
||||
THEME.show_id = 1;
|
||||
THEME.id_x = 68;
|
||||
THEME.id_y = 305;
|
||||
THEME.show_region = 1;
|
||||
THEME.region_x = 68;
|
||||
THEME.region_y = 30;
|
||||
|
||||
//all alignments are left top here
|
||||
THEME.selection_x = 200;
|
||||
THEME.selection_y = 49;//40;
|
||||
THEME.selection_w = 396;
|
||||
THEME.selection_h = 280;
|
||||
THEME.batteryUnused = 70;
|
||||
THEME.gamegrid_w = 640;
|
||||
THEME.gamegrid_h = 400;
|
||||
THEME.gamegrid_x = 0;
|
||||
THEME.gamegrid_y = 20;
|
||||
THEME.gamecarousel_w = 640;
|
||||
THEME.gamecarousel_h = 400;
|
||||
THEME.gamecarousel_x = 0;
|
||||
THEME.gamecarousel_y = -20;
|
||||
THEME.clock_r = 138;
|
||||
THEME.clock_g = 138;
|
||||
THEME.clock_b = 138;
|
||||
THEME.settingsTxt_r = 0;
|
||||
THEME.settingsTxt_g = 0;
|
||||
THEME.settingsTxt_b = 0;
|
||||
THEME.cover_x = 26;
|
||||
THEME.cover_y = 58;
|
||||
THEME.homebrew_x = 410;
|
||||
THEME.homebrew_y = 405;
|
||||
THEME.showID = 1;
|
||||
// THEME.maxcharacters = 36;
|
||||
THEME.id_x = 68;
|
||||
THEME.id_y = 305;
|
||||
THEME.region_x = 68;
|
||||
THEME.region_y = 30;
|
||||
THEME.power_x = 576;
|
||||
THEME.tooltipAlpha = 255;
|
||||
THEME.power_y = 355;
|
||||
THEME.home_x = 489;//215;
|
||||
THEME.home_y = 371;
|
||||
THEME.setting_x = 64;//-210
|
||||
THEME.setting_y = 371;
|
||||
THEME.showHDD = 1; //default
|
||||
THEME.showGameCnt = 1; //default
|
||||
THEME.showToolTip = 1; //1 means use settings, 0 means force turn off
|
||||
THEME.install_x = 16;//-280
|
||||
THEME.install_y = 355;
|
||||
THEME.showBattery = 1;
|
||||
THEME.showRegion = 1;
|
||||
THEME.hddInfo_x = 0;
|
||||
THEME.hddInfo_y = 400;
|
||||
THEME.hddInfoAlign = CFG_ALIGN_CENTRE;
|
||||
THEME.gameCnt_x = 0;
|
||||
THEME.gameCnt_y = 420;
|
||||
THEME.gameCntAlign = CFG_ALIGN_CENTRE;
|
||||
THEME.battery1_x = 245;
|
||||
THEME.battery1_y = 400;
|
||||
THEME.battery2_x = 335;
|
||||
THEME.battery2_y = 400;
|
||||
THEME.battery3_x = 245;
|
||||
THEME.battery3_y = 425;
|
||||
THEME.battery4_x = 335;
|
||||
THEME.battery4_y = 425;
|
||||
THEME.info_r = 55;
|
||||
THEME.info_g = 190;
|
||||
THEME.info_b = 237;
|
||||
THEME.prompttxt_r = 0;
|
||||
THEME.prompttxt_g = 0;
|
||||
THEME.prompttxt_b = 0;
|
||||
THEME.clock_x = 0;
|
||||
THEME.clock_y = 335;//330;
|
||||
THEME.clockAlign = CFG_ALIGN_CENTRE;
|
||||
THEME.sdcard_x = 160;
|
||||
THEME.sdcard_y = 395;
|
||||
THEME.gameText_r = 0;
|
||||
THEME.gameText_g = 0;
|
||||
THEME.gameText_b = 0;
|
||||
THEME.pagesize = 9;
|
||||
THEME.favorite_x = 4;
|
||||
THEME.favorite_y = 13;
|
||||
THEME.abc_x = 36;
|
||||
THEME.abc_y = 13;
|
||||
THEME.list_x = 100;
|
||||
THEME.list_y = 13;
|
||||
THEME.grid_x = 132;
|
||||
THEME.grid_y = 13;
|
||||
THEME.carousel_x = 164;
|
||||
THEME.carousel_y = 13;
|
||||
THEME.count_x = 68;
|
||||
THEME.count_y = 13;
|
||||
THEME.sortBarOffset = 100;
|
||||
}
|
||||
THEME.sdcard_x = 160;
|
||||
THEME.sdcard_y = 395;
|
||||
THEME.homebrew_x = 410;
|
||||
THEME.homebrew_y = 405;
|
||||
THEME.power_x = 576;
|
||||
THEME.power_y = 355;
|
||||
THEME.home_x = 489;//215;
|
||||
THEME.home_y = 371;
|
||||
THEME.setting_x = 64;//-210
|
||||
THEME.setting_y = 371;
|
||||
THEME.install_x = 16;//-280
|
||||
THEME.install_y = 355;
|
||||
|
||||
THEME.clock = (GXColor) {138, 138, 138, 240};
|
||||
THEME.clock_align = CFG_ALIGN_CENTRE;
|
||||
THEME.clock_x = 0;
|
||||
THEME.clock_y = 335;//330;
|
||||
|
||||
|
||||
THEME.info = (GXColor) {55, 190, 237, 255};
|
||||
THEME.show_hddinfo = 1; //default
|
||||
THEME.hddinfo_align = CFG_ALIGN_CENTRE;
|
||||
THEME.hddinfo_x = 0;
|
||||
THEME.hddinfo_y = 400;
|
||||
THEME.show_gamecount = 1; //default
|
||||
THEME.gamecount_align = CFG_ALIGN_CENTRE;
|
||||
THEME.gamecount_x = 0;
|
||||
THEME.gamecount_y = 420;
|
||||
|
||||
THEME.show_tooltip = 1; //1 means use settings, 0 means force turn off
|
||||
THEME.tooltipAlpha = 255;
|
||||
|
||||
THEME.prompttext = (GXColor) {0, 0, 0, 255};
|
||||
THEME.settingstext = (GXColor) {0, 0, 0, 255};
|
||||
THEME.gametext = (GXColor) {0, 0, 0, 255};
|
||||
|
||||
THEME.pagesize = 9;
|
||||
|
||||
THEME.gamelist_favorite_x = CFG.widescreen ? 288 : 260;
|
||||
THEME.gamelist_favorite_y = 13;
|
||||
THEME.gamelist_search_x = CFG.widescreen ? 320 : 300;
|
||||
THEME.gamelist_search_y = 13;
|
||||
THEME.gamelist_abc_x = CFG.widescreen ? 352 : 340;
|
||||
THEME.gamelist_abc_y = 13;
|
||||
THEME.gamelist_count_x = CFG.widescreen ? 384 : 380;
|
||||
THEME.gamelist_count_y = 13;
|
||||
THEME.gamelist_list_x = CFG.widescreen ? 416 : 420;
|
||||
THEME.gamelist_list_y = 13;
|
||||
THEME.gamelist_grid_x = CFG.widescreen ? 448 : 460;
|
||||
THEME.gamelist_grid_y = 13;
|
||||
THEME.gamelist_carousel_x = CFG.widescreen ? 480 : 500;
|
||||
THEME.gamelist_carousel_y = 13;
|
||||
|
||||
THEME.gamegrid_favorite_x = CFG.widescreen ? 208 : 180;
|
||||
THEME.gamegrid_favorite_y = 13;
|
||||
THEME.gamegrid_search_x = CFG.widescreen ? 240 : 220;
|
||||
THEME.gamegrid_search_y = 13;
|
||||
THEME.gamegrid_abc_x = CFG.widescreen ? 272 : 260;
|
||||
THEME.gamegrid_abc_y = 13;
|
||||
THEME.gamegrid_count_x = CFG.widescreen ? 304 : 300;
|
||||
THEME.gamegrid_count_y = 13;
|
||||
THEME.gamegrid_list_x = CFG.widescreen ? 336 : 340;
|
||||
THEME.gamegrid_list_y = 13;
|
||||
THEME.gamegrid_grid_x = CFG.widescreen ? 368 : 380;
|
||||
THEME.gamegrid_grid_y = 13;
|
||||
THEME.gamegrid_carousel_x = CFG.widescreen ? 400 : 420;
|
||||
THEME.gamegrid_carousel_y = 13;
|
||||
|
||||
THEME.gamecarousel_favorite_x = CFG.widescreen ? 208 : 180;
|
||||
THEME.gamecarousel_favorite_y = 13;
|
||||
THEME.gamecarousel_search_x = CFG.widescreen ? 240 : 220;
|
||||
THEME.gamecarousel_search_y = 13;
|
||||
THEME.gamecarousel_abc_x = CFG.widescreen ? 272 : 260;
|
||||
THEME.gamecarousel_abc_y = 13;
|
||||
THEME.gamecarousel_count_x = CFG.widescreen ? 304 : 300;
|
||||
THEME.gamecarousel_count_y = 13;
|
||||
THEME.gamecarousel_list_x = CFG.widescreen ? 336 : 340;
|
||||
THEME.gamecarousel_list_y = 13;
|
||||
THEME.gamecarousel_grid_x = CFG.widescreen ? 368 : 380;
|
||||
THEME.gamecarousel_grid_y = 13;
|
||||
THEME.gamecarousel_carousel_x = CFG.widescreen ? 400 : 420;
|
||||
THEME.gamecarousel_carousel_y = 13;
|
||||
}
|
||||
|
||||
void Global_Default(void) {
|
||||
@ -301,9 +322,9 @@ void Global_Default(void) {
|
||||
Settings.language = ConsoleLangDefault;
|
||||
Settings.ocarina = off;
|
||||
Settings.hddinfo = hr12;
|
||||
Settings.sinfo = ((THEME.showID) ? GameID : Neither);
|
||||
Settings.sinfo = ((THEME.show_id) ? GameID : Neither);
|
||||
Settings.rumble = RumbleOn;
|
||||
if (THEME.showRegion) {
|
||||
if (THEME.show_region) {
|
||||
Settings.sinfo = ((Settings.sinfo == GameID) ? Both : GameRegion);
|
||||
}
|
||||
Settings.volume = 80;
|
||||
@ -453,6 +474,11 @@ void path_set(char *name, char *val) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (strcmp(name, "cover2d_path") == 0) {
|
||||
strcopy(Settings.covers2d_path, val, sizeof(Settings.covers2d_path));
|
||||
return;
|
||||
}
|
||||
|
||||
if (strcmp(name, "disc_path") == 0) {
|
||||
strcopy(Settings.disc_path, val, sizeof(Settings.disc_path));
|
||||
return;
|
||||
@ -502,324 +528,243 @@ void path_set(char *name, char *val) {
|
||||
|
||||
}
|
||||
|
||||
#define CFG_COORDS2(name) \
|
||||
if (strcmp(cfg_name, #name "_coords") == 0) { \
|
||||
short x,y; \
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) { \
|
||||
THEME.name##_x = x; \
|
||||
THEME.name##_y = y; \
|
||||
} \
|
||||
}
|
||||
#define CFG_COORDS4(name) \
|
||||
if (strcmp(cfg_name, #name "_coords") == 0) { \
|
||||
short x,y,w,h; \
|
||||
if (sscanf(val, "%hd,%hd,%hd,%hd", &x, &y, &w, &h) == 4) { \
|
||||
THEME.name##_x = x; \
|
||||
THEME.name##_y = y; \
|
||||
THEME.name##_w = w; \
|
||||
THEME.name##_h = h; \
|
||||
} \
|
||||
}
|
||||
#define CFG_COLOR(name) \
|
||||
if (strcmp(cfg_name, #name "_color") == 0) { \
|
||||
short r,g,b,a; \
|
||||
int c = sscanf(val, "%hd,%hd,%hd,%hd", &r, &g, &b, &a); \
|
||||
if(c >= 3) { \
|
||||
THEME.name.r = r; \
|
||||
THEME.name.g = g; \
|
||||
THEME.name.b = b; \
|
||||
if(c >= 4) \
|
||||
THEME.name.a = a; \
|
||||
} \
|
||||
}
|
||||
#define CFG_VAL(name) \
|
||||
if (strcmp(cfg_name, #name) == 0) { \
|
||||
short v; \
|
||||
if (sscanf(val, "%hd", &v) == 1) { \
|
||||
THEME.name = v; \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
|
||||
#define CFG_BOOL(name) if(cfg_bool(#name, &THEME.name));
|
||||
|
||||
#define CFG_ALIGN(name) if(cfg_map_auto(#name "_align", map_alignment, &THEME.name##_align));
|
||||
|
||||
#define OLD_FAV_ICON 1
|
||||
#define OLD_ABC_ICON 2
|
||||
#define OLD_COUNT_ICON 4
|
||||
#define OLD_LIST_ICON 8
|
||||
#define OLD_GRID_ICON 16
|
||||
#define OLD_CAROUSEL_ICON 32
|
||||
short WorkAroundIconSet=0;
|
||||
short WorkAroundBarOffset=100;
|
||||
|
||||
void theme_set(char *name, char *val) {
|
||||
cfg_name = name;
|
||||
cfg_val = val;
|
||||
cfg_name = name;
|
||||
cfg_val = val;
|
||||
|
||||
if (strcmp(cfg_name, "gamelist_coords") == 0) {
|
||||
int x,y,w,h;
|
||||
if (sscanf(val, "%d,%d,%d,%d", &x, &y, &w, &h) == 4) {
|
||||
THEME.selection_x = x - (x % 4);
|
||||
THEME.selection_y = y;
|
||||
THEME.selection_w = w;
|
||||
THEME.selection_h = h;
|
||||
}
|
||||
}
|
||||
CFG_COORDS4(gamelist)
|
||||
else CFG_COORDS4(gamegrid)
|
||||
else CFG_COORDS4(gamecarousel)
|
||||
|
||||
else CFG_COORDS2(covers)
|
||||
|
||||
if (strcmp(cfg_name, "gamegrid_coords") == 0) {
|
||||
int x,y,w,h;
|
||||
if (sscanf(val, "%d,%d,%d,%d", &x, &y, &w, &h) == 4) {
|
||||
THEME.gamegrid_x = x - (x % 4);
|
||||
THEME.gamegrid_y = y;
|
||||
THEME.gamegrid_w = w;
|
||||
THEME.gamegrid_h = h;
|
||||
}
|
||||
}
|
||||
else CFG_BOOL(show_id)
|
||||
else CFG_COORDS2(id)
|
||||
|
||||
if (strcmp(cfg_name, "gamecarousel_coords") == 0) {
|
||||
int x,y,w,h;
|
||||
if (sscanf(val, "%d,%d,%d,%d", &x, &y, &w, &h) == 4) {
|
||||
THEME.gamecarousel_x = x - (x % 4);
|
||||
THEME.gamecarousel_y = y;
|
||||
THEME.gamecarousel_w = w;
|
||||
THEME.gamecarousel_h = h;
|
||||
}
|
||||
}
|
||||
else CFG_BOOL(show_region)
|
||||
else CFG_COORDS2(region)
|
||||
|
||||
else if (strcmp(cfg_name, "covers_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.cover_x = x - (x % 4);
|
||||
THEME.cover_y = y;
|
||||
}
|
||||
}
|
||||
else CFG_COORDS2(sdcard)
|
||||
else CFG_COORDS2(homebrew)
|
||||
else CFG_COORDS2(power)
|
||||
else CFG_COORDS2(home)
|
||||
else CFG_COORDS2(setting)
|
||||
else CFG_COORDS2(install)
|
||||
|
||||
else CFG_COORDS2(clock)
|
||||
else CFG_ALIGN(clock)
|
||||
else CFG_COLOR(clock)
|
||||
|
||||
else if (strcmp(cfg_name, "id_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.id_x = x - (x % 4);
|
||||
THEME.id_y = y;
|
||||
}
|
||||
}
|
||||
else CFG_COLOR(info)
|
||||
else CFG_BOOL(show_hddinfo)
|
||||
else CFG_ALIGN(hddinfo)
|
||||
else CFG_COORDS2(hddinfo)
|
||||
|
||||
else if (strcmp(cfg_name, "hddinfo_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.hddInfo_x = x - (x % 4);
|
||||
THEME.hddInfo_y = y;
|
||||
}
|
||||
}
|
||||
else CFG_BOOL(show_gamecount)
|
||||
else CFG_ALIGN(gamecount)
|
||||
else CFG_COORDS2(gamecount)
|
||||
|
||||
else if (strcmp(cfg_name, "gamecount_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.gameCnt_x = x - (x % 4);
|
||||
THEME.gameCnt_y = y;
|
||||
}
|
||||
}
|
||||
else CFG_BOOL(show_tooltip)
|
||||
else CFG_VAL(tooltipAlpha)
|
||||
|
||||
else if (strcmp(cfg_name, "region_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.region_x = x - (x % 4);
|
||||
THEME.region_y = y;
|
||||
}
|
||||
}
|
||||
else CFG_COLOR(prompttext)
|
||||
else CFG_COLOR(settingstext)
|
||||
else CFG_COLOR(gametext)
|
||||
|
||||
else if (strcmp(cfg_name, "homebrew_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.homebrew_x = x - (x % 4);
|
||||
THEME.homebrew_y = y;
|
||||
}
|
||||
}
|
||||
else CFG_VAL(pagesize)
|
||||
|
||||
else if (strcmp(cfg_name, "power_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.power_x = x - (x % 4);
|
||||
THEME.power_y = y;
|
||||
}
|
||||
}
|
||||
else CFG_COORDS2(gamelist_favorite)
|
||||
else CFG_COORDS2(gamegrid_favorite)
|
||||
else CFG_COORDS2(gamecarousel_favorite)
|
||||
|
||||
else if (strcmp(cfg_name, "home_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.home_x = x - (x % 4);
|
||||
THEME.home_y = y;
|
||||
}
|
||||
}
|
||||
else CFG_COORDS2(gamelist_search)
|
||||
else CFG_COORDS2(gamegrid_search)
|
||||
else CFG_COORDS2(gamecarousel_search)
|
||||
|
||||
else CFG_COORDS2(gamelist_abc)
|
||||
else CFG_COORDS2(gamegrid_abc)
|
||||
else CFG_COORDS2(gamecarousel_abc)
|
||||
|
||||
else if (strcmp(cfg_name, "setting_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.setting_x = x - (x % 4);
|
||||
THEME.setting_y = y;
|
||||
}
|
||||
}
|
||||
else CFG_COORDS2(gamelist_count)
|
||||
else CFG_COORDS2(gamegrid_count)
|
||||
else CFG_COORDS2(gamecarousel_count)
|
||||
|
||||
else if (strcmp(cfg_name, "install_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.install_x = x - (x % 4);
|
||||
THEME.install_y = y;
|
||||
}
|
||||
}
|
||||
else CFG_COORDS2(gamelist_list)
|
||||
else CFG_COORDS2(gamegrid_list)
|
||||
else CFG_COORDS2(gamecarousel_list)
|
||||
|
||||
else if (strcmp(cfg_name, "battery1_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.battery1_x = x - (x % 4);
|
||||
THEME.battery1_y = y;
|
||||
}
|
||||
}
|
||||
else CFG_COORDS2(gamelist_grid)
|
||||
else CFG_COORDS2(gamegrid_grid)
|
||||
else CFG_COORDS2(gamecarousel_grid)
|
||||
|
||||
else if (strcmp(cfg_name, "battery2_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.battery2_x = x - (x % 4);
|
||||
THEME.battery2_y = y;
|
||||
}
|
||||
}
|
||||
else CFG_COORDS2(gamelist_carousel)
|
||||
else CFG_COORDS2(gamegrid_carousel)
|
||||
else CFG_COORDS2(gamecarousel_carousel)
|
||||
|
||||
else if (strcmp(cfg_name, "battery3_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.battery3_x = x - (x % 4);
|
||||
THEME.battery3_y = y;
|
||||
}
|
||||
}
|
||||
//**********************************
|
||||
// Workaround for old Themes
|
||||
//**********************************
|
||||
else if (strcmp(cfg_name, "favorite_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
if(!CFG.widescreen) x-=20;
|
||||
// old themes have no search_coords
|
||||
// set the searchIcon to the Position of the favIcon
|
||||
THEME.gamelist_search_x = x;
|
||||
THEME.gamegrid_search_x = THEME.gamecarousel_search_x = x-WorkAroundBarOffset;
|
||||
THEME.gamelist_search_y = THEME.gamegrid_search_y = THEME.gamecarousel_search_y = y;
|
||||
// place the favIcon to the left side of the searchIcon
|
||||
if(!CFG.widescreen) x-= CFG.widescreen ? 32 : 40;
|
||||
THEME.gamelist_favorite_x = x;
|
||||
THEME.gamegrid_favorite_x = THEME.gamecarousel_favorite_x = x-WorkAroundBarOffset;
|
||||
THEME.gamelist_favorite_y = THEME.gamegrid_favorite_y = THEME.gamecarousel_favorite_y = y;
|
||||
WorkAroundIconSet |= OLD_FAV_ICON;
|
||||
}
|
||||
}
|
||||
else if (strcmp(cfg_name, "abc_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
if(!CFG.widescreen) x-=12;
|
||||
THEME.gamelist_abc_x = x;
|
||||
THEME.gamegrid_abc_x = THEME.gamecarousel_abc_x = x-WorkAroundBarOffset;
|
||||
THEME.gamelist_abc_y = THEME.gamegrid_abc_y = THEME.gamecarousel_abc_y = y;
|
||||
WorkAroundIconSet |= OLD_ABC_ICON;
|
||||
}
|
||||
}
|
||||
else if (strcmp(cfg_name, "count_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
if(!CFG.widescreen) x-=4;
|
||||
THEME.gamelist_count_x = x;
|
||||
THEME.gamegrid_count_x = THEME.gamecarousel_count_x = x-WorkAroundBarOffset;
|
||||
THEME.gamelist_count_y = THEME.gamegrid_count_y = THEME.gamecarousel_count_y = y;
|
||||
WorkAroundIconSet |= OLD_COUNT_ICON;
|
||||
}
|
||||
}
|
||||
else if (strcmp(cfg_name, "list_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
if(!CFG.widescreen) x+=4;
|
||||
THEME.gamelist_list_x = x;
|
||||
THEME.gamegrid_list_x = THEME.gamecarousel_list_x = x-WorkAroundBarOffset;
|
||||
THEME.gamelist_list_y = THEME.gamegrid_list_y = THEME.gamecarousel_list_y = y;
|
||||
WorkAroundIconSet |= OLD_LIST_ICON;
|
||||
}
|
||||
}
|
||||
else if (strcmp(cfg_name, "grid_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
if(!CFG.widescreen) x+=12;
|
||||
THEME.gamelist_grid_x = x;
|
||||
THEME.gamegrid_grid_x = THEME.gamecarousel_grid_x = x-WorkAroundBarOffset;
|
||||
THEME.gamelist_grid_y = THEME.gamegrid_grid_y = THEME.gamecarousel_grid_y = y;
|
||||
WorkAroundIconSet |= OLD_GRID_ICON;
|
||||
}
|
||||
}
|
||||
else if (strcmp(cfg_name, "carousel_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
if(!CFG.widescreen) x+=20;
|
||||
THEME.gamelist_carousel_x = x;
|
||||
THEME.gamegrid_carousel_x = THEME.gamecarousel_carousel_x = x-WorkAroundBarOffset;
|
||||
THEME.gamelist_carousel_y = THEME.gamegrid_carousel_y = THEME.gamecarousel_carousel_y = y;
|
||||
WorkAroundIconSet |= OLD_CAROUSEL_ICON;
|
||||
}
|
||||
}
|
||||
|
||||
else if (strcmp(cfg_name, "battery4_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.battery4_x = x - (x % 4);
|
||||
THEME.battery4_y = y;
|
||||
}
|
||||
}
|
||||
|
||||
else if (strcmp(cfg_name, "clock_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.clock_x = x - (x % 4);
|
||||
THEME.clock_y = y;
|
||||
}
|
||||
}
|
||||
|
||||
else if (strcmp(cfg_name, "sdcard_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.sdcard_x = x - (x % 4);
|
||||
THEME.sdcard_y = y;
|
||||
}
|
||||
}
|
||||
|
||||
else if (strcmp(cfg_name, "favorite_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.favorite_x = x - (x % 4);
|
||||
THEME.favorite_y = y;
|
||||
}
|
||||
}
|
||||
|
||||
else if (strcmp(cfg_name, "abc_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.abc_x = x - (x % 4);
|
||||
THEME.abc_y = y;
|
||||
}
|
||||
}
|
||||
|
||||
else if (strcmp(cfg_name, "count_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.count_x = x - (x % 4);
|
||||
THEME.count_y = y;
|
||||
}
|
||||
}
|
||||
|
||||
else if (strcmp(cfg_name, "carousel_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.carousel_x = x - (x % 4);
|
||||
THEME.carousel_y = y;
|
||||
}
|
||||
}
|
||||
|
||||
else if (strcmp(cfg_name, "grid_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.grid_x = x - (x % 4);
|
||||
THEME.grid_y = y;
|
||||
}
|
||||
}
|
||||
|
||||
else if (strcmp(cfg_name, "list_coords") == 0) {
|
||||
short x,y;
|
||||
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
|
||||
THEME.list_x = x - (x % 4);
|
||||
THEME.list_y = y;
|
||||
}
|
||||
}
|
||||
|
||||
else if (strcmp(cfg_name, "sortBarOffset") == 0) {
|
||||
short x;
|
||||
if (sscanf(val, "%hd", &x) == 1) {
|
||||
THEME.sortBarOffset = x;
|
||||
}
|
||||
}
|
||||
|
||||
else if (strcmp(cfg_name, "info_color") == 0) {
|
||||
short x,y,z;
|
||||
if (sscanf(val, "%hd,%hd, %hd", &x, &y, &z) == 3) {
|
||||
THEME.info_r = x;
|
||||
THEME.info_g = y;
|
||||
THEME.info_b = z;
|
||||
}
|
||||
}
|
||||
|
||||
else if (strcmp(cfg_name, "gametext_color") == 0) {
|
||||
short x,y,z;
|
||||
if (sscanf(val, "%hd,%hd, %hd", &x, &y, &z) == 3) {
|
||||
THEME.gameText_r = x;
|
||||
THEME.gameText_g = y;
|
||||
THEME.gameText_b = z;
|
||||
}
|
||||
}
|
||||
|
||||
else if (strcmp(cfg_name, "prompttext_color") == 0) {
|
||||
short x,y,z;
|
||||
if (sscanf(val, "%hd,%hd, %hd", &x, &y, &z) == 3) {
|
||||
THEME.prompttxt_r = x;
|
||||
THEME.prompttxt_g = y;
|
||||
THEME.prompttxt_b = z;
|
||||
}
|
||||
}
|
||||
|
||||
else if (strcmp(cfg_name, "clock_color") == 0) {
|
||||
short x,y,z;
|
||||
if (sscanf(val, "%hd,%hd, %hd", &x, &y, &z) == 3) {
|
||||
THEME.clock_r = x;
|
||||
THEME.clock_g = y;
|
||||
THEME.clock_b = z;
|
||||
}
|
||||
}
|
||||
|
||||
else if (strcmp(cfg_name, "settingstext_color") == 0) {
|
||||
short x,y,z;
|
||||
if (sscanf(val, "%hd,%hd, %hd", &x, &y, &z) == 3) {
|
||||
THEME.settingsTxt_r = x;
|
||||
THEME.settingsTxt_g = y;
|
||||
THEME.settingsTxt_b = z;
|
||||
}
|
||||
}
|
||||
|
||||
else if (strcmp(cfg_name, "pagesize") == 0) {
|
||||
short x;
|
||||
if (sscanf(val, "%hd", &x) == 1) {
|
||||
THEME.pagesize = x;
|
||||
}
|
||||
}
|
||||
|
||||
else if (strcmp(cfg_name, "batteryUnused") == 0) {
|
||||
short x;
|
||||
if (sscanf(val, "%hd", &x) == 1) {
|
||||
THEME.batteryUnused = x;
|
||||
}
|
||||
} else if (strcmp(cfg_name, "tooltipAlpha") == 0) {
|
||||
short x;
|
||||
if (sscanf(val, "%hd", &x) == 1) {
|
||||
THEME.tooltipAlpha = x;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
else if (strcmp(cfg_name, "maxcharacters") == 0) {
|
||||
short x;
|
||||
if (sscanf(val, "%hd", &x) == 1) {
|
||||
THEME.maxcharacters = x;
|
||||
}
|
||||
}
|
||||
*/
|
||||
else if (strcmp(cfg_name, "sortBarOffset") == 0) {
|
||||
short o;
|
||||
if (sscanf(val, "%hd", &o) == 1) {
|
||||
if(WorkAroundIconSet & OLD_FAV_ICON)
|
||||
{
|
||||
THEME.gamegrid_favorite_x += WorkAroundBarOffset - o;
|
||||
THEME.gamecarousel_favorite_x += WorkAroundBarOffset - o;
|
||||
THEME.gamegrid_search_x += WorkAroundBarOffset - o;
|
||||
THEME.gamecarousel_search_x += WorkAroundBarOffset - o;
|
||||
}
|
||||
if(WorkAroundIconSet & OLD_ABC_ICON)
|
||||
{
|
||||
THEME.gamegrid_abc_x += WorkAroundBarOffset - o;
|
||||
THEME.gamecarousel_abc_x += WorkAroundBarOffset - o;
|
||||
}
|
||||
if(WorkAroundIconSet & OLD_COUNT_ICON)
|
||||
{
|
||||
THEME.gamegrid_count_x += WorkAroundBarOffset - o;
|
||||
THEME.gamecarousel_count_x += WorkAroundBarOffset - o;
|
||||
}
|
||||
if(WorkAroundIconSet & OLD_LIST_ICON)
|
||||
{
|
||||
THEME.gamegrid_list_x += WorkAroundBarOffset - o;
|
||||
THEME.gamecarousel_list_x += WorkAroundBarOffset - o;
|
||||
}
|
||||
if(WorkAroundIconSet & OLD_GRID_ICON)
|
||||
{
|
||||
THEME.gamegrid_grid_x += WorkAroundBarOffset - o;
|
||||
THEME.gamecarousel_grid_x += WorkAroundBarOffset - o;
|
||||
}
|
||||
if(WorkAroundIconSet & OLD_CAROUSEL_ICON)
|
||||
{
|
||||
THEME.gamegrid_carousel_x += WorkAroundBarOffset - o;
|
||||
THEME.gamecarousel_carousel_x += WorkAroundBarOffset - o;
|
||||
}
|
||||
WorkAroundBarOffset = o;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
cfg_bool("show_id", &THEME.showID);
|
||||
cfg_bool("show_tooltip", &THEME.showToolTip);
|
||||
cfg_bool("show_hddinfo", &THEME.showHDD);
|
||||
cfg_bool("show_gamecount", &THEME.showGameCnt);
|
||||
cfg_bool("show_region", &THEME.showRegion);
|
||||
cfg_bool("show_battery", &THEME.showBattery);
|
||||
cfg_map_auto("hddinfo_align", map_alignment, &THEME.hddInfoAlign);
|
||||
cfg_map_auto("gamecount_align", map_alignment, &THEME.gameCntAlign);
|
||||
cfg_map_auto("clock_align", map_alignment, &THEME.clockAlign);
|
||||
|
||||
/*
|
||||
else if (strcmp(cfg_name, "entry_lines") == 0) {
|
||||
int x;
|
||||
if (sscanf(val, "%d", &x) == 1) {
|
||||
ENTRIES_PER_PAGE = x;
|
||||
}
|
||||
}
|
||||
|
||||
else if (strcmp(cfg_name, "max_characters") == 0) {
|
||||
int x;
|
||||
if (sscanf(val, "%d", &x) == 1) {
|
||||
MAX_CHARACTERS = x;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
void global_cfg_set(char *name, char *val) {
|
||||
@ -1206,6 +1151,7 @@ bool cfg_save_global() { // save global settings
|
||||
fprintf(f, "wsprompt = %d\n", Settings.wsprompt);
|
||||
fprintf(f, "parentalcontrol = %d\n ", Settings.parentalcontrol);
|
||||
fprintf(f, "cover_path = %s\n ", Settings.covers_path);
|
||||
fprintf(f, "cover2d_path = %s\n ", Settings.covers2d_path);
|
||||
if (CFG.widescreen) {
|
||||
fprintf(f, "wtheme_path = %s\n ", CFG.theme_path);
|
||||
} else {
|
||||
@ -1559,9 +1505,9 @@ bool cfg_load_global() {
|
||||
Settings.keyset = us;
|
||||
Settings.hddinfo = hr12;
|
||||
Settings.gameDisplay = list;
|
||||
Settings.sinfo = ((THEME.showID) ? GameID : Neither);
|
||||
Settings.sinfo = ((THEME.show_id) ? GameID : Neither);
|
||||
Settings.rumble = RumbleOn;
|
||||
if (THEME.showRegion) {
|
||||
if (THEME.show_region) {
|
||||
Settings.sinfo = ((Settings.sinfo == GameID) ? Both : GameRegion);
|
||||
}
|
||||
Settings.volume = 80;
|
||||
@ -1655,7 +1601,8 @@ void CFG_Load(void) {
|
||||
cfg_parsefile(pathname, &widescreen_set); //first set widescreen
|
||||
cfg_parsefile(pathname, &path_set); //then set config and layout options
|
||||
|
||||
snprintf(pathname, sizeof(pathname), "%sGXtheme.cfg", CFG.theme_path);
|
||||
WorkAroundIconSet=0; WorkAroundBarOffset=100; // set Workaroundstuff to defaults
|
||||
snprintf(pathname, sizeof(pathname), "%sGXtheme.cfg", CFG.theme_path);
|
||||
cfg_parsefile(pathname, &theme_set); //finally set theme information
|
||||
|
||||
// set GUI language, use Wii's language setting if language is set to default
|
||||
|
@ -50,96 +50,131 @@ extern "C" {
|
||||
};
|
||||
|
||||
|
||||
struct THEME {
|
||||
int selection_x;
|
||||
int selection_y;
|
||||
int selection_w;
|
||||
int selection_h;
|
||||
int gamegrid_x;
|
||||
int gamegrid_y;
|
||||
int gamegrid_w;
|
||||
int gamegrid_h;
|
||||
int tooltipAlpha;
|
||||
int gamecarousel_x;
|
||||
int gamecarousel_y;
|
||||
int gamecarousel_w;
|
||||
int gamecarousel_h;
|
||||
short cover_x;
|
||||
short cover_y;
|
||||
short showID;
|
||||
// short maxcharacters;
|
||||
short batteryUnused;
|
||||
short homebrew_x;
|
||||
short homebrew_y;
|
||||
short id_x;
|
||||
short id_y;
|
||||
short region_x;
|
||||
short region_y;
|
||||
short power_x;
|
||||
short power_y;
|
||||
short home_x;
|
||||
short home_y;
|
||||
short battery1_x;
|
||||
short battery2_x;
|
||||
short battery3_x;
|
||||
short battery4_x;
|
||||
short battery1_y;
|
||||
short battery2_y;
|
||||
short battery3_y;
|
||||
short battery4_y;
|
||||
short favorite_x;
|
||||
short favorite_y;
|
||||
short abc_x;
|
||||
short abc_y;
|
||||
short list_x;
|
||||
short list_y;
|
||||
short grid_x;
|
||||
short grid_y;
|
||||
short carousel_x;
|
||||
short carousel_y;
|
||||
short count_x;
|
||||
short count_y;
|
||||
short sortBarOffset;
|
||||
// short showPower;
|
||||
// short showHome;
|
||||
short setting_x;
|
||||
short setting_y;
|
||||
short install_x;
|
||||
short install_y;
|
||||
short showHDD;
|
||||
short hddInfoAlign;
|
||||
short hddInfo_x;
|
||||
short hddInfo_y;
|
||||
short showGameCnt;
|
||||
short gameCntAlign;
|
||||
short gameCnt_x;
|
||||
short gameCnt_y;
|
||||
short showRegion;
|
||||
short showBattery;
|
||||
short showToolTip;
|
||||
//color
|
||||
short info_r;
|
||||
short info_g;
|
||||
short info_b;
|
||||
short prompttxt_r;
|
||||
short prompttxt_g;
|
||||
short prompttxt_b;
|
||||
short settingsTxt_r;
|
||||
short settingsTxt_g;
|
||||
short settingsTxt_b;
|
||||
short clock_r;
|
||||
short clock_g;
|
||||
short clock_b;
|
||||
short clock_x;
|
||||
short clock_y;
|
||||
short clockAlign;
|
||||
short sdcard_x;
|
||||
short sdcard_y;
|
||||
short gameText_r;
|
||||
short gameText_g;
|
||||
short gameText_b;
|
||||
short pagesize;
|
||||
};
|
||||
struct THEME {
|
||||
short gamelist_x;
|
||||
short gamelist_y;
|
||||
short gamelist_w;
|
||||
short gamelist_h;
|
||||
short gamegrid_x;
|
||||
short gamegrid_y;
|
||||
short gamegrid_w;
|
||||
short gamegrid_h;
|
||||
short gamecarousel_x;
|
||||
short gamecarousel_y;
|
||||
short gamecarousel_w;
|
||||
short gamecarousel_h;
|
||||
|
||||
short covers_x;
|
||||
short covers_y;
|
||||
|
||||
short show_id;
|
||||
short id_x;
|
||||
short id_y;
|
||||
short show_region;
|
||||
short region_x;
|
||||
short region_y;
|
||||
|
||||
short sdcard_x;
|
||||
short sdcard_y;
|
||||
short homebrew_x;
|
||||
short homebrew_y;
|
||||
short power_x;
|
||||
short power_y;
|
||||
short home_x;
|
||||
short home_y;
|
||||
short setting_x;
|
||||
short setting_y;
|
||||
short install_x;
|
||||
short install_y;
|
||||
GXColor clock;
|
||||
short clock_align;
|
||||
short clock_x;
|
||||
short clock_y;
|
||||
|
||||
GXColor info;
|
||||
short show_hddinfo;
|
||||
short hddinfo_align;
|
||||
short hddinfo_x;
|
||||
short hddinfo_y;
|
||||
|
||||
short show_gamecount;
|
||||
short gamecount_align;
|
||||
short gamecount_x;
|
||||
short gamecount_y;
|
||||
|
||||
short show_tooltip;
|
||||
int tooltipAlpha;
|
||||
|
||||
GXColor prompttext;
|
||||
GXColor settingstext;
|
||||
GXColor gametext;
|
||||
short pagesize;
|
||||
|
||||
// Toolbar Icons in GameList
|
||||
/*
|
||||
short favorite_x;
|
||||
short favorite_y;
|
||||
short search_x;
|
||||
short search_y;
|
||||
short abc_x;
|
||||
short abc_y;
|
||||
short count_x;
|
||||
short count_y;
|
||||
short list_x;
|
||||
short list_y;
|
||||
short grid_x;
|
||||
short grid_y;
|
||||
short carousel_x;
|
||||
short carousel_y;
|
||||
short sortBarOffset;
|
||||
*/
|
||||
// Toolbar Icons in GameList
|
||||
short gamelist_favorite_x;
|
||||
short gamelist_favorite_y;
|
||||
short gamelist_search_x;
|
||||
short gamelist_search_y;
|
||||
short gamelist_abc_x;
|
||||
short gamelist_abc_y;
|
||||
short gamelist_count_x;
|
||||
short gamelist_count_y;
|
||||
short gamelist_list_x;
|
||||
short gamelist_list_y;
|
||||
short gamelist_grid_x;
|
||||
short gamelist_grid_y;
|
||||
short gamelist_carousel_x;
|
||||
short gamelist_carousel_y;
|
||||
// Toolbar Icons in GameGrid
|
||||
short gamegrid_favorite_x;
|
||||
short gamegrid_favorite_y;
|
||||
short gamegrid_search_x;
|
||||
short gamegrid_search_y;
|
||||
short gamegrid_abc_x;
|
||||
short gamegrid_abc_y;
|
||||
short gamegrid_count_x;
|
||||
short gamegrid_count_y;
|
||||
short gamegrid_list_x;
|
||||
short gamegrid_list_y;
|
||||
short gamegrid_grid_x;
|
||||
short gamegrid_grid_y;
|
||||
short gamegrid_carousel_x;
|
||||
short gamegrid_carousel_y;
|
||||
// Toolbar Icons in GameCarousel
|
||||
short gamecarousel_favorite_x;
|
||||
short gamecarousel_favorite_y;
|
||||
short gamecarousel_search_x;
|
||||
short gamecarousel_search_y;
|
||||
short gamecarousel_abc_x;
|
||||
short gamecarousel_abc_y;
|
||||
short gamecarousel_count_x;
|
||||
short gamecarousel_count_y;
|
||||
short gamecarousel_list_x;
|
||||
short gamecarousel_list_y;
|
||||
short gamecarousel_grid_x;
|
||||
short gamecarousel_grid_y;
|
||||
short gamecarousel_carousel_x;
|
||||
short gamecarousel_carousel_y;
|
||||
|
||||
};
|
||||
|
||||
extern struct CFG CFG;
|
||||
extern struct THEME THEME;
|
||||
@ -341,7 +376,8 @@ extern "C" {
|
||||
u8 patchcountrystrings;
|
||||
u8 screensaver;
|
||||
short godmode;
|
||||
char covers_path[100];
|
||||
char covers_path[100];
|
||||
char covers2d_path[100];
|
||||
char theme_path[100];
|
||||
char wtheme_path[100];
|
||||
char disc_path[100];
|
||||
|
@ -1,6 +1,8 @@
|
||||
#ifndef _DISC_H_
|
||||
#define _DISC_H_
|
||||
|
||||
#include <gccore.h> /* for define ATTRIBUTE_PACKED */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
@ -3,12 +3,44 @@
|
||||
#include "settings/cfg.h"
|
||||
#include "usbloader/wbfs.h"
|
||||
#include "main.h"
|
||||
#include <wctype.h>
|
||||
#include "getentries.h"
|
||||
#include <algorithm>
|
||||
#include <vector>
|
||||
|
||||
|
||||
struct discHdr * gameList=NULL;
|
||||
s32 gameSelected=0, gameStart=0;
|
||||
u32 gameCnt=0;
|
||||
wchar_t *gameFilter=NULL;
|
||||
wchar_t *gameFilterNextList=NULL;
|
||||
wchar_t *gameFilterPrev=NULL;
|
||||
|
||||
/****************************************************************************
|
||||
* wcsdup based on new wchar_t [...]
|
||||
***************************************************************************/
|
||||
wchar_t *wcsdup(const wchar_t *src)
|
||||
{
|
||||
int len = wcslen(src)+1;
|
||||
wchar_t *dst = new wchar_t[len];
|
||||
if(dst) wcscpy(dst, src);
|
||||
return dst;
|
||||
}
|
||||
inline int wcsnicmp(const wchar_t *s1, const wchar_t *s2, int len)
|
||||
{
|
||||
if (len <= 0)
|
||||
return (0);
|
||||
do
|
||||
{
|
||||
int r = towupper(*s1) - towupper(*s2++);
|
||||
if (r) return r;
|
||||
if (*s1++ == 0)
|
||||
break;
|
||||
} while (--len != 0);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
struct discHdr * gameList;
|
||||
u32 gameCnt;
|
||||
s32 gameSelected, gameStart;
|
||||
|
||||
/****************************************************************************
|
||||
* EntryCmp
|
||||
@ -52,17 +84,158 @@ s32 __Menu_EntryCmpCount(const void *a, const void *b) {
|
||||
|
||||
return ret;
|
||||
}
|
||||
/****************************************************************************
|
||||
* Get PrevFilter
|
||||
***************************************************************************/
|
||||
|
||||
int __Menu_GetPrevFilter(int t, wchar_t* gameFilter, u32 gameFiltered, wchar_t **PgameFilterPrev)
|
||||
{
|
||||
|
||||
std::vector<wchar_t *> nameList;
|
||||
|
||||
struct discHdr *buffer = NULL;
|
||||
u32 cnt, len, i;
|
||||
s32 ret;
|
||||
|
||||
wchar_t *new_gameFilterPrev = wcsdup(gameFilter);
|
||||
|
||||
|
||||
/* Get list length */
|
||||
ret = WBFS_GetCount(&cnt);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
/* Buffer length */
|
||||
len = sizeof(struct discHdr) * cnt;
|
||||
|
||||
/* Allocate memory */
|
||||
buffer = (struct discHdr *)memalign(32, len);
|
||||
if (!buffer)
|
||||
return -1;
|
||||
|
||||
/* Clear buffer */
|
||||
memset(buffer, 0, len);
|
||||
|
||||
/* Get header list */
|
||||
ret = WBFS_GetHeaders(buffer, cnt, sizeof(struct discHdr));
|
||||
if (ret < 0) {
|
||||
if (buffer) free(buffer);
|
||||
return ret;
|
||||
}
|
||||
/* Fill nameList */
|
||||
for (i = 0; i < cnt; i++)
|
||||
{
|
||||
struct discHdr *header = &buffer[i];
|
||||
|
||||
/* Filter Favorite */
|
||||
if (Settings.fave && t==0)
|
||||
{
|
||||
struct Game_NUM* game_num = CFG_get_game_num(header->id);
|
||||
if (!game_num || game_num->favorite==0)
|
||||
continue;
|
||||
}
|
||||
/* Filter Pparental */
|
||||
if (Settings.parentalcontrol && !Settings.godmode && t==0)
|
||||
if(get_block(header) >= Settings.parentalcontrol)
|
||||
continue;
|
||||
|
||||
wchar_t *wname = FreeTypeGX::charToWideChar(get_title(header));
|
||||
if(wname) nameList.push_back(wname);
|
||||
}
|
||||
|
||||
/* delete buffer */
|
||||
if(buffer) free(buffer);
|
||||
|
||||
/* Find Prev-Filter */
|
||||
len = wcslen(new_gameFilterPrev);
|
||||
while(len)
|
||||
{
|
||||
cnt = 0;
|
||||
new_gameFilterPrev[--len] = 0;
|
||||
for(std::vector<wchar_t *>::iterator iter = nameList.begin(); iter < nameList.end(); iter++)
|
||||
{
|
||||
if(!wcsncmp(*iter, new_gameFilterPrev, len))
|
||||
cnt++;
|
||||
}
|
||||
if(cnt > gameFiltered)
|
||||
break;
|
||||
}
|
||||
/* Clean name List */
|
||||
for(std::vector<wchar_t *>::iterator iter = nameList.begin(); iter < nameList.end(); iter++)
|
||||
delete [] *iter;
|
||||
|
||||
if(PgameFilterPrev)
|
||||
*PgameFilterPrev = new_gameFilterPrev;
|
||||
|
||||
return 0;
|
||||
}
|
||||
/****************************************************************************
|
||||
* Get GameFilter NextList
|
||||
***************************************************************************/
|
||||
|
||||
int int_cmp(const void *a, const void *b) { return *((u32*)a)-*((u32*)b); }
|
||||
|
||||
int __Menu_GetGameFilter_NextList(discHdr *gameList, u32 gameCnt, wchar_t **PgameFilter, wchar_t **PgameFilterNextList)
|
||||
{
|
||||
u32 filter_len = wcslen(*PgameFilter);
|
||||
u32 i, lastChar=0;
|
||||
wchar_t *p;
|
||||
u32 *nextList = new u32[gameCnt]; if(nextList==NULL) return -1;
|
||||
for(i=0; i<gameCnt; i++)
|
||||
{
|
||||
u32 nextFilterChar = 0x10000;
|
||||
wchar_t *gameName = FreeTypeGX::charToWideChar(get_title(&gameList[i]));
|
||||
if(gameName == NULL) goto error;
|
||||
|
||||
if(wcslen(gameName) > filter_len && (filter_len == 0 || !wcsnicmp(*PgameFilter, gameName, filter_len)))
|
||||
nextFilterChar = towupper(gameName[filter_len]);
|
||||
nextList[i] = nextFilterChar;
|
||||
}
|
||||
qsort(nextList, gameCnt, sizeof(u32), int_cmp);
|
||||
|
||||
*PgameFilterNextList = new wchar_t[gameCnt+1];
|
||||
if(*PgameFilterNextList == NULL) goto error;
|
||||
|
||||
|
||||
p = *PgameFilterNextList;
|
||||
lastChar = 0;
|
||||
for(i=0; i<gameCnt; i++)
|
||||
{
|
||||
u32 Char = nextList[i];
|
||||
if(lastChar != Char)
|
||||
{
|
||||
if(Char == 0x10000)
|
||||
break;
|
||||
*p++ = lastChar = Char;
|
||||
}
|
||||
}
|
||||
*p = 0;
|
||||
if(wcslen(*PgameFilterNextList) == 1) // only one nextChar
|
||||
{
|
||||
wchar_t *newFilter = new wchar_t[filter_len + 2];
|
||||
if(newFilter == NULL) goto error;
|
||||
|
||||
wcscpy(newFilter, *PgameFilter);
|
||||
wcscat(newFilter, *PgameFilterNextList);
|
||||
delete [] *PgameFilter; *PgameFilter = newFilter;
|
||||
delete [] *PgameFilterNextList; *PgameFilterNextList = NULL;
|
||||
return __Menu_GetGameFilter_NextList(gameList, gameCnt, PgameFilter, PgameFilterNextList);
|
||||
}
|
||||
|
||||
return 0;
|
||||
error:
|
||||
if(nextList) delete [] nextList;
|
||||
if(*PgameFilterNextList) delete [] *PgameFilterNextList;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Get Gamelist
|
||||
***************************************************************************/
|
||||
|
||||
int __Menu_GetEntries(int t) {
|
||||
int __Menu_GetGameList(int t, wchar_t* gameFilter, discHdr ** PgameList, u32 *PgameCnt) {
|
||||
struct discHdr *buffer = NULL;
|
||||
struct discHdr *buffer2 = NULL;
|
||||
struct discHdr *header = NULL;
|
||||
|
||||
u32 cnt, len;
|
||||
u32 cnt, cnt2=0, len;
|
||||
s32 ret;
|
||||
|
||||
/* Get list length */
|
||||
@ -87,82 +260,99 @@ int __Menu_GetEntries(int t) {
|
||||
if (buffer) free(buffer);
|
||||
return ret;
|
||||
}
|
||||
for (u32 i = 0; i < cnt; i++) {
|
||||
struct discHdr *header = &buffer[i];
|
||||
|
||||
/* Filters */
|
||||
if (Settings.fave && t==0) {
|
||||
u32 cnt2 = 0;
|
||||
|
||||
for (u32 i = 0; i < cnt; i++) {
|
||||
header = &buffer[i];
|
||||
u8 favorite = 0;
|
||||
struct Game_NUM* game_num = CFG_get_game_num(header->id);
|
||||
if (game_num) {
|
||||
favorite = game_num->favorite;
|
||||
}
|
||||
if (favorite==1) {
|
||||
buffer2 = (discHdr *) realloc(buffer2, (cnt2+1) * sizeof(struct discHdr));
|
||||
if (!buffer2) {
|
||||
free(buffer);
|
||||
return -1;
|
||||
}
|
||||
|
||||
memcpy((buffer2 + cnt2), (buffer + i), sizeof(struct discHdr));
|
||||
cnt2++;
|
||||
}
|
||||
}
|
||||
if (buffer2) {
|
||||
free(buffer);
|
||||
buffer = buffer2;
|
||||
buffer2 = NULL;
|
||||
} else {
|
||||
memset(buffer, 0, len);
|
||||
}
|
||||
cnt = cnt2;
|
||||
}
|
||||
|
||||
if (Settings.parentalcontrol && !Settings.godmode && t==0) {
|
||||
u32 cnt2 = 0;
|
||||
|
||||
for (u32 i = 0; i < cnt; i++) {
|
||||
header = &buffer[i];
|
||||
if (get_block(header) < Settings.parentalcontrol) {
|
||||
buffer2 = (discHdr *) realloc(buffer2, (cnt2+1) * sizeof(struct discHdr));
|
||||
if (!buffer2) {
|
||||
free(buffer);
|
||||
return -1;
|
||||
}
|
||||
|
||||
memcpy((buffer2 + cnt2), (buffer + i), sizeof(struct discHdr));
|
||||
cnt2++;
|
||||
}
|
||||
}
|
||||
if (buffer2) {
|
||||
free(buffer);
|
||||
buffer = buffer2;
|
||||
buffer2 = NULL;
|
||||
} else {
|
||||
memset(buffer, 0, len);
|
||||
}
|
||||
cnt = cnt2;
|
||||
}
|
||||
|
||||
if (Settings.sort==pcount) {
|
||||
qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmpCount);
|
||||
} else {
|
||||
qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmp);
|
||||
}
|
||||
|
||||
/* Free memory */
|
||||
if (gameList)
|
||||
free(gameList);
|
||||
|
||||
/* Set values */
|
||||
gameList = buffer;
|
||||
buffer = NULL;
|
||||
gameCnt = cnt;
|
||||
|
||||
/* Reset variables */
|
||||
gameSelected = gameStart = 0;
|
||||
/* Filters */
|
||||
if (Settings.fave && t==0) {
|
||||
struct Game_NUM* game_num = CFG_get_game_num(header->id);
|
||||
if (!game_num || game_num->favorite==0)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (Settings.parentalcontrol && !Settings.godmode && t==0) {
|
||||
if (get_block(header) >= Settings.parentalcontrol)
|
||||
continue;
|
||||
}
|
||||
|
||||
if(gameFilter && *gameFilter && t==0) {
|
||||
u32 filter_len = wcslen(gameFilter);
|
||||
wchar_t *gameName = FreeTypeGX::charToWideChar(get_title(header));
|
||||
if (!gameName || wcsnicmp(gameName, gameFilter, filter_len)) {
|
||||
delete [] gameName;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if(i != cnt2)
|
||||
buffer[cnt2] = buffer[i];
|
||||
cnt2++;
|
||||
}
|
||||
if(cnt > cnt2)
|
||||
{
|
||||
cnt = cnt2;
|
||||
buffer = (struct discHdr *)realloc(buffer, sizeof(struct discHdr) * cnt);
|
||||
}
|
||||
if (!buffer)
|
||||
return -1;
|
||||
|
||||
if (Settings.sort==pcount) {
|
||||
qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmpCount);
|
||||
} else {
|
||||
qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmp);
|
||||
}
|
||||
|
||||
/* Set values */
|
||||
if(PgameList) *PgameList = buffer; else free(buffer);
|
||||
if(PgameCnt) *PgameCnt = cnt;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int __Menu_GetEntries(int t, const wchar_t* Filter) {
|
||||
|
||||
u32 new_gameCnt = 0;
|
||||
struct discHdr *new_gameList = NULL;
|
||||
wchar_t *new_gameFilter = NULL;
|
||||
wchar_t *new_gameFilterNextList = NULL;
|
||||
wchar_t *new_gameFilterPrev = NULL;
|
||||
|
||||
new_gameFilter = wcsdup(Filter ? Filter : (gameFilter ? gameFilter : L"") );
|
||||
if(new_gameFilter == NULL) return -1;
|
||||
for(;;)
|
||||
{
|
||||
if(__Menu_GetGameList(t, new_gameFilter, &new_gameList, &new_gameCnt) < 0)
|
||||
return -1;
|
||||
if(new_gameCnt > 0 || new_gameFilter[0] == 0)
|
||||
break;
|
||||
new_gameFilter[wcslen(new_gameFilter)-1] = 0;
|
||||
}
|
||||
/* init GameFilterNextList */
|
||||
if(__Menu_GetGameFilter_NextList(new_gameList, new_gameCnt, &new_gameFilter, &new_gameFilterNextList) < 0)
|
||||
goto error;
|
||||
|
||||
/* init GameFilterPrev */
|
||||
if(__Menu_GetPrevFilter(t, new_gameFilter, new_gameCnt, &new_gameFilterPrev) < 0)
|
||||
goto error;
|
||||
|
||||
/* Set values */
|
||||
if(gameList) free(gameList);
|
||||
if(gameFilter) delete [] gameFilter;
|
||||
if(gameFilterNextList) delete [] gameFilterNextList;
|
||||
if(gameFilterPrev) delete [] gameFilterPrev;
|
||||
|
||||
gameList = new_gameList;
|
||||
gameCnt = new_gameCnt;
|
||||
gameFilter = new_gameFilter;
|
||||
gameFilterNextList = new_gameFilterNextList;
|
||||
gameFilterPrev = new_gameFilterPrev;
|
||||
|
||||
/* Reset variables */
|
||||
gameSelected = gameStart = 0;
|
||||
return 0;
|
||||
error: // clean up
|
||||
if(new_gameList) free(new_gameList);
|
||||
if(new_gameFilter) delete [] new_gameFilter;
|
||||
if(new_gameFilterNextList) delete [] new_gameFilterNextList;
|
||||
if(new_gameFilterPrev) delete [] new_gameFilterPrev;
|
||||
return -1;
|
||||
}
|
||||
|
@ -8,10 +8,24 @@
|
||||
#ifndef _GETENTRIES_H_
|
||||
#define _GETENTRIES_H_
|
||||
|
||||
#include <wctype.h>
|
||||
|
||||
struct discHdr;
|
||||
extern discHdr *gameList;
|
||||
extern u32 gameCnt;
|
||||
extern wchar_t *gameFilter;
|
||||
extern wchar_t *gameFilterNextList;
|
||||
extern wchar_t *gameFilterPrev;
|
||||
|
||||
//! param t
|
||||
//! make this 1 if you want the function to ignore the rules
|
||||
//! (settings and parental control) when making the game list.
|
||||
//!
|
||||
int __Menu_GetEntries(int t=0);
|
||||
//! param Filter
|
||||
//! set this Parameter to Filter the List
|
||||
//! if this Parameter=NULL then the filter is not changed
|
||||
//! if this Parameter="" then no filter is activ
|
||||
//!
|
||||
int __Menu_GetEntries(int t=0, const wchar_t* Filter=NULL);
|
||||
|
||||
#endif
|
||||
|
@ -139,7 +139,7 @@ s32 Wad_Install(FILE *fp)
|
||||
if (Settings.wsprompt == yes){
|
||||
dialogBoxImg.SetWidescreen(CFG.widescreen);}
|
||||
|
||||
GuiText btn1Txt(tr("Ok"), 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText btn1Txt(tr("Ok"), 22, THEME.prompttext);
|
||||
GuiImage btn1Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes){
|
||||
btn1Txt.SetWidescreen(CFG.widescreen);
|
||||
@ -171,33 +171,33 @@ s32 Wad_Install(FILE *fp)
|
||||
|
||||
char title[50];
|
||||
sprintf(title, "%s", tr("Installing wad"));
|
||||
GuiText titleTxt(title, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText titleTxt(title, 26, THEME.prompttext);
|
||||
titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
titleTxt.SetPosition(0,40);
|
||||
char msg[50];
|
||||
sprintf(msg, " ");
|
||||
// sprintf(msg, "%s", tr("Initializing Network"));
|
||||
GuiText msg1Txt(NULL, 20, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msg1Txt(NULL, 20, THEME.prompttext);
|
||||
msg1Txt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
msg1Txt.SetPosition(50,75);
|
||||
// char msg2[50] = " ";
|
||||
GuiText msg2Txt(NULL, 20, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msg2Txt(NULL, 20, THEME.prompttext);
|
||||
msg2Txt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
msg2Txt.SetPosition(50, 98);
|
||||
|
||||
GuiText msg3Txt(NULL, 20, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msg3Txt(NULL, 20, THEME.prompttext);
|
||||
msg3Txt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
msg3Txt.SetPosition(50, 121);
|
||||
|
||||
GuiText msg4Txt(NULL, 20, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msg4Txt(NULL, 20, THEME.prompttext);
|
||||
msg4Txt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
msg4Txt.SetPosition(50, 144);
|
||||
|
||||
GuiText msg5Txt(NULL, 20, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msg5Txt(NULL, 20, THEME.prompttext);
|
||||
msg5Txt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
msg5Txt.SetPosition(50, 167);
|
||||
|
||||
GuiText prTxt(NULL, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText prTxt(NULL, 26, THEME.prompttext);
|
||||
prTxt.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
||||
prTxt.SetPosition(0, 50);
|
||||
|
||||
@ -236,6 +236,7 @@ s32 Wad_Install(FILE *fp)
|
||||
///start the wad shit
|
||||
bool fail = false;
|
||||
wadHeader *header = NULL;
|
||||
void *pvoid;
|
||||
signed_blob *p_certs = NULL, *p_crl = NULL, *p_tik = NULL, *p_tmd = NULL;
|
||||
|
||||
tmd *tmd_data = NULL;
|
||||
@ -247,49 +248,51 @@ s32 Wad_Install(FILE *fp)
|
||||
ResumeGui();
|
||||
msg1Txt.SetText(tr(">> Reading WAD data..."));
|
||||
HaltGui();
|
||||
#define SetPointer(a, p) a=(typeof(a))p
|
||||
// WAD header
|
||||
//ret = __Wad_ReadAlloc(fp, (void *)header, offset, sizeof(wadHeader));
|
||||
ret = __Wad_ReadAlloc(fp, (void **)&header, offset, sizeof(wadHeader));
|
||||
ret = __Wad_ReadAlloc(fp, &pvoid, offset, sizeof(wadHeader));
|
||||
|
||||
if (ret < 0)
|
||||
goto err;
|
||||
else
|
||||
offset += round_up(header->header_len, 64);
|
||||
SetPointer(header, pvoid);
|
||||
offset += round_up(header->header_len, 64);
|
||||
|
||||
// WAD certificates
|
||||
//ret = __Wad_ReadAlloc(fp, (void *)&p_certs, offset, header->certs_len);
|
||||
ret = __Wad_ReadAlloc(fp, (void **)&p_certs, offset, header->certs_len);
|
||||
ret = __Wad_ReadAlloc(fp, &pvoid, offset, header->certs_len);
|
||||
if (ret < 0)
|
||||
goto err;
|
||||
else
|
||||
offset += round_up(header->certs_len, 64);
|
||||
SetPointer(p_certs, pvoid);
|
||||
offset += round_up(header->certs_len, 64);
|
||||
|
||||
// WAD crl
|
||||
|
||||
if (header->crl_len) {
|
||||
//ret = __Wad_ReadAlloc(fp, (void *)&p_crl, offset, header->crl_len);
|
||||
ret = __Wad_ReadAlloc(fp, (void **)&p_crl, offset, header->crl_len);
|
||||
ret = __Wad_ReadAlloc(fp, &pvoid, offset, header->crl_len);
|
||||
if (ret < 0)
|
||||
goto err;
|
||||
else
|
||||
offset += round_up(header->crl_len, 64);
|
||||
SetPointer(p_crl, pvoid);
|
||||
offset += round_up(header->crl_len, 64);
|
||||
}
|
||||
|
||||
// WAD ticket
|
||||
//ret = __Wad_ReadAlloc(fp, (void *)&p_tik, offset, header->tik_len);
|
||||
ret = __Wad_ReadAlloc(fp, (void **)&p_tik, offset, header->tik_len);
|
||||
ret = __Wad_ReadAlloc(fp, &pvoid, offset, header->tik_len);
|
||||
if (ret < 0)
|
||||
goto err;
|
||||
else
|
||||
offset += round_up(header->tik_len, 64);
|
||||
SetPointer(p_tik, pvoid);
|
||||
offset += round_up(header->tik_len, 64);
|
||||
|
||||
// WAD TMD
|
||||
//ret = __Wad_ReadAlloc(fp, (void *)&p_tmd, offset, header->tmd_len);
|
||||
ret = __Wad_ReadAlloc(fp, (void **)&p_tmd, offset, header->tmd_len);
|
||||
ret = __Wad_ReadAlloc(fp, &pvoid, offset, header->tmd_len);
|
||||
if (ret < 0)
|
||||
goto err;
|
||||
else
|
||||
offset += round_up(header->tmd_len, 64);
|
||||
SetPointer(p_tmd, pvoid);
|
||||
offset += round_up(header->tmd_len, 64);
|
||||
|
||||
ResumeGui();
|
||||
msg1Txt.SetText(tr("Reading WAD data... Ok!"));
|
||||
msg2Txt.SetText(tr(">> Installing ticket..."));
|
||||
@ -465,7 +468,7 @@ s32 Wad_Uninstall(FILE *fp)
|
||||
if (Settings.wsprompt == yes){
|
||||
dialogBoxImg.SetWidescreen(CFG.widescreen);}
|
||||
|
||||
GuiText btn1Txt(tr("Ok"), 22, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText btn1Txt(tr("Ok"), 22, THEME.prompttext);
|
||||
GuiImage btn1Img(&btnOutline);
|
||||
if (Settings.wsprompt == yes){
|
||||
btn1Txt.SetWidescreen(CFG.widescreen);
|
||||
@ -476,27 +479,27 @@ s32 Wad_Uninstall(FILE *fp)
|
||||
|
||||
char title[50];
|
||||
sprintf(title, "%s", tr("Uninstalling wad"));
|
||||
GuiText titleTxt(title, 26, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText titleTxt(title, 26, THEME.prompttext);
|
||||
titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||
titleTxt.SetPosition(0,40);
|
||||
|
||||
GuiText msg1Txt(NULL, 18, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msg1Txt(NULL, 18, THEME.prompttext);
|
||||
msg1Txt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
msg1Txt.SetPosition(50,75);
|
||||
|
||||
GuiText msg2Txt(NULL, 18, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msg2Txt(NULL, 18, THEME.prompttext);
|
||||
msg2Txt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
msg2Txt.SetPosition(50, 98);
|
||||
|
||||
GuiText msg3Txt(NULL, 18, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msg3Txt(NULL, 18, THEME.prompttext);
|
||||
msg3Txt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
msg3Txt.SetPosition(50, 121);
|
||||
|
||||
GuiText msg4Txt(NULL, 18, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msg4Txt(NULL, 18, THEME.prompttext);
|
||||
msg4Txt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
msg4Txt.SetPosition(50, 144);
|
||||
|
||||
GuiText msg5Txt(NULL, 18, (GXColor){THEME.prompttxt_r, THEME.prompttxt_g, THEME.prompttxt_b, 255});
|
||||
GuiText msg5Txt(NULL, 18, THEME.prompttext);
|
||||
msg5Txt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||
msg5Txt.SetPosition(50, 167);
|
||||
|
||||
@ -527,7 +530,8 @@ s32 Wad_Uninstall(FILE *fp)
|
||||
//sleep(3);
|
||||
|
||||
///start the wad shit
|
||||
wadHeader *header = NULL;
|
||||
wadHeader *header = NULL;
|
||||
void *pvoid = NULL;
|
||||
tikview *viewData = NULL;
|
||||
|
||||
u64 tid;
|
||||
@ -537,7 +541,7 @@ s32 Wad_Uninstall(FILE *fp)
|
||||
msg1Txt.SetText(tr(">> Reading WAD data..."));
|
||||
|
||||
// WAD header
|
||||
ret = __Wad_ReadAlloc(fp, (void **)&header, 0, sizeof(wadHeader));
|
||||
ret = __Wad_ReadAlloc(fp, &pvoid, 0, sizeof(wadHeader));
|
||||
if (ret < 0) {
|
||||
char errTxt[50];
|
||||
sprintf(errTxt,"%sret = %d",tr(">> Reading WAD data...ERROR! "),ret);
|
||||
@ -545,6 +549,7 @@ s32 Wad_Uninstall(FILE *fp)
|
||||
//printf(" ERROR! (ret = %d)\n", ret);
|
||||
goto out;
|
||||
}
|
||||
SetPointer(header, pvoid);
|
||||
|
||||
// Get title ID
|
||||
ret = __Wad_GetTitleID(fp, header, &tid);
|
||||
|