mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-23 19:59:16 +01:00
- added source menu setup via Home button while view source menu. Setup includes hide buttons, link buttons to plugins, and set roms path of plugins.
- organized main settings pg 10 thru 13 better.
This commit is contained in:
parent
493f62f295
commit
e0445a0cc0
Binary file not shown.
BIN
out/boot.dol
BIN
out/boot.dol
Binary file not shown.
Before Width: | Height: | Size: 4.1 MiB After Width: | Height: | Size: 4.1 MiB |
@ -1,6 +1,6 @@
|
||||
|
||||
#define APP_NAME "WiiFlow WFL"
|
||||
#define APP_VERSION "5.4.7"
|
||||
#define APP_VERSION "5.4.7 beta 1"
|
||||
|
||||
#define APP_DATA_DIR "wiiflow"
|
||||
#define APPS_DIR "apps/wiiflow"
|
||||
|
@ -106,7 +106,7 @@ bool CMenu::init(bool usb_mounted)
|
||||
{
|
||||
SoundHandle.Init();
|
||||
m_gameSound.SetVoice(1);
|
||||
/* Clear Playlog */
|
||||
/* Clear Playlog to prevent wiiflow from being added to it */
|
||||
Playlog_Delete();
|
||||
|
||||
/* Find the first partition with apps/wiiflow folder */
|
||||
@ -1256,6 +1256,7 @@ void CMenu::_buildMenus(void)
|
||||
_initExplorer();
|
||||
_initBoot();
|
||||
_initPathsMenu();
|
||||
_initCheckboxesMenu();
|
||||
|
||||
_loadCFCfg();
|
||||
}
|
||||
@ -1964,6 +1965,7 @@ void CMenu::_updateText(void)
|
||||
_textCoverBanner();
|
||||
_textExplorer();
|
||||
_textWad();
|
||||
_textCheckboxesMenu();
|
||||
}
|
||||
|
||||
const wstringEx CMenu::_fmt(const char *key, const wchar_t *def)
|
||||
@ -2002,12 +2004,9 @@ void CMenu::_initCF(void)
|
||||
|
||||
if(m_sourceflow)
|
||||
{
|
||||
CoverFlow.addItem(&(*hdr), 0, 0);
|
||||
if(m_source.getBool(sfmt("button_%i", hdr->settings[0]), "hidden", false) == false)
|
||||
CoverFlow.addItem(&(*hdr), 0, 0);
|
||||
continue;
|
||||
/*strcpy(tmp1, "source/");
|
||||
wcstombs(tmp2, hdr->title, 64);
|
||||
strcat(tmp1, tmp2);
|
||||
id = tmp1;*/
|
||||
}
|
||||
else if(hdr->type == TYPE_HOMEBREW)
|
||||
{
|
||||
|
@ -192,6 +192,7 @@ private:
|
||||
TexData m_config4Bg;
|
||||
TexData m_configAdvBg;
|
||||
TexData m_configSndBg;
|
||||
TexData m_config7Bg;
|
||||
TexData m_cheatBg;
|
||||
TexData m_downloadBg;
|
||||
TexData m_gameinfoBg;
|
||||
@ -330,6 +331,20 @@ private:
|
||||
s16 m_configScreenBtnTVYM;
|
||||
s16 m_configScreenBtnTVYP;
|
||||
s16 m_configScreenLblUser[4];
|
||||
|
||||
s16 m_config7Lbl1;
|
||||
s16 m_config7Lbl2;
|
||||
s16 m_config7Lbl3;
|
||||
s16 m_config7Lbl4;
|
||||
s16 m_config7Btn1;
|
||||
s16 m_config7Btn2;
|
||||
s16 m_config7Btn3;
|
||||
s16 m_config7Btn4;
|
||||
s16 m_config7Lbl4Val;
|
||||
s16 m_config7Btn4M;
|
||||
s16 m_config7Btn4P;
|
||||
s16 m_config7LblUser[4];
|
||||
|
||||
//Download menu
|
||||
s16 m_downloadPrioVal;
|
||||
enum CoverPrio
|
||||
@ -950,6 +965,7 @@ private:
|
||||
void _initExplorer();
|
||||
void _initWad();
|
||||
void _initPathsMenu();
|
||||
void _initCheckboxesMenu();
|
||||
//
|
||||
void _textSource(void);
|
||||
void _textCfgSrc(void);
|
||||
@ -982,6 +998,7 @@ private:
|
||||
void _textExplorer(void);
|
||||
void _textWad(void);
|
||||
void _textPaths(void);
|
||||
void _textCheckboxesMenu(void);
|
||||
//
|
||||
void _hideCheatSettings(bool instant = false);
|
||||
void _hideError(bool instant = false);
|
||||
@ -1020,6 +1037,8 @@ private:
|
||||
void _hideExplorer(bool instant = false);
|
||||
void _hideWad(bool instant = false);
|
||||
void _hidePaths(bool instant = false);
|
||||
void _hideCheckboxesMenu(bool instant = false);
|
||||
void _hideSM_Editor(bool instant = false);
|
||||
//
|
||||
void _showError(void);
|
||||
void _showMain(void);
|
||||
@ -1056,6 +1075,8 @@ private:
|
||||
void _showExplorer(void);
|
||||
void _showWad(void);
|
||||
void _showPaths(void);
|
||||
void _showCheckboxesMenu(void);
|
||||
void _showSM_Editor(void);
|
||||
|
||||
void _showCF(bool refreshList = false);
|
||||
void _refreshExplorer(s8 direction = 0);
|
||||
@ -1063,7 +1084,9 @@ private:
|
||||
void _updateSourceBtns(void);
|
||||
void _updatePluginText(void);
|
||||
void _updatePluginCheckboxes(void);
|
||||
void _updateCheckboxesText(void);
|
||||
void _updateCheckboxes(void);
|
||||
void _updateCatCheckboxes(void);
|
||||
void _getGameCategories(void);
|
||||
void _setGameCategories(void);
|
||||
void _setCatGenDomain(void);
|
||||
@ -1119,6 +1142,8 @@ private:
|
||||
void _CfgSrc();
|
||||
void _CfgHB();
|
||||
void _PluginSettings();
|
||||
void _checkboxesMenu(u8 md);
|
||||
void _SM_Editor();
|
||||
void _CategorySettings(bool fromGameSet = false);
|
||||
bool _Home();
|
||||
bool _ExitTo();
|
||||
|
@ -57,7 +57,7 @@ void CMenu::_showCategorySettings(void)
|
||||
m_btnMgr.show(m_categoryLblTitle);
|
||||
m_btnMgr.show(m_categoryBtnClear);
|
||||
m_btnMgr.show(m_categoryBtnBack);
|
||||
_updateCheckboxes();
|
||||
_updateCatCheckboxes();
|
||||
}
|
||||
|
||||
void CMenu::_setCatGenDomain()
|
||||
@ -98,7 +98,7 @@ void CMenu::_setCatGenDomain()
|
||||
}
|
||||
}
|
||||
|
||||
void CMenu::_updateCheckboxes(void)
|
||||
void CMenu::_updateCatCheckboxes(void)
|
||||
{
|
||||
for(u8 i = 1; i < 11; ++i)
|
||||
{
|
||||
@ -343,7 +343,7 @@ void CMenu::_CategorySettings(bool fromGameSet)
|
||||
curPage = ((m_max_categories - 2) / 10) + 1;
|
||||
if(BTN_LEFT_PRESSED || BTN_MINUS_PRESSED)
|
||||
m_btnMgr.click(m_categoryBtnPageM);
|
||||
_updateCheckboxes();
|
||||
_updateCatCheckboxes();
|
||||
}
|
||||
else if((BTN_RIGHT_PRESSED && m_max_categories>11) || (BTN_A_PRESSED && m_btnMgr.selected(m_categoryBtnPageP)))
|
||||
{
|
||||
@ -354,7 +354,7 @@ void CMenu::_CategorySettings(bool fromGameSet)
|
||||
curPage = 1;
|
||||
if(BTN_RIGHT_PRESSED || BTN_PLUS_PRESSED)
|
||||
m_btnMgr.click(m_categoryBtnPageP);
|
||||
_updateCheckboxes();
|
||||
_updateCatCheckboxes();
|
||||
}
|
||||
if(BTN_A_PRESSED)
|
||||
{
|
||||
@ -373,7 +373,7 @@ void CMenu::_CategorySettings(bool fromGameSet)
|
||||
}
|
||||
if(!hiddenCat)
|
||||
m_categories.at(0) = '1';
|
||||
_updateCheckboxes();
|
||||
_updateCatCheckboxes();
|
||||
}
|
||||
for(u8 i = 1; i < 11; ++i)
|
||||
{
|
||||
|
@ -3,24 +3,6 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
s16 m_config7Lbl1;
|
||||
s16 m_config7Lbl2;
|
||||
s16 m_config7Lbl3;
|
||||
s16 m_config7Lbl4;
|
||||
|
||||
s16 m_config7Btn1;
|
||||
s16 m_config7Btn2;
|
||||
s16 m_config7Btn3;
|
||||
s16 m_config7Btn4;
|
||||
|
||||
s16 m_config7Lbl4Val;
|
||||
s16 m_config7Btn4M;
|
||||
s16 m_config7Btn4P;
|
||||
|
||||
s16 m_config7LblUser[4];
|
||||
|
||||
TexData m_config7Bg;
|
||||
|
||||
void CMenu::_hideConfig7(bool instant)
|
||||
{
|
||||
_hideConfigCommon(instant);
|
||||
@ -118,8 +100,8 @@ void CMenu::_showConfig7(int curPage)
|
||||
}
|
||||
else if(curPage == 10)
|
||||
{
|
||||
m_btnMgr.setText(m_config7Lbl1, _t("cfg713", L"Use HQ covers"));
|
||||
m_btnMgr.setText(m_config7Btn1, m_cfg.getBool("GENERAL", "cover_use_hq") ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
m_btnMgr.setText(m_config7Lbl1, _t("cfg728", L"Upsample music to 48khz"));
|
||||
m_btnMgr.setText(m_config7Btn1, m_cfg.getBool("general", "resample_to_48khz", true) ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
m_btnMgr.setText(m_config7Lbl2, _t("cfg714", L"Display music title"));
|
||||
m_btnMgr.setText(m_config7Btn2, m_cfg.getBool("GENERAL", "display_music_info") ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
m_btnMgr.setText(m_config7Lbl3, _t("cfg715", L"Randomize music"));
|
||||
@ -131,8 +113,8 @@ void CMenu::_showConfig7(int curPage)
|
||||
{
|
||||
m_btnMgr.setText(m_config7Lbl1, _t("cfg717", L"Random game boot or select"));
|
||||
m_btnMgr.setText(m_config7Btn1, m_cfg.getBool("GENERAL", "random_select") ? _t("select", L"Select") : _t("boot", L"Boot"));
|
||||
m_btnMgr.setText(m_config7Lbl2, _t("cfg718", L"Source Menu on start"));
|
||||
m_btnMgr.setText(m_config7Btn2, m_cfg.getBool("GENERAL", "source_on_start") ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
m_btnMgr.setText(m_config7Lbl2, _t("cfg725", L"Shutdown to idle standby"));
|
||||
m_btnMgr.setText(m_config7Btn2, m_cfg.getBool("general", "idle_standby", false) ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
m_btnMgr.setText(m_config7Lbl3, _t("cfg720", L"Play GC banner sound"));
|
||||
m_btnMgr.setText(m_config7Btn3, m_cfg.getBool(GC_DOMAIN, "play_banner_sound") ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
m_btnMgr.setText(m_config7Lbl4, _t("cfg721", L"Play GC default sound"));
|
||||
@ -142,12 +124,12 @@ void CMenu::_showConfig7(int curPage)
|
||||
{
|
||||
m_btnMgr.setText(m_config7Lbl1, _t("cfg722", L"Homebrew settings"));
|
||||
m_btnMgr.setText(m_config7Btn1, _t("cfg14", L"Set"));
|
||||
m_btnMgr.setText(m_config7Lbl2, _t("cfg723", L"Source menu settings"));
|
||||
m_btnMgr.setText(m_config7Lbl2, _t("cfg723", L"Sourceflow settings"));
|
||||
m_btnMgr.setText(m_config7Btn2, _t("cfg14", L"Set"));
|
||||
m_btnMgr.setText(m_config7Lbl3, _t("cfg724", L"Lock coverflow layouts"));
|
||||
m_btnMgr.setText(m_config7Btn3, m_cfg.getBool("general", "cf_locked") ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
m_btnMgr.setText(m_config7Lbl4, _t("cfg725", L"Shutdown to idle standby"));
|
||||
m_btnMgr.setText(m_config7Btn4, m_cfg.getBool("general", "idle_standby", false) ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
m_btnMgr.setText(m_config7Lbl3, _t("cfg718", L"Source Menu on start"));
|
||||
m_btnMgr.setText(m_config7Btn3, m_cfg.getBool("GENERAL", "source_on_start") ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
m_btnMgr.setText(m_config7Lbl4, _t("cfg727", L"Use Plugin Database Titles"));
|
||||
m_btnMgr.setText(m_config7Btn4, m_cfg.getBool(PLUGIN_DOMAIN, "database_titles", true) ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
}
|
||||
else // page 13
|
||||
{
|
||||
@ -155,10 +137,10 @@ void CMenu::_showConfig7(int curPage)
|
||||
m_btnMgr.setText(m_config7Btn1, m_cfg.getBool(WII_DOMAIN, "fix480p", false) ? _t("on", L"On") : _t("off", L"Off"));
|
||||
m_btnMgr.setText(m_config7Lbl2, _t("cfg726", L"Covers Box Mode"));
|
||||
m_btnMgr.setText(m_config7Btn2, m_cfg.getBool("general", "box_mode", false) ? _t("on", L"On") : _t("off", L"Off"));
|
||||
m_btnMgr.setText(m_config7Lbl3, _t("cfg727", L"Use Plugin Database Titles"));
|
||||
m_btnMgr.setText(m_config7Btn3, m_cfg.getBool(PLUGIN_DOMAIN, "database_titles", true) ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
m_btnMgr.setText(m_config7Lbl4, _t("cfg728", L"Upsample music to 48khz"));
|
||||
m_btnMgr.setText(m_config7Btn4, m_cfg.getBool("general", "resample_to_48khz", true) ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
m_btnMgr.setText(m_config7Lbl3, _t("cfg713", L"Use HQ covers"));
|
||||
m_btnMgr.setText(m_config7Btn3, m_cfg.getBool("GENERAL", "cover_use_hq") ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
m_btnMgr.setText(m_config7Lbl4, _t("cfg724", L"Lock coverflow layouts"));
|
||||
m_btnMgr.setText(m_config7Btn4, m_cfg.getBool("general", "cf_locked") ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -260,8 +242,12 @@ int CMenu::_config7(int curPage)
|
||||
{
|
||||
if(m_btnMgr.selected(m_config7Btn1))
|
||||
{
|
||||
m_cfg.setBool("GENERAL", "cover_use_hq", !m_cfg.getBool("GENERAL", "cover_use_hq"));
|
||||
m_btnMgr.setText(m_config7Btn1, m_cfg.getBool("GENERAL", "cover_use_hq") ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
bool val = !m_cfg.getBool("general", "resample_to_48khz");
|
||||
m_cfg.setBool("general", "resample_to_48khz", val);
|
||||
m_btnMgr.setText(m_config7Btn1, val ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
MusicPlayer.SetResampleSetting(val);
|
||||
MusicPlayer.Stop();
|
||||
MusicPlayer.LoadCurrentFile();
|
||||
}
|
||||
else if(m_btnMgr.selected(m_config7Btn2))
|
||||
{
|
||||
@ -293,8 +279,9 @@ int CMenu::_config7(int curPage)
|
||||
}
|
||||
else if(m_btnMgr.selected(m_config7Btn2))
|
||||
{
|
||||
m_cfg.setBool("GENERAL", "source_on_start", !m_cfg.getBool("GENERAL", "source_on_start"));
|
||||
m_btnMgr.setText(m_config7Btn2, m_cfg.getBool("GENERAL", "source_on_start") ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
bool val = !m_cfg.getBool("general", "idle_standby");
|
||||
m_cfg.setBool("general", "idle_standby", val);
|
||||
m_btnMgr.setText(m_config7Btn2, val ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
}
|
||||
else if(m_btnMgr.selected(m_config7Btn3))
|
||||
{
|
||||
@ -325,16 +312,14 @@ int CMenu::_config7(int curPage)
|
||||
}
|
||||
else if(m_btnMgr.selected(m_config7Btn3))
|
||||
{
|
||||
bool val = !m_cfg.getBool("general", "cf_locked");
|
||||
m_cfg.setBool("general", "cf_locked", val);
|
||||
m_btnMgr.setText(m_config7Btn3, val ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
CFLocked = val;
|
||||
m_cfg.setBool("GENERAL", "source_on_start", !m_cfg.getBool("GENERAL", "source_on_start"));
|
||||
m_btnMgr.setText(m_config7Btn3, m_cfg.getBool("GENERAL", "source_on_start") ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
}
|
||||
else if(m_btnMgr.selected(m_config7Btn4))
|
||||
{
|
||||
bool val = !m_cfg.getBool("general", "idle_standby");
|
||||
m_cfg.setBool("general", "idle_standby", val);
|
||||
m_btnMgr.setText(m_config7Btn4, val ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
bool val = !m_cfg.getBool(PLUGIN_DOMAIN, "database_titles");
|
||||
m_cfg.setBool(PLUGIN_DOMAIN, "database_titles", val);
|
||||
m_btnMgr.setText(m_config7Btn4, val ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
}
|
||||
}
|
||||
if(curPage == 13)
|
||||
@ -345,26 +330,23 @@ int CMenu::_config7(int curPage)
|
||||
m_cfg.setBool(WII_DOMAIN, "fix480p", val);
|
||||
m_btnMgr.setText(m_config7Btn1, val ? _t("on", L"On") : _t("off", L"Off"));
|
||||
}
|
||||
if(m_btnMgr.selected(m_config7Btn2))
|
||||
else if(m_btnMgr.selected(m_config7Btn2))
|
||||
{
|
||||
bool val = !m_cfg.getBool("general", "box_mode");
|
||||
m_cfg.setBool("general", "box_mode", val);
|
||||
m_btnMgr.setText(m_config7Btn2, val ? _t("on", L"On") : _t("off", L"Off"));
|
||||
}
|
||||
if(m_btnMgr.selected(m_config7Btn3))
|
||||
else if(m_btnMgr.selected(m_config7Btn3))
|
||||
{
|
||||
bool val = !m_cfg.getBool(PLUGIN_DOMAIN, "database_titles");
|
||||
m_cfg.setBool(PLUGIN_DOMAIN, "database_titles", val);
|
||||
m_btnMgr.setText(m_config7Btn3, val ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
m_cfg.setBool("GENERAL", "cover_use_hq", !m_cfg.getBool("GENERAL", "cover_use_hq"));
|
||||
m_btnMgr.setText(m_config7Btn3, m_cfg.getBool("GENERAL", "cover_use_hq") ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
}
|
||||
if(m_btnMgr.selected(m_config7Btn4))
|
||||
else if(m_btnMgr.selected(m_config7Btn4))
|
||||
{
|
||||
bool val = !m_cfg.getBool("general", "resample_to_48khz");
|
||||
m_cfg.setBool("general", "resample_to_48khz", val);
|
||||
m_btnMgr.setText(m_config7Btn4, val ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
MusicPlayer.SetResampleSetting(val);
|
||||
MusicPlayer.Stop();
|
||||
MusicPlayer.LoadCurrentFile();
|
||||
bool val = !m_cfg.getBool("general", "cf_locked");
|
||||
m_cfg.setBool("general", "cf_locked", val);
|
||||
m_btnMgr.setText(m_config7Btn4, val ? _t("yes", L"Yes") : _t("no", L"No"));
|
||||
CFLocked = val;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -180,7 +180,7 @@ void CMenu::_initCfgSrc(void)
|
||||
|
||||
void CMenu::_textCfgSrc(void)
|
||||
{
|
||||
m_btnMgr.setText(m_cfgsrcLblTitle, _t("cfgsm1", L"Source Menu Settings"));
|
||||
m_btnMgr.setText(m_cfgsrcLblTitle, _t("cfgsm1", L"Sourceflow Settings"));
|
||||
m_btnMgr.setText(m_cfgsrcLblEnableSF, _t("cfgsm3", L"Enable Sourceflow"));
|
||||
m_btnMgr.setText(m_cfgsrcLblSmallbox, _t("cfgsm4", L"Sourceflow Smallbox"));
|
||||
m_btnMgr.setText(m_cfgsrcLblBoxMode, _t("cfghb4", L"Box Mode"));
|
||||
|
@ -462,14 +462,23 @@ int CMenu::main(void)
|
||||
{
|
||||
if(m_sourceflow)//back to base tier or exit sourceflow
|
||||
{
|
||||
if(!_srcTierBack(true))// if already on base tier exit sourceflow
|
||||
/*if(!_srcTierBack(true))// if already on base tier exit sourceflow
|
||||
{
|
||||
_restoreSrcTiers();
|
||||
m_sourceflow = false;
|
||||
}
|
||||
_getCustomBgTex();
|
||||
_setMainBg();
|
||||
_showCF(true);//refresh coverflow or sourceflow list
|
||||
_showCF(true);//refresh coverflow or sourceflow list*/
|
||||
_hideMain();
|
||||
_SM_Editor();
|
||||
if(BTN_B_HELD)
|
||||
{
|
||||
bheld = true;
|
||||
bUsed = true;
|
||||
}
|
||||
_setMainBg();
|
||||
_showCF(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
499
source/menu/menu_sm_editor.cpp
Normal file
499
source/menu/menu_sm_editor.cpp
Normal file
@ -0,0 +1,499 @@
|
||||
#include "menu.hpp"
|
||||
#include "gui/text.hpp"
|
||||
|
||||
#include <string.h>
|
||||
#include <gccore.h>
|
||||
#include <cmath>
|
||||
|
||||
u8 CB_curPage;
|
||||
u8 CB_numPages;
|
||||
u8 max_checkbox;
|
||||
u8 mode;
|
||||
u8 curSource;
|
||||
|
||||
// Checkboxes menu
|
||||
TexData m_checkboxesBg;
|
||||
s16 m_checkboxesLblUser[4];
|
||||
s16 m_checkboxesLblPage;
|
||||
s16 m_checkboxesBtnPageM;
|
||||
s16 m_checkboxesBtnPageP;
|
||||
s16 m_checkboxesBtnBack;
|
||||
s16 m_checkboxesLblTitle;
|
||||
|
||||
s16 m_checkboxLblTxt[11];
|
||||
s16 m_checkboxBtn[11];
|
||||
s16 m_checkboxBtnOff[11];
|
||||
s16 m_checkboxBtnOn[11];
|
||||
|
||||
void CMenu::_hideCheckboxesMenu(bool instant)
|
||||
{
|
||||
m_btnMgr.hide(m_checkboxesLblTitle, instant);
|
||||
m_btnMgr.hide(m_checkboxesBtnBack, instant);
|
||||
m_btnMgr.hide(m_checkboxesLblPage, instant);
|
||||
m_btnMgr.hide(m_checkboxesBtnPageM, instant);
|
||||
m_btnMgr.hide(m_checkboxesBtnPageP, instant);
|
||||
for(u8 i = 0; i < ARRAY_SIZE(m_checkboxesLblUser); ++i)
|
||||
if(m_checkboxesLblUser[i] != -1)
|
||||
m_btnMgr.hide(m_checkboxesLblUser[i], instant);
|
||||
|
||||
for(u8 i = 0; i < 11; ++i)
|
||||
{
|
||||
m_btnMgr.hide(m_checkboxLblTxt[i]);
|
||||
m_btnMgr.hide(m_checkboxBtn[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void CMenu::_showCheckboxesMenu(void)
|
||||
{
|
||||
_setBg(m_checkboxesBg, m_checkboxesBg);
|
||||
for(u8 i = 0; i < ARRAY_SIZE(m_checkboxesLblUser); ++i)
|
||||
if(m_checkboxesLblUser[i] != -1)
|
||||
m_btnMgr.show(m_checkboxesLblUser[i]);
|
||||
|
||||
if(mode == 1)
|
||||
m_btnMgr.setText(m_checkboxesLblTitle, _t("smedit1", L"Hide Sources"));
|
||||
else if(mode == 2)
|
||||
m_btnMgr.setText(m_checkboxesLblTitle, _t("smedit2", L"Choose Source"));
|
||||
else if(mode == 3)
|
||||
m_btnMgr.setText(m_checkboxesLblTitle, _t("smedit3", L"Choose Plugin"));
|
||||
else
|
||||
m_btnMgr.setText(m_checkboxesLblTitle, _t("smedit4", L"Choose Plugins"));
|
||||
|
||||
m_btnMgr.show(m_checkboxesLblTitle);
|
||||
m_btnMgr.show(m_checkboxesBtnBack);
|
||||
_updateCheckboxes();
|
||||
}
|
||||
|
||||
void CMenu::_updateCheckboxesText(void)
|
||||
{
|
||||
u32 firstCheckbox= (CB_curPage - 1) * 10;
|
||||
for(u8 i = 1; i < min(firstCheckbox + 10, (u32)max_checkbox) - firstCheckbox + 1; i++)
|
||||
{
|
||||
if(mode == 1 || mode == 2)
|
||||
{
|
||||
string button = sfmt("button_%i", firstCheckbox + i - 1);
|
||||
m_btnMgr.setText(m_checkboxLblTxt[i], m_source.getWString(button, "title", button));
|
||||
}
|
||||
else if(mode == 3 || mode == 4)
|
||||
{
|
||||
m_btnMgr.setText(m_checkboxLblTxt[i], m_plugin.GetPluginName(firstCheckbox + i - 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CMenu::_updateCheckboxes(void)
|
||||
{
|
||||
if(max_checkbox > 10)
|
||||
{
|
||||
m_btnMgr.setText(m_checkboxesLblPage, wfmt(L"%i / %i", CB_curPage, CB_numPages));
|
||||
m_btnMgr.show(m_checkboxesLblPage);
|
||||
m_btnMgr.show(m_checkboxesBtnPageM);
|
||||
m_btnMgr.show(m_checkboxesBtnPageP);
|
||||
}
|
||||
for(int i = 0; i < 11; ++i)
|
||||
{
|
||||
m_btnMgr.hide(m_checkboxBtn[i]);
|
||||
m_btnMgr.hide(m_checkboxLblTxt[i]);
|
||||
}
|
||||
|
||||
vector<string> magicNums;
|
||||
if(mode == 4)
|
||||
{
|
||||
magicNums = m_source.getStrings(sfmt("button_%i", curSource), "magic", ',');
|
||||
}
|
||||
u32 firstCheckbox = (CB_curPage - 1) * 10;
|
||||
for(u8 i = 1; i < min(firstCheckbox + 10, (u32)max_checkbox) - firstCheckbox + 1; ++i)
|
||||
{
|
||||
if(mode == 1)
|
||||
{
|
||||
if(m_source.getBool(sfmt("button_%i", firstCheckbox + i - 1), "hidden", false))
|
||||
m_checkboxBtn[i] = m_checkboxBtnOn[i];
|
||||
else
|
||||
m_checkboxBtn[i] = m_checkboxBtnOff[i];
|
||||
}
|
||||
else if(mode == 2)
|
||||
{
|
||||
m_checkboxBtn[i] = m_checkboxBtnOff[i];// all sources off
|
||||
}
|
||||
else if(mode == 3)
|
||||
{
|
||||
m_checkboxBtn[i] = m_checkboxBtnOff[i];// all plugins off
|
||||
}
|
||||
else
|
||||
{
|
||||
bool found = false;
|
||||
string pluginMagic = sfmt("%08x", m_plugin.GetPluginMagic(firstCheckbox + i - 1));
|
||||
|
||||
if(magicNums.size() > 0)
|
||||
{
|
||||
for(u8 j = 0; j < magicNums.size(); j++)
|
||||
{
|
||||
string tmp = lowerCase(magicNums[j]);
|
||||
if(tmp == pluginMagic)
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(found)
|
||||
m_checkboxBtn[i] = m_checkboxBtnOn[i];
|
||||
else
|
||||
m_checkboxBtn[i] = m_checkboxBtnOff[i];
|
||||
}
|
||||
}
|
||||
m_btnMgr.show(m_checkboxBtn[i]);
|
||||
m_btnMgr.show(m_checkboxLblTxt[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void CMenu::_checkboxesMenu(u8 md)
|
||||
{
|
||||
mode = md;
|
||||
if(mode == 1 || mode == 2)
|
||||
max_checkbox = m_max_source_btn + 1;
|
||||
else
|
||||
{
|
||||
max_checkbox = 0;
|
||||
while(m_plugin.PluginExist(max_checkbox)) max_checkbox++;
|
||||
}
|
||||
|
||||
CB_curPage = 1;
|
||||
CB_numPages = (max_checkbox / 10) + 1;
|
||||
|
||||
SetupInput();
|
||||
_showCheckboxesMenu();
|
||||
_updateCheckboxesText();
|
||||
while(!m_exit)
|
||||
{
|
||||
_mainLoopCommon();
|
||||
if(BTN_HOME_PRESSED || BTN_B_PRESSED || (BTN_A_PRESSED && m_btnMgr.selected(m_checkboxesBtnBack)))
|
||||
{
|
||||
if(mode == 4)
|
||||
{
|
||||
m_btnMgr.setText(m_checkboxesLblTitle, _t("smedit2", L"Choose Source"));
|
||||
mode = 2;
|
||||
max_checkbox = m_max_source_btn;
|
||||
CB_curPage = (curSource + 1) / 10 + 1;
|
||||
CB_numPages = (max_checkbox / 10) + 1;
|
||||
_updateCheckboxes();
|
||||
_updateCheckboxesText();
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
else if(BTN_UP_PRESSED)
|
||||
m_btnMgr.up();
|
||||
else if(BTN_DOWN_PRESSED)
|
||||
m_btnMgr.down();
|
||||
if((BTN_MINUS_PRESSED || BTN_LEFT_PRESSED) || (BTN_A_PRESSED && m_btnMgr.selected(m_checkboxesBtnPageM)))
|
||||
{
|
||||
CB_curPage--;
|
||||
if(CB_curPage == 0)
|
||||
CB_curPage = CB_numPages;
|
||||
if(BTN_LEFT_PRESSED || BTN_MINUS_PRESSED)
|
||||
m_btnMgr.click(m_checkboxesBtnPageM);
|
||||
_updateCheckboxes();
|
||||
_updateCheckboxesText();
|
||||
}
|
||||
else if(((BTN_PLUS_PRESSED || BTN_RIGHT_PRESSED)) || (BTN_A_PRESSED && m_btnMgr.selected(m_checkboxesBtnPageP)))
|
||||
{
|
||||
CB_curPage++;
|
||||
if(CB_curPage > CB_numPages)
|
||||
CB_curPage = 1;
|
||||
if(BTN_RIGHT_PRESSED || BTN_PLUS_PRESSED)
|
||||
m_btnMgr.click(m_checkboxesBtnPageP);
|
||||
_updateCheckboxes();
|
||||
_updateCheckboxesText();
|
||||
}
|
||||
if(BTN_A_PRESSED)
|
||||
{
|
||||
u32 firstCheckbox = (CB_curPage - 1) * 10;
|
||||
for(u8 i = 1; i <= min(firstCheckbox + 10, (u32)max_checkbox) - firstCheckbox + 1; ++i)
|
||||
{
|
||||
if(m_btnMgr.selected(m_checkboxBtn[i]))
|
||||
{
|
||||
if(mode == 1)
|
||||
{
|
||||
string button = sfmt("button_%i", firstCheckbox + i - 1);
|
||||
bool val = !m_source.getBool(button, "hidden", false);
|
||||
m_source.setBool(button, "hidden", val);
|
||||
_updateCheckboxes();
|
||||
m_btnMgr.setSelected(m_checkboxBtn[i]);
|
||||
break;
|
||||
}
|
||||
else if(mode == 2)
|
||||
{
|
||||
string source = m_source.getString(sfmt("button_%i", firstCheckbox + i - 1), "source", "");
|
||||
if(source != "plugin")
|
||||
{
|
||||
_hideCheckboxesMenu();
|
||||
error(_t("smediterr", L"Not allowed!"));
|
||||
_showCheckboxesMenu();
|
||||
}
|
||||
else
|
||||
{
|
||||
mode = 4;
|
||||
curSource = firstCheckbox + i - 1;
|
||||
max_checkbox = 0;
|
||||
while(m_plugin.PluginExist(max_checkbox)) max_checkbox++;
|
||||
CB_curPage = 1;
|
||||
CB_numPages = (max_checkbox / 10) + 1;
|
||||
_updateCheckboxes();
|
||||
_updateCheckboxesText();
|
||||
m_btnMgr.setText(m_checkboxesLblTitle, _t("smedit4", L"Choose Plugins"));
|
||||
}
|
||||
}
|
||||
else if(mode == 4)
|
||||
{
|
||||
bool found = false;
|
||||
string newMagics;
|
||||
string pluginMagic = sfmt("%08x", m_plugin.GetPluginMagic(firstCheckbox + i - 1));
|
||||
string button = sfmt("button_%i", curSource);
|
||||
vector<string> magicNums = m_source.getStrings(button, "magic", ',');
|
||||
if(magicNums.size() > 0)
|
||||
{
|
||||
for(u8 j = 0; j < magicNums.size(); j++)
|
||||
{
|
||||
string tmp = lowerCase(magicNums[j]);
|
||||
if(tmp == pluginMagic)
|
||||
{
|
||||
found = true;// and don't add it
|
||||
}
|
||||
else
|
||||
{
|
||||
if(j == 0)
|
||||
newMagics = magicNums[0];
|
||||
else
|
||||
newMagics.append(',' + magicNums[j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!found)// add it if not found
|
||||
{
|
||||
if(newMagics.empty())
|
||||
newMagics = pluginMagic;
|
||||
else
|
||||
newMagics.append(',' + pluginMagic);
|
||||
}
|
||||
if(!newMagics.empty())// to make sure at least one plugin is selected
|
||||
m_source.setString(button, "magic", newMagics);
|
||||
_updateCheckboxes();
|
||||
}
|
||||
else if(mode == 3)
|
||||
{
|
||||
_hideCheckboxesMenu();
|
||||
u8 pos = firstCheckbox + i - 1;
|
||||
bool plugin_ok = true;
|
||||
strncpy(m_plugin.PluginMagicWord, fmt("%08x", m_plugin.GetPluginMagic(pos)), 8);
|
||||
if(strncasecmp(m_plugin.PluginMagicWord, "484252", 6) == 0)//HBRW
|
||||
plugin_ok = false;
|
||||
else if(strncasecmp(m_plugin.PluginMagicWord, "4E47434D", 8) == 0)//NGCM
|
||||
plugin_ok = false;
|
||||
else if(strncasecmp(m_plugin.PluginMagicWord, "4E574949", 8) == 0)//NWII
|
||||
plugin_ok = false;
|
||||
else if(strncasecmp(m_plugin.PluginMagicWord, "4E414E44", 8) == 0)//NAND
|
||||
plugin_ok = false;
|
||||
else if(strncasecmp(m_plugin.PluginMagicWord, "454E414E", 8) == 0)//ENAN
|
||||
plugin_ok = false;
|
||||
|
||||
if(!plugin_ok)
|
||||
{
|
||||
error(_t("smediterr", L"Not allowed!"));
|
||||
}
|
||||
else
|
||||
{
|
||||
int romsPartition = m_plugin.GetRomPartition(pos);
|
||||
if(romsPartition < 0)
|
||||
romsPartition = m_cfg.getInt(PLUGIN_DOMAIN, "partition", 0);
|
||||
string romsDir(fmt("%s:/%s", DeviceName[romsPartition], m_plugin.GetRomDir(pos)));
|
||||
const char *path = _FolderExplorer(romsDir.c_str());
|
||||
if(strlen(path) > 0)
|
||||
{
|
||||
Config m_plugin_cfg;
|
||||
m_plugin_cfg.load(m_plugin.GetPluginPath(pos).c_str());
|
||||
if(m_plugin_cfg.loaded())
|
||||
{
|
||||
if(strncmp(path, "sd:/", 4) == 0)
|
||||
{
|
||||
romsPartition = 0;
|
||||
m_plugin_cfg.setInt(PLUGIN, "rompartition", 0);
|
||||
m_plugin.SetRomPartition(pos, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
romsPartition = atoi(path + 3);
|
||||
m_plugin_cfg.setInt(PLUGIN, "rompartition", romsPartition);
|
||||
m_plugin.SetRomPartition(pos, romsPartition);
|
||||
}
|
||||
string rd = sfmt("%s", strchr(path, '/') + 1);
|
||||
m_plugin_cfg.setString(PLUGIN, "romdir", rd);
|
||||
m_plugin.SetRomDir(pos, rd);
|
||||
m_plugin_cfg.save(true);
|
||||
string cachedListFile(fmt("%s/%s_%s.db", m_listCacheDir.c_str(), DeviceName[romsPartition], m_plugin.PluginMagicWord));
|
||||
fsop_deleteFile(cachedListFile.c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
_showCheckboxesMenu();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
m_source.save();
|
||||
_hideCheckboxesMenu();
|
||||
}
|
||||
|
||||
void CMenu::_initCheckboxesMenu()
|
||||
{
|
||||
_addUserLabels(m_checkboxesLblUser, ARRAY_SIZE(m_checkboxesLblUser), "CHECKBOX");
|
||||
m_checkboxesBg = _texture("CHECKBOX/BG", "texture", theme.bg, false);
|
||||
m_checkboxesLblTitle = _addLabel("CHECKBOX/TITLE", theme.titleFont, L"", 0, 10, 640, 60, theme.titleFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE);
|
||||
m_checkboxesBtnBack = _addButton("CHECKBOX/BACK_BTN", theme.btnFont, L"", 420, 400, 200, 48, theme.btnFontColor);
|
||||
m_checkboxesLblPage = _addLabel("CHECKBOX/PAGE_BTN", theme.btnFont, L"", 68, 400, 104, 48, theme.btnFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE, theme.btnTexC);
|
||||
m_checkboxesBtnPageM = _addPicButton("CHECKBOX/PAGE_MINUS", theme.btnTexMinus, theme.btnTexMinusS, 20, 400, 48, 48);
|
||||
m_checkboxesBtnPageP = _addPicButton("CHECKBOX/PAGE_PLUS", theme.btnTexPlus, theme.btnTexPlusS, 172, 400, 48, 48);
|
||||
|
||||
_setHideAnim(m_checkboxesLblTitle, "CHECKBOX/TITLE", 0, 0, -2.f, 0.f);
|
||||
_setHideAnim(m_checkboxesLblPage, "CHECKBOX/PAGE_BTN", 0, 0, 1.f, -1.f);
|
||||
_setHideAnim(m_checkboxesBtnPageM, "CHECKBOX/PAGE_MINUS", 0, 0, 1.f, -1.f);
|
||||
_setHideAnim(m_checkboxesBtnPageP, "CHECKBOX/PAGE_PLUS", 0, 0, 1.f, -1.f);
|
||||
_setHideAnim(m_checkboxesBtnBack, "CHECKBOX/BACK_BTN", 0, 0, 1.f, -1.f);
|
||||
|
||||
/* init checkboxes only here to be used in all menu's */
|
||||
m_checkboxBtnOff[0] = _addPicButton("CHECKBOX/CHECKBOX_0_OFF", theme.checkboxoff, theme.checkboxoffs, 270, 394, 44, 48);
|
||||
m_checkboxBtnOn[0] = _addPicButton("CHECKBOX/CHECKBOX_0_ON", theme.checkboxon, theme.checkboxons, 270, 394, 44, 48);
|
||||
m_checkboxLblTxt[0] = _addLabel("CHECKBOX/CHECKBOX_0_TXT", theme.lblFont, L"", 325, 397, 100, 48, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
||||
for(int i = 1; i < 6; ++i)
|
||||
{ // Page 1
|
||||
m_checkboxBtnOff[i] = _addPicButton(fmt("CHECKBOX/CHECKBOX_%i_OFF", i), theme.checkboxoff, theme.checkboxoffs, 30, (39+i*58), 44, 48);
|
||||
m_checkboxBtnOn[i] = _addPicButton(fmt("CHECKBOX/CHECKBOX_%i_ON", i), theme.checkboxon, theme.checkboxons, 30, (39+i*58), 44, 48);
|
||||
m_checkboxLblTxt[i] = _addLabel(fmt("CHECKBOX/CHECKBOX_%i_TXT", i), theme.lblFont, L"", 85, (42+i*58), 230, 48, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
||||
// right half
|
||||
m_checkboxBtnOff[i+5] = _addPicButton(fmt("CHECKBOX/CHECKBOX_%i_OFF", i+5), theme.checkboxoff, theme.checkboxoffs, 325, (39+i*58), 44, 48);
|
||||
m_checkboxBtnOn[i+5] = _addPicButton(fmt("CHECKBOX/CHECKBOX_%i_ON", i+5), theme.checkboxon, theme.checkboxons, 325, (39+i*58), 44, 48);
|
||||
m_checkboxLblTxt[i+5] = _addLabel(fmt("CHECKBOX/CHECKBOX_%i_TXT", i+5), theme.lblFont, L"", 380, (42+i*58), 230, 48, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
|
||||
}
|
||||
for(u8 i = 0; i < 11; ++i)
|
||||
{
|
||||
_setHideAnim(m_checkboxBtnOff[i], fmt("CHECKBOX/CHECKBOX_%i_OFF", i), 0, 0, 1.f, 0.f);
|
||||
_setHideAnim(m_checkboxBtnOn[i], fmt("CHECKBOX/CHECKBOX_%i_ON", i), 0, 0, 1.f, 0.f);
|
||||
_setHideAnim(m_checkboxLblTxt[i], fmt("CHECKBOX/CHECKBOX_%i_TXT", i), 0, 0, 1.f, 0.f);
|
||||
m_checkboxBtn[i] = m_checkboxBtnOff[i];
|
||||
}
|
||||
_hideCheckboxesMenu(true);
|
||||
_textCheckboxesMenu();
|
||||
}
|
||||
|
||||
void CMenu::_textCheckboxesMenu(void)
|
||||
{
|
||||
m_btnMgr.setText(m_checkboxesBtnBack, _t("cd1", L"Back"));
|
||||
m_btnMgr.setText(m_checkboxLblTxt[0], _t("dl25", L"All"));
|
||||
}
|
||||
|
||||
/********************************************************************************************************************/
|
||||
|
||||
void CMenu::_hideSM_Editor(bool instant)
|
||||
{
|
||||
m_btnMgr.hide(m_configLblTitle, instant);
|
||||
m_btnMgr.hide(m_configBtnBack, instant);
|
||||
|
||||
m_btnMgr.hide(m_config7Lbl1, instant);
|
||||
m_btnMgr.hide(m_config7Btn1, instant);
|
||||
m_btnMgr.hide(m_config7Lbl2, instant);
|
||||
m_btnMgr.hide(m_config7Btn2, instant);
|
||||
m_btnMgr.hide(m_config7Lbl3, instant);
|
||||
m_btnMgr.hide(m_config7Btn3, instant);
|
||||
//m_btnMgr.hide(m_config7Lbl4, instant);
|
||||
//m_btnMgr.hide(m_config7Btn4, instant);
|
||||
|
||||
for(u8 i = 0; i < ARRAY_SIZE(m_config7LblUser); ++i)
|
||||
if(m_config7LblUser[i] != -1)
|
||||
m_btnMgr.hide(m_config7LblUser[i], instant);
|
||||
}
|
||||
|
||||
void CMenu::_showSM_Editor()
|
||||
{
|
||||
m_btnMgr.hide(m_config7Lbl1, true);
|
||||
m_btnMgr.hide(m_config7Btn1, true);
|
||||
m_btnMgr.hide(m_config7Lbl2, true);
|
||||
m_btnMgr.hide(m_config7Btn2, true);
|
||||
m_btnMgr.hide(m_config7Lbl3, true);
|
||||
m_btnMgr.hide(m_config7Btn3, true);
|
||||
//m_btnMgr.hide(m_config7Lbl4, true);
|
||||
//m_btnMgr.hide(m_config7Btn4, true);
|
||||
|
||||
_setBg(m_config7Bg, m_config7Bg);
|
||||
for(u32 i = 0; i < ARRAY_SIZE(m_config7LblUser); ++i)
|
||||
if(m_config7LblUser[i] != -1)
|
||||
m_btnMgr.show(m_config7LblUser[i]);
|
||||
|
||||
m_btnMgr.show(m_configLblTitle);
|
||||
m_btnMgr.show(m_configBtnBack);
|
||||
|
||||
m_btnMgr.show(m_config7Lbl1);
|
||||
m_btnMgr.show(m_config7Btn1);
|
||||
m_btnMgr.show(m_config7Lbl2);
|
||||
m_btnMgr.show(m_config7Btn2);
|
||||
m_btnMgr.show(m_config7Lbl3);
|
||||
m_btnMgr.show(m_config7Btn3);
|
||||
//m_btnMgr.show(m_config7Lbl4);
|
||||
//m_btnMgr.show(m_config7Btn4);
|
||||
|
||||
m_btnMgr.setText(m_config7Lbl1, _t("smedit5", L"Hide source buttons"));
|
||||
m_btnMgr.setText(m_config7Btn1, _t("cfg14", L"Set"));
|
||||
m_btnMgr.setText(m_config7Lbl2, _t("smedit6", L"Link source buttons to plugins"));
|
||||
m_btnMgr.setText(m_config7Btn2, _t("cfg14", L"Set"));
|
||||
m_btnMgr.setText(m_config7Lbl3, _t("smedit7", L"Set plugin ROMs path"));
|
||||
m_btnMgr.setText(m_config7Btn3, _t("cfg14", L"Set"));
|
||||
//m_btnMgr.setText(m_config7Lbl4, _t("smedit8", L"Sourceflow settings"));
|
||||
//m_btnMgr.setText(m_config7Btn4, _t("cfg14", L"Set"));
|
||||
}
|
||||
|
||||
void CMenu::_SM_Editor()
|
||||
{
|
||||
m_btnMgr.setText(m_configLblTitle, _t("smedit9", L"Source Menu Setup"));// edit sources
|
||||
SetupInput();
|
||||
_showSM_Editor();
|
||||
while(!m_exit)
|
||||
{
|
||||
_mainLoopCommon();
|
||||
if(BTN_HOME_PRESSED || BTN_B_PRESSED || (BTN_A_PRESSED && m_btnMgr.selected(m_configBtnBack)))
|
||||
{
|
||||
break;
|
||||
}
|
||||
else if(BTN_UP_PRESSED)
|
||||
m_btnMgr.up();
|
||||
else if(BTN_DOWN_PRESSED)
|
||||
m_btnMgr.down();
|
||||
if(BTN_A_PRESSED)
|
||||
{
|
||||
if(m_btnMgr.selected(m_config7Btn1))
|
||||
{
|
||||
_hideSM_Editor();
|
||||
_checkboxesMenu(1);
|
||||
_showSM_Editor();
|
||||
}
|
||||
else if(m_btnMgr.selected(m_config7Btn2))
|
||||
{
|
||||
_hideSM_Editor();
|
||||
_checkboxesMenu(2);
|
||||
_showSM_Editor();
|
||||
}
|
||||
else if(m_btnMgr.selected(m_config7Btn3))
|
||||
{
|
||||
_hideSM_Editor();
|
||||
_checkboxesMenu(3);
|
||||
_showSM_Editor();
|
||||
}
|
||||
/*else if(m_btnMgr.selected(m_config7Btn4))
|
||||
{
|
||||
_hideSM_Editor();
|
||||
_CfgSrc();
|
||||
_showSM_Editor();
|
||||
}*/
|
||||
}
|
||||
}
|
||||
_hideSM_Editor();
|
||||
m_btnMgr.setText(m_configLblTitle, _t("cfg1", L"Settings"));
|
||||
}
|
@ -17,6 +17,7 @@ bool exitSource = false;
|
||||
static u8 i, j;
|
||||
int curPage;
|
||||
int numPages;
|
||||
vector<u8> nonHiddenSources;
|
||||
vector<string> magicNums;
|
||||
|
||||
char btn_selected[16];
|
||||
@ -213,8 +214,23 @@ void CMenu::_srcTierLoad(string fn)
|
||||
}
|
||||
if(!m_sourceflow)
|
||||
{
|
||||
curPage = stoi(sm_numbers[sm_numbers.size() - 1]) / 12 + 1;
|
||||
numPages = (m_max_source_btn / 12) + 1;
|
||||
nonHiddenSources.clear();
|
||||
for(i = 0; i <= m_max_source_btn; i++)
|
||||
{
|
||||
if(!m_source.getBool(sfmt("BUTTON_%i", i), "hidden", false))
|
||||
nonHiddenSources.push_back(i);
|
||||
}
|
||||
u8 num = stoi(sm_numbers[sm_numbers.size() - 1]);
|
||||
curPage = 1;
|
||||
for(i = 0; i < nonHiddenSources.size(); i++)
|
||||
{
|
||||
if(nonHiddenSources[i] == num)
|
||||
{
|
||||
curPage = i / 12 + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
numPages = (nonHiddenSources.size() / 12) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -257,6 +273,7 @@ void CMenu::_getSFlowBgTex(void)
|
||||
}
|
||||
}
|
||||
|
||||
// *******************************************************************************************
|
||||
/* end of sourceflow stuff - start of source menu stuff */
|
||||
void CMenu::_hideSource(bool instant)
|
||||
{
|
||||
@ -308,12 +325,12 @@ void CMenu::_updateSourceBtns(void)
|
||||
j = (curPage - 1) * 12;
|
||||
for(i = j; i < (j + 12); ++i)
|
||||
{
|
||||
if(i > m_max_source_btn)
|
||||
if(i >= nonHiddenSources.size())
|
||||
m_btnMgr.hide(m_sourceBtnSource[i -j]);
|
||||
else
|
||||
{
|
||||
memset(current_btn, 0, 16);
|
||||
strncpy(current_btn, fmt("BUTTON_%i", i), 15);
|
||||
strncpy(current_btn, fmt("BUTTON_%i", nonHiddenSources[i]), 15);
|
||||
string btnSource = m_source.getString(current_btn, "source", "");
|
||||
if(btnSource == "")
|
||||
continue;
|
||||
@ -358,9 +375,9 @@ bool CMenu::_Source()
|
||||
while(!m_exit)
|
||||
{
|
||||
_mainLoopCommon();
|
||||
if(BTN_HOME_PRESSED || BTN_B_PRESSED)
|
||||
if(BTN_B_PRESSED)
|
||||
{
|
||||
if(!_srcTierBack(BTN_HOME_PRESSED))
|
||||
if(!_srcTierBack(false))
|
||||
{
|
||||
_restoreSrcTiers();
|
||||
break;
|
||||
@ -368,7 +385,14 @@ bool CMenu::_Source()
|
||||
else
|
||||
_updateSourceBtns();
|
||||
}
|
||||
if(BTN_A_PRESSED && m_btnMgr.selected(m_sourceBtnBack))
|
||||
else if(BTN_HOME_PRESSED)
|
||||
{
|
||||
_hideSource();
|
||||
_SM_Editor();
|
||||
_showSource();
|
||||
_updateSourceBtns();
|
||||
}
|
||||
else if(BTN_A_PRESSED && m_btnMgr.selected(m_sourceBtnBack))
|
||||
{
|
||||
_restoreSrcTiers();
|
||||
break;
|
||||
|
@ -71,7 +71,7 @@ void Plugin::init(const string& m_pluginsDir)
|
||||
m_plugin_cfg.load(iniFile->c_str());
|
||||
if(m_plugin_cfg.loaded())
|
||||
{
|
||||
m_plugin.AddPlugin(m_plugin_cfg);
|
||||
m_plugin.AddPlugin(m_plugin_cfg, *iniFile);
|
||||
}
|
||||
m_plugin_cfg.unload();
|
||||
}
|
||||
@ -84,9 +84,10 @@ void Plugin::Cleanup()
|
||||
Plugins.clear();
|
||||
}
|
||||
|
||||
void Plugin::AddPlugin(Config &plugin)
|
||||
void Plugin::AddPlugin(Config &plugin, const string &iniPath)
|
||||
{
|
||||
PluginOptions NewPlugin;
|
||||
NewPlugin.path = iniPath;
|
||||
NewPlugin.DolName = plugin.getString(PLUGIN, "dolFile");
|
||||
NewPlugin.coverFolder = plugin.getString(PLUGIN, "coverFolder");
|
||||
NewPlugin.magic = strtoul(plugin.getString(PLUGIN, "magic").c_str(), NULL, 16);
|
||||
@ -123,6 +124,11 @@ u8 Plugin::GetPluginPosition(u32 magic)
|
||||
return 255;
|
||||
}
|
||||
|
||||
string Plugin::GetPluginPath(u8 pos)
|
||||
{
|
||||
return Plugins[pos].path;
|
||||
}
|
||||
|
||||
u32 Plugin::GetPluginMagic(u8 pos)
|
||||
{
|
||||
return Plugins[pos].magic;
|
||||
@ -167,11 +173,21 @@ int Plugin::GetRomPartition(u8 pos)
|
||||
return -1;
|
||||
}
|
||||
|
||||
void Plugin::SetRomPartition(u8 pos, int part)
|
||||
{
|
||||
Plugins[pos].romPartition = part;
|
||||
}
|
||||
|
||||
const char *Plugin::GetRomDir(u8 pos)
|
||||
{
|
||||
return Plugins[pos].romDir.c_str();
|
||||
}
|
||||
|
||||
void Plugin::SetRomDir(u8 pos, const string &rd)
|
||||
{
|
||||
Plugins[pos].romDir = rd;
|
||||
}
|
||||
|
||||
const string& Plugin::GetFileTypes(u8 pos)
|
||||
{
|
||||
return Plugins[pos].fileTypes;
|
||||
|
@ -41,6 +41,7 @@ using namespace std;
|
||||
|
||||
struct PluginOptions
|
||||
{
|
||||
string path;
|
||||
u32 magic;
|
||||
u32 caseColor;
|
||||
int romPartition;
|
||||
@ -66,17 +67,20 @@ public:
|
||||
const char *GetDolName(u32 magic);
|
||||
const char *GetCoverFolderName(u32 magic);
|
||||
const char *GetRomDir(u8 pos);
|
||||
void SetRomDir(u8 pos, const string &rd);
|
||||
string GetRomName(const char *FullPath);
|
||||
string GetRomId(char *romPath, u32 Magic, Config &m_crc, const char *datadir, const char *platform, const char *name);
|
||||
int GetRomPartition(u8 pos);
|
||||
void SetRomPartition(u8 pos, int part);
|
||||
const string& GetFileTypes(u8 pos);
|
||||
wstringEx GetPluginName(u8 pos);
|
||||
string GetPluginPath(u8 pos);
|
||||
u32 GetPluginMagic(u8 pos);
|
||||
u8 GetPluginPosition(u32 magic);
|
||||
s8 GetBoxMode(u8 pos);
|
||||
|
||||
void init(const string& m_pluginsDir);
|
||||
void AddPlugin(Config &plugin);
|
||||
void AddPlugin(Config &plugin, const string &iniPath);
|
||||
void Cleanup();
|
||||
bool GetEnabledStatus(u8 pos);
|
||||
void SetEnablePlugin(u8 pos, u8 ForceMode = 0);
|
||||
|
@ -64,7 +64,7 @@ cfg719=Mount SD only
|
||||
cfg720=Play GC banner sound
|
||||
cfg721=Play GC default sound
|
||||
cfg722=Homebrew settings
|
||||
cfg723=Source menu settings
|
||||
cfg723=Sourceflow settings
|
||||
cfg724=Lock coverflow layouts
|
||||
cfg725=Shutdown to idle standby
|
||||
cfg726=Covers Box Mode
|
||||
@ -231,7 +231,7 @@ cfgs1=Music volume
|
||||
cfgs2=GUI sound volume
|
||||
cfgs3=Coverflow sound volume
|
||||
cfgs4=Game sound volume
|
||||
cfgsm1=Source Menu Settings
|
||||
cfgsm1=Sourceflow Settings
|
||||
cfgsm3=Enable Sourceflow
|
||||
cfgsm4=Sourceflow Smallbox
|
||||
cfgsm5=Clear Sourceflow Cache
|
||||
@ -453,6 +453,15 @@ shutdown1=Shutdown how?
|
||||
shutdown2=Full Shutdown
|
||||
shutdown3=Standby
|
||||
Shutdown4=Cancel
|
||||
smedit1=Hide Sources
|
||||
smedit2=Choose Source
|
||||
smedit3=Choose Plugin
|
||||
smedit4=Choose Plugins
|
||||
smedit5=Hide source buttons
|
||||
smedit6=Link source buttons to plugins
|
||||
smedit7=Set plugin ROMs path
|
||||
smedit9=Source Menu Setup
|
||||
smediterr=Not allowed!
|
||||
snes=Super Nintendo
|
||||
stup1=Select Source
|
||||
translation_author=
|
||||
|
Loading…
Reference in New Issue
Block a user