*Added custom Game Categories switchable in main menu and selected/adjustable in game settings menu. Own categories can be added and applied to games. A multiple category selection is supported in showing and assigning.

*Fix homebrew browser indicator counter (thx dj_skual)
*Fix We Dare anti piracy protection (thx oggzee)
*Fix Wip patching
*IOS reload block working with d2x v6 beta1+ with all filesystems
*Changed CheckBox Cross to squareroot sign
*Added auto detection of the usb port on start with Hermes cIOS (allowing startup without waiting 20s for USB port 1) (was build in in rodries ehcmodule, thx!)
*With new d2x v6 beta1+ sector sizes other than 512 bytes per sector should be supported on ext/ntfs (maybe fat too) (NOT TESTED, need feedback)
This commit is contained in:
dimok321 2011-06-03 20:31:09 +00:00
parent 71d1790f7f
commit 1913aea194
83 changed files with 5418 additions and 184 deletions

View File

@ -2,8 +2,8 @@
<app version="1">
<name> USB Loader GX</name>
<coder>USB Loader GX Team</coder>
<version>2.1 r1084</version>
<release_date>201105302033</release_date>
<version>2.1 r1085</version>
<release_date>201105311715</release_date>
<no_ios_reload/>
<short_description>Loads games from USB-devices</short_description>
<long_description>USB Loader GX is a libwiigui based USB iso loader with a wii-like GUI. You can install games to your HDDs and boot them with shorter loading times.

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:42+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: David Jelinek (djelinek@hotmail.com) e->e,r->r,u->u, c->c \n"
"Language-Team: r1056 - last version on http://djelinek.sweb.cz/_USBLoderGX/czech.lang \n"
@ -123,6 +123,12 @@ msgstr ">> Nacítám WAD data...Ok! "
msgid "AUTO"
msgstr ""
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr "Vsechny oddíly"
@ -147,6 +153,9 @@ msgstr ""
msgid "Apr"
msgstr "Dub"
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr "Opravdu si prejete uzamknout USB Loader GX?"
@ -183,6 +192,9 @@ msgstr "Hudba na pozadí"
msgid "Big thanks to:"
msgstr "Velké díky pro:"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr "Zablokovat stažení obalů"
@ -268,6 +280,12 @@ msgstr "Zrušit"
msgid "Cannot write to destination."
msgstr "Nelze zapisovat na vybrané umístení."
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr "Zmena cesty prehrávání"
@ -314,6 +332,9 @@ msgstr "Konzole uzamcena"
msgid "Console must be unlocked for this option."
msgstr "Konzole musí být pro tuto možnost odemčena "
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "Konzole musí být odemcena pro tuto zmenu"
@ -402,6 +423,9 @@ msgstr "Smazat obal krabicky"
msgid "Delete Disc Artwork"
msgstr "Smazat potisk DVD"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr ""
@ -1176,6 +1200,9 @@ msgstr "Vyberte DOL"
msgid "Select a DOL from Game"
msgstr "Vybrat DOL ze hry"
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr "Zárí"
@ -1185,6 +1212,9 @@ msgstr "Nastavit vyhledávací filtr"
msgid "Settings"
msgstr "Nastavení"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr "Zobrazit volné místo"
@ -1415,6 +1445,9 @@ msgstr "Cesta k WIP patchum"
msgid "Waiting..."
msgstr "Cekám..."
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr "Varování:"
@ -1463,6 +1496,9 @@ msgstr "Nyní pouzíváte IOS:"
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr "Pokousíte se vybrat oddíl FAT32/NTFS/EXT s cIOS 249 Rev < 18. To není podporováno. Pokracujte na vasi odpovednost."
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr "Musíte vybrat nebo naformátovat oddíl"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:42+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: Fox888[dk]\n"
"Language-Team: [dk]\n"
@ -123,6 +123,12 @@ msgstr ">> Læser WAD-data...Ok!"
msgid "AUTO"
msgstr ""
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr "Alle Partitioner"
@ -147,6 +153,9 @@ msgstr "Indlæs"
msgid "Apr"
msgstr ""
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr "Er du sikker på at du vil låse USB Loader GX?"
@ -183,6 +192,9 @@ msgstr "Baggrundsmusik"
msgid "Big thanks to:"
msgstr "En stor tak til:"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr "Bloker Cover downloads"
@ -268,6 +280,12 @@ msgstr "Annullér"
msgid "Cannot write to destination."
msgstr "Kan ikke skrive til destinationen."
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr "Ændre sti til musik"
@ -314,6 +332,9 @@ msgstr "Konsollen er låst"
msgid "Console must be unlocked for this option."
msgstr "Konsollen skal være låst op for denne mulighed."
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "Konsollen skal være låst op for ændre dette."
@ -402,6 +423,9 @@ msgstr "Slet boxart"
msgid "Delete Disc Artwork"
msgstr "Slet DVD-billede"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr ""
@ -1176,6 +1200,9 @@ msgstr "Vælg en DOL"
msgid "Select a DOL from Game"
msgstr "Vælg DOL fra spil"
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr ""
@ -1185,6 +1212,9 @@ msgstr "Søgefilter"
msgid "Settings"
msgstr "Indstillinger"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr "Vis fri plads"
@ -1415,6 +1445,9 @@ msgstr "Sti til WIP patches"
msgid "Waiting..."
msgstr "Venter..."
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr "Advarsel:"
@ -1463,6 +1496,9 @@ msgstr "Du brug i øjeblikket IOS"
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr "Du prøver at vælge en FAT32/NTFS/EXT partition med cIOS 249 Rev < 18. Dette er ikke understøttet. Fortsætte er på egen risiko"
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr "Du skal vælge eller formattere en partition"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:42+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2011-03-16 08:16+0100\n"
"Last-Translator: glowy\n"
"Language-Team: tj_cool, glowy\n"
@ -123,6 +123,12 @@ msgstr ">> WAD data lezen...Ok!"
msgid "AUTO"
msgstr ""
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr "Alle partities"
@ -147,6 +153,9 @@ msgstr "Toepassen"
msgid "Apr"
msgstr ""
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr "Weet je zeker dat je USB Loader GX wilt vergrendelen"
@ -183,6 +192,9 @@ msgstr "Achtergrondmuziek"
msgid "Big thanks to:"
msgstr "Grote dank aan:"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr "Blokkeer Downloads van Hoesjes"
@ -268,6 +280,12 @@ msgstr "Annuleren"
msgid "Cannot write to destination."
msgstr "Kan niet naar bestemming schrijven."
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr "Verander afspeel locatie"
@ -314,6 +332,9 @@ msgstr "Console vergrendeld"
msgid "Console must be unlocked for this option."
msgstr "Console moet ontgrendeld zijn voor deze optie."
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "Console moet worden vrijgegeven om te wijzigen."
@ -402,6 +423,9 @@ msgstr "Hoesjes verwijderen"
msgid "Delete Disc Artwork"
msgstr "Disk labels verwijderen"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr "Ontwerp:"
@ -1176,6 +1200,9 @@ msgstr "Selecteer een DOL"
msgid "Select a DOL from Game"
msgstr "Selecteer een DOL van Spel"
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr "Sep"
@ -1185,6 +1212,9 @@ msgstr "Zoekfilter instellen"
msgid "Settings"
msgstr "Instellingen"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr "Vrije ruimte weergeven"
@ -1415,6 +1445,9 @@ msgstr "Locatie WIP patches"
msgid "Waiting..."
msgstr "Wachten..."
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr "Waarschuwing:"
@ -1463,6 +1496,9 @@ msgstr "Je gebruikt op dit moment IOS"
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr "Je probeert een FAT32/NTFS/EXT partitie te selecteren met cIOS 249 Rev < 18. Dit word niet ondersteund. Verder gaan is op eigen risico."
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr "Je moet een partitie selecteren of formatteren"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:42+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@ -123,6 +123,12 @@ msgstr ""
msgid "AUTO"
msgstr ""
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr ""
@ -147,6 +153,9 @@ msgstr ""
msgid "Apr"
msgstr ""
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr ""
@ -183,6 +192,9 @@ msgstr ""
msgid "Big thanks to:"
msgstr ""
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr ""
@ -268,6 +280,12 @@ msgstr ""
msgid "Cannot write to destination."
msgstr ""
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr ""
@ -314,6 +332,9 @@ msgstr ""
msgid "Console must be unlocked for this option."
msgstr ""
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr ""
@ -402,6 +423,9 @@ msgstr ""
msgid "Delete Disc Artwork"
msgstr ""
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr ""
@ -1176,6 +1200,9 @@ msgstr ""
msgid "Select a DOL from Game"
msgstr ""
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr ""
@ -1185,6 +1212,9 @@ msgstr ""
msgid "Settings"
msgstr ""
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr ""
@ -1415,6 +1445,9 @@ msgstr ""
msgid "Waiting..."
msgstr ""
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr ""
@ -1463,6 +1496,9 @@ msgstr ""
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr ""
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:42+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: c64rmx\n"
"Language-Team: \n"
@ -123,6 +123,12 @@ msgstr ">> Luetaan WAD:ia...Ok!"
msgid "AUTO"
msgstr ""
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr ""
@ -147,6 +153,9 @@ msgstr ""
msgid "Apr"
msgstr "huhti"
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr ""
@ -183,6 +192,9 @@ msgstr "Taustamusiikki"
msgid "Big thanks to:"
msgstr "Isot kiitokset:"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr ""
@ -268,6 +280,12 @@ msgstr "Peruuta"
msgid "Cannot write to destination."
msgstr ""
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr ""
@ -314,6 +332,9 @@ msgstr "Konsoli lukittu"
msgid "Console must be unlocked for this option."
msgstr ""
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "Avaa konsolin lukitus muokataksesi asetuksia."
@ -402,6 +423,9 @@ msgstr "Tuhoa kannet"
msgid "Delete Disc Artwork"
msgstr "Tuhoa levykuvat"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr "Suunnittelu"
@ -1176,6 +1200,9 @@ msgstr "Valitse DOL"
msgid "Select a DOL from Game"
msgstr ""
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr "syys"
@ -1185,6 +1212,9 @@ msgstr ""
msgid "Settings"
msgstr "Asetukset"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr ""
@ -1415,6 +1445,9 @@ msgstr ""
msgid "Waiting..."
msgstr "Odottaa..."
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr ""
@ -1463,6 +1496,9 @@ msgstr ""
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr ""
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:42+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: Cyan\n"
"Language-Team: Badablek, Amour, ikya & Kin8\n"
@ -123,6 +123,12 @@ msgstr ">> Lecture données WAD...OK!"
msgid "AUTO"
msgstr ""
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr "Toutes les partitions"
@ -147,6 +153,9 @@ msgstr "Appliquer"
msgid "Apr"
msgstr "Avr"
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr "Êtes-vous sûr de vouloir verrouiller USB loader GX ?"
@ -183,6 +192,9 @@ msgstr "Fond sonore"
msgid "Big thanks to:"
msgstr "Grand merci à:"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr "Bloquer Téléch. jaquettes"
@ -268,6 +280,12 @@ msgstr "Annuler"
msgid "Cannot write to destination."
msgstr "Écriture impossible."
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr "Changer dossier"
@ -314,6 +332,9 @@ msgstr "Console verrouillée"
msgid "Console must be unlocked for this option."
msgstr "La console doit être déverrouillée."
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "La console doit être déverrouillée."
@ -402,6 +423,9 @@ msgstr "Supprimer la jaquette"
msgid "Delete Disc Artwork"
msgstr "Supprimer le label DVD"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr "Graphisme:"
@ -1176,6 +1200,9 @@ msgstr "Choisir un DOL"
msgid "Select a DOL from Game"
msgstr "Sélectionner un DOL à partir du jeu"
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr ""
@ -1185,6 +1212,9 @@ msgstr "Filtre de Recherche"
msgid "Settings"
msgstr "Paramètres"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr "Montrer l'espace libre"
@ -1415,6 +1445,9 @@ msgstr "Dossier patchs WIP"
msgid "Waiting..."
msgstr "En attente..."
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr "Attention:"
@ -1463,6 +1496,9 @@ msgstr "Vous utilisez actuellement l'IOS"
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr "Vous essayez de sélectionner une partition FAT32/NTFS/EXT avec un cIOS 249 Rev < 18 (non supporté). Continuez à vos risques."
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr "Vous devez choisir ou formater une partition"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:42+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2010-07-03 17:35-0800\n"
"Last-Translator: TheRealVisitor\n"
"Language-Team: Bertilax, Snoozer, wishmasterf, ZEN.13, TheRealVisitor\n"
@ -123,6 +123,12 @@ msgstr ">> Lese WAD Daten...OK!"
msgid "AUTO"
msgstr "AUTO"
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr "Alle Partitionen"
@ -147,6 +153,9 @@ msgstr "Anwenden"
msgid "Apr"
msgstr "April"
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr "Bist du sicher, dass du USB Loader GX sperren willst?"
@ -183,6 +192,9 @@ msgstr "Hintergrundmusik"
msgid "Big thanks to:"
msgstr "Großen Dank an:"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr "Blocke Cover-Downloads"
@ -268,6 +280,12 @@ msgstr "Abbrechen"
msgid "Cannot write to destination."
msgstr "Ziel kann nicht beschrieben werden."
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr "Pfad ändern"
@ -314,6 +332,9 @@ msgstr "Konsole gesperrt"
msgid "Console must be unlocked for this option."
msgstr "Gerät muss für diese Option entsperrt werden."
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "Konsole muss zum Bearbeiten entsperrt werden."
@ -402,6 +423,9 @@ msgstr "Lösche Cover"
msgid "Delete Disc Artwork"
msgstr "Lösche Disc Cover"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr "Design:"
@ -1176,6 +1200,9 @@ msgstr "Wähle eine DOL"
msgid "Select a DOL from Game"
msgstr "Wähle eine DOL vom Spiel"
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr "September"
@ -1185,6 +1212,9 @@ msgstr "Setze Suchfilter"
msgid "Settings"
msgstr "Einstellungen"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr "Zeige frei. Speicher"
@ -1415,6 +1445,9 @@ msgstr "WIP Patches"
msgid "Waiting..."
msgstr "Warte..."
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr "Warnung:"
@ -1463,6 +1496,9 @@ msgstr "Du benutzt zur Zeit das IOS"
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr "Es wird versucht eine FAT32/NTFS/EXT Partition mit dem cIOS 249 Rev < 18 auszuwählen. Das wird nicht unterstützt. Weiter auf eigene Gefahr."
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr "Du must eine Partition auswählen oder formatieren."

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:42+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2009-12-29 11:05+0100\n"
"Last-Translator: Springdale\n"
"Language-Team: Tusk, Springdale\n"
@ -123,6 +123,12 @@ msgstr ">> WAD adatok olvasása...Ok!"
msgid "AUTO"
msgstr ""
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr ""
@ -147,6 +153,9 @@ msgstr ""
msgid "Apr"
msgstr "Ápr"
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr ""
@ -183,6 +192,9 @@ msgstr "Háttérzene"
msgid "Big thanks to:"
msgstr "Köszönet:"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr ""
@ -268,6 +280,12 @@ msgstr "Mégse"
msgid "Cannot write to destination."
msgstr ""
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr ""
@ -314,6 +332,9 @@ msgstr "Konzol Zárolva"
msgid "Console must be unlocked for this option."
msgstr ""
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "A konzol zárolva, ezért nem változtatható meg."
@ -402,6 +423,9 @@ msgstr "Borító törlése"
msgid "Delete Disc Artwork"
msgstr "Lemezfotó törlése"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr "Felület:"
@ -1176,6 +1200,9 @@ msgstr "DOL kiválasztása"
msgid "Select a DOL from Game"
msgstr ""
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr "Szep"
@ -1185,6 +1212,9 @@ msgstr "Keresés"
msgid "Settings"
msgstr "Beállítások"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr ""
@ -1415,6 +1445,9 @@ msgstr "WIP Patch útvonal"
msgid "Waiting..."
msgstr "Várakozás..."
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr ""
@ -1463,6 +1496,9 @@ msgstr ""
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr ""
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr "Választanod vagy formáznod kell egy partíciót"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:44+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2011-03-10 21:00+0200\n"
"Last-Translator: Cambo \n"
"Language-Team: Cambo\n"
@ -123,6 +123,12 @@ msgstr ">> Lettura dati WAD...OK!"
msgid "AUTO"
msgstr "Automatico"
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr "Tutte"
@ -147,6 +153,9 @@ msgstr "Applica"
msgid "Apr"
msgstr "aprile"
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr "Sei sicuro di voler bloccare USB Loader GX?"
@ -183,6 +192,9 @@ msgstr "Musica Sottofondo"
msgid "Big thanks to:"
msgstr "Grazie mille a:"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr "Blocca Scaricam. Copertine"
@ -268,6 +280,12 @@ msgstr "Annulla"
msgid "Cannot write to destination."
msgstr "Impossibile scrivere nella destinazione."
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr "Modifica Cartella Suoni"
@ -314,6 +332,9 @@ msgstr "Console Bloccata"
msgid "Console must be unlocked for this option."
msgstr "La Wii deve essere sbloccata per questa opzione."
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "Sbloccare la Console per Modificarla."
@ -402,6 +423,9 @@ msgstr "Elimina la copertina"
msgid "Delete Disc Artwork"
msgstr "Elimina l'immagine disco"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr "Grafica:"
@ -1176,6 +1200,9 @@ msgstr "Seleziona un file DOL"
msgid "Select a DOL from Game"
msgstr "Seleziona un file DOL dal Gioco"
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr "settembre"
@ -1185,6 +1212,9 @@ msgstr "Cerca Gioco"
msgid "Settings"
msgstr "Impostazioni"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr "Mostra Spazio Libero"
@ -1415,6 +1445,9 @@ msgstr "Cart. Patch WIP"
msgid "Waiting..."
msgstr "Caricamento..."
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr "Attenzione:"
@ -1463,6 +1496,9 @@ msgstr "Al momento stai utilizzando l'IOS"
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr "Stai cercando di accedere ad una partizione FAT32/NTFS/EXT con un cIOS 249 di versione inferiore alla rev18. Ciò è non supportato. Continua a tuo rischio."
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr "Occorre selezionare o formattare una partizione"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:42+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: ichiroling\n"
"Language-Team: hosigumayuugi, papa, ichiroling\n"
@ -123,6 +123,12 @@ msgstr ">> WADデータの読込 … 成功!"
msgid "AUTO"
msgstr "自動"
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr "全ての領域"
@ -147,6 +153,9 @@ msgstr "適用"
msgid "Apr"
msgstr "4月"
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr "USB Loader GXをロックしますか?"
@ -183,6 +192,9 @@ msgstr "BGM"
msgid "Big thanks to:"
msgstr "協力:"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr "カバーのダウンロードを制限"
@ -268,6 +280,12 @@ msgstr "やめる"
msgid "Cannot write to destination."
msgstr "出力先に書き込めません"
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr "パスの変更"
@ -314,6 +332,9 @@ msgstr "GXはロックされています"
msgid "Console must be unlocked for this option."
msgstr "変更にはロックの解除が必要です"
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "変更にはロックの解除が必要です"
@ -402,6 +423,9 @@ msgstr "カバー画像を削除"
msgid "Delete Disc Artwork"
msgstr "ディスク画像を削除"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr "デザイン:"
@ -1176,6 +1200,9 @@ msgstr "DOLを選択"
msgid "Select a DOL from Game"
msgstr "ゲームからDOLを選択"
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr "9月"
@ -1185,6 +1212,9 @@ msgstr "検索"
msgid "Settings"
msgstr "設定"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr "空き容量の表示"
@ -1415,6 +1445,9 @@ msgstr "WIPパッチ"
msgid "Waiting..."
msgstr "待機中…"
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr "警告:"
@ -1463,6 +1496,9 @@ msgstr "使用中のIOS:IOS"
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr "rev17以前のcIOS249ではFAT32/NTFS/EXTに対応していません"
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr "領域を選択するか初期化してください"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:42+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: nextos@korea.com\n"
"Language-Team: \n"
@ -123,6 +123,12 @@ msgstr ">> WAD 데이터 읽기...성공!"
msgid "AUTO"
msgstr "자동"
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr ""
@ -147,6 +153,9 @@ msgstr ""
msgid "Apr"
msgstr "4월"
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr ""
@ -183,6 +192,9 @@ msgstr "배경음악"
msgid "Big thanks to:"
msgstr "감사 :"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr ""
@ -268,6 +280,12 @@ msgstr "취소"
msgid "Cannot write to destination."
msgstr ""
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr ""
@ -314,6 +332,9 @@ msgstr "콘솔 잠김"
msgid "Console must be unlocked for this option."
msgstr ""
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "변경하려면 콘솔 잠김을 해제하세요."
@ -402,6 +423,9 @@ msgstr "박스아트 삭제"
msgid "Delete Disc Artwork"
msgstr "삭제 Discart"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr "디자인:"
@ -1176,6 +1200,9 @@ msgstr ""
msgid "Select a DOL from Game"
msgstr ""
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr "9월"
@ -1185,6 +1212,9 @@ msgstr ""
msgid "Settings"
msgstr "설정"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr ""
@ -1415,6 +1445,9 @@ msgstr ""
msgid "Waiting..."
msgstr "기다리는 중..."
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr ""
@ -1463,6 +1496,9 @@ msgstr ""
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr ""
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:42+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: raschi\n"
"Language-Team: raschi\n"
@ -123,6 +123,12 @@ msgstr ">> Leser WAD data...OK!"
msgid "AUTO"
msgstr ""
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr "Alle partisjoner"
@ -147,6 +153,9 @@ msgstr ""
msgid "Apr"
msgstr ""
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr "Er du sikker på at du vil låse USB Loader GX?"
@ -183,6 +192,9 @@ msgstr "Bakgrunnsmusikk"
msgid "Big thanks to:"
msgstr "Stor takk til:"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr ""
@ -268,6 +280,12 @@ msgstr "Avbryt"
msgid "Cannot write to destination."
msgstr "Kan ikke skrive til mål."
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr "Endre spill sti"
@ -314,6 +332,9 @@ msgstr "Konsoll låst"
msgid "Console must be unlocked for this option."
msgstr ""
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "Konsoll må være opplåst for å modifisere."
@ -402,6 +423,9 @@ msgstr "Slett cover"
msgid "Delete Disc Artwork"
msgstr "Slett platebilde"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr ""
@ -1176,6 +1200,9 @@ msgstr "Velg en DOL fil"
msgid "Select a DOL from Game"
msgstr "Velg en DOL fra spill"
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr "Sep"
@ -1185,6 +1212,9 @@ msgstr "Angi søkefilter"
msgid "Settings"
msgstr "Innstillinger"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr "Vis ledig plass"
@ -1415,6 +1445,9 @@ msgstr "WIP patches sti"
msgid "Waiting..."
msgstr "Venter..."
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr "Advarsel:"
@ -1463,6 +1496,9 @@ msgstr ""
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr "Du prøver å velge en FAT32/NTFS/EXT partisjon med cIOS 249 rev < 18. Dette er ikke støttet. Fortsett på eget ansvar."
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr "Du må velge en partisjon"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:42+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: ziom666 (zadania_prog@vp.pl)\n"
"Language-Team: \n"
@ -123,6 +123,12 @@ msgstr ">> Odczyt danych WAD...Ok!"
msgid "AUTO"
msgstr "automatycznie"
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr ""
@ -147,6 +153,9 @@ msgstr ""
msgid "Apr"
msgstr "Kwiecien"
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr ""
@ -183,6 +192,9 @@ msgstr "Muzyka w tle"
msgid "Big thanks to:"
msgstr "Podziekowania dla"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr ""
@ -268,6 +280,12 @@ msgstr "Anuluj"
msgid "Cannot write to destination."
msgstr ""
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr ""
@ -314,6 +332,9 @@ msgstr "Konsola zablokowana"
msgid "Console must be unlocked for this option."
msgstr ""
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "Aby zmodyfikowac, odblokuj konsole"
@ -402,6 +423,9 @@ msgstr "Usun obrazki box"
msgid "Delete Disc Artwork"
msgstr "Usun obrazki plyt"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr "Projekt:"
@ -1176,6 +1200,9 @@ msgstr "Wybierz plik DOL"
msgid "Select a DOL from Game"
msgstr ""
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr "Wrzesien"
@ -1185,6 +1212,9 @@ msgstr "Ustaw filtr wyszukiwania"
msgid "Settings"
msgstr "Ustawienia"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr ""
@ -1415,6 +1445,9 @@ msgstr "Sciezka patchy WIP"
msgid "Waiting..."
msgstr "Oczekiwanie..."
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr ""
@ -1463,6 +1496,9 @@ msgstr ""
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr ""
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr "Musisz wybrac, lub sformatowac partycje"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:42+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2009-10-23 18:52+0200\n"
"Last-Translator: aniemotion\n"
"Language-Team: boto12, aniemotion\n"
@ -123,6 +123,12 @@ msgstr ">> Lendo arquivo WAD... Ok!"
msgid "AUTO"
msgstr ""
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr ""
@ -147,6 +153,9 @@ msgstr ""
msgid "Apr"
msgstr "Abr"
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr ""
@ -183,6 +192,9 @@ msgstr "Música de fundo"
msgid "Big thanks to:"
msgstr "Agradecimentos:"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr ""
@ -268,6 +280,12 @@ msgstr "Cancelar"
msgid "Cannot write to destination."
msgstr ""
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr "Alterar Caminho para Play"
@ -314,6 +332,9 @@ msgstr "Configuração Bloqueada"
msgid "Console must be unlocked for this option."
msgstr ""
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "É necessário desbloquear a configuração para poder modificar o parâmetro."
@ -402,6 +423,9 @@ msgstr "Eliminar Capas"
msgid "Delete Disc Artwork"
msgstr "Eliminar Img. Disco"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr "Desenho:"
@ -1176,6 +1200,9 @@ msgstr "Selecionar um DOL"
msgid "Select a DOL from Game"
msgstr ""
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr "Set"
@ -1185,6 +1212,9 @@ msgstr "Usar filtro de busca"
msgid "Settings"
msgstr "Configurações"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr ""
@ -1415,6 +1445,9 @@ msgstr "Caminho WIP Patches"
msgid "Waiting..."
msgstr "Aguardando..."
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr ""
@ -1463,6 +1496,9 @@ msgstr ""
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr ""
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr "Você precisa selecionar ou formatar uma partição"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:44+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2011-03-11 20:00-0000\n"
"Last-Translator: pplucky (Sky8000)\n"
"Language-Team: pplucky <pplucky@gmail.com> (Sky8000 <sky8000@hotmail.com>)\n"
@ -123,6 +123,12 @@ msgstr ">> Lendo ficheiro WAD... Ok!"
msgid "AUTO"
msgstr "AUTO"
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr "Todas as Partições"
@ -147,6 +153,9 @@ msgstr "Aplicar"
msgid "Apr"
msgstr "Abr"
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr "Tem a certeza que quer bloquear o USB Loader GX?"
@ -183,6 +192,9 @@ msgstr "Música de fundo"
msgid "Big thanks to:"
msgstr "Agradecimentos:"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr "Bloquear Descarregar Capas"
@ -268,6 +280,12 @@ msgstr "Cancelar"
msgid "Cannot write to destination."
msgstr "Não foi possível escrever no destino."
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr "Alterar Caminho de Músicas"
@ -314,6 +332,9 @@ msgstr "Configuração Bloqueada"
msgid "Console must be unlocked for this option."
msgstr "Configuração tem de estar desbloqueada para esta opção."
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "Configuração tem de estar desbloqueada para modificar o parâmetro."
@ -402,6 +423,9 @@ msgstr "Eliminar Capas"
msgid "Delete Disc Artwork"
msgstr "Eliminar Img. Disco"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr "Design:"
@ -1176,6 +1200,9 @@ msgstr "Seleccionar um DOL"
msgid "Select a DOL from Game"
msgstr "Seleccionar um DOL do Jogo"
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr "Set"
@ -1185,6 +1212,9 @@ msgstr "Filtro de pesquisa"
msgid "Settings"
msgstr "Configurações"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr "Mostrar Espaço Livre"
@ -1415,6 +1445,9 @@ msgstr "Cam. Patches WIP"
msgid "Waiting..."
msgstr "Aguardando..."
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr "Aviso:"
@ -1463,6 +1496,9 @@ msgstr "Está a usar o IOS"
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr "Está a tentar seleccionar uma partição FAT32/NTFS/EXT com um cIOS 249 Rev < 18. Isto não é suportado. Continue por sua conta e risco."
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr "Necessita seleccionar ou formatar uma partição"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:44+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: nikolai_ca\n"
"Language-Team: Kir, alendit, nikolai_ca\n"
@ -123,6 +123,12 @@ msgstr ">> Чтение данных WAD...Успешно!"
msgid "AUTO"
msgstr "АВТО"
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr ""
@ -147,6 +153,9 @@ msgstr ""
msgid "Apr"
msgstr "Апр"
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr ""
@ -183,6 +192,9 @@ msgstr "Фоновая музыка"
msgid "Big thanks to:"
msgstr "Большое спасибо:"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr ""
@ -268,6 +280,12 @@ msgstr "Отмена"
msgid "Cannot write to destination."
msgstr ""
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr ""
@ -314,6 +332,9 @@ msgstr "Консоль заблокирована"
msgid "Console must be unlocked for this option."
msgstr ""
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "Для изменения консоль должна быть разблокирована."
@ -402,6 +423,9 @@ msgstr "Удалить обложку"
msgid "Delete Disc Artwork"
msgstr "Удалить картинку диска"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr "Дизайн:"
@ -1176,6 +1200,9 @@ msgstr "Выберите DOL"
msgid "Select a DOL from Game"
msgstr ""
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr "Сен"
@ -1185,6 +1212,9 @@ msgstr "Установить фильтр для поиска"
msgid "Settings"
msgstr "Установки"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr ""
@ -1415,6 +1445,9 @@ msgstr "Путь к патчам QIP"
msgid "Waiting..."
msgstr "Ожидание..."
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr ""
@ -1463,6 +1496,9 @@ msgstr ""
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr ""
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:44+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: knife.hu kavid emul8ion\n"
"Language-Team: kavid\n"
@ -123,6 +123,12 @@ msgstr ">> 读取 WAD 数据... 成功!"
msgid "AUTO"
msgstr "自动"
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr "所有分区"
@ -147,6 +153,9 @@ msgstr "应用"
msgid "Apr"
msgstr "四月"
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr "确定要锁定USB Loader GX吗"
@ -183,6 +192,9 @@ msgstr "背景音乐"
msgid "Big thanks to:"
msgstr "非常感谢:"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr "下载封面"
@ -268,6 +280,12 @@ msgstr "取消"
msgid "Cannot write to destination."
msgstr "无法写入目标."
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr "更改游戏路径"
@ -314,6 +332,9 @@ msgstr "主机已锁定"
msgid "Console must be unlocked for this option."
msgstr "需解锁以开启设定功能."
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "需解锁以开启设定功能."
@ -402,6 +423,9 @@ msgstr "删除封面"
msgid "Delete Disc Artwork"
msgstr "删除光盘图片"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr "设计:"
@ -1176,6 +1200,9 @@ msgstr "选择一个 DOL"
msgid "Select a DOL from Game"
msgstr "从游戏选择DOL"
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr "九月"
@ -1185,6 +1212,9 @@ msgstr "设置搜索过滤器"
msgid "Settings"
msgstr "设置"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr "显示剩余空间"
@ -1415,6 +1445,9 @@ msgstr "WIP补丁路径"
msgid "Waiting..."
msgstr "等待中..."
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr "警告:"
@ -1463,6 +1496,9 @@ msgstr "正在使用IOS"
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr "cIOS 249低于r18版本不支持FAT32/NTFS/EXT分区.如要继续风险自负"
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr "你需要选择或者格式化一个分区"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:44+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: SirPalax\n"
"Language-Team: Penn, SirPalax\n"
@ -123,6 +123,12 @@ msgstr ">> Leyendo datos del WAD... ¡Correcto!"
msgid "AUTO"
msgstr ""
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr ""
@ -147,6 +153,9 @@ msgstr ""
msgid "Apr"
msgstr "Abr"
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr ""
@ -183,6 +192,9 @@ msgstr "Música de fondo"
msgid "Big thanks to:"
msgstr "Gracias a:"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr ""
@ -268,6 +280,12 @@ msgstr "Cancelar"
msgid "Cannot write to destination."
msgstr ""
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr "Cambiar Ruta"
@ -314,6 +332,9 @@ msgstr "Consola Bloqueada"
msgid "Console must be unlocked for this option."
msgstr ""
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "Debes desbloquear la consola para modificar."
@ -402,6 +423,9 @@ msgstr "Borrar Carátula"
msgid "Delete Disc Artwork"
msgstr "Borrar Imagen Disco"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr "Diseño:"
@ -1176,6 +1200,9 @@ msgstr "Seleccionar DOL"
msgid "Select a DOL from Game"
msgstr ""
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr ""
@ -1185,6 +1212,9 @@ msgstr "Usar filtro de búsqueda"
msgid "Settings"
msgstr "Configuración"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr ""
@ -1415,6 +1445,9 @@ msgstr "Ruta Parches WIP"
msgid "Waiting..."
msgstr "Esperando..."
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr ""
@ -1463,6 +1496,9 @@ msgstr ""
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr ""
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr "Necesitas seleccionar o formatear una partición"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:44+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2010-01-19 17:39+0200\n"
"Last-Translator: Katsurou\n"
"Language-Team: Katsurou, pirateX\n"
@ -123,6 +123,12 @@ msgstr ">> Läser WAD data...Ok!"
msgid "AUTO"
msgstr ""
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr ""
@ -147,6 +153,9 @@ msgstr ""
msgid "Apr"
msgstr "Apr"
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr ""
@ -183,6 +192,9 @@ msgstr "Bakgrundsmusik"
msgid "Big thanks to:"
msgstr "Stort tack till:"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr ""
@ -268,6 +280,12 @@ msgstr "Avbryt"
msgid "Cannot write to destination."
msgstr ""
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr "Ändra spel sökväg"
@ -314,6 +332,9 @@ msgstr "Konsol låst"
msgid "Console must be unlocked for this option."
msgstr ""
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "Konsolen måste vara upplåst för att kunna ändra det."
@ -402,6 +423,9 @@ msgstr "Radera omslag"
msgid "Delete Disc Artwork"
msgstr "Radera skivbilder"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr ""
@ -1176,6 +1200,9 @@ msgstr "Välj en DOL"
msgid "Select a DOL from Game"
msgstr ""
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr ""
@ -1185,6 +1212,9 @@ msgstr "Ställ in sök-filter"
msgid "Settings"
msgstr "Inställningar"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr ""
@ -1415,6 +1445,9 @@ msgstr "WIP patchssökväg"
msgid "Waiting..."
msgstr "Väntar..."
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr ""
@ -1463,6 +1496,9 @@ msgstr ""
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr ""
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr "Du måste välja eller formatera en partition"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:44+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2010-02-15 21:00+0800\n"
"Last-Translator: Jane.H\n"
"Language-Team: kyogc, Miller, Mika Li, Jane.H\n"
@ -123,6 +123,12 @@ msgstr ">> 讀取 WAD 數據... 成功!"
msgid "AUTO"
msgstr "自動"
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr "所有磁區"
@ -147,6 +153,9 @@ msgstr "套用"
msgid "Apr"
msgstr "四月"
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr "確定要鎖上 USB Loader GX嗎"
@ -183,6 +192,9 @@ msgstr "背景音樂"
msgid "Big thanks to:"
msgstr "非常感謝:"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr "封鎖封面下載"
@ -268,6 +280,12 @@ msgstr "取消"
msgid "Cannot write to destination."
msgstr "無法寫入目的地。"
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr "變更執行路徑"
@ -314,6 +332,9 @@ msgstr "控制台已上鎖"
msgid "Console must be unlocked for this option."
msgstr "控制台必須解鎖才可使用此選項。"
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "控制台須解鎖才可變更設定。"
@ -402,6 +423,9 @@ msgstr "刪除封面"
msgid "Delete Disc Artwork"
msgstr "刪除光碟圖片"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr "設計者:"
@ -1176,6 +1200,9 @@ msgstr "選擇一個 DOL"
msgid "Select a DOL from Game"
msgstr "從遊戲中選擇DOL"
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr "九月"
@ -1185,6 +1212,9 @@ msgstr "關鍵字篩選"
msgid "Settings"
msgstr "設定"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr "顯示可用空間"
@ -1415,6 +1445,9 @@ msgstr "WIP 修正檔路徑"
msgid "Waiting..."
msgstr "等待中..."
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr "警告:"
@ -1463,6 +1496,9 @@ msgstr "目前你使用中的IOS"
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr "你嘗試用高於 cIOS 249 版本18去選取 FAT32/NTFS/EXT 磁區。這格式不支援。繼續請自行承擔風險。"
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr "選擇你要格式化的磁區"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:44+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: Nitro_subzero \n"
"Language-Team: Nitro_subzero\n"
@ -123,6 +123,12 @@ msgstr ">> กำลังอ่านข้อมูล WAD...สำเร็
msgid "AUTO"
msgstr "อัตโนมัติ"
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr ""
@ -147,6 +153,9 @@ msgstr ""
msgid "Apr"
msgstr "เมษ."
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr ""
@ -183,6 +192,9 @@ msgstr "ดนตรีเบื้องหลัง"
msgid "Big thanks to:"
msgstr "ขอขอบคุณ:"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr ""
@ -268,6 +280,12 @@ msgstr "ยกเลิก"
msgid "Cannot write to destination."
msgstr ""
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr ""
@ -314,6 +332,9 @@ msgstr "คอนโซลถูกล๊อค"
msgid "Console must be unlocked for this option."
msgstr ""
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "ปลดล๊อคคอนโซลก่อน ถึงจะทำการเปลี่ยนแปลงได้"
@ -402,6 +423,9 @@ msgstr "ลบ ภาพกล่อง"
msgid "Delete Disc Artwork"
msgstr "ลบ ภาพแผ่น"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr "ออกแบบ:"
@ -1176,6 +1200,9 @@ msgstr "เลือก DOL"
msgid "Select a DOL from Game"
msgstr ""
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr "กย."
@ -1185,6 +1212,9 @@ msgstr "กำหนดเงื่อนไขการค้นหา"
msgid "Settings"
msgstr "กำหนดค่า"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr ""
@ -1415,6 +1445,9 @@ msgstr ""
msgid "Waiting..."
msgstr "กำลังรอ..."
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr ""
@ -1463,6 +1496,9 @@ msgstr ""
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr ""
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr ""

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-05-28 21:44+0200\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"Last-Translator: omercigingelini\n"
"Language-Team: omercigingelini\n"
@ -123,6 +123,12 @@ msgstr ">> WAD Bilgisi okunuyor..OK!"
msgid "AUTO"
msgstr "OTOMATIK"
msgid "Add category"
msgstr ""
msgid "All"
msgstr ""
msgid "All Partitions"
msgstr ""
@ -147,6 +153,9 @@ msgstr ""
msgid "Apr"
msgstr "Nis"
msgid "Are you sure you want to delete this category?"
msgstr ""
msgid "Are you sure you want to lock USB Loader GX?"
msgstr ""
@ -183,6 +192,9 @@ msgstr "Arkaplan müziği"
msgid "Big thanks to:"
msgstr "Teşekkürler:"
msgid "Block Categories Modify"
msgstr ""
msgid "Block Cover Downloads"
msgstr ""
@ -268,6 +280,12 @@ msgstr "Iptal"
msgid "Cannot write to destination."
msgstr ""
msgid "Categories"
msgstr ""
msgid "Categories:"
msgstr ""
msgid "Change Play Path"
msgstr ""
@ -314,6 +332,9 @@ msgstr "Konsol Kilitli"
msgid "Console must be unlocked for this option."
msgstr ""
msgid "Console must be unlocked to be able to use this."
msgstr ""
msgid "Console should be unlocked to modify it."
msgstr "Degiştirmek için konsolun kilidini açmalısın."
@ -402,6 +423,9 @@ msgstr "Kapak Görselini Sil"
msgid "Delete Disc Artwork"
msgstr "Disk Görselini Sil"
msgid "Delete category"
msgstr ""
msgid "Design:"
msgstr "Tasarım:"
@ -1176,6 +1200,9 @@ msgstr "Bir DOL seç"
msgid "Select a DOL from Game"
msgstr ""
msgid "Select game categories"
msgstr ""
msgid "Sept"
msgstr "Eyl"
@ -1185,6 +1212,9 @@ msgstr "Arama Filtresi Ayarla"
msgid "Settings"
msgstr "Ayarlar"
msgid "Show Categories"
msgstr ""
msgid "Show Free Space"
msgstr ""
@ -1415,6 +1445,9 @@ msgstr ""
msgid "Waiting..."
msgstr "Beklemede..."
msgid "Warning"
msgstr ""
msgid "Warning:"
msgstr ""
@ -1463,6 +1496,9 @@ msgstr ""
msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 18. This is not supported. Continue on your own risk."
msgstr ""
msgid "You cannot delete this category."
msgstr ""
msgid "You need to select or format a partition"
msgstr "Bir bölüm seçmeniz ya da formatlamanız gerekiyor"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: USB Loader GX\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-02-12 10:25+0100\n"
"POT-Creation-Date: 2011-06-03 22:18+0200\n"
"PO-Revision-Date: 2009-10-01 01:00+0200\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
@ -163,33 +163,42 @@ msgstr ""
msgid "335 - clock pos y"
msgstr ""
msgid "260 - list layout favorite btn pos x"
msgid "220 - list layout favorite btn pos x"
msgstr ""
msgid "288 - list layout favorite btn pos x widescreen"
msgid "256 - list layout favorite btn pos x widescreen"
msgstr ""
msgid "13 - list layout favorite btn pos y"
msgstr ""
msgid "300 - list layout search btn pos x"
msgid "260 - list layout search btn pos x"
msgstr ""
msgid "320 - list layout search btn pos x widescreen"
msgid "288 - list layout search btn pos x widescreen"
msgstr ""
msgid "13 - list layout search btn pos y"
msgstr ""
msgid "340 - list layout abc/sort btn pos x"
msgid "300 - list layout abc/sort btn pos x"
msgstr ""
msgid "352 - list layout abc/sort btn pos x widescreen"
msgid "320 - list layout abc/sort btn pos x widescreen"
msgstr ""
msgid "13 - list layout abc/sort btn pos y"
msgstr ""
msgid "340 - list layout category btn pos x"
msgstr ""
msgid "352 - list layout category btn pos x widescreen"
msgstr ""
msgid "13 - list layout category btn pos y"
msgstr ""
msgid "380 - list layout list btn pos x"
msgstr ""
@ -247,33 +256,42 @@ msgstr ""
msgid "49 - game list layout pos y"
msgstr ""
msgid "200 - grid layout favorite btn pos x"
msgid "160 - grid layout favorite btn pos x"
msgstr ""
msgid "224 - grid layout favorite btn pos x widescreen"
msgid "192 - grid layout favorite btn pos x widescreen"
msgstr ""
msgid "13 - grid layout favorite btn pos y"
msgstr ""
msgid "240 - grid layout search btn pos x"
msgid "200 - grid layout search btn pos x"
msgstr ""
msgid "256 - grid layout search btn pos x widescreen"
msgid "224 - grid layout search btn pos x widescreen"
msgstr ""
msgid "13 - grid layout search btn pos y"
msgstr ""
msgid "280 - grid layout abc/sort btn pos x"
msgid "240 - grid layout abc/sort btn pos x"
msgstr ""
msgid "288 - grid layout abc/sort btn pos x widescreen"
msgid "256 - grid layout abc/sort btn pos x widescreen"
msgstr ""
msgid "13 - grid layout abc/sort btn pos y"
msgstr ""
msgid "280 - grid layout category btn pos x"
msgstr ""
msgid "288 - grid layout category btn pos x widescreen"
msgstr ""
msgid "13 - grid layout category btn pos y"
msgstr ""
msgid "320 - grid layout list btn pos x"
msgstr ""
@ -325,33 +343,39 @@ msgstr ""
msgid "640 - game grid layout width"
msgstr ""
msgid "200 - carousel layout favorite btn pos x"
msgid "160 - carousel layout favorite btn pos x"
msgstr ""
msgid "224 - carousel layout favorite btn pos x widescreen"
msgid "192 - carousel layout favorite btn pos x widescreen"
msgstr ""
msgid "13 - carousel layout favorite btn pos y"
msgstr ""
msgid "240 - carousel layout search btn pos x"
msgid "200 - carousel layout search btn pos x"
msgstr ""
msgid "256 - carousel layout search btn pos x widescreen"
msgid "224 - carousel layout search btn pos x widescreen"
msgstr ""
msgid "13 - carousel layout search btn pos y"
msgstr ""
msgid "280 - carousel layout abc/sort btn pos x"
msgid "240 - carousel layout abc/sort btn pos x"
msgstr ""
msgid "288 - carousel layout abc/sort btn pos x widescreen"
msgid "256 - carousel layout abc/sort btn pos x widescreen"
msgstr ""
msgid "13 - carousel layout abc/sort btn pos y"
msgstr ""
msgid "280 - carousel layout category btn pos x"
msgstr ""
msgid "288 - carousel layout category btn pos x widescreen"
msgstr ""
msgid "320 - carousel layout list btn pos x"
msgstr ""

