/*
Copyright (c) 2024 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved.
*/
/*--------------------------------------------------------------------*\
Pro/TOOLKIT includes
\*--------------------------------------------------------------------*/
#include <ProToolkit.h>
#include <ProMdl.h>
#include <ProMenu.h>
#include <ProWindows.h>
#include <ProView.h>
#include <ProUtil.h>
/*--------------------------------------------------------------------*\
C System includes
\*--------------------------------------------------------------------*/
#if (PRO_MACHINE == SUN4 || PRO_MACHINE == SOLARISx64 || PRO_MACHINE == HP8000)
#include <unistd.h>
#endif
/*--------------------------------------------------------------------*\
Application includes
\*--------------------------------------------------------------------*/
#include "TestError.h"
#include "TestSleep.h"
#include "TestMenu.h"
#include "UtilFiles.h"
#include "UtilCollect.h"
#include <time.h>
#include <ProTKRunTime.h>
#include <PTApplsUnicodeUtils.h>
#include <UtilMessage.h>
/*====================================================================*\
FUNCTION : ProTestObjWinMenu()
PURPOSE : Set view test menu.
\*====================================================================*/
int ProTestObjWinMenu()
{
ProMdl mdl;
ProMatrix matrix;
ProError err;
int *w_id, i, j, k, l, cur_win, num_win;
char name[PRO_MDLNAME_SIZE];
double scale[3] = {0.5, 0.5, 4};
ProMdlName w_name;
ProPath w_path;
FILE *fp;
err = ProUtilCollectWindowIds(&w_id);
if (err != PRO_TK_NO_ERROR)
{
ProUtilMsgPrint("gen", "TEST %0s", "No windows found");
return (0);
}
err = ProWindowCurrentGet(&cur_win);
TEST_CALL_REPORT("ProWindowCurrentGet()", "ProTestObjWinMenu()",
err, err != PRO_TK_NO_ERROR);
fp = PTApplsUnicodeFopen("win_info.log", "w");
ProStringToWstring(w_path, (char*)"win_info.log");
err = ProArraySizeGet((ProArray)w_id, &num_win);
for (i=0; i<num_win; i++)
{
#ifndef PT_PRODUCTS_BUILD
err = ProWindowCurrentSet(w_id[i]);
TEST_CALL_REPORT("ProWindowCurrentSet()", "ProTestObjWinMenu()",
err, err != PRO_TK_NO_ERROR);
#endif
ProTKFprintf(fp ,"Window Id %d (%s)\n\n", w_id[i], w_id[i] == cur_win ?
"active" : "not active");
err = ProWindowMdlGet(w_id[i], &mdl);
TEST_CALL_REPORT("ProWindowMdlGet()", "ProTestObjWinMenu()",
err, err != PRO_TK_NO_ERROR);
if (err == PRO_TK_NO_ERROR)
{
err = ProMdlMdlnameGet(mdl, w_name);
TEST_CALL_REPORT("ProMdlMdlnameGet()", "ProTestObjWinMenu()",
err, err != PRO_TK_NO_ERROR);
ProWstringToString(name, w_name);
ProTKFprintf(fp, "Contains model %s\n", name);
err = ProWindowCurrentMatrixGet(matrix);
TEST_CALL_REPORT("ProWindowCurrentMatrixGet()",
"ProTestObjWinMenu()", err, err != PRO_TK_NO_ERROR);
for (k=0; k<3; k++)
{
/* Change model scale to check window matrix functions */
for (j=0; j<3; j++)
for (l=0; l<3; l++)
matrix[j][l] *= scale[k];
err = ProWindowPanZoomMatrixSet(w_id[i], matrix);
TEST_CALL_REPORT("ProWindowPanZoomMatrixSet()",
"ProTestObjWinMenu()", err, err != PRO_TK_NO_ERROR);
err = ProWindowRepaint( w_id[i]);
TEST_CALL_REPORT("ProWindowRepaint()",
"ProTestObjWinMenu()", err, err != PRO_TK_NO_ERROR);
ProTestSleep(1);
}
ProTKFprintf(fp, "Window matrix:\n");
for (j=0; j<4; j++)
ProTKFprintf(fp, "%8.4f %8.4f %8.4f\n",
matrix[j][0], matrix[j][1], matrix[j][2]);
ProTKFprintf(fp, "\n\n");
}
}
fclose(fp);
#ifndef PT_PRODUCTS_BUILD
err = ProWindowCurrentSet(cur_win);
TEST_CALL_REPORT("ProWindowCurrentSet()", "ProTestObjWinMenu()",
err, err != PRO_TK_NO_ERROR);
#endif
err = ProInfoWindowDisplay(w_path, NULL, NULL);
TEST_CALL_REPORT("ProInfoWindowDisplay()",
"ProTestObjWinMenu()", err, err != PRO_TK_NO_ERROR);
return (0);
}