/*====================================================================*\ FILE : TestCable.c PURPOSE : Test for Pro/Toolkit cabling functionality HISTORY.. 18-AUG-98 I-01-17 Pavel $$1 Created. 14-Sep-98 I-01-19 Pavel $$2 Fixed 29-Dec-98 I-01-28 Alexey $$3 Add -4 as valid return value to TEST_CALL_REPORT for some ProCbl funcs \*====================================================================*/ #include #include /*--------------------------------------------------------------------*\ Pro/TOOLKIT includes \*--------------------------------------------------------------------*/ #include #include #include #include #include #include #include /*--------------------------------------------------------------------*\ Pro/DEVELOP includes \*--------------------------------------------------------------------*/ #include #include #include #include #include #include #include #include /*--------------------------------------------------------------------*\ C System includes \*--------------------------------------------------------------------*/ #include /*--------------------------------------------------------------------*\ Application macros \*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*\ Application data types \*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*\ Application global/external data \*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*\ Function prototypes \*--------------------------------------------------------------------*/ /*============================================================================*\ Function: ProTestCable Purpose: TkPart Feat menu \*============================================================================*/ int ProTestCable( ProAssembly *p_assy) { ProError err; int menu_id, action; err = ProMenuFileRegister( "TkPart Feat", "tkpartfeat.mnu", &menu_id ); ProMenubuttonActionSet( "TkPart Feat", "Create", (ProMenubuttonAction)ProTestCableCreate, p_assy, TEST_CABLE_CREATE); ProMenubuttonActionSet( "TkPart Feat", "TkPart Feat", (ProMenubuttonAction)ProMenuDelete, NULL, 0); err = ProMenuCreate( PROMENUTYPE_MAIN, "TkPart Feat", &menu_id ); err = ProMenuCommandPush("Create"); err = ProMenuProcess( "TkPart Feat", &action ); TEST_CALL_REPORT( "ProMenuProcess()", "ProTestCable()", err, err != PRO_TK_NO_ERROR ); return (0); } /*============================================================================*\ Function: ProTestCableCreate Purpose: TkCable Feat menu \*============================================================================*/ int ProTestCableCreate( ProAssembly *p_assy, int action) { ProError err; int menu_id; err = ProMenuFileRegister( "TkCable Feat", "tkcablefeat.mnu", &menu_id ); ProMenubuttonActionSet( "TkCable Feat", "Wire", (ProMenubuttonAction)ProTestCableAction, p_assy, PROCBL_TYPE_WIRE); ProMenubuttonActionSet( "TkCable Feat", "Cable", (ProMenubuttonAction)ProTestCableAction, p_assy, PROCBL_TYPE_CABLE); ProMenubuttonActionSet( "TkCable Feat", "Bundle", (ProMenubuttonAction)ProTestCableAction, p_assy, PROCBL_TYPE_BUNDLE); ProMenubuttonActionSet( "TkCable Feat", "TkCable Feat", (ProMenubuttonAction)ProMenuDelete, NULL, 0); err = ProMenuCreate( PROMENUTYPE_MAIN, "TkCable Feat", &menu_id ); err = ProMenuProcess( "TkCable Feat", &action ); TEST_CALL_REPORT( "ProMenuProcess()", "ProTestCable()", err, err != PRO_TK_NO_ERROR ); return (0); } int ProTestCurrentHarnessPreFilter( Select3d *sel) { return ((Prohandle)_harness.harness == sel->part_ptr ? 1 :0); } /*============================================================================*\ Function: ProTestCableAction Purpose: Create different types of cable \*============================================================================*/ int ProTestCableAction( ProAssembly *p_assy, int action) { char *ch; ProError err; ProCblSpool spool; ProCblCable cable, *p_cables; ProName w_name, *wp_names, w_file; ProCharLine file; int from_logical, n_cables, ierr, i, bundle_type, n_param; Select3d *sel; TestParamOwner param_owner; ProCblParameterInfo *p_param = NULL; static ProUtilMenuButtons create_type[] = { {"TkCreate Cbl", 0, TEST_CALL_PRO_MENU_DELETE}, {"From Logical", 1, 0 }, {"Enter Name", 0, 0 }, {"",0,0} }; static ProUtilMenuButtons bundle_type_menu[] = { {"TkGrouping", 0, TEST_CALL_PRO_MENU_DELETE}, {"Round", 0, 0 }, {"Flat", 1, 0 }, {"",0,0} }; switch (action) { case PROCBL_TYPE_WIRE: ch = "wire"; break; case PROCBL_TYPE_CABLE: ch = "cable"; break; case PROCBL_TYPE_BUNDLE: ch = "bundle"; break; default: return (0); } if (action != PROCBL_TYPE_BUNDLE) { err = ProCblCablesFromLogicalGet(*p_assy, &wp_names, &n_cables); TEST_CALL_REPORT( "ProCblCablesFromLogicalGet()", "ProTestCableAction()", err, err != PRO_TK_NO_ERROR && err != PRO_TK_E_NOT_FOUND ); if (err == PRO_TK_NO_ERROR && n_cables>0) { err = ProArrayFree((ProArray*)&wp_names); err = ProUtilMenuIntValueSelect(create_type, &from_logical); if (err != PRO_TK_NO_ERROR) return (0); if (from_logical) { ProTestCableFromLogical(p_assy); return (0); } } } ProMessageDisplay(MSGFIL, "TEST Enter %0s name [QUIT]:", ch); if (!ProUtilStringGet(w_name, NULL, PRO_NAME_SIZE)) return (0); err = ProTestSpoolSelect(p_assy, 1, (Procbl_cable_type)action, &spool); if (action != PROCBL_TYPE_BUNDLE) { err = ProCblCableCreate(&_harness, &spool, w_name, &cable); TEST_CALL_REPORT( "ProCblCableCreate()", "ProTestCableAction()", err, err != PRO_TK_NO_ERROR ); if (err == PRO_TK_NO_ERROR) { ProMessageDisplay(MSGFIL, "TEST %0s %1w was created. Modify parameters if necessary.", ch, w_name); param_owner.owner_type = TEST_CABLE; param_owner.param_owner = (void*)&cable; /* Edit cable parameters */ ProUtilParametersMenu(¶m_owner); } } else { err = ProUtilMenuIntValueSelect(bundle_type_menu, &bundle_type); if (err != PRO_TK_NO_ERROR) return (0); ProMessageDisplay (MSGFIL, "TEST Select the default set of cables" " for this bundle."); ierr = pro_select("cable", -1, &sel, ProTestCurrentHarnessPreFilter, NULL); if (ierr >0) { ProArrayAlloc(0, sizeof(ProCblCable), 1, (ProArray*)&p_cables); for (i=0; i0) { err = ProCblCableInit(sel[0].selected_id, NULL, &_harness, &cable); TEST_CALL_REPORT( "ProCblCableInit()", "ProTestCableModifyParameters()", err, err != PRO_TK_NO_ERROR ); if (err == PRO_TK_NO_ERROR) { param_owner.owner_type = TEST_CABLE; param_owner.param_owner = (void*)&cable; ProUtilParametersMenu(¶m_owner); } } return (0); }