File diff suppressed because one or more lines are too long

View File

@ -13,6 +13,7 @@
#include "settings/CSettings.h"
#include "settings/CGameSettings.h"
#include "settings/CGameStatistics.h"
#include "settings/CGameCategories.hpp"
#include "usbloader/usbstorage2.h"
#include "sys.h"
@ -168,7 +169,8 @@ bool StartUpProcess::Execute()
DeviceHandler::Instance()->MountAllUSB();
}
gprintf("\tLoading font...%s\n", Theme::LoadFont(Settings.theme_path) ? "done" : "failed (using default)");
gprintf("\tLoading game categories...%s\n", GameCategories.Load(Settings.ConfigPath) ? "done" : "failed");
gprintf("\tLoading font...%s\n", Theme::LoadFont(Settings.ConfigPath) ? "done" : "failed (using default)");
gprintf("\tLoading theme...%s\n", Theme::Load(Settings.theme) ? "done" : "failed (using default)");
//! Init the rest of the System

View File

@ -544,6 +544,30 @@ extern const u32 nocoverFull_png_size;
extern const u8 playersSort_png[];
extern const u32 playersSort_png_size;
extern const u8 add_png[];
extern const u32 add_png_size;
extern const u8 back_png[];
extern const u32 back_png_size;
extern const u8 forward_png[];
extern const u32 forward_png_size;
extern const u8 categoryPrompt_png[];
extern const u32 categoryPrompt_png_size;
extern const u8 categoryLine_png[];
extern const u32 categoryLine_png_size;
extern const u8 remove_png[];
extern const u32 remove_png_size;
extern const u8 category_png[];
extern const u32 category_png_size;
extern const u8 category_gray_png[];
extern const u32 category_gray_png_size;
extern const u8 stub_bin[];
extern const u32 stub_bin_size;

