mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-01 00:55:06 +01:00
- Added the ability to change emunands via wiiflow thanks to the file explorer. Just go to page 2 of the nand emulation settings and click on the SET btn. File Explorer/Folder Explorer shows allowing you to choose a folder. Once you choose one click on the SAVE btn to make it official. Does not work with nands on the root of the device, must be in a folder.
This commit is contained in:
parent
1efca149ed
commit
84892d53d8
@ -1149,6 +1149,7 @@ void CMenu::_buildMenus(void)
|
||||
_initHomeAndExitToMenu();
|
||||
_initCoverBanner();
|
||||
_initExplorer();
|
||||
_initFolderExplorer();
|
||||
_initBoot();
|
||||
_initWad();
|
||||
|
||||
|
@ -847,6 +847,7 @@ private:
|
||||
void _initHomeAndExitToMenu();
|
||||
void _initCoverBanner();
|
||||
void _initExplorer();
|
||||
void _initFolderExplorer();
|
||||
void _initWad();
|
||||
//
|
||||
void _textSource(void);
|
||||
@ -876,10 +877,12 @@ private:
|
||||
void _textBoot(void);
|
||||
void _textCoverBanner(void);
|
||||
void _textExplorer(void);
|
||||
void _textFolderExplorer(void);
|
||||
void _textWad(void);
|
||||
//
|
||||
void _refreshBoot();
|
||||
void _refreshExplorer(s8 direction = 0);
|
||||
void _refreshFolderExplorer(s8 direction = 0);
|
||||
//
|
||||
void _hideCheatSettings(bool instant = false);
|
||||
void _hideError(bool instant = false);
|
||||
@ -910,6 +913,7 @@ private:
|
||||
void _hideExitTo(bool instant = false);
|
||||
void _hideCoverBanner(bool instant = false);
|
||||
void _hideExplorer(bool instant = false);
|
||||
void _hideFolderExplorer(bool instant = false);
|
||||
void _hideWad(bool instant = false);
|
||||
//
|
||||
void _showError(void);
|
||||
@ -942,6 +946,7 @@ private:
|
||||
void _showExitTo(void);
|
||||
void _showCoverBanner(void);
|
||||
void _showExplorer(void);
|
||||
void _showFolderExplorer(void);
|
||||
void _showWad(void);
|
||||
void _updateSourceBtns(void);
|
||||
void _updatePluginText(void);
|
||||
@ -988,6 +993,7 @@ private:
|
||||
void _gameSettings(void);
|
||||
void _CoverBanner(void);
|
||||
void _Explorer(void);
|
||||
string _FolderExplorer(void);
|
||||
void _Wad(const char *wad_path = NULL);
|
||||
void _CheatSettings();
|
||||
bool _Source();
|
||||
|
@ -114,6 +114,7 @@ void CMenu::_Explorer(void)
|
||||
strcat(dir, entries_char[i-1]);
|
||||
/* otherwise it fails */
|
||||
strcat(dir, "/");
|
||||
//gprintf("Directory path =%s\n", dir);
|
||||
_refreshExplorer();
|
||||
}
|
||||
else
|
||||
@ -244,3 +245,212 @@ void CMenu::_refreshExplorer(s8 direction)
|
||||
closedir(pdir);
|
||||
}
|
||||
}
|
||||
|
||||
s16 m_folderExplorerLblSelFolder;
|
||||
s16 m_folderExplorerBtnSave;
|
||||
s16 m_folderExplorerBtnCancel;
|
||||
|
||||
string folderName="";
|
||||
|
||||
void CMenu::_initFolderExplorer()
|
||||
{
|
||||
m_folderExplorerLblSelFolder = _addLabel("EXPLORER/SELECTED_FOLDER", theme.lblFont, L"", 30, 50, 560, 40, theme.lblFontColor, FTGX_JUSTIFY_LEFT);
|
||||
m_folderExplorerBtnSave = _addButton("EXPLORER/SAVE_BTN", theme.btnFont, L"Save", 530, 40, 80, 40, theme.btnFontColor);
|
||||
m_folderExplorerBtnCancel = _addButton("EXPLORER/CANCEL_BTN", theme.btnFont, L"Cancel", 530, 90, 80, 40, theme.btnFontColor);
|
||||
|
||||
_hideFolderExplorer(true);
|
||||
_textFolderExplorer();
|
||||
}
|
||||
|
||||
void CMenu::_hideFolderExplorer(bool instant)
|
||||
{
|
||||
for(u8 i = 0; i < 8; ++i)
|
||||
{
|
||||
m_btnMgr.hide(entries[i], instant);
|
||||
m_btnMgr.hide(entries_sel[i], instant);
|
||||
}
|
||||
|
||||
m_btnMgr.hide(m_mainBtnNext, instant);
|
||||
m_btnMgr.hide(m_mainBtnPrev, instant);
|
||||
m_btnMgr.hide(m_folderExplorerLblSelFolder, instant);
|
||||
m_btnMgr.hide(m_folderExplorerBtnSave, instant);
|
||||
m_btnMgr.hide(m_folderExplorerBtnCancel, instant);
|
||||
}
|
||||
|
||||
void CMenu::_showFolderExplorer(void)
|
||||
{
|
||||
_setBg(m_explorerBg, m_explorerBg);
|
||||
for(u8 i = 1; i < 8; ++i)
|
||||
{
|
||||
m_btnMgr.show(entries[i]);
|
||||
m_btnMgr.show(entries_sel[i]);
|
||||
}
|
||||
|
||||
m_btnMgr.show(m_mainBtnNext);
|
||||
m_btnMgr.show(m_mainBtnPrev);
|
||||
m_btnMgr.show(m_folderExplorerLblSelFolder);
|
||||
m_btnMgr.show(m_folderExplorerBtnSave);
|
||||
m_btnMgr.show(m_folderExplorerBtnCancel);
|
||||
}
|
||||
|
||||
void CMenu::_textFolderExplorer(void)
|
||||
{
|
||||
for(u8 i = 0; i < 8; ++i)
|
||||
m_btnMgr.setText(entries[i], L" ");
|
||||
m_btnMgr.setText(entries[1], L". . .");
|
||||
m_btnMgr.setText(m_folderExplorerLblSelFolder, wfmt(L"Dir = %.32s", folderName.c_str()));
|
||||
}
|
||||
|
||||
void CMenu::_refreshFolderExplorer(s8 direction)
|
||||
{
|
||||
_textFolderExplorer();
|
||||
if(direction == 0)
|
||||
cur_pos = 0;
|
||||
|
||||
//if path is empty show device+partitions and not folders
|
||||
if(dir[0] == '\0')
|
||||
{
|
||||
for(u8 i = 1; i < 8; ++i)
|
||||
{
|
||||
if(DeviceHandle.IsInserted(i-1))
|
||||
m_btnMgr.setText(entries[i+1], wfmt(L"%s:/", DeviceName[i-1]));
|
||||
}
|
||||
}
|
||||
//else show folders
|
||||
else
|
||||
{
|
||||
dirent *pent = NULL;
|
||||
DIR *pdir = NULL;
|
||||
u8 limit = 1;
|
||||
u32 itr = 0;
|
||||
if(direction == -1)
|
||||
cur_pos = cur_pos > 12 ? cur_pos - 12 : 0;
|
||||
pdir = opendir(dir);
|
||||
while((pent = readdir(pdir)) != NULL && limit < 7)
|
||||
{
|
||||
if(pent->d_name[0] == '.')
|
||||
continue;
|
||||
if(pent->d_type == DT_DIR)
|
||||
{
|
||||
if(itr < cur_pos)
|
||||
{
|
||||
itr++;
|
||||
continue;
|
||||
}
|
||||
strcpy(entries_char[limit-1], pent->d_name);
|
||||
m_btnMgr.setText(entries[limit+1], wfmt(L"/%.32s", pent->d_name));
|
||||
cur_pos++;
|
||||
itr++;
|
||||
limit++;
|
||||
}
|
||||
}
|
||||
closedir(pdir);
|
||||
}
|
||||
}
|
||||
|
||||
string CMenu::_FolderExplorer(void)
|
||||
{
|
||||
string path = "";
|
||||
_showFolderExplorer();
|
||||
_refreshFolderExplorer();
|
||||
while(!m_exit)
|
||||
{
|
||||
_mainLoopCommon();
|
||||
if(BTN_HOME_PRESSED || BTN_B_PRESSED)
|
||||
break;
|
||||
else if(BTN_PLUS_PRESSED)
|
||||
{
|
||||
_refreshFolderExplorer(1);
|
||||
}
|
||||
else if(BTN_MINUS_PRESSED)
|
||||
{
|
||||
_refreshFolderExplorer(-1);
|
||||
}
|
||||
else if(BTN_A_PRESSED)
|
||||
{
|
||||
if(m_btnMgr.selected(m_mainBtnNext))
|
||||
{
|
||||
_refreshFolderExplorer(1);
|
||||
}
|
||||
else if(m_btnMgr.selected(m_mainBtnPrev))
|
||||
{
|
||||
_refreshFolderExplorer(-1);
|
||||
}
|
||||
else if(m_btnMgr.selected(m_folderExplorerBtnSave))
|
||||
{
|
||||
//only when save is clicked do we set path to dir
|
||||
if(dir[0] != '\0')
|
||||
{
|
||||
path = dir;
|
||||
//check to make sure it's not just device+partition
|
||||
if(path.find_first_of("/") == path.find_last_of("/"))
|
||||
path = "";
|
||||
}
|
||||
break;
|
||||
}
|
||||
else if(m_btnMgr.selected(m_folderExplorerBtnCancel))
|
||||
{
|
||||
break;
|
||||
}
|
||||
//if "..." is selected and path is not empty then go up(back) one folder
|
||||
else if(m_btnMgr.selected(entries_sel[1]) && dir[0] != '\0')
|
||||
{
|
||||
//remove last folder or device+partition
|
||||
if(strchr(dir, '/') != NULL)
|
||||
{
|
||||
*strrchr(dir, '/') = '\0';
|
||||
if(strchr(dir, '/') != NULL)
|
||||
*(strrchr(dir, '/')+1) = '\0';
|
||||
}
|
||||
//set folderName to display current selected folder
|
||||
folderName = dir;
|
||||
//if it's just device and : then foldername empty
|
||||
if(folderName.find_last_of("/") == string::npos)
|
||||
folderName = "";
|
||||
else
|
||||
{
|
||||
folderName = folderName.erase(folderName.find_last_of("/"));
|
||||
//if it was just device and :/ then foldername empty
|
||||
if(folderName.find_last_of("/") == string::npos)
|
||||
folderName = "";
|
||||
else
|
||||
folderName = folderName.erase(0, folderName.find_last_of("/")+1);
|
||||
}
|
||||
//if we removed device then clear path completely
|
||||
if(strchr(dir, '/') == NULL)
|
||||
{
|
||||
memset(dir, 0, MAX_FAT_PATH);
|
||||
for(u8 i = 1; i < 7; ++i)
|
||||
memset(entries_char, 0, NAME_MAX+1);
|
||||
}
|
||||
_refreshFolderExplorer();
|
||||
}
|
||||
for(u8 i = 2; i < 8; ++i)
|
||||
{
|
||||
if(m_btnMgr.selected(entries_sel[i]))
|
||||
{
|
||||
//if path is empty add device+partition#:/ to start path
|
||||
if(dir[0] == '\0')
|
||||
{
|
||||
explorer_partition = i-2;
|
||||
if(DeviceHandle.IsInserted(i-2))
|
||||
strcpy(dir, fmt("%s:/", DeviceName[i-2]));
|
||||
_refreshFolderExplorer();
|
||||
}
|
||||
//if it's a folder add folder+/ to path
|
||||
else if(!fsop_FileExist(fmt("%s%s", dir, entries_char[i-2])))
|
||||
{
|
||||
strcat(dir, entries_char[i-2]);
|
||||
folderName = entries_char[i-2];
|
||||
/* otherwise it fails */
|
||||
strcat(dir, "/");
|
||||
//gprintf("Directory path =%s\n", dir);
|
||||
_refreshFolderExplorer();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
_hideFolderExplorer();
|
||||
return path;
|
||||
}
|
||||
|
@ -436,6 +436,7 @@ int CMenu::main(void)
|
||||
}
|
||||
else if(m_btnMgr.selected(m_mainBtnConfig))
|
||||
{
|
||||
string prevNand = m_cfg.getString(CHANNEL_DOMAIN, "path");
|
||||
_hideMain();
|
||||
_config(1);
|
||||
if(prevTheme != m_cfg.getString("GENERAL", "theme"))
|
||||
@ -446,6 +447,8 @@ int CMenu::main(void)
|
||||
_showMain();
|
||||
if(BTN_B_HELD)
|
||||
bUsed = true;
|
||||
if(prevNand != m_cfg.getString(CHANNEL_DOMAIN, "path") && m_cfg.getBool(CHANNEL_DOMAIN, "source"))
|
||||
LoadView();
|
||||
}
|
||||
else if(m_btnMgr.selected(m_mainBtnInfo))
|
||||
{
|
||||
|
@ -11,6 +11,9 @@
|
||||
// NandEmulation menu
|
||||
s16 m_nandemuLblTitle;
|
||||
s16 m_nandemuBtnBack;
|
||||
s16 m_nandemuLblPage;
|
||||
s16 m_nandemuBtnPageM;
|
||||
s16 m_nandemuBtnPageP;
|
||||
s16 m_nandemuLblEmulationVal;
|
||||
s16 m_nandemuLblEmulation;
|
||||
s16 m_nandemuBtnEmulationM;
|
||||
@ -20,6 +23,10 @@ s16 m_nandemuBtnAll;
|
||||
s16 m_nandemuBtnMissing;
|
||||
s16 m_nandemuLblNandDump;
|
||||
s16 m_nandemuBtnNandDump;
|
||||
s16 m_nandemuLblNandFolder;
|
||||
s16 m_nandemuBtnNandFolder;
|
||||
s16 m_nandemuLblNandSavesFolder;
|
||||
s16 m_nandemuBtnNandSavesFolder;
|
||||
s16 m_nandfileLblMessage;
|
||||
s16 m_nandemuLblMessage;
|
||||
s16 m_nandfileLblDialog;
|
||||
@ -34,6 +41,8 @@ s16 m_nandemuLblInit;
|
||||
s16 m_nandemuLblUser[4];
|
||||
TexData m_nandemuBg;
|
||||
|
||||
int nandemuPage = 1;
|
||||
|
||||
bool m_nandext;
|
||||
bool m_fulldump;
|
||||
bool m_sgdump;
|
||||
@ -177,6 +186,9 @@ void CMenu::_hideNandEmu(bool instant)
|
||||
{
|
||||
m_btnMgr.hide(m_nandemuLblTitle, instant);
|
||||
m_btnMgr.hide(m_nandemuBtnBack, instant);
|
||||
m_btnMgr.hide(m_nandemuLblPage, instant);
|
||||
m_btnMgr.hide(m_nandemuBtnPageM, instant);
|
||||
m_btnMgr.hide(m_nandemuBtnPageP, instant);
|
||||
m_btnMgr.hide(m_nandfilePBar, instant);
|
||||
m_btnMgr.hide(m_nandemuPBar, instant);
|
||||
m_btnMgr.hide(m_nandfileLblMessage, instant);
|
||||
@ -193,6 +205,10 @@ void CMenu::_hideNandEmu(bool instant)
|
||||
m_btnMgr.hide(m_nandemuBtnMissing, instant);
|
||||
m_btnMgr.hide(m_nandemuLblNandDump, instant);
|
||||
m_btnMgr.hide(m_nandemuBtnNandDump, instant);
|
||||
m_btnMgr.hide(m_nandemuLblNandFolder, instant);
|
||||
m_btnMgr.hide(m_nandemuBtnNandFolder, instant);
|
||||
m_btnMgr.hide(m_nandemuLblNandSavesFolder, instant);
|
||||
m_btnMgr.hide(m_nandemuBtnNandSavesFolder, instant);
|
||||
m_btnMgr.hide(m_nandemuBtnExtract, instant);
|
||||
m_btnMgr.hide(m_nandemuBtnPartition, instant);
|
||||
m_btnMgr.hide(m_nandemuBtnDisable, instant);
|
||||
@ -205,37 +221,56 @@ void CMenu::_showNandEmu(void)
|
||||
m_btnMgr.setText(m_nandemuLblTitle, _t("cfgne10", L"NAND Emulation Settings"));
|
||||
m_btnMgr.show(m_nandemuLblTitle);
|
||||
m_btnMgr.show(m_nandemuBtnBack);
|
||||
int i;
|
||||
if(((m_current_view == COVERFLOW_CHANNEL && !m_cfg.getBool(CHANNEL_DOMAIN, "disable", true)) || m_current_view == COVERFLOW_USB) && !m_locked)
|
||||
{
|
||||
m_btnMgr.show(m_nandemuLblEmulation);
|
||||
m_btnMgr.show(m_nandemuLblEmulationVal);
|
||||
m_btnMgr.show(m_nandemuBtnEmulationP);
|
||||
m_btnMgr.show(m_nandemuBtnEmulationM);
|
||||
}
|
||||
|
||||
if((m_current_view == COVERFLOW_CHANNEL || m_current_view == COVERFLOW_USB) && !m_locked)
|
||||
m_btnMgr.setText(m_nandemuLblPage, wfmt(L"%i / 2", nandemuPage));
|
||||
m_btnMgr.show(m_nandemuLblPage);
|
||||
m_btnMgr.show(m_nandemuBtnPageM);
|
||||
m_btnMgr.show(m_nandemuBtnPageP);
|
||||
|
||||
if(nandemuPage == 1)
|
||||
{
|
||||
m_btnMgr.show(m_nandemuLblSaveDump);
|
||||
m_btnMgr.show(m_nandemuBtnAll);
|
||||
m_btnMgr.show(m_nandemuBtnMissing);
|
||||
m_btnMgr.show(m_nandemuLblNandDump);
|
||||
m_btnMgr.show(m_nandemuBtnNandDump);
|
||||
if (m_current_view == COVERFLOW_CHANNEL)
|
||||
int i;
|
||||
if(((m_current_view == COVERFLOW_CHANNEL && !m_cfg.getBool(CHANNEL_DOMAIN, "disable", true)) || m_current_view == COVERFLOW_USB) && !m_locked)
|
||||
{
|
||||
i = min(max(0, m_cfg.getInt(CHANNEL_DOMAIN, "emulation", 0)), (int)ARRAY_SIZE(CMenu::_NandEmu) - 1);
|
||||
m_btnMgr.setText(m_nandemuLblEmulationVal, _t(CMenu::_NandEmu[i].id, CMenu::_NandEmu[i].text));
|
||||
m_btnMgr.show(m_nandemuLblEmulation);
|
||||
m_btnMgr.show(m_nandemuLblEmulationVal);
|
||||
m_btnMgr.show(m_nandemuBtnEmulationP);
|
||||
m_btnMgr.show(m_nandemuBtnEmulationM);
|
||||
}
|
||||
else if (m_current_view == COVERFLOW_USB)
|
||||
|
||||
if((m_current_view == COVERFLOW_CHANNEL || m_current_view == COVERFLOW_USB) && !m_locked)
|
||||
{
|
||||
i = min(max(0, m_cfg.getInt(WII_DOMAIN, "save_emulation", 0)), (int)ARRAY_SIZE(CMenu::_GlobalSaveEmu) - 1);
|
||||
m_btnMgr.setText(m_nandemuLblEmulationVal, _t(CMenu::_GlobalSaveEmu[i].id, CMenu::_GlobalSaveEmu[i].text));
|
||||
m_btnMgr.show(m_nandemuLblSaveDump);
|
||||
m_btnMgr.show(m_nandemuBtnAll);
|
||||
m_btnMgr.show(m_nandemuBtnMissing);
|
||||
m_btnMgr.show(m_nandemuLblNandDump);
|
||||
m_btnMgr.show(m_nandemuBtnNandDump);
|
||||
if (m_current_view == COVERFLOW_CHANNEL)
|
||||
{
|
||||
i = min(max(0, m_cfg.getInt(CHANNEL_DOMAIN, "emulation", 0)), (int)ARRAY_SIZE(CMenu::_NandEmu) - 1);
|
||||
m_btnMgr.setText(m_nandemuLblEmulationVal, _t(CMenu::_NandEmu[i].id, CMenu::_NandEmu[i].text));
|
||||
}
|
||||
else if (m_current_view == COVERFLOW_USB)
|
||||
{
|
||||
i = min(max(0, m_cfg.getInt(WII_DOMAIN, "save_emulation", 0)), (int)ARRAY_SIZE(CMenu::_GlobalSaveEmu) - 1);
|
||||
m_btnMgr.setText(m_nandemuLblEmulationVal, _t(CMenu::_GlobalSaveEmu[i].id, CMenu::_GlobalSaveEmu[i].text));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_btnMgr.show(m_nandemuLblNandFolder);
|
||||
m_btnMgr.show(m_nandemuBtnNandFolder);
|
||||
m_btnMgr.show(m_nandemuLblNandSavesFolder);
|
||||
m_btnMgr.show(m_nandemuBtnNandSavesFolder);
|
||||
}
|
||||
}
|
||||
|
||||
int CMenu::_NandEmuCfg(void)
|
||||
{
|
||||
string path = "";
|
||||
nandemuPage = 1;
|
||||
|
||||
lwp_t thread = 0;
|
||||
SetupInput();
|
||||
_showNandEmu();
|
||||
@ -243,11 +278,49 @@ int CMenu::_NandEmuCfg(void)
|
||||
m_thrdStop = false;
|
||||
m_thrdMessageAdded = false;
|
||||
m_nandext = false;
|
||||
|
||||
|
||||
while(!m_exit)
|
||||
{
|
||||
_mainLoopCommon();
|
||||
if((BTN_HOME_PRESSED || BTN_B_PRESSED) && !m_thrdWorking)
|
||||
if((BTN_MINUS_PRESSED || BTN_LEFT_PRESSED) || (BTN_A_PRESSED && m_btnMgr.selected(m_nandemuBtnPageM)))
|
||||
{
|
||||
m_btnMgr.hide(m_nandemuLblEmulationVal, true);
|
||||
m_btnMgr.hide(m_nandemuLblEmulation, true);
|
||||
m_btnMgr.hide(m_nandemuBtnEmulationP, true);
|
||||
m_btnMgr.hide(m_nandemuBtnEmulationM, true);
|
||||
m_btnMgr.hide(m_nandemuLblSaveDump, true);
|
||||
m_btnMgr.hide(m_nandemuBtnAll, true);
|
||||
m_btnMgr.hide(m_nandemuBtnMissing, true);
|
||||
m_btnMgr.hide(m_nandemuLblNandDump, true);
|
||||
m_btnMgr.hide(m_nandemuBtnNandDump, true);
|
||||
m_btnMgr.hide(m_nandemuLblNandFolder, true);
|
||||
m_btnMgr.hide(m_nandemuBtnNandFolder, true);
|
||||
m_btnMgr.hide(m_nandemuLblNandSavesFolder, true);
|
||||
m_btnMgr.hide(m_nandemuBtnNandSavesFolder, true);
|
||||
|
||||
nandemuPage = nandemuPage == 1 ? 2 : 1;
|
||||
_showNandEmu();
|
||||
}
|
||||
else if((BTN_PLUS_PRESSED || BTN_RIGHT_PRESSED) || (BTN_A_PRESSED && m_btnMgr.selected(m_nandemuBtnPageP)))
|
||||
{
|
||||
m_btnMgr.hide(m_nandemuLblEmulationVal, true);
|
||||
m_btnMgr.hide(m_nandemuLblEmulation, true);
|
||||
m_btnMgr.hide(m_nandemuBtnEmulationP, true);
|
||||
m_btnMgr.hide(m_nandemuBtnEmulationM, true);
|
||||
m_btnMgr.hide(m_nandemuLblSaveDump, true);
|
||||
m_btnMgr.hide(m_nandemuBtnAll, true);
|
||||
m_btnMgr.hide(m_nandemuBtnMissing, true);
|
||||
m_btnMgr.hide(m_nandemuLblNandDump, true);
|
||||
m_btnMgr.hide(m_nandemuBtnNandDump, true);
|
||||
m_btnMgr.hide(m_nandemuLblNandFolder, true);
|
||||
m_btnMgr.hide(m_nandemuBtnNandFolder, true);
|
||||
m_btnMgr.hide(m_nandemuLblNandSavesFolder, true);
|
||||
m_btnMgr.hide(m_nandemuBtnNandSavesFolder, true);
|
||||
|
||||
nandemuPage = nandemuPage == 1 ? 2 : 1;
|
||||
_showNandEmu();
|
||||
}
|
||||
else if((BTN_HOME_PRESSED || BTN_B_PRESSED) && !m_thrdWorking)
|
||||
break;
|
||||
else if(BTN_UP_PRESSED)
|
||||
m_btnMgr.up();
|
||||
@ -276,6 +349,10 @@ int CMenu::_NandEmuCfg(void)
|
||||
m_btnMgr.hide(m_nandemuBtnMissing);
|
||||
m_btnMgr.hide(m_nandemuLblNandDump);
|
||||
m_btnMgr.hide(m_nandemuBtnNandDump);
|
||||
m_btnMgr.hide(m_nandemuLblPage);
|
||||
m_btnMgr.hide(m_nandemuBtnPageM);
|
||||
m_btnMgr.hide(m_nandemuBtnPageP);
|
||||
|
||||
m_btnMgr.show(m_nandfilePBar);
|
||||
m_btnMgr.show(m_nandemuPBar);
|
||||
m_btnMgr.show(m_nandfileLblMessage);
|
||||
@ -294,6 +371,43 @@ int CMenu::_NandEmuCfg(void)
|
||||
m_thrdWorking = true;
|
||||
LWP_CreateThread(&thread, (void *(*)(void *))CMenu::_NandDumper, (void *)this, 0, 32768, 40);
|
||||
}
|
||||
else if(BTN_A_PRESSED && (m_btnMgr.selected(m_nandemuBtnNandFolder)))
|
||||
{
|
||||
_hideNandEmu(true);
|
||||
path = _FolderExplorer();
|
||||
if(!path.empty())
|
||||
{
|
||||
if(path.find("sd:/") != string::npos)
|
||||
m_cfg.setInt(CHANNEL_DOMAIN, "partition", 0);
|
||||
else
|
||||
{
|
||||
const char *partval = &path[3];
|
||||
m_cfg.setInt(CHANNEL_DOMAIN, "partition", atoi(partval));
|
||||
}
|
||||
path = path.erase(0,path.find_first_of("/"));
|
||||
m_cfg.setString(CHANNEL_DOMAIN, "path", path);
|
||||
m_cfg.setBool(CHANNEL_DOMAIN, "update_cache", true);
|
||||
}
|
||||
_showNandEmu();
|
||||
}
|
||||
else if(BTN_A_PRESSED && (m_btnMgr.selected(m_nandemuBtnNandSavesFolder)))
|
||||
{
|
||||
_hideNandEmu(true);
|
||||
path = _FolderExplorer();
|
||||
if(!path.empty())
|
||||
{
|
||||
if(path.find("sd:/") != string::npos)
|
||||
m_cfg.setInt(WII_DOMAIN, "savepartition", 0);
|
||||
else
|
||||
{
|
||||
const char *partval = &path[3];
|
||||
m_cfg.setInt(WII_DOMAIN, "savepartition", atoi(partval));
|
||||
}
|
||||
path = path.erase(0,path.find_first_of("/"));
|
||||
m_cfg.setString(WII_DOMAIN, "savepath", path);
|
||||
}
|
||||
_showNandEmu();
|
||||
}
|
||||
else if(BTN_A_PRESSED && (m_btnMgr.selected(m_nandemuBtnBack)))
|
||||
{
|
||||
m_cfg.save();
|
||||
@ -755,6 +869,7 @@ void CMenu::_initNandEmuMenu()
|
||||
_addUserLabels(m_nandemuLblUser, ARRAY_SIZE(m_nandemuLblUser), "NANDEMU");
|
||||
m_nandemuBg = _texture("NANDEMU/BG", "texture", theme.bg, false);
|
||||
m_nandemuLblTitle = _addTitle("NANDEMU/TITLE", theme.titleFont, L"", 20, 30, 600, 60, theme.titleFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE);
|
||||
|
||||
m_nandfileLblMessage = _addLabel("NANDEMU/FMESSAGE", theme.lblFont, L"", 40, 230, 560, 100, theme.lblFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_TOP);
|
||||
m_nandemuLblMessage = _addLabel("NANDEMU/MESSAGE", theme.lblFont, L"", 40, 350, 560, 100, theme.lblFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_TOP);
|
||||
m_nandfileLblDialog = _addLabel("NANDEMU/FDIALOG", theme.lblFont, L"", 40, 60, 560, 200, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
||||
@ -762,6 +877,7 @@ void CMenu::_initNandEmuMenu()
|
||||
m_nandemuLblDialog = _addLabel("NANDEMU/DIALOG", theme.lblFont, L"", 40, 180, 560, 200, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
||||
m_nandfilePBar = _addProgressBar("NANDEMU/FILEPROGRESS_BAR", 40, 200, 560, 20);
|
||||
m_nandemuPBar = _addProgressBar("NANDEMU/PROGRESS_BAR", 40, 320, 560, 20);
|
||||
|
||||
m_nandemuLblEmulation = _addLabel("NANDEMU/EMU_SAVE", theme.lblFont, L"", 40, 130, 340, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
||||
m_nandemuLblEmulationVal = _addLabel("NANDEMU/EMU_SAVE_BTN_GLOBAL", theme.btnFont, L"", 400, 130, 144, 56, theme.btnFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE, theme.btnTexC);
|
||||
m_nandemuBtnEmulationM = _addPicButton("NANDEMU/EMU_SAVE_MINUS", theme.btnTexMinus, theme.btnTexMinusS, 344, 130, 56, 56);
|
||||
@ -771,7 +887,18 @@ void CMenu::_initNandEmuMenu()
|
||||
m_nandemuBtnMissing = _addButton("NANDEMU/MISSING_BTN", theme.btnFont, L"", 350, 250, 250, 56, theme.btnFontColor);
|
||||
m_nandemuLblNandDump = _addLabel("NANDEMU/NAND_DUMP", theme.lblFont, L"", 40, 310, 340, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
||||
m_nandemuBtnNandDump = _addButton("NANDEMU/NAND_DUMP_BTN", theme.btnFont, L"", 350, 310, 250, 56, theme.btnFontColor);
|
||||
|
||||
m_nandemuLblNandFolder = _addLabel("NANDEMU/NAND_FOLDER", theme.lblFont, L"", 40, 130, 340, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
||||
m_nandemuBtnNandFolder = _addButton("NANDEMU/NAND_FOLDER_BTN", theme.btnFont, L"", 350, 130, 250, 56, theme.btnFontColor);
|
||||
m_nandemuLblNandSavesFolder = _addLabel("NANDEMU/NAND_SAVES_FOLDER", theme.lblFont, L"", 40, 190, 340, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
||||
m_nandemuBtnNandSavesFolder = _addButton("NANDEMU/NAND_SAVES_FOLDER_BTN", theme.btnFont, L"", 350, 190, 250, 56, theme.btnFontColor);
|
||||
|
||||
m_nandemuBtnBack = _addButton("NANDEMU/BACK_BTN", theme.btnFont, L"", 420, 400, 200, 56, theme.btnFontColor);
|
||||
m_nandemuLblPage = _addLabel("NANDEMU/PAGE_BTN", theme.btnFont, L"", 62, 400, 98, 56, theme.btnFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE, theme.btnTexC);
|
||||
m_nandemuBtnPageM = _addPicButton("NANDEMU/PAGE_MINUS", theme.btnTexMinus, theme.btnTexMinusS, 10, 400, 52, 56);
|
||||
m_nandemuBtnPageP = _addPicButton("NANDEMU/PAGE_PLUS", theme.btnTexPlus, theme.btnTexPlusS, 160, 400, 52, 56);
|
||||
m_nandemuBtnBack = _addButton("NANDEMU/BACK_BTN", theme.btnFont, L"", 420, 400, 200, 56, theme.btnFontColor);
|
||||
|
||||
m_nandemuBtnExtract = _addButton("NANDEMU/EXTRACT", theme.titleFont, L"", 72, 180, 496, 56, theme.titleFontColor);
|
||||
m_nandemuBtnDisable = _addButton("NANDEMU/DISABLE", theme.titleFont, L"", 72, 270, 496, 56, theme.titleFontColor);
|
||||
m_nandemuBtnPartition = _addButton("NANDEMU/PARTITION", theme.titleFont, L"", 72, 360, 496, 56, theme.titleFontColor);
|
||||
@ -785,6 +912,7 @@ void CMenu::_initNandEmuMenu()
|
||||
_setHideAnim(m_nandemuLblDialog, "NANDEMU/DIALOG", 0, 0, -2.f, 0.f);
|
||||
_setHideAnim(m_nandfilePBar, "NANDEMU/FILEPROGRESS_BAR", 0, 0, -2.f, 0.f);
|
||||
_setHideAnim(m_nandemuPBar, "NANDEMU/PROGRESS_BAR", 0, 0, -2.f, 0.f);
|
||||
|
||||
_setHideAnim(m_nandemuLblEmulation, "NANDEMU/EMU_SAVE", 100, 0, -2.f, 0.f);
|
||||
_setHideAnim(m_nandemuLblEmulationVal, "NANDEMU/EMU_SAVE_BTN_GLOBAL", 0, 0, 1.f, -1.f);
|
||||
_setHideAnim(m_nandemuBtnEmulationM, "NANDEMU/EMU_SAVE_MINUS", 0, 0, 1.f, -1.f);
|
||||
@ -794,7 +922,17 @@ void CMenu::_initNandEmuMenu()
|
||||
_setHideAnim(m_nandemuBtnMissing, "NANDEMU/MISSING_BTN", 0, 0, -2.f, 0.f);
|
||||
_setHideAnim(m_nandemuLblNandDump, "NANDEMU/NAND_DUMP", 100, 0, -2.f, 0.f);
|
||||
_setHideAnim(m_nandemuBtnNandDump, "NANDEMU/NAND_DUMP_BTN", 0, 0, -2.f, 0.f);
|
||||
|
||||
_setHideAnim(m_nandemuLblNandFolder, "NANDEMU/NAND_FOLDER", 100, 0, -2.f, 0.f);
|
||||
_setHideAnim(m_nandemuBtnNandFolder, "NANDEMU/NAND_FOLDER_BTN", 0, 0, -2.f, 0.f);
|
||||
_setHideAnim(m_nandemuLblNandSavesFolder, "NANDEMU/NAND_SAVES_FOLDER", 100, 0, -2.f, 0.f);
|
||||
_setHideAnim(m_nandemuBtnNandSavesFolder, "NANDEMU/NAND_SAVES_FOLDER_BTN", 0, 0, -2.f, 0.f);
|
||||
|
||||
_setHideAnim(m_nandemuBtnBack, "NANDEMU/BACK_BTN", 0, 0, -2.f, 0.f);
|
||||
_setHideAnim(m_nandemuLblPage, "NANDEMU/PAGE_BTN", 0, 0, -1.f, 1.f);
|
||||
_setHideAnim(m_nandemuBtnPageM, "NANDEMU/PAGE_MINUS", 0, 0, -1.f, 1.f);
|
||||
_setHideAnim(m_nandemuBtnPageP, "NANDEMU/PAGE_PLUS", 0, 0, -1.f, 1.f);
|
||||
|
||||
_setHideAnim(m_nandemuBtnExtract, "NANDEMU/EXTRACT", 0, 0, -2.f, 0.f);
|
||||
_setHideAnim(m_nandemuBtnPartition, "NANDEMU/PARTITION", 0, 0, -2.f, 0.f);
|
||||
_setHideAnim(m_nandemuBtnDisable, "NANDEMU/DISABLE", 0, 0, -2.f, 0.f);
|
||||
@ -806,6 +944,10 @@ void CMenu::_initNandEmuMenu()
|
||||
|
||||
void CMenu::_textNandEmu(void)
|
||||
{
|
||||
m_btnMgr.setText(m_nandemuLblNandFolder, _t("cfgne32", L"Change Nand"));
|
||||
m_btnMgr.setText(m_nandemuLblNandSavesFolder, _t("cfgne33", L"Change Saves Nand"));
|
||||
m_btnMgr.setText(m_nandemuBtnNandFolder, _t("dl16", L"Set"));
|
||||
m_btnMgr.setText(m_nandemuBtnNandSavesFolder, _t("dl16", L"Set"));
|
||||
m_btnMgr.setText(m_nandemuLblEmulation, _t("cfgne1", L"NAND Emulation"));
|
||||
m_btnMgr.setText(m_nandemuLblSaveDump, _t("cfgne2", L"Extract Game Saves"));
|
||||
m_btnMgr.setText(m_nandemuBtnAll, _t("cfgne3", L"All"));
|
||||
|
@ -133,6 +133,8 @@ cfgne28=Game Save Flasher
|
||||
cfgne29=Flashed: %d saves / %d files / %d folders
|
||||
cfgne30=Flashing save files finished!
|
||||
cfgne31=Select Partition
|
||||
cfgne32=Change Nand
|
||||
cfgne32=Change Saves Nand
|
||||
cfgp1=Game Partition
|
||||
cfgp3=Init network on boot
|
||||
cfgpl1=Select Plugins
|
||||
|
Loading…
Reference in New Issue
Block a user