This commit is contained in:
ardi@ist-einmalig.de 2009-09-27 18:19:53 +00:00
parent 6a6f02ecf8
commit 16b4e62c51
73 changed files with 3317 additions and 3573 deletions

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: David Jelinek (djelinek@hotmail.com) \n" "Last-Translator: David Jelinek (djelinek@hotmail.com) \n"
"Language-Team: r719 - last version on http://volny.cz/djelinek/_USBLoderGX/czech.lang \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" msgid "20 min"
msgstr "20 minut" msgstr "20 minut"
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "3 (Zralý 16+)" msgstr "3 (Zralý 16+)"
@ -55,6 +58,9 @@ msgstr "3 minuty"
msgid "30 min" msgid "30 min"
msgstr "30 minut" msgstr "30 minut"
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "3D Obaly" msgstr "3D Obaly"
@ -284,9 +290,6 @@ msgstr "Nelze nastavit USB"
msgid "Cover Download" msgid "Cover Download"
msgstr "Stažení obalu" msgstr "Stažení obalu"
msgid "Cover Path"
msgstr "Cesta k obalum"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "Zmena cesty k obalom" msgstr "Zmena cesty k obalom"
@ -911,6 +914,9 @@ msgstr ""
msgid "Sept" msgid "Sept"
msgstr "Zárí" msgstr "Zárí"
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "Nastavit jako hudbu na pozadí?" msgstr "Nastavit jako hudbu na pozadí?"
@ -1193,3 +1199,6 @@ msgstr "z "
msgid "seconds left" msgid "seconds left"
msgstr "sekund zbývá" msgstr "sekund zbývá"
#~ msgid "Cover Path"
#~ msgstr "Cesta k obalum"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: dorf[dk]\n" "Last-Translator: dorf[dk]\n"
"Language-Team: \n" "Language-Team: \n"
@ -46,6 +46,9 @@ msgstr "2 (Unge teenagere 12+)"
msgid "20 min" msgid "20 min"
msgstr "20 min." msgstr "20 min."
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "3 (Modne teenagere 12+)" msgstr "3 (Modne teenagere 12+)"
@ -55,6 +58,9 @@ msgstr "3 min."
msgid "30 min" msgid "30 min"
msgstr "30 min." msgstr "30 min."
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "3D-Covers" msgstr "3D-Covers"
@ -284,9 +290,6 @@ msgstr "Kunne ikke sætte USB."
msgid "Cover Download" msgid "Cover Download"
msgstr "Cover-download" msgstr "Cover-download"
msgid "Cover Path"
msgstr "Sti til covers"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "Ændringer af sti til covers" msgstr "Ændringer af sti til covers"
@ -911,6 +914,9 @@ msgstr "Valgt DOL"
msgid "Sept" msgid "Sept"
msgstr "Sept" msgstr "Sept"
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "Indstil som baggrundsmusik?" msgstr "Indstil som baggrundsmusik?"
@ -1194,6 +1200,9 @@ msgstr "af"
msgid "seconds left" msgid "seconds left"
msgstr "sekunder tilbage" msgstr "sekunder tilbage"
#~ msgid "Cover Path"
#~ msgstr "Sti til covers"
#~ msgid "Don't bother the USB Loader GX Team about errors in this file." #~ 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." #~ msgstr "Lad være med at fortælle holdet bag USB Loader GX om fejl i denne fil."

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: tj_cool\n" "Last-Translator: tj_cool\n"
"Language-Team: \n" "Language-Team: \n"
@ -46,6 +46,9 @@ msgstr "2 (Tiener 12+)"
msgid "20 min" msgid "20 min"
msgstr "20 min" msgstr "20 min"
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "3 (Adolescenten 16+)" msgstr "3 (Adolescenten 16+)"
@ -55,6 +58,9 @@ msgstr "3 min"
msgid "30 min" msgid "30 min"
msgstr "30 min" msgstr "30 min"
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "3D Hoesjes" msgstr "3D Hoesjes"
@ -284,9 +290,6 @@ msgstr "Kan USB niet instellen"
msgid "Cover Download" msgid "Cover Download"
msgstr "Download hoesjes" msgstr "Download hoesjes"
msgid "Cover Path"
msgstr "Locatie hoesjes"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "Hoesjesmap wijzigen" msgstr "Hoesjesmap wijzigen"
@ -911,6 +914,9 @@ msgstr ""
msgid "Sept" msgid "Sept"
msgstr "Sept" msgstr "Sept"
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "Instellen als achtergrondmuziek?" msgstr "Instellen als achtergrondmuziek?"
@ -1194,6 +1200,9 @@ msgstr "van"
msgid "seconds left" msgid "seconds left"
msgstr "seconden over:" msgstr "seconden over:"
#~ msgid "Cover Path"
#~ msgstr "Locatie hoesjes"
#~ msgid "Don't bother the USB Loader GX Team about errors in this file." #~ 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." #~ msgstr "Val het USB loader GX team niet lastig over fouten in dit bestand."

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
@ -46,6 +46,9 @@ msgstr ""
msgid "20 min" msgid "20 min"
msgstr "" msgstr ""
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "" msgstr ""
@ -55,6 +58,9 @@ msgstr ""
msgid "30 min" msgid "30 min"
msgstr "" msgstr ""
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "" msgstr ""
@ -284,9 +290,6 @@ msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "" msgstr ""
msgid "Cover Path"
msgstr ""
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "" msgstr ""
@ -911,6 +914,9 @@ msgstr ""
msgid "Sept" msgid "Sept"
msgstr "" msgstr ""
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "" msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: c64rmx\n" "Last-Translator: c64rmx\n"
"Language-Team: \n" "Language-Team: \n"
@ -46,6 +46,9 @@ msgstr "2 (Teinit 12+)"
msgid "20 min" msgid "20 min"
msgstr "" msgstr ""
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "3 (Teinit 16+)" msgstr "3 (Teinit 16+)"
@ -55,6 +58,9 @@ msgstr ""
msgid "30 min" msgid "30 min"
msgstr "" msgstr ""
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "3D Kannet" msgstr "3D Kannet"
@ -284,9 +290,6 @@ msgstr "USB:tä ei voitu asettaa"
msgid "Cover Download" msgid "Cover Download"
msgstr "Kansien lataus" msgstr "Kansien lataus"
msgid "Cover Path"
msgstr "Kansien polku"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "Kansipolun vaihto" msgstr "Kansipolun vaihto"
@ -911,6 +914,9 @@ msgstr "Valittu DOL"
msgid "Sept" msgid "Sept"
msgstr "syys" msgstr "syys"
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "Aseta taustamusiikiksi?" msgstr "Aseta taustamusiikiksi?"
@ -1194,6 +1200,9 @@ msgstr "josta"
msgid "seconds left" msgid "seconds left"
msgstr "sekuntia jäljellä" msgstr "sekuntia jäljellä"
#~ msgid "Cover Path"
#~ msgstr "Kansien polku"
#~ msgid "No partitions found" #~ msgid "No partitions found"
#~ msgstr "Osioita ei löytynyt" #~ msgstr "Osioita ei löytynyt"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: Kin8\n" "Last-Translator: Kin8\n"
"Language-Team: Badablek, Amour, ikya, dj_skual & Kin8\n" "Language-Team: Badablek, Amour, ikya, dj_skual & Kin8\n"
@ -46,6 +46,9 @@ msgstr "2 (Adolescents 12+)"
msgid "20 min" msgid "20 min"
msgstr "20 min." msgstr "20 min."
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "3 (Matures 16+)" msgstr "3 (Matures 16+)"
@ -55,6 +58,9 @@ msgstr "3 min."
msgid "30 min" msgid "30 min"
msgstr "30 min." msgstr "30 min."
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "Jaquettes 3D" msgstr "Jaquettes 3D"
@ -284,9 +290,6 @@ msgstr "Accès USB impossible."
msgid "Cover Download" msgid "Cover Download"
msgstr "Téléchargement Jaquettes" msgstr "Téléchargement Jaquettes"
msgid "Cover Path"
msgstr "Dossier Jaquettes"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "Dossier des Jaquettes" msgstr "Dossier des Jaquettes"
@ -911,6 +914,9 @@ msgstr "Choix du DOL"
msgid "Sept" msgid "Sept"
msgstr "Sept" msgstr "Sept"
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "Utiliser comme fond sonore ?" msgstr "Utiliser comme fond sonore ?"
@ -1194,6 +1200,9 @@ msgstr "sur"
msgid "seconds left" msgid "seconds left"
msgstr "secondes restantes" 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." #~ 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." #~ msgstr "Vous devez lancer ce jeu une fois pour créer une sauvegarde, puis éteindre et le lancer à nouveau."

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: wishmasterf\n" "Last-Translator: wishmasterf\n"
"Language-Team: Snoozer, wishmasterf\n" "Language-Team: Snoozer, wishmasterf\n"
@ -46,6 +46,9 @@ msgstr "2 (Jugendliche 12+)"
msgid "20 min" msgid "20 min"
msgstr "20 min" msgstr "20 min"
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "3 (Erwachsene 16+)" msgstr "3 (Erwachsene 16+)"
@ -55,6 +58,9 @@ msgstr "3 min"
msgid "30 min" msgid "30 min"
msgstr "30 min" msgstr "30 min"
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "3D Cover" msgstr "3D Cover"
@ -284,9 +290,6 @@ msgstr "Konnte USB nicht setzen."
msgid "Cover Download" msgid "Cover Download"
msgstr "Cover Download" msgstr "Cover Download"
msgid "Cover Path"
msgstr "Cover Pfad"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "Cover Pfad ändern" msgstr "Cover Pfad ändern"
@ -911,6 +914,9 @@ msgstr "Ausgewähltes DOL"
msgid "Sept" msgid "Sept"
msgstr "Sept" msgstr "Sept"
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "Als Hintergrundmusik wählen?" msgstr "Als Hintergrundmusik wählen?"
@ -1194,6 +1200,9 @@ msgstr "von"
msgid "seconds left" msgid "seconds left"
msgstr "Sekunden verbleiben" msgstr "Sekunden verbleiben"
#~ msgid "Cover Path"
#~ msgstr "Cover Pfad"
#~ msgid "Don't bother the USB Loader GX Team about errors in this file." #~ 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." #~ msgstr "Beschweren Sie sich nicht bei uns über hier angezeigte Fehler."

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: Tusk\n" "Last-Translator: Tusk\n"
"Language-Team: \n" "Language-Team: \n"
@ -46,6 +46,9 @@ msgstr "2 (Tinédzserek 14+)"
msgid "20 min" msgid "20 min"
msgstr "" msgstr ""
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "3 (Kamaszok 16+)" msgstr "3 (Kamaszok 16+)"
@ -55,6 +58,9 @@ msgstr ""
msgid "30 min" msgid "30 min"
msgstr "" msgstr ""
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "3D Borítók" msgstr "3D Borítók"
@ -284,9 +290,6 @@ msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "Boritó Letöltés" msgstr "Boritó Letöltés"
msgid "Cover Path"
msgstr "Boritó Útvonala"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "" msgstr ""
@ -911,6 +914,9 @@ msgstr ""
msgid "Sept" msgid "Sept"
msgstr "Szep" msgstr "Szep"
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "Beállítod háttérzenének?" msgstr "Beállítod háttérzenének?"
@ -1194,6 +1200,9 @@ msgstr " "
msgid "seconds left" msgid "seconds left"
msgstr "hátralévõ másodperc" msgstr "hátralévõ másodperc"
#~ msgid "Cover Path"
#~ msgstr "Boritó Útvonala"
#~ msgid "No partitions found" #~ msgid "No partitions found"
#~ msgstr "Nem találtam particiót" #~ msgstr "Nem találtam particiót"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-08-05 10:00+0200\n"
"Last-Translator: Cambo \n" "Last-Translator: Cambo \n"
"Language-Team: FoxeJoe & Cambo\n" "Language-Team: FoxeJoe & Cambo\n"
@ -46,6 +46,9 @@ msgstr "2 (Ragazzini 12+)"
msgid "20 min" msgid "20 min"
msgstr "20 minuti" msgstr "20 minuti"
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "3 (Ragazzi 16+)" msgstr "3 (Ragazzi 16+)"
@ -55,6 +58,9 @@ msgstr "3 minuti"
msgid "30 min" msgid "30 min"
msgstr "30 minuti" msgstr "30 minuti"
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "Copertine 3D" msgstr "Copertine 3D"
@ -284,9 +290,6 @@ msgstr "Non è stato possibile impostare la porta USB."
msgid "Cover Download" msgid "Cover Download"
msgstr "Scaricamento Copertine" msgstr "Scaricamento Copertine"
msgid "Cover Path"
msgstr "Percorso Copertine"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "Modifica Percorso Copertine" msgstr "Modifica Percorso Copertine"
@ -911,6 +914,9 @@ msgstr "File DOL selezionato"
msgid "Sept" msgid "Sept"
msgstr "settembre" msgstr "settembre"
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "Imposto come Musica Sottofondo?" msgstr "Imposto come Musica Sottofondo?"
@ -1194,6 +1200,9 @@ msgstr "di"
msgid "seconds left" msgid "seconds left"
msgstr "secondi mancanti" msgstr "secondi mancanti"
#~ msgid "Cover Path"
#~ msgstr "Percorso Copertine"
#~ msgid "Don't bother the USB Loader GX Team about errors in this file." #~ 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." #~ msgstr "Non infastidire il team di sviluppo dell'USB Loader GX per errori in questo file."

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: hosigumayuugi\n" "Last-Translator: hosigumayuugi\n"
"Language-Team: \n" "Language-Team: \n"
@ -46,6 +46,9 @@ msgstr "2 (中学生 12+)"
msgid "20 min" msgid "20 min"
msgstr "20分" msgstr "20分"
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "3 (高校生 16+)" msgstr "3 (高校生 16+)"
@ -55,6 +58,9 @@ msgstr "3分"
msgid "30 min" msgid "30 min"
msgstr "30分" msgstr "30分"
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "3D カバー" msgstr "3D カバー"
@ -284,9 +290,6 @@ msgstr "USBをセットできません"
msgid "Cover Download" msgid "Cover Download"
msgstr "カバー ダウンロード" msgstr "カバー ダウンロード"
msgid "Cover Path"
msgstr "カバーパス"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "カバーパスの変更" msgstr "カバーパスの変更"
@ -911,6 +914,9 @@ msgstr "DOLの場所"
msgid "Sept" msgid "Sept"
msgstr "9月" msgstr "9月"
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "BGMに設定しますか" msgstr "BGMに設定しますか"
@ -1194,6 +1200,9 @@ msgstr ""
msgid "seconds left" msgid "seconds left"
msgstr "完了までの秒数" msgstr "完了までの秒数"
#~ msgid "Cover Path"
#~ msgstr "カバーパス"
#~ msgid "Don't bother the USB Loader GX Team about errors in this file." #~ msgid "Don't bother the USB Loader GX Team about errors in this file."
#~ msgstr "GXの開発チームは、このファイルに関するエラーに対応しません。" #~ msgstr "GXの開発チームは、このファイルに関するエラーに対応しません。"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: nextos@korea.com\n" "Last-Translator: nextos@korea.com\n"
"Language-Team: \n" "Language-Team: \n"
@ -46,6 +46,9 @@ msgstr "2 (12세 이상)"
msgid "20 min" msgid "20 min"
msgstr "20 분" msgstr "20 분"
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "3 (16세 이상)" msgstr "3 (16세 이상)"
@ -55,6 +58,9 @@ msgstr "3 분"
msgid "30 min" msgid "30 min"
msgstr "30 분" msgstr "30 분"
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "3D 커버" msgstr "3D 커버"
@ -284,9 +290,6 @@ msgstr "USB 를 설정할수 없음."
msgid "Cover Download" msgid "Cover Download"
msgstr "표지 다운로드" msgstr "표지 다운로드"
msgid "Cover Path"
msgstr "표지 경로"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "커퍼경로 변경" msgstr "커퍼경로 변경"
@ -911,6 +914,9 @@ msgstr ""
msgid "Sept" msgid "Sept"
msgstr "9월" msgstr "9월"
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "벼경음악 설정?" msgstr "벼경음악 설정?"
@ -1194,6 +1200,9 @@ msgstr "중"
msgid "seconds left" msgid "seconds left"
msgstr "초 남았습니다" msgstr "초 남았습니다"
#~ msgid "Cover Path"
#~ msgstr "표지 경로"
#~ msgid "Don't bother the USB Loader GX Team about errors in this file." #~ msgid "Don't bother the USB Loader GX Team about errors in this file."
#~ msgstr "이화일의 에러로 USB Loader GX 팀에 연락하지 마세요." #~ msgstr "이화일의 에러로 USB Loader GX 팀에 연락하지 마세요."

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: raschi\n" "Last-Translator: raschi\n"
"Language-Team: \n" "Language-Team: \n"
@ -46,6 +46,9 @@ msgstr "2 (Ungdom 12+)"
msgid "20 min" msgid "20 min"
msgstr "20 min" msgstr "20 min"
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "3 (Ungdom 16+)" msgstr "3 (Ungdom 16+)"
@ -55,6 +58,9 @@ msgstr "3 min"
msgid "30 min" msgid "30 min"
msgstr "30 min" msgstr "30 min"
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "3D cover" msgstr "3D cover"
@ -284,9 +290,6 @@ msgstr "Kan ikke velge USB."
msgid "Cover Download" msgid "Cover Download"
msgstr "Cover nedlasting" msgstr "Cover nedlasting"
msgid "Cover Path"
msgstr "Cover sti"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "Endre cover sti" msgstr "Endre cover sti"
@ -911,6 +914,9 @@ msgstr "Valgt DOL fil"
msgid "Sept" msgid "Sept"
msgstr "Sep" msgstr "Sep"
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "Bruk som bakgrunnsmusikk?" msgstr "Bruk som bakgrunnsmusikk?"
@ -1194,6 +1200,9 @@ msgstr "av"
msgid "seconds left" msgid "seconds left"
msgstr "sekunder gjenstår" msgstr "sekunder gjenstår"
#~ msgid "Cover Path"
#~ msgstr "Cover sti"
#~ msgid "Don't bother the USB Loader GX Team about errors in this file." #~ 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." #~ msgstr "Ikke bry USB Loader GX teamet med feil i denne filen."

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: ziom666 (zadania_prog@vp.pl)\n" "Last-Translator: ziom666 (zadania_prog@vp.pl)\n"
"Language-Team: \n" "Language-Team: \n"
@ -46,6 +46,9 @@ msgstr "2 (mlodziez 12+)"
msgid "20 min" msgid "20 min"
msgstr "" msgstr ""
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "3 (dojrzaly 16+)" msgstr "3 (dojrzaly 16+)"
@ -55,6 +58,9 @@ msgstr ""
msgid "30 min" msgid "30 min"
msgstr "" msgstr ""
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "Okladki 3D" msgstr "Okladki 3D"
@ -284,9 +290,6 @@ msgstr "Nie mozna ustawic USB"
msgid "Cover Download" msgid "Cover Download"
msgstr "Pobierz okladki" msgstr "Pobierz okladki"
msgid "Cover Path"
msgstr "Sciezka okladek"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "Zmien Sciezke okladek" msgstr "Zmien Sciezke okladek"
@ -911,6 +914,9 @@ msgstr ""
msgid "Sept" msgid "Sept"
msgstr "Wrzesien" msgstr "Wrzesien"
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "Ustawic jako muzyke w tle?" msgstr "Ustawic jako muzyke w tle?"
@ -1194,6 +1200,9 @@ msgstr "z"
msgid "seconds left" msgid "seconds left"
msgstr "sekund pozostalo" msgstr "sekund pozostalo"
#~ msgid "Cover Path"
#~ msgstr "Sciezka okladek"
#~ msgid "Don't bother the USB Loader GX Team about errors in this file." #~ 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." #~ msgstr "Nie informuj team USB Loader GX o bledach w tym pliku."

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-08-11 19:45\n"
"Last-Translator: boto12\n" "Last-Translator: boto12\n"
"Language-Team: \n" "Language-Team: \n"
@ -46,6 +46,9 @@ msgstr "2 (Adolescente 12+)"
msgid "20 min" msgid "20 min"
msgstr "20 minutos" msgstr "20 minutos"
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "3 (Adulto 16+)" msgstr "3 (Adulto 16+)"
@ -55,6 +58,9 @@ msgstr "3 minutos"
msgid "30 min" msgid "30 min"
msgstr "30 minutos" msgstr "30 minutos"
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "Capas 3D" msgstr "Capas 3D"
@ -284,9 +290,6 @@ msgstr "Não foi possível configurar a porta USB."
msgid "Cover Download" msgid "Cover Download"
msgstr "Download de Capas" msgstr "Download de Capas"
msgid "Cover Path"
msgstr "Pasta Capas"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "Alterar Pasta das Capas" msgstr "Alterar Pasta das Capas"
@ -911,6 +914,9 @@ msgstr "DOL selecionado"
msgid "Sept" msgid "Sept"
msgstr "Set" msgstr "Set"
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "Definir como música de fundo?" msgstr "Definir como música de fundo?"
@ -1194,5 +1200,8 @@ msgstr "de"
msgid "seconds left" msgid "seconds left"
msgstr "segundos restantes" msgstr "segundos restantes"
#~ msgid "Cover Path"
#~ msgstr "Pasta Capas"
#~ msgid "Don't bother the USB Loader GX Team about errors in this file." #~ 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." #~ msgstr "Não incomode a equipe do USB Loader GX por erros neste arquivo."

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-08-11 12:25\n"
"Last-Translator: Sky8000\n" "Last-Translator: Sky8000\n"
"Language-Team: \n" "Language-Team: \n"
@ -46,6 +46,9 @@ msgstr "2 (Adolescente 12+)"
msgid "20 min" msgid "20 min"
msgstr "20 minutos" msgstr "20 minutos"
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "3 (Adulto 16+)" msgstr "3 (Adulto 16+)"
@ -55,6 +58,9 @@ msgstr "3 minutos"
msgid "30 min" msgid "30 min"
msgstr "30 minutos" msgstr "30 minutos"
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "Capas 3D" msgstr "Capas 3D"
@ -284,9 +290,6 @@ msgstr "Não foi possível configurar a porta USB."
msgid "Cover Download" msgid "Cover Download"
msgstr "Download de Capas" msgstr "Download de Capas"
msgid "Cover Path"
msgstr "Pasta Capas"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "Alterar Pasta das Capas" msgstr "Alterar Pasta das Capas"
@ -911,6 +914,9 @@ msgstr "DOL Seleccionado"
msgid "Sept" msgid "Sept"
msgstr "Set" msgstr "Set"
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "Definir como música de fundo?" msgstr "Definir como música de fundo?"
@ -1194,6 +1200,9 @@ msgstr "de"
msgid "seconds left" msgid "seconds left"
msgstr "segundos restantes" msgstr "segundos restantes"
#~ msgid "Cover Path"
#~ msgstr "Pasta Capas"
#~ msgid "Don't bother the USB Loader GX Team about errors in this file." #~ 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." #~ msgstr "Não incomodes a equipa do USB Loader GX por erros neste ficheiro."

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: Kir\n" "Last-Translator: Kir\n"
"Language-Team: Kir\n" "Language-Team: Kir\n"
@ -46,6 +46,9 @@ msgstr "2 (Подростки 12+)"
msgid "20 min" msgid "20 min"
msgstr "" msgstr ""
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "3 (Подростки 16+)" msgstr "3 (Подростки 16+)"
@ -55,6 +58,9 @@ msgstr ""
msgid "30 min" msgid "30 min"
msgstr "" msgstr ""
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "3D Обложки" msgstr "3D Обложки"
@ -284,9 +290,6 @@ msgstr "Не могу настроить USB"
msgid "Cover Download" msgid "Cover Download"
msgstr "Скачать обложку" msgstr "Скачать обложку"
msgid "Cover Path"
msgstr "Путь к обложкам"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "Изменить путь к обложкам" msgstr "Изменить путь к обложкам"
@ -911,6 +914,9 @@ msgstr ""
msgid "Sept" msgid "Sept"
msgstr "Сен" msgstr "Сен"
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "установить как фоновую музыку" msgstr "установить как фоновую музыку"
@ -1194,6 +1200,9 @@ msgstr "из"
msgid "seconds left" msgid "seconds left"
msgstr "секунд осталось" msgstr "секунд осталось"
#~ msgid "Cover Path"
#~ msgstr "Путь к обложкам"
#~ msgid "Leaving so you can restart..." #~ msgid "Leaving so you can restart..."
#~ msgstr "Выхожу для перезапуска..." #~ msgstr "Выхожу для перезапуска..."

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: knife.hu\n" "Last-Translator: knife.hu\n"
"Language-Team: \n" "Language-Team: \n"
@ -46,6 +46,9 @@ msgstr "2 (12岁以上)"
msgid "20 min" msgid "20 min"
msgstr "20 分钟" msgstr "20 分钟"
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "3 (16岁以上)" msgstr "3 (16岁以上)"
@ -55,6 +58,9 @@ msgstr "3 分钟"
msgid "30 min" msgid "30 min"
msgstr "30 分钟" msgstr "30 分钟"
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "3D 封面" msgstr "3D 封面"
@ -284,9 +290,6 @@ msgstr "无法设置 USB."
msgid "Cover Download" msgid "Cover Download"
msgstr "下载封面" msgstr "下载封面"
msgid "Cover Path"
msgstr "封面路径"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "变更封面路径" msgstr "变更封面路径"
@ -911,6 +914,9 @@ msgstr "已选择 DOL"
msgid "Sept" msgid "Sept"
msgstr "九月" msgstr "九月"
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "设置成背景音乐?" msgstr "设置成背景音乐?"
@ -1194,6 +1200,9 @@ msgstr "的"
msgid "seconds left" msgid "seconds left"
msgstr "剩余秒数" msgstr "剩余秒数"
#~ msgid "Cover Path"
#~ msgstr "封面路径"
#~ msgid "No partitions found" #~ msgid "No partitions found"
#~ msgstr "找不到分区" #~ msgstr "找不到分区"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: Penn\n" "Last-Translator: Penn\n"
"Language-Team: \n" "Language-Team: \n"
@ -46,6 +46,9 @@ msgstr "2 (Adolescente 12+)"
msgid "20 min" msgid "20 min"
msgstr "20 min" msgstr "20 min"
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "3 (Maduro 16+)" msgstr "3 (Maduro 16+)"
@ -55,6 +58,9 @@ msgstr "3 min"
msgid "30 min" msgid "30 min"
msgstr "30 min" msgstr "30 min"
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "Carátulas 3D" msgstr "Carátulas 3D"
@ -284,9 +290,6 @@ msgstr "No se pudo configurar USB."
msgid "Cover Download" msgid "Cover Download"
msgstr "Descarga de Carátulas" msgstr "Descarga de Carátulas"
msgid "Cover Path"
msgstr "Ruta Carátulas"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "Cambio ruta Carátulas" msgstr "Cambio ruta Carátulas"
@ -911,6 +914,9 @@ msgstr ""
msgid "Sept" msgid "Sept"
msgstr "Sept" msgstr "Sept"
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "¿Poner como másica de fondo?" msgstr "¿Poner como másica de fondo?"
@ -1194,6 +1200,9 @@ msgstr "de"
msgid "seconds left" msgid "seconds left"
msgstr "segundos restantes" msgstr "segundos restantes"
#~ msgid "Cover Path"
#~ msgstr "Ruta Carátulas"
#~ msgid "Don't bother the USB Loader GX Team about errors in this file." #~ 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." #~ msgstr "No molestes al equipo del USB Loader GX sobre errores en este archivo."

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-08-02 12:20+0200\n"
"Last-Translator: Katsurou\n" "Last-Translator: Katsurou\n"
"Language-Team: Katsurou, pirateX\n" "Language-Team: Katsurou, pirateX\n"
@ -46,6 +46,9 @@ msgstr "2 (Tonåringar 12+)"
msgid "20 min" msgid "20 min"
msgstr "20 min" msgstr "20 min"
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "3 (Mogen 16+)" msgstr "3 (Mogen 16+)"
@ -55,6 +58,9 @@ msgstr "3 min"
msgid "30 min" msgid "30 min"
msgstr "30 min" msgstr "30 min"
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "3D-Omslag" msgstr "3D-Omslag"
@ -284,9 +290,6 @@ msgstr "Kunde inte ställa in USB."
msgid "Cover Download" msgid "Cover Download"
msgstr "Omslagsnedladdning" msgstr "Omslagsnedladdning"
msgid "Cover Path"
msgstr "Omslagsmapp"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "Ändra omslagsmapp" msgstr "Ändra omslagsmapp"
@ -911,6 +914,9 @@ msgstr ""
msgid "Sept" msgid "Sept"
msgstr "Sept" msgstr "Sept"
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "Ställ in som bakgrundsmusik?" msgstr "Ställ in som bakgrundsmusik?"
@ -1194,6 +1200,9 @@ msgstr "av"
msgid "seconds left" msgid "seconds left"
msgstr "sekunder kvar" msgstr "sekunder kvar"
#~ msgid "Cover Path"
#~ msgstr "Omslagsmapp"
#~ msgid "Don't bother the USB Loader GX Team about errors in this file." #~ 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." #~ msgstr "Rapportera inte fel i denna fil till USB Loader GX teamet."

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: kyogc\n" "Last-Translator: kyogc\n"
"Language-Team: \n" "Language-Team: \n"
@ -46,6 +46,9 @@ msgstr "(青少年 12歲以上)"
msgid "20 min" msgid "20 min"
msgstr "20分鐘" msgstr "20分鐘"
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "(青年 16歲以上)" msgstr "(青年 16歲以上)"
@ -55,6 +58,9 @@ msgstr "3分鐘"
msgid "30 min" msgid "30 min"
msgstr "30分鐘" msgstr "30分鐘"
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "3D封面" msgstr "3D封面"
@ -284,9 +290,6 @@ msgstr "無法設置USB"
msgid "Cover Download" msgid "Cover Download"
msgstr "下載封面" msgstr "下載封面"
msgid "Cover Path"
msgstr "封面路徑"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "變更封面路徑" msgstr "變更封面路徑"
@ -911,6 +914,9 @@ msgstr ""
msgid "Sept" msgid "Sept"
msgstr "九月" msgstr "九月"
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "設定背景音樂" msgstr "設定背景音樂"
@ -1194,6 +1200,9 @@ msgstr "剩餘空間 總容量"
msgid "seconds left" msgid "seconds left"
msgstr "剩餘秒數" msgstr "剩餘秒數"
#~ msgid "Cover Path"
#~ msgstr "封面路徑"
#~ msgid "Don't bother the USB Loader GX Team about errors in this file." #~ msgid "Don't bother the USB Loader GX Team about errors in this file."
#~ msgstr "檔案錯誤" #~ msgstr "檔案錯誤"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-09-19 14:00+0700\n"
"Last-Translator: Nitro_subzero \n" "Last-Translator: Nitro_subzero \n"
"Language-Team: Nitro_subzero\n" "Language-Team: Nitro_subzero\n"
@ -46,6 +46,9 @@ msgstr "2 (วัยรุ่น 12+)"
msgid "20 min" msgid "20 min"
msgstr "20 นาที" msgstr "20 นาที"
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "3 (เต็มวัย 16+)" msgstr "3 (เต็มวัย 16+)"
@ -55,6 +58,9 @@ msgstr "3 นาที"
msgid "30 min" msgid "30 min"
msgstr "30 นาที" msgstr "30 นาที"
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "หน้าปก 3D" msgstr "หน้าปก 3D"
@ -284,9 +290,6 @@ msgstr "ไม่สามารถตั้งค่า USB ได้"
msgid "Cover Download" msgid "Cover Download"
msgstr "ดาวน์โหลดปก" msgstr "ดาวน์โหลดปก"
msgid "Cover Path"
msgstr "ที่เก็บ ปก"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "ที่เก็บ ปก ถูกเปลี่ยนแปลง" msgstr "ที่เก็บ ปก ถูกเปลี่ยนแปลง"
@ -911,6 +914,9 @@ msgstr "DOL ที่เลือก"
msgid "Sept" msgid "Sept"
msgstr "กย." msgstr "กย."
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "เลือกเป็น Background music?" msgstr "เลือกเป็น Background music?"
@ -1194,6 +1200,9 @@ msgstr "ของ"
msgid "seconds left" msgid "seconds left"
msgstr "วินาทีที่เหลือ" msgstr "วินาทีที่เหลือ"
#~ msgid "Cover Path"
#~ msgstr "ที่เก็บ ปก"
#~ msgid "Don't bother the USB Loader GX Team about errors in this file." #~ msgid "Don't bother the USB Loader GX Team about errors in this file."
#~ msgstr "อย่ารบกวนผู้พัฒนา USB Loader GX ถ้ามีข้อผิดพลาดกับไฟล์นี้ " #~ msgstr "อย่ารบกวนผู้พัฒนา USB Loader GX ถ้ามีข้อผิดพลาดกับไฟล์นี้ "

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: USB Loader GX\n" "Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2009-07-18 15:18+0200\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
@ -46,6 +46,9 @@ msgstr ""
msgid "20 min" msgid "20 min"
msgstr "" msgstr ""
msgid "2D Cover Path"
msgstr ""
msgid "3 (Mature 16+)" msgid "3 (Mature 16+)"
msgstr "" msgstr ""
@ -55,6 +58,9 @@ msgstr ""
msgid "30 min" msgid "30 min"
msgstr "" msgstr ""
msgid "3D Cover Path"
msgstr ""
msgid "3D Covers" msgid "3D Covers"
msgstr "3B Kapaklar" msgstr "3B Kapaklar"
@ -284,9 +290,6 @@ msgstr ""
msgid "Cover Download" msgid "Cover Download"
msgstr "Kapak Indirme" msgstr "Kapak Indirme"
msgid "Cover Path"
msgstr "Kapak Yolu"
msgid "Coverpath Change" msgid "Coverpath Change"
msgstr "" msgstr ""
@ -911,6 +914,9 @@ msgstr ""
msgid "Sept" msgid "Sept"
msgstr "" msgstr ""
msgid "Set Search-Filter"
msgstr ""
msgid "Set as backgroundmusic?" msgid "Set as backgroundmusic?"
msgstr "" msgstr ""
@ -1194,6 +1200,9 @@ msgstr "/"
msgid "seconds left" msgid "seconds left"
msgstr "saniye kaldi" msgstr "saniye kaldi"
#~ msgid "Cover Path"
#~ msgstr "Kapak Yolu"
#~ msgid "No partitions found" #~ msgid "No partitions found"
#~ msgstr "Bölüm bulunamadi" #~ msgstr "Bölüm bulunamadi"