BIN
source/images/add.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
source/images/back.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
source/images/category.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 951 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 744 B

BIN
source/images/forward.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
source/images/remove.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -47,6 +47,7 @@
#include "OptionList.hpp"
#include "SoundOperations/gui_sound.h"
#include "SoundOperations/gui_bgm.h"
#include "sigslot.h"
//! Frequently used variables
extern FreeTypeGX *fontSystem;
@ -88,6 +89,12 @@ enum
WRAP, DOTTED, SCROLL_HORIZONTAL, SCROLL_NONE
};
typedef struct _POINT {
s16 x;
s16 y;
} POINT;
typedef struct _paddata
{
u16 btns_d;
@ -362,8 +369,8 @@ class GuiElement
virtual void Draw();
virtual void DrawTooltip();
protected:
void Lock();
void Unlock();
void LockElement();
void UnlockElement();
// static mutex_t mutex;
static mutex_t _lock_mutex;
lwp_t _lock_thread;
@ -388,7 +395,7 @@ class GuiElement
int yoffsetDyn; //!< Element Y offset, dynamic (added to yoffset value for animation effects)
int temp_xoffset; //!< Element Temp X offset
int temp_yoffset; //!< Element Temp Y offset
f32 degree; //!< Degree where to start for EFFECT_GOROUND enter it in ° like 60°
f32 degree; //!< Degree where to start for EFFECT_GOROUND enter it in ° like 60°
f32 frequency; //!< Speed for EFFECT_GOROUND || can also be negative for other direction
int Radius; //!< The radius in which the Element goes round for EFFECT_GOROUND
f32 circleamount; //!< Circleamount for the EFFECT_GOROUND effect
@ -490,6 +497,9 @@ class GuiWindow: public GuiElement
//!Moves the selected element to the element above or below
//!\param d Direction to move (-1 = up, 1 = down)
void MoveSelectionVert(int d);
//!Allow dim of screen on disable or not
void SetAllowDim(bool d) { allowDim = d; }
void SetDimScreen(bool d) { forceDim = d; }
//!Draws all the elements in this GuiWindow
void Draw();
void DrawTooltip();
@ -498,6 +508,8 @@ class GuiWindow: public GuiElement
//!\param t Pointer to a GuiTrigger, containing the current input data from PAD/WPAD
void Update(GuiTrigger * t);
protected:
bool forceDim;
bool allowDim;
std::vector<GuiElement*> _elements; //!< Contains all elements within the GuiWindow
};
@ -670,31 +682,15 @@ class GuiText: public GuiElement
//!Get the max textwidth
int GetTextMaxWidth();
//!Gets the total line number
virtual int GetLinesCount()
{
return 1;
}
;
virtual int GetLinesCount() { return 1; }
//!Get fontsize
int GetFontSize()
{
return size;
}
;
int GetFontSize() { return size; }
//!Set max lines to draw
void SetLinesToDraw(int l);
void SetWidescreen(bool b)
{
widescreen = b;
}
;
void SetWidescreen(bool b) { widescreen = b; }
//!Get current Textline (for position calculation)
const wchar_t * GetDynText(int ind = 0);
virtual const wchar_t * GetTextLine(int ind)
{
return GetDynText(ind);
}
;
virtual const wchar_t * GetTextLine(int ind) { return GetDynText(ind); }
//!Change the font
//!\param font bufferblock
//!\param font filesize
@ -859,6 +855,9 @@ class GuiButton: public GuiElement
void ScrollIsOn(int f);
void SetSkew(int XX1, int YY1, int XX2, int YY2, int XX3, int YY3, int XX4, int YY4);
void SetSkew(int *skew /* int skew[8] */);
virtual void SetState(int s, int c = -1);
sigslot::signal3<GuiButton *, int, const POINT&> Clicked;
sigslot::signal3<GuiButton *, int, const POINT&> Held;
protected:
GuiImage * image; //!< Button image (default)
GuiImage * imageOver; //!< Button image for STATE_SELECTED

