Add submenu for quick location configuration

This commit is contained in:
GXTX 2018-06-11 18:29:08 -04:00
parent 1c7111c10d
commit 70d09224a4
4 changed files with 95 additions and 53 deletions

View File

@ -470,7 +470,12 @@ BEGIN
MENUITEM "Config &Video...", ID_SETTINGS_CONFIG_VIDEO,MFT_STRING,MFS_ENABLED
MENUITEM "Config &Audio...", ID_SETTINGS_CONFIG_AUDIO,MFT_STRING,MFS_ENABLED
MENUITEM "Config &Eeprom...", ID_SETTINGS_CONFIG_EEPROM,MFT_STRING,MFS_ENABLED
MENUITEM "Config Data Location...", 40104,MFT_STRING,MFS_ENABLED
POPUP "Config &Data Location...", 65535,MFT_STRING,MFS_ENABLED
BEGIN
MENUITEM "Store in AppData", ID_SETTINGS_CONFIG_DLOCAPPDATA,MFT_STRING,MFS_ENABLED
MENUITEM "Store with Executable", ID_SETTINGS_CONFIG_DLOCCURDIR,MFT_STRING,MFS_ENABLED
MENUITEM "Custom", ID_SETTINGS_CONFIG_DLOCCUSTOM,MFT_STRING,MFS_ENABLED
END
POPUP "&HLE Cache", 65535,MFT_STRING,MFS_ENABLED
BEGIN
MENUITEM "&Clear entire HLE Cache", ID_CACHE_CLEARHLECACHE_ALL,MFT_STRING,MFS_ENABLED

View File

@ -1,6 +1,6 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by C:\Users\Aaron\Source\Repos\cxbx-reloaded2\resource\Cxbx.rc
// Used by c:\Users\Aaron\source\repos\cxbx-reloaded2\resource\Cxbx.rc
//
#define IDI_CXBX 101
#define IDB_SPLASH 102
@ -279,7 +279,9 @@
#define ID_SETTINGS_CONFIG_XBOX_CONTROLLER_MAPPING 40101
#define ID_HACKS_RENDERDIRECTLYTOHOSTBACKBUFFER 40102
#define ID_HACKS_SPEEDHACKS 40103
#define ID_SETTINGS_CONFIG_DATALOC 40104
#define ID_SETTINGS_CONFIG_DLOCCUSTOM 40104
#define ID_SETTINGS_CONFIG_DLOCAPPDATA 40105
#define ID_SETTINGS_CONFIG_DLOCCURDIR 40106
#define IDC_STATIC -1
// Next default values for new objects
@ -287,7 +289,7 @@
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 135
#define _APS_NEXT_COMMAND_VALUE 40105
#define _APS_NEXT_COMMAND_VALUE 40107
#define _APS_NEXT_CONTROL_VALUE 1256
#define _APS_NEXT_SYMED_VALUE 104
#endif

View File

