Added hack to keep menus item checkmarks in sync with renderer state.

This commit is contained in:
Chris Laurel 2001-05-22 22:31:42 +00:00
parent d99305a74d
commit 3bc88da2b9

View file

@ -392,6 +392,11 @@ HMENU CreateMenuBar()
return LoadMenu(appInstance, MAKEINTRESOURCE(IDR_MAIN_MENU));
}
static void setMenuItemCheck(int menuItem, bool checked)
{
CheckMenuItem(menuBar, menuItem, checked ? MF_CHECKED : MF_UNCHECKED);
}
#if 0
static void ToggleLabelState(int menuItem, int labelState)
{
@ -687,6 +692,30 @@ static void BuildFavoritesMenu()
}
static void syncMenusWithRendererState()
{
int renderFlags = appCore->getRenderer()->getRenderFlags();
int labelMode = appCore->getRenderer()->getLabelMode();
setMenuItemCheck(ID_RENDER_SHOWORBITS, (renderFlags & Renderer::ShowOrbits) != 0);
setMenuItemCheck(ID_RENDER_SHOWCONSTELLATIONS,
(renderFlags & Renderer::ShowDiagrams) != 0);
setMenuItemCheck(ID_RENDER_SHOWATMOSPHERES,
(renderFlags & Renderer::ShowCloudMaps) != 0);
setMenuItemCheck(ID_RENDER_SHOWGALAXIES,
(renderFlags & Renderer::ShowGalaxies) != 0);
setMenuItemCheck(ID_RENDER_SHOWPLANETLABELS,
(labelMode & Renderer::MajorPlanetLabels) != 0);
setMenuItemCheck(ID_RENDER_SHOWSTARLABELS,
(labelMode & Renderer::StarLabels) != 0);
setMenuItemCheck(ID_RENDER_SHOWCONSTLABELS,
(labelMode & Renderer::ConstellationLabels) != 0);
setMenuItemCheck(ID_RENDER_SHOWMINORPLANETLABELS,
(labelMode & Renderer::MinorPlanetLabels) != 0);
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
@ -734,7 +763,10 @@ int APIENTRY WinMain(HINSTANCE hInstance,
return false;
}
appCore->initSimulation();
if (!appCore->initSimulation())
{
return 1;
}
if (!fullscreen)
{
@ -782,10 +814,15 @@ int APIENTRY WinMain(HINSTANCE hInstance,
icex.dwICC = ICC_DATE_CLASSES;
InitCommonControlsEx(&icex);
appCore->initRenderer();
if (!appCore->initRenderer())
{
return 1;
}
timer = CreateTimer();
BuildFavoritesMenu();
syncMenusWithRendererState();
bReady = true;
appCore->start((double) time(NULL) / 86400.0 +
@ -966,7 +1003,16 @@ LRESULT CALLBACK MainWindowProc(HWND hWnd,
break;
case WM_CHAR:
appCore->charEntered((char) wParam);
{
int oldRenderFlags = appCore->getRenderer()->getRenderFlags();
int oldLabelMode = appCore->getRenderer()->getLabelMode();
appCore->charEntered((char) wParam);
if (appCore->getRenderer()->getRenderFlags() != oldRenderFlags ||
appCore->getRenderer()->getLabelMode() != oldLabelMode)
{
syncMenusWithRendererState();
}
}
break;
case WM_COMMAND:
@ -988,38 +1034,42 @@ LRESULT CALLBACK MainWindowProc(HWND hWnd,
DialogBox(appInstance, MAKEINTRESOURCE(IDD_FINDOBJECT), hWnd, FindObjectProc);
break;
#if 0
case ID_RENDER_SHOWHUDTEXT:
appCore->charEntered('V');
break;
case ID_RENDER_SHOWPLANETLABELS:
appCore->charEntered('N');
syncMenusWithRendererState();
break;
case ID_RENDER_SHOWMINORPLANETLABELS:
// ToggleLabelState(ID_RENDER_SHOWMINORPLANETLABELS, Renderer::MinorPlanetLabels);
appCore->charEntered('M');
syncMenusWithRendererState();
break;
case ID_RENDER_SHOWSTARLABELS:
appCore->charEntered('B');
break;
case ID_RENDER_SHOWCONSTLABELS:
// ToggleLabelState(ID_RENDER_SHOWCONSTLABELS, Renderer::ConstellationLabels);
appCore->charEntered('=');
syncMenusWithRendererState();
break;
case ID_RENDER_SHOWORBITS:
// ToggleRenderFlag(ID_RENDER_SHOWORBITS, Renderer::ShowOrbits);
appCore->charEntered('O');
syncMenusWithRendererState();
break;
case ID_RENDER_SHOWCONSTELLATIONS:
//ToggleRenderFlag(ID_RENDER_SHOWCONSTELLATIONS, Renderer::ShowDiagrams);
appCore->charEntered('/');
syncMenusWithRendererState();
break;
case ID_RENDER_SHOWATMOSPHERES:
ToggleRenderFlag(ID_RENDER_SHOWATMOSPHERES, Renderer::ShowCloudMaps);
appCore->charEntered('I');
syncMenusWithRendererState();
break;
case ID_RENDER_SHOWGALAXIES:
ToggleRenderFlag(ID_RENDER_SHOWGALAXIES, Renderer::ShowGalaxies);
appCore->charEntered('U');
syncMenusWithRendererState();
break;
#endif
case ID_RENDER_MORESTARS:
appCore->charEntered(']');
break;