View File

@ -36,11 +36,13 @@ void GuiBox::Draw()
f32 y2 = y + height;
guVector v[] = { { x, y, 0.0f }, { x2, y, 0.0f }, { x2, y2, 0.0f }, { x, y2, 0.0f }, { x, y, 0.0f } };
int alpha = GetAlpha();
GX_Begin(filled ? GX_TRIANGLEFAN : GX_LINESTRIP, GX_VTXFMT0, n);
for (u32 i = 0; i < n; i++)
{
GX_Position3f32(v[i].x, v[i].y, v[i].z);
GX_Color4u8(color[i].r, color[i].g, color[i].b, color[i].a);
GX_Color4u8(color[i].r, color[i].g, color[i].b, alpha);
}
GX_End();
GX_SetTevOp(GX_TEVSTAGE0, GX_MODULATE);

View File

@ -293,6 +293,37 @@ void GuiButton::SetSkew(int *skew)
if (image) image->SetSkew(skew);
}
void GuiButton::SetState(int s, int c)
{
GuiElement::SetState(s, c);
if(c < 0 || c > 3)
return;
if (s == STATE_CLICKED)
{
POINT p = {0, 0};
if (userInput[c].wpad.ir.valid)
{
p.x = userInput[c].wpad.ir.x;
p.y = userInput[c].wpad.ir.y;
}
Clicked(this, c, p);
}
else if (s == STATE_HELD)
{
POINT p = {0, 0};
if (userInput[c].wpad.ir.valid)
{
p.x = userInput[c].wpad.ir.x;
p.y = userInput[c].wpad.ir.y;
}
Held(this, c, p);
}
}
/**
* Draw the button on screen
*/
@ -329,7 +360,7 @@ void GuiButton::DrawTooltip()
time(&time1);
time2 = time1;
}
if (time1 != 0) // timer läuft
if (time1 != 0) // timer läuft
time(&time1);
if (time1 == 0 || difftime(time1, time2) >= 2)

View File

@ -25,12 +25,15 @@
#define WHITEBOX_RED_SIZE 4
GuiCheckbox::GuiCheckbox()
GuiCheckbox::GuiCheckbox(int s)
: GuiButton(30, 30), Checked(false)
{
style = s;
Checksign.SetParent(this);
Cross.SetParent(this);
Blackbox.SetParent(this);
Whitebox.SetParent(this);
Checksign.SetColor((GXColor) {0, 0, 0, 255});
Cross.SetColor((GXColor) {0, 0, 0, 255});
Blackbox.SetColor((GXColor) {0, 0, 0, 255});
Whitebox.SetColor((GXColor) {255, 255, 255, 255});
@ -38,12 +41,15 @@ GuiCheckbox::GuiCheckbox()
SetSize(30, 30);
}
GuiCheckbox::GuiCheckbox(int w, int h)
GuiCheckbox::GuiCheckbox(int w, int h, int s)
: GuiButton(w, h), Checked(false)
{
style = s;
Checksign.SetParent(this);
Cross.SetParent(this);
Blackbox.SetParent(this);
Whitebox.SetParent(this);
Checksign.SetColor((GXColor) {0, 0, 0, 255});
Cross.SetColor((GXColor) {0, 0, 0, 255});
Blackbox.SetColor((GXColor) {0, 0, 0, 255});
Whitebox.SetColor((GXColor) {255, 255, 255, 255});
@ -55,6 +61,8 @@ void GuiCheckbox::SetSize(int w, int h)
{
width = w;
height = h;
Checksign.SetSize(w-WHITEBOX_RED_SIZE, h-WHITEBOX_RED_SIZE);
Checksign.SetPosition(WHITEBOX_RED_SIZE/2, WHITEBOX_RED_SIZE/2);
Cross.SetSize(w-WHITEBOX_RED_SIZE, h-WHITEBOX_RED_SIZE);
Cross.SetPosition(WHITEBOX_RED_SIZE/2, WHITEBOX_RED_SIZE/2);
Blackbox.SetSize(w, h);
@ -72,7 +80,7 @@ void GuiCheckbox::SetState(int s, int c)
{
if(s == STATE_CLICKED)
Checked = !Checked;
else
GuiButton::SetState(s, c);
}
@ -82,5 +90,10 @@ void GuiCheckbox::Draw()
Blackbox.Draw();
Whitebox.Draw();
if(Checked)
{
if(style == CHECKSIGN)
Checksign.Draw();
else
Cross.Draw();
}
}

View File

@ -27,22 +27,30 @@
#include "libwiigui/gui.h"
#include "libwiigui/gui_box.hpp"
#include "libwiigui/gui_cross.hpp"
#include "libwiigui/gui_checksign.hpp"
class GuiCheckbox : public GuiButton
{
public:
GuiCheckbox();
GuiCheckbox(int w, int h);
GuiCheckbox(int style = CHECKSIGN);
GuiCheckbox(int w, int h, int style = CHECKSIGN);
void SetTransparent(bool b);
void SetSize(int w, int h);
void SetChecked(bool c) { LOCK(this); Checked = c; }
bool IsChecked() const { return Checked; }
virtual void SetState(int s, int c = -1);
virtual void Draw();
enum
{
CHECKSIGN,
CROSS,
};
protected:
GuiChecksign Checksign;
GuiCross Cross;
GuiBox Blackbox;
GuiBox Whitebox;
int style;
bool Checked;
};

View File

@ -0,0 +1,56 @@
/****************************************************************************
* Copyright (C) 2011
* by Dimok
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any
* damages arising from the use of this software.
*
* Permission is granted to anyone to use this software for any
* purpose, including commercial applications, and to alter it and
* redistribute it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you
* must not claim that you wrote the original software. If you use
* this software in a product, an acknowledgment in the product
* documentation would be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and
* must not be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
***************************************************************************/
#include "gui_checksign.hpp"
void GuiChecksign::Draw()
{
GX_SetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
GX_SetVtxDesc(GX_VA_POS, GX_DIRECT);
GX_SetVtxDesc(GX_VA_CLR0, GX_DIRECT);
GX_SetVtxDesc(GX_VA_TEX0, GX_NONE);
f32 x1Line1 = (float) GetLeft() + width*0.1f;
f32 y1Line1 = (float) GetTop() + height*0.65f;
f32 x2Line1 = GetLeft() + width*0.3f;
f32 y2Line1 = (float) GetTop() + (float) height - height*0.1f;
f32 x1Line2 = x2Line1;
f32 y1Line2 = y2Line1;
f32 x2Line2 = (float) GetLeft() + (float) width - width*0.1f;
f32 y2Line2 = (float) GetTop() + height*0.1f;
int alpha = GetAlpha();
GX_Begin(GX_LINES, GX_VTXFMT0, 4);
GX_Position3f32(x1Line1, y1Line1, 0.0f);
GX_Color4u8(color.r, color.g, color.b, alpha);
GX_Position3f32(x2Line1, y2Line1, 0.0f);
GX_Color4u8(color.r, color.g, color.b, alpha);
GX_Position3f32(x1Line2, y1Line2, 0.0f);
GX_Color4u8(color.r, color.g, color.b, alpha);
GX_Position3f32(x2Line2, y2Line2, 0.0f);
GX_Color4u8(color.r, color.g, color.b, alpha);
GX_End();
GX_SetTevOp(GX_TEVSTAGE0, GX_MODULATE);
}

View File

@ -0,0 +1,43 @@
/****************************************************************************
* Copyright (C) 2011
* by Dimok
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any
* damages arising from the use of this software.
*
* Permission is granted to anyone to use this software for any
* purpose, including commercial applications, and to alter it and
* redistribute it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you
* must not claim that you wrote the original software. If you use
* this software in a product, an acknowledgment in the product
* documentation would be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and
* must not be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
***************************************************************************/
#ifndef GUICHECKSIGN_HPP_
#define GUICHECKSIGN_HPP_
#include "libwiigui/gui.h"
class GuiChecksign : public GuiElement
{
public:
GuiChecksign() : Linewidth(2.0f) { color = (GXColor) {0, 0, 0, 255}; GX_SetLineWidth((u8) (Linewidth*6.0f), 0); }
//! Max line width is 42.5 pixel
void SetLinewidth(float w) { LOCK(this); Linewidth = w; GX_SetLineWidth((u8) (Linewidth*6.0f), 0); }
void SetColor(const GXColor c) { LOCK(this); color = c; }
void SetSize(int w, int h) { LOCK(this); width = w; height = h; }
void Draw();
protected:
GXColor color;
float Linewidth;
};
#endif

View File

@ -35,15 +35,17 @@ void GuiCross::Draw()
f32 y1 = GetTop();
f32 y2 = y1 + height;
int alpha = GetAlpha();
GX_Begin(GX_LINES, GX_VTXFMT0, 4);
GX_Position3f32(x1, y1, 0.0f);
GX_Color4u8(color.r, color.g, color.b, color.a);
GX_Color4u8(color.r, color.g, color.b, alpha);
GX_Position3f32(x2, y2, 0.0f);
GX_Color4u8(color.r, color.g, color.b, color.a);
GX_Color4u8(color.r, color.g, color.b, alpha);
GX_Position3f32(x2, y1, 0.0f);
GX_Color4u8(color.r, color.g, color.b, color.a);
GX_Color4u8(color.r, color.g, color.b, alpha);
GX_Position3f32(x1, y2, 0.0f);
GX_Color4u8(color.r, color.g, color.b, color.a);
GX_Color4u8(color.r, color.g, color.b, alpha);
GX_End();
GX_SetTevOp(GX_TEVSTAGE0, GX_MODULATE);
}

View File

