1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-02 09:03:37 +00:00

GLideNUI-wtl: Start to add code for handling profiles

This commit is contained in:
zilmar 2020-04-01 21:04:17 +10:30 committed by Sergey Lipskiy
parent 2792ae8879
commit 5cb23ede3a
6 changed files with 136 additions and 6 deletions

View File

@ -9,15 +9,20 @@
#include "config-texture.h"
#include "config-osd.h"
#include "config-debug.h"
#include "util.h"
CConfigDlg::CConfigDlg() :
m_blockReInit(false),
m_Saved(false)
m_EmulationTab(NULL),
m_Saved(false),
m_TabLeft(0),
m_ProfileLeft(0)
{
}
CConfigDlg::~CConfigDlg()
{
m_EmulationTab = NULL;
for (size_t i = 0; i < m_TabWindows.size(); i++)
{
delete m_TabWindows[i];
@ -42,18 +47,118 @@ LRESULT CConfigDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lPar
HICON hIconSmall = AtlLoadIconImage(IDI_APPICON, LR_DEFAULTCOLOR, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON));
SetIcon(hIconSmall, FALSE);
m_EmulationTab = new CEmulationTab(*this);
m_Tabs.Attach(GetDlgItem(IDC_TABS));
AddTab(L"Video", new CVideoTab);
AddTab(L"Emulation", new CEmulationTab);
AddTab(L"Emulation", m_EmulationTab);
AddTab(L"Frame buffer", new CFrameBufferTab);
AddTab(L"Texture enhancement", new CTextureEnhancementTab);
AddTab(L"OSD", new COsdTab);
AddTab(L"Debug", new CDebugTab);
RECT Rect;
GetDlgItem(IDC_TABS).GetWindowRect(&Rect);
::MapWindowPoints(NULL, m_hWnd, (LPPOINT)&Rect, 2);
m_TabLeft = Rect.left;
if (m_romName != NULL)
{
std::wstring RomName(ToUTF16(m_romName));
CWindow dlgItem = GetDlgItem(IDC_GAME_PROFILE_NAME);
CDC dc;
dc.CreateCompatibleDC(NULL);
dc.SelectFont(dlgItem.GetFont());
SIZE size;
dc.GetTextExtent(RomName.c_str(), RomName.length(), &size);
RECT Rect;
dlgItem.GetWindowRect(&Rect);
::MapWindowPoints(NULL, m_hWnd, (LPPOINT)&Rect, 2);
Rect.right = Rect.left + size.cx;
dlgItem.MoveWindow(&Rect);
dlgItem.SetWindowText(RomName.c_str());
m_ProfileLeft = Rect.right + 10;
}
else
{
GetDlgItem(IDC_SETTINGS_PROFILE_STATIC).GetWindowRect(&Rect);
::MapWindowPoints(NULL, m_hWnd, (LPPOINT)&Rect, 2);
m_ProfileLeft = Rect.left;
}
Init();
return 0;
}
void CConfigDlg::OnCustomSettingsToggled(bool checked)
{
if (m_hWnd == NULL)
{
return;
}
checked = m_romName != NULL ? checked : false;
GetDlgItem(IDC_GAME_PROFILE).ShowWindow(checked ? SW_SHOWNORMAL : SW_HIDE);
GetDlgItem(IDC_SAVE_SETTINGS_STATIC).ShowWindow(checked ? SW_SHOWNORMAL : SW_HIDE);
GetDlgItem(IDC_GAME_PROFILE_NAME).ShowWindow(checked ? SW_SHOWNORMAL : SW_HIDE);
GetDlgItem(IDC_USE_PROFILE).ShowWindow(checked ? SW_SHOWNORMAL : SW_HIDE);
int32_t Move = 0;
if (checked)
{
RECT Rect;
CWindow UseProfile = GetDlgItem(IDC_USE_PROFILE);
UseProfile.GetWindowRect(&Rect);
::MapWindowPoints(NULL, m_hWnd, (LPPOINT)&Rect, 2);
Move = Rect.left - m_ProfileLeft;
if (Move != 0)
{
Rect.left -= Move;
Rect.right -= Move;
UseProfile.MoveWindow(&Rect);
}
uint32_t Left = Rect.right + 7;
CWindow ProfileStatic = GetDlgItem(IDC_SETTINGS_PROFILE_STATIC);
ProfileStatic.GetWindowRect(&Rect);
::MapWindowPoints(NULL, m_hWnd, (LPPOINT)&Rect, 2);
Move = Rect.left - Left;
}
else
{
RECT Rect;
GetDlgItem(IDC_SETTINGS_PROFILE_STATIC).GetWindowRect(&Rect);
::MapWindowPoints(NULL, m_hWnd, (LPPOINT)&Rect, 2);
Move = Rect.left - m_TabLeft;
}
if (Move != 0)
{
int nID[] =
{
IDC_SETTINGS_PROFILE_STATIC,
IDC_PROFILE,
IDC_REMOVE_PROFILE,
};
RECT Rect;
GetDlgItem(nID[0]).GetWindowRect(&Rect);
::MapWindowPoints(NULL, m_hWnd, (LPPOINT)&Rect, 2);
for (size_t i = 0, n = sizeof(nID) / sizeof(nID[0]); i < n; i++)
{
CWindow window = GetDlgItem(nID[i]);
window.GetWindowRect(&Rect);
::MapWindowPoints(NULL, m_hWnd, (LPPOINT)&Rect, 2);
Rect.left -= Move;
Rect.right -= Move;
window.MoveWindow(&Rect);
}
}
}
void CConfigDlg::SaveSettings()
{
m_Saved = true;
@ -110,8 +215,15 @@ void CConfigDlg::Init(bool reInit, bool blockCustomSettings)
return;
}
m_blockReInit = true;
bool CustomSettings = m_EmulationTab != NULL && CButton(m_EmulationTab->GetDlgItem(IDC_CHK_USE_PER_GAME)).GetCheck() == BST_CHECKED;
if (reInit)
/*if (reInit && m_romName != NULL &&
m_EmulationTab
ui->customSettingsCheckBox->isChecked() && ui->settingsDestGameRadioButton->isChecked())
{
loadCustomRomSettings(m_strIniPath, m_romName);
}
else*/ if (reInit)
{
loadSettings(m_strIniPath.c_str());
}

