mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-30 15:14:18 +01:00
-SYNC with the 4.2 final release with the best rev number possibe
-changed revision to Beta 4.2.1 (this rev is still 4.2 final but last time I forgot to rename the revision so) -fixed text view sometimes not working properly -fixed source menu didnt set the plugin partitions right -added deletion of channels on emu nand -added support for ftp clients request full path directory creations -updated english.ini
This commit is contained in:
parent
d2d56b201e
commit
885be72218
@ -1,5 +1,5 @@
|
|||||||
#define APP_NAME "WiiFlow"
|
#define APP_NAME "WiiFlow"
|
||||||
#define APP_VERSION "Beta 4.1.4"
|
#define APP_VERSION "Beta 4.2.1"
|
||||||
|
|
||||||
#define APPDATA_DIR "wiiflow"
|
#define APPDATA_DIR "wiiflow"
|
||||||
#define APPDATA_DIR2 "apps/wiiflow"
|
#define APPDATA_DIR2 "apps/wiiflow"
|
||||||
|
@ -118,6 +118,8 @@ void CMenu::_textAbout(void)
|
|||||||
char *txt_mem = (char*)fsop_ReadFile(m_txt_path, &txt_size);
|
char *txt_mem = (char*)fsop_ReadFile(m_txt_path, &txt_size);
|
||||||
if(txt_mem != NULL)
|
if(txt_mem != NULL)
|
||||||
{
|
{
|
||||||
|
if(*(txt_mem+txt_size) != '\0')
|
||||||
|
*(txt_mem+txt_size) = '\0';
|
||||||
txt_file_content.fromUTF8(txt_mem);
|
txt_file_content.fromUTF8(txt_mem);
|
||||||
m_btnMgr.setText(m_aboutLblInfo, txt_file_content);
|
m_btnMgr.setText(m_aboutLblInfo, txt_file_content);
|
||||||
free(txt_mem);
|
free(txt_mem);
|
||||||
@ -129,22 +131,19 @@ void CMenu::_textAbout(void)
|
|||||||
{
|
{
|
||||||
m_btnMgr.setText(m_aboutLblTitle, _t("about10", L"Help Guide"));
|
m_btnMgr.setText(m_aboutLblTitle, _t("about10", L"Help Guide"));
|
||||||
wstringEx help_text;
|
wstringEx help_text;
|
||||||
FILE *f = fopen(fmt("%s/%s.txt", m_helpDir.c_str(), lowerCase(m_curLanguage).c_str()), "r");
|
u32 txt_size = 0;
|
||||||
if(f)
|
char *txt_mem = (char*)fsop_ReadFile(fmt("%s/%s.txt", m_helpDir.c_str(), lowerCase(m_curLanguage).c_str()), &txt_size);
|
||||||
|
if(txt_mem != NULL)
|
||||||
{
|
{
|
||||||
fseek(f, 0, SEEK_END);
|
if(*(txt_mem+txt_size) != '\0')
|
||||||
u32 fsize = ftell(f);
|
*(txt_mem+txt_size) = '\0';
|
||||||
char *help = (char*)MEM2_alloc(fsize+1); //+1 for null character
|
help_text.fromUTF8(txt_mem);
|
||||||
fseek(f, 0, SEEK_SET);
|
|
||||||
fread(help, 1, fsize, f);
|
|
||||||
help[fsize] = '\0';
|
|
||||||
help_text.fromUTF8(help);
|
|
||||||
MEM2_free(help);
|
|
||||||
fclose(f);
|
|
||||||
m_btnMgr.setText(m_aboutLblInfo, help_text);
|
m_btnMgr.setText(m_aboutLblInfo, help_text);
|
||||||
|
free(txt_mem);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
m_btnMgr.setText(m_aboutLblInfo, ENGLISH_TXT_W);
|
m_btnMgr.setText(m_aboutLblInfo, ENGLISH_TXT_W);
|
||||||
|
txt_mem = NULL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -679,7 +679,8 @@ void CMenu::_game(bool launch)
|
|||||||
m_btnMgr.hide(b ? m_gameBtnAdultOff : m_gameBtnAdultOn);
|
m_btnMgr.hide(b ? m_gameBtnAdultOff : m_gameBtnAdultOn);
|
||||||
m_btnMgr.show(m_gameBtnSettings);
|
m_btnMgr.show(m_gameBtnSettings);
|
||||||
}
|
}
|
||||||
if ((CoverFlow.getHdr()->type != TYPE_HOMEBREW && CoverFlow.getHdr()->type != TYPE_CHANNEL) && !m_locked)
|
if((CoverFlow.getHdr()->type != TYPE_HOMEBREW && (CoverFlow.getHdr()->type != TYPE_CHANNEL ||
|
||||||
|
(!m_cfg.getBool(CHANNEL_DOMAIN, "disable", true) && CoverFlow.getHdr()->type == TYPE_CHANNEL))) && !m_locked)
|
||||||
m_btnMgr.show(m_gameBtnDelete);
|
m_btnMgr.show(m_gameBtnDelete);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -335,7 +335,8 @@ bool CMenu::_Source()
|
|||||||
}
|
}
|
||||||
if(m_btnMgr.selected(m_sourceBtnDML))
|
if(m_btnMgr.selected(m_sourceBtnDML))
|
||||||
{
|
{
|
||||||
if(!m_show_dml && !m_devo_installed) _showSourceNotice();
|
if(!m_show_dml && !m_devo_installed)
|
||||||
|
_showSourceNotice();
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_clearSources();
|
_clearSources();
|
||||||
@ -345,7 +346,8 @@ bool CMenu::_Source()
|
|||||||
}
|
}
|
||||||
if(m_btnMgr.selected(m_sourceBtnChannel))
|
if(m_btnMgr.selected(m_sourceBtnChannel))
|
||||||
{
|
{
|
||||||
if(!show_channel) _showSourceNotice();
|
if(!show_channel)
|
||||||
|
_showSourceNotice();
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_clearSources();
|
_clearSources();
|
||||||
@ -355,7 +357,8 @@ bool CMenu::_Source()
|
|||||||
}
|
}
|
||||||
if(m_btnMgr.selected(m_sourceBtnHomebrew))
|
if(m_btnMgr.selected(m_sourceBtnHomebrew))
|
||||||
{
|
{
|
||||||
if(!show_homebrew || (!parental_homebrew && m_locked)) _showSourceNotice();
|
if(!show_homebrew || (!parental_homebrew && m_locked))
|
||||||
|
_showSourceNotice();
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_clearSources();
|
_clearSources();
|
||||||
@ -365,7 +368,8 @@ bool CMenu::_Source()
|
|||||||
}
|
}
|
||||||
if(m_btnMgr.selected(m_sourceBtnEmu))
|
if(m_btnMgr.selected(m_sourceBtnEmu))
|
||||||
{
|
{
|
||||||
if(!show_emu) _showSourceNotice();
|
if(!show_emu)
|
||||||
|
_showSourceNotice();
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_clearSources();
|
_clearSources();
|
||||||
@ -458,7 +462,8 @@ bool CMenu::_Source()
|
|||||||
{
|
{
|
||||||
magicNums.clear();
|
magicNums.clear();
|
||||||
magicNums = m_source.getStrings(btn_selected, "magic", ',');
|
magicNums = m_source.getStrings(btn_selected, "magic", ',');
|
||||||
if(!magicNums.empty())
|
u32 plugin_magic_nums = magicNums.size();
|
||||||
|
if(plugin_magic_nums != 0)
|
||||||
{
|
{
|
||||||
m_cfg.setBool(PLUGIN_DOMAIN, "source", true);
|
m_cfg.setBool(PLUGIN_DOMAIN, "source", true);
|
||||||
for(k = 0; k < numPlugins; ++k)
|
for(k = 0; k < numPlugins; ++k)
|
||||||
@ -467,7 +472,14 @@ bool CMenu::_Source()
|
|||||||
{
|
{
|
||||||
s8 exist = m_plugin.GetPluginPosition(strtoul(itr->c_str(), NULL, 16));
|
s8 exist = m_plugin.GetPluginPosition(strtoul(itr->c_str(), NULL, 16));
|
||||||
if(exist >= 0)
|
if(exist >= 0)
|
||||||
|
{
|
||||||
m_plugin.SetEnablePlugin(m_cfg, exist, 2);
|
m_plugin.SetEnablePlugin(m_cfg, exist, 2);
|
||||||
|
if(plugin_magic_nums == 1)
|
||||||
|
{
|
||||||
|
currentPartition = m_cfg.getInt("PLUGINS/PARTITION", itr->c_str(), 1);
|
||||||
|
m_cfg.setInt(PLUGIN_DOMAIN, "partition", currentPartition);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_catStartPage = m_source.getInt(btn_selected, "cat_page", 1);
|
m_catStartPage = m_source.getInt(btn_selected, "cat_page", 1);
|
||||||
|
@ -268,6 +268,7 @@ bool CMenu::_wbfsOp(CMenu::WBFS_OP op)
|
|||||||
bool upd_usb = false;
|
bool upd_usb = false;
|
||||||
bool upd_dml = false;
|
bool upd_dml = false;
|
||||||
bool upd_emu = false;
|
bool upd_emu = false;
|
||||||
|
bool upd_chan = false;
|
||||||
bool out = false;
|
bool out = false;
|
||||||
const dir_discHdr *CF_Hdr = CoverFlow.getHdr();
|
const dir_discHdr *CF_Hdr = CoverFlow.getHdr();
|
||||||
char cfPos[7];
|
char cfPos[7];
|
||||||
@ -414,6 +415,26 @@ bool CMenu::_wbfsOp(CMenu::WBFS_OP op)
|
|||||||
WBFS_Close();
|
WBFS_Close();
|
||||||
upd_usb = true;
|
upd_usb = true;
|
||||||
}
|
}
|
||||||
|
else if(CF_Hdr->type == TYPE_CHANNEL && !m_cfg.getBool(CHANNEL_DOMAIN, "disable", true))
|
||||||
|
{
|
||||||
|
if(CF_Hdr->settings[0] != 0x00010001)
|
||||||
|
{
|
||||||
|
error(_t("wbfsoperr5", L"Deleting this Channel is not allowed!"));
|
||||||
|
done = true;
|
||||||
|
out = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
const char *nand_base = NandHandle.GetPath();
|
||||||
|
fsop_deleteFolder(fmt("%s/title/%08x/%08x", nand_base, CF_Hdr->settings[0], CF_Hdr->settings[1]));
|
||||||
|
fsop_deleteFile(fmt("%s/ticket/%08x/%08x.tik", nand_base, CF_Hdr->settings[0], CF_Hdr->settings[1]));
|
||||||
|
upd_chan = true;
|
||||||
|
}
|
||||||
|
else /*who knows how but just block it*/
|
||||||
|
{
|
||||||
|
done = true;
|
||||||
|
out = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
if(m_cfg.getBool("GENERAL", "delete_cover_and_game", false))
|
if(m_cfg.getBool("GENERAL", "delete_cover_and_game", false))
|
||||||
RemoveCover(CF_Hdr->id);
|
RemoveCover(CF_Hdr->id);
|
||||||
m_btnMgr.show(m_wbfsPBar);
|
m_btnMgr.show(m_wbfsPBar);
|
||||||
@ -493,6 +514,8 @@ bool CMenu::_wbfsOp(CMenu::WBFS_OP op)
|
|||||||
UpdateCache(COVERFLOW_USB);
|
UpdateCache(COVERFLOW_USB);
|
||||||
if(upd_emu)
|
if(upd_emu)
|
||||||
UpdateCache(COVERFLOW_PLUGIN);
|
UpdateCache(COVERFLOW_PLUGIN);
|
||||||
|
if(upd_chan)
|
||||||
|
UpdateCache(COVERFLOW_CHANNEL);
|
||||||
_loadList();
|
_loadList();
|
||||||
_initCF();
|
_initCF();
|
||||||
CoverFlow.findId(cfPos, true);
|
CoverFlow.findId(cfPos, true);
|
||||||
|
@ -174,6 +174,16 @@ int ftp_changedir(char *path)
|
|||||||
int ftp_makedir(char *path)
|
int ftp_makedir(char *path)
|
||||||
{
|
{
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
if(strchr(path, '/') != NULL)
|
||||||
|
{
|
||||||
|
char *real_path = strrchr(path, '/') + 1;
|
||||||
|
if(real_path != '\0')
|
||||||
|
{
|
||||||
|
*strrchr(path, '/') = '\0';
|
||||||
|
ftp_changedir(path);
|
||||||
|
path = real_path;
|
||||||
|
}
|
||||||
|
}
|
||||||
if(main_path[1] != '\0')
|
if(main_path[1] != '\0')
|
||||||
{
|
{
|
||||||
char *new_dir = fmt("%s%s", real_path, path);
|
char *new_dir = fmt("%s%s", real_path, path);
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
<app version="4.1">
|
<app version="4.2">
|
||||||
<name> WiiFlow</name>
|
<name> WiiFlow</name>
|
||||||
<coder>OverjoY, FIX94</coder>
|
<coder>OverjoY, FIX94</coder>
|
||||||
<version>4.1</version>
|
<version>4.2</version>
|
||||||
<release_date>TBD</release_date>
|
<release_date>20130908000000</release_date>
|
||||||
<short_description>USB Loader / Nand Emulator</short_description>
|
<short_description>USB Loader / Nand Emulator</short_description>
|
||||||
<long_description>
|
<long_description>
|
||||||
WiiFlow is a Wii Game, Channel, Wiiware, Virtual Console, and Savegame Emulator intended for use with legal backups.
|
WiiFlow is a Wii Game, Channel, Wiiware, Virtual Console, and Savegame Emulator intended for use with legal backups.
|
||||||
|
@ -389,6 +389,7 @@ wbfsoperr1=Disc_Wait failed
|
|||||||
wbfsoperr2=Disc_Open failed
|
wbfsoperr2=Disc_Open failed
|
||||||
wbfsoperr3=This is not a Wii disc!
|
wbfsoperr3=This is not a Wii disc!
|
||||||
wbfsoperr4=Game already installed
|
wbfsoperr4=Game already installed
|
||||||
|
wbfsoperr5=Deleting this Channel is not allowed!
|
||||||
wbfsprogress=%i%%
|
wbfsprogress=%i%%
|
||||||
wbfsremdlg=To permanently remove the game : %s, click on Go.
|
wbfsremdlg=To permanently remove the game : %s, click on Go.
|
||||||
wifiplayers= Wifi Players
|
wifiplayers= Wifi Players
|
||||||
|
Loading…
Reference in New Issue
Block a user