@ -759,7 +759,7 @@ bool GuiElement::IsInside(int x, int y)
if (x > this->GetLeft() && x < (this->GetLeft() + width) && y > this->GetTop() && y < (this->GetTop() + height)) return true;
return false;
}
void GuiElement::Lock()
void GuiElement::LockElement()
{
// LWP_MutexLock(mutex);
for (;;) // loop while element is locked by self
@ -789,7 +789,7 @@ void GuiElement::Lock()
}
}
}
void GuiElement::Unlock()
void GuiElement::UnlockElement()
{
// LWP_MutexUnlock(mutex);
LWP_MutexLock(_lock_mutex);
@ -812,9 +812,9 @@ void GuiElement::Unlock()
SimpleLock::SimpleLock(GuiElement *e) :
element(e)
{
element->Lock();
element->LockElement();
}
SimpleLock::~SimpleLock()
{
element->Unlock();
element->UnlockElement();
}

View File

@ -14,6 +14,8 @@ GuiWindow::GuiWindow()
{
width = 0;
height = 0;
forceDim = false;
allowDim = true;
focus = 0; // allow focus
}
@ -21,6 +23,8 @@ GuiWindow::GuiWindow(int w, int h)
{
width = w;
height = h;
forceDim = false;
allowDim = true;
focus = 0; // allow focus
}
@ -98,10 +102,8 @@ void GuiWindow::Draw()
this->UpdateEffects();
if (parentElement && state == STATE_DISABLED)
//Menu_DrawRectangle(0,0,screenwidth,screenheight,(GXColor){0xbe, 0xca, 0xd5, 0x70},1);
Menu_DrawRectangle(0, 0, screenwidth, screenheight, ( GXColor )
{ 0, 0, 0, 0x70}, 1);
if ((parentElement && state == STATE_DISABLED && allowDim) || forceDim)
Menu_DrawRectangle(0, 0, screenwidth, screenheight, (GXColor) {0, 0, 0, 0x70}, 1);
}
void GuiWindow::DrawTooltip()
{

2748
source/libwiigui/sigslot.h Normal file

File diff suppressed because it is too large Load Diff

View File

@ -19,7 +19,7 @@
#include "mload/mload_modules.h"
#include "network/networkops.h"
#include "patches/patchcode.h"
#include "settings/Settings.h"
#include "settings/menus/GlobalSettings.hpp"
#include "settings/CGameSettings.h"
#include "themes/CTheme.h"
#include "themes/ThemeMenu.h"
@ -218,7 +218,7 @@ int MainMenu(int menu)
currentMenu = MenuInstall();
break;
case MENU_SETTINGS:
currentMenu = MenuSettings();
currentMenu = GlobalSettings::Show();
break;
case MENU_THEMEMENU:
currentMenu = ThemeMenu::Run();

View File

@ -6,6 +6,7 @@
#include "prompts/gameinfo.h"
#include "prompts/DiscBrowser.h"
#include "prompts/GameWindow.hpp"
#include "prompts/CategorySwitchPrompt.hpp"
#include "themes/CTheme.h"
#include "language/gettext.h"
#include "usbloader/wbfs.h"
@ -17,7 +18,6 @@
#include "network/update.h"
#include "network/ImageDownloader.h"
#include "FileOperations/fileops.h"
#include "settings/Settings.h"
#include "settings/CSettings.h"
#include "settings/CGameStatistics.h"
#include "settings/CGameSettings.h"
@ -95,6 +95,8 @@ GameBrowseMenu::GameBrowseMenu()
imgLock_gray = Resources::GetImageData("lock_gray.png");
imgUnlock = Resources::GetImageData("unlock.png");
imgUnlock_gray = Resources::GetImageData("unlock_gray.png");
imgCategory = Resources::GetImageData("category.png");
imgCategory_gray = Resources::GetImageData("category_gray.png");
homebrewImgData = Resources::GetImageData("browser.png");
homebrewImgDataOver = Resources::GetImageData("browser_over.png");
@ -189,8 +191,7 @@ GameBrowseMenu::GameBrowseMenu()
favoriteBtnImg->SetWidescreen(Settings.widescreen);
favoriteBtnImg_g = new GuiImage(imgfavIcon_gray);
favoriteBtnImg_g->SetWidescreen(Settings.widescreen);
favoriteBtn = new GuiButton(favoriteBtnImg_g, favoriteBtnImg_g, ALIGN_LEFT, ALIGN_TOP,
0, 0,
favoriteBtn = new GuiButton(favoriteBtnImg_g, favoriteBtnImg_g, ALIGN_LEFT, ALIGN_TOP, 0, 0,
trigA, btnSoundOver, btnSoundClick2, 1, favoriteBtnTT, -15, 52, 0, 3);
searchBtnTT = new GuiTooltip(tr( "Set Search-Filter" ));
@ -200,8 +201,7 @@ GameBrowseMenu::GameBrowseMenu()
searchBtnImg->SetWidescreen(Settings.widescreen);
searchBtnImg_g = new GuiImage(imgsearchIcon_gray);
searchBtnImg_g->SetWidescreen(Settings.widescreen);
searchBtn = new GuiButton(searchBtnImg_g, searchBtnImg_g, ALIGN_LEFT, ALIGN_TOP,
0, 0,
searchBtn = new GuiButton(searchBtnImg_g, searchBtnImg_g, ALIGN_LEFT, ALIGN_TOP, 0, 0,
trigA, btnSoundOver, btnSoundClick2, 1, searchBtnTT, -15, 52, 0, 3);
sortBtnTT = new GuiTooltip(" ");
@ -212,6 +212,16 @@ GameBrowseMenu::GameBrowseMenu()
sortBtnImg->SetWidescreen(Settings.widescreen);
sortBtn = new GuiButton(sortBtnImg, sortBtnImg, ALIGN_LEFT, ALIGN_TOP, 0, 0, trigA, btnSoundOver, btnSoundClick2, 1, sortBtnTT, -15, 52, 0, 3);
categBtnTT = new GuiTooltip(tr("Select game categories"));
if (Settings.wsprompt) sortBtnTT->SetWidescreen(Settings.widescreen);
categBtnTT->SetAlpha(thInt("255 - tooltip alpha"));
categBtnImg = new GuiImage(imgCategory);
categBtnImg->SetWidescreen(Settings.widescreen);
categBtnImg_g = new GuiImage(imgCategory_gray);
categBtnImg_g->SetWidescreen(Settings.widescreen);
categBtn = new GuiButton(categBtnImg, categBtnImg, ALIGN_LEFT, ALIGN_TOP, 0, 0, trigA, btnSoundOver, btnSoundClick2, 1, categBtnTT, -15, 52, 0, 3);
listBtnTT = new GuiTooltip(tr( "Display as a list" ));
if (Settings.wsprompt) listBtnTT->SetWidescreen(Settings.widescreen);
listBtnTT->SetAlpha(thInt("255 - tooltip alpha"));
@ -366,6 +376,8 @@ GameBrowseMenu::~GameBrowseMenu()
delete imgLock_gray;
delete imgUnlock;
delete imgUnlock_gray;
delete imgCategory;
delete imgCategory_gray;
delete homebrewImgData;
delete homebrewImgDataOver;
delete gameCover;
@ -402,6 +414,8 @@ GameBrowseMenu::~GameBrowseMenu()
delete unlockBtnImg_g;
delete dvdBtnImg;
delete dvdBtnImg_g;
delete categBtnImg;
delete categBtnImg_g;
delete homebrewImg;
delete homebrewImgOver;
delete gameCoverImg;
@ -428,6 +442,7 @@ GameBrowseMenu::~GameBrowseMenu()
delete carouselBtn;
delete lockBtn;
delete dvdBtn;
delete categBtn;
delete homebrewBtn;
delete DownloadBtn;
delete idBtn;
@ -445,6 +460,7 @@ GameBrowseMenu::~GameBrowseMenu()
delete carouselBtnTT;
delete lockBtnTT;
delete dvdBtnTT;
delete categBtnTT;
delete homebrewBtnTT;
delete DownloadBtnTT;
delete IDBtnTT;
@ -572,6 +588,16 @@ void GameBrowseMenu::ReloadBrowser()
lockBtnTT->SetText(tr( "Unlock USB Loader GX" ));
}
categBtn->SetImage(categBtnImg);
for(u32 n = 0; n < Settings.EnabledCategories.size(); ++n)
{
if(Settings.EnabledCategories[n] == 0)
{
categBtn->SetImage(categBtnImg_g);
break;
}
}
if(GetSelectedGame() >= 0)
lastSelectedGame = LIMIT(GetSelectedGame(), 0, gameList.size()-1);
else
@ -597,12 +623,14 @@ void GameBrowseMenu::ReloadBrowser()
carouselBtn->SetImage(carouselBtnImg_g);
carouselBtn->SetImageOver(carouselBtnImg_g);
favoriteBtn->SetPosition(Settings.widescreen ? thInt("288 - list layout favorite btn pos x widescreen") : thInt("260 - list layout favorite btn pos x"),
favoriteBtn->SetPosition(Settings.widescreen ? thInt("256 - list layout favorite btn pos x widescreen") : thInt("220 - list layout favorite btn pos x"),
thInt("13 - list layout favorite btn pos y"));
searchBtn->SetPosition(Settings.widescreen ? thInt("320 - list layout search btn pos x widescreen") : thInt("300 - list layout search btn pos x"),
searchBtn->SetPosition(Settings.widescreen ? thInt("288 - list layout search btn pos x widescreen") : thInt("260 - list layout search btn pos x"),
thInt("13 - list layout search btn pos y"));
sortBtn->SetPosition(Settings.widescreen ? thInt("352 - list layout abc/sort btn pos x widescreen") : thInt("340 - list layout abc/sort btn pos x"),
sortBtn->SetPosition(Settings.widescreen ? thInt("320 - list layout abc/sort btn pos x widescreen") : thInt("300 - list layout abc/sort btn pos x"),
thInt("13 - list layout abc/sort btn pos y"));
categBtn->SetPosition(Settings.widescreen ? thInt("352 - list layout category btn pos x widescreen") : thInt("340 - list layout category btn pos x"),
thInt("13 - list layout category btn pos y"));
listBtn->SetPosition(Settings.widescreen ? thInt("384 - list layout list btn pos x widescreen") : thInt("380 - list layout list btn pos x"),
thInt("13 - list layout list btn pos y"));
gridBtn->SetPosition(Settings.widescreen ? thInt("416 - list layout grid btn pos x widescreen") : thInt("420 - list layout grid btn pos x"),
@ -629,12 +657,14 @@ void GameBrowseMenu::ReloadBrowser()
carouselBtn->SetImage(carouselBtnImg_g);
carouselBtn->SetImageOver(carouselBtnImg_g);
favoriteBtn->SetPosition(Settings.widescreen ? thInt("224 - grid layout favorite btn pos x widescreen") : thInt("200 - grid layout favorite btn pos x"),
favoriteBtn->SetPosition(Settings.widescreen ? thInt("192 - grid layout favorite btn pos x widescreen") : thInt("160 - grid layout favorite btn pos x"),
thInt("13 - grid layout favorite btn pos y"));
searchBtn->SetPosition(Settings.widescreen ? thInt("256 - grid layout search btn pos x widescreen") : thInt("240 - grid layout search btn pos x"),
searchBtn->SetPosition(Settings.widescreen ? thInt("224 - grid layout search btn pos x widescreen") : thInt("200 - grid layout search btn pos x"),
thInt("13 - grid layout search btn pos y"));
sortBtn->SetPosition(Settings.widescreen ? thInt("288 - grid layout abc/sort btn pos x widescreen") : thInt("280 - grid layout abc/sort btn pos x"),
sortBtn->SetPosition(Settings.widescreen ? thInt("256 - grid layout abc/sort btn pos x widescreen") : thInt("240 - grid layout abc/sort btn pos x"),
thInt("13 - grid layout abc/sort btn pos y"));
categBtn->SetPosition(Settings.widescreen ? thInt("288 - grid layout category btn pos x widescreen") : thInt("280 - grid layout category btn pos x"),
thInt("13 - grid layout category btn pos y"));
listBtn->SetPosition(Settings.widescreen ? thInt("320 - grid layout list btn pos x widescreen") : thInt("320 - grid layout list btn pos x"),
thInt("13 - grid layout list btn pos y"));
gridBtn->SetPosition(Settings.widescreen ? thInt("352 - grid layout grid btn pos x widescreen") : thInt("360 - grid layout grid btn pos x"),
@ -661,11 +691,13 @@ void GameBrowseMenu::ReloadBrowser()
gridBtn->SetImage(gridBtnImg_g);
gridBtn->SetImageOver(gridBtnImg_g);
favoriteBtn->SetPosition(Settings.widescreen ? thInt("224 - carousel layout favorite btn pos x widescreen") : thInt("200 - carousel layout favorite btn pos x"),
favoriteBtn->SetPosition(Settings.widescreen ? thInt("192 - carousel layout favorite btn pos x widescreen") : thInt("160 - carousel layout favorite btn pos x"),
thInt("13 - carousel layout favorite btn pos y"));
searchBtn->SetPosition(Settings.widescreen ? thInt("256 - carousel layout search btn pos x widescreen") : thInt("240 - carousel layout search btn pos x"),
searchBtn->SetPosition(Settings.widescreen ? thInt("224 - carousel layout search btn pos x widescreen") : thInt("200 - carousel layout search btn pos x"),
thInt("13 - carousel layout search btn pos y"));
sortBtn->SetPosition(Settings.widescreen ? thInt("288 - carousel layout abc/sort btn pos x widescreen") : thInt("280 - carousel layout abc/sort btn pos x"),
sortBtn->SetPosition(Settings.widescreen ? thInt("256 - carousel layout abc/sort btn pos x widescreen") : thInt("240 - carousel layout abc/sort btn pos x"),
thInt("13 - carousel layout abc/sort btn pos y"));
categBtn->SetPosition(Settings.widescreen ? thInt("288 - carousel layout category btn pos x widescreen") : thInt("280 - carousel layout category btn pos x"),
thInt("13 - carousel layout abc/sort btn pos y"));
listBtn->SetPosition(Settings.widescreen ? thInt("320 - carousel layout list btn pos x widescreen") : thInt("320 - carousel layout list btn pos x"),
thInt("13 - carousel layout list btn pos y"));
@ -709,6 +741,7 @@ void GameBrowseMenu::ReloadBrowser()
Append(favoriteBtn);
Append(searchBtn);
Append(sortBtn);
Append(categBtn);
Append(listBtn);
Append(gridBtn);
Append(carouselBtn);
@ -1103,6 +1136,29 @@ void GameBrowseMenu::CheckDiscSlotUpdate()
rockout(GetSelectedGame());
}
else if(categBtn->GetState() == STATE_CLICKED)
{
SetState(STATE_DISABLED);
CategorySwitchPrompt promptMenu;
promptMenu.SetAlignment(ALIGN_CENTER, ALIGN_MIDDLE);
promptMenu.SetEffect(EFFECT_FADE, 20);
mainWindow->Append(&promptMenu);
promptMenu.Show();
promptMenu.SetEffect(EFFECT_FADE, -20);
while(promptMenu.GetEffect() > 0) usleep(100);
mainWindow->Remove(&promptMenu);
categBtn->ResetState();
SetState(STATE_DEFAULT);
if(promptMenu.categoriesChanged())
{
wString oldFilter(gameList.GetCurrentFilter());
gameList.FilterList(oldFilter.c_str());
ReloadBrowser();
}
}
if(DiscDriveCoverOld != DiscDriveCover)
{
if(DiscDriveCover & 0x02)

View File

@ -75,6 +75,8 @@ class GameBrowseMenu : public GuiWindow
GuiImageData * imgLock_gray;
GuiImageData * imgUnlock;
GuiImageData * imgUnlock_gray;
GuiImageData * imgCategory;
GuiImageData * imgCategory_gray;
GuiImageData * homebrewImgData;
GuiImageData * homebrewImgDataOver;
GuiImageData * gameCover;
@ -111,6 +113,8 @@ class GameBrowseMenu : public GuiWindow
GuiImage * unlockBtnImg_g;
GuiImage * dvdBtnImg;
GuiImage * dvdBtnImg_g;
GuiImage * categBtnImg;
GuiImage * categBtnImg_g;
GuiImage * homebrewImg;
GuiImage * homebrewImgOver;
GuiImage * gameCoverImg;
@ -137,6 +141,7 @@ class GameBrowseMenu : public GuiWindow
GuiButton * carouselBtn;
GuiButton * lockBtn;
GuiButton * dvdBtn;
GuiButton * categBtn;
GuiButton * homebrewBtn;
GuiButton * DownloadBtn;
GuiButton * idBtn;
@ -154,6 +159,7 @@ class GameBrowseMenu : public GuiWindow
GuiTooltip * carouselBtnTT;
GuiTooltip * lockBtnTT;
GuiTooltip * dvdBtnTT;
GuiTooltip * categBtnTT;
GuiTooltip * homebrewBtnTT;
GuiTooltip * DownloadBtnTT;
GuiTooltip * IDBtnTT;

View File

@ -8,6 +8,7 @@
#include "gecko.h"
#include "patchcode.h"
#include "gamepatches.h"
#include "memory/memory.h"
#include "settings/SettingsEnums.h"
typedef struct _appDOL
@ -54,6 +55,12 @@ void gamepatches(u8 videoSelected, u8 languageChoice, u8 patchcountrystring, u8
es_fd = IOS_Open(es_fs, 0);
int i;
load_wip_code((u8*) Disc_ID);
/* If a wip file is loaded for this game this does nothing - Dimok */
PoPPatch();
NSMBPatch();
int returnToPatched = PatchNewReturnTo(returnTo);
for(i = 0; i < dolCount; ++i)
@ -95,9 +102,12 @@ void gamepatches(u8 videoSelected, u8 languageChoice, u8 patchcountrystring, u8
/* ERROR 002 fix (thanks to WiiPower for sharing this)*/
if (fix002 != 0)
*(u32 *) 0x80003188 = *(u32 *) 0x80003140;
*(u32 *)0x80003140 = *(u32 *)0x80003188;
DCFlushRange((void*) 0x80000000, 0x3f00);
free_wip();
ClearDOLList();
}
/** Anti 002 fix for IOS 249 rev > 12 thanks to WiiPower **/

View File

@ -4,8 +4,7 @@
#include <gccore.h>
#ifdef __cplusplus
extern "C"
{
extern "C" {
#endif
typedef struct

View File

@ -0,0 +1,347 @@
/****************************************************************************
* Copyright (C) 2011
* by Dimok
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any
* damages arising from the use of this software.
*
* Permission is granted to anyone to use this software for any
* purpose, including commercial applications, and to alter it and
* redistribute it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you
* must not claim that you wrote the original software. If you use
* this software in a product, an acknowledgment in the product
* documentation would be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and
* must not be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
***************************************************************************/
#include <unistd.h>
#include "CategoryPrompt.hpp"
#include "settings/CGameCategories.hpp"
#include "themes/Resources.h"
#include "language/gettext.h"
#include "menu/menus.h"
CategoryPrompt::CategoryPrompt(const string &title)
: GuiWindow(0, 0)
{
int posX = 15;
const int posY = 50;
const int distance = 10;
bgImgData = Resources::GetImageData("categoryPrompt.png");
addImgData = Resources::GetImageData("add.png");
prevImgData = Resources::GetImageData("back.png");
forwardImgData = Resources::GetImageData("forward.png");
trashImgData = Resources::GetImageData("remove.png");
lineImgData = Resources::GetImageData("categoryLine.png");
bgImg = new GuiImage(bgImgData);
Append(bgImg);
width = bgImgData->GetWidth();
height = bgImgData->GetHeight();
addImg = new GuiImage(addImgData);
prevImg = new GuiImage(prevImgData);
forwardImg = new GuiImage(forwardImgData);
trashImg = new GuiImage(trashImgData);
lineImg = new GuiImage(lineImgData);
trigA = new GuiTrigger;
trigA->SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
trigB = new GuiTrigger;
trigB->SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
trigHome = new GuiTrigger;
trigHome->SetButtonOnlyTrigger(-1, WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME, PAD_BUTTON_START);
trigLeft = new GuiTrigger;
trigLeft->SetButtonOnlyTrigger(-1, WPAD_BUTTON_LEFT | WPAD_CLASSIC_BUTTON_LEFT, PAD_BUTTON_LEFT);
trigRight = new GuiTrigger;
trigRight->SetButtonOnlyTrigger(-1, WPAD_BUTTON_RIGHT | WPAD_CLASSIC_BUTTON_RIGHT, PAD_BUTTON_RIGHT);
trigMinus = new GuiTrigger;
trigMinus->SetButtonOnlyTrigger(-1, WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS, 0);
trigPlus = new GuiTrigger;
trigPlus->SetButtonOnlyTrigger(-1, WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS, 0);
homeButton = new GuiButton(0, 0);
homeButton->SetTrigger(trigHome);
Append(homeButton);
backButton = new GuiButton(0, 0);
backButton->SetTrigger(trigB);
Append(backButton);
titleTxt = new GuiText(title.c_str(), 30, (GXColor) {0, 0, 0, 255});
titleTxt->SetAlignment(ALIGN_CENTER, ALIGN_TOP);
titleTxt->SetPosition(0, 10);
Append(titleTxt);
previousButton = new GuiButton(prevImg->GetWidth(), prevImg->GetHeight());
previousButton->SetImage(prevImg);
previousButton->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
previousButton->SetPosition(posX, posY);
previousButton->SetSoundOver(btnSoundOver);
previousButton->SetSoundClick(btnSoundClick);
previousButton->SetTrigger(trigA);
previousButton->SetTrigger(trigLeft);
previousButton->SetTrigger(trigMinus);
previousButton->SetEffectGrow();
previousButton->Clicked.connect(this, &CategoryPrompt::OnPreviousButtonClick);
Append(previousButton);
posX += distance + previousButton->GetWidth();
categoryTxt = new GuiText((char *) NULL, 26, (GXColor) {0, 0, 0, 255});
categoryTxt->SetAlignment(ALIGN_CENTER, ALIGN_MIDDLE);
categoryTxt->SetMaxWidth(lineImg->GetWidth()-10, DOTTED);
categoryTxt->SetPosition(0, 2);
editButton = new GuiButton(lineImg->GetWidth(), lineImg->GetHeight());
editButton->SetImage(lineImg);
editButton->SetLabel(categoryTxt);
editButton->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
editButton->SetPosition(posX, posY);
editButton->SetSoundOver(btnSoundOver);
editButton->SetSoundClick(btnSoundClick);
editButton->SetTrigger(trigA);
editButton->SetEffectGrow();
Append(editButton);
posX += distance + editButton->GetWidth();
enabledButton = new GuiCheckbox(32, 32);
enabledButton->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
enabledButton->SetPosition(posX, posY);
enabledButton->SetSoundOver(btnSoundOver);
enabledButton->SetSoundClick(btnSoundClick);
enabledButton->SetTrigger(trigA);
enabledButton->Clicked.connect(this, &CategoryPrompt::OnEnableButtonClick);
Append(enabledButton);
posX += distance + enabledButton->GetWidth();
forwardButton = new GuiButton(forwardImg->GetWidth(), forwardImg->GetHeight());
forwardButton->SetImage(forwardImg);
forwardButton->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
forwardButton->SetPosition(posX, posY);
forwardButton->SetSoundOver(btnSoundOver);
forwardButton->SetSoundClick(btnSoundClick);
forwardButton->SetTrigger(trigA);
forwardButton->SetTrigger(trigRight);
forwardButton->SetTrigger(trigPlus);
forwardButton->SetEffectGrow();
forwardButton->Clicked.connect(this, &CategoryPrompt::OnForwardButtonClick);
Append(forwardButton);
posX += 35 + forwardImg->GetWidth();
posTxt = new GuiText((char *) NULL, 26, (GXColor) {0, 0, 0, 255});
posTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
posTxt->SetPosition(posX, posY+4);
Append(posTxt);
addTxt = new GuiText(tr("Add category"), 24, (GXColor) {0, 0, 0, 255});
addTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
addTxt->SetMaxWidth(180, DOTTED);
addTxt->SetPosition(10+addImg->GetWidth(), 6);
addButton = new GuiButton(addImg->GetWidth()+10+addTxt->GetTextWidth(), addImg->GetHeight());
addButton->SetImage(addImg);
addButton->SetLabel(addTxt);
addButton->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
addButton->SetPosition(15, 100);
addButton->SetSoundOver(btnSoundOver);
addButton->SetSoundClick(btnSoundClick);
addButton->SetTrigger(trigA);
addButton->SetEffectGrow();
Append(addButton);
deleteTxt = new GuiText(tr("Delete category"), 24, (GXColor) {0, 0, 0, 255});
deleteTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
deleteTxt->SetMaxWidth(180, DOTTED);
deleteTxt->SetPosition(trashImg->GetWidth()+10, 6);
deleteButton = new GuiButton(trashImg->GetWidth()+10+deleteTxt->GetTextWidth(), trashImg->GetHeight());
deleteButton->SetImage(trashImg);
deleteButton->SetLabel(deleteTxt);
deleteButton->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
deleteButton->SetPosition(10+180+addImg->GetWidth(), 100);
deleteButton->SetSoundOver(btnSoundOver);
deleteButton->SetSoundClick(btnSoundClick);
deleteButton->SetTrigger(trigA);
deleteButton->SetEffectGrow();
Append(deleteButton);
}
CategoryPrompt::~CategoryPrompt()
{
delete bgImgData;
delete addImgData;
delete prevImgData;
delete forwardImgData;
delete trashImgData;
delete lineImgData;
delete bgImg;
delete addImg;
delete prevImg;
delete forwardImg;
delete trashImg;
delete lineImg;
delete addButton;
delete previousButton;
delete backButton;
delete forwardButton;
delete deleteButton;
delete editButton;
delete homeButton;
delete enabledButton;
delete titleTxt;
delete categoryTxt;
delete posTxt;
delete addTxt;
delete deleteTxt;
delete trigA;
delete trigB;
delete trigHome;
delete trigLeft;
delete trigRight;
delete trigPlus;
delete trigMinus;
}
void CategoryPrompt::OnForwardButtonClick(GuiButton *sender, int chan, const POINT &pointer)
{
nextCategory();
categoryChanged(categoryTxt, posTxt, enabledButton);
sender->ResetState();
}
void CategoryPrompt::OnPreviousButtonClick(GuiButton *sender, int chan, const POINT &pointer)
{
previousCategory();
categoryChanged(categoryTxt, posTxt, enabledButton);
sender->ResetState();
}
void CategoryPrompt::OnEnableButtonClick(GuiButton *sender, int chan, const POINT &pointer)
{
changed = true;
checkBoxClicked(enabledButton);
sender->ResetState();
}
int CategoryPrompt::MainLoop()
{
categoryChanged(categoryTxt, posTxt, enabledButton);
while(backButton->GetState() != STATE_CLICKED)
{
usleep(100);
if (shutdown)
Sys_Shutdown();
else if (reset)
Sys_Reboot();
else if (homeButton->GetState() == STATE_CLICKED)
{
gprintf("\thomeButton clicked\n");
WindowExitPrompt();
homeButton->ResetState();
}
else if(addButton->GetState() == STATE_CLICKED)
{
if(!Settings.godmode && (Settings.ParentalBlocks & BLOCK_CATEGORIES_MOD))
{
WindowPrompt(tr( "Permission denied." ), tr( "Console must be unlocked to be able to use this." ), tr( "OK" ));
addButton->ResetState();
continue;
}
char entered[512] = "";
int result = OnScreenKeyboard(entered, sizeof(entered), 0);
if(result)
{
GameCategories.CategoryList.AddCategory(entered);
GameCategories.Save();
GameCategories.CategoryList.findCategory(entered);
categoryChanged(categoryTxt, posTxt, enabledButton);
}
addButton->ResetState();
}
else if(deleteButton->GetState() == STATE_CLICKED)
{
if(!Settings.godmode && (Settings.ParentalBlocks & BLOCK_CATEGORIES_MOD))
{
WindowPrompt(tr( "Permission denied." ), tr( "Console must be unlocked to be able to use this." ), tr( "OK" ));
deleteButton->ResetState();
continue;
}
if(GameCategories.CategoryList.getCurrentID() == 0)
{
WindowPrompt(tr("Error"), tr("You cannot delete this category."), tr("OK"));
deleteButton->ResetState();
continue;
}
int choice = WindowPrompt(tr("Warning"), tr("Are you sure you want to delete this category?"), tr("Yes"), tr("Cancel"));
if(choice)
{
int pos = GameCategories.CategoryList.pos()-1;
int categoryID = GameCategories.CategoryList.getCurrentID();
GameCategories.CategoryList.RemoveCategory(categoryID);
GameCategories.RemoveCategory(categoryID);
GameCategories.Save();
GameCategories.CategoryList.goToFirst();
for(int i = 0; i < pos; ++i)
GameCategories.CategoryList.goToNext();
categoryChanged(categoryTxt, posTxt, enabledButton);
}
deleteButton->ResetState();
}
else if(editButton->GetState() == STATE_CLICKED)
{
if(!Settings.godmode && (Settings.ParentalBlocks & BLOCK_CATEGORIES_MOD))
{
WindowPrompt(tr( "Permission denied." ), tr( "Console must be unlocked to be able to use this." ), tr( "OK" ));
editButton->ResetState();
continue;
}
char entered[512];
snprintf(entered, sizeof(entered), tr(GameCategories.CategoryList.getCurrentName().c_str()));
int result = OnScreenKeyboard(entered, sizeof(entered), 0);
if(result)
{
GameCategories.CategoryList.SetCategory(GameCategories.CategoryList.getCurrentID(), entered);
int pos = GameCategories.CategoryList.pos();
GameCategories.Save();
GameCategories.CategoryList.goToFirst();
for(int i = 0; i < pos; ++i)
GameCategories.CategoryList.goToNext();
categoryChanged(categoryTxt, posTxt, enabledButton);
}
editButton->ResetState();
}
}
return 0;
}

View File

@ -0,0 +1,87 @@
/****************************************************************************
* Copyright (C) 2011
* by Dimok
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any
* damages arising from the use of this software.
*
* Permission is granted to anyone to use this software for any
* purpose, including commercial applications, and to alter it and
* redistribute it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you
* must not claim that you wrote the original software. If you use
* this software in a product, an acknowledgment in the product
* documentation would be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and
* must not be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
***************************************************************************/
#ifndef CATEGORYPROMPT_HPP_
#define CATEGORYPROMPT_HPP_
#include "libwiigui/gui.h"
#include "libwiigui/gui_checkbox.hpp"
class CategoryPrompt : public GuiWindow, public sigslot::has_slots<>
{
public:
CategoryPrompt(const std::string &title);
~CategoryPrompt();
bool categoriesChanged() const { return changed; }
protected:
int MainLoop();
sigslot::signal3<GuiText *, GuiText *, GuiCheckbox *> categoryChanged;
sigslot::signal0<> nextCategory;
sigslot::signal0<> previousCategory;
sigslot::signal1<GuiCheckbox *> checkBoxClicked;
private:
void OnForwardButtonClick(GuiButton *sender, int chan, const POINT &pointer);
void OnPreviousButtonClick(GuiButton *sender, int chan, const POINT &pointer);
void OnEnableButtonClick(GuiButton *sender, int chan, const POINT &pointer);
bool changed;
GuiImageData *bgImgData;
GuiImageData *addImgData;
GuiImageData *prevImgData;
GuiImageData *forwardImgData;
GuiImageData *trashImgData;
GuiImageData *lineImgData;
GuiImage *bgImg;
GuiImage *addImg;
GuiImage *prevImg;
GuiImage *forwardImg;
GuiImage *trashImg;
GuiImage *lineImg;
GuiButton *addButton;
GuiButton *previousButton;
GuiButton *forwardButton;
GuiButton *backButton;
GuiButton *deleteButton;
GuiButton *editButton;
GuiButton *homeButton;
GuiCheckbox *enabledButton;
GuiText *titleTxt;
GuiText *categoryTxt;
GuiText *posTxt;
GuiText *addTxt;
GuiText *deleteTxt;
GuiTrigger *trigA;
GuiTrigger *trigB;
GuiTrigger *trigHome;
GuiTrigger *trigLeft;
GuiTrigger *trigRight;
GuiTrigger *trigMinus;
GuiTrigger *trigPlus;
};
#endif

View File

@ -0,0 +1,101 @@
/****************************************************************************
* Copyright (C) 2011
* by Dimok
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any
* damages arising from the use of this software.
*
* Permission is granted to anyone to use this software for any
* purpose, including commercial applications, and to alter it and
* redistribute it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you
* must not claim that you wrote the original software. If you use
* this software in a product, an acknowledgment in the product
* documentation would be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and
* must not be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
***************************************************************************/
#include "CategorySelectPrompt.hpp"
#include "settings/CGameCategories.hpp"
#include "settings/CSettings.h"
#include "language/gettext.h"
#include "utils/StringTools.h"
CategorySelectPrompt::CategorySelectPrompt(struct discHdr * header)
: CategoryPrompt(fmt("%s - %s", (char *) header->id, tr("Categories"))),
gameHeader(header)
{
categoryChanged.connect(this, &CategorySelectPrompt::OnCategoryChange);
nextCategory.connect(this, &CategorySelectPrompt::OnNextCategory);
previousCategory.connect(this, &CategorySelectPrompt::OnPreviousCategory);
checkBoxClicked.connect(this, &CategorySelectPrompt::OnCheckboxClicked);
}
CategorySelectPrompt::~CategorySelectPrompt()
{
int pos = GameCategories.CategoryList.pos()-1;
GameCategories.Save();
GameCategories.CategoryList.goToFirst();
for(int i = 0; i < pos; ++i)
GameCategories.CategoryList.goToNext();
}
void CategorySelectPrompt::OnNextCategory()
{
GameCategories.CategoryList.goToNextCicle();
}
void CategorySelectPrompt::OnPreviousCategory()
{
GameCategories.CategoryList.goToPreviousCicle();
}
void CategorySelectPrompt::OnCategoryChange(GuiText *catTxt, GuiText *positionTxt, GuiCheckbox *checkBox)
{
catTxt->SetText(tr(GameCategories.CategoryList.getCurrentName().c_str()));
positionTxt->SetTextf("%i / %i", GameCategories.CategoryList.pos()+1, GameCategories.CategoryList.size());
checkBox->SetChecked(false);
const vector<unsigned int> gameCat = GameCategories[gameHeader->id];
for(u32 i = 0; i < gameCat.size(); ++i)
{
if(gameCat[i] == GameCategories.CategoryList.getCurrentID())
{
checkBox->SetChecked(true);
break;
}
}
}
void CategorySelectPrompt::OnCheckboxClicked(GuiCheckbox *checkBox)
{
if(GameCategories.CategoryList.getCurrentID() == 0)
{
checkBox->SetChecked(true);
return;
}
const vector<unsigned int> gameCat = GameCategories[gameHeader->id];
u32 i;
for(i = 0; i < gameCat.size(); ++i)
{
if(gameCat[i] == GameCategories.CategoryList.getCurrentID())
{
if(!checkBox->IsChecked())
GameCategories.RemoveCategory((const char *) gameHeader->id, gameCat[i]);
break;
}
}
if(i == gameCat.size() && checkBox->IsChecked())
{
GameCategories.SetCategory(gameHeader->id, GameCategories.CategoryList.getCurrentID());
}
}

View File

@ -0,0 +1,44 @@
/****************************************************************************
* Copyright (C) 2011
* by Dimok
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any
* damages arising from the use of this software.
*
* Permission is granted to anyone to use this software for any
* purpose, including commercial applications, and to alter it and
* redistribute it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you
* must not claim that you wrote the original software. If you use
* this software in a product, an acknowledgment in the product
* documentation would be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and
* must not be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
***************************************************************************/
#ifndef CATEGORYSELECT_PROMPT_HPP_
#define CATEGORYSELECT_PROMPT_HPP_
#include "CategoryPrompt.hpp"
#include "usbloader/disc.h"
class CategorySelectPrompt : public CategoryPrompt
{
public:
CategorySelectPrompt(struct discHdr * header);
~CategorySelectPrompt();
int Show() { return CategoryPrompt::MainLoop(); };
private:
void OnCheckboxClicked(GuiCheckbox *checkBox);
void OnCategoryChange(GuiText *categoryTxt, GuiText *posTxt, GuiCheckbox *checkBox);
void OnNextCategory();
void OnPreviousCategory();
struct discHdr * gameHeader;
};
#endif

View File

@ -0,0 +1,81 @@
/****************************************************************************
* Copyright (C) 2011
* by Dimok
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any
* damages arising from the use of this software.
*
* Permission is granted to anyone to use this software for any
* purpose, including commercial applications, and to alter it and
* redistribute it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you
* must not claim that you wrote the original software. If you use
* this software in a product, an acknowledgment in the product
* documentation would be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and
* must not be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
***************************************************************************/
#include "CategorySwitchPrompt.hpp"
#include "settings/CGameCategories.hpp"
#include "settings/CSettings.h"
#include "language/gettext.h"
CategorySwitchPrompt::CategorySwitchPrompt()
: CategoryPrompt(tr("Show Categories"))
{
categoryChanged.connect(this, &CategorySwitchPrompt::OnCategoryChange);
nextCategory.connect(this, &CategorySwitchPrompt::OnNextCategory);
previousCategory.connect(this, &CategorySwitchPrompt::OnPreviousCategory);
checkBoxClicked.connect(this, &CategorySwitchPrompt::OnCheckboxClicked);
}
void CategorySwitchPrompt::OnNextCategory()
{
GameCategories.CategoryList.goToNextCicle();
}
void CategorySwitchPrompt::OnPreviousCategory()
{
GameCategories.CategoryList.goToPreviousCicle();
}
void CategorySwitchPrompt::OnCategoryChange(GuiText *catTxt, GuiText *positionTxt, GuiCheckbox *checkBox)
{
catTxt->SetText(tr(GameCategories.CategoryList.getCurrentName().c_str()));
positionTxt->SetTextf("%i / %i", GameCategories.CategoryList.pos()+1, GameCategories.CategoryList.size());
checkBox->SetChecked(false);
for(u32 i = 0; i < Settings.EnabledCategories.size(); ++i)
{
if(Settings.EnabledCategories[i] == GameCategories.CategoryList.getCurrentID())
{
checkBox->SetChecked(true);
break;
}
}
}
void CategorySwitchPrompt::OnCheckboxClicked(GuiCheckbox *checkBox)
{
u32 i;
for(i = 0; i < Settings.EnabledCategories.size(); ++i)
{
if(Settings.EnabledCategories[i] == GameCategories.CategoryList.getCurrentID())
{
if(!checkBox->IsChecked())
Settings.EnabledCategories.erase(Settings.EnabledCategories.begin()+i);
break;
}
}
if(i == Settings.EnabledCategories.size() && checkBox->IsChecked())
{
Settings.EnabledCategories.push_back(GameCategories.CategoryList.getCurrentID());
}
}

View File

@ -0,0 +1,41 @@
/****************************************************************************
* Copyright (C) 2011
* by Dimok
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any
* damages arising from the use of this software.
*
* Permission is granted to anyone to use this software for any
* purpose, including commercial applications, and to alter it and
* redistribute it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you
* must not claim that you wrote the original software. If you use
* this software in a product, an acknowledgment in the product
* documentation would be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and
* must not be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
***************************************************************************/
#ifndef CATEGORYSWITCH_PROMPT_HPP_
#define CATEGORYSWITCH_PROMPT_HPP_
#include "CategoryPrompt.hpp"
class CategorySwitchPrompt : public CategoryPrompt
{
public:
CategorySwitchPrompt();
int Show() { return CategoryPrompt::MainLoop(); };
private:
void OnCheckboxClicked(GuiCheckbox *checkBox);
void OnCategoryChange(GuiText *categoryTxt, GuiText *posTxt, GuiCheckbox *checkBox);
void OnNextCategory();
void OnPreviousCategory();
};
#endif

View File

@ -56,6 +56,11 @@ CheckboxPrompt::~CheckboxPrompt()
}
void CheckboxPrompt::OnCheckBoxClick(GuiButton *sender, int chan, const POINT &pointer)
{
sender->ResetState();
}
void CheckboxPrompt::AddCheckBox(const char *text)
{
int size = Checkbox.size();
@ -74,6 +79,7 @@ void CheckboxPrompt::AddCheckBox(const char *text)
Checkbox[size]->SetSoundClick(btnSoundClick);
Checkbox[size]->SetSoundOver(btnSoundOver);
Checkbox[size]->SetTrigger(trigA);
Checkbox[size]->Clicked.connect(this, &CheckboxPrompt::OnCheckBoxClick);
Append(Checkbox[size]);
if (Settings.wsprompt && Settings.widescreen)

View File

@ -37,7 +37,7 @@ enum
CheckedBox6 = 0x20,
};
class CheckboxPrompt : private PromptWindow
class CheckboxPrompt : private PromptWindow, public sigslot::has_slots<>
{
public:
//! Constructor
@ -54,6 +54,7 @@ class CheckboxPrompt : private PromptWindow
const char *chbx3 = 0, const char *chbx4 = 0,
const char *chbx5 = 0, const char *chbx6 = 0);
protected:
void OnCheckBoxClick(GuiButton *sender, int chan, const POINT &pointer);
std::vector<GuiText *> CheckboxTxt;
std::vector<GuiCheckbox *> Checkbox;
};

View File

@ -4,11 +4,11 @@
#include "usbloader/wbfs.h"
#include "usbloader/GameList.h"
#include "themes/CTheme.h"
#include "settings/menus/GameSettingsMenu.hpp"
#include "settings/CSettings.h"
#include "settings/CGameSettings.h"
#include "settings/CGameStatistics.h"
#include "settings/GameTitles.h"
#include "settings/Settings.h"
#include "prompts/PromptWindows.h"
#include "prompts/gameinfo.h"
#include "language/gettext.h"
@ -486,7 +486,7 @@ int GameWindow::MainLoop()
ResumeGui();
wiilight(0);
int settret = MenuGameSettings(mountMethod ? dvdheader : gameList[gameSelected]);
int settret = GameSettingsMenu::Show(browserMenu, mountMethod ? dvdheader : gameList[gameSelected]);
SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);
if(parentElement)

View File

@ -6,6 +6,7 @@
#include <dirent.h>
#include "usbloader/wbfs.h"
#include "settings/CGameCategories.hpp"
#include "language/gettext.h"
#include "libwiigui/gui.h"
#include "libwiigui/Text.hpp"
@ -716,6 +717,42 @@ static int InternalShowGameInfo(char *ID)
InfoWindow.Append(developerTxt);
}
GuiText *categoryTitle = NULL;
std::vector<GuiText *> categoriesTxt;
indexy += 10;
const std::vector<unsigned int> gameCategories = GameCategories[ID];
if(gameCategories.size() > 1)
{
categoryTitle = new GuiText(tr("Categories:"), 16, ( GXColor ) {0, 0, 0, 255});
categoryTitle->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
categoryTitle->SetPosition(505, 12 + indexy);
indexy += 20;
InfoWindow.Append(categoryTitle);
}
for (u32 i = 0; i < gameCategories.size(); ++i)
{
if(gameCategories[i] == 0)
continue;
if(categoriesTxt.size() >= 2 && gameCategories.size() > i+1)
{
categoriesTxt.push_back(new GuiText("...", 16, ( GXColor ) {0, 0, 0, 255}));
categoriesTxt[categoriesTxt.size()-1]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
categoriesTxt[categoriesTxt.size()-1]->SetPosition(515, 12 + indexy);
indexy += 20;
InfoWindow.Append(categoriesTxt[categoriesTxt.size()-1]);
break;
}
categoriesTxt.push_back(new GuiText(GameCategories.CategoryList[gameCategories[i]], 16, ( GXColor ) {0, 0, 0, 255}));
categoriesTxt[categoriesTxt.size()-1]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
categoriesTxt[categoriesTxt.size()-1]->SetPosition(515, 12 + indexy);
indexy += 20;
InfoWindow.Append(categoriesTxt[categoriesTxt.size()-1]);
}
//genre
int genreY = marginY;
if(GameInfo.GenreList.size() > 0)
@ -978,12 +1015,17 @@ static int InternalShowGameInfo(char *ID)
delete genreTitleTxt;
delete wiitdb1Txt;
delete memTxt;
delete categoryTitle;
for (u32 i = 0; i < GameInfo.GenreList.size(); ++i)
delete genreTxt[i];
for (u32 i = 0; i < GameInfo.WifiFeatureList.size(); ++i)
delete wifiTxt[i];
for (u32 i = 0; i < categoriesTxt.size(); ++i)
delete categoriesTxt[i];
delete [] genreTxt;
delete [] wifiTxt;

View File

@ -0,0 +1,105 @@
/****************************************************************************
* Copyright (C) 2011
* by Dimok
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any
* damages arising from the use of this software.
*
* Permission is granted to anyone to use this software for any
* purpose, including commercial applications, and to alter it and
* redistribute it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you
* must not claim that you wrote the original software. If you use
* this software in a product, an acknowledgment in the product
* documentation would be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and
* must not be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
***************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "CCategoryList.hpp"
#include "language/gettext.h"
#include "FileOperations/fileops.h"
#include "svnrev.h"
#define VALID_CONFIG_REV 1085
CCategoryList CategoryList;
CCategoryList::CCategoryList()
{
nameList[0] = tr("All");
goToFirst();
}
const char * CCategoryList::operator[](unsigned int id)
{
map<unsigned int, string>::iterator itr = nameList.find(id);
if(itr == nameList.end())
return NULL;
return nameList[id].c_str();
}
bool CCategoryList::AddCategory(const string &name)
{
if(findCategory(name))
return false;
unsigned int i = 1;
map<unsigned int, string>::iterator itr;
//! Find next free key
while((itr = nameList.find(i)) != nameList.end())
i++;
nameList[i] = name;
listIter = nameList.find(i);
return true;
}
bool CCategoryList::SetCategory(unsigned int id, const string &name)
{
RemoveCategory(name);
nameList[id] = name;
listIter = nameList.find(id);
return true;
}
void CCategoryList::RemoveCategory(const string &name)
{
for (map<unsigned int, string>::iterator itr = nameList.begin(); itr != nameList.end(); itr++)
{
if(name == itr->second)
{
nameList.erase(itr);
break;
}
}
}
void CCategoryList::RemoveCategory(unsigned int id)
{
map<unsigned int, string>::iterator itr = nameList.find(id);
if(itr != nameList.end())
nameList.erase(itr);
}
bool CCategoryList::findCategory(const string &name)
{
for (listIter = nameList.begin(); listIter != nameList.end(); listIter++)
{
if(name == listIter->second)
return true;
}
return false;
}

View File

@ -0,0 +1,60 @@
/****************************************************************************
* Copyright (C) 2011
* by Dimok
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any
* damages arising from the use of this software.
*
* Permission is granted to anyone to use this software for any
* purpose, including commercial applications, and to alter it and
* redistribute it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you
* must not claim that you wrote the original software. If you use
* this software in a product, an acknowledgment in the product
* documentation would be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and
* must not be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
***************************************************************************/
#ifndef CATEGORYLIST_HPP_
#define CATEGORYLIST_HPP_
#include <map>
#include <string>
using namespace std;
class CCategoryList
{
public:
CCategoryList();
bool Load(string filepath);
bool Save();
bool AddCategory(const string &name);
bool SetCategory(unsigned int id, const string &name);
void RemoveCategory(unsigned int id);
void RemoveCategory(const string &name);
bool goToFirst() { listIter = nameList.begin(); return true; }
bool goToNext() { listIter++; return listIter != nameList.end(); }
unsigned int getCurrentID() const { return listIter->first; }
const string &getCurrentName() const { return listIter->second; }
const char * operator[](unsigned int id);
const char *at(unsigned int id) { return operator[](id); }
void goToNextCicle() { listIter++; if(listIter == nameList.end()) listIter = nameList.begin(); }
void goToPreviousCicle() { if(listIter == nameList.begin()) listIter = nameList.end(); listIter--; }
bool findCategory(const string &name);
bool findCategory(unsigned int id) { listIter = nameList.find(id); return listIter != nameList.end(); };
int pos() const { return distance(nameList.begin(), listIter); }
int size() const { return nameList.size(); }
private:
string configPath;
map<unsigned int, string>::const_iterator listIter;
map<unsigned int, string> nameList;
};
#endif

View File

@ -0,0 +1,358 @@
/****************************************************************************
* Copyright (C) 2011
* by Dimok
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any
* damages arising from the use of this software.
*
* Permission is granted to anyone to use this software for any
* purpose, including commercial applications, and to alter it and
* redistribute it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you
* must not claim that you wrote the original software. If you use
* this software in a product, an acknowledgment in the product
* documentation would be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and
* must not be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
***************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "CGameCategories.hpp"
#include "GameTitles.h"
#include "language/gettext.h"
#include "FileOperations/fileops.h"
#include "xml/xml.h"
#include "gecko.h"
#include "svnrev.h"
#define VALID_CONFIG_REV 1084
CGameCategories GameCategories;
CGameCategories::CGameCategories()
: defaultCategory(1, 0)
{
}
const vector<unsigned int> &CGameCategories::operator[](const char *id) const
{
if(!id) return defaultCategory;
for(map<string, vector<unsigned int> >::const_iterator itr = List.begin(); itr != List.end(); itr++)
{
if(strncasecmp(itr->first.c_str(), id, 6) == 0)
return itr->second;
}
return defaultCategory;
}
static const char * XMLSaveCallback(mxml_node_t *node, int where)
{
const char *name = node->value.element.name;
if (where == MXML_WS_BEFORE_OPEN)
{
if(!strcmp(name, "Revision") || !strcmp(name, "Categories") || !strcmp(name, "GameCategories"))
return "\n";
else if(!strcmp(name, "Game"))
return "\n\t";
else if(!strcmp(name, "Category"))
return "\n\t\t";
}
else if(where == MXML_WS_BEFORE_CLOSE)
{
if(!strcmp(name, "Categories") || !strcmp(name, "GameCategories"))
return "\n";
else if(!strcmp(name, "Game"))
return "\n\t";
}
return (NULL);
}
bool CGameCategories::Load(string filepath)
{
if(filepath.size() == 0)
return false;
if(filepath[filepath.size()-1] != '/')
filepath += '/';
filepath += "GXGameCategories.xml";
configPath = filepath;
u8 *buffer = NULL;
u64 filesize = 0;
LoadFileToMem(filepath.c_str(), &buffer, &filesize);
if(!buffer)
return false;
mxml_node_t *xmlfile = mxmlLoadString(NULL, (const char *) buffer, MXML_OPAQUE_CALLBACK);
if(!ValidVersion(xmlfile))
{
mxmlDelete(xmlfile);
free(buffer);
return false;
}
mxml_node_t *node = mxmlFindElement(xmlfile, xmlfile, "Categories", NULL, NULL, MXML_DESCEND_FIRST);
if(!node)
{
mxmlDelete(xmlfile);
free(buffer);
return false;
}
node = mxmlFindElement(node, xmlfile, "Category", NULL, NULL, MXML_DESCEND_FIRST);
while(node != NULL)
{
const char * ID = mxmlElementGetAttr(node, "ID");
const char * Name = mxmlElementGetAttr(node, "Name");
if(ID && Name)
CategoryList.SetCategory(atoi(ID), Name);
node = mxmlFindElement(node, xmlfile, "Category", NULL, NULL, MXML_NO_DESCEND);
}
node = mxmlFindElement(xmlfile, xmlfile, "GameCategories", NULL, NULL, MXML_DESCEND_FIRST);
if(!node)
{
mxmlDelete(xmlfile);
free(buffer);
return false;
}
node = mxmlFindElement(node, xmlfile, "Game", NULL, NULL, MXML_DESCEND_FIRST);
while(node != NULL)
{
const char * gameID = mxmlElementGetAttr(node, "ID");
mxml_node_t *category = mxmlFindElement(node, xmlfile, "Category", NULL, NULL, MXML_DESCEND_FIRST);
while(category != NULL)
{
const char * categoryID = mxmlElementGetAttr(category, "ID");
if(gameID && categoryID)
SetCategory(gameID, atoi(categoryID));
category = mxmlFindElement(category, xmlfile, "Category", NULL, NULL, MXML_NO_DESCEND);
}
node = mxmlFindElement(node, xmlfile, "Game", NULL, NULL, MXML_NO_DESCEND);
}
mxmlDelete(xmlfile);
free(buffer);
CategoryList.goToFirst();
return true;
}
bool CGameCategories::Save()
{
char filepath[300];
snprintf(filepath, sizeof(filepath), configPath.c_str());
char * ptr = strrchr(filepath, '/');
if(ptr)
ptr[0] = 0;
CreateSubfolder(filepath);
FILE * f = fopen(configPath.c_str(), "wb");
if(!f)
return false;
mxml_node_t *xmlfile = mxmlNewXML("1.0");
mxmlSetWrapMargin(0);
mxml_node_t *node = mxmlNewElement(xmlfile, "Revision");
mxmlNewInteger(node, atoi(GetRev()));
node = mxmlNewElement(xmlfile, "Categories");
CategoryList.goToFirst();
do
{
mxml_node_t *category = mxmlNewElement(node, "Category");
mxmlElementSetAttrf(category, "ID", "%02u", CategoryList.getCurrentID());
mxmlElementSetAttr(category, "Name", CategoryList.getCurrentName().c_str());
}
while(CategoryList.goToNext());
node = mxmlNewElement(xmlfile, "GameCategories");
for(map<string, vector<unsigned int> >::iterator itr = List.begin(); itr != List.end(); itr++)
{
mxml_node_t *game = mxmlNewElement(node, "Game");
mxmlElementSetAttr(game, "ID", itr->first.c_str());
mxmlElementSetAttr(game, "Title", GameTitles.GetTitle(itr->first.c_str()));
for(u32 i = 0; i < itr->second.size(); ++i)
{
mxml_node_t *category = mxmlNewElement(game, "Category");
mxmlElementSetAttrf(category, "ID", "%02u", itr->second[i]);
mxmlElementSetAttr(category, "Name", CategoryList[itr->second[i]]);
}
}
mxmlSaveFile(xmlfile, f, XMLSaveCallback);
fclose(f);
mxmlDelete(xmlfile);
return true;
}
bool CGameCategories::ValidVersion(mxml_node_t *xmlfile)
{
if(!xmlfile) return false;
mxml_node_t *node = mxmlFindElement(xmlfile, xmlfile, "Revision", NULL, NULL, MXML_DESCEND_FIRST);
if(!node || !node->child || !node->child->value.opaque)
return false;
return atoi(node->child->value.opaque) >= VALID_CONFIG_REV;
}
bool CGameCategories::SetCategory(const char *gameID, unsigned int id)
{
if(!gameID) return false;
char gameID6[7];
snprintf(gameID6, sizeof(gameID6), gameID);
string stringGameID(gameID6);
return SetCategory(stringGameID, id);
}
bool CGameCategories::SetCategory(const string &gameID, unsigned int id)
{
if(List[gameID].empty())
List[gameID] = defaultCategory;
vector<unsigned int> tmpVect(List[gameID]);
for(u32 i = 0; i < tmpVect.size(); ++i)
{
if(tmpVect[i] == id)
return false;
}
List[gameID].push_back(id);
return true;
}
bool CGameCategories::ReplaceCategory(const char *gameID, unsigned int id)
{
if(!gameID) return false;
char gameID6[7];
snprintf(gameID6, sizeof(gameID6), gameID);
List[string(gameID6)] = defaultCategory;
List[string(gameID6)].push_back(id);
return true;
}
bool CGameCategories::ReplaceCategory(const string &gameID, unsigned int id)
{
List[gameID] = defaultCategory;
List[gameID].push_back(id);
return true;
}
void CGameCategories::RemoveCategory(unsigned int id)
{
for(map<string, vector<unsigned int> >::iterator itr = List.begin(); itr != List.end(); itr++)
{
for(u32 i = 0; i < itr->second.size(); ++i)
{
if(itr->second[i] == id)
itr->second.erase(itr->second.begin()+ i);
}
}
}
void CGameCategories::RemoveGameCategories(const string &gameID)
{
for (map<string, vector<unsigned int> >::iterator itr = List.begin(); itr != List.end(); itr++)
{
if(gameID == itr->first)
{
List.erase(itr);
}
}
}
void CGameCategories::RemoveCategory(const char *gameID, unsigned int id)
{
if(!gameID) return;
string gameID6;
for(int i = 0; i < 6; ++i)
gameID6.push_back(gameID[i]);
RemoveCategory(gameID6, id);
}
void CGameCategories::RemoveCategory(const string &gameID, unsigned int id)
{
for (map<string, vector<unsigned int> >::iterator itr = List.begin(); itr != List.end(); itr++)
{
if(gameID == itr->first)
{
for(u32 i = 0; i < itr->second.size(); ++i)
{
if(itr->second[i] == id)
{
itr->second.erase(itr->second.begin()+ i);
break;
}
}
break;
}
}
}
bool CGameCategories::isInCategory(const char *gameID, unsigned int id)
{
if(id == 0) //! ID = 0 means category 'All' so it is always true
return true;
if(!gameID) return false;
string gameID6;
for(int i = 0; i < 6; ++i)
gameID6.push_back(gameID[i]);
for (map<string, vector<unsigned int> >::iterator itr = GameCategories.List.begin(); itr != GameCategories.List.end(); itr++)
{
if(itr->first == gameID6)
{
for(u32 i = 0; i < itr->second.size(); ++i)
{
if(itr->second[i] == id)
return true;
}
break;
}
}
return false;
}

View File

@ -0,0 +1,66 @@
/****************************************************************************
* Copyright (C) 2011
* by Dimok
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any
* damages arising from the use of this software.
*
* Permission is granted to anyone to use this software for any
* purpose, including commercial applications, and to alter it and
* redistribute it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you
* must not claim that you wrote the original software. If you use
* this software in a product, an acknowledgment in the product
* documentation would be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and
* must not be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
***************************************************************************/
#ifndef GAMECATEGORIES_HPP_
#define GAMECATEGORIES_HPP_
#include <gctypes.h>
#include <map>
#include <string>
#include <vector>
#include <mxml.h>
#include "CCategoryList.hpp"
class CGameCategories
{
public:
CGameCategories();
bool Load(string filepath);
bool Save();
bool SetCategory(const string &gameID, unsigned int id);
bool SetCategory(const char *gameID, unsigned int id);
bool SetCategory(const unsigned char *gameID, int unsigned id) { return SetCategory((const char *) gameID, id); };
bool ReplaceCategory(const string &gameID, unsigned int id);
bool ReplaceCategory(const char *gameID, unsigned int id);
bool ReplaceCategory(const unsigned char *gameID, int unsigned id) { return SetCategory((const char *) gameID, id); };
void RemoveCategory(unsigned int id);
void RemoveCategory(const string &gameID, unsigned int id);
void RemoveCategory(const char *gameID, unsigned int id);
void RemoveCategory(const unsigned char *gameID, unsigned int id) { RemoveCategory((const char *) gameID, id); };
void RemoveGameCategories(const string &gameID);
const vector<unsigned int> &operator[](const char *gameID) const;
const vector<unsigned int> &operator[](const unsigned char *gameID) const { return operator[]((const char *) gameID); }
static bool isInCategory(const char *gameID, unsigned int id);
CCategoryList CategoryList;
protected:
bool ValidVersion(mxml_node_t *xmlfile);
string configPath;
const vector<unsigned int> defaultCategory;
map<string, vector<unsigned int> > List;
};
extern CGameCategories GameCategories;
#endif

View File

@ -118,6 +118,8 @@ void CSettings::SetDefault()
CacheTitles = ON;
WSFactor = 0.8f; //actually should be 0.75 for real widescreen
FontScaleFactor = 1.0f;
EnabledCategories.resize(1);
EnabledCategories[0] = 0;
}
bool CSettings::Load()
@ -263,6 +265,14 @@ bool CSettings::Save()
fprintf(file, "CacheTitles = %d\n ", CacheTitles);
fprintf(file, "WSFactor = %0.3f\n ", WSFactor);
fprintf(file, "FontScaleFactor = %0.3f\n ", FontScaleFactor);
fprintf(file, "EnabledCategories = ");
for(u32 i = 0; i < EnabledCategories.size(); ++i)
{
fprintf(file, "%i", EnabledCategories[i]);
if(i+1 < EnabledCategories.size())
fprintf(file, ",");
}
fprintf(file, "\n ");
fclose(file);
return true;
@ -630,6 +640,25 @@ bool CSettings::SetSetting(char *name, char *value)
strcpy(returnTo, value);
return true;
}
else if (strcmp(name, "EnabledCategories") == 0)
{
EnabledCategories.clear();
char * strTok = strtok(value, ",");
while (strTok != NULL)
{
u32 id = atoi(strTok);
u32 i;
for(i = 0; i < EnabledCategories.size(); ++i)
{
if(EnabledCategories[i] == id)
break;
}
if(i == EnabledCategories.size())
EnabledCategories.push_back(id);
strTok = strtok(NULL,",");
}
return true;
}
return false;
}

View File

@ -27,6 +27,7 @@
#include <string>
#include <stdio.h>
#include <gctypes.h>
#include <vector>
#include "SettingsEnums.h"
class CSettings
@ -117,6 +118,7 @@ class CSettings
u32 ParentalBlocks;
f32 WSFactor;
f32 FontScaleFactor;
std::vector<u32> EnabledCategories;
protected:
bool ValidVersion(FILE * file);
bool SetSetting(char *name, char *value);

View File

@ -1,42 +0,0 @@
#include <string.h>
#include <unistd.h>
#include "settings/menus/GlobalSettings.hpp"
#include "settings/menus/GameSettingsMenu.hpp"
/****************************************************************************
* MenuSettings
***************************************************************************/
int MenuSettings()
{
GlobalSettings * Menu = new GlobalSettings();
mainWindow->Append(Menu);
Menu->ShowMenu();
int returnMenu = MENU_NONE;
while((returnMenu = Menu->MainLoop()) == MENU_NONE);
delete Menu;
return returnMenu;
}
/********************************************************************************
*Game specific settings
*********************************************************************************/
int MenuGameSettings(struct discHdr * header)
{
GameSettingsMenu * Menu = new GameSettingsMenu(header);
mainWindow->Append(Menu);
Menu->ShowMenu();
int returnMenu = MENU_NONE;
while((returnMenu = Menu->MainLoop()) == MENU_NONE);
delete Menu;
return returnMenu;
}

View File

@ -1,14 +0,0 @@
/****************************************************************************
* Settings
* USB Loader GX 2009
*
* settings.h
***************************************************************************/
#ifndef _SETTINGS_H_
#define _SETTINGS_H_
int MenuSettings();
int MenuGameSettings(struct discHdr * header);
#endif

View File

@ -168,6 +168,7 @@ enum
BLOCK_COVER_DOWNLOADS = 0x2000,
BLOCK_GAME_INSTALL = 0x4000,
BLOCK_GAMEID_CHANGE = 0x8000,
BLOCK_CATEGORIES_MOD = 0x010000,
BLOCK_ALL = 0xFFFFFFFF,
};

View File

@ -158,6 +158,9 @@ void FlyingButtonsMenu::SetPageIndicators()
FirstIndicator = IndicatorCount-MAX_INDICATORS;
else
FirstIndicator = currentPage - (int) floor(MAX_INDICATORS/2.0f);
if(FirstIndicator < 0)
FirstIndicator = 0;
}
int DisplayedIndicators = IndicatorCount > MAX_INDICATORS ? MAX_INDICATORS : IndicatorCount;

View File

@ -21,18 +21,21 @@
* 3. This notice may not be removed or altered from any source
* distribution.
***************************************************************************/
#include <unistd.h>
#include "GameSettingsMenu.hpp"
#include "themes/CTheme.h"
#include "prompts/PromptWindows.h"
#include "prompts/CategorySelectPrompt.hpp"
#include "settings/GameTitles.h"
#include "usbloader/GameList.h"
#include "language/gettext.h"
#include "wad/nandtitle.h"
#include "cheats/cheatmenu.h"
#include "GameLoadSM.hpp"
#include "UninstallSM.hpp"
GameSettingsMenu::GameSettingsMenu(struct discHdr * header)
: FlyingButtonsMenu(GameTitles.GetTitle(header))
GameSettingsMenu::GameSettingsMenu(GameBrowseMenu *parent, struct discHdr * header)
: FlyingButtonsMenu(GameTitles.GetTitle(header)), browserMenu(parent)
{
DiscHeader = header;
//! Don't switch menu's by default but return to disc window.
@ -43,12 +46,29 @@ GameSettingsMenu::~GameSettingsMenu()
{
}
int GameSettingsMenu::Show(GameBrowseMenu *parent, struct discHdr * header)
{
GameSettingsMenu * Menu = new GameSettingsMenu(parent, header);
mainWindow->Append(Menu);
Menu->ShowMenu();
int returnMenu = MENU_NONE;
while((returnMenu = Menu->MainLoop()) == MENU_NONE);
delete Menu;
return returnMenu;
}
void GameSettingsMenu::SetupMainButtons()
{
int pos = 0;
SetMainButton(pos++, tr( "Game Load" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Ocarina" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Categories" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Uninstall Menu" ), MainButtonImgData, MainButtonImgOverData);
SetMainButton(pos++, tr( "Default Gamesettings" ), MainButtonImgData, MainButtonImgOverData);
}
@ -77,6 +97,42 @@ void GameSettingsMenu::CreateSettingsMenu(int menuNr)
CheatMenu(ID);
}
//! Categories
else if(menuNr == Idx++)
{
HideMenu();
titleTxt = new GuiText(MenuTitle.c_str(), 28, ( GXColor ) {0, 0, 0, 255});
titleTxt->SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
titleTxt->SetPosition(0, 40);
titleTxt->SetMaxWidth(310, SCROLL_HORIZONTAL);
Append(titleTxt);
Remove(backBtn);
ResumeGui();
SetState(STATE_DISABLED);
CategorySelectPrompt promptMenu(DiscHeader);
promptMenu.SetAlignment(ALIGN_CENTER, ALIGN_MIDDLE);
promptMenu.SetEffect(EFFECT_FADE, 20);
mainWindow->Append(&promptMenu);
promptMenu.Show();
promptMenu.SetEffect(EFFECT_FADE, -20);
while(promptMenu.GetEffect() > 0) usleep(100);
mainWindow->Remove(&promptMenu);
if(promptMenu.categoriesChanged())
{
wString oldFilter(gameList.GetCurrentFilter());
gameList.FilterList(oldFilter.c_str());
browserMenu->ReloadBrowser();
}
SetState(STATE_DEFAULT);
Remove(titleTxt);
delete titleTxt;
titleTxt = NULL;
Append(backBtn);
ShowMenu();
}
//! Uninstall Menu
else if(menuNr == Idx++)
{

View File

@ -26,18 +26,21 @@
#include "FlyingButtonsMenu.hpp"
#include "settings/CGameSettings.h"
#include "menu/GameBrowseMenu.hpp"
#include "usbloader/disc.h"
class GameSettingsMenu : public FlyingButtonsMenu
{
public:
GameSettingsMenu(struct discHdr * header);
GameSettingsMenu(GameBrowseMenu *parent, struct discHdr * header);
~GameSettingsMenu();
static int Show(GameBrowseMenu *parent, struct discHdr *header);
protected:
virtual void CreateSettingsMenu(int index);
virtual void DeleteSettingsMenu();
virtual void SetupMainButtons();
GameBrowseMenu *browserMenu;
struct discHdr * DiscHeader;
};

View File

@ -47,6 +47,22 @@ GlobalSettings::~GlobalSettings()
delete creditsImgOverData;
}
int GlobalSettings::Show()
{
GlobalSettings * Menu = new GlobalSettings();
mainWindow->Append(Menu);
Menu->ShowMenu();
int returnMenu = MENU_NONE;
while((returnMenu = Menu->MainLoop()) == MENU_NONE);
delete Menu;
return returnMenu;
}
void GlobalSettings::SetupMainButtons()
{
int pos = 0;

View File

@ -31,6 +31,7 @@ class GlobalSettings : public FlyingButtonsMenu
public:
GlobalSettings();
~GlobalSettings();
static int Show();
protected:
virtual void CreateSettingsMenu(int index);
virtual void DeleteSettingsMenu();

View File

@ -72,6 +72,7 @@ ParentalControlSM::ParentalControlSM()
Options->SetName(Idx++, "%s", tr( "Block Cover Downloads" ));
Options->SetName(Idx++, "%s", tr( "Block Game Install" ));
Options->SetName(Idx++, "%s", tr( "Block GameID Change" ));
Options->SetName(Idx++, "%s", tr( "Block Categories Modify" ));
SetOptionValues();
}
@ -147,6 +148,9 @@ void ParentalControlSM::SetOptionValues()
//! Settings: Block GameID Change
Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_GAMEID_CHANGE) != 0)]));
//! Settings: Block Categories Modify
Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_CATEGORIES_MOD) != 0)]));
}
int ParentalControlSM::GetMenuInternal()
@ -310,6 +314,12 @@ int ParentalControlSM::GetMenuInternal()
Settings.ParentalBlocks ^= BLOCK_GAMEID_CHANGE;
}
//! Settings: Block Categories Modify
else if (ret == ++Idx)
{
Settings.ParentalBlocks ^= BLOCK_CATEGORIES_MOD;
}
SetOptionValues();
return MENU_NONE;