View File

@ -90,8 +90,8 @@ FreeTypeGX::~FreeTypeGX() {
*/ */
wchar_t* FreeTypeGX::charToWideChar(char* strChar) { wchar_t* FreeTypeGX::charToWideChar(char* strChar) {
wchar_t *strWChar; wchar_t *strWChar;
strWChar = new wchar_t[strlen(strChar) + 1]; try {strWChar = new wchar_t[strlen(strChar) + 1];}
catch (...) { return 0; }
// UTF-8 // UTF-8
int bt; int bt;
bt = mbstowcs(strWChar, strChar, strlen(strChar)); bt = mbstowcs(strWChar, strChar, strlen(strChar));

View File

@ -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;
}

View File

@ -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

View File

@ -42,14 +42,14 @@ int CheatMenu(const char * gameID) {
GuiTrigger trigB; GuiTrigger trigB;
trigB.SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B); 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); backBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
GuiImage backBtnImg(&btnOutline); GuiImage backBtnImg(&btnOutline);
GuiButton backBtn(&backBtnImg,&backBtnImg, 2, 3, -140, 400, &trigA, NULL, &btnClick,1); GuiButton backBtn(&backBtnImg,&backBtnImg, 2, 3, -140, 400, &trigA, NULL, &btnClick,1);
backBtn.SetLabel(&backBtnTxt); backBtn.SetLabel(&backBtnTxt);
backBtn.SetTrigger(&trigB); 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); createBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
GuiImage createBtnImg(&btnOutline); GuiImage createBtnImg(&btnOutline);
GuiButton createBtn(&createBtnImg,&createBtnImg, 2, 3, 160, 400, &trigA, NULL, &btnClick,1); GuiButton createBtn(&createBtnImg,&createBtnImg, 2, 3, 160, 400, &trigA, NULL, &btnClick,1);

View File

@ -173,6 +173,12 @@ extern const u32 keyboard_mediumkey_over_png_size;
extern const u8 keyboard_largekey_over_png[]; extern const u8 keyboard_largekey_over_png[];
extern const u32 keyboard_largekey_over_png_size; 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 u8 menu_button_png[];
extern const u32 menu_button_size; extern const u32 menu_button_size;
@ -311,6 +317,9 @@ extern const u32 not_favorite_png_size;
extern const u8 favIcon_png[]; extern const u8 favIcon_png[];
extern const u32 favIcon_png_size; extern const u32 favIcon_png_size;
extern const u8 searchIcon_png[];
extern const u32 searchIcon_png_size;
extern const u8 abcIcon_png[]; extern const u8 abcIcon_png[];
extern const u32 abcIcon_png_size; extern const u32 abcIcon_png_size;
@ -326,23 +335,8 @@ extern const u32 arrangeGrid_png_size;
extern const u8 arrangeCarousel_png[]; extern const u8 arrangeCarousel_png[];
extern const u32 arrangeCarousel_png_size; extern const u32 arrangeCarousel_png_size;
extern const u8 favIcon_gray_png[]; extern const u8 searchBar_png[];
extern const u32 favIcon_gray_png_size; extern const u32 searchBar_png_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 settings_title_png[]; extern const u8 settings_title_png[];
extern const u32 settings_title_png_size; extern const u32 settings_title_png_size;

View File

