window: cleaned interface

This commit is contained in:
itsmattkc 2022-03-31 11:35:49 -07:00
parent ed0d18779f
commit 269f7793b0
2 changed files with 44 additions and 60 deletions

View file

@ -35,30 +35,18 @@ CRebuilderWindow::CRebuilderWindow()
// Create subtitle // Create subtitle
m_cTopLevelSubtitle.Create(GetResourceString(IDS_SUBTITLE), WS_CHILD | WS_VISIBLE | SS_CENTER | SS_NOTIFY, CRect(), this, ID_SUBTITLE); m_cTopLevelSubtitle.Create(GetResourceString(IDS_SUBTITLE), WS_CHILD | WS_VISIBLE | SS_CENTER | SS_NOTIFY, CRect(), this, ID_SUBTITLE);
// Create tab control
m_cTabCtrl.Create(WS_CHILD | WS_VISIBLE, CRect(), this, ID_TABCTRL);
// Initialize common TCITEM // Initialize common TCITEM
TCITEM tabItem; TCITEM tabItem;
ZeroMemory(&tabItem, sizeof(tabItem)); ZeroMemory(&tabItem, sizeof(tabItem));
tabItem.mask |= TCIF_TEXT; tabItem.mask |= TCIF_TEXT;
tabItem.pszText = new TCHAR[100]; tabItem.pszText = new TCHAR[100];
// Add "patches" tab
_tcscpy(tabItem.pszText, GetResourceString(IDS_PATCHES));
m_cTabCtrl.InsertItem(TAB_PATCHES, &tabItem);
// Add "music" tab
_tcscpy(tabItem.pszText, GetResourceString(IDS_MUSIC));
m_cTabCtrl.InsertItem(TAB_MUSIC, &tabItem);
delete [] tabItem.pszText; delete [] tabItem.pszText;
// Create property grid // Create property grid
m_cPatchGrid.Create(AfxRegisterWndClass(CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW), _T("Patch Grid"), WS_CHILD | WS_VISIBLE, CRect(), &m_cTabCtrl, ID_PATCHGRID); m_cPatchGrid.Create(AfxRegisterWndClass(CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW), _T("Patch Grid"), WS_CHILD | WS_VISIBLE, CRect(), this, ID_PATCHGRID);
m_cPatchTitle.Create(CString(), WS_CHILD | WS_VISIBLE, CRect(), this, ID_PATCHTITLE);
m_cMusicLink.Create(_T("Coming back soon. If you need music replacement, download the old .NET version here."), m_cPatchDesc.Create(CString(), WS_CHILD | WS_VISIBLE, CRect(), this, ID_PATCHDESC);
WS_CHILD | SS_CENTER, CRect(), &m_cTabCtrl, ID_MUSICLINK);
// Create run button // Create run button
m_cRunBtn.Create(GetResourceString(IDS_RUN), WS_CHILD | WS_VISIBLE, CRect(), this, ID_RUN); m_cRunBtn.Create(GetResourceString(IDS_RUN), WS_CHILD | WS_VISIBLE, CRect(), this, ID_RUN);
@ -143,12 +131,7 @@ void CRebuilderWindow::OnKillClick()
void CRebuilderWindow::OnSubtitleClick() void CRebuilderWindow::OnSubtitleClick()
{ {
ShellExecute(NULL, _T("open"), _T("http://itsmattkc.com/"), NULL, NULL, SW_SHOWNORMAL); ShellExecute(NULL, _T("open"), _T("https://mattkc.com/"), NULL, NULL, SW_SHOWNORMAL);
}
void CRebuilderWindow::OnMusicLinkClick()
{
ShellExecute(NULL, _T("open"), _T("http://github.com/itsmattkc/LEGOIslandRebuilder/releases"), NULL, NULL, SW_SHOWNORMAL);
} }
void CRebuilderWindow::OnSize(UINT type, int width, int height) void CRebuilderWindow::OnSize(UINT type, int width, int height)
@ -156,30 +139,39 @@ void CRebuilderWindow::OnSize(UINT type, int width, int height)
const int padding = m_nFontHeight/2; const int padding = m_nFontHeight/2;
const int dblPadding = padding * 2; const int dblPadding = padding * 2;
// Top components int y, h;
m_cTopLevelTitle.SetWindowPos(NULL, 0, padding, width, m_nFontHeight*2, 0);
int topComponentEnd = padding+m_nFontHeight*2; // Top labels
m_cTopLevelSubtitle.SetWindowPos(NULL, 0, topComponentEnd, width, m_nFontHeight, 0); y = padding;
topComponentEnd += m_nFontHeight; h = m_nFontHeight*2;
// Bottom components m_cTopLevelTitle.SetWindowPos(NULL, 0, y, width, h, 0);
y += h;
h = m_nFontHeight;
m_cTopLevelSubtitle.SetWindowPos(NULL, 0, y, width, h, 0);
y += h;
y += padding;
// Bottom buttons
const int btnHeight = m_nFontHeight*18/10; const int btnHeight = m_nFontHeight*18/10;
int bottomComponentStart = height - btnHeight - padding; int btnY = height - btnHeight - padding;
int bottomComponentWidth = width - dblPadding; int btnWidth = width - dblPadding;
m_cRunBtn.SetWindowPos(NULL, padding, bottomComponentStart, bottomComponentWidth, btnHeight, 0); m_cRunBtn.SetWindowPos(NULL, padding, btnY, btnWidth, btnHeight, 0);
m_cKillBtn.SetWindowPos(NULL, padding, bottomComponentStart, bottomComponentWidth, btnHeight, 0); m_cKillBtn.SetWindowPos(NULL, padding, btnY, btnWidth, btnHeight, 0);
// Center components h = m_nFontHeight*4;
int centerHeight = bottomComponentStart - topComponentEnd; int patchDescY = btnY - h;
m_cTabCtrl.SetWindowPos(NULL, padding, topComponentEnd + padding, bottomComponentWidth, centerHeight - dblPadding, 0); m_cPatchDesc.SetWindowPos(NULL, padding, patchDescY, btnWidth, h, 0);
// Tabs h = m_nFontHeight;
RECT tabClientRect; patchDescY -= h;
m_cTabCtrl.GetClientRect(&tabClientRect); m_cPatchTitle.SetWindowPos(NULL, padding, patchDescY, btnWidth, h, 0);
m_cTabCtrl.AdjustRect(FALSE, &tabClientRect);
m_cPatchGrid.SetWindowPos(NULL, tabClientRect.left, tabClientRect.top, tabClientRect.right - tabClientRect.left, tabClientRect.bottom - tabClientRect.top, 0); // Consume remaining space with patch grid
m_cMusicLink.SetWindowPos(NULL, tabClientRect.left, tabClientRect.top, tabClientRect.right - tabClientRect.left, tabClientRect.bottom - tabClientRect.top, 0); m_cPatchGrid.SetWindowPos(NULL, padding, y, btnWidth, patchDescY - y - padding, 0);
} }
void CRebuilderWindow::OnGetMinMaxInfo(MINMAXINFO *info) void CRebuilderWindow::OnGetMinMaxInfo(MINMAXINFO *info)
@ -191,12 +183,13 @@ void CRebuilderWindow::OnGetMinMaxInfo(MINMAXINFO *info)
info->ptMinTrackSize.y = m_nFontHeight * minimumWindowHeight; info->ptMinTrackSize.y = m_nFontHeight * minimumWindowHeight;
} }
void CRebuilderWindow::OnTabSelChange(NMHDR *pNMHDR, LRESULT *pResult) LRESULT CRebuilderWindow::OnGridSelChange(WPARAM wParam, LPARAM lParam)
{ {
int tab = m_cTabCtrl.GetCurSel(); HITEM hItem = (HITEM) wParam;
m_cPatchGrid.ShowWindow((tab == TAB_PATCHES) ? SW_SHOWNORMAL : SW_HIDE); m_cPatchTitle.SetWindowText(m_cPatchGrid.GetItemText(hItem).c_str());
m_cMusicLink.ShowWindow((tab == TAB_MUSIC) ? SW_SHOWNORMAL : SW_HIDE); m_cPatchDesc.SetWindowText(m_cPatchGrid.GetItemDescription(hItem));
return 0;
} }
BOOL CRebuilderWindow::SetFont(HWND child, LPARAM font) BOOL CRebuilderWindow::SetFont(HWND child, LPARAM font)
@ -247,6 +240,7 @@ void CRebuilderWindow::SetGUIFonts()
SetFont(m_cTopLevelTitle.GetSafeHwnd(), (LPARAM)bold); SetFont(m_cTopLevelTitle.GetSafeHwnd(), (LPARAM)bold);
SetFont(m_cRunBtn.GetSafeHwnd(), (LPARAM)bold); SetFont(m_cRunBtn.GetSafeHwnd(), (LPARAM)bold);
SetFont(m_cKillBtn.GetSafeHwnd(), (LPARAM)bold); SetFont(m_cKillBtn.GetSafeHwnd(), (LPARAM)bold);
SetFont(m_cPatchTitle.GetSafeHwnd(), (LPARAM)bold);
// Create link variant for subtitle // Create link variant for subtitle
lf.lfWeight = FW_NORMAL; lf.lfWeight = FW_NORMAL;
@ -282,6 +276,5 @@ BEGIN_MESSAGE_MAP(CRebuilderWindow, super)
ON_BN_CLICKED(ID_RUN, OnRunClick) ON_BN_CLICKED(ID_RUN, OnRunClick)
ON_BN_CLICKED(ID_KILL, OnKillClick) ON_BN_CLICKED(ID_KILL, OnKillClick)
ON_BN_CLICKED(ID_SUBTITLE, OnSubtitleClick) ON_BN_CLICKED(ID_SUBTITLE, OnSubtitleClick)
ON_BN_CLICKED(ID_MUSICLINK, OnMusicLinkClick) ON_MESSAGE(WM_PG_SELECTIONCHANGED, OnGridSelChange)
ON_NOTIFY(TCN_SELCHANGE, ID_TABCTRL, OnTabSelChange)
END_MESSAGE_MAP() END_MESSAGE_MAP()