@ -1089,46 +1089,46 @@ LRESULT CALLBACK WndMain::WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lP
// dump xbe information to file
{
std::string Xbe_info = DumpInformation(m_Xbe);
if (m_Xbe->HasError()) {
MessageBox(m_hwnd, m_Xbe->GetError().c_str(), "Cxbx-Reloaded", MB_ICONSTOP | MB_OK);
}
else {
std::ofstream Xbe_dump_file(ofn.lpstrFile);
if(Xbe_dump_file.is_open()) {
Xbe_dump_file << Xbe_info;
Xbe_dump_file.close();
char buffer[255];
sprintf(buffer, "%s's .xbe info was successfully dumped.", m_Xbe->m_szAsciiTitle);
printf("WndMain: %s\n", buffer);
MessageBox(m_hwnd, buffer, "Cxbx-Reloaded", MB_ICONINFORMATION | MB_OK);
}
else {
MessageBox(m_hwnd, "Could not open Xbe text file.", "Cxbx-Reloaded", MB_ICONSTOP | MB_OK);
}
}
std::string Xbe_info = DumpInformation(m_Xbe);
if (m_Xbe->HasError()) {
MessageBox(m_hwnd, m_Xbe->GetError().c_str(), "Cxbx-Reloaded", MB_ICONSTOP | MB_OK);
}
else {
std::ofstream Xbe_dump_file(ofn.lpstrFile);
if (Xbe_dump_file.is_open()) {
Xbe_dump_file << Xbe_info;
Xbe_dump_file.close();
char buffer[255];
sprintf(buffer, "%s's .xbe info was successfully dumped.", m_Xbe->m_szAsciiTitle);
printf("WndMain: %s\n", buffer);
MessageBox(m_hwnd, buffer, "Cxbx-Reloaded", MB_ICONINFORMATION | MB_OK);
}
else {
MessageBox(m_hwnd, "Could not open Xbe text file.", "Cxbx-Reloaded", MB_ICONSTOP | MB_OK);
}
}
}
}
}
break;
case ID_EDIT_DUMPXBEINFOTO_DEBUGCONSOLE:
{
std::string Xbe_info = DumpInformation(m_Xbe);
if (m_Xbe->HasError()) {
MessageBox(m_hwnd, m_Xbe->GetError().c_str(), "Cxbx-Reloaded", MB_ICONSTOP | MB_OK);
}
else {
std::cout << Xbe_info;
char buffer[255];
sprintf(buffer, "%s's .xbe info was successfully dumped to console.", m_Xbe->m_szAsciiTitle);
printf("WndMain: %s\n", buffer);
}
}
break;
case ID_SETTINGS_CONFIG_XBOX_CONTROLLER_MAPPING:
ShowXboxControllerPortMappingConfig(hwnd);
break;
case ID_EDIT_DUMPXBEINFOTO_DEBUGCONSOLE:
{
std::string Xbe_info = DumpInformation(m_Xbe);
if (m_Xbe->HasError()) {
MessageBox(m_hwnd, m_Xbe->GetError().c_str(), "Cxbx-Reloaded", MB_ICONSTOP | MB_OK);
}
else {
std::cout << Xbe_info;
char buffer[255];
sprintf(buffer, "%s's .xbe info was successfully dumped to console.", m_Xbe->m_szAsciiTitle);
printf("WndMain: %s\n", buffer);
}
}
break;
case ID_SETTINGS_CONFIG_XBOX_CONTROLLER_MAPPING:
ShowXboxControllerPortMappingConfig(hwnd);
break;
case ID_SETTINGS_CONFIG_CONTROLLER:
ShowControllerConfig(hwnd);
break;
@ -1137,9 +1137,9 @@ LRESULT CALLBACK WndMain::WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lP
ShowVideoConfig(hwnd);
break;
case ID_SETTINGS_CONFIG_AUDIO:
ShowAudioConfig(hwnd);
break;
case ID_SETTINGS_CONFIG_AUDIO:
ShowAudioConfig(hwnd);
break;
case ID_SETTINGS_CONFIG_EEPROM:
{
@ -1151,7 +1151,7 @@ LRESULT CALLBACK WndMain::WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lP
}
ShowEepromConfig(hwnd);
}
case ID_SETTINGS_CONFIG_DATALOC:
case ID_SETTINGS_CONFIG_DLOCCUSTOM: //for custom
{
char szDir[MAX_PATH];
BROWSEINFO bInfo;
@ -1172,20 +1172,55 @@ LRESULT CALLBACK WndMain::WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lP
HKEY hKey;
SHGetPathFromIDList(lpItem, szDir);
if (RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Cxbx-Reloaded", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS)
if (RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Cxbx-Reloaded\\DataStorageLocation", 0, NULL, REG_OPTION_NON_VOLATILE,
KEY_SET_VALUE, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS)
{
dwType = REG_SZ;
dwSize = sizeof(szDir);
RegSetValueEx(hKey, "DATALOC", 0, dwType, (PBYTE)&szDir, dwSize);
dwType = REG_SZ; dwSize = sizeof(szDir);
RegSetValueEx(hKey, "DataStorageLocationDirectory", 0, dwType, (PBYTE)&szDir, dwSize);
RegCloseKey(hKey);
}
}
}
break;
case ID_SETTINGS_CONFIG_DLOCAPPDATA:
{
char szDir[MAX_PATH];
char szFolder_CxbxReloadedData[MAX_PATH];
DWORD dwDisposition, dwType, dwSize;
HKEY hKey;
SHGetSpecialFolderPath(NULL, szDir, CSIDL_APPDATA, TRUE);
snprintf(szFolder_CxbxReloadedData, MAX_PATH, "%s\\Cxbx-Reloaded", szDir);
if (RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Cxbx-Reloaded\\DataStorageLocation", 0, NULL, REG_OPTION_NON_VOLATILE,
KEY_SET_VALUE, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS)
{
dwType = REG_SZ; dwSize = sizeof(szFolder_CxbxReloadedData);
RegSetValueEx(hKey, "DataStorageLocationDirectory", 0, dwType, (PBYTE)&szFolder_CxbxReloadedData, dwSize);
RegCloseKey(hKey);
}
}
break;
case ID_SETTINGS_CONFIG_DLOCCURDIR:
{
char szDir[MAX_PATH];
char szFolder_CxbxReloadedData[MAX_PATH];
DWORD dwDisposition, dwType, dwSize;
HKEY hKey;
GetCurrentDirectory(MAX_PATH, szDir);
snprintf(szFolder_CxbxReloadedData, MAX_PATH, "%s\\Cxbx-Reloaded", szDir);
if (RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Cxbx-Reloaded\\DataStorageLocation", 0, NULL, REG_OPTION_NON_VOLATILE,
KEY_SET_VALUE, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS)
{
dwType = REG_SZ; dwSize = sizeof(szFolder_CxbxReloadedData);
RegSetValueEx(hKey, "DataStorageLocationDirectory", 0, dwType, (PBYTE)&szFolder_CxbxReloadedData, dwSize);
RegCloseKey(hKey);
}
}
break;
case ID_CACHE_CLEARHLECACHE_ALL:
{
ClearHLECache();

View File

@ -1454,16 +1454,16 @@ void CxbxInitFilePaths()
DWORD dwDisposition, dwType, dwSize;
HKEY hKey;
if (RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Cxbx-Reloaded", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_QUERY_VALUE, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS)
if (RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Cxbx-Reloaded\\DataStorageLocation", 0, NULL, REG_OPTION_NON_VOLATILE,
KEY_QUERY_VALUE, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS)
{
LONG result = ERROR_SUCCESS;
dwType = REG_SZ; dwSize = sizeof(szAppData);
result = RegQueryValueEx(hKey, "DATALOC", NULL, &dwType, (PBYTE)&szAppData, &dwSize);
result = RegQueryValueEx(hKey, "DataStorageLocationDirectory", NULL, &dwType, (PBYTE)&szAppData, &dwSize);
if (result != ERROR_SUCCESS) {
SHGetSpecialFolderPath(NULL, szAppData, CSIDL_APPDATA, TRUE); //Luke wants default to be %appdata%
}
}
snprintf(szFolder_CxbxReloadedData, MAX_PATH, "%s\\Cxbx-Reloaded", szAppData);