/* Copyright (c) 2024 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved. */ /*--------------------------------------------------------------------*\ Pro/TOOLKIT includes \*--------------------------------------------------------------------*/ #include <ProToolkit.h> #include <ProMenu.h> #include <ProUtil.h> #include <ProMessage.h> #include <ProMdl.h> #include <ProArray.h> /*--------------------------------------------------------------------*\ Application includes \*--------------------------------------------------------------------*/ #include "TestError.h" #include "TestConfig.h" #include "UtilMessage.h" #include "PTApplsUnicodeUtils.h" /*--------------------------------------------------------------------*\ Macros \*--------------------------------------------------------------------*/ #define OPT_NUM 15 #define MODE_NUM 21 /*--------------------------------------------------------------------*\ Application global/external data \*--------------------------------------------------------------------*/ char* config_options[OPT_NUM] = { "AXIS_DISPLAY", "BELL", "COLOR", "DATUM_DISPLAY", "DATUM_POINT_DISPLAY", "DATUM_POINT_TAG_DISPLAY", "DISPLAY_COORDINATE_SYS", "GRID_SNAP", "IGES_OUT_TRIM_CURVE_DEVIATION", "ORTHOGONAL_SNAP", "REGEN_BACKUP_USE_DISK", "SAVE_DISPLAY", "SEARCH_PATH", "SPIN_CENTER_DISPLAY", "TOL_DISPLAY" }; char* mode_names[MODE_NUM] = { "PRO_MODE_SKETCHER", "PRO_MODE_PART", "PRO_MODE_SHEET_METAL", "PRO_MODE_COMPOSITE", "PRO_MODE_SCAN_MODEL", "PRO_MODE_ASSEMBLY", "PRO_MODE_DRAWING", "PRO_MODE_MANUFACTURE", "PRO_MODE_MOLD", "PRO_MODE_CAST", "PRO_MODE_DIEFACE", "PRO_MODE_LAYOUT", "PRO_MODE_FORMAT", "PRO_MODE_REPORT", "PRO_MODE_MARKUP", "PRO_MODE_DIAGRAM", "PRO_MODE_INTERCHANGE", "PRO_MODE_LEGACY", "PRO_MODE_USER_DEFINED", "PRO_MODE_VERIFY", "PRO_MODE_PROCESS" }; int ProTestConfig( void* p_dummy, int int_dummy ) { ProError status; int menu_id; /* The identifier of the created menu */ int action; /* Load menu from file */ status = ProMenuFileRegister( (char*)"TkConfig", (char*)"tkconfig.mnu", &menu_id ); TEST_CALL_REPORT( "ProMenuFileRegister()", "ProTestConfig()", status, status != PRO_TK_NO_ERROR ); /* Define menu buttons */ ProMenubuttonActionSet( (char*)"TkConfig", (char*)"Get Opt", (ProMenubuttonAction)ProTestGetOption, NULL, 0 ); ProMenubuttonActionSet( (char*)"TkConfig", (char*)"Set Opt", (ProMenubuttonAction)ProTestConfigOptionSetMenu, NULL, 0 ); ProMenubuttonActionSet( (char*)"TkConfig", (char*)"Get Opt By Name", (ProMenubuttonAction)ProTestGetOptionByName, NULL, 0 ); ProMenubuttonActionSet( (char*)"TkConfig", (char*)"Set Opt By Name", (ProMenubuttonAction)ProTestSetOptionByName, NULL, 0 ); ProMenubuttonActionSet( (char*)"TkConfig", (char*)"Edit Cfg File", (ProMenubuttonAction)ProTestFileEdit, NULL, 0 ); ProMenubuttonActionSet( (char*)"TkConfig", (char*)"Verify Opt", (ProMenubuttonAction)ProTestOptionOrderedVerify, NULL, 0 ); ProMenubuttonActionSet( (char*)"TkConfig", (char*)"Current Mode", (ProMenubuttonAction)ProTestMode, NULL, 0 ); ProMenubuttonActionSet( (char*)"TkConfig", (char*)"Done", (ProMenubuttonAction)ProMenuDelete, NULL, 0 ); ProMenubuttonActionSet( (char*)"TkConfig", (char*)"TkConfig", (ProMenubuttonAction)ProMenuDelete, NULL, 0 ); /* Rubn MEnu */ status = ProMenuCreate( PROMENUTYPE_MAIN, (char*)"TkConfig", &menu_id ); TEST_CALL_REPORT( "ProMenuCreate()", "ProTestConfig()", status, status != PRO_TK_NO_ERROR ); if( status == PRO_TK_NO_ERROR ) { status = ProMenuProcess( (char*)"TkConfig", &action ); TEST_CALL_REPORT( "ProMenuProcess()", "ProTestConfig()", status, status != PRO_TK_NO_ERROR ); } return 0; } /*=====================================================================*\ FUNCTION: ProTestGetOption PURPOSE: Get a list of config option values NOTE: Legacy function - maintained for existing tests only - use ProTestGetOptionByName() instead \*=====================================================================*/ int ProTestGetOption( void* p_dummy, int int_dummy ) { ProError status; FILE* f; ProName w_congig_option; ProPath w_option_value; char option_value[ 80 ]; char filename[] = "pttestcfgopt.inf"; wchar_t w_filename[ PRO_PATH_SIZE ]; int i; ProInfoWindowLocation win_location = { 0.0, 0.0 }; ProInfoWindowSize win_size = { 25, 80 }; if( (f = PTApplsUnicodeFopen( filename, "wt" )) == NULL ) return -1; for( i=0; i<OPT_NUM; i++ ) { ProStringToWstring( w_congig_option, config_options[i] ); status = ProConfigoptionGet( w_congig_option, w_option_value ); TEST_CALL_REPORT( "ProConfigoptionGet()", "ProTestGetOption()", status, status != PRO_TK_NO_ERROR && status != PRO_TK_E_NOT_FOUND); ProWstringToString( option_value, w_option_value ); if( status == PRO_TK_NO_ERROR ) { ProTKFprintf( f, "%s = %s\n", config_options[i], option_value ); } } fclose( f ); status = ProInfoWindowDisplay( ProStringToWstring(w_filename, filename), &win_location, &win_size ); TEST_CALL_REPORT( "ProInfoWindowDisplay()", "ProTestGetOption()", status, status != PRO_TK_NO_ERROR); return 0; } int ProTestGetOptionByName ( void* p_dummy, int int_dummy ) { ProError status; FILE* f; ProName w_config_option; char config_option [PRO_NAME_SIZE]; ProPath* w_option_values; char option_value[PRO_PATH_SIZE]; char filename[] = "pttestcfgopt.inf"; wchar_t w_filename[ PRO_PATH_SIZE ]; int i, arr_size; ProInfoWindowLocation win_location = { 0.0, 0.0 }; ProInfoWindowSize win_size = { 25, 80 }; if( (f = PTApplsUnicodeFopen( filename, "wt" )) == NULL ) return -1; ProUtilMsgPrint( "gen", "TEST %0s", "Enter option name: " ); if( !ProUtilStringGet( w_config_option, NULL, PRO_NAME_SIZE ) ) return -1; status = ProConfigoptArrayGet( w_config_option, &w_option_values ); TEST_CALL_REPORT( "ProConfigoptArrayGet()", "ProTestGetOption()", status, status != PRO_TK_NO_ERROR && status != PRO_TK_E_NOT_FOUND); if (status == PRO_TK_E_NOT_FOUND) { ProTKFprintf ( f, "Option not found.\n"); } if (status == PRO_TK_NO_ERROR) { ProWstringToString (config_option, w_config_option); status = ProArraySizeGet (w_option_values, &arr_size); for (i = 0; i < arr_size; i ++) { ProWstringToString (option_value, w_option_values [i]); if (i == 0) { ProTKFprintf( f, "%s\n", config_option); ProTKFprintf( f, "\t = %s\n", option_value); } else ProTKFprintf( f, "\t = %s\n", option_value ); } } fclose( f ); status = ProInfoWindowDisplay( ProStringToWstring(w_filename, filename), &win_location, &win_size ); TEST_CALL_REPORT( "ProInfoWindowDisplay()", "ProTestGetOption()", status, status != PRO_TK_NO_ERROR); return 0; } /*=====================================================================*\ FUNCTION: ProTestConfigOptionSetMenu PURPOSE: Set one of a list of config option values NOTE: Legacy function - maintained for existing tests only - use ProTestSetOptionByName() instead \*=====================================================================*/ int ProTestConfigOptionSetMenu( void* p_dummy, int int_dummy ) { ProError status; int menu_id; /* The identifier of the created menu */ int action; /* Load menu from file */ status = ProMenuFileRegister( (char*)"Option", (char*)"tkoption.mnu", &menu_id ); TEST_CALL_REPORT( "ProMenuFileRegister()", "ProTestConfigOptionSetMenu()", status, status != PRO_TK_NO_ERROR ); /* Define menu buttons */ ProMenubuttonActionSet( (char*)"Option", (char*)"AXIS_DISPLAY", (ProMenubuttonAction)ProTestConfigOptionSet, (char*)"AXIS_DISPLAY", 0 ); ProMenubuttonActionSet( (char*)"Option", (char*)"BELL", (ProMenubuttonAction)ProTestConfigOptionSet, (char*)"BELL", 0 ); ProMenubuttonActionSet( (char*)"Option", (char*)"COLOR", (ProMenubuttonAction)ProTestConfigOptionSet, (char*)"COLOR", 0 ); ProMenubuttonActionSet( (char*)"Option", (char*)"DATUM_DISPLAY", (ProMenubuttonAction)ProTestConfigOptionSet, (char*)"DATUM_DISPLAY", 0 ); ProMenubuttonActionSet( (char*)"Option", (char*)"DATUM_POINT_DISPLAY", (ProMenubuttonAction)ProTestConfigOptionSet, (char*)"DATUM_POINT_DISPLAY", 0 ); ProMenubuttonActionSet( (char*)"Option", (char*)"DATUM_POINT_TAG_DISPLAY", (ProMenubuttonAction)ProTestConfigOptionSet, (char*)"DATUM_POINT_TAG_DISPLAY", 0 ); ProMenubuttonActionSet( (char*)"Option", (char*)"DISPLAY_COORDINATE_SYS", (ProMenubuttonAction)ProTestConfigOptionSet, (char*)"DISPLAY_COORDINATE_SYS", 0 ); ProMenubuttonActionSet( (char*)"Option", (char*)"GRID_SNAP", (ProMenubuttonAction)ProTestConfigOptionSet, (char*)"GRID_SNAP", 0 ); ProMenubuttonActionSet( (char*)"Option", (char*)"IGES_OUT_TRIM_CURVE_DEVIATION", (ProMenubuttonAction)ProTestConfigOptionSet, (char*)"IGES_OUT_TRIM_CURVE_DEVIATION", 0 ); ProMenubuttonActionSet( (char*)"Option", (char*)"ORTHOGONAL_SNAP", (ProMenubuttonAction)ProTestConfigOptionSet, (char*)"ORTHOGONAL_SNAP", 0 ); ProMenubuttonActionSet( (char*)"Option", (char*)"REGEN_BACKUP_USE_DISK", (ProMenubuttonAction)ProTestConfigOptionSet, (char*)"REGEN_BACKUP_USE_DISK", 0 ); ProMenubuttonActionSet( (char*)"Option", (char*)"SAVE_DISPLAY", (ProMenubuttonAction)ProTestConfigOptionSet, (char*)"SAVE_DISPLAY", 0 ); ProMenubuttonActionSet( (char*)"Option", (char*)"SEARCH_PATH", (ProMenubuttonAction)ProTestConfigOptionSet, (char*)"SEARCH_PATH", 0 ); ProMenubuttonActionSet( (char*)"Option", (char*)"SPIN_CENTER_DISPLAY", (ProMenubuttonAction)ProTestConfigOptionSet, (char*)"SPIN_CENTER_DISPLAY", 0 ); ProMenubuttonActionSet( (char*)"Option", (char*)"TOL_DISPLAY", (ProMenubuttonAction)ProTestConfigOptionSet, (char*)"TOL_DISPLAY", 0 ); ProMenubuttonActionSet( (char*)"Option", (char*)"Option", (ProMenubuttonAction)ProMenuDelete, NULL, 0 ); /* Rubn MEnu */ status = ProMenuCreate( PROMENUTYPE_MAIN, (char*)"Option", &menu_id ); TEST_CALL_REPORT( "ProMenuCreate()", "ProTestConfigOptionSetMenu()", status, status != PRO_TK_NO_ERROR ); if( status == PRO_TK_NO_ERROR ) { status = ProMenuProcess( (char*)"Option", &action ); TEST_CALL_REPORT( "ProMenuProcess()", "ProTestConfigOptionSetMenu()", status, status != PRO_TK_NO_ERROR ); } return 0; } int ProTestConfigOptionSet( char* p_option, int int_dummy ) { ProError status; ProName w_option; ProLine w_option_value; ProUtilMsgPrint( "gen", "TEST %0s", "Enter option value: " ); if( !ProUtilStringGet( w_option_value, NULL, PRO_LINE_SIZE ) ) return -1; ProStringToWstring( w_option, p_option ); status = ProConfigoptSet( w_option, w_option_value ); TEST_CALL_REPORT( "ProConfigoptSet()", "ProTestConfigOptionSet()", status, status != PRO_TK_NO_ERROR ); ProUtilMsgPrint( "gen", "TEST %0s", status == PRO_TK_NO_ERROR ? "Option set successfully" : "Can't set option" ); ProMessageClear(); TEST_CALL_REPORT( "ProMessageClear()", "ProTestConfigOptionSet()", PRO_TK_NO_ERROR, 0 ); status = ProMenuDelete(); TEST_CALL_REPORT( "ProMenuDelete()", "ProTestConfigOptionSet()", status, status != PRO_TK_NO_ERROR ); return 0; } int ProTestSetOptionByName( void* p_dummy, int int_dummy ) { ProError status; ProName w_option; ProPath w_option_value; ProUtilMsgPrint( "gen", "TEST %0s", "Enter option name: " ); if( !ProUtilStringGet( w_option, NULL, PRO_NAME_SIZE ) ) return -1; ProUtilMsgPrint( "gen", "TEST %0s", "Enter option value: " ); if( !ProUtilStringGet( w_option_value, NULL, PRO_PATH_SIZE ) ) return -1; status = ProConfigoptSet( w_option, w_option_value ); TEST_CALL_REPORT( "ProConfigoptSet()", "ProTestConfigOptionSet()", status, status != PRO_TK_NO_ERROR ); ProUtilMsgPrint( "gen", "TEST %0s", status == PRO_TK_NO_ERROR ? "Option set successfully" : "Couldn't set option" ); ProMessageClear(); TEST_CALL_REPORT( "ProMessageClear()", "ProTestConfigOptionSet()", PRO_TK_NO_ERROR, 0 ); return 0; } int ProTestFileEdit( void* p_dummy, int int_dummy ) { ProError status; char filename[] = "config.pro"; ProPath w_filename; ProStringToWstring( w_filename, filename ); status = ProFileEdit( w_filename ); TEST_CALL_REPORT( "ProFileEdit()", "ProTestFileEdit()", status, status != PRO_TK_NO_ERROR && status != PRO_TK_NO_CHANGE); return 0; } int ProTestOptionOrderedVerify( void* p_dummy, int int_dummy ) { ProError status; ProCharName option; ProName w_option; ProBoolean option_exist; char* str = NULL; /* Get opt name */ ProUtilMsgPrint( "gen", "TEST %0s", "Enter option name: " ); if( !ProUtilStringGet( w_option, NULL, PRO_NAME_SIZE ) ) return -1; /* Verify opt */ ProWstringToString( option, w_option ); status = ProOptionOrderedVerify( option, &option_exist ); TEST_CALL_REPORT( "ProOptionOrderedVerify()", "ProTestOptionOrderedVerify()", status, status != PRO_TK_NO_ERROR ); /* Display opt status */ if( status != PRO_TK_NO_ERROR ) str = (char *)"Invalid option"; else { str = (char *)( (option_exist == PRO_B_TRUE)? ("Option exists"):("Option doesn't exist") ); } ProUtilMsgPrint( "gen", "TEST %0s", str ); ProMessageClear(); TEST_CALL_REPORT( "ProMessageClear()", "ProTestOptionOrderedVerify()", PRO_TK_NO_ERROR, 0 ); return 0; } int ProTestMode( void* p_dummy, int int_dummy ) { ProError status; ProMode mode = PRO_MODE_UNUSED; status = ProModeCurrentGet( &mode ); TEST_CALL_REPORT( "ProModeCurrentGet()", "ProTestMode()", status, status != PRO_TK_NO_ERROR && status != PRO_TK_BAD_CONTEXT); return 0; }