@ -138,7 +138,7 @@ int MenuHomebrewBrowse() {
} }
/*** Buttons ***/ /*** 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); backBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
GuiImage backBtnImg(&btnOutline); GuiImage backBtnImg(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 813 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1016 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 892 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 648 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 913 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 709 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 983 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 778 B

After

Width:  |  Height:  |  Size: 919 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 664 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -476,8 +476,6 @@ private:
GuiElement *element; GuiElement *element;
}; };
#define LOCK(e) SimpleLock LOCK(e) #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" //!Allows GuiElements to be grouped together into a "window"
class GuiWindow : public GuiElement class GuiWindow : public GuiElement
@ -571,6 +569,8 @@ class GuiImageData
//!Gets the image height //!Gets the image height
//!\return image height //!\return image height
int GetHeight(); int GetHeight();
//!Sets the image to grayscale
void SetGrayscale(void);
protected: protected:
u8 * data; //!< Image data u8 * data; //!< Image data
int height; //!< Height of image int height; //!< Height of image
@ -651,6 +651,7 @@ class GuiImage : public GuiElement
void SetStripe(int s); void SetStripe(int s);
s32 z; s32 z;
void SetSkew(int XX1, int YY1,int XX2, int YY2,int XX3, int YY3,int XX4, int YY4); 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 xx1;
int yy1; int yy1;
int xx2; int xx2;
@ -696,6 +697,7 @@ class GuiText : public GuiElement
//!\param t Text //!\param t Text
void SetText(const char * t); void SetText(const char * t);
void SetTextf(const char *format, ...) __attribute__((format(printf,2,3))); 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) //!Sets up preset values to be used by GuiText(t)
//!Useful when printing multiple text elements, all with the same attributes set //!Useful when printing multiple text elements, all with the same attributes set
//!\param sz Font size //!\param sz Font size
@ -771,7 +773,7 @@ class GuiTooltip : public GuiElement
public: public:
//!Constructor //!Constructor
//!\param t Text //!\param t Text
GuiTooltip(const char *t); GuiTooltip(const char *t, int Alpha=255);
//!Destructor //!Destructor
~ GuiTooltip(); ~ GuiTooltip();
@ -889,6 +891,7 @@ class GuiButton : public GuiElement
//!Deactivate/Activate pointing on Games while B scrolling //!Deactivate/Activate pointing on Games while B scrolling
void ScrollIsOn(int f); 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 XX1, int YY1,int XX2, int YY2,int XX3, int YY3,int XX4, int YY4);
void SetSkew(int *skew /* int skew[8] */ );
protected: protected:
GuiImage * image; //!< Button image (default) GuiImage * image; //!< Button image (default)
GuiImage * imageOver; //!< Button image for STATE_SELECTED GuiImage * imageOver; //!< Button image for STATE_SELECTED

View File

