From 1efb712ac594f00032f5031209e1b4a88c1c39c2 Mon Sep 17 00:00:00 2001 From: dimok321 <15055714+dimok789@users.noreply.github.com> Date: Sat, 18 Jun 2011 07:00:42 +0000 Subject: [PATCH] *fixed XFLIP_WTF setting (Cyan) *fixed crashes on category add/delete/rename *changed icon of category rename and mapped triggers +/-/1 to the buttons *fixed green bar flash on game start *fixed freeze in STATE_DISABLED when leaving->entering->saving game settings *separated a few settings from the GUI setting and created a "Feature" settings menu *Updated language files *Added Wiinnertag support. NOTE: When you enable the Wiinnertag in the settings a prompt will come up if the Wiinnertag.xml does not exists in the setup path for it. This prompt will ask you if you want an example file created by the loader which you can adjust to your account (I suggest you create one on first use). Multiple/Other tag sites can be setup in the xml file and loader will execute them all one after another. Also Wiinnertag requires a network connection established to be working. When you enable this feature and auto network init is disabled you will be prompted to enable it. --- HBC/META.XML | 4 +- Languages/czech.lang | 26 ++- Languages/danish.lang | 26 ++- Languages/dutch.lang | 35 +++- Languages/english.lang | 26 ++- Languages/finnish.lang | 26 ++- Languages/french.lang | 29 +++- Languages/german.lang | 35 +++- Languages/hungarian.lang | 26 ++- Languages/italian.lang | 26 ++- Languages/japanese.lang | 39 +++-- Languages/korean.lang | 26 ++- Languages/norwegian.lang | 26 ++- Languages/polish.lang | 26 ++- Languages/portuguese_br.lang | 26 ++- Languages/portuguese_pt.lang | 83 ++++++---- Languages/russian.lang | 26 ++- Languages/schinese.lang | 26 ++- Languages/spanish.lang | 26 ++- Languages/swedish.lang | 26 ++- Languages/tchinese.lang | 26 ++- Languages/thai.lang | 26 ++- Languages/turkish.lang | 26 ++- Themes/Default.them | 26 ++- data/images/categoryPrompt.png | Bin 10406 -> 10492 bytes data/images/one.png | Bin 0 -> 1773 bytes data/images/rename.png | Bin 496 -> 0 bytes gui.pnproj | 2 +- source/GUI/gui_checkboxbrowser.cpp | 23 ++- source/GUI/gui_checkboxbrowser.hpp | 2 + source/libs/libfat/libcustomfat.a | Bin 78592 -> 80240 bytes source/menu/GameBrowseMenu.cpp | 3 +- source/network/Wiinnertag.cpp | 135 ++++++++++++++++ source/network/Wiinnertag.h | 46 ++++++ source/prompts/CategoryPrompt.cpp | 20 ++- source/prompts/CategoryPrompt.hpp | 3 + source/prompts/CategorySelectPrompt.cpp | 1 + source/prompts/CategorySwitchPrompt.cpp | 1 + source/prompts/GameWindow.cpp | 10 ++ source/prompts/PromptWindows.cpp | 15 +- source/prompts/gameinfo.cpp | 10 +- source/settings/CSettings.cpp | 145 +++++++++-------- source/settings/CSettings.h | 2 + source/settings/SettingsEnums.h | 1 + source/settings/menus/CustomPathsSM.cpp | 11 ++ source/settings/menus/FeatureSettingsMenu.cpp | 151 ++++++++++++++++++ source/settings/menus/FeatureSettingsMenu.hpp | 42 +++++ source/settings/menus/GUISettingsMenu.cpp | 48 ------ source/settings/menus/GameSettingsMenu.cpp | 3 +- source/settings/menus/GlobalSettings.cpp | 19 +++ source/settings/menus/ParentalControlSM.cpp | 10 ++ source/settings/menus/SettingsMenu.hpp | 1 + source/themes/filelist.h | 8 +- source/usbloader/GameBooter.cpp | 4 + source/usbloader/disc.c | 11 +- source/utils/StringTools.c | 36 +++++ source/utils/StringTools.h | 1 + 57 files changed, 1176 insertions(+), 281 deletions(-) create mode 100644 data/images/one.png delete mode 100644 data/images/rename.png create mode 100644 source/network/Wiinnertag.cpp create mode 100644 source/network/Wiinnertag.h create mode 100644 source/settings/menus/FeatureSettingsMenu.cpp create mode 100644 source/settings/menus/FeatureSettingsMenu.hpp diff --git a/HBC/META.XML b/HBC/META.XML index 2befe043..fe00d447 100644 --- a/HBC/META.XML +++ b/HBC/META.XML @@ -2,8 +2,8 @@ USB Loader GX USB Loader GX Team - 2.1 r1089 - 201106101221 + 2.1 r1090 + 201106141757 Loads games from USB-devices 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. diff --git a/Languages/czech.lang b/Languages/czech.lang index 36303132..428b1f7d 100644 --- a/Languages/czech.lang +++ b/Languages/czech.lang @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" +"POT-Creation-Date: 2011-06-18 08:44+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" @@ -141,6 +141,9 @@ msgstr "Všechny možnosti USB Loader GX jsou odemceny" msgid "Alternate DOL" msgstr "Náhradní DOL" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "" @@ -207,6 +210,9 @@ msgstr "Zablokovat stažení obalů" msgid "Block Custom Paths" msgstr "Zablokovat vlastní cesty" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "Zablokovat instalaci her" @@ -617,6 +623,9 @@ msgstr "Nelze otevrít diskový oddíl" msgid "Failed updating" msgstr "Aktualizace selhala" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "Ún" @@ -777,9 +786,6 @@ msgstr "Jakým zpusobem ukoncit?" msgid "Import Categories" msgstr "" -msgid "Import categories" -msgstr "" - msgid "Import operation successfully completed." msgstr "" @@ -978,6 +984,9 @@ msgstr "Nebylo zadano URL nebo cesta." msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "Nebyl nalezen oddíl WBFS nebo FAT/NTFS/EXT" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "Nebyly vybrány žádné cheaty" @@ -1505,6 +1514,15 @@ msgstr "WiiTDB je aktuální" msgid "Wiilight" msgstr "Wii svetlo" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "Špatné heslo" diff --git a/Languages/danish.lang b/Languages/danish.lang index 7cc15872..c7e62e0e 100644 --- a/Languages/danish.lang +++ b/Languages/danish.lang @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" +"POT-Creation-Date: 2011-06-18 08:44+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n" "Last-Translator: Fox888[dk]\n" "Language-Team: [dk]\n" @@ -141,6 +141,9 @@ msgstr "Alle USB Loader GX's funktioner er låst op." msgid "Alternate DOL" msgstr "Alternativ DOL" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "" @@ -207,6 +210,9 @@ msgstr "Bloker Cover downloads" msgid "Block Custom Paths" msgstr "Bloker brugdefineret sti" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "Bloker spil installering" @@ -617,6 +623,9 @@ msgstr "Kunne ikke åbne partition" msgid "Failed updating" msgstr "Opdatering fejlede" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "" @@ -777,9 +786,6 @@ msgstr "Hvordan skal der slukkes?" msgid "Import Categories" msgstr "" -msgid "Import categories" -msgstr "" - msgid "Import operation successfully completed." msgstr "" @@ -978,6 +984,9 @@ msgstr "Ingen URL eller sti er angivet." msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "Ingen WBFS eller FAT/NTFS/EXT partition er fundet" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "Der blev ikke valgt nogle cheats" @@ -1505,6 +1514,15 @@ msgstr "WiiTDB er op til dato." msgid "Wiilight" msgstr "" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "Forkert password" diff --git a/Languages/dutch.lang b/Languages/dutch.lang index 4f695450..879fdf0b 100644 --- a/Languages/dutch.lang +++ b/Languages/dutch.lang @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" -"PO-Revision-Date: 2011-06-10 08:07+0100\n" +"POT-Creation-Date: 2011-06-18 08:50+0200\n" +"PO-Revision-Date: 2011-06-16 08:02+0100\n" "Last-Translator: glowy\n" "Language-Team: tj_cool, glowy\n" "MIME-Version: 1.0\n" @@ -141,6 +141,9 @@ msgstr "Alle functies van USB Loader GX zijn vrijgegeven." msgid "Alternate DOL" msgstr "Alternatieve DOL" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "" @@ -207,6 +210,9 @@ msgstr "Blokkeer Downloads van Hoesjes" msgid "Block Custom Paths" msgstr "Blokkeer Aangepaste Paden" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "Blokkeer Spel Installatie" @@ -617,6 +623,9 @@ msgstr "Partitie openen mislukt" msgid "Failed updating" msgstr "Updaten mislukt" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "" @@ -775,10 +784,7 @@ msgid "How to Shutdown?" msgstr "Hoe uitzetten?" msgid "Import Categories" -msgstr "" - -msgid "Import categories" -msgstr "Importeer categorieën" +msgstr "Importeer Categorieën" msgid "Import operation successfully completed." msgstr "Importeren succesvol afgerond" @@ -978,6 +984,9 @@ msgstr "Geen URL of pad gespecificeerd." msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "Geen WBFS of FAT/NTFS/EXT partitie gevonden" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "Geen cheats geselecteerd" @@ -1153,7 +1162,7 @@ msgid "Rename Game on WBFS" msgstr "Spel hernoemen op WBFS" msgid "Rename category" -msgstr "" +msgstr "Hernoem categorie" msgid "Reset" msgstr "" @@ -1505,6 +1514,15 @@ msgstr "" msgid "Wiilight" msgstr "Wii verlichting" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "Fout wachtwoord" @@ -1577,6 +1595,9 @@ msgstr "van" msgid "seconds left" msgstr "seconden over" +#~ msgid "Import categories" +#~ msgstr "Importeer categorieën" + #~ msgid "Import categories from WiiTDB" #~ msgstr "Importeer categorieën van WiiTDB" diff --git a/Languages/english.lang b/Languages/english.lang index 1070d0a5..5b99b0a1 100644 --- a/Languages/english.lang +++ b/Languages/english.lang @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" +"POT-Creation-Date: 2011-06-18 08:44+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -141,6 +141,9 @@ msgstr "" msgid "Alternate DOL" msgstr "" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "" @@ -207,6 +210,9 @@ msgstr "" msgid "Block Custom Paths" msgstr "" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "" @@ -617,6 +623,9 @@ msgstr "" msgid "Failed updating" msgstr "" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "" @@ -777,9 +786,6 @@ msgstr "" msgid "Import Categories" msgstr "" -msgid "Import categories" -msgstr "" - msgid "Import operation successfully completed." msgstr "" @@ -978,6 +984,9 @@ msgstr "" msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "" @@ -1505,6 +1514,15 @@ msgstr "" msgid "Wiilight" msgstr "" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "" diff --git a/Languages/finnish.lang b/Languages/finnish.lang index adcee5c3..8a28aeea 100644 --- a/Languages/finnish.lang +++ b/Languages/finnish.lang @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" +"POT-Creation-Date: 2011-06-18 08:44+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n" "Last-Translator: c64rmx\n" "Language-Team: \n" @@ -141,6 +141,9 @@ msgstr "Kaikki asetukset on nyt käytettävissä." msgid "Alternate DOL" msgstr "Vaihtoehto DOL" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "" @@ -207,6 +210,9 @@ msgstr "" msgid "Block Custom Paths" msgstr "" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "" @@ -617,6 +623,9 @@ msgstr "Osion avaus epäonnistui" msgid "Failed updating" msgstr "" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "helmi" @@ -777,9 +786,6 @@ msgstr "Miten sammutetaan?" msgid "Import Categories" msgstr "" -msgid "Import categories" -msgstr "" - msgid "Import operation successfully completed." msgstr "" @@ -978,6 +984,9 @@ msgstr "" msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "" @@ -1505,6 +1514,15 @@ msgstr "" msgid "Wiilight" msgstr "" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "Väärä salasana" diff --git a/Languages/french.lang b/Languages/french.lang index 63a430d4..d3fad1c8 100644 --- a/Languages/french.lang +++ b/Languages/french.lang @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" +"POT-Creation-Date: 2011-06-18 08:44+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n" "Last-Translator: Cyan\n" "Language-Team: Badablek, Amour, ikya & Kin8\n" @@ -141,6 +141,9 @@ msgstr "Toutes les fonctionnalités sont déverrouillées." msgid "Alternate DOL" msgstr "DOL alternatif" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "" @@ -207,6 +210,9 @@ msgstr "Bloquer Téléch. jaquettes" msgid "Block Custom Paths" msgstr "Bloquer Person. dossiers" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "Bloquer Installation jeu" @@ -617,6 +623,9 @@ msgstr "Échec accès partition" msgid "Failed updating" msgstr "Échec de la mise à jour" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "Fév" @@ -777,9 +786,6 @@ msgstr "Arrêt de la Wii ?" msgid "Import Categories" msgstr "" -msgid "Import categories" -msgstr "Importer les catégories" - msgid "Import operation successfully completed." msgstr "Catégories importées avec succès." @@ -978,6 +984,9 @@ msgstr "Pas d'adresse ou de chemin spécifié" msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "Partition WBFS ou FAT/NTFS/EXT non trouvée" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "Aucune sélection de triches" @@ -1505,6 +1514,15 @@ msgstr "WiiTDB est à jour." msgid "Wiilight" msgstr "Illumination Wii" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "Mot de passe incorrect" @@ -1577,6 +1595,9 @@ msgstr "sur" msgid "seconds left" msgstr "secondes restantes" +#~ msgid "Import categories" +#~ msgstr "Importer les catégories" + #~ msgid "Import categories from WiiTDB" #~ msgstr "Importer les catégories" diff --git a/Languages/german.lang b/Languages/german.lang index ec8a868a..2825a4a7 100644 --- a/Languages/german.lang +++ b/Languages/german.lang @@ -1,11 +1,11 @@ # USB Loader GX -# german language source file - r1087 +# german language source file - r1089 # don't delete/change this line (é). msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" +"POT-Creation-Date: 2011-06-18 08:50+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" @@ -141,6 +141,9 @@ msgstr "Alle Funktionen des USB Loader GX sind jetzt freigeschaltet." msgid "Alternate DOL" msgstr "Alternative DOL" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "Anti" @@ -175,7 +178,7 @@ msgid "Author(s):" msgstr "Autor(en)" msgid "Auto" -msgstr "" +msgstr "Auto" msgid "AutoInit Network" msgstr "Autoinit. Netzwerk" @@ -207,6 +210,9 @@ msgstr "Blocke Cover-Downloads" msgid "Block Custom Paths" msgstr "Blocke eigene Pfade" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "Blocke Spieleinstallation" @@ -617,6 +623,9 @@ msgstr "Öffnen der Partition fehlgeschlagen" msgid "Failed updating" msgstr "Updaten fehlgeschlagen" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "Februar" @@ -775,9 +784,6 @@ msgid "How to Shutdown?" msgstr "Wie soll ausgeschaltet werden?" msgid "Import Categories" -msgstr "" - -msgid "Import categories" msgstr "Importiere Kategorien" msgid "Import operation successfully completed." @@ -978,6 +984,9 @@ msgstr "Keine URL oder kein Pfad spezifiziert" msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "Keine WBFS oder FAT/NTFS/EXT Partition vorhanden" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "Es wurden keine Cheats ausgewählt." @@ -1153,7 +1162,7 @@ msgid "Rename Game on WBFS" msgstr "Spiel umbenennen" msgid "Rename category" -msgstr "" +msgstr "Kategorie umbenennen" msgid "Reset" msgstr "Zurücksetzen" @@ -1505,6 +1514,15 @@ msgstr "WiiTDB ist aktuell." msgid "Wiilight" msgstr "Licht am Laufwerk" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "Falsches Passwort" @@ -1577,6 +1595,9 @@ msgstr "von" msgid "seconds left" msgstr "Sekunden verbleiben" +#~ msgid "Import categories" +#~ msgstr "Importiere Kategorien" + #~ msgid "Import categories from WiiTDB" #~ msgstr "Import. Kategorien (WiiTDB)" diff --git a/Languages/hungarian.lang b/Languages/hungarian.lang index 2e59f7c9..7eb04c6b 100644 --- a/Languages/hungarian.lang +++ b/Languages/hungarian.lang @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" +"POT-Creation-Date: 2011-06-18 08:44+0200\n" "PO-Revision-Date: 2009-12-29 11:05+0100\n" "Last-Translator: Springdale\n" "Language-Team: Tusk, Springdale\n" @@ -141,6 +141,9 @@ msgstr "Az USB Loader GX minden funkciója elérhetõ." msgid "Alternate DOL" msgstr "Alternatív DOL" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "" @@ -207,6 +210,9 @@ msgstr "" msgid "Block Custom Paths" msgstr "" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "" @@ -617,6 +623,9 @@ msgstr "Hiba a partíció megnyitásakor" msgid "Failed updating" msgstr "" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "" @@ -777,9 +786,6 @@ msgstr "Hogyan kapcsoljon ki?" msgid "Import Categories" msgstr "" -msgid "Import categories" -msgstr "" - msgid "Import operation successfully completed." msgstr "" @@ -978,6 +984,9 @@ msgstr "" msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "Nincsenek kiválasztott cheat-ek" @@ -1505,6 +1514,15 @@ msgstr "" msgid "Wiilight" msgstr "WiiFény" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "Hibás Jelszó" diff --git a/Languages/italian.lang b/Languages/italian.lang index 193cfb1b..b4c84c54 100644 --- a/Languages/italian.lang +++ b/Languages/italian.lang @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" +"POT-Creation-Date: 2011-06-18 08:44+0200\n" "PO-Revision-Date: 2011-03-10 21:00+0200\n" "Last-Translator: Cambo \n" "Language-Team: Cambo\n" @@ -141,6 +141,9 @@ msgstr "Tutte le funzioni di USB Loader GX sono sbloccate." msgid "Alternate DOL" msgstr "DOL Alternativo" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "" @@ -207,6 +210,9 @@ msgstr "Blocca Scaricam. Copertine" msgid "Block Custom Paths" msgstr "Blocca Modifica Cartelle" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "Blocca Install. Giochi" @@ -617,6 +623,9 @@ msgstr "Non si accede alla partizione" msgid "Failed updating" msgstr "Aggiornamento fallito" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "febbraio" @@ -777,9 +786,6 @@ msgstr "Spegnimento Wii?" msgid "Import Categories" msgstr "" -msgid "Import categories" -msgstr "" - msgid "Import operation successfully completed." msgstr "" @@ -978,6 +984,9 @@ msgstr "Nessuna cartella o URL specificata." msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "Nessuna partizione WBFS o FAT/NTFS/EXT trovata" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "Non è stato selezionato alcun trucco" @@ -1505,6 +1514,15 @@ msgstr "WiiTDB è aggiornato." msgid "Wiilight" msgstr "Illuminazione Wii" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "Password Errata" diff --git a/Languages/japanese.lang b/Languages/japanese.lang index e947e09b..957a462c 100644 --- a/Languages/japanese.lang +++ b/Languages/japanese.lang @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" +"POT-Creation-Date: 2011-06-18 08:50+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n" "Last-Translator: hosigumayuugi\n" "Language-Team: hosigumayuugi, papa, ichiroling\n" @@ -141,6 +141,9 @@ msgstr "使用制限が解除されました" msgid "Alternate DOL" msgstr "代替DOL起動" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "アンチ" @@ -175,7 +178,7 @@ msgid "Author(s):" msgstr "制作者:" msgid "Auto" -msgstr "" +msgstr "自動" msgid "AutoInit Network" msgstr "自動ネット接続" @@ -207,6 +210,9 @@ msgstr "カバーのダウンロードを制限" msgid "Block Custom Paths" msgstr "パスの変更を制限" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "ゲームの追加を制限" @@ -226,10 +232,10 @@ msgid "Block HBC Menu" msgstr "HBCメニューを制限" msgid "Block IOS Reload" -msgstr "IOSの再読み込みを制限" +msgstr "IOS再読み込み防止" msgid "Block Loader Settings" -msgstr "読み込み設定を制限" +msgstr "ローダーの設定を制限" msgid "Block Parental Settings" msgstr "使用制限設定を制限" @@ -376,7 +382,7 @@ msgid "Could not open Disc" msgstr "ディスクを開けませんでした" msgid "Could not open the WiiTDB.xml file." -msgstr "" +msgstr "wiitdb.xmlを開けませんでした" msgid "Could not open wiitdb.xml." msgstr "wiitdb.xmlを開けませんでした" @@ -617,6 +623,9 @@ msgstr "領域を開けませんでした" msgid "Failed updating" msgstr "更新に失敗しました" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "2月" @@ -775,9 +784,6 @@ msgid "How to Shutdown?" msgstr "終了方法の選択" msgid "Import Categories" -msgstr "" - -msgid "Import categories" msgstr "カテゴリをインポート" msgid "Import operation successfully completed." @@ -978,6 +984,9 @@ msgstr "URLかパスが指定されていません" msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "使用できる領域が見つかりません" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "何も選ばれていません" @@ -1153,7 +1162,7 @@ msgid "Rename Game on WBFS" msgstr "WBFS内のゲーム名を変更" msgid "Rename category" -msgstr "" +msgstr "カテゴリの名前を変更" msgid "Reset" msgstr "リセット" @@ -1505,6 +1514,15 @@ msgstr "WiiTDBが更新されました" msgid "Wiilight" msgstr "スロット点灯機能" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "暗証番号が違います" @@ -1577,6 +1595,9 @@ msgstr "中" msgid "seconds left" msgstr "秒で完了" +#~ msgid "Import categories" +#~ msgstr "カテゴリをインポート" + #~ msgid "Import categories from WiiTDB" #~ msgstr "WiiTDBからカテゴリをインポート" diff --git a/Languages/korean.lang b/Languages/korean.lang index 39dd011a..09e730e8 100644 --- a/Languages/korean.lang +++ b/Languages/korean.lang @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" +"POT-Creation-Date: 2011-06-18 08:44+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n" "Last-Translator: nextos@korea.com\n" "Language-Team: \n" @@ -141,6 +141,9 @@ msgstr "모든 USB로더 GX 기능 잠금 해제." msgid "Alternate DOL" msgstr "Alternate DOL" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "" @@ -207,6 +210,9 @@ msgstr "" msgid "Block Custom Paths" msgstr "" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "" @@ -617,6 +623,9 @@ msgstr "파티션 열기 실패" msgid "Failed updating" msgstr "" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "2월" @@ -777,9 +786,6 @@ msgstr "어떻게 종료할까요?" msgid "Import Categories" msgstr "" -msgid "Import categories" -msgstr "" - msgid "Import operation successfully completed." msgstr "" @@ -978,6 +984,9 @@ msgstr "" msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "" @@ -1505,6 +1514,15 @@ msgstr "" msgid "Wiilight" msgstr "Wiilight" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "잘못된 비밀번호" diff --git a/Languages/norwegian.lang b/Languages/norwegian.lang index e3c69778..19669bd1 100644 --- a/Languages/norwegian.lang +++ b/Languages/norwegian.lang @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" +"POT-Creation-Date: 2011-06-18 08:44+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n" "Last-Translator: raschi\n" "Language-Team: raschi\n" @@ -141,6 +141,9 @@ msgstr "Alle funksjonene til USB Loader GX er opplåst." msgid "Alternate DOL" msgstr "Alternativ DOL" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "" @@ -207,6 +210,9 @@ msgstr "" msgid "Block Custom Paths" msgstr "" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "" @@ -617,6 +623,9 @@ msgstr "Feil ved åpning av partisjon" msgid "Failed updating" msgstr "Feil ved oppdatering" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "" @@ -777,9 +786,6 @@ msgstr "Hvordan skru av?" msgid "Import Categories" msgstr "" -msgid "Import categories" -msgstr "" - msgid "Import operation successfully completed." msgstr "" @@ -978,6 +984,9 @@ msgstr "Ingen URL eller sti spesifisert." msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "Ingen WBFS eller FAT/NTFS/EXT partisjon funnet" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "Ingen juksefiler valgt" @@ -1505,6 +1514,15 @@ msgstr "WiiTDB er oppdatert." msgid "Wiilight" msgstr "Wii DVD lys" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "Feil passord" diff --git a/Languages/polish.lang b/Languages/polish.lang index 3d2ff36f..388493ab 100644 --- a/Languages/polish.lang +++ b/Languages/polish.lang @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" +"POT-Creation-Date: 2011-06-18 08:44+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n" "Last-Translator: ziom666 (zadania_prog@vp.pl)\n" "Language-Team: \n" @@ -141,6 +141,9 @@ msgstr "USB Loader GX odblokowany" msgid "Alternate DOL" msgstr "Alternatywny DOL" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "Anty" @@ -207,6 +210,9 @@ msgstr "" msgid "Block Custom Paths" msgstr "" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "" @@ -617,6 +623,9 @@ msgstr "Nie udalo sie otworzyc partycji" msgid "Failed updating" msgstr "" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "Luty" @@ -777,9 +786,6 @@ msgstr "Wybierz rodzaj zamkniecia" msgid "Import Categories" msgstr "" -msgid "Import categories" -msgstr "" - msgid "Import operation successfully completed." msgstr "" @@ -978,6 +984,9 @@ msgstr "" msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "Nie wybrano zadnych kodow" @@ -1505,6 +1514,15 @@ msgstr "" msgid "Wiilight" msgstr "Dioda Wii" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "Bledne haslo" diff --git a/Languages/portuguese_br.lang b/Languages/portuguese_br.lang index 041c2408..1a3e17b4 100644 --- a/Languages/portuguese_br.lang +++ b/Languages/portuguese_br.lang @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" +"POT-Creation-Date: 2011-06-18 08:44+0200\n" "PO-Revision-Date: 2009-10-23 18:52+0200\n" "Last-Translator: aniemotion\n" "Language-Team: boto12, aniemotion\n" @@ -141,6 +141,9 @@ msgstr "As configurações estão desbloqueadas." msgid "Alternate DOL" msgstr "DOL alternativo" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "" @@ -207,6 +210,9 @@ msgstr "" msgid "Block Custom Paths" msgstr "" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "" @@ -617,6 +623,9 @@ msgstr "Falha ao abrir partição" msgid "Failed updating" msgstr "" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "Fev" @@ -777,9 +786,6 @@ msgstr "Como desligar?" msgid "Import Categories" msgstr "" -msgid "Import categories" -msgstr "" - msgid "Import operation successfully completed." msgstr "" @@ -978,6 +984,9 @@ msgstr "" msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "Nenhuma seleção de truques" @@ -1505,6 +1514,15 @@ msgstr "" msgid "Wiilight" msgstr "Iluminação Leitor" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "Password Incorreto" diff --git a/Languages/portuguese_pt.lang b/Languages/portuguese_pt.lang index 0d2792ec..25deb7f1 100644 --- a/Languages/portuguese_pt.lang +++ b/Languages/portuguese_pt.lang @@ -1,14 +1,14 @@ # USB Loader GX language source file. -# portuguese_pt.lang - r1075 +# portuguese_pt.lang - r1089 # don't delete/change this line (é). msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" -"PO-Revision-Date: 2011-03-11 20:00-0000\n" -"Last-Translator: pplucky (Sky8000)\n" -"Language-Team: pplucky (Sky8000 )\n" +"POT-Creation-Date: 2011-06-18 08:51+0200\n" +"PO-Revision-Date: 2011-06-14 00:00-0000\n" +"Last-Translator: pplucky\n" +"Language-Team: pplucky \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -124,10 +124,10 @@ msgid "AUTO" msgstr "AUTO" msgid "Add category" -msgstr "" +msgstr "Adicionar categoria" msgid "All" -msgstr "" +msgstr "Todas" msgid "All Partitions" msgstr "Todas as Partições" @@ -141,6 +141,9 @@ msgstr "Todas as configurações estão desbloqueadas." msgid "Alternate DOL" msgstr "DOL alternativo" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "Anti" @@ -154,10 +157,10 @@ msgid "Apr" msgstr "Abr" msgid "Are you sure you want to delete this category?" -msgstr "" +msgstr "Tem a certeza que quer apagar esta categoria?" msgid "Are you sure you want to import game categories from WiiTDB?" -msgstr "" +msgstr "Tem a certeza que quer importar as categorias de jogos da WiiTDB?" msgid "Are you sure you want to lock USB Loader GX?" msgstr "Tem a certeza que quer bloquear o USB Loader GX?" @@ -175,7 +178,7 @@ msgid "Author(s):" msgstr "Autor(es):" msgid "Auto" -msgstr "" +msgstr "Auto" msgid "AutoInit Network" msgstr "Auto-iniciar Rede" @@ -199,7 +202,7 @@ msgid "Big thanks to:" msgstr "Agradecimentos:" msgid "Block Categories Modify" -msgstr "" +msgstr "Bloquear Modif. Categorias" msgid "Block Cover Downloads" msgstr "Bloquear Descarregar Capas" @@ -207,6 +210,9 @@ msgstr "Bloquear Descarregar Capas" msgid "Block Custom Paths" msgstr "Bloquear Caminhos Pers." +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "Bloquear Instalação Jogo" @@ -287,10 +293,10 @@ msgid "Cannot write to destination." msgstr "Não foi possível escrever no destino." msgid "Categories" -msgstr "" +msgstr "Categorias" msgid "Categories:" -msgstr "" +msgstr "Categorias:" msgid "Change Play Path" msgstr "Alterar Caminho de Músicas" @@ -339,10 +345,10 @@ 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 "" +msgstr "Configuração tem de estar desbloqueada para usar isto." msgid "Console should be unlocked to modify it." -msgstr "Configuração tem de estar desbloqueada para modificar o parâmetro." +msgstr "Configuração deve estar desbloqueada para modificar o parâmetro." msgid "Continue to install game?" msgstr "Continuar instalação do jogo?" @@ -376,7 +382,7 @@ msgid "Could not open Disc" msgstr "Não foi possível abrir o Disco" msgid "Could not open the WiiTDB.xml file." -msgstr "" +msgstr "Não foi possível abrir o ficheiro WiiTDB.xml." msgid "Could not open wiitdb.xml." msgstr "Não foi possível abrir o wiitdb.xml" @@ -433,7 +439,7 @@ msgid "Delete Disc Artwork" msgstr "Eliminar Img. Disco" msgid "Delete category" -msgstr "" +msgstr "Apagar categoria" msgid "Design:" msgstr "Design:" @@ -617,6 +623,9 @@ msgstr "Falha ao abrir partição" msgid "Failed updating" msgstr "Falha ao actualizar" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "Fev" @@ -646,10 +655,10 @@ msgid "Force NTSC" msgstr "Forçar NTSC" msgid "Force NTSC480p" -msgstr "" +msgstr "Forçar NTSC480p" msgid "Force PAL480p" -msgstr "" +msgstr "Forçar PAL480p" msgid "Force PAL50" msgstr "Forçar PAL50" @@ -775,13 +784,10 @@ msgid "How to Shutdown?" msgstr "Como desligar a consola?" msgid "Import Categories" -msgstr "" - -msgid "Import categories" -msgstr "" +msgstr "Importar Categorias" msgid "Import operation successfully completed." -msgstr "" +msgstr "Operação de importação completada com sucesso." #, c-format msgid "Incoming file %0.2fKB" @@ -978,6 +984,9 @@ msgstr "URL ou Caminho não especificado." msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "Nenhuma partição WBFS ou FAT/NTFS/EXT encontrada" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "Não foram seleccionados batotas" @@ -1150,10 +1159,10 @@ msgid "Remove update" msgstr "Remover actualização" msgid "Rename Game on WBFS" -msgstr "Alterar nome do jogo (WBFS)" +msgstr "Renomear jogo (WBFS)" msgid "Rename category" -msgstr "" +msgstr "Renomear categoria" msgid "Reset" msgstr "Reinicializar" @@ -1222,7 +1231,7 @@ msgid "Select a DOL from Game" msgstr "Seleccionar um DOL do Jogo" msgid "Select game categories" -msgstr "" +msgstr "Seleccionar categorias de jogos" msgid "Sept" msgstr "Set" @@ -1234,7 +1243,7 @@ msgid "Settings" msgstr "Configurações" msgid "Show Categories" -msgstr "" +msgstr "Mostrar Categorias" msgid "Show Free Space" msgstr "Mostrar Espaço Livre" @@ -1442,7 +1451,7 @@ msgid "Uploaded ZIP file installed to homebrew directory." msgstr "Ficheiro ZIP instalado na pasta do Homebrew." msgid "Use global" -msgstr "" +msgstr "Usar global" msgid "VIDTV Patch" msgstr "Patch VIDTV" @@ -1467,7 +1476,7 @@ msgid "Waiting..." msgstr "Aguardando..." msgid "Warning" -msgstr "" +msgstr "Aviso" msgid "Warning:" msgstr "Aviso:" @@ -1505,6 +1514,15 @@ msgstr "WiiTDB está actualizado." msgid "Wiilight" msgstr "Iluminação Leitor" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "Password Incorrecta" @@ -1518,7 +1536,7 @@ msgid "You are trying to select a FAT32/NTFS/EXT partition with cIOS 249 Rev < 1 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 "" +msgstr "Não pode apagar esta categoria." msgid "You need to select or format a partition" msgstr "Necessita seleccionar ou formatar uma partição" @@ -1577,6 +1595,9 @@ msgstr "de" msgid "seconds left" msgstr "segundos restantes" +#~ msgid "Import categories" +#~ msgstr "Importar categorias" + #~ msgid " Wad Saved as:" #~ msgstr " Wad guardado como:" diff --git a/Languages/russian.lang b/Languages/russian.lang index 00caa0e5..0b531688 100644 --- a/Languages/russian.lang +++ b/Languages/russian.lang @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" +"POT-Creation-Date: 2011-06-18 08:44+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n" "Last-Translator: nikolai_ca\n" "Language-Team: Kir, alendit, nikolai_ca\n" @@ -141,6 +141,9 @@ msgstr "Все функции USB Loader GX разблокированы." msgid "Alternate DOL" msgstr "Альтернативный DOL" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "Анти" @@ -207,6 +210,9 @@ msgstr "" msgid "Block Custom Paths" msgstr "" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "" @@ -617,6 +623,9 @@ msgstr "Не удалось открыть раздел" msgid "Failed updating" msgstr "" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "Фев" @@ -777,9 +786,6 @@ msgstr "Способ отключения?" msgid "Import Categories" msgstr "" -msgid "Import categories" -msgstr "" - msgid "Import operation successfully completed." msgstr "" @@ -978,6 +984,9 @@ msgstr "" msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "Не было выбрано ни одного чит-кода" @@ -1505,6 +1514,15 @@ msgstr "" msgid "Wiilight" msgstr "Подсветка Wii" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "Неверный пароль" diff --git a/Languages/schinese.lang b/Languages/schinese.lang index 4c67f8e8..aa1f830f 100644 --- a/Languages/schinese.lang +++ b/Languages/schinese.lang @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" +"POT-Creation-Date: 2011-06-18 08:44+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n" "Last-Translator: knife.hu kavid emul8ion\n" "Language-Team: kavid\n" @@ -141,6 +141,9 @@ msgstr "USB Loader GX 功能已解锁." msgid "Alternate DOL" msgstr "可选择DOL文件" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "防止" @@ -207,6 +210,9 @@ msgstr "下载封面" msgid "Block Custom Paths" msgstr "自制路径" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "安装游戏" @@ -617,6 +623,9 @@ msgstr "打开分区失败" msgid "Failed updating" msgstr "升级失败" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "二月" @@ -777,9 +786,6 @@ msgstr "如何关机?" msgid "Import Categories" msgstr "" -msgid "Import categories" -msgstr "" - msgid "Import operation successfully completed." msgstr "" @@ -978,6 +984,9 @@ msgstr "未指定URL或路径." msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "找不到 WBFS 或 FAT/NTFS/EXT 分区" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "没有选择作弊码" @@ -1505,6 +1514,15 @@ msgstr "WiiTDB已更新." msgid "Wiilight" msgstr "光驱灯" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "密码错误" diff --git a/Languages/spanish.lang b/Languages/spanish.lang index b9efb7cd..9c19a65f 100644 --- a/Languages/spanish.lang +++ b/Languages/spanish.lang @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" +"POT-Creation-Date: 2011-06-18 08:44+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n" "Last-Translator: SirPalax\n" "Language-Team: Penn, SirPalax\n" @@ -141,6 +141,9 @@ msgstr "Todas las características del USB Loader GX desbloqueadas." msgid "Alternate DOL" msgstr "DOL Alternativo" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "" @@ -207,6 +210,9 @@ msgstr "" msgid "Block Custom Paths" msgstr "" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "" @@ -617,6 +623,9 @@ msgstr "No se ha podido abrir la partición" msgid "Failed updating" msgstr "" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "" @@ -777,9 +786,6 @@ msgstr "¿Cómo quieres apagar?" msgid "Import Categories" msgstr "" -msgid "Import categories" -msgstr "" - msgid "Import operation successfully completed." msgstr "" @@ -978,6 +984,9 @@ msgstr "" msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "No se seleccionaron trucos" @@ -1505,6 +1514,15 @@ msgstr "" msgid "Wiilight" msgstr "Iluminar lector" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "Contraseña incorrecta" diff --git a/Languages/swedish.lang b/Languages/swedish.lang index e3399333..470d0c60 100644 --- a/Languages/swedish.lang +++ b/Languages/swedish.lang @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" +"POT-Creation-Date: 2011-06-18 08:44+0200\n" "PO-Revision-Date: 2010-01-19 17:39+0200\n" "Last-Translator: Katsurou\n" "Language-Team: Katsurou, pirateX\n" @@ -141,6 +141,9 @@ msgstr "Alla funktioner i USB Loader GX är upplåsta." msgid "Alternate DOL" msgstr "Alternativ DOL" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "" @@ -207,6 +210,9 @@ msgstr "" msgid "Block Custom Paths" msgstr "" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "" @@ -617,6 +623,9 @@ msgstr "Misslyckades att öppna partition" msgid "Failed updating" msgstr "" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "" @@ -777,9 +786,6 @@ msgstr "Hur vill du stänga av?" msgid "Import Categories" msgstr "" -msgid "Import categories" -msgstr "" - msgid "Import operation successfully completed." msgstr "" @@ -978,6 +984,9 @@ msgstr "" msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "Inga fusk har valda" @@ -1505,6 +1514,15 @@ msgstr "" msgid "Wiilight" msgstr "Wii-ljus" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "Fel Lösenord" diff --git a/Languages/tchinese.lang b/Languages/tchinese.lang index 2e6f24d1..29251517 100644 --- a/Languages/tchinese.lang +++ b/Languages/tchinese.lang @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" +"POT-Creation-Date: 2011-06-18 08:44+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" @@ -141,6 +141,9 @@ msgstr "USB Loader GX 所有功能已解鎖." msgid "Alternate DOL" msgstr "可選擇Alt DOL檔" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "防止" @@ -207,6 +210,9 @@ msgstr "封鎖封面下載" msgid "Block Custom Paths" msgstr "封鎖自訂路徑" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "封鎖遊戲安裝" @@ -617,6 +623,9 @@ msgstr "開啟磁區失敗" msgid "Failed updating" msgstr "更新失敗" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "二月" @@ -777,9 +786,6 @@ msgstr "關機選項?" msgid "Import Categories" msgstr "" -msgid "Import categories" -msgstr "" - msgid "Import operation successfully completed." msgstr "" @@ -978,6 +984,9 @@ msgstr "沒有指定URL或路徑。" msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "沒找到WBFS 或 FAT/NTFS/EXT磁區" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "沒有選擇金手指" @@ -1505,6 +1514,15 @@ msgstr "WiiTDB保持最新。" msgid "Wiilight" msgstr "光碟機藍光" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "密碼錯誤" diff --git a/Languages/thai.lang b/Languages/thai.lang index 62a6dd42..292af3a4 100644 --- a/Languages/thai.lang +++ b/Languages/thai.lang @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" +"POT-Creation-Date: 2011-06-18 08:44+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n" "Last-Translator: Nitro_subzero \n" "Language-Team: Nitro_subzero\n" @@ -141,6 +141,9 @@ msgstr "ความสามารถทั้งหมดของ USB Loader msgid "Alternate DOL" msgstr "เปลี่ยน DOL " +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "ต้าน" @@ -207,6 +210,9 @@ msgstr "" msgid "Block Custom Paths" msgstr "" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "" @@ -617,6 +623,9 @@ msgstr "ไม่สามารถเข้าถึงพาร์ทิชั msgid "Failed updating" msgstr "" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "กพ." @@ -777,9 +786,6 @@ msgstr "ต้องการปิดแบบไหน ?" msgid "Import Categories" msgstr "" -msgid "Import categories" -msgstr "" - msgid "Import operation successfully completed." msgstr "" @@ -978,6 +984,9 @@ msgstr "" msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "ไม่ได้เลือกการโกงเกมส์ไว้" @@ -1505,6 +1514,15 @@ msgstr "" msgid "Wiilight" msgstr "ความสว่างของ Wii" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "รหัสผ่านผิดพลาด" diff --git a/Languages/turkish.lang b/Languages/turkish.lang index 39ab39bc..625d7a5f 100644 --- a/Languages/turkish.lang +++ b/Languages/turkish.lang @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:22+0200\n" +"POT-Creation-Date: 2011-06-18 08:44+0200\n" "PO-Revision-Date: 2009-10-01 01:00+0200\n" "Last-Translator: omercigingelini\n" "Language-Team: omercigingelini\n" @@ -141,6 +141,9 @@ msgstr "USB Loader GX'in tüm özellikleri kilitli." msgid "Alternate DOL" msgstr "Alternatif DOL" +msgid "An example file was created here:" +msgstr "" + msgid "Anti" msgstr "" @@ -207,6 +210,9 @@ msgstr "" msgid "Block Custom Paths" msgstr "" +msgid "Block Feature Settings" +msgstr "" + msgid "Block Game Install" msgstr "" @@ -617,6 +623,9 @@ msgstr "Bölüm açılamadı" msgid "Failed updating" msgstr "" +msgid "Features" +msgstr "" + msgid "Feb" msgstr "Şub" @@ -777,9 +786,6 @@ msgstr "Nasıl Kapansın?" msgid "Import Categories" msgstr "" -msgid "Import categories" -msgstr "" - msgid "Import operation successfully completed." msgstr "" @@ -978,6 +984,9 @@ msgstr "" msgid "No WBFS or FAT/NTFS/EXT partition found" msgstr "" +msgid "No Wiinnertag.xml found in the config path. Do you want an example file created?" +msgstr "" + msgid "No cheats were selected" msgstr "Hile seçilmedi" @@ -1505,6 +1514,15 @@ msgstr "" msgid "Wiilight" msgstr "" +msgid "Wiinnertag" +msgstr "" + +msgid "Wiinnertag Path" +msgstr "" + +msgid "Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?" +msgstr "" + msgid "Wrong Password" msgstr "Yanlış Parola" diff --git a/Themes/Default.them b/Themes/Default.them index 3cf85f9f..1b0c6993 100644 --- a/Themes/Default.them +++ b/Themes/Default.them @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: USB Loader GX\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-14 16:37+0200\n" +"POT-Creation-Date: 2011-06-14 20:50+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" @@ -481,6 +481,18 @@ msgstr "" msgid "1 - show game count: 1 for on and 0 for off" msgstr "" +msgid "center - category switch prompt align hor" +msgstr "" + +msgid "middle - category switch prompt align ver" +msgstr "" + +msgid "0 - category switch prompt pos x" +msgstr "" + +msgid "0 - category switch prompt pos y" +msgstr "" + msgid "r=55 g=190 b=237 a=255 - game id text color" msgstr "" @@ -634,6 +646,18 @@ msgstr "" msgid "r=30 g=30 b=240 a=255 - game window details button over text color" msgstr "" +msgid "center - category game prompt align hor" +msgstr "" + +msgid "middle - category game prompt align ver" +msgstr "" + +msgid "0 - category game prompt pos x" +msgstr "" + +msgid "0 - category game prompt pos y" +msgstr "" + msgid "center - settings option browser align hor" msgstr "" diff --git a/data/images/categoryPrompt.png b/data/images/categoryPrompt.png index 8066e1340e96653644d3be1374bab168105cfdf6..342507279573c64a72ca6892b31dc0df179491b9 100644 GIT binary patch delta 2292 zcmY*aZB!Fy8hvMyNwO)BsE`ndFeHdnkVR=l5X;EXV6CmmDa5QT5GcCTqXdC!K{S(? zRhLiO;MtyqqL6|VQw;~dU{R79@nb<(0nG|35flXk5s}ZpPAG}&`*+^=&VBBEp8HgY zrbNfs^gn;SF`HEF&zvbe(IPPTx*{5>b1u9Z zv~75TkKD89bh@*~BtSz25{6SGa@{gI7{~DO@ga%DVzYc^+EQMX7HNOR1AIPzkmtdm$a0W8#Tm%<&LMy=DmFi=~_kx+b_!E2-xNH z{=#M_21BmgvK9m8s?MJjl#G-;dt5ed+O+NU@Nf|9x90HO@j6i;eU>x{!7r~qJouzx zMm{~2(J?tX$l0outXRV1J#`5f0TB6Y=k)Z3+)rS~6{L3$?-{RMd$nDjnCP03ks<1S z&p(qSjO@E}B0RULsp$%Og@w+1cX#)z z#P!JiGOKDzf(^wP&rCs4AD>2=_8;EzsWCIjIEhCLR{u(+q2D9azxe-Y;3fy&zw1Jo zysRuND=VwBq&;bH_aCnX28>|vLDWq}Xe^J%^Ct?rm@)pQe6esRe-%-NQPoI|F1U^5 z-HV8bkX{w|U9<^s2*G>HpESsW2$2+-sdW9V+p_UD&$Omin9NK?uEVW2ZW#=v^#0l* zT}@4aI9Vf=&oN#MetYrP`1p8mKia>eqeGyt`;1f+iUZ}=6b$)VPygJZQc`l{$PuK~ zk^6`>C%8r$2n#Lb-lIdq!=FL5jiy#${m)XzDnxO-$YEp4TqhBlNT4Luf`>U>@jG^` zimgsS*mZ8R;PTCzH}AwYgccVUXQ7{KPW#w=a1etk4c1P%R9pLB{O6U+(YS>%ju#`MNfND8q`Npc>M*kQFWBu@CrXWfvq) z8FP|)%nrz`)h^QbcqlLIO<4|!sGZ?-PL%KX(YMq!PTS{0Jv>Cp3rjuuZ^(Kl`JC9@ z2EcWODyI_!Y%&dftEsckp0bn{$jVm_Iq??1c2VngL#P|4z*YcqXaTe8G=P)NQEN*1 zK9E|-*RqYurtz7XaLPPtd^Bo{dM)P>@%@1Mx;M)$hUi|&{uGT%yUmzVCjut@XlhNV zmjLp;ividm)0=&T*x_L9UH_z`MEa7a+L;}`tRHs z;&+}NC@UQ@xpb<|z@D~J>6C@cs#7-FREQo?d)M8vYVfZ6<(dbqYKrkOdU(h#Y$9|e-&L((%hghT zu~i)?#*&vmpX+l}s(-gvhD-qXB@4-EiqRF+-eE%{O+7;cSq;t~(qZ4zA;3z-wzt9G-mz z9*Ua?vFCvANr$QN;U2bbU_uq(#Kd0jhOwJ>u-=w%)b){veF%Ml@BpH{a1egUc#&$& zhhJXsk4?~`Xdd#4#6+X(ZSH#u7LO6J=$W+C5g|sko=Vl42JmIUOfVGbcgY?ji$UM= z|1g&%bq{goxIIve4HFr+E^SZQ+wY#*tPx?MW0uL$aFi0A?CN5z;?FBHfYx+odTgkx z?QC3w{6&vFoi+G+z0pV>xO{+E7%fCfF-U)VTy~n+3*GdAwZf~5q{yg)DMxd{&u$XD z5UNy?nkx@jCPr51(k}3MJouX;_gS?XaJMVK@8YE1ZHTH9BuaPesL;$?B)@|T0&=UI zL%P59qM~Wo)JjZVz48MFW5$!kdgp0+);{{O!Ws;sY0MokaxYF{yy~J)hr8r*fPo+|WDu1-M8=XP|-_>DhvbZZ*M2LPF zOca@OUOq~J0i+TcppP4%ou=t`ufC%0-Me=I3ig>XN`5l1_puN})mH0tcxJN0;N#1a zQ-rL|`o|sdU-v@r(FI?XpHF?ZDdXh2m-Y4a)q46D6qB0d9u~UP-iRouR3pEi9P#q} zBx{V(uUbB7ncOFnuU}8T?Lin5|F#oD!@{P_Rney_z`t<+hJ%)D^YiD=;djqXijRAe z9BoMW07%dF)nV^BznLcL!eyM4hLGp7~v4d+yzlmz^z@edLb-(H@B^+&bIK*Vp&Q zhQ`K|v9YlnR4SEnW@nw8l)QP=@+fZ!c%mmg4Q_31y^GFH=S+?CK1da=tm5wbK{S{F zS;8S?B1K?|(5uM9)m7~2<@E?}X=xdG(Zu|z_6xf_BElRR+ye3Ufni(QBZjdz7kxDG zqgLbn;})k6AKA@>k&ZJS5e9>y{6jQ2*jMCVrN38Y;?Kecam!PM7v$&XZ{4@=(&Wt4 z#9o4G$m3h?2Xb#*o3@B2wgN=kj- z!;6(icGF>`na%Tzbn|m}zfRLwHQA_LLOthFqVqk=vcW>wMMXu9($v(VRH@WjmVA-1 zDH%YPcX}|I6k~sFDG*d`fj4B;$V#^<=HxL4li~)R?!uohvj_|f?B_4Fjr$CcsQ2Uw zNbDs%>0#5p(cD(+z2H#94}kl5tVpzOe}$O5wuXxVd5i=_PJfLA*Ay2QZ{bIjraw2y zk2s(%MLH=2lnzX}K7#)#_mB+&Tw)}j#l^*~Mp{YSE4*7h=Itqaaaqnmq2Xl)&wT!4Fbg$i&TanWw%LGmEO6M8a@!yD-nY8}|LO?zvsz4#){G!nD4tr*kFE$WiwNkUNIeA#5 zKN&_!{i{uq-L@2deF{>zIJYYB6(4g{p7@t<7g^vySJP;GEF`^B#CL$48suw0EvZ-+ z-LnW8Aq9=u5t+voS8WZnpnD^BGk1T~(|1+Av#+4=sF}U*4YXGi-=PcUWKI5G4q&ee zq3wz!8^dB=9oV~T-TL+7LaRBl%x!a_k0dt`^xjrr&I#ODM*r)Cr2oh6P999J!3hqc zMiyfem^Pa*g+K~E3@ex`?d?`$fIFx)cla*&G}Kzba_%Ci>{N8K>?uz3#3>-I584Yj zdh-0dOidBd>ywgN&G8WywkF&1)+TLP{qH*{dw$FK=7PCRU*U763%$AB*8ejh;O1cno+jEg`yN?TJC_~zH>rt`w@q$G)Fo0)u zH@HFr(s--oQWX?`cvdbb*)$KGJ zC~dn{J!+g~HmsGkUhhu?(5dg6Upi~VwWBYZ&ixx{{Lfzq%SIO@hqwyGVp4J|r;a$% z*H#kPBnwK=Jq4C zLm|5>o?+!5YW;EGci88w z`&PimG~+!&;pAvv4boDQpC56V_#dEkWZ8nz(5ClH!>Y5zUaL#+@S#UUcke*ypP!W# zc5aFk4%-Z0JBfk&2eevT9epznqueAFT|lPKg)^K@eniWLRFf5V2$EUwavGhU{!!j4 s47jT0=24)X;R0g5qumsGTTgo&^n9nfpLS=$9S~1g@Xil!2MOi>1#AGXKmY&$ diff --git a/data/images/one.png b/data/images/one.png new file mode 100644 index 0000000000000000000000000000000000000000..55f0920f289d90d16aa0b17fd38c1b368db0fab1 GIT binary patch literal 1773 zcmVz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ?V@X6oRCwBA{Qv(y!$1On0AgYoU;q$6ETkwlFf}z~ zU}Oqs_|K@r$i%3@$jB(c$jI;mNPlNyWV{6wJN%!CY2T@X2M-ZzCO`l&5)%c6=H^k1 z{~3!J7#WR#mNBrhvNDK^i7`k>NC1Tx7+$@4&G7oo8-~As|1f~$f%qZ=15@`=2ixWU z>+ApFGaDd)@H)W2++2-`k$F1MKqnp^ZU$RxYX(Jmc?KaNAqFNUMv!)}13&;|%=`E6 z86G`;%y8n=DTeRgzk?idi22{&*xkE#Kf+}PKmg%%fU%8@Ez^I7EkNJ$85tNbn3|X{ zu(Pp&>;&6~H9nb{!Lq-9|7JLU@gl>OD_0o){`>aXk9%a%RZ^Z*19RtK2b+PW|? zGHnzQ5#e%oabe))<$)-Md6$9V&#jv`;pqothPsBve->sIMvwy;p=!T={mO9g&>@ER zA3l5o3VCeVu;DPeT>t@u;Q(7(Te*MCEEl=CxdlAj+!(mHI2mB3!srM0?=uwU=ffQZ z!kt}R3>sQmkN{$2gwsEM{9rh6=pe(-A3r`ZGP9VjTe0F6vV8yngpvyw8ylHy+1M9z zvatz(;+vV7iQ(tZpKzap=$9{EFccLOFaSdb>~pvr6BEO)Uq6x31%w8fVQyx|aPrhC zzQ2F}P6tXjBijiOKq%#a-LYelEG*1+Mur9q?Cfk{%YXg)#qbk|LG+^s55PVLS&kMZ z41a*}{_7`1-LGH28Gb|cfW+8=xkgu82b4yfBI9GCknIErAe0bbWnw7>#WxQ(57=^$ z7nq=yyngkHp{A;eL0DKA#piGb{Qb-D>-R56l)$14i4Dp{{Cs>2-@bn<1}a|$(+3bh z@DOnK_O@eTVbT{969pUe>o>#~Am2ZG`V?$AEZDIn+&_Q*fK&f(pk4@uvj4!?zZrx@ zgc(>^Sd3CKQw(AH00Ic^02VejCpI=#240{`!5Trq2Q>@?K$ide2PsqXfN207eE3K0p8=Ie>)|lxWZ`!v_BS!w(SruW`Ow`(gFhc25TY&h5#!wD>yem+5@Q308az|{&yqm z0|+3L+OV&?Zy6H{^FB~sWr1O!FIa(?3B+at`GAE1RAQn7kQgf)L@n6&K=mL;p(N`6 z42Qmd|FaxfA3y+MG)Sr%tJIkOF`fo$z@pm+xPkDG^=;pvm7U`s$4RJzH@$ufNY z@(EuC_`vXwS--rz9Ho5-5I|U)WOdDTw#@CURr(vhMP}mY2{&T_5cJB-e!4cXQvzk4(RCK@{+1$gi1z$0AeJibK2S4YWM#yqZ80#TcDL{pu`Wv967?hq^p_m1U24Q9-%ml^A1p>&Re^C4v3IBoO-$?XtpuON! z3J^dnP>UI%27>r(NS3og`RJG(NuCjE5y;?QSnzK&hk_jmvJ&J7fB*vkxDq+AsqM=r P00000NkvXXu0mjfgT4Xg literal 0 HcmV?d00001 diff --git a/data/images/rename.png b/data/images/rename.png deleted file mode 100644 index 5f089f5847d1ab3622a7f31a7e6fd1fc622c0967..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 496 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy%*9TgAsieWw;%dH0CG7CJR*yM zqGce=SbMeU3{X(A#5JNMI6tkVJh3R1p}f3YFEcN@I61K(RWH9NefB#WDWIYi0X`wF z|Ns97GU*07J3HIKASorGq^!8Ax}u|_qi;g*lxdS^%$RZP*s|8v&0)nDql2X#L@`@^|YU-NWI=Y6& zW|lT~PA+bq@hKPG);9+N^|X1qIEGZ*dOOLG?~nrzOa9yLfJ4>|P5P!D>t zLoH%iH1n=)d2(iHd+OLYnzzghB diff --git a/gui.pnproj b/gui.pnproj index 11852976..0215da41 100644 --- a/gui.pnproj +++ b/gui.pnproj @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/source/GUI/gui_checkboxbrowser.cpp b/source/GUI/gui_checkboxbrowser.cpp index 2ef44ddb..eb703483 100644 --- a/source/GUI/gui_checkboxbrowser.cpp +++ b/source/GUI/gui_checkboxbrowser.cpp @@ -67,6 +67,9 @@ void GuiCheckboxBrowser::SetImage(GuiImage *Img) void GuiCheckboxBrowser::Clear() { LOCK(this); + checkBoxDrawn.clear(); + textLineDrawn.clear(); + for(u32 i = 0; i < checkBoxList.size(); ++i) { delete textLineList[i]; @@ -122,6 +125,7 @@ void GuiCheckboxBrowser::OnCheckboxClick(GuiButton *sender, int chan, const POIN void GuiCheckboxBrowser::onListChange(int SelItem, int SelInd) { + LOCK(this); selectedItem = SelItem; pageIndex = SelInd; RefreshList(); @@ -130,6 +134,14 @@ void GuiCheckboxBrowser::onListChange(int SelItem, int SelInd) void GuiCheckboxBrowser::RefreshList() { LOCK(this); + while(pageIndex+checkBoxDrawn.size() > checkBoxList.size()) + --pageIndex; + + if(checkBoxDrawn.size() == 0) + selectedItem = 0; + else if(selectedItem >= (int) checkBoxDrawn.size()) + selectedItem = checkBoxDrawn.size()-1; + for(u32 i = 0; i < checkBoxDrawn.size(); i++) { checkBoxDrawn[i] = checkBoxList[pageIndex+i]; @@ -138,16 +150,16 @@ void GuiCheckboxBrowser::RefreshList() textLineDrawn[i] = textLineList[pageIndex+i]; textLineDrawn[i]->SetPosition(25, 15+i*(checkBoxDrawn[i]->GetHeight()+6)+(checkBoxDrawn[i]->GetHeight()-textLineDrawn[i]->GetFontSize())/2+2); } + scrollBar.SetSelectedItem(selectedItem); + scrollBar.SetSelectedIndex(pageIndex); } void GuiCheckboxBrowser::Draw() { + LOCK(this); if(backgroundImg) backgroundImg->Draw(); - if(checkBoxList.size() >= (u32) maxSize) - scrollBar.Draw(); - for(u32 i = 0; i < checkBoxDrawn.size(); ++i) { textLineDrawn[i]->Draw(); @@ -155,6 +167,9 @@ void GuiCheckboxBrowser::Draw() } markImg->Draw(); + + if(checkBoxList.size() >= (u32) maxSize) + scrollBar.Draw(); } void GuiCheckboxBrowser::Update(GuiTrigger *t) @@ -162,6 +177,7 @@ void GuiCheckboxBrowser::Update(GuiTrigger *t) if(state == STATE_DISABLED || !t) return; + LOCK(this); if(checkBoxList.size() >= maxSize) scrollBar.Update(t); @@ -179,7 +195,6 @@ void GuiCheckboxBrowser::Update(GuiTrigger *t) else if(i == (u32) selectedItem && checkBoxDrawn[i]->GetState() == STATE_DEFAULT) checkBoxDrawn[selectedItem]->SetState(STATE_SELECTED, -1); - checkBoxDrawn[i]->Update(t); if(checkBoxDrawn[i]->GetState() == STATE_SELECTED) diff --git a/source/GUI/gui_checkboxbrowser.hpp b/source/GUI/gui_checkboxbrowser.hpp index 1d3ad55d..028d7c9d 100644 --- a/source/GUI/gui_checkboxbrowser.hpp +++ b/source/GUI/gui_checkboxbrowser.hpp @@ -51,6 +51,8 @@ class GuiCheckboxBrowser : public GuiElement, public sigslot::has_slots<> int selectedItem; int pageIndex; int pressedChan; + bool blocked; + GuiScrollbar scrollBar; GuiTrigger trigA; GuiImage *backgroundImg; diff --git a/source/libs/libfat/libcustomfat.a b/source/libs/libfat/libcustomfat.a index 99806871cd1af081c62cdbb216b3aabaf57bd429..6fbae4b8006d711ebe27bf13f4df4e13570707ff 100644 GIT binary patch delta 23060 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 ckTbrJG=oG#F__WT;J delta 21402 zcmbt+4SZC^x%bT3-LMG@*~kJLvLqW4Ng#m)h_Yd0*eGfs5rQU!B9=`74K-@6r0ub8 z_H0Pn8XP$Y!=9!si=49YAbLcPTmPBQ4{`I-nUw3_euG@`2T+zR7_ni6jJZiDq zAIBKGnXxhJ{`uQ|jIsauRw4jDFf$fB{LkM%t6}Wx?l(h>y;XYk`_r5I8T(Yf|BmMs zZtf^!UvrCwU6Z=*=a6cdlDIV{zIDksK6d<~n^!Ep>E<;{i*CD_ z<>UxHW|o*W#uKXx-*dgVf6QblZ=QHZ$&%uo;=q`jxV>u-W!x_8acl5f8+Vt&nN_4R znSS zi*hK5*(-OT?Akxd0sj;S>TqRfaQWj&%m!R5l~u1fly~2ED91jRl_x)z)%T0ulmibZ zJ!JE33hxPVmhJH~*4i_JXIu3gS92m@vpU6T<_bKKCbw{w9vCy%krk4dILe%2k1ek_ z5KMX~w3}H&N0}{jn%Rqf7VZfpGp3vYWkF^SbY_;7KUJI^cxkR9@S#@@tevY;=mC{& z$;^g^Ihsrt`)w1&)bV4ouhbe?brBFz*$8SpsmvX)ntm>NY+2VG3z--TH8Q*M!A1Ei z%{6Jw>9sl4R%>RCo23*%_*D>o1IXUQwg=vsN5Ux%ZAL4bA@C*$ya@tt8YS>p2z)2X zZhli%9)80S2u&LiI`EW^7It7m(nHGHcVx(V?+6#v_WAK{5;w8M#lZOV;(%59`S#Rs zADKa*U6putl*HYTO?qJ1E0d`N-kT?j-OL5qWCMw+!A2@4xwMZ>T(T!iZh>M*-K3yE zebPfv&auXN#ylZNtR513IJ3;tDY43jp`f*IJCutTR8G`)O&`e0OP@nw7sN8#q%j8S znz2q>RwLshv}VTV785}rr3s0XRhTQh3nk14_r2F#EB>5N zh?MJ^H2nIm`8Tz6Eq?PRZBXYJJWv-Uf%&qE6QG2`-J>G>L?^b(! z3XG}&UO@Sp9-o39&)7t6G&!ZT%>l2|rOcswO#Y?t}qISddm~rup zNwK0cFimne#kr&mOEqfLh=IVyu18%?uGp`^fQ;IAXc!o?Yl&5Qem~yFA}#CrcI3w* z{ZlaqUsfoDkWmiB@BX7DtuImbr6t=jMt(D>I~`!LIG8Uh|x@7~AZ+gK@#* zIs(7XlHoS24QY(!gqR6l*S0s7N&78~6?MRz?9-?6pqM?~t8~I9Q`j{$PCctI+vabx zsm;kOd2^7tDwgxzFt2{Ya4k8F`i$Y)`pn_ld^cm|AKf;*bs<|+ALn-j z{_9%~w3l09I}|KCcW|6N@bS`Gy!35-f)$9KSchoJ$l|qPf5t|1+w{yeiT<1p7Vm|8 zyzi<$sy63wl43X{_GFeMcG6qronK&FWqAZq`S4poxZXBlpOFMfXU|CCt3~OInNrv+ zWbLtM#zo#KI%iIv*thkxbZUX04Q}JoiTr+cep{;4+jV?q3b&kSz$-D3mBM?4Jv+y8 zfEQNR z^Ambo&`L{#bgE^y)K?O|x#te6trzmZPTqfuQ(F?j6c$(}As+;lV}QeI1x1 znczve)D)_cnn;?B4b0{(V(!M>FghhkZo#AtAYpT?YdyC+vvYcHk-ZPa% zXYnhWF+^k1Qy!C%w zcE<9&x&B>D;lLpBAg;mBb!od7_Qwib3(rJnvKxGj#(S zNAnZv899%#FrHTAQC-C3W$@Eov-37eGtgju0p_8YN?{->#t5oDiCRw&#tOz*N%+E+ zP`7yP`mDKl3)y5g1X()BL$_F2rq$#l(A1?+BTsn|v)D5iyE5jl;8RaaO(;86`SZ*? z%oH$77(CH7mPtEGps3SbJ3aqxpLA5}^d19KyQOx_fMju6+5;5giN%wocRm-tUA%1? z5PF~$^m=u!l+`GO1A!#D=ty{bK?oCBK;OG0DBEEFFQ09`um-(zp3K((rfu~A(!5yoG5h1hrcri6t%H zE5UvW%Y%uW2!8&&tX%g;dBrW7h_ZePvrw_dI8>~^Hn192vD2Yo=I80x2K$_yq&Qn? z&JOh0RpD?^_t2}sl|l~w;Bh(lyV+06n3*+093K{SnD+$V?vjZRuT!E-q>`x{n zzK-D&LcXnNTnA$}xEafz0nv7dmv5UFi+9f$ z+c+yg`8nio$YG#kC-3ofn9e@lzzT6M#Jf)k9Cri3N92b!(E2* zp-2U35M|48-;VO(2)tTef$|ldB*_turE{WXS?Y3C^}I(_{lU?yKjaARd0MW7sYIzi z-n)vl$=l~Y91cVJfAKX)18~|@c5HW{h%38RDXVb5P)L%8w7sC`Bci9Md$_bb_Ju-2 z19-1$py<$Wv0h#X*iTWuP=`0leJCG5c@fbc1%D&TKSTLVm%}UUR=hZm7saD0EJpbk zC|`1U1y+LcL6nz{g1-&r7f`-*6#O!j523tl6#R0O5AR4zWw(#2P(jj1g%w5xQMUZr zL`c7A*Kl#@2y>Q%hs(9+g|nfl;{PsB98=bC1N`4q@#%7>GMt;$X7p6P@@nd$MRv5h zFbbVh9_vMqn@sklr9>i%M%7w_~j$*N3zQC1!8+&{t}4sW>(US%LA-5`2Fr^=yU?73qW zPZn?7kvX09sm9a6dV?=^$pH)>?!zV){LAy|@DZrR^0@Qw1HxT?kEt|}EFLLO$)KSl z{g2x4(%8%b-vgH&<`W~0_^FY>JTX{4b&5K^vDq{fEudxI_tfQfE{$0^6&X{^og_Ob zfCVQ1=^4m+rRMW_nW(LpC}Dv5*9!NB8mxWify~)O9abmOb0N?eEkC9Q`8mj2^!$G0 zbCEae`A+0>kT>c17UX9mFX{OZ^0V}Gt+2277DcIoXE1OfqD5rWkO<{3B2T33>|~1X zO&OEIJtg7K_h^PO)K7JyMN-re(@Z+jl>Wt;1wD*!PQ@_V17`c-88;IzmKr>P+p>;m zz&pNUA;u*DaE%~KDV_wd2$g38Kq526dr3!-ts_VWf*iaz0fB_~ICvc<4pIFI(=#<`B>3G7-`0NoeQs*D~P+M7QU zntNH*+}PCbva!K`%yp>DZ!rD5Xcyn#7K>@g62>t#;mwm_I`9cPjy;&=oq_LICysw> zlf*ruY}NG=w~6Le$;yR;SG3peFWb=tLu7*`;V=5gHVKaGnS|y$a&90ZurK{3;dA}L zlbalXheNw`A}U=FJoyW~e7G3>hNtah*5C)adl2jInq9Rr-_LkG_<;K<^@bP+*ceRB z4nQtE5KHA3>LM@~IwR%7$0Fs!1CjDiqF_E*EzaMSsUX%Xd(n3gJM*`2(-zTywFayS zOMqhBrMSy*m*ZZEdo|W8)gskYBdSbw#J9MF03c+5r_F;YG@f=(CmV~W1Gf{i7C*r? zRI&2LZmdlEnH@_EhVsnH|6>-9e|s8MCEeeip}4T1h<}u0sT8J(2&>inKiiwNOI!B9 z9(%Er$o3r3CpnQ-k3(7aj$HYds7a3IUdY8wfWEEdT9CFP{UK)ghp8>70 zLYD1qhc9YZ{ZcK~WQ^p3mw|>tV-16`LVNEZ;^@7%Q-$%118c6E*G+SP@FJ><C4|KWwKQl{9heXf1W!xd`>zDB@!oNO?pAuWvPm5W0 zf-wZr53EnKc6WwlHDfVNBKz(%o+--io*pwE)Wmv300k>W=iM1t z(%N61B;LI{0gLPbuUj0%uS4|TGd(8b3}cSf!d9Jz zew$mJVez5aPO-XrnpAN@gsP`Yh5ceLJI`lc?hP4yJfdQg#J4vj@Hq&I zWmvEeB|S?qvGK()Lel_v$-tc~dIM8pN;C2HM62J*m9Bfg`!QGeDJ|s1Da@r_cJ-HE ztL3CjEd<7WTHXku@w-OlA0Cx&(eg1(TF8t)tL0-oT8NDQyP8)ZXcSCK zQO?j4GL0DBtBlPs;P*tzIm%}mFeo=-dZwlbjCnuoR);a4(%_*Br~zae4a6WgXdoH` zAfp0vGnQ>M0MpGehybBRIY&>))ypM0D!n}dBMl)stHYR_Y&@HzXUyPWu6X^yw8VLO ziKQkIr?iC7q!_y~r^;xU9giXck{clc);>anFDeb<3>XvaVuXlN7NMbyXn1^M8lNYA zzwy>80}mUB)Fmw$>nFBl05YA+5+fm6XiX^9Kklf-ZCIhFXY{4aa z<6X>L41XC)#5xCaF|1W{L)eimpJW+U`b!>D!i!HTVOD0qRE7@)8}1%X|@F-JiZ;=s^ka4!xZcYjO8aA>REdILPWaRDo3CRT%)q5 z6SJ|q-;urVYL&A(hzO2o3d_!NVM@Oc??Z#WqFvzw6yCgSCXRh;!1;*5d^e`funbzp zU~SY%^)X9Rnlvu>qAPJ>P#<_o=jIhH@Cy;sCOF52x2*-@#-_JjBr-<`>e~eM(8kIp zs1I8W_C~0$5$bA$iW{M_Mp7@-)(EwEQWYt8Ddx-SnTn~*NumK&Ru4AR(Ew|~yx^N7 z)o@~CgLxU$*Bve==2R)Q;}An=kW{>#7*~|W4`_uK%1?v-Af`Yp)PP`BpmT{Te$pLr zk7XuPz`fF^NdQDrWMPs)BoVDgU3&GWIj|0Pb=krwO!01YC5afko7!86712JeLU=m? zlMcy3Yy1P)l0%@2j1bd!7^D3w`aLpyDuQshm$)PygP6Ro=KsCX%yY%i(+d-A&1P1j zS+>NGUaY0D0aU(k{TVH5; zjARsGYJX`dXNQ7#=fYN*(+h>6>2>;ZwK(z1G%P3we_1lMk4Pgpysv}YV!i%wxWz^A zmkta6GbLOW`<}^4lsAT$sb~{F2nw7#uE{g}(ZB>q06;}cj|ox09^vbn zoal~%mZG4oqPA-?9}vx5-%P{0b@lO@(z0Ml(_zQzsA+;|vAw|1GzvL54MWx|UxTv0i#Y<;^-dqv9uw-Wr~ zkm~J&uV^umoK^t7`_ydkBiDH}?la7;PUf@%g z&BZ!WU;Yi~*wm>PqEm;Kz^~%W7)F!eOK{FFYn@r^Us69rbe#nV7)gQ}P<9~Z(=KHf zviR@Ekx6)znMM&rfcVGVx2ZMkm~ zvnf9f0i4UURRtfu5~zGiXfIIl(%_M&)!j|v6`iD*!c4*MKQ1eO`dnU7cSxb*S9)`c zG~W0i8l*T;&2Q59e$n!qH(NB zN|dYVQv*1=SdU7YHdGv-1-sX+n%wpk-#-*25vyZh_oV-Vz6)0~(i3x+{d^1LyHK&X?zeSDMyblGm z-h}uB?ey#u=ME~di_}^2kbG{S76u zubrJItEyaVp%ViR8b&BUA7H&@x=XZ+^S^uXTgPA?A;Jx6dz7b5k2S1ecJ!2Nv|y_* zStZxs%knDjeJiLueYQ+FQcS)7oFcy?6Lr4s;TA}XDWP75bQ98c)uD9{%fkMAM&cQ~ByQysvokV$iWh)t){W;m7U59~~PXxna9N+I@b zM_F0mB#zxxv2}sx#ZR8kQ5tZrZ8xjI=5Z||UUgd=Sa#8-nC9jwhBRXWNb5sMOl{)@ zNLFF1H-+_C7`jmX^_atiiZS1iiuH+9Y2(|FEJkMZi(b@Mx37F1(xQe1IAeu6*c}Ia zOs-Nt<2gs;PG%2o#=U*Foy?|j3UdUvvtFeg-sEj&L#NLKtCN&Je=fHmL_t=X)+b^6 zb-#LuH27|pOcN$}8Jia8wRosZHNgO!#|Ai$4kD0QE8jd6q#i*7F8a5EUTN;xgcBgt z`KjaQ_anyF(S~wqP>an=1G6FHqHR+7rZwnl+xp=wOp8>4wtb)yq;z43`4`OIKv?A| z>cx^vuj|MX05M-158{9;T_E+E>*nfQ80ROR)ZN6?t&A zP!Shx!|vS3Y4pT8{LQKIaIrf=D9AZv#h+-#B#X-YreQdE@JW{jluu(wsAh@k&Xw0=Bgh{xj zEw`>IC)`3m(u_0(VIbOwJozFV-6e$Ng97#9hcBim@HQIt=3-#+DZ9uZ%mrSMNHyUq zwy1|Kkf)lO$1*KaVO5W1^0fRAr#9YZ4m{1cok+WIyK&p$9tKH*Bt3MQT!G^&%5w`Q?WU9yv5k>LPoE;&G>(aY^2 z+)nmDaEA34ZM)>xY{8VdY0ZdHlB1lYL>VO{34INng3&VNnUAr@hJ8-IwV?h_MH^+M zgZW4-TaUu){duEI5~+VdFdv(b}^>K{c(7;TEOy zV>y2=EmMkVyvc4@i1V7);A~d{?x`j@xN(W2ejeuAYEKNy)Fd>slAZ*EbSVtd3Kziw z$&y3B3y@oZVcKAnb{MDCcVy@Q87X+$r`nY<$SI8>7Py}_5!rEFJIAtqqH3j=w4(e( zT@M{2>63QQ*sH1lyD$3maaR879O8ZS(C6jgdW_GPbx`ghg@Ew{MjFB1#E_1}j@ivb zb*34EeOy{epbO%pl8Q(*9jq>uhd;xRxWCMIMPS@#tb0Ry+xdVWtudrNjP84 zumoU2PO<1!6!eK|6u_sO&)|UXG%3d{4x&Itm0ocM5IF&1{X>QYy0n&wvjovAR{mkS zl+uPx2t1yrW4Thw>!SA$M9Cn^X848swI}$>uAbN4nE=`#@+ zlY_A-I=m^bYoK=mA7_n(p%CM-zww`my^#`gIpm~QFxRw}<@3qPzNn%TQR#D$w8b1r zGsFN>4H`ka%SdmJM8`PvW6&k}BIVMtNZRDq>Y@u^g9plR7>t0Rk@SE#@MezUkD%jw zqSCKMAfQERiQ%gkdW>*BM8HkJ% z$`+Ixd|QCX(50n6QXT_V4fvS0h>l}=BJeSQH`Fx7#+Hx7_QybfhT)7k6G3W)){Vxj z;8Lr6cU9fp8*0|Cx%%Bxf&Z8Sv0;$-Hbg}4vJ8>k|sS$Nu-t~FnlrmGY9T&y#R3^}g z2~OSw?o1AGmMwbUo0^3K%9Ss@5X4N%T>0|2Av(cI9~^l4nFR6jP!(8d41eJ}5?tgctt2V@VN)x!mvC_(2;I19q9g!SZ17nByU0+;IJJ>o!Y>DyjT|0Fp0ha#= zl&@uGno$zvA#KpyZrr2 zB;`^+g3=BIr_&L1w$t}ZjZb2VbXsx|mrB!F9|G7m1f!kcGS}OKC;?z;(;HDw8%0AA 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 CategorySwitchPrompt promptMenu; - promptMenu.SetAlignment(ALIGN_CENTER, ALIGN_MIDDLE); + promptMenu.SetAlignment(thAlign("center - category switch prompt align hor"), thAlign("middle - category switch prompt align ver")); + promptMenu.SetPosition(thInt("0 - category switch prompt pos x"), thInt("0 - category switch prompt pos y")); promptMenu.SetEffect(EFFECT_FADE, 20); mainWindow->Append(&promptMenu); diff --git a/source/network/Wiinnertag.cpp b/source/network/Wiinnertag.cpp new file mode 100644 index 00000000..15225085 --- /dev/null +++ b/source/network/Wiinnertag.cpp @@ -0,0 +1,135 @@ +/*************************************************************************** + * 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 "Wiinnertag.h" +#include "FileOperations/fileops.h" +#include "settings/CSettings.h" +#include "network/networkops.h" +#include "utils/StringTools.h" +#include "gecko.h" + +Wiinnertag::Wiinnertag(const string &filepath) +{ + ReadXML(filepath); +} + +bool Wiinnertag::ReadXML(const string &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(!xmlfile) + { + free(buffer); + return false; + } + + mxml_node_t *node = mxmlFindElement(xmlfile, xmlfile, "Tag", NULL, NULL, MXML_DESCEND_FIRST); + + while(node != NULL) + { + const char * URL = mxmlElementGetAttr(node, "URL"); + const char * Key = mxmlElementGetAttr(node, "Key"); + + if(URL && Key) + { + int size = tagList.size(); + tagList.resize(size+1); + tagList[size].first = URL; + tagList[size].second = Key; + } + + node = mxmlFindElement(node, xmlfile, "Tag", NULL, NULL, MXML_DESCEND); + } + + mxmlDelete(xmlfile); + free(buffer); + + return true; +} + +bool Wiinnertag::Send(const char *gameID) +{ + if(!IsNetworkInit()) + return false; + + char sendURL[1024]; + + for(u32 i = 0; i < tagList.size(); ++i) + { + strcpy(sendURL, tagList[i].first.c_str()); + + replaceString(sendURL, "{ID6}", gameID); + replaceString(sendURL, "{KEY}", tagList[i].second.c_str()); + + download_request(sendURL); + CloseConnection(); + } + + return true; +} + +bool Wiinnertag::TagGame(const char *gameID) +{ + Wiinnertag Tag(Settings.WiinnertagPath); + return Tag.Send(gameID); +} + +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, "Tag")) + return "\n"; + } + return (NULL); +} + +bool Wiinnertag::CreateExample(const string &filepath) +{ + FILE * f = fopen(filepath.c_str(), "wb"); + if(!f) + return false; + + mxml_node_t *xmlfile = mxmlNewXML("1.0"); + mxmlSetWrapMargin(0); + + mxml_node_t *node = mxmlNewElement(xmlfile, "Tag"); + mxmlElementSetAttr(node, "URL", "http://www.wiinnertag.com/wiinnertag_scripts/update_sign.php?key={KEY}&game_id={ID6}"); + mxmlElementSetAttr(node, "Key", "1234567890"); + + mxmlSaveFile(xmlfile, f, XMLSaveCallback); + fclose(f); + + mxmlDelete(xmlfile); + + return true; +} diff --git a/source/network/Wiinnertag.h b/source/network/Wiinnertag.h new file mode 100644 index 00000000..03ff5bed --- /dev/null +++ b/source/network/Wiinnertag.h @@ -0,0 +1,46 @@ +/*************************************************************************** + * 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 WIINNERTAG_H_ +#define WIINNERTAG_H_ + +#include +#include +#include +#include + +using namespace std; + +class Wiinnertag +{ + public: + static bool CreateExample(const string &filepath); + static bool TagGame(const char *gameID); + private: + Wiinnertag(const string &filepath); + bool Send(const char *gameID); + bool ReadXML(const string &filepath); + vector > tagList; +}; + +#endif diff --git a/source/prompts/CategoryPrompt.cpp b/source/prompts/CategoryPrompt.cpp index b356d498..89f3d775 100644 --- a/source/prompts/CategoryPrompt.cpp +++ b/source/prompts/CategoryPrompt.cpp @@ -38,13 +38,16 @@ CategoryPrompt::CategoryPrompt(const string &title) trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A); trigB.SetSimpleTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B); trigHome.SetButtonOnlyTrigger(-1, WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME, PAD_BUTTON_START); + trigPlus.SetButtonOnlyTrigger(-1, WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS, PAD_TRIGGER_R); + trigMinus.SetButtonOnlyTrigger(-1, WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS, PAD_TRIGGER_L); + trig1.SetButtonOnlyTrigger(-1, WPAD_BUTTON_1 | WPAD_CLASSIC_BUTTON_Y, PAD_TRIGGER_Z); btnOutline = Resources::GetImageData("button_dialogue_box.png"); bgImgData = Resources::GetImageData("categoryPrompt.png"); browserImgData = Resources::GetImageData("bg_options.png"); addImgData = Resources::GetImageData("add.png"); deleteImgData = Resources::GetImageData("remove.png"); - editImgData = Resources::GetImageData("rename.png"); + editImgData = Resources::GetImageData("one.png"); bgImg = new GuiImage(bgImgData); Append(bgImg); @@ -82,6 +85,7 @@ CategoryPrompt::CategoryPrompt(const string &title) addButton->SetSoundOver(btnSoundOver); addButton->SetSoundClick(btnSoundClick); addButton->SetTrigger(&trigA); + addButton->SetTrigger(&trigPlus); addButton->SetEffectGrow(); Append(addButton); @@ -99,6 +103,7 @@ CategoryPrompt::CategoryPrompt(const string &title) deleteButton->SetSoundOver(btnSoundOver); deleteButton->SetSoundClick(btnSoundClick); deleteButton->SetTrigger(&trigA); + deleteButton->SetTrigger(&trigMinus); deleteButton->SetEffectGrow(); Append(deleteButton); @@ -116,6 +121,7 @@ CategoryPrompt::CategoryPrompt(const string &title) editButton->SetSoundOver(btnSoundOver); editButton->SetSoundClick(btnSoundClick); editButton->SetTrigger(&trigA); + editButton->SetTrigger(&trig1); editButton->SetEffectGrow(); Append(editButton); @@ -200,6 +206,7 @@ int CategoryPrompt::Show() { gprintf("\thomeButton clicked\n"); WindowExitPrompt(); + mainWindow->SetState(STATE_DISABLED); SetState(STATE_DEFAULT); homeButton->ResetState(); } @@ -216,6 +223,7 @@ int CategoryPrompt::Show() 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" )); + mainWindow->SetState(STATE_DISABLED); SetState(STATE_DEFAULT); addButton->ResetState(); continue; @@ -227,11 +235,11 @@ int CategoryPrompt::Show() if(result) { GameCategories.CategoryList.AddCategory(entered); - GameCategories.CategoryList.findCategory(entered); browserRefresh(); markChanged(); } + mainWindow->SetState(STATE_DISABLED); SetState(STATE_DEFAULT); addButton->ResetState(); } @@ -241,6 +249,7 @@ int CategoryPrompt::Show() 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" )); + mainWindow->SetState(STATE_DISABLED); SetState(STATE_DEFAULT); deleteButton->ResetState(); continue; @@ -249,6 +258,7 @@ int CategoryPrompt::Show() if(browser->GetSelected() == 0) { WindowPrompt(tr("Error"), tr("You cannot delete this category."), tr("OK")); + mainWindow->SetState(STATE_DISABLED); SetState(STATE_DEFAULT); deleteButton->ResetState(); continue; @@ -263,12 +273,12 @@ int CategoryPrompt::Show() int categoryID = GameCategories.CategoryList.getCurrentID(); GameCategories.CategoryList.RemoveCategory(categoryID); GameCategories.RemoveCategory(categoryID); - GameCategories.CategoryList.goToFirst(); browserRefresh(); markChanged(); } + mainWindow->SetState(STATE_DISABLED); SetState(STATE_DEFAULT); deleteButton->ResetState(); } @@ -278,8 +288,8 @@ int CategoryPrompt::Show() 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" )); + mainWindow->SetState(STATE_DISABLED); SetState(STATE_DEFAULT); - editButton->ResetState(); continue; } @@ -294,11 +304,11 @@ int CategoryPrompt::Show() if(result) { GameCategories.CategoryList.SetCategory(GameCategories.CategoryList.getCurrentID(), entered); - GameCategories.CategoryList.goToFirst(); browserRefresh(); markChanged(); } + mainWindow->SetState(STATE_DISABLED); SetState(STATE_DEFAULT); editButton->ResetState(); } diff --git a/source/prompts/CategoryPrompt.hpp b/source/prompts/CategoryPrompt.hpp index 8201164c..7825305b 100644 --- a/source/prompts/CategoryPrompt.hpp +++ b/source/prompts/CategoryPrompt.hpp @@ -73,6 +73,9 @@ class CategoryPrompt : public GuiWindow, public sigslot::has_slots<> GuiTrigger trigA; GuiTrigger trigB; GuiTrigger trigHome; + GuiTrigger trigPlus; + GuiTrigger trigMinus; + GuiTrigger trig1; }; #endif diff --git a/source/prompts/CategorySelectPrompt.cpp b/source/prompts/CategorySelectPrompt.cpp index b1d0aabb..e45a40d7 100644 --- a/source/prompts/CategorySelectPrompt.cpp +++ b/source/prompts/CategorySelectPrompt.cpp @@ -67,6 +67,7 @@ void CategorySelectPrompt::onBrowserRefresh() while(GameCategories.CategoryList.goToNext()); GameCategories.CategoryList.goToFirst(); + browser->RefreshList(); } void CategorySelectPrompt::OnCheckboxClick(GuiCheckbox *checkBox, int index) diff --git a/source/prompts/CategorySwitchPrompt.cpp b/source/prompts/CategorySwitchPrompt.cpp index b3bc5f63..b5349a6e 100644 --- a/source/prompts/CategorySwitchPrompt.cpp +++ b/source/prompts/CategorySwitchPrompt.cpp @@ -64,6 +64,7 @@ void CategorySwitchPrompt::onBrowserRefresh() while(GameCategories.CategoryList.goToNext()); GameCategories.CategoryList.goToFirst(); + browser->RefreshList(); } void CategorySwitchPrompt::OnCheckboxClick(GuiCheckbox *checkBox, int index) diff --git a/source/prompts/GameWindow.cpp b/source/prompts/GameWindow.cpp index 91511d56..7d06d896 100644 --- a/source/prompts/GameWindow.cpp +++ b/source/prompts/GameWindow.cpp @@ -546,6 +546,11 @@ int GameWindow::MainLoop() gameSelected = (gameSelected + 1) % gameList.size(); ChangeGame(LEFT); } + else if(Settings.xflip == XFLIP_WTF) + { + gameSelected = (gameSelected - 1 + gameList.size()) % gameList.size(); + ChangeGame(RIGHT); + } else { gameSelected = (gameSelected + 1) % gameList.size(); @@ -567,6 +572,11 @@ int GameWindow::MainLoop() gameSelected = (gameSelected - 1 + gameList.size()) % gameList.size(); ChangeGame(RIGHT); } + else if(Settings.xflip == XFLIP_WTF) + { + gameSelected = (gameSelected + 1) % gameList.size(); + ChangeGame(LEFT); + } else { gameSelected = (gameSelected - 1 + gameList.size()) % gameList.size(); diff --git a/source/prompts/PromptWindows.cpp b/source/prompts/PromptWindows.cpp index 989d4f2f..c185fbb6 100644 --- a/source/prompts/PromptWindows.cpp +++ b/source/prompts/PromptWindows.cpp @@ -95,8 +95,6 @@ int OnScreenNumpad(char * var, u32 maxlen) numpad.Append(&okBtn); numpad.Append(&cancelBtn); - int oldState = mainWindow->GetState(); - HaltGui(); mainWindow->SetState(STATE_DISABLED); mainWindow->Append(&numpad); @@ -119,7 +117,7 @@ int OnScreenNumpad(char * var, u32 maxlen) HaltGui(); mainWindow->Remove(&numpad); - mainWindow->SetState(oldState); + mainWindow->SetState(STATE_DEFAULT); ResumeGui(); gprintf("\t%s", (save == 1 ? "saved" : "discarded")); return save; @@ -170,8 +168,6 @@ int OnScreenKeyboard(char * var, u32 maxlen, int min) keyboard.Append(&okBtn); keyboard.Append(&cancelBtn); - int oldState = mainWindow->GetState(); - HaltGui(); mainWindow->SetState(STATE_DISABLED); mainWindow->Append(&keyboard); @@ -194,7 +190,7 @@ int OnScreenKeyboard(char * var, u32 maxlen, int min) HaltGui(); mainWindow->Remove(&keyboard); - mainWindow->SetState(oldState); + mainWindow->SetState(STATE_DEFAULT); ResumeGui(); gprintf("\t%s", (save ? "saved" : "discarded")); return save; @@ -553,7 +549,6 @@ int WindowPrompt(const char *title, const char *msg, const char *btn1Label, cons if(btn4Label) Window->AddButton(btn4Label); - int oldState = mainWindow->GetState(); mainWindow->SetState(STATE_DISABLED); mainWindow->Append(Window); mainWindow->ChangeFocus(Window); @@ -579,7 +574,7 @@ int WindowPrompt(const char *title, const char *msg, const char *btn1Label, cons delete Window; - mainWindow->SetState(oldState); + mainWindow->SetState(STATE_DEFAULT); gprintf(" %i\n", choice); return choice; @@ -774,8 +769,6 @@ int WindowExitPrompt() promptWindow.Append(batteryBtn[2]); promptWindow.Append(batteryBtn[3]); - int oldState = mainWindow->GetState(); - HaltGui(); mainWindow->SetState(STATE_DISABLED); mainWindow->Append(&promptWindow); @@ -915,7 +908,7 @@ int WindowExitPrompt() homein->Stop(); delete homein; mainWindow->Remove(&promptWindow); - mainWindow->SetState(oldState); + mainWindow->SetState(STATE_DEFAULT); while (homeout->IsPlaying() > 0) usleep(100); homeout->Stop(); diff --git a/source/prompts/gameinfo.cpp b/source/prompts/gameinfo.cpp index daffcdf2..2f87aadd 100644 --- a/source/prompts/gameinfo.cpp +++ b/source/prompts/gameinfo.cpp @@ -854,13 +854,17 @@ static int InternalShowGameInfo(char *ID) else if(LeftBtn.GetState() == STATE_CLICKED) { - choice = 3; + if(gameList.size() > 0) + choice = 3; + LeftBtn.ResetState(); break; } else if(RightBtn.GetState() == STATE_CLICKED) { - choice = 4; + if(gameList.size() > 0) + choice = 4; + RightBtn.ResetState(); break; } @@ -1053,7 +1057,7 @@ int showGameInfo(int gameSelected) { --gameSelected; if(gameSelected < 0) - gameSelected = 0; + gameSelected = gameList.size()-1; } else if(choice == 4) { diff --git a/source/settings/CSettings.cpp b/source/settings/CSettings.cpp index d5c4bf1c..7a26a6b4 100644 --- a/source/settings/CSettings.cpp +++ b/source/settings/CSettings.cpp @@ -67,6 +67,7 @@ void CSettings::SetDefault() snprintf(BcaCodepath, sizeof(BcaCodepath), "%s/bca/", BootDevice); snprintf(WipCodepath, sizeof(WipCodepath), "%s/wip/", BootDevice); snprintf(WDMpath, sizeof(WDMpath), "%s/wdm/", BootDevice); + snprintf(WiinnertagPath, sizeof(WiinnertagPath), "%s/Wiinnertag.xml", ConfigPath); snprintf(theme_path, sizeof(theme_path), "%stheme/", ConfigPath); snprintf(dolpath, sizeof(dolpath), "%s/", BootDevice); strcpy(theme, ""); @@ -121,6 +122,7 @@ void CSettings::SetDefault() FontScaleFactor = 1.0f; EnabledCategories.resize(1); EnabledCategories[0] = 0; + Wiinnertag = OFF; } bool CSettings::Load() @@ -199,74 +201,74 @@ bool CSettings::Save() if (!file) return false; fprintf(file, "# USB Loader GX R%s - Main settings file\n", GetRev()); - fprintf(file, "# Note: This file is automatically generated\n "); - fprintf(file, "godmode = %d\n ", godmode); - fprintf(file, "videomode = %d\n ", videomode); - fprintf(file, "videopatch = %d\n ", videopatch); - fprintf(file, "language = %d\n ", language); - fprintf(file, "ocarina = %d\n ", ocarina); - fprintf(file, "hddinfo = %d\n ", hddinfo); - fprintf(file, "sinfo = %d\n ", sinfo); - fprintf(file, "rumble = %d\n ", rumble); - fprintf(file, "volume = %d\n ", volume); - fprintf(file, "sfxvolume = %d\n ", sfxvolume); - fprintf(file, "gamesoundvolume = %d\n ", gamesoundvolume); - fprintf(file, "tooltips = %d\n ", tooltips); + fprintf(file, "# Note: This file is automatically generated\n"); + fprintf(file, "godmode = %d\n", godmode); + fprintf(file, "videomode = %d\n", videomode); + fprintf(file, "videopatch = %d\n", videopatch); + fprintf(file, "language = %d\n", language); + fprintf(file, "ocarina = %d\n", ocarina); + fprintf(file, "hddinfo = %d\n", hddinfo); + fprintf(file, "sinfo = %d\n", sinfo); + fprintf(file, "rumble = %d\n", rumble); + fprintf(file, "volume = %d\n", volume); + fprintf(file, "sfxvolume = %d\n", sfxvolume); + fprintf(file, "gamesoundvolume = %d\n", gamesoundvolume); + fprintf(file, "tooltips = %d\n", tooltips); char EncryptedTxt[50]; EncryptString(unlockCode, EncryptedTxt); - fprintf(file, "password = %s\n ", EncryptedTxt); - fprintf(file, "GameSort = %d\n ", GameSort); - fprintf(file, "cios = %d\n ", cios); - fprintf(file, "keyset = %d\n ", keyset); - fprintf(file, "xflip = %d\n ", xflip); - fprintf(file, "gridRows = %d\n ", gridRows); - fprintf(file, "quickboot = %d\n ", quickboot); - fprintf(file, "wsprompt = %d\n ", wsprompt); - fprintf(file, "parentalcontrol = %d\n ", parentalcontrol); - fprintf(file, "covers_path = %s\n ", covers_path); - fprintf(file, "covers2d_path = %s\n ", covers2d_path); - fprintf(file, "coversFull_path = %s\n ", coversFull_path); - fprintf(file, "theme_path = %s\n ", theme_path); - fprintf(file, "theme = %s\n ", theme); - fprintf(file, "disc_path = %s\n ", disc_path); - fprintf(file, "language_path = %s\n ", language_path); - fprintf(file, "languagefiles_path = %s\n ", languagefiles_path); - fprintf(file, "TxtCheatcodespath = %s\n ", TxtCheatcodespath); - fprintf(file, "titlestxt_path = %s\n ", titlestxt_path); - fprintf(file, "gamesound = %d\n ", gamesound); - fprintf(file, "dolpath = %s\n ", dolpath); - fprintf(file, "ogg_path = %s\n ", ogg_path); - fprintf(file, "wiilight = %d\n ", wiilight); - fprintf(file, "gameDisplay = %d\n ", gameDisplay); - fprintf(file, "update_path = %s\n ", update_path); - fprintf(file, "homebrewapps_path = %s\n ", homebrewapps_path); - fprintf(file, "Cheatcodespath = %s\n ", Cheatcodespath); - fprintf(file, "BcaCodepath = %s\n ", BcaCodepath); - fprintf(file, "WipCodepath = %s\n ", WipCodepath); + fprintf(file, "password = %s\n", EncryptedTxt); + fprintf(file, "GameSort = %d\n", GameSort); + fprintf(file, "cios = %d\n", cios); + fprintf(file, "keyset = %d\n", keyset); + fprintf(file, "xflip = %d\n", xflip); + fprintf(file, "gridRows = %d\n", gridRows); + fprintf(file, "quickboot = %d\n", quickboot); + fprintf(file, "wsprompt = %d\n", wsprompt); + fprintf(file, "parentalcontrol = %d\n", parentalcontrol); + fprintf(file, "covers_path = %s\n", covers_path); + fprintf(file, "covers2d_path = %s\n", covers2d_path); + fprintf(file, "coversFull_path = %s\n", coversFull_path); + fprintf(file, "theme_path = %s\n", theme_path); + fprintf(file, "theme = %s\n", theme); + fprintf(file, "disc_path = %s\n", disc_path); + fprintf(file, "language_path = %s\n", language_path); + fprintf(file, "languagefiles_path = %s\n", languagefiles_path); + fprintf(file, "TxtCheatcodespath = %s\n", TxtCheatcodespath); + fprintf(file, "titlestxt_path = %s\n", titlestxt_path); + fprintf(file, "gamesound = %d\n", gamesound); + fprintf(file, "dolpath = %s\n", dolpath); + fprintf(file, "ogg_path = %s\n", ogg_path); + fprintf(file, "wiilight = %d\n", wiilight); + fprintf(file, "gameDisplay = %d\n", gameDisplay); + fprintf(file, "update_path = %s\n", update_path); + fprintf(file, "homebrewapps_path = %s\n", homebrewapps_path); + fprintf(file, "Cheatcodespath = %s\n", Cheatcodespath); + fprintf(file, "BcaCodepath = %s\n", BcaCodepath); + fprintf(file, "WipCodepath = %s\n", WipCodepath); fprintf(file, "WDMpath = %s\n ", WDMpath); - fprintf(file, "titlesOverride = %d\n ", titlesOverride); - fprintf(file, "patchcountrystrings = %d\n ", patchcountrystrings); - fprintf(file, "screensaver = %d\n ", screensaver); - fprintf(file, "musicloopmode = %d\n ", musicloopmode); - fprintf(file, "error002 = %d\n ", error002); - fprintf(file, "autonetwork = %d\n ", autonetwork); - fprintf(file, "discart = %d\n ", discart); - fprintf(file, "partition = %d\n ", partition); - fprintf(file, "marknewtitles = %d\n ", marknewtitles); - fprintf(file, "ShowFreeSpace = %d\n ", ShowFreeSpace); - fprintf(file, "InstallToDir = %d\n ", InstallToDir); - fprintf(file, "GameSplit = %d\n ", GameSplit); - fprintf(file, "InstallPartitions = %08X\n ", InstallPartitions); - fprintf(file, "PlaylogUpdate = %d\n ", PlaylogUpdate); - fprintf(file, "ParentalBlocks = %08X\n ", ParentalBlocks); - fprintf(file, "returnTo = %s\n ", returnTo); - fprintf(file, "HomeMenu = %d\n ", HomeMenu); - fprintf(file, "MultiplePartitions = %d\n ", MultiplePartitions); - fprintf(file, "USBPort = %d\n ", USBPort); - fprintf(file, "CacheTitles = %d\n ", CacheTitles); - fprintf(file, "BlockIOSReload = %d\n ", BlockIOSReload); - fprintf(file, "WSFactor = %0.3f\n ", WSFactor); - fprintf(file, "FontScaleFactor = %0.3f\n ", FontScaleFactor); + fprintf(file, "titlesOverride = %d\n", titlesOverride); + fprintf(file, "patchcountrystrings = %d\n", patchcountrystrings); + fprintf(file, "screensaver = %d\n", screensaver); + fprintf(file, "musicloopmode = %d\n", musicloopmode); + fprintf(file, "error002 = %d\n", error002); + fprintf(file, "autonetwork = %d\n", autonetwork); + fprintf(file, "discart = %d\n", discart); + fprintf(file, "partition = %d\n", partition); + fprintf(file, "marknewtitles = %d\n", marknewtitles); + fprintf(file, "ShowFreeSpace = %d\n", ShowFreeSpace); + fprintf(file, "InstallToDir = %d\n", InstallToDir); + fprintf(file, "GameSplit = %d\n", GameSplit); + fprintf(file, "InstallPartitions = %08X\n", InstallPartitions); + fprintf(file, "PlaylogUpdate = %d\n", PlaylogUpdate); + fprintf(file, "ParentalBlocks = %08X\n", ParentalBlocks); + fprintf(file, "returnTo = %s\n", returnTo); + fprintf(file, "HomeMenu = %d\n", HomeMenu); + fprintf(file, "MultiplePartitions = %d\n", MultiplePartitions); + fprintf(file, "USBPort = %d\n", USBPort); + fprintf(file, "CacheTitles = %d\n", CacheTitles); + fprintf(file, "BlockIOSReload = %d\n", BlockIOSReload); + 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) { @@ -274,7 +276,9 @@ bool CSettings::Save() if(i+1 < EnabledCategories.size()) fprintf(file, ","); } - fprintf(file, "\n "); + fprintf(file, "\n"); + fprintf(file, "Wiinnertag = %d\n", Wiinnertag); + fprintf(file, "WiinnertagPath = %s\n", WiinnertagPath); fclose(file); return true; @@ -532,6 +536,10 @@ bool CSettings::SetSetting(char *name, char *value) if (sscanf(value, "%d", &i) == 1) PlaylogUpdate = i; return true; } + else if(strcmp(name, "Wiinnertag") == 0) + { + if (sscanf(value, "%d", &i) == 1) Wiinnertag = i; + } else if (strcmp(name, "InstallPartitions") == 0) { InstallPartitions = strtoul(value, 0, 16); @@ -647,6 +655,11 @@ bool CSettings::SetSetting(char *name, char *value) strcpy(returnTo, value); return true; } + else if (strcmp(name, "WiinnertagPath") == 0) + { + strcpy(WiinnertagPath, value); + return true; + } else if (strcmp(name, "EnabledCategories") == 0) { EnabledCategories.clear(); diff --git a/source/settings/CSettings.h b/source/settings/CSettings.h index cc2b261e..62242a67 100644 --- a/source/settings/CSettings.h +++ b/source/settings/CSettings.h @@ -73,6 +73,7 @@ class CSettings char update_path[100]; char homebrewapps_path[100]; char WDMpath[100]; + char WiinnertagPath[100]; short videomode; short language; short ocarina; @@ -119,6 +120,7 @@ class CSettings u32 ParentalBlocks; f32 WSFactor; f32 FontScaleFactor; + short Wiinnertag; std::vector EnabledCategories; protected: bool ValidVersion(FILE * file); diff --git a/source/settings/SettingsEnums.h b/source/settings/SettingsEnums.h index c194f5a7..94045701 100644 --- a/source/settings/SettingsEnums.h +++ b/source/settings/SettingsEnums.h @@ -170,6 +170,7 @@ enum BLOCK_GAME_INSTALL = 0x4000, BLOCK_GAMEID_CHANGE = 0x8000, BLOCK_CATEGORIES_MOD = 0x010000, + BLOCK_FEATURE_SETTINGS = 0x020000, BLOCK_ALL = 0xFFFFFFFF, }; diff --git a/source/settings/menus/CustomPathsSM.cpp b/source/settings/menus/CustomPathsSM.cpp index 97841f84..d67f1fd1 100644 --- a/source/settings/menus/CustomPathsSM.cpp +++ b/source/settings/menus/CustomPathsSM.cpp @@ -49,6 +49,7 @@ CustomPathsSM::CustomPathsSM() Options->SetName(Idx++, tr("WIP Patches Path")); Options->SetName(Idx++, tr("Languagefiles Path")); Options->SetName(Idx++, tr("WDM Files Path")); + Options->SetName(Idx++, tr("Wiinnertag Path")); SetOptionValues(); } @@ -101,6 +102,9 @@ void CustomPathsSM::SetOptionValues() //! Settings: WDM Files Path Options->SetValue(Idx++, Settings.WDMpath); + + //! Settings: Wiinnertag Path + Options->SetValue(Idx++, Settings.WiinnertagPath); } int CustomPathsSM::GetMenuInternal() @@ -217,6 +221,13 @@ int CustomPathsSM::GetMenuInternal() ChangePath(Settings.WDMpath, sizeof(Settings.WDMpath)); } + //! Settings: Wiinnertag Path + else if (ret == ++Idx) + { + titleTxt->SetText(tr( "Wiinnertag Path" )); + ChangePath(Settings.WiinnertagPath, sizeof(Settings.WiinnertagPath)); + } + //! Global set back of the titleTxt after a change titleTxt->SetText(tr( "Custom Paths" )); SetOptionValues(); diff --git a/source/settings/menus/FeatureSettingsMenu.cpp b/source/settings/menus/FeatureSettingsMenu.cpp new file mode 100644 index 00000000..53310b6e --- /dev/null +++ b/source/settings/menus/FeatureSettingsMenu.cpp @@ -0,0 +1,151 @@ +/**************************************************************************** + * 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 +#include "FeatureSettingsMenu.hpp" +#include "settings/CGameCategories.hpp" +#include "settings/GameTitles.h" +#include "settings/CSettings.h" +#include "settings/SettingsPrompts.h" +#include "network/Wiinnertag.h" +#include "network/networkops.h" +#include "FileOperations/fileops.h" +#include "prompts/PromptWindows.h" +#include "language/gettext.h" + +static const char * OnOffText[] = +{ + trNOOP( "OFF" ), + trNOOP( "ON" ) +}; + +FeatureSettingsMenu::FeatureSettingsMenu() + : SettingsMenu(tr("Sound Settings"), &GuiOptions, MENU_NONE) +{ + int Idx = 0; + Options->SetName(Idx++, "%s", tr( "Titles from WiiTDB" )); + Options->SetName(Idx++, "%s", tr( "Cache Titles" )); + Options->SetName(Idx++, "%s", tr( "Wiinnertag" )); + Options->SetName(Idx++, "%s", tr( "Import Categories" )); + + SetOptionValues(); +} + +void FeatureSettingsMenu::SetOptionValues() +{ + int Idx = 0; + + //! Settings: Titles from WiiTDB + Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.titlesOverride] )); + + //! Settings: Cache Titles + Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.CacheTitles] )); + + //! Settings: Wiinnertag + Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.Wiinnertag] )); + + //! Settings: Import categories from WiiTDB + Options->SetValue(Idx++, " "); +} + +int FeatureSettingsMenu::GetMenuInternal() +{ + int ret = optionBrowser->GetClickedOption(); + + if (ret < 0) + return MENU_NONE; + + int Idx = -1; + + + //! Settings: Titles from WiiTDB + if (ret == ++Idx) + { + if (++Settings.titlesOverride >= MAX_ON_OFF) Settings.titlesOverride = 0; + } + + //! Settings: Cache Titles + else if (ret == ++Idx) + { + if (++Settings.CacheTitles >= MAX_ON_OFF) Settings.CacheTitles = 0; + + if(Settings.CacheTitles) //! create new cache file + GameTitles.LoadTitlesFromWiiTDB(Settings.titlestxt_path); + } + + //! Settings: Winnertag + else if (ret == ++Idx) + { + if (++Settings.Wiinnertag >= MAX_ON_OFF) Settings.Wiinnertag = 0; + + if(Settings.Wiinnertag == ON && !Settings.autonetwork) + { + int choice = WindowPrompt(tr("Warning"), tr("Wiinnertag requires you to enable automatic network connect on application start. Do you want to enable it now?"), tr("Yes"), tr("Cancel")); + if(choice) + { + Settings.autonetwork = ON; + if(!IsNetworkInit()) + Initialize_Network(); + } + } + + if(Settings.Wiinnertag == ON && !CheckFile(Settings.WiinnertagPath)) + { + int choice = WindowPrompt(tr("Warning"), tr("No Wiinnertag.xml found in the config path. Do you want an example file created?"), tr("Yes"), tr("No")); + if(choice) + { + if(Wiinnertag::CreateExample(Settings.WiinnertagPath)) + { + char text[200]; + snprintf(text, sizeof(text), "%s %s", tr("An example file was created here:"), Settings.WiinnertagPath); + WindowPrompt(tr("Success"), text, tr("OK")); + } + } + } + } + + //! Settings: Import categories from WiiTDB + else if (ret == ++Idx) + { + int choice = WindowPrompt(tr("Import Categories"), tr("Are you sure you want to import game categories from WiiTDB?"), tr("Yes"), tr("Cancel")); + if(choice) + { + char xmlpath[300]; + snprintf(xmlpath, sizeof(xmlpath), "%swiitdb.xml", Settings.titlestxt_path); + if(!GameCategories.ImportFromWiiTDB(xmlpath)) + { + WindowPrompt(tr("Error"), tr("Could not open the WiiTDB.xml file."), tr("OK")); + } + else + { + GameCategories.Save(); + GameCategories.CategoryList.goToFirst(); + WindowPrompt(tr("Import Categories"), tr("Import operation successfully completed."), tr("OK")); + } + } + } + + SetOptionValues(); + + return MENU_NONE; +} diff --git a/source/settings/menus/FeatureSettingsMenu.hpp b/source/settings/menus/FeatureSettingsMenu.hpp new file mode 100644 index 00000000..c1a3b23b --- /dev/null +++ b/source/settings/menus/FeatureSettingsMenu.hpp @@ -0,0 +1,42 @@ +/**************************************************************************** + * 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 FEATURESETTINGS_MENU_HPP_ +#define FEATURESETTINGS_MENU_HPP_ + +#include "SettingsMenu.hpp" + +class FeatureSettingsMenu : public SettingsMenu +{ + public: + FeatureSettingsMenu(); + virtual int GetType() { return CFeatureSettings; }; + protected: + void SetOptionValues(); + int GetMenuInternal(); + + OptionList GuiOptions; +}; + + +#endif diff --git a/source/settings/menus/GUISettingsMenu.cpp b/source/settings/menus/GUISettingsMenu.cpp index ca236730..d464f329 100644 --- a/source/settings/menus/GUISettingsMenu.cpp +++ b/source/settings/menus/GUISettingsMenu.cpp @@ -121,13 +121,10 @@ GuiSettingsMenu::GuiSettingsMenu() Options->SetName(Idx++, "%s", tr( "Wiilight" )); Options->SetName(Idx++, "%s", tr( "Rumble" )); Options->SetName(Idx++, "%s", tr( "AutoInit Network" )); - Options->SetName(Idx++, "%s", tr( "Titles from WiiTDB" )); - Options->SetName(Idx++, "%s", tr( "Cache Titles" )); Options->SetName(Idx++, "%s", tr( "Screensaver" )); Options->SetName(Idx++, "%s", tr( "Mark new games" )); Options->SetName(Idx++, "%s", tr( "Show Free Space" )); Options->SetName(Idx++, "%s", tr( "HOME Menu" )); - Options->SetName(Idx++, "%s", tr( "Import Categories" )); SetOptionValues(); @@ -199,12 +196,6 @@ void GuiSettingsMenu::SetOptionValues() //! Settings: AutoInit Network Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.autonetwork] )); - //! Settings: Titles from WiiTDB - Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.titlesOverride] )); - - //! Settings: Cache Titles - Options->SetValue(Idx++, "%s", tr( OnOffText[Settings.CacheTitles] )); - //! Settings: Screensaver Options->SetValue(Idx++, "%s", tr( ScreensaverText[Settings.screensaver] )); @@ -216,9 +207,6 @@ void GuiSettingsMenu::SetOptionValues() //! Settings: Home Menu style Options->SetValue(Idx++, "%s", tr( HomeMenuText[Settings.HomeMenu] )); - - //! Settings: Import categories from WiiTDB - Options->SetValue(Idx++, " "); } int GuiSettingsMenu::GetMenuInternal() @@ -366,21 +354,6 @@ int GuiSettingsMenu::GetMenuInternal() if (++Settings.autonetwork >= MAX_ON_OFF) Settings.autonetwork = 0; } - //! Settings: Titles from WiiTDB - else if (ret == ++Idx) - { - if (++Settings.titlesOverride >= MAX_ON_OFF) Settings.titlesOverride = 0; - } - - //! Settings: Cache Titles - else if (ret == ++Idx) - { - if (++Settings.CacheTitles >= MAX_ON_OFF) Settings.CacheTitles = 0; - - if(Settings.CacheTitles) //! create new cache file - GameTitles.LoadTitlesFromWiiTDB(Settings.titlestxt_path); - } - //! Settings: Screensaver else if (ret == ++Idx) { @@ -407,27 +380,6 @@ int GuiSettingsMenu::GetMenuInternal() if (++Settings.HomeMenu >= HOME_MENU_MAX_CHOICE) Settings.HomeMenu = 0; } - //! Settings: Import categories from WiiTDB - else if (ret == ++Idx) - { - int choice = WindowPrompt(tr("Import categories"), tr("Are you sure you want to import game categories from WiiTDB?"), tr("Yes"), tr("Cancel")); - if(choice) - { - char xmlpath[300]; - snprintf(xmlpath, sizeof(xmlpath), "%swiitdb.xml", Settings.titlestxt_path); - if(!GameCategories.ImportFromWiiTDB(xmlpath)) - { - WindowPrompt(tr("Error"), tr("Could not open the WiiTDB.xml file."), tr("OK")); - } - else - { - GameCategories.Save(); - GameCategories.CategoryList.goToFirst(); - WindowPrompt(tr("Import categories"), tr("Import operation successfully completed."), tr("OK")); - } - } - } - SetOptionValues(); return MENU_NONE; diff --git a/source/settings/menus/GameSettingsMenu.cpp b/source/settings/menus/GameSettingsMenu.cpp index 5f8b1f6d..8ffaf2ca 100644 --- a/source/settings/menus/GameSettingsMenu.cpp +++ b/source/settings/menus/GameSettingsMenu.cpp @@ -105,7 +105,8 @@ void GameSettingsMenu::CreateSettingsMenu(int menuNr) ResumeGui(); mainWindow->SetState(STATE_DISABLED); CategorySelectPrompt promptMenu(DiscHeader); - promptMenu.SetAlignment(ALIGN_CENTER, ALIGN_MIDDLE); + promptMenu.SetAlignment(thAlign("center - category game prompt align hor"), thAlign("middle - category game prompt align ver")); + promptMenu.SetPosition(thInt("0 - category game prompt pos x"), thInt("0 - category game prompt pos y")); promptMenu.SetEffect(EFFECT_FADE, 20); mainWindow->Append(&promptMenu); diff --git a/source/settings/menus/GlobalSettings.cpp b/source/settings/menus/GlobalSettings.cpp index 713b56a9..4f754380 100644 --- a/source/settings/menus/GlobalSettings.cpp +++ b/source/settings/menus/GlobalSettings.cpp @@ -31,6 +31,7 @@ #include "ParentalControlSM.hpp" #include "SoundSettingsMenu.hpp" #include "CustomPathsSM.hpp" +#include "FeatureSettingsMenu.hpp" GlobalSettings::GlobalSettings() : FlyingButtonsMenu(tr("Global Settings")) @@ -70,6 +71,7 @@ void GlobalSettings::SetupMainButtons() SetMainButton(pos++, tr( "GUI Settings" ), MainButtonImgData, MainButtonImgOverData); SetMainButton(pos++, tr( "Loader Settings" ), MainButtonImgData, MainButtonImgOverData); SetMainButton(pos++, tr( "Parental Control" ), MainButtonImgData, MainButtonImgOverData); + SetMainButton(pos++, tr( "Features" ), MainButtonImgData, MainButtonImgOverData); SetMainButton(pos++, tr( "Sound" ), MainButtonImgData, MainButtonImgOverData); SetMainButton(pos++, tr( "Custom Paths" ), MainButtonImgData, MainButtonImgOverData); SetMainButton(pos++, tr( "Theme Menu" ), MainButtonImgData, MainButtonImgOverData); @@ -128,6 +130,20 @@ void GlobalSettings::CreateSettingsMenu(int menuNr) CurrentMenu = new ParentalControlSM(); Append(CurrentMenu); } + //! Feature + else if(menuNr == Idx++) + { + if(!Settings.godmode && (Settings.ParentalBlocks & BLOCK_FEATURE_SETTINGS)) + { + WindowPrompt(tr( "Permission denied." ), tr( "Console must be unlocked for this option." ), tr( "OK" )); + return; + } + + HideMenu(); + ResumeGui(); + CurrentMenu = new FeatureSettingsMenu(); + Append(CurrentMenu); + } //! Sound else if(menuNr == Idx++) { @@ -251,6 +267,9 @@ void GlobalSettings::DeleteSettingsMenu() case CCustomPathsSM: delete ((CustomPathsSM *) CurrentMenu); break; + case CFeatureSettings: + delete ((FeatureSettingsMenu *) CurrentMenu); + break; case CSettingsMenu: default: delete CurrentMenu; diff --git a/source/settings/menus/ParentalControlSM.cpp b/source/settings/menus/ParentalControlSM.cpp index 4ab1a801..93f5b3d4 100644 --- a/source/settings/menus/ParentalControlSM.cpp +++ b/source/settings/menus/ParentalControlSM.cpp @@ -60,6 +60,7 @@ ParentalControlSM::ParentalControlSM() Options->SetName(Idx++, "%s", tr( "Block Gui Settings" )); Options->SetName(Idx++, "%s", tr( "Block Loader Settings" )); Options->SetName(Idx++, "%s", tr( "Block Parental Settings" )); + Options->SetName(Idx++, "%s", tr( "Block Feature Settings" )); Options->SetName(Idx++, "%s", tr( "Block Sound Settings" )); Options->SetName(Idx++, "%s", tr( "Block Custom Paths" )); Options->SetName(Idx++, "%s", tr( "Block Updates" )); @@ -113,6 +114,9 @@ void ParentalControlSM::SetOptionValues() //! Settings: Block Parental Settings Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_PARENTAL_SETTINGS) != 0)])); + //! Settings: Block Feature Settings + Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_FEATURE_SETTINGS) != 0)])); + //! Settings: Block Sound Settings Options->SetValue(Idx++, "%s", tr(OnOffText[((Settings.ParentalBlocks & BLOCK_SOUND_SETTINGS) != 0)])); @@ -242,6 +246,12 @@ int ParentalControlSM::GetMenuInternal() Settings.ParentalBlocks ^= BLOCK_PARENTAL_SETTINGS; } + //! Settings: Block Feature Settings + else if (ret == ++Idx) + { + Settings.ParentalBlocks ^= BLOCK_FEATURE_SETTINGS; + } + //! Settings: Block Sound Settings else if (ret == ++Idx) { diff --git a/source/settings/menus/SettingsMenu.hpp b/source/settings/menus/SettingsMenu.hpp index 24e08dfd..2ff454bc 100644 --- a/source/settings/menus/SettingsMenu.hpp +++ b/source/settings/menus/SettingsMenu.hpp @@ -38,6 +38,7 @@ enum CCustomPathsSM, CGameLoadSM, CUninstallSM, + CFeatureSettings, }; class SettingsMenu : public GuiWindow diff --git a/source/themes/filelist.h b/source/themes/filelist.h index 2c24da28..d05fe8ac 100644 --- a/source/themes/filelist.h +++ b/source/themes/filelist.h @@ -323,6 +323,9 @@ extern const u32 nunchuk_png_size; extern const u8 nunchukR_png[]; extern const u32 nunchukR_png_size; +extern const u8 one_png[]; +extern const u32 one_png_size; + extern const u8 oneButtonScroll_png[]; extern const u32 oneButtonScroll_png_size; @@ -389,9 +392,6 @@ extern const u32 rankIcon_png_size; extern const u8 remove_png[]; extern const u32 remove_png_size; -extern const u8 rename_png[]; -extern const u32 rename_png_size; - extern const u8 rplayer1_point_png[]; extern const u32 rplayer1_point_png_size; @@ -684,6 +684,7 @@ RecourceFile Resources::RecourceFiles[] = {"not_favorite.png", not_favorite_png, not_favorite_png_size, NULL, 0}, {"nunchuk.png", nunchuk_png, nunchuk_png_size, NULL, 0}, {"nunchukR.png", nunchukR_png, nunchukR_png_size, NULL, 0}, + {"one.png", one_png, one_png_size, NULL, 0}, {"oneButtonScroll.png", oneButtonScroll_png, oneButtonScroll_png_size, NULL, 0}, {"pageindicator.png", pageindicator_png, pageindicator_png_size, NULL, 0}, {"pegi_12.png", pegi_12_png, pegi_12_png_size, NULL, 0}, @@ -706,7 +707,6 @@ RecourceFile Resources::RecourceFiles[] = {"progressbar_outline.png", progressbar_outline_png, progressbar_outline_png_size, NULL, 0}, {"rankIcon.png", rankIcon_png, rankIcon_png_size, NULL, 0}, {"remove.png", remove_png, remove_png_size, NULL, 0}, - {"rename.png", rename_png, rename_png_size, NULL, 0}, {"rplayer1_point.png", rplayer1_point_png, rplayer1_point_png_size, NULL, 0}, {"rplayer2_point.png", rplayer2_point_png, rplayer2_point_png_size, NULL, 0}, {"rplayer3_point.png", rplayer3_point_png, rplayer3_point_png_size, NULL, 0}, diff --git a/source/usbloader/GameBooter.cpp b/source/usbloader/GameBooter.cpp index bc839d33..66d10fe9 100644 --- a/source/usbloader/GameBooter.cpp +++ b/source/usbloader/GameBooter.cpp @@ -16,6 +16,7 @@ #include "usbloader/MountGamePartition.h" #include "usbloader/AlternateDOLOffsets.h" #include "settings/newtitles.h" +#include "network/Wiinnertag.h" #include "patches/fst.h" #include "patches/gamepatches.h" #include "patches/wip.h" @@ -170,6 +171,9 @@ int GameBooter::BootGame(const char * gameID) if (mountMethod == 2) return BootGCMode(); + if(Settings.Wiinnertag) + Wiinnertag::TagGame(gameID); + AppCleanUp(); gprintf("\tSettings.partition: %d\n", Settings.partition); diff --git a/source/usbloader/disc.c b/source/usbloader/disc.c index 1fc55b6a..be1eb202 100644 --- a/source/usbloader/disc.c +++ b/source/usbloader/disc.c @@ -148,10 +148,12 @@ void __Disc_SetVMode(void) /* Set video mode */ if (vmode != NULL) + { VIDEO_Configure(vmode); + } /* Setup video */ - VIDEO_SetBlack(FALSE); + VIDEO_SetBlack(TRUE); VIDEO_Flush(); VIDEO_WaitVSync(); if (vmode->viTVMode & VI_NON_INTERLACE) @@ -274,13 +276,6 @@ s32 Disc_JumpToEntrypoint(bool enablecheat, u32 dolparameter) /* Set time */ __Disc_SetTime(); - // Anti-green screen fix - VIDEO_SetBlack(TRUE); - VIDEO_Flush(); - VIDEO_WaitVSync(); - VIDEO_WaitVSync(); - gprintf("USB Loader GX is done.\n"); - /* Shutdown IOS subsystems */ extern void __exception_closeall(); u32 level = IRQ_Disable(); diff --git a/source/utils/StringTools.c b/source/utils/StringTools.c index 1f19dcd9..77a04e1c 100644 --- a/source/utils/StringTools.c +++ b/source/utils/StringTools.c @@ -144,3 +144,39 @@ inline const char * FullpathToFilename(const char *path) return Filename; } + +int replaceString(char *string, const char *replace, const char *replacement) +{ + if(!string || !replace || !replacement) + return -1; + + char *strCpy = strdup(string); + if(!strCpy) + return -1; + + char *ptr; + int replacelen = strlen(replace); + + for(ptr = strCpy; *ptr != 0; string++, ptr++) + { + if(strncasecmp(ptr, replace, replacelen) == 0) + { + const char *ptr2 = replacement; + while(*ptr2 != 0) + { + *string = *ptr2; + string++; + ptr2++; + } + ptr += replacelen; + } + + *string = *ptr; + } + + *string = 0; + + free(strCpy); + + return 0; +} diff --git a/source/utils/StringTools.h b/source/utils/StringTools.h index d9c0a856..31af1c69 100644 --- a/source/utils/StringTools.h +++ b/source/utils/StringTools.h @@ -37,6 +37,7 @@ const wchar_t * wfmt(const char * format, ...); bool char2wchar_t(const char * src, wchar_t * dest); int strtokcmp(const char * string, const char * compare, const char * separator); const char * FullpathToFilename(const char *path); +int replaceString(char *string, const char *replace, const char *replacement); #ifdef __cplusplus }