View File

@ -157,7 +157,7 @@ void IosLoader::LoadIOSModules(s32 ios, s32 ios_rev)
//! Waninkoko IOS
else if(IsWaninkokoIOS(ios))
{
if(ios_rev >= 18)
if(ios_rev >= 18 && !(ios_rev >= 21006 && ios_rev < 30000))
{
if(mload_init() < 0)
return;

View File

@ -174,6 +174,14 @@ RecourceFile Resources::RecourceFiles[] =
{"Channel_btn.png", Channel_btn_png, Channel_btn_png_size, NULL, 0},
{"boxBorder.png", boxBorder_png, boxBorder_png_size, NULL, 0},
{"nocoverFull.png", nocoverFull_png, nocoverFull_png_size, NULL, 0},
{"add.png", add_png, add_png_size, NULL, 0},
{"back.png", back_png, back_png_size, NULL, 0},
{"forward.png", forward_png, forward_png_size, NULL, 0},
{"categoryPrompt.png", categoryPrompt_png, categoryPrompt_png_size, NULL, 0},
{"categoryLine.png", categoryLine_png, categoryLine_png_size, NULL, 0},
{"remove.png", remove_png, remove_png_size, NULL, 0},
{"category.png", category_png, category_png_size, NULL, 0},
{"category_gray.png", category_gray_png, category_gray_png_size, NULL, 0},
{"button_click.wav", button_click_wav, button_click_wav_size, NULL, 0},
{"button_click2.wav", button_click2_wav, button_click2_wav_size, NULL, 0},
{"button_over.wav", button_over_wav, button_over_wav_size, NULL, 0},

View File

@ -9,7 +9,6 @@
#include "usbloader/usbstorage2.h"
#include "usbloader/wdvd.h"
#include "usbloader/GameList.h"
#include "settings/Settings.h"
#include "settings/CGameSettings.h"
#include "usbloader/frag.h"
#include "usbloader/wbfs.h"
@ -61,12 +60,6 @@ u32 GameBooter::BootPartition(char * dolpath, u8 videoselected, u8 alternatedol,
if (ret < 0)
return 0;
load_wip_code((u8*) Disc_ID);
/* If a wip file is loaded for this game this does nothing - Dimok */
PoPPatch();
NSMBPatch();
/* Setup low memory */
Disc_SetLowMem();
@ -79,8 +72,6 @@ u32 GameBooter::BootPartition(char * dolpath, u8 videoselected, u8 alternatedol,
if (ret < 0)
return 0;
free_wip();
return (u32) p_entry;
}

View File

@ -31,6 +31,7 @@
#include "settings/CGameSettings.h"
#include "settings/CGameStatistics.h"
#include "settings/GameTitles.h"
#include "settings/CGameCategories.hpp"
#include "xml/xml.h"
#include "FreeTypeGX.h"
#include "GameList.h"
@ -241,6 +242,15 @@ int GameList::FilterList(const wchar_t * gameFilter)
if(!Settings.godmode && GameConfig && GameConfig->Locked)
continue;
//! Category filter
u32 n;
for(n = 0; n < Settings.EnabledCategories.size(); ++n)
{
if(GameCategories.isInCategory((char *) header->id, Settings.EnabledCategories[n]))
break;
}
if(n == Settings.EnabledCategories.size()) continue;
wchar_t *gameName = charToWideChar(GameTitles.GetTitle(header));
if (gameName && *GameFilter.c_str())
{

View File

@ -11,6 +11,7 @@
#include "fstfile.h"
#include "gecko.h"
#include "patches/gamepatches.h"
#include "patches/wip.h"
#include "settings/SettingsEnums.h"
extern bool geckoinit;
@ -84,6 +85,7 @@ s32 Apploader_Run(entry_point *entry, char * dolpath, u8 alternatedol, u32 alter
if (alternatedol == ALT_DOL_FROM_SD_USB)
{
ClearDOLList();
wip_reset_counter();
void *dolbuffer = NULL;
int dollen = 0;
@ -96,6 +98,7 @@ s32 Apploader_Run(entry_point *entry, char * dolpath, u8 alternatedol, u32 alter
else if (alternatedol == ALT_DOL_FROM_GAME && alternatedoloffset != 0)
{
ClearDOLList();
wip_reset_counter();
FST_ENTRY *fst = (FST_ENTRY *) *(u32 *) 0x80000038;
//! Check if it's inside the limits

View File

@ -302,6 +302,7 @@ s32 Disc_JumpToEntrypoint(bool enablecheat, u32 dolparameter)
"mtlr %r3\n"
"lis %r3, 0x8000\n"
"ori %r3, %r3, 0x18A8\n"
"nop\n"
"mtctr %r3\n"
"bctr\n"
);

View File

@ -69,7 +69,7 @@ static char fs3[] ATTRIBUTE_ALIGN(32) = "/dev/usb/ehc";
static u8 * mem2_ptr = NULL;
static s32 hid = -1, fd = -1;
static u32 usb2_port = 0; //autodetect mode (works only with hermes ios & rodries ehcmodule)
static u32 usb2_port = 2; //autodetect mode (works only with hermes ios & rodries ehcmodule)
u32 hdd_sector_size = 512;
s32 USBStorage2_Init(void)