@ -44,6 +44,8 @@ GuiButton::GuiButton(int w, int h)
selectable = true; selectable = true;
holdable = false; holdable = false;
clickable = true; 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) 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 = img;
image->SetParent(this); image->SetParent(this);
imageOver = imgOver; imageOver = imgOver;
imageOver->SetParent(this); if(imageOver) imageOver->SetParent(this);
imageHold = NULL; imageHold = NULL;
imageClick = NULL; imageClick = NULL;
icon = NULL; icon = NULL;
@ -87,6 +89,7 @@ GuiButton::GuiButton(GuiImage* img, GuiImage* imgOver, int hor, int vert, int x,
effectAmountOver = 4; effectAmountOver = 4;
effectTargetOver = 110; 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) 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 = img;
image->SetParent(this); image->SetParent(this);
imageOver = imgOver; imageOver = imgOver;
imageOver->SetParent(this); if(imageOver) imageOver->SetParent(this);
imageHold = NULL; imageHold = NULL;
imageClick = NULL; imageClick = NULL;
icon = NULL; icon = NULL;
@ -135,6 +138,8 @@ GuiButton::GuiButton(GuiImage* img, GuiImage* imgOver, int hor, int vert, int x,
toolTip->SetParent(this); toolTip->SetParent(this);
toolTip->SetAlignment(h_align, v_align); toolTip->SetAlignment(h_align, v_align);
toolTip->SetPosition(ttx,tty); 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) 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->xx1 = XX1;
image->yy1 = YY1; image->yy1 = YY1;
image->xx2 = XX2; 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->yy3 = YY3;
image->xx4 = XX4; image->xx4 = XX4;
image->yy4 = YY4; image->yy4 = YY4;
}
}
void GuiButton::SetSkew(int *skew)
{
if(image)
image->SetSkew(skew);
} }
@ -308,7 +321,7 @@ void GuiButton::Draw()
void GuiButton::DrawTooltip() void GuiButton::DrawTooltip()
{ {
LOCK(this); LOCK(this);
if(state == STATE_SELECTED && toolTip) if(this->IsVisible() && state == STATE_SELECTED && toolTip)
{ {
if (time2 == 0) if (time2 == 0)
{ {
@ -344,7 +357,7 @@ void GuiButton::ScrollIsOn(int f)
void GuiButton::Update(GuiTrigger * t) void GuiButton::Update(GuiTrigger * t)
{ {
LOCK(this); LOCK(this);
if(state == STATE_CLICKED || state == STATE_DISABLED || !t) if(!this->IsVisible() || state == STATE_CLICKED || state == STATE_DISABLED || !t)
return; return;
else if(parentElement && parentElement->GetState() == STATE_DISABLED) else if(parentElement && parentElement->GetState() == STATE_DISABLED)
return; return;

View File

@ -179,17 +179,17 @@ GuiCustomOptionBrowser::GuiCustomOptionBrowser(int w, int h, customOptionList *
for(int i=0; i < size; i++) 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]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
optionTxt[i]->SetPosition(24,0); optionTxt[i]->SetPosition(24,0);
optionTxt[i]->SetMaxWidth(bgOptionsImg->GetWidth() - (coL2+24), GuiText::DOTTED); optionTxt[i]->SetMaxWidth(bgOptionsImg->GetWidth() - (coL2+24), GuiText::DOTTED);
optionBg[i] = new GuiImage(bgOptionsEntry); 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); 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); optionValOver[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
optionBtn[i] = new GuiButton(width-28,GAMESELECTSIZE); optionBtn[i] = new GuiButton(width-28,GAMESELECTSIZE);

View File

@ -13,7 +13,7 @@
/** /**
* Constructor for the Object class. * Constructor for the Object class.
*/ */
mutex_t GuiElement::mutex = 0; mutex_t GuiElement::mutex = LWP_MUTEX_NULL;
GuiElement::GuiElement() GuiElement::GuiElement()
{ {
xoffset = 0; xoffset = 0;
@ -65,7 +65,7 @@ GuiElement::GuiElement()
// default alignment - align to top left // default alignment - align to top left
alignmentVert = ALIGN_TOP; alignmentVert = ALIGN_TOP;
alignmentHor = ALIGN_LEFT; alignmentHor = ALIGN_LEFT;
if(mutex == 0) LWP_MutexInit(&mutex, true); if(mutex == LWP_MUTEX_NULL) LWP_MutexInit(&mutex, true);
} }
/** /**

View File

@ -124,13 +124,13 @@ GuiGameBrowser::GuiGameBrowser(int w, int h, struct discHdr * l, int gameCnt, co
for(int i=0; i < pagesize; i++) 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]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
gameTxt[i]->SetPosition(24,0); gameTxt[i]->SetPosition(24,0);
gameTxt[i]->SetMaxWidth(maxTextWidth, GuiText::DOTTED); 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]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
gameTxtOver[i]->SetPosition(24,0); gameTxtOver[i]->SetPosition(24,0);
gameTxtOver[i]->SetMaxWidth(maxTextWidth, GuiText::SCROLL); gameTxtOver[i]->SetMaxWidth(maxTextWidth, GuiText::SCROLL);
@ -413,7 +413,7 @@ void GuiGameBrowser::Update(GuiTrigger * t)
game[selectedItem+1]->SetState(STATE_SELECTED, t->chan); game[selectedItem+1]->SetState(STATE_SELECTED, t->chan);
selectedItem++; selectedItem++;
} }
scrollbarBoxBtn->Draw(); // scrollbarBoxBtn->Draw();
usleep(10000 * scrolldelay); usleep(10000 * scrolldelay);
} }
if (!(ButtonsHold() & WPAD_BUTTON_A)) if (!(ButtonsHold() & WPAD_BUTTON_A))
@ -436,7 +436,7 @@ void GuiGameBrowser::Update(GuiTrigger * t)
game[selectedItem-1]->SetState(STATE_SELECTED, t->chan); game[selectedItem-1]->SetState(STATE_SELECTED, t->chan);
selectedItem--; selectedItem--;
} }
scrollbarBoxBtn->Draw(); // scrollbarBoxBtn->Draw();
usleep(10000 * scrolldelay); usleep(10000 * scrolldelay);
} }
if (!(ButtonsHold() & WPAD_BUTTON_A)) if (!(ButtonsHold() & WPAD_BUTTON_A))
@ -470,7 +470,7 @@ void GuiGameBrowser::Update(GuiTrigger * t)
game[selectedItem-1]->SetState(STATE_SELECTED, t->chan); game[selectedItem-1]->SetState(STATE_SELECTED, t->chan);
selectedItem--; selectedItem--;
} }
scrollbarBoxBtn->Draw(); // scrollbarBoxBtn->Draw();
usleep(10000 * scrolldelay); usleep(10000 * scrolldelay);
} }
} }
@ -491,7 +491,7 @@ void GuiGameBrowser::Update(GuiTrigger * t)
game[selectedItem+1]->SetState(STATE_SELECTED, t->chan); game[selectedItem+1]->SetState(STATE_SELECTED, t->chan);
selectedItem++; selectedItem++;
} }
scrollbarBoxBtn->Draw(); // scrollbarBoxBtn->Draw();
usleep(10000 * scrolldelay); usleep(10000 * scrolldelay);
} }
} }

View File

@ -7,7 +7,7 @@
class GuiGameBrowser : public GuiElement class GuiGameBrowser : public GuiElement
{ {
public: 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(); ~GuiGameBrowser();
int FindMenuItem(int c, int d); int FindMenuItem(int c, int d);
int GetClickedOption(); int GetClickedOption();

View File

@ -8,12 +8,13 @@
#include "gui.h" #include "gui.h"
#include "../wpad.h" #include "../wpad.h"
#include "../menu.h"
#include <unistd.h> #include <unistd.h>
#include "gui_image_async.h"
#include "gui_gamecarousel.h" #include "gui_gamecarousel.h"
#include "../settings/cfg.h" #include "../settings/cfg.h"
#include "../main.h" #include "../main.h"
#include "../buffer.h"
#include <string.h> #include <string.h>
#include <math.h> #include <math.h>
@ -27,24 +28,34 @@
#define SPEED_STEP 4 #define SPEED_STEP 4
#define SPEED_LIMIT 250 #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. * 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; width = w;
height = h; height = h;
gameCnt = count; gameCnt = count;
gameList = l; gameList = l;
pagesize = (gameCnt < PAGESIZE) ? gameCnt : PAGESIZE; pagesize = (gameCnt < 11) ? gameCnt : 11;
listOffset = 0; listOffset = 0;
selectable = true; selectable = true;
selectedItem = 0; selectedItem = -1;
if (selectedItem==0)selectedItem=(pagesize+1)/2;
focus = 1; // allow focus focus = 1; // allow focus
firstPic = 0;
clickedItem = -1; clickedItem = -1;
speed = SHIFT_SPEED;
speed = 0;
char imgPath[100]; char imgPath[100];
trigA = new GuiTrigger; trigA = new GuiTrigger;
@ -96,31 +107,65 @@ GuiGameCarousel::GuiGameCarousel(int w, int h, struct discHdr * l, int count, co
btnRight->SetTrigger(trigPlus); btnRight->SetTrigger(trigPlus);
btnRight->SetEffectGrow(); btnRight->SetEffectGrow();
ResumeBufferThread(listOffset); gamename = new GuiText(" ", 18, THEME.info);
ttgame = new GuiTooltip(" ");
gamename = new GuiText(" ", 18, (GXColor) {THEME.info_r, THEME.info_g, THEME.info_b, 255});
gamename->SetParent(this); gamename->SetParent(this);
gamename->SetAlignment(ALIGN_CENTRE, ALIGN_TOP); gamename->SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
gamename->SetPosition(0, 330); gamename->SetPosition(0, 330);
gamename->SetMaxWidth(280, GuiText::DOTTED); gamename->SetMaxWidth(280, GuiText::DOTTED);
gameIndex = new int[pagesize]; gameIndex = new int[pagesize];
game = new GuiButton * [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] = new GuiButton(122,244);
game[i]->SetParent(this); game[i]->SetParent(this);
game[i]->SetAlignment(ALIGN_CENTRE,ALIGN_MIDDLE); game[i]->SetAlignment(ALIGN_CENTRE,ALIGN_MIDDLE);
game[i]->SetPosition(0,740); game[i]->SetPosition(0,740);
game[i]->SetImage(ImageBuffer((listOffset+i) % gameCnt)); game[i]->SetImage(coverImg[i]);
game[i]->SetScale(SCALE); game[i]->SetScale(SCALE);
game[i]->SetRumble(false); game[i]->SetRumble(false);
game[i]->SetTrigger(trigA); game[i]->SetTrigger(trigA);
game[i]->SetSoundClick(btnSoundClick); game[i]->SetSoundClick(btnSoundClick);
game[i]->SetClickable(true); game[i]->SetClickable(true);
game[i]->SetEffect(EFFECT_GOROUND, IN_SPEED, 90-(pagesize-2*i-1)*DEG_OFFSET/2, RADIUS, 180, 1, 0, RADIUS); 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() GuiGameCarousel::~GuiGameCarousel()
{ {
HaltBufferThread();
delete imgRight; delete imgRight;
delete imgLeft; delete imgLeft;
delete btnLeftImg; delete btnLeftImg;
@ -146,15 +189,18 @@ GuiGameCarousel::~GuiGameCarousel()
delete trigMinus; delete trigMinus;
delete btnSoundClick; delete btnSoundClick;
delete btnSoundOver; delete btnSoundOver;
delete ttgame;
delete gamename; delete gamename;
for(int i=0; i<pagesize; i++) { for(int i=0; i<pagesize; i++) {
delete coverImg[i];
delete titleTT[i];
delete game[i]; delete game[i];
} }
delete [] gameIndex; delete [] gameIndex;
delete [] coverImg;
delete [] game; delete [] game;
} }
@ -168,7 +214,7 @@ void GuiGameCarousel::SetFocus(int f)
for(int i=0; i<pagesize; i++) for(int i=0; i<pagesize; i++)
game[i]->ResetState(); game[i]->ResetState();
if(f == 1) if(f == 1 && selectedItem>=0)
game[selectedItem]->SetState(STATE_SELECTED); game[selectedItem]->SetState(STATE_SELECTED);
} }
@ -189,22 +235,20 @@ void GuiGameCarousel::ResetState()
int GuiGameCarousel::GetOffset() int GuiGameCarousel::GetOffset()
{ {
LOCK(this);
return listOffset; return listOffset;
} }
int GuiGameCarousel::GetClickedOption() int GuiGameCarousel::GetClickedOption()
{ {
LOCK(this);
int found = -1; int found = -1;
if (clickedItem>=0 && clickedItem<=pagesize){ if (clickedItem>=0)
if (game[(clickedItem+1) % pagesize]->GetState()==STATE_SELECTED){ {
found = (clickedItem+listOffset+1) % gameCnt; game[clickedItem]->SetState(STATE_SELECTED);
game[(clickedItem+1) % pagesize]->SetState(STATE_SELECTED); found = gameIndex[clickedItem];
game[clickedItem]->SetState(STATE_SELECTED); clickedItem=-1;
} else {
game[clickedItem]->SetState(STATE_SELECTED);
found= (clickedItem+listOffset) % gameCnt;}
clickedItem=-1;
} }
return found; return found;
} }
@ -212,41 +256,20 @@ int GuiGameCarousel::GetClickedOption()
int GuiGameCarousel::GetSelectedOption() int GuiGameCarousel::GetSelectedOption()
{ {
LOCK(this);
int found = -1; int found = -1;
for(int i=pagesize-1; i>-1; i--) { for(int i=0; i<pagesize; i++)
if(game[i]->GetState() == STATE_SELECTED) { {
if(game[i]->GetState() == STATE_SELECTED)
{
game[i]->SetState(STATE_SELECTED); game[i]->SetState(STATE_SELECTED);
found = (listOffset+i) % gameCnt; found = gameIndex[i];
break; break;
} }
} }
return found; 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 * Draw the button on screen
*/ */
@ -256,31 +279,22 @@ void GuiGameCarousel::Draw()
if(!this->IsVisible() || !gameCnt) if(!this->IsVisible() || !gameCnt)
return; return;
int next = listOffset; for(int i=0; i<pagesize; i++)
game[i]->Draw();
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;
}
//!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(); gamename->Draw();
if(gameCnt > pagesize) { if(gameCnt > 6)
{
btnRight->Draw(); btnRight->Draw();
btnLeft->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(); this->UpdateEffects();
} }
@ -292,136 +306,216 @@ void GuiGameCarousel::Update(GuiTrigger * t)
if(state == STATE_DISABLED || !t || !gameCnt) if(state == STATE_DISABLED || !t || !gameCnt)
return; 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); btnRight->Update(t);
btnLeft->Update(t); btnLeft->Update(t);
if(btnRight->GetState() == STATE_CLICKED) { if(game[0]->GetEffect() & EFFECT_GOROUND || game[pagesize-1]->GetEffect() & EFFECT_GOROUND)
if(Settings.xflip==sysmenu ||Settings.xflip==yes) { {
NewOffset(listOffset, 1); return; // skip when rotate
} 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;
}
} }
///Tooltip stuff // find selected + clicked
struct discHdr *header = &gameList[this->GetSelectedOption()]; int selectedItem_old = selectedItem;
ttgame->SetText(get_title(header)); selectedItem = -1;
game[selectedItem]->SetToolTip(ttgame, 0, 0); clickedItem = -1;
ttgame->SetPosition(0, 20); for(int i=pagesize-1; i>=0; i--)
if(selectedItem < PAGESIZE/2+1) {
ttgame->SetAlignment(ALIGN_LEFT, ALIGN_TOP); game[i]->Update(t);
else if(game[i]->GetState() == STATE_SELECTED)
ttgame->SetAlignment(ALIGN_RIGHT, ALIGN_TOP); {
selectedItem = i;
///GameText }
gamename->SetText(get_title(header)); if(game[i]->GetState() == STATE_CLICKED)
{
/// navigation clickedItem = i;
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;
} }
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)) /// OnOver-Effect + GameText + Tooltop
||((btnLeft->GetState() == STATE_CLICKED) &&((Settings.xflip==sysmenu)||(Settings.xflip==yes)))){ if(selectedItem_old != selectedItem)
{
u16 buttons = ButtonsHold(); if(selectedItem>=0)
if(!((buttons & WPAD_BUTTON_A) || (buttons & WPAD_BUTTON_MINUS) || t->Left() || {
(buttons & WPAD_BUTTON_PLUS) || t->Right())) { game[selectedItem]->SetEffect(EFFECT_SCALE, 1, 130);
btnLeft->ResetState(); char *gameTitle = get_title(&gameList[gameIndex[selectedItem]]);
btnRight->ResetState(); gamename->SetText(gameTitle);
speed = SHIFT_SPEED;
return;
} }
else
for(int i=0; i<pagesize; i++) { gamename->SetText((char*)NULL);
game[i]->StopEffect(); 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) if(updateCB)
updateCB(this); updateCB(this);
} }

View File

@ -3,7 +3,7 @@
#include "gui.h" #include "gui.h"
#include "../usbloader/disc.h" #include "../usbloader/disc.h"
class GuiImageAsync;
class GuiGameCarousel : public GuiElement class GuiGameCarousel : public GuiElement
{ {
public: public:
@ -20,11 +20,11 @@ class GuiGameCarousel : public GuiElement
void Reload(struct discHdr * l, int count); void Reload(struct discHdr * l, int count);
//GuiText * optionVal[PAGESIZE]; //GuiText * optionVal[PAGESIZE];
protected: protected:
GuiImageData noCover;
int selectedItem; int selectedItem;
int listOffset; int listOffset;
int scrollbaron; int scrollbaron;
int pagesize; int pagesize;
int firstPic;
int speed; int speed;
int clickedItem; int clickedItem;
@ -32,10 +32,9 @@ class GuiGameCarousel : public GuiElement
int gameCnt; int gameCnt;
int * gameIndex; int * gameIndex;
GuiButton ** game; GuiButton ** game;
GuiTooltip ** titleTT;
GuiTooltip * ttgame; GuiImageAsync ** coverImg;
GuiText * gamename; GuiText * gamename;

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,7 @@
#include "gui.h" #include "gui.h"
#include "../usbloader/disc.h" #include "../usbloader/disc.h"
class GuiImageAsync;
class GuiGameGrid : public GuiElement class GuiGameGrid : public GuiElement
{ {
public: public:
@ -17,32 +17,26 @@ class GuiGameGrid : public GuiElement
void Draw(); void Draw();
void Update(GuiTrigger * t); void Update(GuiTrigger * t);
int GetOffset(); int GetOffset();
void Reload(struct discHdr * l, int count); void Reload(struct discHdr * l, int count, int Rows, int ListOffset);
void ChangeRows(int n); void ChangeRows(int n);
protected: protected:
GuiImageData noCover;
int selectedItem; int selectedItem;
int listOffset; int listOffset;
int scrollbaron;
int pagesize; int pagesize;
int firstPic;
int speed;
int clickedItem; int clickedItem;
int rows; int rows;
int drawTTs; int goLeft;
int goRight;
struct discHdr * gameList; struct discHdr * gameList;
int gameCnt; int gameCnt;
int * gameIndex; int * gameIndex;
int * bob;
GuiButton ** game; GuiButton ** game;
GuiTooltip ** titleTT;
GuiImage ** coverImg; GuiImageAsync ** coverImg;
GuiImageData ** cover;
GuiText * debugTxt;
GuiButton * btnRight; GuiButton * btnRight;
GuiButton * btnLeft; GuiButton * btnLeft;
@ -55,9 +49,6 @@ class GuiGameGrid : public GuiElement
GuiImageData * imgLeft; GuiImageData * imgLeft;
GuiImageData * imgRight; GuiImageData * imgRight;
GuiTooltip * titleTT;
GuiSound * btnSoundOver; GuiSound * btnSoundOver;
GuiSound * btnSoundClick; GuiSound * btnSoundClick;
GuiTrigger * trigA; GuiTrigger * trigA;

View File

@ -34,9 +34,18 @@ GuiImage::GuiImage()
GuiImage::GuiImage(GuiImageData * img) GuiImage::GuiImage(GuiImageData * img)
{ {
image = img->GetImage(); if(img)
width = img->GetWidth(); {
height = img->GetHeight(); image = img->GetImage();
width = img->GetWidth();
height = img->GetHeight();
}
else
{
image = NULL;
width = 0;
height = 0;
}
imageangle = 0; imageangle = 0;
tile = -1; tile = -1;
stripe = 0; stripe = 0;
@ -111,13 +120,8 @@ GuiImage::GuiImage(int w, int h, GXColor c)
DCFlushRange(image, len); 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(); width = srcimage.GetWidth();
height = srcimage.GetHeight(); height = srcimage.GetHeight();
int len = width * height * 4; int len = width * height * 4;
@ -141,13 +145,8 @@ GuiImage::GuiImage(GuiImage &srcimage)
imgType = IMAGE_COPY; 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(); width = srcimage->GetWidth();
height = srcimage->GetHeight(); height = srcimage->GetHeight();
int len = width * height * 4; int len = width * height * 4;
@ -307,7 +306,7 @@ void GuiImage::SetGrayscale(void)
for(int x = 0; x < width; x++) { for(int x = 0; x < width; x++) {
for(int y = 0; y < height; y++) { 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.r = *(image+offset+1);
color.g = *(image+offset+32); color.g = *(image+offset+32);
color.b = *(image+offset+33); 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) void GuiImage::SetSkew(int XX1, int YY1,int XX2, int YY2,int XX3, int YY3,int XX4, int YY4)
{ {
xx1 = XX1; xx1 = XX1;
yy1 = YY1; yy1 = YY1;
xx2 = XX2; xx2 = XX2;
yy2 = YY2; yy2 = YY2;
xx3 = XX3; xx3 = XX3;
yy3 = YY3; yy3 = YY3;
xx4 = XX4; xx4 = XX4;
yy4 = YY4; yy4 = YY4;
}
void GuiImage::SetSkew(int *skew)
{
xx1 = *skew++;
yy1 = *skew++;
xx2 = *skew++;
yy2 = *skew++;
xx3 = *skew++;
yy3 = *skew++;
xx4 = *skew++;
yy4 = *skew;
} }

View 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); cant 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);
}

View 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_*/

View File

@ -179,3 +179,23 @@ int GuiImageData::GetHeight()
{ {
return height; 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;
}
}
}

View 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;
}*/

View 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;
};

View File

@ -149,6 +149,23 @@ void GuiText::SetTextf(const char *format, ...)
} }
va_end(va); 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) void GuiText::SetPresets(int sz, GXColor c, int w, int wrap, u16 s, int h, int v)
{ {

View File

@ -18,7 +18,7 @@ static GuiImageData tooltipRight(tooltip_right_png);
/** /**
* Constructor for the GuiTooltip class. * Constructor for the GuiTooltip class.
*/ */
GuiTooltip::GuiTooltip(const char *t) GuiTooltip::GuiTooltip(const char *t, int Alpha/*=255*/)
: :
leftImage(&tooltipLeft), tileImage(&tooltipTile), rightImage(&tooltipRight) leftImage(&tooltipLeft), tileImage(&tooltipTile), rightImage(&tooltipRight)
{ {
@ -31,6 +31,7 @@ leftImage(&tooltipLeft), tileImage(&tooltipTile), rightImage(&tooltipRight)
tileImage.SetParentAngle(false); tileImage.SetParentAngle(false);
rightImage.SetParentAngle(false); rightImage.SetParentAngle(false);
SetText(t); SetText(t);
SetAlpha(Alpha);
} }
/* /*

View File

@ -16,7 +16,9 @@
#include "libwiigui/gui_gamegrid.h" #include "libwiigui/gui_gamegrid.h"
#include "libwiigui/gui_gamecarousel.h" #include "libwiigui/gui_gamecarousel.h"
#include "libwiigui/gui_gamebrowser.h" #include "libwiigui/gui_gamebrowser.h"
#include "libwiigui/gui_searchbar.h"
#include "libwiigui/gui_customoptionbrowser.h" #include "libwiigui/gui_customoptionbrowser.h"
#include "libwiigui/gui_image_async.h"
#include "usbloader/usbstorage.h" #include "usbloader/usbstorage.h"
#include "usbloader/wbfs.h" #include "usbloader/wbfs.h"
#include "usbloader/disc.h" #include "usbloader/disc.h"
@ -44,7 +46,6 @@
#include "wpad.h" #include "wpad.h"
#include "listfiles.h" #include "listfiles.h"
#include "fatmounter.h" #include "fatmounter.h"
#include "buffer.h"
#include "xml/xml.h" #include "xml/xml.h"
#include "wad/title.h" #include "wad/title.h"
@ -80,8 +81,6 @@ extern FreeTypeGX *fontClock;
extern u8 shutdown; extern u8 shutdown;
extern u8 reset; extern u8 reset;
extern int cntMissFiles; extern int cntMissFiles;
extern struct discHdr * gameList;
extern u32 gameCnt;
extern s32 gameSelected, gameStart; extern s32 gameSelected, gameStart;
extern const u8 data1; extern const u8 data1;
extern u8 boothomebrew; extern u8 boothomebrew;
@ -129,7 +128,7 @@ static void * UpdateGUI (void *arg) {
} else { } else {
if (!ExitRequested) { if (!ExitRequested) {
mainWindow->Draw(); 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(); mainWindow->DrawTooltip();
#ifdef HW_RVL #ifdef HW_RVL
@ -197,7 +196,6 @@ static void * UpdateGUI (void *arg) {
void InitGUIThreads() { void InitGUIThreads() {
LWP_CreateThread(&guithread, UpdateGUI, NULL, NULL, 0, 75); LWP_CreateThread(&guithread, UpdateGUI, NULL, NULL, 0, 75);
InitProgressThread(); InitProgressThread();
InitBufferThread();
InitNetworkThread(); InitNetworkThread();
if (Settings.autonetwork) if (Settings.autonetwork)
@ -247,9 +245,75 @@ void rockout(int f = 0) {
ResumeGui(); 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 * 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() { int MenuDiscList() {
@ -268,7 +332,7 @@ int MenuDiscList() {
WDVD_GetCoverStatus(&covert); WDVD_GetCoverStatus(&covert);
u32 covertOld=covert; u32 covertOld=covert;
wchar_t searchChar;
//SCREENSAVER //SCREENSAVER
//WPad_SetIdleTime(300); //needs the time in seconds //WPad_SetIdleTime(300); //needs the time in seconds
int check = 0; //to skip the first cycle when wiimote isn't completely connected 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); snprintf(imgPath, sizeof(imgPath), "%sfavIcon.png", CFG.theme_path);
GuiImageData imgfavIcon(imgPath, favIcon_png); GuiImageData imgfavIcon(imgPath, favIcon_png);
snprintf(imgPath, sizeof(imgPath), "%sfavIcon_gray.png", CFG.theme_path); // snprintf(imgPath, sizeof(imgPath), "%sfavIcon_gray.png", CFG.theme_path);
GuiImageData imgfavIcon_gray(imgPath, favIcon_gray_png); // 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); snprintf(imgPath, sizeof(imgPath), "%sabcIcon.png", CFG.theme_path);
GuiImageData imgabcIcon(imgPath, abcIcon_png); GuiImageData imgabcIcon(imgPath, abcIcon_png);
snprintf(imgPath, sizeof(imgPath), "%sabcIcon_gray.png", CFG.theme_path); // snprintf(imgPath, sizeof(imgPath), "%sabcIcon_gray.png", CFG.theme_path);
GuiImageData imgabcIcon_gray(imgPath, abcIcon_gray_png); // GuiImageData imgabcIcon_gray(imgPath, abcIcon_gray_png);
snprintf(imgPath, sizeof(imgPath), "%splayCountIcon.png", CFG.theme_path); snprintf(imgPath, sizeof(imgPath), "%splayCountIcon.png", CFG.theme_path);
GuiImageData imgplayCountIcon(imgPath, playCountIcon_png); GuiImageData imgplayCountIcon(imgPath, playCountIcon_png);
snprintf(imgPath, sizeof(imgPath), "%splayCountIcon_gray.png", CFG.theme_path); // snprintf(imgPath, sizeof(imgPath), "%splayCountIcon_gray.png", CFG.theme_path);
GuiImageData imgplayCountIcon_gray(imgPath, playCountIcon_gray_png); // GuiImageData imgplayCountIcon_gray(imgPath, playCountIcon_gray_png);
snprintf(imgPath, sizeof(imgPath), "%sarrangeGrid.png", CFG.theme_path); snprintf(imgPath, sizeof(imgPath), "%sarrangeGrid.png", CFG.theme_path);
GuiImageData imgarrangeGrid(imgPath, arrangeGrid_png); GuiImageData imgarrangeGrid(imgPath, arrangeGrid_png);
snprintf(imgPath, sizeof(imgPath), "%sarrangeGrid_gray.png", CFG.theme_path); // snprintf(imgPath, sizeof(imgPath), "%sarrangeGrid_gray.png", CFG.theme_path);
GuiImageData imgarrangeGrid_gray(imgPath, arrangeGrid_gray_png); // GuiImageData imgarrangeGrid_gray(imgPath, arrangeGrid_gray_png);
snprintf(imgPath, sizeof(imgPath), "%sarrangeList.png", CFG.theme_path); snprintf(imgPath, sizeof(imgPath), "%sarrangeList.png", CFG.theme_path);
GuiImageData imgarrangeList(imgPath, arrangeList_png); GuiImageData imgarrangeList(imgPath, arrangeList_png);
snprintf(imgPath, sizeof(imgPath), "%sarrangeList_gray.png", CFG.theme_path); // snprintf(imgPath, sizeof(imgPath), "%sarrangeList_gray.png", CFG.theme_path);
GuiImageData imgarrangeList_gray(imgPath, arrangeList_gray_png); // GuiImageData imgarrangeList_gray(imgPath, arrangeList_gray_png);
snprintf(imgPath, sizeof(imgPath), "%sarrangeCarousel.png", CFG.theme_path); snprintf(imgPath, sizeof(imgPath), "%sarrangeCarousel.png", CFG.theme_path);
GuiImageData imgarrangeCarousel(imgPath, arrangeCarousel_png); GuiImageData imgarrangeCarousel(imgPath, arrangeCarousel_png);
snprintf(imgPath, sizeof(imgPath), "%sarrangeCarousel_gray.png", CFG.theme_path); // snprintf(imgPath, sizeof(imgPath), "%sarrangeCarousel_gray.png", CFG.theme_path);
GuiImageData imgarrangeCarousel_gray(imgPath, arrangeCarousel_gray_png); // 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); snprintf(imgPath, sizeof(imgPath), "%sbrowser.png", CFG.theme_path);
GuiImageData homebrewImgData(imgPath, browser_png); GuiImageData homebrewImgData(imgPath, browser_png);
snprintf(imgPath, sizeof(imgPath), "%sbrowser_over.png", CFG.theme_path); snprintf(imgPath, sizeof(imgPath), "%sbrowser_over.png", CFG.theme_path);
@ -374,17 +446,17 @@ int MenuDiscList() {
char spaceinfo[30]; char spaceinfo[30];
sprintf(spaceinfo,"%.2fGB %s %.2fGB %s",freespace,tr("of"),(freespace+used),tr("free")); 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}); GuiText usedSpaceTxt(spaceinfo, 18, THEME.info);
usedSpaceTxt.SetAlignment(THEME.hddInfoAlign, ALIGN_TOP); usedSpaceTxt.SetAlignment(THEME.hddinfo_align, ALIGN_TOP);
usedSpaceTxt.SetPosition(THEME.hddInfo_x, THEME.hddInfo_y); usedSpaceTxt.SetPosition(THEME.hddinfo_x, THEME.hddinfo_y);
char GamesCnt[15]; char GamesCnt[15];
sprintf(GamesCnt,"%s: %i",tr("Games"), gameCnt); 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); GuiButton gamecntBtn(100,18);
gamecntBtn.SetAlignment(THEME.gameCntAlign, ALIGN_TOP); gamecntBtn.SetAlignment(THEME.gamecount_align, ALIGN_TOP);
gamecntBtn.SetPosition(THEME.gameCnt_x,THEME.gameCnt_y); gamecntBtn.SetPosition(THEME.gamecount_x,THEME.gamecount_y);
gamecntBtn.SetLabel(&gamecntTxt); gamecntBtn.SetLabel(&gamecntTxt);
gamecntBtn.SetEffectGrow(); gamecntBtn.SetEffectGrow();
gamecntBtn.SetTrigger(&trigA); gamecntBtn.SetTrigger(&trigA);
@ -460,21 +532,35 @@ int MenuDiscList() {
favoriteBtnTT.SetWidescreen(CFG.widescreen); favoriteBtnTT.SetWidescreen(CFG.widescreen);
favoriteBtnTT.SetAlpha(THEME.tooltipAlpha); favoriteBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage favoriteBtnImg(&imgfavIcon); GuiImage favoriteBtnImg(&imgfavIcon);
GuiImage favoriteBtnImg_g(&imgfavIcon_gray);
favoriteBtnImg.SetWidescreen(CFG.widescreen); favoriteBtnImg.SetWidescreen(CFG.widescreen);
GuiImage favoriteBtnImg_g(favoriteBtnImg);favoriteBtnImg_g.SetGrayscale();
// GuiImage favoriteBtnImg_g(&imgfavIcon_gray);
favoriteBtnImg_g.SetWidescreen(CFG.widescreen); 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); 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")); GuiTooltip abcBtnTT(tr("Sort alphabetically"));
if (Settings.wsprompt == yes) if (Settings.wsprompt == yes)
abcBtnTT.SetWidescreen(CFG.widescreen); abcBtnTT.SetWidescreen(CFG.widescreen);
abcBtnTT.SetAlpha(THEME.tooltipAlpha); abcBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage abcBtnImg(&imgabcIcon); GuiImage abcBtnImg(&imgabcIcon);
abcBtnImg.SetWidescreen(CFG.widescreen); 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); 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); abcBtn.SetAlpha(180);
GuiTooltip countBtnTT(tr("Sort order by most played")); GuiTooltip countBtnTT(tr("Sort order by most played"));
@ -483,9 +569,10 @@ int MenuDiscList() {
countBtnTT.SetAlpha(THEME.tooltipAlpha); countBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage countBtnImg(&imgplayCountIcon); GuiImage countBtnImg(&imgplayCountIcon);
countBtnImg.SetWidescreen(CFG.widescreen); 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); 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); countBtn.SetAlpha(180);
GuiTooltip listBtnTT(tr("Display as a list")); GuiTooltip listBtnTT(tr("Display as a list"));
@ -494,9 +581,10 @@ int MenuDiscList() {
listBtnTT.SetAlpha(THEME.tooltipAlpha); listBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage listBtnImg(&imgarrangeList); GuiImage listBtnImg(&imgarrangeList);
listBtnImg.SetWidescreen(CFG.widescreen); 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); 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); listBtn.SetAlpha(180);
GuiTooltip gridBtnTT(tr("Display as a grid")); GuiTooltip gridBtnTT(tr("Display as a grid"));
@ -505,21 +593,23 @@ int MenuDiscList() {
gridBtnTT.SetAlpha(THEME.tooltipAlpha); gridBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage gridBtnImg(&imgarrangeGrid); GuiImage gridBtnImg(&imgarrangeGrid);
gridBtnImg.SetWidescreen(CFG.widescreen); 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); 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); gridBtn.SetAlpha(180);
GuiTooltip carouselBtnTT(tr("Display as a carousel")); GuiTooltip carouselBtnTT(tr("Display as a carousel"));
if (Settings.wsprompt == yes) if (Settings.wsprompt == yes)
carouselBtnTT.SetWidescreen(CFG.widescreen); carouselBtnTT.SetWidescreen(CFG.widescreen);
carouselBtnTT.SetAlpha(THEME.tooltipAlpha); carouselBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiImage carouselBtnImg(&imgarrangeCarousel); GuiImage carouselBtnImg(&imgarrangeCarousel);
carouselBtnImg.SetWidescreen(CFG.widescreen); carouselBtnImg.SetWidescreen(CFG.widescreen);
GuiImage carouselBtnImg_g(&imgarrangeCarousel_gray); GuiImage carouselBtnImg_g(carouselBtnImg); carouselBtnImg_g.SetGrayscale();
carouselBtnImg_g.SetWidescreen(CFG.widescreen); // GuiImage carouselBtnImg_g(&imgarrangeCarousel_gray);
GuiButton carouselBtn(&carouselBtnImg_g,&carouselBtnImg_g, 2, 3, THEME.carousel_x, THEME.carousel_y, &trigA, &btnSoundOver, &btnClick,1, &carouselBtnTT, 15, 52, 1, 3); carouselBtnImg_g.SetWidescreen(CFG.widescreen);
carouselBtn.SetAlpha(180); 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")); GuiTooltip homebrewBtnTT(tr("Homebrew Launcher"));
if (Settings.wsprompt == yes) if (Settings.wsprompt == yes)
@ -529,13 +619,24 @@ int MenuDiscList() {
GuiImage homebrewImgOver(&homebrewImgDataOver); GuiImage homebrewImgOver(&homebrewImgDataOver);
homebrewImg.SetWidescreen(CFG.widescreen); homebrewImg.SetWidescreen(CFG.widescreen);
homebrewImgOver.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) { if (Settings.fave) {
favoriteBtn.SetImage(&favoriteBtnImg); favoriteBtn.SetImage(&favoriteBtnImg);
favoriteBtn.SetImageOver(&favoriteBtnImg); favoriteBtn.SetImageOver(&favoriteBtnImg);
favoriteBtn.SetAlpha(255); 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) { if (Settings.sort==all) {
abcBtn.SetImage(&abcBtnImg); abcBtn.SetImage(&abcBtnImg);
abcBtn.SetImageOver(&abcBtnImg); abcBtn.SetImageOver(&abcBtnImg);
@ -559,38 +660,30 @@ int MenuDiscList() {
carouselBtn.SetAlpha(255); carouselBtn.SetAlpha(255);
} }
if (Settings.gameDisplay==list) { if (Settings.gameDisplay==list) {
if (CFG.widescreen) { favoriteBtn.SetPosition(THEME.gamelist_favorite_x, THEME.gamelist_favorite_y);
favoriteBtn.SetPosition(THEME.favorite_x, THEME.favorite_y); searchBtn.SetPosition(THEME.gamelist_search_x, THEME.gamelist_search_y);
abcBtn.SetPosition(THEME.abc_x, THEME.abc_y); abcBtn.SetPosition(THEME.gamelist_abc_x, THEME.gamelist_abc_y);
countBtn.SetPosition(THEME.count_x, THEME.count_y); countBtn.SetPosition(THEME.gamelist_count_x, THEME.gamelist_count_y);
listBtn.SetPosition(THEME.list_x, THEME.list_y); listBtn.SetPosition(THEME.gamelist_list_x, THEME.gamelist_list_y);
gridBtn.SetPosition(THEME.grid_x, THEME.grid_y); gridBtn.SetPosition(THEME.gamelist_grid_x, THEME.gamelist_grid_y);
carouselBtn.SetPosition(THEME.carousel_x, THEME.carousel_y); carouselBtn.SetPosition(THEME.gamelist_carousel_x, THEME.gamelist_carousel_y);
} else { } else if(Settings.gameDisplay==grid) {
favoriteBtn.SetPosition(THEME.favorite_x-20, THEME.favorite_y); favoriteBtn.SetPosition(THEME.gamegrid_favorite_x, THEME.gamegrid_favorite_y);
abcBtn.SetPosition(THEME.abc_x-12, THEME.abc_y); searchBtn.SetPosition(THEME.gamegrid_search_x, THEME.gamegrid_search_y);
countBtn.SetPosition(THEME.count_x-4, THEME.count_y); abcBtn.SetPosition(THEME.gamegrid_abc_x, THEME.gamegrid_abc_y);
listBtn.SetPosition(THEME.list_x+4, THEME.list_y); countBtn.SetPosition(THEME.gamegrid_count_x, THEME.gamegrid_count_y);
gridBtn.SetPosition(THEME.grid_x+12, THEME.grid_y); listBtn.SetPosition(THEME.gamegrid_list_x, THEME.gamegrid_list_y);
carouselBtn.SetPosition(THEME.carousel_x+20, THEME.carousel_y); gridBtn.SetPosition(THEME.gamegrid_grid_x, THEME.gamegrid_grid_y);
} carouselBtn.SetPosition(THEME.gamegrid_carousel_x, THEME.gamegrid_carousel_y);
} else { } else if(Settings.gameDisplay==carousel) {
if (CFG.widescreen) { favoriteBtn.SetPosition(THEME.gamecarousel_favorite_x, THEME.gamecarousel_favorite_y);
favoriteBtn.SetPosition(THEME.favorite_x-THEME.sortBarOffset, THEME.favorite_y); searchBtn.SetPosition(THEME.gamecarousel_search_x, THEME.gamecarousel_favorite_y);
abcBtn.SetPosition(THEME.abc_x-THEME.sortBarOffset, THEME.abc_y); abcBtn.SetPosition(THEME.gamecarousel_abc_x, THEME.gamecarousel_abc_y);
countBtn.SetPosition(THEME.count_x-THEME.sortBarOffset, THEME.count_y); countBtn.SetPosition(THEME.gamecarousel_count_x, THEME.gamecarousel_count_y);
listBtn.SetPosition(THEME.list_x-THEME.sortBarOffset, THEME.list_y); listBtn.SetPosition(THEME.gamecarousel_list_x, THEME.gamecarousel_list_y);
gridBtn.SetPosition(THEME.grid_x-THEME.sortBarOffset, THEME.grid_y); gridBtn.SetPosition(THEME.gamecarousel_grid_x, THEME.gamecarousel_grid_y);
carouselBtn.SetPosition(THEME.carousel_x-THEME.sortBarOffset, THEME.carousel_y); carouselBtn.SetPosition(THEME.gamecarousel_carousel_x, THEME.gamecarousel_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);
}
}
//Downloading Covers //Downloading Covers
@ -600,7 +693,7 @@ int MenuDiscList() {
DownloadBtnTT.SetAlpha(THEME.tooltipAlpha); DownloadBtnTT.SetAlpha(THEME.tooltipAlpha);
GuiButton DownloadBtn(0,0); GuiButton DownloadBtn(0,0);
DownloadBtn.SetAlignment(ALIGN_LEFT, ALIGN_TOP); 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")); GuiTooltip IDBtnTT(tr("Click to change game ID"));
if (Settings.wsprompt == yes) if (Settings.wsprompt == yes)
@ -631,8 +724,8 @@ int MenuDiscList() {
GuiGameGrid * gameGrid = NULL; GuiGameGrid * gameGrid = NULL;
GuiGameCarousel * gameCarousel = NULL; GuiGameCarousel * gameCarousel = NULL;
if (Settings.gameDisplay==list) { if (Settings.gameDisplay==list) {
gameBrowser = new GuiGameBrowser(THEME.selection_w, THEME.selection_h, gameList, gameCnt, CFG.theme_path, bg_options_png, startat, offset); gameBrowser = new GuiGameBrowser(THEME.gamelist_w, THEME.gamelist_h, gameList, gameCnt, CFG.theme_path, bg_options_png, startat, offset);
gameBrowser->SetPosition(THEME.selection_x, THEME.selection_y); gameBrowser->SetPosition(THEME.gamelist_x, THEME.gamelist_y);
gameBrowser->SetAlignment(ALIGN_LEFT, ALIGN_CENTRE); gameBrowser->SetAlignment(ALIGN_LEFT, ALIGN_CENTRE);
} else if (Settings.gameDisplay==grid) { } else if (Settings.gameDisplay==grid) {
gameGrid = new GuiGameGrid(THEME.gamegrid_w,THEME.gamegrid_h, gameList, gameCnt, CFG.theme_path, bg_options_png, 0, 0); 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); gameCarousel->SetAlignment(ALIGN_LEFT, ALIGN_CENTRE);
} }
GuiText clockTimeBack("88:88", 40, (GXColor) {THEME.clock_r, THEME.clock_g, THEME.clock_b, 40}); GuiText clockTimeBack("88:88", 40, (GXColor) {THEME.clock.r, THEME.clock.g, THEME.clock.b, THEME.clock.a/6});
clockTimeBack.SetAlignment(THEME.clockAlign, ALIGN_TOP); clockTimeBack.SetAlignment(THEME.clock_align, ALIGN_TOP);
clockTimeBack.SetPosition(THEME.clock_x, THEME.clock_y); clockTimeBack.SetPosition(THEME.clock_x, THEME.clock_y);
clockTimeBack.SetFont(fontClock); clockTimeBack.SetFont(fontClock);
GuiText clockTime(theTime, 40, (GXColor) {THEME.clock_r, THEME.clock_g, THEME.clock_b, 240}); GuiText clockTime(theTime, 40, THEME.clock);
clockTime.SetAlignment(THEME.clockAlign, ALIGN_TOP); clockTime.SetAlignment(THEME.clock_align, ALIGN_TOP);
clockTime.SetPosition(THEME.clock_x, THEME.clock_y); clockTime.SetPosition(THEME.clock_x, THEME.clock_y);
clockTime.SetFont(fontClock); clockTime.SetFont(fontClock);
HaltGui(); HaltGui();
GuiWindow w(screenwidth, screenheight); 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); 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(&gamecntBtn);
} }
w.Append(&sdcardBtn); w.Append(&sdcardBtn);
@ -672,13 +765,26 @@ int MenuDiscList() {
w.Append(&settingsBtn); w.Append(&settingsBtn);
w.Append(&DownloadBtn); w.Append(&DownloadBtn);
w.Append(&idBtn); w.Append(&idBtn);
// Begin Toolbar
w.Append(&favoriteBtn); w.Append(&favoriteBtn);
Toolbar[0] = &favoriteBtn;
w.Append(&searchBtn);
Toolbar[1] = &searchBtn;
w.Append(&abcBtn); w.Append(&abcBtn);
Toolbar[2] = &abcBtn;
w.Append(&countBtn); w.Append(&countBtn);
Toolbar[3] = &countBtn;
w.Append(&listBtn); w.Append(&listBtn);
Toolbar[4] = &listBtn;
w.Append(&gridBtn); w.Append(&gridBtn);
Toolbar[5] = &gridBtn;
w.Append(&carouselBtn); w.Append(&carouselBtn);
if (Settings.godmode == 1) Toolbar[6] = &carouselBtn;
w.SetUpdateCallback(DiscListWinUpdateCallback);
// End Toolbar
if (Settings.godmode == 1)
w.Append(&homebrewBtn); w.Append(&homebrewBtn);
if ((Settings.hddinfo == hr12)||(Settings.hddinfo == hr24)) { if ((Settings.hddinfo == hr12)||(Settings.hddinfo == hr24)) {
@ -697,6 +803,13 @@ int MenuDiscList() {
} }
mainWindow->Append(&w); mainWindow->Append(&w);
GuiSearchBar *searchBar=NULL;
if(show_searchwindow) {
searchBar = new GuiSearchBar(gameFilterNextList);
if(searchBar)
mainWindow->Append(searchBar);
}
ResumeGui(); ResumeGui();
while (menu == MENU_NONE) { 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) { else if (abcBtn.GetState() == STATE_CLICKED) {
if (Settings.sort != all) { if (Settings.sort != all) {
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 selectedold = selectimg;//update displayed cover, game ID, and region if the selected game changes
struct discHdr *header = &gameList[selectimg]; struct discHdr *header = &gameList[selectimg];
snprintf (ID,sizeof(ID),"%c%c%c", header->id[0], header->id[1], header->id[2]); 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); w.Remove(&DownloadBtn);
if (GameIDTxt) { if (GameIDTxt) {
@ -1144,18 +1313,7 @@ int MenuDiscList() {
cover = NULL; cover = NULL;
} }
snprintf(imgPath, sizeof(imgPath), "%s%s.png", Settings.covers_path, IDfull); cover = LoadCoverImage(header);
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
}
}
if (coverImg) { if (coverImg) {
delete coverImg; delete coverImg;
@ -1168,7 +1326,7 @@ int MenuDiscList() {
w.Append(&DownloadBtn); w.Append(&DownloadBtn);
if ((Settings.sinfo == GameID) || (Settings.sinfo == Both)) { 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->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
//GameIDTxt->SetPosition(THEME.id_x,THEME.id_y); //GameIDTxt->SetPosition(THEME.id_x,THEME.id_y);
idBtn.SetEffect(EFFECT_FADE, 20); idBtn.SetEffect(EFFECT_FADE, 20);
@ -1177,7 +1335,7 @@ int MenuDiscList() {
} }
if ((Settings.sinfo == GameRegion) || (Settings.sinfo == Both)) { 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->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
GameRegionTxt->SetPosition(THEME.region_x, THEME.region_y); GameRegionTxt->SetPosition(THEME.region_x, THEME.region_y);
GameRegionTxt->SetEffect(EFFECT_FADE, 20); GameRegionTxt->SetEffect(EFFECT_FADE, 20);
@ -1204,7 +1362,13 @@ int MenuDiscList() {
} }
if ((gameSelected >= 0) && (gameSelected < (s32)gameCnt)) { if ((gameSelected >= 0) && (gameSelected < (s32)gameCnt)) {
rockout(); if(searchBar)
{
HaltGui();
mainWindow->Remove(searchBar);
ResumeGui();
}
rockout();
struct discHdr *header = &gameList[gameSelected]; struct discHdr *header = &gameList[gameSelected];
WBFS_GameSize(header->id, &size); WBFS_GameSize(header->id, &size);
if (strlen(get_title(header)) < (MAX_CHARACTERS + 3)) { 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 // to skip the first call of windowScreensaver at startup when wiimote is not connected
if (IsWpadConnected()) { if (IsWpadConnected()) {
@ -1439,6 +1609,8 @@ int MenuDiscList() {
HaltGui(); HaltGui();
mainWindow->RemoveAll(); mainWindow->RemoveAll();
mainWindow->Append(bgImg); mainWindow->Append(bgImg);
delete searchBar;
searchBar = NULL;
delete gameBrowser; delete gameBrowser;
gameBrowser = NULL; gameBrowser = NULL;
delete gameGrid; delete gameGrid;

View File

@ -30,5 +30,7 @@ enum {
MENU_HOMEBREWBROWSE, MENU_HOMEBREWBROWSE,
BOOTHOMEBREW BOOTHOMEBREW
}; };
class GuiImageData;
GuiImageData *LoadCoverImage(struct discHdr *header, bool Prefere3D=true, bool noCover=true);
#endif #endif

View File

@ -163,7 +163,7 @@ int DiscBrowse(struct discHdr * header) {
settingsbackgroundbtn.SetPosition(0, 0); settingsbackgroundbtn.SetPosition(0, 0);
settingsbackgroundbtn.SetImage(&settingsbackground); 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); cancelBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
GuiImage cancelBtnImg(&btnOutline); GuiImage cancelBtnImg(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {

View File

@ -155,11 +155,11 @@ static void ProgressWindow(const char *title, const char *msg1, const char *msg2
progressbarImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE); progressbarImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
progressbarImg.SetPosition(25, 40); 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.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
titleTxt.SetPosition(0,60); 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); msg1Txt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
if (msg2) if (msg2)
msg1Txt.SetPosition(0,120); 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.SetPosition(0,100);
msg1Txt.SetMaxWidth(430, GuiText::DOTTED); 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.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
msg2Txt.SetPosition(0,125); msg2Txt.SetPosition(0,125);
msg2Txt.SetMaxWidth(430, GuiText::DOTTED); 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.SetAlignment(ALIGN_RIGHT, ALIGN_MIDDLE);
prsTxt.SetPosition(-188,40); 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.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
timeTxt.SetPosition(280,-50); 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.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
sizeTxt.SetPosition(50, -50); 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.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
speedTxt.SetPosition(50, -74); 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.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
prTxt.SetPosition(200, 40); prTxt.SetPosition(200, 40);

View File

@ -85,7 +85,7 @@ int OnScreenKeyboard(char * var, u32 maxlen, int min) {
GuiTrigger trigB; GuiTrigger trigB;
trigB.SetSimpleTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B); 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); GuiImage okBtnImg(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
okBtnTxt.SetWidescreen(CFG.widescreen); 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); GuiButton okBtn(&okBtnImg,&okBtnImg, 0, 4, 5, 15, &trigA, &btnSoundOver, &btnClick,1);
okBtn.SetLabel(&okBtnTxt); 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); GuiImage cancelBtnImg(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
cancelBtnTxt.SetWidescreen(CFG.widescreen); cancelBtnTxt.SetWidescreen(CFG.widescreen);
@ -458,15 +458,15 @@ WindowPrompt(const char *title, const char *msg, const char *btn1Label,
dialogBoxImg.SetWidescreen(CFG.widescreen); 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.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
titleTxt.SetPosition(0,55); 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.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
msgTxt.SetPosition(0,-40); msgTxt.SetPosition(0,-40);
msgTxt.SetMaxWidth(430); 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); GuiImage btn1Img(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
btn1Txt.SetWidescreen(CFG.widescreen); btn1Txt.SetWidescreen(CFG.widescreen);
@ -477,7 +477,7 @@ WindowPrompt(const char *title, const char *msg, const char *btn1Label,
btn1.SetLabel(&btn1Txt); btn1.SetLabel(&btn1Txt);
btn1.SetState(STATE_SELECTED); 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); GuiImage btn2Img(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
btn2Txt.SetWidescreen(CFG.widescreen); btn2Txt.SetWidescreen(CFG.widescreen);
@ -488,7 +488,7 @@ WindowPrompt(const char *title, const char *msg, const char *btn1Label,
if (!btn3Label && !btn4Label) if (!btn3Label && !btn4Label)
btn2.SetTrigger(&trigB); 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); GuiImage btn3Img(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
btn3Txt.SetWidescreen(CFG.widescreen); btn3Txt.SetWidescreen(CFG.widescreen);
@ -499,7 +499,7 @@ WindowPrompt(const char *title, const char *msg, const char *btn1Label,
if (!btn4Label) if (!btn4Label)
btn3.SetTrigger(&trigB); 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); GuiImage btn4Img(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
btn4Txt.SetWidescreen(CFG.widescreen); btn4Txt.SetWidescreen(CFG.widescreen);
@ -1033,7 +1033,7 @@ int GameWindowPrompt() {
GuiTooltip nameBtnTT(tr("Rename Game on WBFS")); GuiTooltip nameBtnTT(tr("Rename Game on WBFS"));
if (Settings.wsprompt == yes) if (Settings.wsprompt == yes)
nameBtnTT.SetWidescreen(CFG.widescreen); 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) if (Settings.wsprompt == yes)
nameTxt.SetWidescreen(CFG.widescreen); nameTxt.SetWidescreen(CFG.widescreen);
nameTxt.SetMaxWidth(350, GuiText::SCROLL); nameTxt.SetMaxWidth(350, GuiText::SCROLL);
@ -1051,7 +1051,7 @@ int GameWindowPrompt() {
nameBtn.SetEffectGrow(); 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.SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
sizeTxt.SetPosition(-60,70); sizeTxt.SetPosition(-60,70);
@ -1067,7 +1067,7 @@ int GameWindowPrompt() {
diskImg2.SetAngle(angle); diskImg2.SetAngle(angle);
diskImg2.SetBeta(180); 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.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
playcntTxt.SetPosition(-115,45); playcntTxt.SetPosition(-115,45);
@ -1081,7 +1081,7 @@ int GameWindowPrompt() {
btn1.SetTrigger(&trigA); btn1.SetTrigger(&trigA);
btn1.SetState(STATE_SELECTED); 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); GuiImage btn2Img(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
btn2Txt.SetWidescreen(CFG.widescreen); btn2Txt.SetWidescreen(CFG.widescreen);
@ -1099,7 +1099,7 @@ int GameWindowPrompt() {
btn2.SetLabel(&btn2Txt); btn2.SetLabel(&btn2Txt);
btn2.SetTrigger(&trigB); 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); GuiImage btn3Img(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
btn3Txt.SetWidescreen(CFG.widescreen); btn3Txt.SetWidescreen(CFG.widescreen);
@ -1181,6 +1181,8 @@ int GameWindowPrompt() {
if (diskCover) if (diskCover)
delete diskCover; delete diskCover;
snprintf(imgPath,sizeof(imgPath),"%s%s.png", Settings.disc_path, IDFull); //changed to current full id snprintf(imgPath,sizeof(imgPath),"%s%s.png", Settings.disc_path, IDFull); //changed to current full id
diskCover = new GuiImageData(imgPath,0); 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); 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.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
titleTxt.SetPosition(0,60); 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.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
msgTxt.SetPosition(0,-40); msgTxt.SetPosition(0,-40);
msgTxt.SetMaxWidth(430); 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); GuiImage btn1Img(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
btn1Txt.SetWidescreen(CFG.widescreen); btn1Txt.SetWidescreen(CFG.widescreen);
@ -1512,7 +1514,7 @@ DiscWait(const char *title, const char *msg, const char *btn1Label, const char *
btn1.SetTrigger(&trigB); btn1.SetTrigger(&trigB);
btn1.SetState(STATE_SELECTED); 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); GuiImage btn2Img(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
btn2Txt.SetWidescreen(CFG.widescreen); 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.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
timerTxt.SetPosition(0,160); timerTxt.SetPosition(0,160);
@ -1621,7 +1623,7 @@ FormatingPartition(const char *title, partitionEntry *entry) {
dialogBoxImg.SetWidescreen(CFG.widescreen); 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.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
titleTxt.SetPosition(0,60); titleTxt.SetPosition(0,60);
@ -1676,12 +1678,12 @@ bool SearchMissingImages(int choice2) {
dialogBoxImg.SetWidescreen(CFG.widescreen); 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.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
titleTxt.SetPosition(0,60); titleTxt.SetPosition(0,60);
char msg[20] = " "; 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.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
msgTxt.SetPosition(0,-40); msgTxt.SetPosition(0,-40);
@ -1710,16 +1712,18 @@ bool SearchMissingImages(int choice2) {
for (i = 0; i < gameCnt && cntMissFiles < 500; i++) { for (i = 0; i < gameCnt && cntMissFiles < 500; i++) {
struct discHdr* header = &gameList[i]; struct discHdr* header = &gameList[i];
if (choice2 != 3) { 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]); 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]); 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], 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 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 if (!found1 && !found2 && !found3) { //if could not find any image
snprintf(missingFiles[cntMissFiles],11,"%s",filename); snprintf(missingFiles[cntMissFiles],11,"%s",filename);
cntMissFiles++; cntMissFiles++;
@ -1787,16 +1791,16 @@ bool NetworkInitPrompt() {
dialogBoxImg.SetWidescreen(CFG.widescreen); 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.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
titleTxt.SetPosition(0,60); titleTxt.SetPosition(0,60);
char msg[20] = " "; 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.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
msgTxt.SetPosition(0,-40); 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); GuiImage btn1Img(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
btn1Txt.SetWidescreen(CFG.widescreen); btn1Txt.SetWidescreen(CFG.widescreen);
@ -1908,23 +1912,23 @@ ProgressDownloadWindow(int choice2) {
progressbarImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE); progressbarImg.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
progressbarImg.SetPosition(25, 40); 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.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
titleTxt.SetPosition(0,60); 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.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
msgTxt.SetPosition(0,130); 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.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
msg2Txt.SetPosition(0,100); 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.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
prTxt.SetPosition(0, 40); 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); GuiImage btn1Img(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
btn1Txt.SetWidescreen(CFG.widescreen); btn1Txt.SetWidescreen(CFG.widescreen);
@ -1979,6 +1983,12 @@ ProgressDownloadWindow(int choice2) {
cntMissFiles = 0; 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 (stat(Settings.disc_path,&st) != 0) {
if (subfoldercreate(Settings.disc_path) != 1) { if (subfoldercreate(Settings.disc_path) != 1) {
WindowPrompt(tr("Error !"),tr("Can't create directory"),tr("OK")); 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 //Creates URL depending from which Country the game is
switch (missingFiles[i][3]) { switch (missingFiles[i][3]) {
case 'J': case 'J':
sprintf(URLFile,"%sJA/%s",server3d,missingFiles[i]); sprintf(URLFile,"%sJA/%s",server2d,missingFiles[i]);
break; break;
case 'W': case 'W':
sprintf(URLFile,"%sZH/%s",server3d,missingFiles[i]); sprintf(URLFile,"%sZH/%s",server2d,missingFiles[i]);
break; break;
case 'K': case 'K':
sprintf(URLFile,"%sKO/%s",server2d,missingFiles[i]); sprintf(URLFile,"%sKO/%s",server2d,missingFiles[i]);
@ -2205,7 +2215,7 @@ ProgressDownloadWindow(int choice2) {
break; break;
} }
sprintf(imgPath,"%s%s", Settings.covers_path, missingFiles[i]); sprintf(imgPath,"%s%s", Settings.covers2d_path, missingFiles[i]);
file = downloadfile(URLFile); file = downloadfile(URLFile);
if (!(file.size == 36864 || file.size <= 1024 || file.size == 7386 || file.size <= 1174 || file.size == 4446 || file.data == NULL)) { 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 **/ /**Temporary redownloading 1st image because of a fucking corruption bug **/
#if 0 // is no longer necessary, since libfat is fixed
char URLFile[100]; char URLFile[100];
struct block file = downloadfile(URLFile); struct block file = downloadfile(URLFile);
if (choice2 == 2) { if (choice2 == 2) {
@ -2273,7 +2283,7 @@ ProgressDownloadWindow(int choice2) {
if (choice2 == 1) { if (choice2 == 1) {
while (tries<serverCnt2d) { while (tries<serverCnt2d) {
sprintf(URLFile,"%s%s",server2d,missingFiles[0]); 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); file = downloadfile(URLFile);
if (!(file.size == 36864 || file.size <= 1024 || file.size <= 1174 || file.size == 7386 || file.size == 4446 || file.data == NULL))break; if (!(file.size == 36864 || file.size <= 1024 || file.size <= 1174 || file.size == 7386 || file.size == 4446 || file.data == NULL))break;
tries++; tries++;
@ -2290,7 +2300,7 @@ ProgressDownloadWindow(int choice2) {
free(file.data); free(file.data);
} }
} }
#endif
HaltGui(); HaltGui();
mainWindow->Remove(&promptWindow); mainWindow->Remove(&promptWindow);
mainWindow->SetState(STATE_DEFAULT); mainWindow->SetState(STATE_DEFAULT);
@ -2385,24 +2395,24 @@ int ProgressUpdateWindow() {
char title[50]; char title[50];
sprintf(title, "%s", tr("Checking for Updates")); 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.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
titleTxt.SetPosition(0,50); titleTxt.SetPosition(0,50);
char msg[50]; char msg[50];
sprintf(msg, "%s", tr("Initializing Network")); 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.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
msgTxt.SetPosition(0,140); msgTxt.SetPosition(0,140);
char msg2[50] = " "; 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.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
msg2Txt.SetPosition(0, 50); 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.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
prTxt.SetPosition(0, 7); 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); GuiImage btn1Img(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
btn1Txt.SetWidescreen(CFG.widescreen); btn1Txt.SetWidescreen(CFG.widescreen);
@ -2720,24 +2730,24 @@ int ProgressUpdateWindow() {
char title[50]; char title[50];
sprintf(title, "%s", tr("Checking for Updates")); 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.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
titleTxt.SetPosition(0,50); titleTxt.SetPosition(0,50);
char msg[50]; char msg[50];
sprintf(msg, "%s", tr("Initializing Network")); 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.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
msgTxt.SetPosition(0,140); msgTxt.SetPosition(0,140);
char msg2[50] = " "; 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.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
msg2Txt.SetPosition(0, 50); 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.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
prTxt.SetPosition(0, 7); 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); GuiImage btn1Img(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
btn1Txt.SetWidescreen(CFG.widescreen); btn1Txt.SetWidescreen(CFG.widescreen);
@ -3013,20 +3023,20 @@ int CodeDownload(const char *id) {
char title[50]; char title[50];
sprintf(title, "%s", tr("Code Download")); 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.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
titleTxt.SetPosition(0,50); titleTxt.SetPosition(0,50);
char msg[50]; char msg[50];
sprintf(msg, "%s", tr("Initializing Network")); 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.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
msgTxt.SetPosition(0,140); msgTxt.SetPosition(0,140);
char msg2[50] = " "; 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.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
msg2Txt.SetPosition(0, 50); 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); GuiImage btn1Img(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
btn1Txt.SetWidescreen(CFG.widescreen); btn1Txt.SetWidescreen(CFG.widescreen);
@ -3238,7 +3248,7 @@ HBCWindowPrompt(const char *name, const char *coder, const char *version,
char tmp[510]; 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.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
nameTxt.SetPosition(0,-15); nameTxt.SetPosition(0,-15);
nameTxt.SetMaxWidth(430, GuiText::SCROLL); nameTxt.SetMaxWidth(430, GuiText::SCROLL);
@ -3246,27 +3256,27 @@ HBCWindowPrompt(const char *name, const char *coder, const char *version,
if (strcmp(coder,"")) if (strcmp(coder,""))
snprintf(tmp, sizeof(tmp), tr("Coded by: %s"),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.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
coderTxt.SetPosition(180,30); coderTxt.SetPosition(180,30);
coderTxt.SetMaxWidth(280); coderTxt.SetMaxWidth(280);
if (strcmp(version,"")) if (strcmp(version,""))
snprintf(tmp, sizeof(tmp), tr("Version: %s"),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.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
versionTxt.SetPosition(40,65); versionTxt.SetPosition(40,65);
versionTxt.SetMaxWidth(430); versionTxt.SetMaxWidth(430);
//if (release_date) //if (release_date)
//snprintf(tmp, sizeof(tmp), tr("Released: %s"),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.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
release_dateTxt.SetPosition(40,85); release_dateTxt.SetPosition(40,85);
release_dateTxt.SetMaxWidth(430); release_dateTxt.SetMaxWidth(430);
int pagesize = 6; 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.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
long_descriptionTxt.SetPosition(46,117); long_descriptionTxt.SetPosition(46,117);
long_descriptionTxt.SetMaxWidth(360); 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); 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.SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
filesizeTxt.SetPosition(-40,12); 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); GuiImage btn1Img(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
btn1Txt.SetWidescreen(CFG.widescreen); btn1Txt.SetWidescreen(CFG.widescreen);
@ -3309,7 +3319,7 @@ HBCWindowPrompt(const char *name, const char *coder, const char *version,
btn1.SetLabel(&btn1Txt); btn1.SetLabel(&btn1Txt);
btn1.SetState(STATE_SELECTED); 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); GuiImage btn2Img(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
btn2Txt.SetWidescreen(CFG.widescreen); btn2Txt.SetWidescreen(CFG.widescreen);

View File

@ -247,7 +247,7 @@ int TitleBrowser(u32 type) {
settingsbackgroundbtn.SetPosition(0, 0); settingsbackgroundbtn.SetPosition(0, 0);
settingsbackgroundbtn.SetImage(&settingsbackground); 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); cancelBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
GuiImage cancelBtnImg(&btnOutline); GuiImage cancelBtnImg(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {

View File

@ -319,7 +319,7 @@ main:
usbBtn.SetTrigger(&trigA); usbBtn.SetTrigger(&trigA);
usbBtn.SetEffectGrow(); 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); GuiImage okBtnImg(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
okBtnTxt.SetWidescreen(CFG.widescreen); okBtnTxt.SetWidescreen(CFG.widescreen);

View File

@ -115,7 +115,7 @@ int MenuSettings() {
GuiImage settingsbackground(&settingsbg); 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); backBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
GuiImage backBtnImg(&btnOutline); GuiImage backBtnImg(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
@ -1172,16 +1172,17 @@ int MenuSettings() {
titleTxt.SetText(tr("Custom Paths")); titleTxt.SetText(tr("Custom Paths"));
exit = false; exit = false;
for (int i = 0; i <= MAXOPTIONS; i++) options2.SetName(i, NULL); for (int i = 0; i <= MAXOPTIONS; i++) options2.SetName(i, NULL);
if (Settings.godmode) // if (Settings.godmode)
options2.SetName(0, "%s", tr("Cover Path")); options2.SetName(0, "%s", tr("3D Cover Path"));
options2.SetName(1, "%s", tr("Discimage Path")); options2.SetName(1, "%s", tr("2D Cover Path"));
options2.SetName(2, "%s", tr("ThemePath")); options2.SetName(2, "%s", tr("Discimage Path"));
options2.SetName(3, "%s", tr("XMLPath")); options2.SetName(3, "%s", tr("ThemePath"));
options2.SetName(4, "%s", tr("Updatepath")); options2.SetName(4, "%s", tr("XMLPath"));
options2.SetName(5, "%s", tr("Cheatcodes Path")); options2.SetName(5, "%s", tr("Updatepath"));
options2.SetName(6, "%s", tr("TXTCheatcodes Path")); options2.SetName(6, "%s", tr("Cheatcodes Path"));
options2.SetName(7, "%s", tr("Dol Path")); options2.SetName(7, "%s", tr("TXTCheatcodes Path"));
options2.SetName(8, "%s", tr("Homebrew Apps 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); for (int i = 0; i <= MAXOPTIONS; i++) options2.SetValue(i, NULL);
w.Append(&optionBrowser2); w.Append(&optionBrowser2);
optionBrowser2.SetClickable(true); optionBrowser2.SetClickable(true);
@ -1197,14 +1198,15 @@ int MenuSettings() {
VIDEO_WaitVSync (); VIDEO_WaitVSync ();
options2.SetValue(0, "%s", Settings.covers_path); options2.SetValue(0, "%s", Settings.covers_path);
options2.SetValue(1, "%s", Settings.disc_path); options2.SetValue(1, "%s", Settings.covers2d_path);
options2.SetValue(2, "%s", CFG.theme_path); options2.SetValue(2, "%s", Settings.disc_path);
options2.SetValue(3, "%s", Settings.titlestxt_path); options2.SetValue(3, "%s", CFG.theme_path);
options2.SetValue(4, "%s", Settings.update_path); options2.SetValue(4, "%s", Settings.titlestxt_path);
options2.SetValue(5, "%s", Settings.Cheatcodespath); options2.SetValue(5, "%s", Settings.update_path);
options2.SetValue(6, "%s", Settings.TxtCheatcodespath); options2.SetValue(6, "%s", Settings.Cheatcodespath);
options2.SetValue(7, "%s", Settings.dolpath); options2.SetValue(7, "%s", Settings.TxtCheatcodespath);
options2.SetValue(8, "%s", Settings.homebrewapps_path); options2.SetValue(8, "%s", Settings.dolpath);
options2.SetValue(9, "%s", Settings.homebrewapps_path);
if (backBtn.GetState() == STATE_CLICKED) { if (backBtn.GetState() == STATE_CLICKED) {
backBtn.ResetState(); backBtn.ResetState();
@ -1249,7 +1251,7 @@ int MenuSettings() {
w.Remove(&backBtn); w.Remove(&backBtn);
char entered[43] = ""; char entered[43] = "";
strncpy(entered, Settings.covers_path, sizeof(entered)); strncpy(entered, Settings.covers_path, sizeof(entered));
titleTxt.SetText(tr("Cover Path")); titleTxt.SetText(tr("3D Cover Path"));
int result = BrowseDevice(entered); int result = BrowseDevice(entered);
//int result = OnScreenKeyboard(entered,43,0); //int result = OnScreenKeyboard(entered,43,0);
titleTxt.SetText(tr("Custom Paths")); 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")); WindowPrompt(tr("Coverpath Change"),tr("Console should be unlocked to modify it."),tr("OK"));
} }
break; 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) { if ( Settings.godmode == 1) {
w.Remove(&optionBrowser2); w.Remove(&optionBrowser2);
w.Remove(&backBtn); w.Remove(&backBtn);
@ -1297,7 +1326,7 @@ int MenuSettings() {
WindowPrompt(tr("Discpath change"),tr("Console should be unlocked to modify it."),tr("OK")); WindowPrompt(tr("Discpath change"),tr("Console should be unlocked to modify it."),tr("OK"));
} }
break; break;
case 2: case 3:
if ( Settings.godmode == 1) { if ( Settings.godmode == 1) {
w.Remove(&optionBrowser2); w.Remove(&optionBrowser2);
w.Remove(&backBtn); w.Remove(&backBtn);
@ -1355,7 +1384,7 @@ int MenuSettings() {
WindowPrompt(tr("Themepath change"),tr("Console should be unlocked to modify it."),tr("OK")); WindowPrompt(tr("Themepath change"),tr("Console should be unlocked to modify it."),tr("OK"));
} }
break; break;
case 3: case 4:
if ( Settings.godmode == 1) { if ( Settings.godmode == 1) {
w.Remove(&optionBrowser2); w.Remove(&optionBrowser2);
w.Remove(&backBtn); w.Remove(&backBtn);
@ -1387,7 +1416,7 @@ int MenuSettings() {
WindowPrompt(tr("XMLPath change"),tr("Console should be unlocked to modify it."),tr("OK")); WindowPrompt(tr("XMLPath change"),tr("Console should be unlocked to modify it."),tr("OK"));
} }
break; break;
case 4: case 5:
if ( Settings.godmode == 1) { if ( Settings.godmode == 1) {
w.Remove(&optionBrowser2); w.Remove(&optionBrowser2);
w.Remove(&backBtn); w.Remove(&backBtn);
@ -1409,7 +1438,7 @@ int MenuSettings() {
} else } else
WindowPrompt(0,tr("Console should be unlocked to modify it."),tr("OK")); WindowPrompt(0,tr("Console should be unlocked to modify it."),tr("OK"));
break; break;
case 5: case 6:
if ( Settings.godmode == 1) { if ( Settings.godmode == 1) {
w.Remove(&optionBrowser2); w.Remove(&optionBrowser2);
w.Remove(&backBtn); w.Remove(&backBtn);
@ -1431,7 +1460,7 @@ int MenuSettings() {
} else } else
WindowPrompt(0,tr("Console should be unlocked to modify it."),tr("OK")); WindowPrompt(0,tr("Console should be unlocked to modify it."),tr("OK"));
break; break;
case 6: case 7:
if ( Settings.godmode == 1) { if ( Settings.godmode == 1) {
w.Remove(&optionBrowser2); w.Remove(&optionBrowser2);
w.Remove(&backBtn); w.Remove(&backBtn);
@ -1453,7 +1482,7 @@ int MenuSettings() {
} else } else
WindowPrompt(0,tr("Console should be unlocked to modify it."),tr("OK")); WindowPrompt(0,tr("Console should be unlocked to modify it."),tr("OK"));
break; break;
case 7: case 8:
if ( Settings.godmode == 1) { if ( Settings.godmode == 1) {
w.Remove(&optionBrowser2); w.Remove(&optionBrowser2);
w.Remove(&backBtn); w.Remove(&backBtn);
@ -1480,7 +1509,7 @@ int MenuSettings() {
WindowPrompt(tr("Dolpath change"),tr("Console should be unlocked to modify it."),tr("OK")); WindowPrompt(tr("Dolpath change"),tr("Console should be unlocked to modify it."),tr("OK"));
} }
break; break;
case 8: case 9:
if ( Settings.godmode == 1) { if ( Settings.godmode == 1) {
w.Remove(&optionBrowser2); w.Remove(&optionBrowser2);
w.Remove(&backBtn); w.Remove(&backBtn);
@ -1785,7 +1814,7 @@ int GameSettings(struct discHdr * header) {
GuiImage settingsbackground(&settingsbg); 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); backBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
GuiImage backBtnImg(&btnOutline); GuiImage backBtnImg(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
@ -1799,7 +1828,7 @@ int GameSettings(struct discHdr * header) {
GuiButton homo(1,1); GuiButton homo(1,1);
homo.SetTrigger(&trigHome); 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); saveBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
GuiImage saveBtnImg(&btnOutline); GuiImage saveBtnImg(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {

View File

@ -81,7 +81,7 @@ bool MenuOGG() {
oggmenubackground.SetAlignment(ALIGN_LEFT, ALIGN_TOP); oggmenubackground.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
oggmenubackground.SetPosition(0, 0); 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); backBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
GuiImage backBtnImg(&btnOutline); GuiImage backBtnImg(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
@ -99,7 +99,7 @@ bool MenuOGG() {
backBtn.SetTrigger(&trigB); backBtn.SetTrigger(&trigB);
backBtn.SetEffectGrow(); 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); defaultBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
GuiImage defaultBtnImg(&btnOutline); GuiImage defaultBtnImg(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
@ -363,7 +363,7 @@ int MenuLanguageSelect() {
oggmenubackground.SetAlignment(ALIGN_LEFT, ALIGN_TOP); oggmenubackground.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
oggmenubackground.SetPosition(0, 0); 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); backBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
GuiImage backBtnImg(&btnOutline); GuiImage backBtnImg(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
@ -381,7 +381,7 @@ int MenuLanguageSelect() {
backBtn.SetTrigger(&trigB); backBtn.SetTrigger(&trigB);
backBtn.SetEffectGrow(); 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); defaultBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
GuiImage defaultBtnImg(&btnOutline); GuiImage defaultBtnImg(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {
@ -398,7 +398,7 @@ int MenuLanguageSelect() {
defaultBtn.SetTrigger(&trigA); defaultBtn.SetTrigger(&trigA);
defaultBtn.SetEffectGrow(); 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); updateBtnTxt.SetMaxWidth(btnOutline.GetWidth()-30);
GuiImage updateBtnImg(&btnOutline); GuiImage updateBtnImg(&btnOutline);
if (Settings.wsprompt == yes) { if (Settings.wsprompt == yes) {

View File

@ -192,6 +192,7 @@ void CFG_Default(int widescreen) { // -1 = non forced Mode
if (widescreen == -1) { if (widescreen == -1) {
snprintf(Settings.covers_path, sizeof(Settings.covers_path), "%s/images/", bootDevice); //default image path 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.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 snprintf(Settings.titlestxt_path, sizeof(Settings.titlestxt_path), "%s/config/", bootDevice);//default path for disc images
char * empty = ""; 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.TxtCheatcodespath, sizeof(Settings.TxtCheatcodespath), "%s/txtcodes/", bootDevice);
snprintf(Settings.dolpath, sizeof(Settings.dolpath), "%s/", bootDevice); snprintf(Settings.dolpath, sizeof(Settings.dolpath), "%s/", bootDevice);
sprintf(Settings.ogg_path, "notset"); 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.sdcard_x = 160;
THEME.selection_x = 200; THEME.sdcard_y = 395;
THEME.selection_y = 49;//40; THEME.homebrew_x = 410;
THEME.selection_w = 396; THEME.homebrew_y = 405;
THEME.selection_h = 280; THEME.power_x = 576;
THEME.batteryUnused = 70; THEME.power_y = 355;
THEME.gamegrid_w = 640; THEME.home_x = 489;//215;
THEME.gamegrid_h = 400; THEME.home_y = 371;
THEME.gamegrid_x = 0; THEME.setting_x = 64;//-210
THEME.gamegrid_y = 20; THEME.setting_y = 371;
THEME.gamecarousel_w = 640; THEME.install_x = 16;//-280
THEME.gamecarousel_h = 400; THEME.install_y = 355;
THEME.gamecarousel_x = 0;
THEME.gamecarousel_y = -20; THEME.clock = (GXColor) {138, 138, 138, 240};
THEME.clock_r = 138; THEME.clock_align = CFG_ALIGN_CENTRE;
THEME.clock_g = 138; THEME.clock_x = 0;
THEME.clock_b = 138; THEME.clock_y = 335;//330;
THEME.settingsTxt_r = 0;
THEME.settingsTxt_g = 0;
THEME.settingsTxt_b = 0; THEME.info = (GXColor) {55, 190, 237, 255};
THEME.cover_x = 26; THEME.show_hddinfo = 1; //default
THEME.cover_y = 58; THEME.hddinfo_align = CFG_ALIGN_CENTRE;
THEME.homebrew_x = 410; THEME.hddinfo_x = 0;
THEME.homebrew_y = 405; THEME.hddinfo_y = 400;
THEME.showID = 1; THEME.show_gamecount = 1; //default
// THEME.maxcharacters = 36; THEME.gamecount_align = CFG_ALIGN_CENTRE;
THEME.id_x = 68; THEME.gamecount_x = 0;
THEME.id_y = 305; THEME.gamecount_y = 420;
THEME.region_x = 68;
THEME.region_y = 30; THEME.show_tooltip = 1; //1 means use settings, 0 means force turn off
THEME.power_x = 576; THEME.tooltipAlpha = 255;
THEME.tooltipAlpha = 255;
THEME.power_y = 355; THEME.prompttext = (GXColor) {0, 0, 0, 255};
THEME.home_x = 489;//215; THEME.settingstext = (GXColor) {0, 0, 0, 255};
THEME.home_y = 371; THEME.gametext = (GXColor) {0, 0, 0, 255};
THEME.setting_x = 64;//-210
THEME.setting_y = 371; THEME.pagesize = 9;
THEME.showHDD = 1; //default
THEME.showGameCnt = 1; //default THEME.gamelist_favorite_x = CFG.widescreen ? 288 : 260;
THEME.showToolTip = 1; //1 means use settings, 0 means force turn off THEME.gamelist_favorite_y = 13;
THEME.install_x = 16;//-280 THEME.gamelist_search_x = CFG.widescreen ? 320 : 300;
THEME.install_y = 355; THEME.gamelist_search_y = 13;
THEME.showBattery = 1; THEME.gamelist_abc_x = CFG.widescreen ? 352 : 340;
THEME.showRegion = 1; THEME.gamelist_abc_y = 13;
THEME.hddInfo_x = 0; THEME.gamelist_count_x = CFG.widescreen ? 384 : 380;
THEME.hddInfo_y = 400; THEME.gamelist_count_y = 13;
THEME.hddInfoAlign = CFG_ALIGN_CENTRE; THEME.gamelist_list_x = CFG.widescreen ? 416 : 420;
THEME.gameCnt_x = 0; THEME.gamelist_list_y = 13;
THEME.gameCnt_y = 420; THEME.gamelist_grid_x = CFG.widescreen ? 448 : 460;
THEME.gameCntAlign = CFG_ALIGN_CENTRE; THEME.gamelist_grid_y = 13;
THEME.battery1_x = 245; THEME.gamelist_carousel_x = CFG.widescreen ? 480 : 500;
THEME.battery1_y = 400; THEME.gamelist_carousel_y = 13;
THEME.battery2_x = 335;
THEME.battery2_y = 400; THEME.gamegrid_favorite_x = CFG.widescreen ? 208 : 180;
THEME.battery3_x = 245; THEME.gamegrid_favorite_y = 13;
THEME.battery3_y = 425; THEME.gamegrid_search_x = CFG.widescreen ? 240 : 220;
THEME.battery4_x = 335; THEME.gamegrid_search_y = 13;
THEME.battery4_y = 425; THEME.gamegrid_abc_x = CFG.widescreen ? 272 : 260;
THEME.info_r = 55; THEME.gamegrid_abc_y = 13;
THEME.info_g = 190; THEME.gamegrid_count_x = CFG.widescreen ? 304 : 300;
THEME.info_b = 237; THEME.gamegrid_count_y = 13;
THEME.prompttxt_r = 0; THEME.gamegrid_list_x = CFG.widescreen ? 336 : 340;
THEME.prompttxt_g = 0; THEME.gamegrid_list_y = 13;
THEME.prompttxt_b = 0; THEME.gamegrid_grid_x = CFG.widescreen ? 368 : 380;
THEME.clock_x = 0; THEME.gamegrid_grid_y = 13;
THEME.clock_y = 335;//330; THEME.gamegrid_carousel_x = CFG.widescreen ? 400 : 420;
THEME.clockAlign = CFG_ALIGN_CENTRE; THEME.gamegrid_carousel_y = 13;
THEME.sdcard_x = 160;
THEME.sdcard_y = 395; THEME.gamecarousel_favorite_x = CFG.widescreen ? 208 : 180;
THEME.gameText_r = 0; THEME.gamecarousel_favorite_y = 13;
THEME.gameText_g = 0; THEME.gamecarousel_search_x = CFG.widescreen ? 240 : 220;
THEME.gameText_b = 0; THEME.gamecarousel_search_y = 13;
THEME.pagesize = 9; THEME.gamecarousel_abc_x = CFG.widescreen ? 272 : 260;
THEME.favorite_x = 4; THEME.gamecarousel_abc_y = 13;
THEME.favorite_y = 13; THEME.gamecarousel_count_x = CFG.widescreen ? 304 : 300;
THEME.abc_x = 36; THEME.gamecarousel_count_y = 13;
THEME.abc_y = 13; THEME.gamecarousel_list_x = CFG.widescreen ? 336 : 340;
THEME.list_x = 100; THEME.gamecarousel_list_y = 13;
THEME.list_y = 13; THEME.gamecarousel_grid_x = CFG.widescreen ? 368 : 380;
THEME.grid_x = 132; THEME.gamecarousel_grid_y = 13;
THEME.grid_y = 13; THEME.gamecarousel_carousel_x = CFG.widescreen ? 400 : 420;
THEME.carousel_x = 164; THEME.gamecarousel_carousel_y = 13;
THEME.carousel_y = 13;
THEME.count_x = 68;
THEME.count_y = 13;
THEME.sortBarOffset = 100;
}
} }
void Global_Default(void) { void Global_Default(void) {
@ -301,9 +322,9 @@ void Global_Default(void) {
Settings.language = ConsoleLangDefault; Settings.language = ConsoleLangDefault;
Settings.ocarina = off; Settings.ocarina = off;
Settings.hddinfo = hr12; Settings.hddinfo = hr12;
Settings.sinfo = ((THEME.showID) ? GameID : Neither); Settings.sinfo = ((THEME.show_id) ? GameID : Neither);
Settings.rumble = RumbleOn; Settings.rumble = RumbleOn;
if (THEME.showRegion) { if (THEME.show_region) {
Settings.sinfo = ((Settings.sinfo == GameID) ? Both : GameRegion); Settings.sinfo = ((Settings.sinfo == GameID) ? Both : GameRegion);
} }
Settings.volume = 80; Settings.volume = 80;
@ -453,6 +474,11 @@ void path_set(char *name, char *val) {
return; return;
} }
if (strcmp(name, "cover2d_path") == 0) {
strcopy(Settings.covers2d_path, val, sizeof(Settings.covers2d_path));
return;
}
if (strcmp(name, "disc_path") == 0) { if (strcmp(name, "disc_path") == 0) {
strcopy(Settings.disc_path, val, sizeof(Settings.disc_path)); strcopy(Settings.disc_path, val, sizeof(Settings.disc_path));
return; 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) { void theme_set(char *name, char *val) {
cfg_name = name; cfg_name = name;
cfg_val = val; cfg_val = val;
if (strcmp(cfg_name, "gamelist_coords") == 0) { CFG_COORDS4(gamelist)
int x,y,w,h; else CFG_COORDS4(gamegrid)
if (sscanf(val, "%d,%d,%d,%d", &x, &y, &w, &h) == 4) { else CFG_COORDS4(gamecarousel)
THEME.selection_x = x - (x % 4);
THEME.selection_y = y; else CFG_COORDS2(covers)
THEME.selection_w = w;
THEME.selection_h = h;
}
}
if (strcmp(cfg_name, "gamegrid_coords") == 0) { else CFG_BOOL(show_id)
int x,y,w,h; else CFG_COORDS2(id)
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;
}
}
if (strcmp(cfg_name, "gamecarousel_coords") == 0) { else CFG_BOOL(show_region)
int x,y,w,h; else CFG_COORDS2(region)
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 if (strcmp(cfg_name, "covers_coords") == 0) { else CFG_COORDS2(sdcard)
short x,y; else CFG_COORDS2(homebrew)
if (sscanf(val, "%hd,%hd", &x, &y) == 2) { else CFG_COORDS2(power)
THEME.cover_x = x - (x % 4); else CFG_COORDS2(home)
THEME.cover_y = y; 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) { else CFG_COLOR(info)
short x,y; else CFG_BOOL(show_hddinfo)
if (sscanf(val, "%hd,%hd", &x, &y) == 2) { else CFG_ALIGN(hddinfo)
THEME.id_x = x - (x % 4); else CFG_COORDS2(hddinfo)
THEME.id_y = y;
}
}
else if (strcmp(cfg_name, "hddinfo_coords") == 0) { else CFG_BOOL(show_gamecount)
short x,y; else CFG_ALIGN(gamecount)
if (sscanf(val, "%hd,%hd", &x, &y) == 2) { else CFG_COORDS2(gamecount)
THEME.hddInfo_x = x - (x % 4);
THEME.hddInfo_y = y;
}
}
else if (strcmp(cfg_name, "gamecount_coords") == 0) { else CFG_BOOL(show_tooltip)
short x,y; else CFG_VAL(tooltipAlpha)
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
THEME.gameCnt_x = x - (x % 4);
THEME.gameCnt_y = y;
}
}
else if (strcmp(cfg_name, "region_coords") == 0) { else CFG_COLOR(prompttext)
short x,y; else CFG_COLOR(settingstext)
if (sscanf(val, "%hd,%hd", &x, &y) == 2) { else CFG_COLOR(gametext)
THEME.region_x = x - (x % 4);
THEME.region_y = y;
}
}
else if (strcmp(cfg_name, "homebrew_coords") == 0) { else CFG_VAL(pagesize)
short x,y;
if (sscanf(val, "%hd,%hd", &x, &y) == 2) {
THEME.homebrew_x = x - (x % 4);
THEME.homebrew_y = y;
}
}
else if (strcmp(cfg_name, "power_coords") == 0) { else CFG_COORDS2(gamelist_favorite)
short x,y; else CFG_COORDS2(gamegrid_favorite)
if (sscanf(val, "%hd,%hd", &x, &y) == 2) { else CFG_COORDS2(gamecarousel_favorite)
THEME.power_x = x - (x % 4);
THEME.power_y = y;
}
}
else if (strcmp(cfg_name, "home_coords") == 0) { else CFG_COORDS2(gamelist_search)
short x,y; else CFG_COORDS2(gamegrid_search)
if (sscanf(val, "%hd,%hd", &x, &y) == 2) { else CFG_COORDS2(gamecarousel_search)
THEME.home_x = x - (x % 4);
THEME.home_y = y; else CFG_COORDS2(gamelist_abc)
} else CFG_COORDS2(gamegrid_abc)
} else CFG_COORDS2(gamecarousel_abc)
else if (strcmp(cfg_name, "setting_coords") == 0) { else CFG_COORDS2(gamelist_count)
short x,y; else CFG_COORDS2(gamegrid_count)
if (sscanf(val, "%hd,%hd", &x, &y) == 2) { else CFG_COORDS2(gamecarousel_count)
THEME.setting_x = x - (x % 4);
THEME.setting_y = y;
}
}
else if (strcmp(cfg_name, "install_coords") == 0) { else CFG_COORDS2(gamelist_list)
short x,y; else CFG_COORDS2(gamegrid_list)
if (sscanf(val, "%hd,%hd", &x, &y) == 2) { else CFG_COORDS2(gamecarousel_list)
THEME.install_x = x - (x % 4);
THEME.install_y = y;
}
}
else if (strcmp(cfg_name, "battery1_coords") == 0) { else CFG_COORDS2(gamelist_grid)
short x,y; else CFG_COORDS2(gamegrid_grid)
if (sscanf(val, "%hd,%hd", &x, &y) == 2) { else CFG_COORDS2(gamecarousel_grid)
THEME.battery1_x = x - (x % 4);
THEME.battery1_y = y;
}
}
else if (strcmp(cfg_name, "battery2_coords") == 0) { else CFG_COORDS2(gamelist_carousel)
short x,y; else CFG_COORDS2(gamegrid_carousel)
if (sscanf(val, "%hd,%hd", &x, &y) == 2) { else CFG_COORDS2(gamecarousel_carousel)
THEME.battery2_x = x - (x % 4);
THEME.battery2_y = y;
}
}
else if (strcmp(cfg_name, "battery3_coords") == 0) { //**********************************
short x,y; // Workaround for old Themes
if (sscanf(val, "%hd,%hd", &x, &y) == 2) { //**********************************
THEME.battery3_x = x - (x % 4); else if (strcmp(cfg_name, "favorite_coords") == 0) {
THEME.battery3_y = y; 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) { else if (strcmp(cfg_name, "sortBarOffset") == 0) {
short x,y; short o;
if (sscanf(val, "%hd,%hd", &x, &y) == 2) { if (sscanf(val, "%hd", &o) == 1) {
THEME.battery4_x = x - (x % 4); if(WorkAroundIconSet & OLD_FAV_ICON)
THEME.battery4_y = y; {
} THEME.gamegrid_favorite_x += WorkAroundBarOffset - o;
} THEME.gamecarousel_favorite_x += WorkAroundBarOffset - o;
THEME.gamegrid_search_x += WorkAroundBarOffset - o;
else if (strcmp(cfg_name, "clock_coords") == 0) { THEME.gamecarousel_search_x += WorkAroundBarOffset - o;
short x,y; }
if (sscanf(val, "%hd,%hd", &x, &y) == 2) { if(WorkAroundIconSet & OLD_ABC_ICON)
THEME.clock_x = x - (x % 4); {
THEME.clock_y = y; THEME.gamegrid_abc_x += WorkAroundBarOffset - o;
} THEME.gamecarousel_abc_x += WorkAroundBarOffset - o;
} }
if(WorkAroundIconSet & OLD_COUNT_ICON)
else if (strcmp(cfg_name, "sdcard_coords") == 0) { {
short x,y; THEME.gamegrid_count_x += WorkAroundBarOffset - o;
if (sscanf(val, "%hd,%hd", &x, &y) == 2) { THEME.gamecarousel_count_x += WorkAroundBarOffset - o;
THEME.sdcard_x = x - (x % 4); }
THEME.sdcard_y = y; if(WorkAroundIconSet & OLD_LIST_ICON)
} {
} THEME.gamegrid_list_x += WorkAroundBarOffset - o;
THEME.gamecarousel_list_x += WorkAroundBarOffset - o;
else if (strcmp(cfg_name, "favorite_coords") == 0) { }
short x,y; if(WorkAroundIconSet & OLD_GRID_ICON)
if (sscanf(val, "%hd,%hd", &x, &y) == 2) { {
THEME.favorite_x = x - (x % 4); THEME.gamegrid_grid_x += WorkAroundBarOffset - o;
THEME.favorite_y = y; THEME.gamecarousel_grid_x += WorkAroundBarOffset - o;
} }
} if(WorkAroundIconSet & OLD_CAROUSEL_ICON)
{
else if (strcmp(cfg_name, "abc_coords") == 0) { THEME.gamegrid_carousel_x += WorkAroundBarOffset - o;
short x,y; THEME.gamecarousel_carousel_x += WorkAroundBarOffset - o;
if (sscanf(val, "%hd,%hd", &x, &y) == 2) { }
THEME.abc_x = x - (x % 4); WorkAroundBarOffset = o;
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;
}
}
*/
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) { 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, "wsprompt = %d\n", Settings.wsprompt);
fprintf(f, "parentalcontrol = %d\n ", Settings.parentalcontrol); fprintf(f, "parentalcontrol = %d\n ", Settings.parentalcontrol);
fprintf(f, "cover_path = %s\n ", Settings.covers_path); fprintf(f, "cover_path = %s\n ", Settings.covers_path);
fprintf(f, "cover2d_path = %s\n ", Settings.covers2d_path);
if (CFG.widescreen) { if (CFG.widescreen) {
fprintf(f, "wtheme_path = %s\n ", CFG.theme_path); fprintf(f, "wtheme_path = %s\n ", CFG.theme_path);
} else { } else {
@ -1559,9 +1505,9 @@ bool cfg_load_global() {
Settings.keyset = us; Settings.keyset = us;
Settings.hddinfo = hr12; Settings.hddinfo = hr12;
Settings.gameDisplay = list; Settings.gameDisplay = list;
Settings.sinfo = ((THEME.showID) ? GameID : Neither); Settings.sinfo = ((THEME.show_id) ? GameID : Neither);
Settings.rumble = RumbleOn; Settings.rumble = RumbleOn;
if (THEME.showRegion) { if (THEME.show_region) {
Settings.sinfo = ((Settings.sinfo == GameID) ? Both : GameRegion); Settings.sinfo = ((Settings.sinfo == GameID) ? Both : GameRegion);
} }
Settings.volume = 80; Settings.volume = 80;
@ -1655,7 +1601,8 @@ void CFG_Load(void) {
cfg_parsefile(pathname, &widescreen_set); //first set widescreen cfg_parsefile(pathname, &widescreen_set); //first set widescreen
cfg_parsefile(pathname, &path_set); //then set config and layout options 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 cfg_parsefile(pathname, &theme_set); //finally set theme information
// set GUI language, use Wii's language setting if language is set to default // set GUI language, use Wii's language setting if language is set to default

View File

@ -50,96 +50,131 @@ extern "C" {
}; };
struct THEME { struct THEME {
int selection_x; short gamelist_x;
int selection_y; short gamelist_y;
int selection_w; short gamelist_w;
int selection_h; short gamelist_h;
int gamegrid_x; short gamegrid_x;
int gamegrid_y; short gamegrid_y;
int gamegrid_w; short gamegrid_w;
int gamegrid_h; short gamegrid_h;
int tooltipAlpha; short gamecarousel_x;
int gamecarousel_x; short gamecarousel_y;
int gamecarousel_y; short gamecarousel_w;
int gamecarousel_w; short gamecarousel_h;
int gamecarousel_h;
short cover_x; short covers_x;
short cover_y; short covers_y;
short showID;
// short maxcharacters; short show_id;
short batteryUnused; short id_x;
short homebrew_x; short id_y;
short homebrew_y; short show_region;
short id_x; short region_x;
short id_y; short region_y;
short region_x;
short region_y; short sdcard_x;
short power_x; short sdcard_y;
short power_y; short homebrew_x;
short home_x; short homebrew_y;
short home_y; short power_x;
short battery1_x; short power_y;
short battery2_x; short home_x;
short battery3_x; short home_y;
short battery4_x; short setting_x;
short battery1_y; short setting_y;
short battery2_y; short install_x;
short battery3_y; short install_y;
short battery4_y; GXColor clock;
short favorite_x; short clock_align;
short favorite_y; short clock_x;
short abc_x; short clock_y;
short abc_y;
short list_x; GXColor info;
short list_y; short show_hddinfo;
short grid_x; short hddinfo_align;
short grid_y; short hddinfo_x;
short carousel_x; short hddinfo_y;
short carousel_y;
short count_x; short show_gamecount;
short count_y; short gamecount_align;
short sortBarOffset; short gamecount_x;
// short showPower; short gamecount_y;
// short showHome;
short setting_x; short show_tooltip;
short setting_y; int tooltipAlpha;
short install_x;
short install_y; GXColor prompttext;
short showHDD; GXColor settingstext;
short hddInfoAlign; GXColor gametext;
short hddInfo_x; short pagesize;
short hddInfo_y;
short showGameCnt; // Toolbar Icons in GameList
short gameCntAlign; /*
short gameCnt_x; short favorite_x;
short gameCnt_y; short favorite_y;
short showRegion; short search_x;
short showBattery; short search_y;
short showToolTip; short abc_x;
//color short abc_y;
short info_r; short count_x;
short info_g; short count_y;
short info_b; short list_x;
short prompttxt_r; short list_y;
short prompttxt_g; short grid_x;
short prompttxt_b; short grid_y;
short settingsTxt_r; short carousel_x;
short settingsTxt_g; short carousel_y;
short settingsTxt_b; short sortBarOffset;
short clock_r; */
short clock_g; // Toolbar Icons in GameList
short clock_b; short gamelist_favorite_x;
short clock_x; short gamelist_favorite_y;
short clock_y; short gamelist_search_x;
short clockAlign; short gamelist_search_y;
short sdcard_x; short gamelist_abc_x;
short sdcard_y; short gamelist_abc_y;
short gameText_r; short gamelist_count_x;
short gameText_g; short gamelist_count_y;
short gameText_b; short gamelist_list_x;
short pagesize; 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 CFG CFG;
extern struct THEME THEME; extern struct THEME THEME;
@ -341,7 +376,8 @@ extern "C" {
u8 patchcountrystrings; u8 patchcountrystrings;
u8 screensaver; u8 screensaver;
short godmode; short godmode;
char covers_path[100]; char covers_path[100];
char covers2d_path[100];
char theme_path[100]; char theme_path[100];
char wtheme_path[100]; char wtheme_path[100];
char disc_path[100]; char disc_path[100];

View File

@ -1,6 +1,8 @@
#ifndef _DISC_H_ #ifndef _DISC_H_
#define _DISC_H_ #define _DISC_H_
#include <gccore.h> /* for define ATTRIBUTE_PACKED */
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif

View File

@ -3,12 +3,44 @@
#include "settings/cfg.h" #include "settings/cfg.h"
#include "usbloader/wbfs.h" #include "usbloader/wbfs.h"
#include "main.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 * EntryCmp
@ -52,17 +84,158 @@ s32 __Menu_EntryCmpCount(const void *a, const void *b) {
return ret; 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 * Get Gamelist
***************************************************************************/ ***************************************************************************/
int __Menu_GetGameList(int t, wchar_t* gameFilter, discHdr ** PgameList, u32 *PgameCnt) {
int __Menu_GetEntries(int t) {
struct discHdr *buffer = NULL; struct discHdr *buffer = NULL;
struct discHdr *buffer2 = NULL;
struct discHdr *header = NULL;
u32 cnt, len; u32 cnt, cnt2=0, len;
s32 ret; s32 ret;
/* Get list length */ /* Get list length */
@ -87,82 +260,99 @@ int __Menu_GetEntries(int t) {
if (buffer) free(buffer); if (buffer) free(buffer);
return ret; return ret;
} }
for (u32 i = 0; i < cnt; i++) {
struct discHdr *header = &buffer[i];
/* Filters */ /* Filters */
if (Settings.fave && t==0) { if (Settings.fave && t==0) {
u32 cnt2 = 0; struct Game_NUM* game_num = CFG_get_game_num(header->id);
if (!game_num || game_num->favorite==0)
for (u32 i = 0; i < cnt; i++) { continue;
header = &buffer[i]; }
u8 favorite = 0;
struct Game_NUM* game_num = CFG_get_game_num(header->id); if (Settings.parentalcontrol && !Settings.godmode && t==0) {
if (game_num) { if (get_block(header) >= Settings.parentalcontrol)
favorite = game_num->favorite; continue;
} }
if (favorite==1) {
buffer2 = (discHdr *) realloc(buffer2, (cnt2+1) * sizeof(struct discHdr)); if(gameFilter && *gameFilter && t==0) {
if (!buffer2) { u32 filter_len = wcslen(gameFilter);
free(buffer); wchar_t *gameName = FreeTypeGX::charToWideChar(get_title(header));
return -1; if (!gameName || wcsnicmp(gameName, gameFilter, filter_len)) {
} delete [] gameName;
continue;
memcpy((buffer2 + cnt2), (buffer + i), sizeof(struct discHdr)); }
cnt2++; }
} if(i != cnt2)
} buffer[cnt2] = buffer[i];
if (buffer2) { cnt2++;
free(buffer); }
buffer = buffer2; if(cnt > cnt2)
buffer2 = NULL; {
} else { cnt = cnt2;
memset(buffer, 0, len); buffer = (struct discHdr *)realloc(buffer, sizeof(struct discHdr) * cnt);
} }
cnt = cnt2; if (!buffer)
} return -1;
if (Settings.parentalcontrol && !Settings.godmode && t==0) { if (Settings.sort==pcount) {
u32 cnt2 = 0; qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmpCount);
} else {
for (u32 i = 0; i < cnt; i++) { qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmp);
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;
/* Set values */
if(PgameList) *PgameList = buffer; else free(buffer);
if(PgameCnt) *PgameCnt = cnt;
return 0; 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;
}

View File

@ -8,10 +8,24 @@
#ifndef _GETENTRIES_H_ #ifndef _GETENTRIES_H_
#define _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 //! param t
//! make this 1 if you want the function to ignore the rules //! make this 1 if you want the function to ignore the rules
//! (settings and parental control) when making the game list. //! (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 #endif

View File

@ -139,7 +139,7 @@ s32 Wad_Install(FILE *fp)
if (Settings.wsprompt == yes){ if (Settings.wsprompt == yes){
dialogBoxImg.SetWidescreen(CFG.widescreen);} 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); GuiImage btn1Img(&btnOutline);
if (Settings.wsprompt == yes){ if (Settings.wsprompt == yes){
btn1Txt.SetWidescreen(CFG.widescreen); btn1Txt.SetWidescreen(CFG.widescreen);
@ -171,33 +171,33 @@ s32 Wad_Install(FILE *fp)
char title[50]; char title[50];
sprintf(title, "%s", tr("Installing wad")); 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.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
titleTxt.SetPosition(0,40); titleTxt.SetPosition(0,40);
char msg[50]; char msg[50];
sprintf(msg, " "); sprintf(msg, " ");
// sprintf(msg, "%s", tr("Initializing Network")); // 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.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
msg1Txt.SetPosition(50,75); msg1Txt.SetPosition(50,75);
// char msg2[50] = " "; // 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.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
msg2Txt.SetPosition(50, 98); 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.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
msg3Txt.SetPosition(50, 121); 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.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
msg4Txt.SetPosition(50, 144); 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.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
msg5Txt.SetPosition(50, 167); 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.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
prTxt.SetPosition(0, 50); prTxt.SetPosition(0, 50);
@ -236,6 +236,7 @@ s32 Wad_Install(FILE *fp)
///start the wad shit ///start the wad shit
bool fail = false; bool fail = false;
wadHeader *header = NULL; wadHeader *header = NULL;
void *pvoid;
signed_blob *p_certs = NULL, *p_crl = NULL, *p_tik = NULL, *p_tmd = NULL; signed_blob *p_certs = NULL, *p_crl = NULL, *p_tik = NULL, *p_tmd = NULL;
tmd *tmd_data = NULL; tmd *tmd_data = NULL;
@ -247,49 +248,51 @@ s32 Wad_Install(FILE *fp)
ResumeGui(); ResumeGui();
msg1Txt.SetText(tr(">> Reading WAD data...")); msg1Txt.SetText(tr(">> Reading WAD data..."));
HaltGui(); HaltGui();
#define SetPointer(a, p) a=(typeof(a))p
// WAD header // WAD header
//ret = __Wad_ReadAlloc(fp, (void *)header, offset, sizeof(wadHeader)); //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) if (ret < 0)
goto err; goto err;
else SetPointer(header, pvoid);
offset += round_up(header->header_len, 64); offset += round_up(header->header_len, 64);
// WAD certificates // 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, (void **)&p_certs, offset, header->certs_len); ret = __Wad_ReadAlloc(fp, &pvoid, offset, header->certs_len);
if (ret < 0) if (ret < 0)
goto err; goto err;
else SetPointer(p_certs, pvoid);
offset += round_up(header->certs_len, 64); offset += round_up(header->certs_len, 64);
// WAD crl // WAD crl
if (header->crl_len) { 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, (void **)&p_crl, offset, header->crl_len); ret = __Wad_ReadAlloc(fp, &pvoid, offset, header->crl_len);
if (ret < 0) if (ret < 0)
goto err; goto err;
else SetPointer(p_crl, pvoid);
offset += round_up(header->crl_len, 64); offset += round_up(header->crl_len, 64);
} }
// WAD ticket // 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, (void **)&p_tik, offset, header->tik_len); ret = __Wad_ReadAlloc(fp, &pvoid, offset, header->tik_len);
if (ret < 0) if (ret < 0)
goto err; goto err;
else SetPointer(p_tik, pvoid);
offset += round_up(header->tik_len, 64); offset += round_up(header->tik_len, 64);
// WAD TMD // 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, (void **)&p_tmd, offset, header->tmd_len); ret = __Wad_ReadAlloc(fp, &pvoid, offset, header->tmd_len);
if (ret < 0) if (ret < 0)
goto err; goto err;
else SetPointer(p_tmd, pvoid);
offset += round_up(header->tmd_len, 64); offset += round_up(header->tmd_len, 64);
ResumeGui(); ResumeGui();
msg1Txt.SetText(tr("Reading WAD data... Ok!")); msg1Txt.SetText(tr("Reading WAD data... Ok!"));
msg2Txt.SetText(tr(">> Installing ticket...")); msg2Txt.SetText(tr(">> Installing ticket..."));
@ -465,7 +468,7 @@ s32 Wad_Uninstall(FILE *fp)
if (Settings.wsprompt == yes){ if (Settings.wsprompt == yes){
dialogBoxImg.SetWidescreen(CFG.widescreen);} 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); GuiImage btn1Img(&btnOutline);
if (Settings.wsprompt == yes){ if (Settings.wsprompt == yes){
btn1Txt.SetWidescreen(CFG.widescreen); btn1Txt.SetWidescreen(CFG.widescreen);
@ -476,27 +479,27 @@ s32 Wad_Uninstall(FILE *fp)
char title[50]; char title[50];
sprintf(title, "%s", tr("Uninstalling wad")); 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.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
titleTxt.SetPosition(0,40); 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.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
msg1Txt.SetPosition(50,75); 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.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
msg2Txt.SetPosition(50, 98); 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.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
msg3Txt.SetPosition(50, 121); 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.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
msg4Txt.SetPosition(50, 144); 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.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
msg5Txt.SetPosition(50, 167); msg5Txt.SetPosition(50, 167);
@ -527,7 +530,8 @@ s32 Wad_Uninstall(FILE *fp)
//sleep(3); //sleep(3);
///start the wad shit ///start the wad shit
wadHeader *header = NULL; wadHeader *header = NULL;
void *pvoid = NULL;
tikview *viewData = NULL; tikview *viewData = NULL;
u64 tid; u64 tid;
@ -537,7 +541,7 @@ s32 Wad_Uninstall(FILE *fp)
msg1Txt.SetText(tr(">> Reading WAD data...")); msg1Txt.SetText(tr(">> Reading WAD data..."));
// WAD header // WAD header
ret = __Wad_ReadAlloc(fp, (void **)&header, 0, sizeof(wadHeader)); ret = __Wad_ReadAlloc(fp, &pvoid, 0, sizeof(wadHeader));
if (ret < 0) { if (ret < 0) {
char errTxt[50]; char errTxt[50];
sprintf(errTxt,"%sret = %d",tr(">> Reading WAD data...ERROR! "),ret); 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); //printf(" ERROR! (ret = %d)\n", ret);
goto out; goto out;
} }
SetPointer(header, pvoid);
// Get title ID // Get title ID
ret = __Wad_GetTitleID(fp, header, &tid); ret = __Wad_GetTitleID(fp, header, &tid);