View file

@ -21,13 +21,11 @@ public:
afx_msg void OnSubtitleClick(); afx_msg void OnSubtitleClick();
afx_msg void OnMusicLinkClick();
afx_msg void OnSize(UINT type, int width, int height); afx_msg void OnSize(UINT type, int width, int height);
afx_msg void OnGetMinMaxInfo(MINMAXINFO *info); afx_msg void OnGetMinMaxInfo(MINMAXINFO *info);
afx_msg void OnTabSelChange(NMHDR* pNMHDR, LRESULT* pResult); afx_msg LRESULT OnGridSelChange(WPARAM, LPARAM);
static BOOL CALLBACK SetFont(HWND child, LPARAM font); static BOOL CALLBACK SetFont(HWND child, LPARAM font);
@ -43,31 +41,24 @@ private:
enum { enum {
ID_RUN = 1000, ID_RUN = 1000,
ID_KILL, ID_KILL,
ID_TABCTRL,
ID_SUBTITLE, ID_SUBTITLE,
ID_PATCHGRID, ID_PATCHGRID,
ID_MUSICLINK, ID_PATCHTITLE,
ID_PATCHDESC,
ID_COUNT ID_COUNT
}; };
enum Tab {
TAB_PATCHES,
TAB_MUSIC
};
UINT m_nFontHeight; UINT m_nFontHeight;
CStatic m_cTopLevelTitle; CStatic m_cTopLevelTitle;
CLinkStatic m_cTopLevelSubtitle; CLinkStatic m_cTopLevelSubtitle;
CTabCtrl m_cTabCtrl;
CButton m_cRunBtn; CButton m_cRunBtn;
CButton m_cKillBtn; CButton m_cKillBtn;
PatchGrid m_cPatchGrid; PatchGrid m_cPatchGrid;
CStatic m_cPatchTitle;
CLinkStatic m_cMusicLink; CStatic m_cPatchDesc;
std::vector<HANDLE> m_lProcesses; std::vector<HANDLE> m_lProcesses;