View File

@ -5,6 +5,8 @@
#include "resource.h"
#include <vector>
class CEmulationTab;
class CConfigDlg :
public CDialogImpl<CConfigDlg>
{
@ -26,6 +28,7 @@ public:
void setIniPath(const std::string & IniPath);
void setRomName(const char * RomName);
bool Saved(void) const { return m_Saved; }
void OnCustomSettingsToggled(bool checked);
protected:
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
@ -46,6 +49,8 @@ protected:
std::string m_strIniPath;
const char * m_romName;
bool m_blockReInit;
CEmulationTab * m_EmulationTab;
uint32_t m_TabLeft, m_ProfileLeft;
bool m_Saved;
};

Binary file not shown.

View File

@ -2,9 +2,11 @@
#include "util.h"
#include "../Config.h"
#include "resource.h"
#include "ConfigDlg.h"
CEmulationTab::CEmulationTab() :
CConfigTab(IDD_TAB_EMULATION)
CEmulationTab::CEmulationTab(CConfigDlg & Dlg) :
CConfigTab(IDD_TAB_EMULATION),
m_Dlg(Dlg)
{
}
@ -56,11 +58,17 @@ void CEmulationTab::OnGammaCorrection(UINT /*Code*/, int /*id*/, HWND /*ctl*/)
}
}
void CEmulationTab::OnPerGameSettings(UINT /*Code*/, int /*id*/, HWND /*ctl*/)
{
m_Dlg.OnCustomSettingsToggled(CButton(GetDlgItem(IDC_CHK_USE_PER_GAME)).GetCheck() == BST_CHECKED);
}
void CEmulationTab::LoadSettings(bool blockCustomSettings)
{
if (!blockCustomSettings)
{
CButton(GetDlgItem(IDC_CHK_USE_PER_GAME)).SetCheck(config.generalEmulation.enableCustomSettings != 0 ? BST_CHECKED : BST_UNCHECKED);
m_Dlg.OnCustomSettingsToggled(config.generalEmulation.enableCustomSettings != 0);
}
CButton(GetDlgItem(IDC_CHK_N64_STYLE_MIP_MAPPING)).SetCheck(config.generalEmulation.enableLOD != 0 ? BST_CHECKED : BST_UNCHECKED);
CButton(GetDlgItem(IDC_CHK_NOISE)).SetCheck(config.generalEmulation.enableNoise != 0 ? BST_CHECKED : BST_UNCHECKED);

View File

@ -3,6 +3,8 @@
#include "wtl-BitmapPicture.h"
#include "resource.h"
class CConfigDlg;
class CEmulationTab :
public CConfigTab
{
@ -13,13 +15,15 @@ public:
MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnColorStatic)
MESSAGE_HANDLER(WM_VSCROLL, OnScroll)
COMMAND_HANDLER_EX(IDC_CHK_GAMMA_CORRECTION, BN_CLICKED, OnGammaCorrection)
COMMAND_HANDLER_EX(IDC_CHK_USE_PER_GAME, BN_CLICKED, OnPerGameSettings)
REFLECT_NOTIFICATIONS()
END_MSG_MAP()
CEmulationTab();
CEmulationTab(CConfigDlg & Dlg);
BOOL OnInitDialog(CWindow /*wndFocus*/, LPARAM /*lInitParam*/);
LRESULT OnColorStatic(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
void OnGammaCorrection(UINT /*Code*/, int id, HWND /*ctl*/);
void OnPerGameSettings(UINT /*Code*/, int id, HWND /*ctl*/);
void LoadSettings(bool /*blockCustomSettings*/);
void SaveSettings();
@ -29,4 +33,5 @@ private:
CEdit m_GamaTxt, m_N64ResMultiplerTxt;
CUpDownCtrl m_GamaSpin, m_N64ResMultiplerSpin;
CBitmapPicture m_GammaIcon;
CConfigDlg & m_Dlg;
};

Binary file not shown.